public void SetupFixBuzProtoForTest() { IEnumerable<int> list = Enumerable.Range(0, 16); List<ValueTokenPair<int, string>> pairs = new List<ValueTokenPair<int, string>> { new ValueTokenPair<int, string> {Value=3, Token=fiz}, new ValueTokenPair<int, string> {Value=5, Token=buz} }; caster = new IntToStringCaster(); evaluator = new DivisorEvaluator(); listEvaler = new ListEvaluator<int, int, string>(list, pairs, caster, evaluator); }
public Rejuvenation(ICaster caster) : this() { Caster = caster; }
public FirstAid(ICaster caster) : this() { Caster = caster; }
//Inflects buff/debuff on target protected void inflictBuff(ICaster target, ICaster caster, float mod) { target.BuffDebuff.modify(buff.multiply(Mathf.CeilToInt(mod))); }
public DepressionDarkElf(ICaster caster) : this() { Caster = caster; }
public Meditation(ICaster caster) : this() { Caster = caster; }
public override bool HasValidTarget(ICaster caster, out Target target) { target = new Target(caster.System.Origin.gameObject, caster.System.Origin.position); return(true); }
public ManaDrainSeer(ICaster caster) : this() { Caster = caster; }
//Applies damage formula base on base_power (spell strength) and stats of caster and target) //damages ref stats appropriately (will not go below zero) //Precondition: target.Stats.vsElement[element] != Elements.repel public static bool calcDamage(CastData data, int base_power, int element, ICaster caster, ICaster target, bool crit, bool is_stunned = false) { float dMod = base_power; int staggerDamage = 0; //Apply buff/debuffs here (NOT DONE) CasterStats casterMod = applyBuff(caster); CasterStats targetMod = applyBuff(target); //Apply attack bonus formula here dMod *= casterMod.attack; //Absorb damage if enemy absorbs this type if (targetMod.vsElement[element] == Elements.drain) { Debug.Log(target.Stats.name + " absorbs " + dMod + " " + Elements.toString(element) + " damage"); if (target.Curr_hp + Mathf.CeilToInt(dMod) > target.Stats.max_hp) { target.Curr_hp = target.Stats.max_hp; } else { target.Curr_hp += Mathf.CeilToInt(dMod); } data.damageInflicted = Mathf.CeilToInt(-1 * dMod); data.vsElement = Elements.vsElement.DRAIN; return(false); } //Subtract enemy defense penalty here dMod = dMod - (dMod * targetMod.defense); //Add random modifier here dMod *= Random.Range(0.9F, 1.1F); //Apply crit here if (crit) { staggerDamage++; } //Apply elemental weakness/resistances dMod *= targetMod.vsElement[element]; if (targetMod.vsElement[element] == 0.0F) { data.vsElement = Elements.vsElement.BLOCK; } else if (targetMod.vsElement[element] > 1)//If enemy is weak { if (targetMod.vsElement[element] > 2) { data.vsElement = Elements.vsElement.SUPERWEAK; } else { data.vsElement = Elements.vsElement.WEAK; } staggerDamage++; } else if (targetMod.vsElement[element] < 1) { data.vsElement = Elements.vsElement.RESIST; } else { data.vsElement = Elements.vsElement.NEUTRAL; } //Apply stun damage mod (if stunned) if (is_stunned) { dMod *= (1.25F + (0.25F * staggerDamage)); } //Apply shield if (target.Curr_shield > 0) { if (target.Curr_shield - dMod < 0)//Shield breaks { target.Curr_shield = 0; target.Curr_hp -= Mathf.CeilToInt(dMod - target.Curr_shield); if (staggerDamage >= 1 && is_stunned == false) { target.Curr_stagger--; } } else { target.Curr_shield -= Mathf.CeilToInt(dMod); } } else { target.Curr_hp -= Mathf.CeilToInt(dMod); //Stagger if enemy is actually damaged if (staggerDamage >= 1 && !is_stunned && dMod > 0) { target.Curr_stagger--; } } if (target.Curr_hp < 0) { target.Curr_hp = 0; } if (target.Curr_hp > target.Stats.max_hp) { target.Curr_hp = target.Stats.max_hp; } data.damageInflicted = Mathf.CeilToInt(dMod); return(dMod > 0); }
//Applies ICaster's buff/debuff state to its stats public static CasterStats applyBuff(ICaster caster) { return(caster.Stats.modify(caster.BuffDebuff)); }
public CastSpellBattleEvent(Ability a, ICaster c) : base(a, c) { }
public abstract CreateSpellCastResult CanCast(ICaster caster, SpellState spellState);
public Fireball(ICaster caster) : this() { Caster = caster; }
public RemoteLockManager(RecordViewTableMapFactory aRecordViewTableMapFactory , ICaster aCaster) : base(aRecordViewTableMapFactory, aCaster) { }
public BooleanComparer() { caster = new ThreeStateBooleanCaster(); }
//Used to set location data public void setLocationData(ICaster target, ICaster caster) { this.target = target; this.caster = caster; }
public SicknessDarkElf(ICaster caster) : this() { Caster = caster; }
public FlourishSeer(ICaster caster) : this() { Caster = caster; }
public abstract bool HasValidTarget(ICaster caster, out Target target);
public override bool HasValidTarget(ICaster caster, out Target target) { throw new System.NotImplementedException(); }
public override void Cast(ICaster caster) { finished = true; }
public DarkenstoneHellDragon(ICaster caster) : this() { Caster = caster; }
public FireShotDragon(ICaster caster) : this() { Caster = caster; }
//public methods //Casts this spell at selected target (at targets[selected]) public abstract CastData cast(ICaster target, ICaster caster);
public StingGoblin(ICaster caster) : this() { Caster = caster; }
public override CastData cast(ICaster target, ICaster caster) { throw new System.NotImplementedException(); }
public Min(ICaster <T> caster) : base(caster) { }
public SwipeMurloc(ICaster caster) : this() { Caster = caster; }
public GunShotGoblin(ICaster caster) : this() { Caster = caster; }
public NumericComparer() { caster = new NumericCaster(); }
public LightningBoltSeer(ICaster caster) : this() { Caster = caster; }