public static void ApplyDamage(DamageProperty prop, Unit source, GridCell target, int level) { if (prop.targetCasterOverride) { int damage = BattleCalculations.CalculateDamage(source, source, prop.damagePerLevel [level].min, prop.damagePerLevel [level].max, prop.element, prop.scaleFactor); source.Damage(damage, prop.element); } else if (target.currentUnit != null) { if (target.currentUnit == source) { if (prop.affectsCaster) { int damage = BattleCalculations.CalculateDamage(source, source, prop.damagePerLevel [level].min, prop.damagePerLevel [level].max, prop.element, prop.scaleFactor); source.Damage(damage, prop.element); } } else if (prop.affectedUnits.Contains(target.currentUnit.unitType)) { int damage = BattleCalculations.CalculateDamage(source, target.currentUnit, prop.damagePerLevel [level].min, prop.damagePerLevel [level].max, prop.element, prop.scaleFactor); target.currentUnit.Damage(damage, prop.element); } } }
public void setUp() { Fi.startEngine(); pokemonFactory = new PokemonFactory(); calculations = new BattleCalculations(); pokemonBattleManager = new PokemonBattleManager(); }
public override void ApplyEffect(Unit caster, GridCell target, int level, bool crit) { int heal = BattleCalculations.CalculateHeal(caster, minHealPerLevel [level - 1], maxHealPerLevel [level - 1]); if (target.currentUnit != null) { if (affectsAll) { //Hit target.currentUnit.Heal(heal); } else if (affectedUnits.Contains(target.currentUnit.unitType)) { if (target.currentUnit == caster) { if (affectsCaster) { //Hit target.currentUnit.Heal(heal); } } else { //Hit target.currentUnit.Heal(heal); } } } }
public override void ApplyEffect(Unit caster, GridCell target, int level, bool crit) { if (target.currentUnit != null) { if (affectsAll) { int damage = BattleCalculations.CalculateDamage(caster, target.currentUnit, minDamagePerLevel [level - 1], maxDamagePerLevel [level - 1], element, scaleFactor); target.currentUnit.Damage(damage, element); } else if (affectedUnits.Contains(target.currentUnit.unitType)) { if (target.currentUnit == caster) { if (affectsCaster) { int damage = BattleCalculations.CalculateDamage(caster, target.currentUnit, minDamagePerLevel [level - 1], maxDamagePerLevel [level - 1], element, scaleFactor); target.currentUnit.Damage(damage, element); } } else { int damage = BattleCalculations.CalculateDamage(caster, target.currentUnit, minDamagePerLevel [level - 1], maxDamagePerLevel [level - 1], element, scaleFactor); target.currentUnit.Damage(damage, element); } } } }
public override int MovementLockPenalty() { List <Unit> adjacentEnemies = new List <Unit> (); for (int x = -1; x <= 1; x++) { GridPos pos = new GridPos(currentLocation.gridPos.x - x, currentLocation.gridPos.y); if (GridManager.gridCells.ContainsKey(pos)) { GridCell nextGridCell = GridManager.gridCells [pos]; if (nextGridCell.currentUnit != null) { Unit unit = nextGridCell.currentUnit; if (unit.unitType == eUnitType.ENEMY || unit.unitType == eUnitType.ENEMY_SUMMON) { if (unit != this) { adjacentEnemies.Add(unit); } } } } } for (int y = -1; y <= 1; y++) { GridPos pos = new GridPos(currentLocation.gridPos.x, currentLocation.gridPos.y - y); if (GridManager.gridCells.ContainsKey(pos)) { GridCell nextGridCell = GridManager.gridCells [pos]; if (nextGridCell.currentUnit != null) { Unit unit = nextGridCell.currentUnit; if (unit.unitType == eUnitType.ENEMY || unit.unitType == eUnitType.ENEMY_SUMMON) { if (unit != this) { adjacentEnemies.Add(unit); } } } } } if (adjacentEnemies.Count > 0) { int mpLoss = BattleCalculations.CalculateDodgeLockMpReduction(this, adjacentEnemies); return(mpLoss); } else { return(0); } }
public bool HasCrit(int index) { AbilityInfo info = abilityInfo [index]; if (info.ability.baseCritChance > 0) { return(BattleCalculations.CalculateCrit(info.ability.baseCritChance)); } else { return(false); } }
private int CalculateApMpLossValue(Unit caster, Unit target, int val) { if (!isResistable) { return(val); } if (stat == eStat.MAX_AP) { int valueLost = -BattleCalculations.CalculateApMpLoss(caster, target, val, true); return(valueLost); } else if (stat == eStat.MAX_MP) { int valueLost = -BattleCalculations.CalculateApMpLoss(caster, target, val, false); return(valueLost); } else { return(val); } }
void Start() { thisPokemon = transform.GetComponent <Pokemon>(); input = transform.GetComponent <PokemonInput>(); dmgCalc = GetComponent <BattleCalculations>(); }
IEnumerator WaitForEnemy() { //Debug.Log(currentState); switch (currentState) { case (BattleStates.STORY): if (storyCount == 1) { if (Story1Toggle.complete) { currentState = BattleStates.START; } } else if (storyCount == 2) { if (Story2Toggle.complete) { battleStateStartScript.PrepareBattle(fightCount); currentState = BattleStates.PLAYERCHOICE; } } else if (storyCount == 3) { if (Story3Toggle.complete) { battleStateStartScript.PrepareBattle(fightCount); currentState = BattleStates.PLAYERCHOICE; } } else if (storyCount == 4) { if (Story4Toggle.complete) { battleStateStartScript.PrepareBattle(fightCount); currentState = BattleStates.PLAYERCHOICE; } } else if (storyCount == 5) { if (Story5Toggle.complete) { battleStateStartScript.PrepareBattle(fightCount); currentState = BattleStates.PLAYERCHOICE; } } if (storyCount == 6) { if (Story6Toggle.complete) { battleStateStartScript.PrepareBattle(fightCount); currentState = BattleStates.PLAYERCHOICE; } } break; case (BattleStates.START): battleStateStartScript.PrepareBattle(fightCount); currentState = BattleStates.PLAYERCHOICE; break; case (BattleStates.PLAYERCHOICE): currentCharacter = battleStateStartScript.MC; if (currentCharacter.Defeated) { currentState = BattleStates.RATCHOICE; } break; case (BattleStates.NATHANCHOICE): currentCharacter = battleStateStartScript.nathan; if (currentCharacter.Defeated) { currentState = BattleStates.ENEMYONECHOICE; } break; case (BattleStates.RATCHOICE): currentCharacter = battleStateStartScript.ratKing; if (currentCharacter.Defeated) { currentState = BattleStates.NATHANCHOICE; } break; case (BattleStates.CHOOSETARGET): break; case (BattleStates.CALCULATEDAMAGE): battleCalcScript.CalculateUsedAbilityDamage(usedAbilty); if (WinLossCheck() == 1) { currentState = BattleStates.LOSE; } else if (WinLossCheck() == 2) { currentState = BattleStates.WIN; } else if (currentCharacter == battleStateStartScript.MC) { currentState = BattleStates.ENEMYANIMATE; BattleCalculations.playAnimation(TurnBasedCombatStateMachine.currentCharacter, TurnBasedCombatStateMachine.targetCharacter, TurnBasedCombatStateMachine.usedAbilty); attacking = true; if (attacking) { yield return(new WaitForSeconds(1.5f)); } attacking = false; } else if (currentCharacter == battleStateStartScript.ratKing) { currentState = BattleStates.ENEMYANIMATE; BattleCalculations.playAnimation(TurnBasedCombatStateMachine.currentCharacter, TurnBasedCombatStateMachine.targetCharacter, TurnBasedCombatStateMachine.usedAbilty); attacking = true; if (attacking) { yield return(new WaitForSeconds(1.5f)); } attacking = false; } else if (currentCharacter == battleStateStartScript.nathan) { currentState = BattleStates.ENEMYANIMATE; BattleCalculations.playAnimation(TurnBasedCombatStateMachine.currentCharacter, TurnBasedCombatStateMachine.targetCharacter, TurnBasedCombatStateMachine.usedAbilty); attacking = true; if (attacking) { yield return(new WaitForSeconds(2.5f)); } attacking = false; } else if (currentCharacter == battleStateStartScript.EnemyOne) { currentState = BattleStates.ENEMYTWOCHOICE; } else if (currentCharacter == battleStateStartScript.EnemyTwo) { currentState = BattleStates.ENEMYTHREECHOICE; } else if (currentCharacter == battleStateStartScript.EnemyThree) { currentState = BattleStates.PLAYERCHOICE; } break; case (BattleStates.PLAYERANIMATE): break; case (BattleStates.ENEMYONECHOICE): currentCharacter = battleStateStartScript.EnemyOne; if (currentCharacter.Defeated) { currentState = BattleStates.ENEMYTWOCHOICE; } else { battleCalcScript.EnemyAi(currentCharacter); usedAbilty = battleStateStartScript.EnemyOne.AbilityOne; currentState = BattleStates.ENEMYTWOCHOICE; BattleCalculations.playAnimation(TurnBasedCombatStateMachine.currentCharacter, TurnBasedCombatStateMachine.targetCharacter, TurnBasedCombatStateMachine.usedAbilty); attacking = true; if (attacking) { yield return(new WaitForSeconds(2)); } attacking = false; } if (WinLossCheck() == 1) { currentState = BattleStates.LOSE; } break; case (BattleStates.ENEMYTWOCHOICE): currentCharacter = battleStateStartScript.EnemyTwo; if (currentCharacter.Defeated) { currentState = BattleStates.ENEMYANIMATE; } else { battleCalcScript.EnemyAi(currentCharacter); usedAbilty = battleStateStartScript.EnemyTwo.AbilityOne; currentState = BattleStates.ENEMYANIMATE; BattleCalculations.playAnimation(TurnBasedCombatStateMachine.currentCharacter, TurnBasedCombatStateMachine.targetCharacter, TurnBasedCombatStateMachine.usedAbilty); attacking = true; if (attacking) { if (isBigMitch) { yield return(new WaitForSeconds(4)); } else { yield return(new WaitForSeconds(2)); } } attacking = false; } if (WinLossCheck() == 1) { currentState = BattleStates.LOSE; } break; case (BattleStates.ENEMYTHREECHOICE): currentCharacter = battleStateStartScript.EnemyThree; if (currentCharacter.Defeated) { currentState = BattleStates.PLAYERCHOICE; } else { battleCalcScript.EnemyAi(currentCharacter); usedAbilty = battleStateStartScript.EnemyThree.AbilityOne; currentState = BattleStates.ENEMYANIMATE; BattleCalculations.playAnimation(TurnBasedCombatStateMachine.currentCharacter, TurnBasedCombatStateMachine.targetCharacter, TurnBasedCombatStateMachine.usedAbilty); attacking = true; if (attacking) { yield return(new WaitForSeconds(2)); } attacking = false; } if (WinLossCheck() == 1) { currentState = BattleStates.LOSE; } break; case (BattleStates.ENEMYANIMATE): if (currentCharacter == battleStateStartScript.MC) { currentState = BattleStates.RATCHOICE; } else if (currentCharacter == battleStateStartScript.ratKing) { currentState = BattleStates.NATHANCHOICE; } else if (currentCharacter == battleStateStartScript.nathan) { currentState = BattleStates.ENEMYONECHOICE; } else if (currentCharacter == battleStateStartScript.EnemyOne) { currentState = BattleStates.ENEMYTWOCHOICE; } else if (currentCharacter == battleStateStartScript.EnemyTwo) { currentState = BattleStates.ENEMYTHREECHOICE; } else if (currentCharacter == battleStateStartScript.EnemyThree) { currentState = BattleStates.PLAYERCHOICE; } break; case (BattleStates.LOSE): Debug.Log("Lose"); battleStateStartScript.PrepareBattle(fightCount); currentState = BattleStates.PLAYERCHOICE; break; case (BattleStates.WIN): Debug.Log("Win"); storyCount += 1; fightCount += 1; if (fightCount == 3) { isBigMitch = true; } else { isBigMitch = false; } currentState = BattleStates.STORY; break; } }
// Use this for initialization void Start() { battle = GetComponent<BattleCalculations> (); }