コード例 #1
0
ファイル: MDRActor.cs プロジェクト: bsimser/CoM
 /** Notifies the actor that someone attacked but missed them. */
 virtual public void WasMissed(MDRActor attacker = null)
 {
     if (OnWasMissed != null)
     {
         OnWasMissed(attacker);
     }
 }
コード例 #2
0
        /**
         * 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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        /** 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);
        }
コード例 #5
0
        /**
         * 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>());
        }
コード例 #6
0
        /**
         * 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);
        }
コード例 #7
0
 public SpellResult(MDRActor caster, MDRActor target, MDRSpell spell)
 {
     Caster = caster;
     Target = target;
     Spell  = spell;
 }
コード例 #8
0
        /** Calculates damage delt by given spell to given target. */
        public int CalculateSpellDamage(MDRActor source, MDRActor target)
        {
            int resisted;

            return(CalculateSpellDamage(source, target, out resisted));
        }
コード例 #9
0
 public DamageInfo(int damage, MDRActor source = null, MDRDamageType damageType = null)
 {
     Amount     = damage;
     DamageType = damageType ?? MDRDamageTypeLibrary.GlobalDefault;
     Source     = source;
 }