Пример #1
0
        public void AppliquerDegatsMagiques(Mobile def, double dmg)
        {
            def = ProtectionTechnique.GetOnHitEffect(def);

            double reducedDmg = Reduction(dmg, def.MagicResistance);

            MagicReflectSpell.GetOnHitEffect(def, ref reducedDmg);

            DurabilityHandler.OnMagicDamageReceive(def);

            def.Damage((int)reducedDmg);
        }
Пример #2
0
        public virtual void OnHit(Mobile atk, Mobile def)
        {
            AttaqueAnimation(atk);
            DegatsAnimation(def);

            DurabilityHandler.OnPhysAttack(atk);
            DurabilityHandler.OnPhysDamageReceive(atk, def);

            CheckEquitation(def, EquitationType.BeingAttacked);

            atk.PlaySound(Weapon(atk).GetHitAttackSound(atk, def));
            def.PlaySound(Weapon(def).GetHitDefendSound(atk, def));

            double basedmg = (atk.Weapon as BaseWeapon).MinDamage + (Utility.RandomDouble() * ((atk.Weapon as BaseWeapon).MaxDamage - (atk.Weapon as BaseWeapon).MinDamage));
            double degats  = Degats(basedmg, atk, def);

            Assassinat.Instance.OnHit(atk, def, ref degats);

            if (DefStrategy(def).Parer(def))
            {
                Effects.SendTargetEffect(def, 0x37B9, 10, 16);
                def.Mana -= ParerCoutMana;
                degats    = 0;
            }
            else if (Critique(atk) && atk.Mana > CritiqueManaCost(basedmg))
            {
                degats    = CritiqueDegats(atk, degats);
                atk.Mana -= CritiqueManaCost(basedmg);
                atk.SendMessage("Vous effectuez un coup critique.");
                def.SendMessage("Vous recevez un coup critique.");
            }

            AppliquerPoison(atk, def);

            degats = Spell.OnHitEffects(atk, def, degats);

            atk.Stam -= (int)(basedmg * 0.60);

            def.Damage((int)degats, atk);

            atk.RevealingAction();
            def.RevealingAction();
        }