12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- ///<reference path="../ContentAtom.ts"/>
- ///<reference path="../ContentNounSimple.ts"/>
- /**
- * This atom should be used in place of the default atom when handling Combat.
- */
- class ContentAtomCombat extends ContentAtom {
- /**
- * Only one of the following markers appears at once.
- */
- public static HIT = new ContentNounSimple("HIT");
- public static MISS = new ContentNounSimple("MISS");
- public static CRITICAL = new ContentNounSimple("CRITICAL");
- /**
- * Only one of the following markers appears at once.
- */
- public static KNOCKED = new ContentNounSimple("KNOCKED");
- public static KNOCKED_OFF = new ContentNounSimple("KNOCKED_OFF");
- public static KILLED = new ContentNounSimple("KILLED");
- public attacker : any;
- public target : any;
- public weapons : ContentAtom = new ContentAtom();
- public markers : ContentAtom = new ContentAtom();
- constructor (attacker : any, target : any, weapons : Array<any> = [], markers : Array<ContentNounSimple | ContentNoun> = []) {
- super();
- this.attacker = attacker;
- this.target = target;
- this.weapons.addNoun(...weapons);
- this.markers.addNoun(...markers);
- }
- public compareAgainst (other : ContentAtom) {
- if (other instanceof ContentAtomCombat) {
- console.warn(
- ContentAtom.compareNoun(this.attacker, other.attacker) &&
- ContentAtom.compareNoun(this.target, other.target) &&
- this.weapons.compareAgainst(other.weapons) &&
- this.markers.compareAgainst(other.markers),
- );
- return (
- ContentAtom.compareNoun(this.attacker, other.attacker) &&
- ContentAtom.compareNoun(this.target, other.target) &&
- this.weapons.compareAgainst(other.weapons) &&
- this.markers.compareAgainst(other.markers)
- );
- }
- return false;
- }
- public getAtomPriority () {
- return (
- ContentAtom.weightNoun(this.attacker) +
- ContentAtom.weightNoun(this.target) +
- this.weapons.getAtomPriority() +
- this.markers.getAtomPriority()
- );
- }
- }
- //new ContentAtomCombat(WorldState.player, OrcDebugger, [HumanoidHands], [ContentAtomCombat.HIT]);
- //Looks good.
|