예제 #1
0
        public void Perform()
        {
            _v.WeaponPhisicalParams();
            _v.CasterCommand.BonusElement();
            if (!_v.CanAttackElementalCommand())
            {
                return;
            }

            _v.Target.Flags |= CalcFlag.HpAlteration;

            Int16 damage = (Int16)Math.Min(9999, _v.Context.EnsureAttack * (_v.Context.AttackPower - _v.Context.DefensePower));

            if (damage < 1)
            {
                return;
            }

            _v.Caster.Flags   |= CalcFlag.HpAlteration;
            _v.Caster.HpDamage = (Int16)(_v.Caster.MaximumHp >> 3);

            if ((_v.Context.Flags & BattleCalcFlags.Absorb) != 0)
            {
                _v.Target.Flags |= CalcFlag.HpRecovery;
            }

            _v.Target.HpDamage = damage;
        }
        public void Perform()
        {
            if (_v.Target.TryKillFrozen())
            {
                return;
            }

            _v.PhysicalAccuracy();
            if (!_v.TryPhysicalHit())
            {
                return;
            }

            _v.NormalPhisicalParams();
            _v.Caster.PhysicalPenaltyAndBonusAttack();
            _v.Target.GambleDefence();
            _v.Target.PhysicalPenaltyAndBonusAttack();
            _v.BonusBackstabAndPenaltyLongDistance();
            _v.CasterCommand.BonusElement();
            if (!_v.CanAttackElementalCommand())
            {
                return;
            }

            _v.TryCriticalHit();
            _v.CalcPhysicalHpDamage();
            _v.Target.RaiseTrouble();
            _v.TargetCommand.TryAlterMagicStatuses();
        }
예제 #3
0
        public void Perform()
        {
            if (_v.TargetCommand.IsTargetLevelMultipleOfCommandRate() && _v.Target.CanBeAttacked())
            {
                _v.NormalMagicParams();
                _v.Caster.PenaltyMini();
                _v.Target.PenaltyShellAttack();
                _v.CasterCommand.BonusElement();

                if (_v.CanAttackElementalCommand())
                {
                    _v.TargetCommand.CalcHpDamage();
                }
            }
        }
        public void Perform()
        {
            _v.NormalPhisicalParams();
            _v.Caster.PhysicalPenaltyAndBonusAttack();
            _v.Target.GambleDefence();
            _v.Target.PhysicalPenaltyAndBonusAttack();
            _v.BonusBackstabAndPenaltyLongDistance();
            _v.CasterCommand.BonusElement();
            if (!_v.CanAttackElementalCommand())
            {
                return;
            }

            _v.TargetCommand.CalcHpDamage();
            if (_v.Target.Row != 0)
            {
                _v.Target.ChangeRow();
            }

            _v.TargetCommand.TryAlterMagicStatuses();
        }