Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }