/// /// /** * This atom should be used in place of the default atom when handling Annoying people. * Do note that any aggressive action is automatically Annoying. */ class ContentAtomAnnoy extends ContentAtom { /** * Only one of the following markers appears at once. Will always contain one of those. */ public static TYPE_LOW = new ContentNounSimple("LOW ANNOYING LEVEL"); public static TYPE_MEDIUM = new ContentNounSimple("MEDIUM ANNOYING LEVEL"); public static TYPE_HIGH = new ContentNounSimple("HIGH ANNOYING LEVEL"); /** * Only one of the following markers appears at once. Will always contain one of those. */ public static RESULT_FRIENDLY = new ContentNounSimple("TARGET IS STILL FRIENDLY"); public static RESULT_PISSED = new ContentNounSimple("TARGET IS GETTING PISSED OFF"); public static RESULT_HOSTILE = new ContentNounSimple("TARGET IS NOW HOSTILE"); public annoyer : any; public target : any; public markers : ContentAtom = new ContentAtom(); constructor (attacker : any, target : any, markers : Array = []) { super(); this.annoyer = attacker; this.target = target; this.markers.addNoun(...markers); } public compareAgainst (other : ContentAtom) { if (other instanceof ContentAtomAnnoy) { return ( ContentAtom.compareNoun(this.annoyer, other.annoyer) && ContentAtom.compareNoun(this.target, other.target) && this.markers.compareAgainst(other.markers) ); } return false; } public getAtomPriority () { return ( ContentAtom.weightNoun(this.annoyer) + ContentAtom.weightNoun(this.target) + this.markers.getAtomPriority() ); } }