public static int calculateDamage(Pokemon pAttacker, Pokemon pAttacked) { int iDamage = 0; PokeTypeAdvantage taAdvantage = getTypeAdvantage(pAttacker, pAttacked); if (taAdvantage == PokeTypeAdvantage.Advantage) { iDamage = ((pAttacker.Attack * 2) - pAttacked.Defense); } else if (taAdvantage == PokeTypeAdvantage.Disadvantage) { iDamage = ((pAttacker.Attack / 2) - pAttacked.Defense); } else { iDamage = (pAttacker.Attack - pAttacked.Defense); } if (iDamage <= 0) { iDamage = 1; } return(iDamage); }
public static Pokemon.PokeTypeAdvantage getTypeAdvantage(Pokemon pAttacker, Pokemon pAttacked) { PokeTypeAdvantage taResult = PokeTypeAdvantage.Neutral; // Attacker is Grass if (pAttacker.Type == PokeType.Grass && pAttacked.Type == PokeType.Grass) { taResult = PokeTypeAdvantage.Neutral; // Grass -> Grass } else if (pAttacker.Type == PokeType.Grass && pAttacked.Type == PokeType.Fire) { taResult = PokeTypeAdvantage.Disadvantage; // Grass -> Fire } else if (pAttacker.Type == PokeType.Grass && pAttacked.Type == PokeType.Water) { taResult = PokeTypeAdvantage.Advantage; // Grass -> Water } // Attacker is Fire else if (pAttacker.Type == PokeType.Fire && pAttacked.Type == PokeType.Grass) { taResult = PokeTypeAdvantage.Advantage; // Fire -> Grass } else if (pAttacker.Type == PokeType.Fire && pAttacked.Type == PokeType.Fire) { taResult = PokeTypeAdvantage.Neutral; // Fire -> Fire } else if (pAttacker.Type == PokeType.Fire && pAttacked.Type == PokeType.Water) { taResult = PokeTypeAdvantage.Disadvantage; // Fire -> Water } // Attacker is Water else if (pAttacker.Type == PokeType.Water && pAttacked.Type == PokeType.Grass) { taResult = PokeTypeAdvantage.Disadvantage; // Water -> Grass } else if (pAttacker.Type == PokeType.Water && pAttacked.Type == PokeType.Fire) { taResult = PokeTypeAdvantage.Advantage; // Water -> Fire } else if (pAttacker.Type == PokeType.Water && pAttacked.Type == PokeType.Water) { taResult = PokeTypeAdvantage.Neutral; //Water -> Water } return(taResult); }
public static int calculateExperience(Pokemon pWinner, Pokemon pLoser) { int iExpereince = iBaseExperience; PokeTypeAdvantage taAdvantage = getTypeAdvantage(pWinner, pLoser); if (pWinner.Level == iLevelCap) { return(0); } // Loser is lower level if (pWinner.Level > pLoser.Level) { int iLevelDifference = (pWinner.Level - pLoser.Level); if (taAdvantage == PokeTypeAdvantage.Advantage) { iExpereince = ((iBaseExperience - iLevelDifference) * 2); } else if (taAdvantage == PokeTypeAdvantage.Disadvantage) { iExpereince = ((iBaseExperience - iLevelDifference) * 4); } else { iExpereince = (iBaseExperience - iLevelDifference); } } // Loser is higher level else if (pWinner.Level < pLoser.Level) { int iLevelDifference = (pLoser.Level - pWinner.Level); if (taAdvantage == PokeTypeAdvantage.Advantage) { iExpereince = ((iBaseExperience * 2) * (iLevelDifference + 1)); } else if (taAdvantage == PokeTypeAdvantage.Disadvantage) { iExpereince = ((iBaseExperience * 4) * (iLevelDifference + 1)); } else { iExpereince = (iBaseExperience * (iLevelDifference + 1)); } } // Both same level else { if (taAdvantage == PokeTypeAdvantage.Advantage) { iExpereince = (iBaseExperience * 2); } else if (taAdvantage == PokeTypeAdvantage.Disadvantage) { iExpereince = (iBaseExperience * 4); } else { iExpereince = iBaseExperience; } } iExpereince += (100 - (pWinner.Level * 10)); if (pWinner.Experience + iExpereince >= iExperinceCap) { iExpereince = (iExperinceCap - pWinner.Experience); } return(iExpereince); }