コード例 #1
0
ファイル: EffectBaseLogic.cs プロジェクト: xuebai5/ARPG-Game
        public static void Cure(BattleCharacter effectTarget, EffectBase e, MagicReleaser releaser)
        {
            var per    = releaser.Controllor.Perception as BattlePerception;
            var effect = e as CureEffect;
            int cure   = -1;

            switch (effect.valueType)
            {
            case ValueOf.FixedValue:
                cure = effect.value;
                break;

            case ValueOf.NormalAttack:
                cure = BattleAlgorithm.CalNormalDamage(
                    releaser.ReleaserTarget.Releaser);
                break;
            }

            if (cure > 0)
            {
                per.CharacterAddHP(effectTarget, cure);
            }
        }
コード例 #2
0
ファイル: EffectBaseLogic.cs プロジェクト: xuebai5/ARPG-Game
        public static void NormalDamage(BattleCharacter effectTarget, EffectBase e, MagicReleaser releaser)
        {
            var per    = releaser.Controllor.Perception as BattlePerception;
            var effect = e as NormalDamageEffect;
            int damage = -1;

            switch (effect.valueOf)
            {
            case ValueOf.FixedValue:
                damage = effect.DamageValue;
                break;

            case ValueOf.NormalAttack:
                damage = BattleAlgorithm.CalFinalDamage(
                    BattleAlgorithm.CalNormalDamage(releaser.ReleaserTarget.Releaser),
                    releaser.ReleaserTarget.Releaser.TDamage,
                    effectTarget.TDefance);
                break;
            }

            var result = BattleAlgorithm
                         .GetDamageResult(damage, releaser.ReleaserTarget.Releaser.TDamage, effectTarget);

            if (releaser.ReleaserTarget.Releaser.TDamage != Proto.DamageType.Magic)
            {
                if (!result.IsMissed)
                {
                    var cureHP = (int)(result.Damage * releaser.ReleaserTarget.Releaser[Proto.HeroPropertyType.SuckingRate].FinalValue / 10000f);
                    if (cureHP > 0)
                    {
                        per.CharacterAddHP(releaser.ReleaserTarget.Releaser, cureHP);
                    }
                }
            }

            per.ProcessDamage(releaser.ReleaserTarget.Releaser, effectTarget, result);
        }