/** Notifies the actor that someone attacked but missed them. */ virtual public void WasMissed(MDRActor attacker = null) { if (OnWasMissed != null) { OnWasMissed(attacker); } }
/** * Applyies the effects of this spell to given target. * Returns the result that can be used to log information about the outcome. */ public SpellResult CastTargeted(MDRActor caster, MDRActor target) { Trace.LogDebug("STUB: Casting {0} / {1}", caster, target); Debug.Assert(caster != null, "Invalid parameter. Caster must not be null."); var info = new SpellResult(caster, target, this); ApplyEffect(info); return(info); }
public int CalculateSpellHealing(MDRActor source, MDRActor target) { int characterSpellLevel = (int)Math.Max(1, source.SpellPower(this)); float levelFactor = Util.Clamp(4 * (1 - (SpellLevel / characterSpellLevel)), 1f, 4f); int bonusHealing = Util.Roll(DamageMod); int finalHealing = (int)(DamageBase * levelFactor) + bonusHealing; return(finalHealing); }
/** Calculates damage delt by given spell to given target. */ public int CalculateSpellDamage(MDRActor source, MDRActor target, out int resisted) { int characterSpellLevel = (int)Math.Max(1, source.SpellPower(this)); float levelFactor = Util.Clamp(4 * (1 - (SpellLevel / characterSpellLevel)), 1f, 4f); int bonusDamage = Util.Roll(DamageMod); int finalDamage = (int)(DamageBase * levelFactor) + bonusDamage; if (KillSpell && (target.Hits > finalDamage)) { finalDamage = 0; } //todo: resistance. resisted = 0; return(finalDamage); }
/** * Applyies the effects of this spell to each monster stack in an area. * Returns one result foreach each monster effected. */ public List <SpellResult> CastArea(MDRActor caster, MDRArea target) { //todo: /* * if (target == null) * throw new Exception("Parameter 'target' must not be null."); * * var results = new List<SpellResult>(); * * for (int lp = 0; lp < 4; lp++) { * MDRMonsterStack stack = target.Stack[lp]; * if (stack != null && !stack.IsEliminated) * results.Add(CastTargeted(caster, stack)); * } * * return results; */ return(new List <SpellResult>()); }
/** * Applyies the effects of this spell to entire party. * Returns one result foreach each party member effected. */ public List <SpellResult> CastParty(MDRActor caster, MDRParty target) { if (target == null) { throw new Exception("Parameter 'target' must not be null."); } var results = new List <SpellResult>(); for (int lp = 0; lp < 4; lp++) { MDRCharacter character = target[lp]; if (character != null && !character.IsDead) { results.Add(CastTargeted(caster, character)); } } return(results); }
public SpellResult(MDRActor caster, MDRActor target, MDRSpell spell) { Caster = caster; Target = target; Spell = spell; }
/** Calculates damage delt by given spell to given target. */ public int CalculateSpellDamage(MDRActor source, MDRActor target) { int resisted; return(CalculateSpellDamage(source, target, out resisted)); }
public DamageInfo(int damage, MDRActor source = null, MDRDamageType damageType = null) { Amount = damage; DamageType = damageType ?? MDRDamageTypeLibrary.GlobalDefault; Source = source; }