public Mob ExecuteAbility(IOffensiveMeleeRageAbility ability, Mob mob, AbilityCheckState state) { var damage = ability.GetDamage(); mob.SetHp(mob.HP - damage); CharacterState.LatestDamageDone = damage; CharacterState.LatestAbilityUsed = ability; UpdateRage(ability, state); return(mob); }
public void UpdateRage(IOffensiveMeleeRageAbility ability, AbilityCheckState state) { // Can't crit yet if (state.ResourceKind == AbilityResourceKind.Gainer) { CurrentRage += ability.GetRageGain(false); } if (state.CanExecute) { CurrentRage -= ability.GetRageCost(); } }
public override Mob ExecuteOffensiveMeleeRageAbility(IOffensiveMeleeRageAbility ability, Mob mob) { AbilityCheckState state = CanExecuteAbility(ability, MaxRage); if (state.CanExecute) { mob = ExecuteAbility(ability, mob, state); } else { Console.WriteLine("\nYou don't have enough rage to execute that ability"); } return(mob); }
public AbilityCheckState CanExecuteAbility(IOffensiveMeleeRageAbility ability, int maxRage) { AbilityCheckState state = new AbilityCheckState(); if (ability.GetResourceKind() == AbilityResourceKind.Gainer) { state.CanExecute = true; state.ResourceKind = AbilityResourceKind.Gainer; } if (CurrentRage < ability.GetRageCost()) { state.CanExecute = false; state.ResourceKind = AbilityResourceKind.Consumer; } state.CanExecute = true; state.ResourceKind = AbilityResourceKind.Consumer; return(state); }