public EnergyResistance(IDamageType damageType, Func <float> calculation) { DamageType = damageType.Name; this.amount = new BasicStat(this.Name); this.amount.AddModifier( new DelegateStatModifier(this.Name, "-", calculation) ); }
public override double StandardModifier(IDamageType damageType) { if (TypeComparer.IsSameOrVariant(damageType.GetType(), typeof(FireDamageType)).SuccessValue) { return(0.5); } if (TypeComparer.IsSameOrVariant(damageType.GetType(), typeof(WaterDamageType)).SuccessValue) { return(0.1); } return(1); }
public void DealDamage(IDamageType damage, GameObject causer = null) { damage.ChangeHealth(this, causer); var data = new DamageData(damage, causer); if (IsAlive()) { BroadcastMessage("OnReceiveDamage", data); } else { BroadcastMessage("OnDeath", data); } actual = Mathf.Clamp(actual, 0, max); }
public DamageData(IDamageType _d, GameObject _o) { damage = _d; causer = _o; }
public override double StandardModifier(IDamageType damageType) { return(1); }
public abstract double StandardModifier(IDamageType damageType);
public void Activate() { IDamageType dmgType = IDamageType.Magic; switch (spell.spellRune) { case ISpellRune.Air: dmgType = IDamageType.Air; break; case ISpellRune.Earth: dmgType = IDamageType.Earth; break; case ISpellRune.Fire: dmgType = IDamageType.Fire; break; case ISpellRune.Water: dmgType = IDamageType.Water; break; } switch (spell.spellType) { case ISpellType.Target: if (target) { target.ApplyDamage(spell.value, dmgType); } break; case ISpellType.Radian: ICharacter[] chars = ICharacter.GetNearestFromPointAll(destination, null, spell.range); foreach (ICharacter ch in chars) { ch.ApplyDamage(spell.value, dmgType); } break; case ISpellType.Point: ICharacter c = ICharacter.GetNearestFromPoint(destination, null, 0.5f); if (c) { c.ApplyDamage(spell.value, dmgType); } break; } if (target && caster) { if (!(IReputation.GetEnemity(target.status, caster.status) > 1)) { if (caster.status.reputationType != IReputationType.Bandit && caster.status.reputationType != IReputationType.Monster) { caster.status.reputationType = IReputationType.Bandit; } } } //ISpell.SpellEffect (spell.spellRune, caster.status, trans.position); DestroySpell(); }