コード例 #1
0
ファイル: DamageAction.cs プロジェクト: uvbs/Asda2-Server
        /// <summary>Strikes the target</summary>
        public void DoStrike()
        {
            if (this.Damage > 0)
            {
                this.ResistPct = DamageAction.CalcResistPrc(this.Victim.Asda2Defence, this.Damage, 0.0f);
                if ((double)this.ResistPct > 95.0)
                {
                    this.ResistPct = 95f;
                }
                if ((double)this.ResistPct < 0.0)
                {
                    this.ResistPct = 0.0f;
                }
                ++this.Victim.DeathPrevention;
                ++this.Attacker.DeathPrevention;
                try
                {
                    this.AddDamageMods();
                    this.Victim.OnDefend(this);
                    this.Attacker.OnAttack(this);
                    this.Resisted = MathUtil.RoundInt((float)((double)this.ResistPct * (double)this.Damage / 100.0));
                    this.Victim.DoRawDamage((IDamageAction)this);
                }
                finally
                {
                    --this.Victim.DeathPrevention;
                    --this.Attacker.DeathPrevention;
                }
            }

            if (this.SpellEffect == null)
            {
                Asda2CombatHandler.SendAttackerStateUpdate(this);
            }
            this.TriggerProcOnStrike();
        }