Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace WildArmsSimulator.Simulation
- {
- public class PlayerDamageCalculator
- {
- public IBattleState BattleState { get; }
- public PlayerDamageCalculator(IBattleState battleState)
- {
- BattleState = battleState;
- }
- //If absorb or nullify, handle in battle engine logic
- public int GetSpellDamage(int sor, int spellModifier, int targetMgr, int forceLevel, bool isWeakness, bool isResistant)
- {
- var damage = sor * spellModifier;
- damage -= targetMgr;
- return CalculateVariance(damage, forceLevel);
- }
- //TODO: Investigate weakness and resistance modifiers
- public int GetRegularAttackDamage(int atp, int targetDfp, int forceLevel, bool isCritical, bool isHyper, bool isWeakness, bool isResistant)
- {
- var damage = atp * 2;
- if (!isCritical)
- {
- damage -= targetDfp;
- }
- if (isHyper)
- {
- damage *= 2;
- }
- return CalculateVariance(damage, forceLevel);
- }
- public int GetArmAttackDamage(int armAtp, int level, int forceLevel, int targetDfp)
- {
- var damage = (int)((10 * (level * 1.5 + armAtp)) - targetDfp);
- return CalculateVariance(damage, forceLevel);
- }
- public int CalculateVariance(int baseDamage, int forceLevel)
- {
- var currentDamage = baseDamage;
- currentDamage += GetRandomModifier(currentDamage);
- if (forceLevel >= 1)
- {
- currentDamage += GetForceModifier(currentDamage);
- }
- if (forceLevel >= 2)
- {
- currentDamage += GetForceModifier(currentDamage);
- }
- if (forceLevel >= 3)
- {
- currentDamage += GetForceModifier(currentDamage);
- }
- if (forceLevel >= 4)
- {
- currentDamage += GetForceModifier(currentDamage);
- }
- return currentDamage;
- }
- private int GetRandomModifier(int baseDamage)
- {
- var randomDamage = BattleState.Rng.Next((int)(baseDamage * .1) * -1, (int)(baseDamage * .1));
- return randomDamage;
- }
- private int GetForceModifier(int baseDamage)
- {
- var randomDamage = BattleState.Rng.Next(0, (int)(baseDamage * .1));
- return randomDamage;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement