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); } }
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); }