Esempio n. 1
0
        /// <summary>
        /// Manages the data for trainers
        /// </summary>
        /// <param name="game">instance of game</param>
        public DataManager(Game game)
        {
            MoveArchetypes = new Dictionary<string, MoveArchetype>();
            PokemonArchetypes = new Dictionary<string, PokemonArchetype>();
            PokemonInstances = new Dictionary<long, PokemonInstance>();
            Trainers = new Dictionary<string, Trainer>();
            Effectiveness = new Dictionary<string, float>();

            Game = game;

            var experienceCatalogue = new ExperienceCatalogue();

            _pokemonTexture = game.Content.Load<Texture2D>(@"Resources\Pokemon\pokemon");

            var name = "Trond";
            Trainers.Add(name, new Trainer(game, name, "trainers2"));

            name = "Lehmann";
            Trainers.Add(name, new Trainer(game, name, "LehmannLarge"));

            name = "Giovanni";
            Trainers.Add(name, new Trainer(game, name, "GiovanniLarge"));

            name = "Sabrina";
            Trainers.Add(name, new Trainer(game, name, "SabrinaLarge"));

            name = "Tall Grass";
            Trainers.Add(name, new Trainer(game, name, "TallGrass"));

            //List of pokemon moves
            #region pokemonMoves

            //Normal moves
            name = "Tackle";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Normal,
                35,
                50,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Scratch";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Normal,
                35,
                50,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Slam";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Normal,
                20,
                80,
                75,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Slash";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Normal,
                20,
                70,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            // Bug moves
            name = "X-scissor";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Normal,
                15,
                80,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            // Dark moves
            name = "Bite";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Dark,
                25,
                60,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Water moves
            name = "Aqua Tail";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Water,
                10,
                90,
                90,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Ice moves
            name = "Ice Fang";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Ice,
                15,
                65,
                95,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Flying moves
            name = "Gust";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Special,
                ElementType.Flying,
                35,
                40,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Wing Attack";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Flying,
                35,
                60,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Peck";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Flying,
                35,
                35,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Fire moves
            name = "Fire Blast";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Special,
                ElementType.Fire,
                5,
                120,
                85,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Ember";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Special,
                ElementType.Fire,
                25,
                40,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Flame Wheel";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Fire,
                25,
                60,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Psycic moves
            name = "Confusion";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Special,
                ElementType.Psychic,
                25,
                50,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Psybeam";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Special,
                ElementType.Psychic,
                20,
                65,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Psychic";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Special,
                ElementType.Psychic,
                10,
                90,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Ground moves
            name = "Rock Throw";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Rock,
                15,
                50,
                90,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Rock Slide";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Rock,
                10,
                75,
                90,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            #endregion

            //another list of pokemon moves
            #region moveLists

            // Standard
            var standardMoveSet = new Dictionary<int, MoveArchetype>();
            standardMoveSet.Add(1, MoveArchetypes["Tackle"]);
            standardMoveSet.Add(10, MoveArchetypes["Scratch"]);
            standardMoveSet.Add(13, MoveArchetypes["Slash"]);
            standardMoveSet.Add(15, MoveArchetypes["Slam"]);

            var psycicMoveSet = new Dictionary<int, MoveArchetype>();
            psycicMoveSet.Add(1, MoveArchetypes["Tackle"]);
            psycicMoveSet.Add(10, MoveArchetypes["Confusion"]);
            psycicMoveSet.Add(13, MoveArchetypes["Psybeam"]);
            psycicMoveSet.Add(15, MoveArchetypes["Psychic"]);

            var flyingMoveSet = new Dictionary<int, MoveArchetype>();
            flyingMoveSet.Add(1, MoveArchetypes["Tackle"]);
            flyingMoveSet.Add(10, MoveArchetypes["Peck"]);
            flyingMoveSet.Add(13, MoveArchetypes["Gust"]);
            flyingMoveSet.Add(15, MoveArchetypes["Wing Attack"]);

            var groundMoveSet = new Dictionary<int, MoveArchetype>();
            groundMoveSet.Add(1, MoveArchetypes["Tackle"]);
            groundMoveSet.Add(10, MoveArchetypes["Slam"]);
            groundMoveSet.Add(13, MoveArchetypes["Rock Slide"]);
            groundMoveSet.Add(15, MoveArchetypes["Rock Throw"]);

            var archanineMoveSet = new Dictionary<int, MoveArchetype>();
            archanineMoveSet.Add(1, MoveArchetypes["Tackle"]);
            archanineMoveSet.Add(10, MoveArchetypes["Ember"]);
            archanineMoveSet.Add(13, MoveArchetypes["Bite"]);
            archanineMoveSet.Add(15, MoveArchetypes["Fire Blast"]);

            var fireMoveSet = new Dictionary<int, MoveArchetype>();
            fireMoveSet.Add(1, MoveArchetypes["Tackle"]);
            fireMoveSet.Add(10, MoveArchetypes["Ember"]);
            fireMoveSet.Add(13, MoveArchetypes["Bite"]);
            fireMoveSet.Add(15, MoveArchetypes["Fire Blast"]);

            var gyaradosMoveSet = new Dictionary<int, MoveArchetype>();
            gyaradosMoveSet.Add(1, MoveArchetypes["Slam"]);
            gyaradosMoveSet.Add(10, MoveArchetypes["Bite"]);
            gyaradosMoveSet.Add(13, MoveArchetypes["Aqua Tail"]);
            gyaradosMoveSet.Add(15, MoveArchetypes["Ice Fang"]);

            var grassMoveSet = new Dictionary<int, MoveArchetype>();
            grassMoveSet.Add(1, MoveArchetypes["Tackle"]);
            grassMoveSet.Add(10, MoveArchetypes["Bite"]);
            grassMoveSet.Add(13, MoveArchetypes["Slash"]);
            grassMoveSet.Add(15, MoveArchetypes["X-scissor"]);

            #endregion

            //archetypes of the pokemon
            #region pokemonArchetype

            name = "Alakazam";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                65,
                ElementType.Psychic,
                ElementType.None,
                "Alakazam's brain continually grows, infinitely multiplying brain cells. " +
                "This amazing brain gives this Pokémon an astoundingly high IQ of 5,000. It " +
                "has a thorough memory of everything that has occurred in the world.",
                false,
                0,
                13,
                6,
                6,
                8,
                7,
                8,
                314,
                199,
                189,
                369,
                269,
                339,
                _pokemonTexture,
                new Rectangle(226, 854, 64, 64),
                new Rectangle(162, 854, 64, 64),
                new Rectangle(290, 854, 32, 32),
                new Rectangle(290, 886, 32, 32),
                ExperienceGroup.MediumSlow,
                psycicMoveSet,
                Gender.None
                ));

            name = "Pidgeot";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                18,
                ElementType.Normal,
                ElementType.Flying,
                "When hunting, it skims the surface of water at high " +
                "speed to pick off unwary prey such as Magikarp.",
                false,
                0,
                13,
                7,
                7,
                7,
                7,
                7,
                370,
                259,
                249,
                239,
                239,
                281,
                _pokemonTexture,
                new Rectangle(64, 334, 64, 64),
                new Rectangle(1, 330, 64, 64),
                new Rectangle(290, 854, 32, 32),
                new Rectangle(290, 886, 32, 32),
                ExperienceGroup.MediumSlow,
                flyingMoveSet,
                Gender.None
                ));

            name = "Onix";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                95,
                ElementType.Rock,
                ElementType.Ground,
                "As it grows, the stone portions of its body harden to become similar " +
                "to a diamond, but colored black.",
                false,
                0,
                12,
                6,
                9,
                6,
                6,
                7,
                274,
                189,
                419,
                159,
                189,
                239,
                _pokemonTexture,
                new Rectangle(1030, 265, 64, 64),
                new Rectangle(970, 262, 64, 64),
                new Rectangle(1095, 270, 32, 32),
                new Rectangle(1095, 300, 32, 32),
                ExperienceGroup.MediumFast,
                groundMoveSet,
                Gender.None
                ));

            name = "Arcanine";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                59,
                ElementType.Fire,
                ElementType.None,
                "Arcanine is known for its high speed. It is said to be " +
                "capable of running over 6,200 miles in a single day and " +
                "night. The fire that blazes wildly within this Pokémon's " +
                "body is its source of power.",
                false,
                0,
                13,
                8,
                7,
                7,
                8,
                9,
                384,
                319,
                259,
                299,
                259,
                289,
                _pokemonTexture,
                new Rectangle(709, 657, 64, 64),
                new Rectangle(645, 657, 64, 64),
                new Rectangle(773, 657, 32, 32),
                new Rectangle(773, 689, 100, 32),
                ExperienceGroup.MediumSlow,
                archanineMoveSet,
                Gender.None
                ));

            name = "Gyarados";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                130,
                ElementType.Water,
                ElementType.Flying,
                "Brutally vicious and enormously destructive. " +
                "Known for totally destroying cities in ancient times.",
                false,
                0,
                13,
                8,
                7,
                7,
                7,
                7,
                394,
                349,
                257,
                219,
                299,
                261,
                _pokemonTexture,
                new Rectangle(1353, 592, 64, 64),
                new Rectangle(1289, 592, 64, 64),
                new Rectangle(290, 854, 32, 32),
                new Rectangle(290, 886, 32, 32),
                ExperienceGroup.Slow,
                gyaradosMoveSet,
                Gender.None
                ));

            name = "Scyther";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                123,
                ElementType.Bug,
                ElementType.Flying,
                "With ninja-like agility and speed, it can create " +
                "the illusion that there is more than one.",
                false,
                0,
                13,
                8,
                7,
                7,
                7,
                8,
                344,
                319,
                259,
                209,
                259,
                309,
                _pokemonTexture,
                new Rectangle(869, 725, 64, 64),
                new Rectangle(806, 722, 64, 64),
                new Rectangle(290, 854, 32, 32),
                new Rectangle(290, 886, 32, 32),
                ExperienceGroup.MediumFast,
                grassMoveSet,
                Gender.None
                ));

            name = "Rapidash";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                78,
                ElementType.Fire,
                ElementType.None,
                "Very competitive, this Pokémon will chase anything " +
                "that moves fast in the hopes of racing it.",
                false,
                0,
                13,
                7,
                7,
                7,
                7,
                8,
                334,
                299,
                239,
                259,
                259,
                309,
                _pokemonTexture,
                new Rectangle(871, 135, 64, 64),
                new Rectangle(806, 131, 64, 64),
                new Rectangle(290, 854, 32, 32),
                new Rectangle(290, 886, 32, 32),
                ExperienceGroup.MediumFast,
                fireMoveSet,
                Gender.None
                ));

            name = "Rattata";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                19,
                ElementType.Normal,
                ElementType.None,
                "Bites anything when it attacks. Small and very quick, " +
                "it is a common sight in many places.",
                true,
                19,
                12,
                7,
                6,
                6,
                6,
                7,
                264,
                211,
                169,
                149,
                169,
                243,
                _pokemonTexture,
                new Rectangle(231, 202, 64, 64),
                new Rectangle(168, 198, 64, 64),
                new Rectangle(290, 854, 32, 32),
                new Rectangle(290, 886, 32, 32),
                ExperienceGroup.MediumFast,
                standardMoveSet,
                Gender.None
                ));

            name = "Pidgey";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                16,
                ElementType.Flying,
                ElementType.None,
                "A common sight in forests and woods. It flaps its " +
                "wings at ground level to kick up blinding sand.",
                true,
                17,
                12,
                6,
                6,
                6,
                6,
                7,
                284,
                189,
                179,
                169,
                169,
                221,
                _pokemonTexture,
                new Rectangle(71, 201, 64, 64),
                new Rectangle(5, 198, 64, 64),
                new Rectangle(290, 854, 32, 32),
                new Rectangle(290, 886, 32, 32),
                ExperienceGroup.MediumFast,
                flyingMoveSet,
                Gender.None
                ));
            #endregion

            //instances of pokemon
            #region pokemonInstance

            int uniqueID = 1;
            name = "Alakazam";
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                Gender.Male,
                false,
                Trainers["Sabrina"],
                1100
                ));

            uniqueID = 2;
            name = "Pidgeot";
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                Gender.Male,
                false,
                Trainers["Trond"],
                1900
                ));

            uniqueID = 3;
            name = "Onix";
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                Gender.Male,
                false,
                Trainers["Trond"],
                1100
                ));

            uniqueID = 4;
            name = "Arcanine";
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                Gender.Female,
                false,
                Trainers["Trond"],
                1200
                ));

            uniqueID = 5;
            name = "Gyarados";
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                Gender.Male,
                false,
                Trainers["Trond"],
                1400
                ));

            uniqueID = 6;
            name = "Scyther";
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                Gender.Male,
                false,
                Trainers["Trond"],
                1900
                ));

            uniqueID = 7;
            name = "Rapidash";
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                Gender.Female,
                false,
                Trainers["Trond"],
                1500
                ));

            uniqueID = 8;
            name = "Rattata";
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                Gender.Female,
                false,
                Trainers["Trond"],
                1600
                ));

            uniqueID = 9;
            name = "Pidgey";
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                Gender.Female,
                false,
                Trainers["Trond"],
                1400
                ));

            #endregion

            RandomWildPokemon();

            //The current trainers in existence
            Trainers["Trond"].PokemonSet.Add(PokemonInstances[5]);
            Trainers["Trond"].PokemonSet.Add(PokemonInstances[4]);

            Trainers["Lehmann"].PokemonSet.Add(PokemonInstances[2]);
            Trainers["Lehmann"].PokemonSet.Add(PokemonInstances[6]);
            Trainers["Lehmann"].PokemonSet.Add(PokemonInstances[1]);

            Trainers["Sabrina"].PokemonSet.Add(PokemonInstances[9]);
            Trainers["Sabrina"].PokemonSet.Add(PokemonInstances[7]);

            Trainers["Giovanni"].PokemonSet.Add(PokemonInstances[3]);
            Trainers["Giovanni"].PokemonSet.Add(PokemonInstances[8]);

            #region effectiveness
            AddEffectiveness(ElementType.Normal, ElementType.Rock, 0.5f);
            AddEffectiveness(ElementType.Normal, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Fire, ElementType.Fire, 0.5f);
            AddEffectiveness(ElementType.Fire, ElementType.Water, 0.5f);
            AddEffectiveness(ElementType.Fire, ElementType.Grass, 2f);
            AddEffectiveness(ElementType.Fire, ElementType.Ice, 2f);
            AddEffectiveness(ElementType.Fire, ElementType.Bug, 2f);
            AddEffectiveness(ElementType.Fire, ElementType.Rock, 0.5f);
            AddEffectiveness(ElementType.Fire, ElementType.Dragon, 0.5f);
            AddEffectiveness(ElementType.Fire, ElementType.Steel, 2f);
            AddEffectiveness(ElementType.Water, ElementType.Fire, 2f);
            AddEffectiveness(ElementType.Water, ElementType.Grass, 0.5f);
            AddEffectiveness(ElementType.Water, ElementType.Ground, 2f);
            AddEffectiveness(ElementType.Water, ElementType.Rock, 2f);
            AddEffectiveness(ElementType.Water, ElementType.Dragon, 0.5f);
            AddEffectiveness(ElementType.Electric, ElementType.Water, 2f);
            AddEffectiveness(ElementType.Electric, ElementType.Electric, 0.5f);
            AddEffectiveness(ElementType.Electric, ElementType.Grass, 0.5f);
            AddEffectiveness(ElementType.Electric, ElementType.Ground, 0f);
            AddEffectiveness(ElementType.Electric, ElementType.Flying, 2f);
            AddEffectiveness(ElementType.Electric, ElementType.Dragon, 0f);
            AddEffectiveness(ElementType.Grass, ElementType.Fire, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Water, 2f);
            AddEffectiveness(ElementType.Grass, ElementType.Grass, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Poision, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Ground, 2f);
            AddEffectiveness(ElementType.Grass, ElementType.Flying, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Bug, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Dragon, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Ice, ElementType.Fire, 0.5f);
            AddEffectiveness(ElementType.Ice, ElementType.Water, 0.5f);
            AddEffectiveness(ElementType.Ice, ElementType.Grass, 2f);
            AddEffectiveness(ElementType.Ice, ElementType.Ice, 0.5f);
            AddEffectiveness(ElementType.Ice, ElementType.Ground, 2f);
            AddEffectiveness(ElementType.Ice, ElementType.Flying, 2f);
            AddEffectiveness(ElementType.Ice, ElementType.Dragon, 2f);
            AddEffectiveness(ElementType.Ice, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Fight, ElementType.Normal, 2f);
            AddEffectiveness(ElementType.Fight, ElementType.Ice, 2f);
            AddEffectiveness(ElementType.Fight, ElementType.Poision, 0.5f);
            AddEffectiveness(ElementType.Fight, ElementType.Flying, 0.5f);
            AddEffectiveness(ElementType.Fight, ElementType.Psychic, 0.5f);
            AddEffectiveness(ElementType.Fight, ElementType.Bug, 0.5f);
            AddEffectiveness(ElementType.Fight, ElementType.Rock, 2f);
            AddEffectiveness(ElementType.Fight, ElementType.Ghost, 0f);
            AddEffectiveness(ElementType.Fight, ElementType.Dark, 2f);
            AddEffectiveness(ElementType.Fight, ElementType.Steel, 2f);
            AddEffectiveness(ElementType.Poision, ElementType.Grass, 2f);
            AddEffectiveness(ElementType.Poision, ElementType.Poision, 0.5f);
            AddEffectiveness(ElementType.Poision, ElementType.Ground, 0.5f);
            AddEffectiveness(ElementType.Poision, ElementType.Rock, 0.5f);
            AddEffectiveness(ElementType.Poision, ElementType.Ghost, 0.5f);
            AddEffectiveness(ElementType.Poision, ElementType.Steel, 0f);
            AddEffectiveness(ElementType.Ground, ElementType.Fire, 2f);
            AddEffectiveness(ElementType.Ground, ElementType.Electric, 2f);
            AddEffectiveness(ElementType.Ground, ElementType.Grass, 0.5f);
            AddEffectiveness(ElementType.Ground, ElementType.Poision, 2f);
            AddEffectiveness(ElementType.Ground, ElementType.Flying, 0f);
            AddEffectiveness(ElementType.Ground, ElementType.Bug, 2f);
            AddEffectiveness(ElementType.Ground, ElementType.Rock, 0.5f);
            AddEffectiveness(ElementType.Ground, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Flying, ElementType.Electric, 0.5f);
            AddEffectiveness(ElementType.Flying, ElementType.Grass, 2f);
            AddEffectiveness(ElementType.Flying, ElementType.Fight, 2f);
            AddEffectiveness(ElementType.Flying, ElementType.Bug, 2f);
            AddEffectiveness(ElementType.Flying, ElementType.Rock, 0.5f);
            AddEffectiveness(ElementType.Flying, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Psychic, ElementType.Fight, 2f);
            AddEffectiveness(ElementType.Psychic, ElementType.Poision, 2f);
            AddEffectiveness(ElementType.Psychic, ElementType.Psychic, 0.5f);
            AddEffectiveness(ElementType.Psychic, ElementType.Dark, 0f);
            AddEffectiveness(ElementType.Psychic, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Bug, ElementType.Fire, 0.5f);
            AddEffectiveness(ElementType.Bug, ElementType.Grass, 2f);
            AddEffectiveness(ElementType.Bug, ElementType.Fight, 0.5f);
            AddEffectiveness(ElementType.Bug, ElementType.Flying, 0.5f);
            AddEffectiveness(ElementType.Bug, ElementType.Psychic, 2f);
            AddEffectiveness(ElementType.Bug, ElementType.Ghost, 0.5f);
            AddEffectiveness(ElementType.Bug, ElementType.Dark, 2f);
            AddEffectiveness(ElementType.Bug, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Rock, ElementType.Fire, 2f);
            AddEffectiveness(ElementType.Rock, ElementType.Ice, 2f);
            AddEffectiveness(ElementType.Rock, ElementType.Fight, 0.5f);
            AddEffectiveness(ElementType.Rock, ElementType.Ground, 0.5f);
            AddEffectiveness(ElementType.Rock, ElementType.Flying, 2f);
            AddEffectiveness(ElementType.Rock, ElementType.Bug, 2f);
            AddEffectiveness(ElementType.Rock, ElementType.Steel, 2f);
            AddEffectiveness(ElementType.Ghost, ElementType.Normal, 0f);
            AddEffectiveness(ElementType.Ghost, ElementType.Psychic, 2f);
            AddEffectiveness(ElementType.Ghost, ElementType.Ghost, 2f);
            AddEffectiveness(ElementType.Ghost, ElementType.Dark, 0.5f);
            AddEffectiveness(ElementType.Ghost, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Dragon, ElementType.Dragon, 2f);
            AddEffectiveness(ElementType.Dragon, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Dark, ElementType.Fight, 0.5f);
            AddEffectiveness(ElementType.Dark, ElementType.Psychic, 2f);
            AddEffectiveness(ElementType.Dark, ElementType.Ghost, 2f);
            AddEffectiveness(ElementType.Dark, ElementType.Dark, 0.5f);
            AddEffectiveness(ElementType.Dark, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Steel, ElementType.Fire, 0.5f);
            AddEffectiveness(ElementType.Steel, ElementType.Water, 0.5f);
            AddEffectiveness(ElementType.Steel, ElementType.Electric, 0.5f);
            AddEffectiveness(ElementType.Steel, ElementType.Ice, 2f);
            AddEffectiveness(ElementType.Steel, ElementType.Rock, 2f);
            AddEffectiveness(ElementType.Steel, ElementType.Steel, 0.5f);
            #endregion
        }
Esempio n. 2
0
        public DataManager(Game game)
        {
            var experienceCatalogue = new ExperienceCatalogue();

            _pokemonTexture = game.Content.Load<Texture2D>(@"Resources\Pokemon\pokemon");

            var name = "Trond";
            Trainers.Add(name, new Trainer(game, name, "trainers2"));

            name = "Sabrina";
            Trainers.Add(name, new Trainer(game, name, "trainers2"));

            //Moves------------------------------------------------

            //Normal moves
            name = "Tackle";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Normal,
                35,
                50,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Scratch";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Normal,
                35,
                50,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Slam";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Normal,
                20,
                80,
                75,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Dark moves
            name = "Bite";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Dark,
                25,
                60,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Water moves
            name = "Aqua Tail";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Water,
                10,
                90,
                90,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Ice moves
            name = "Ice Fang";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Ice,
                15,
                65,
                95,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Flying moves
            name = "Gust";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Special,
                ElementType.Flying,
                35,
                40,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Wing Attack";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Flying,
                35,
                60,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Peck";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Flying,
                35,
                35,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Fire moves
            name = "Fire Blast";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Special,
                ElementType.Fire,
                5,
                120,
                85,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Psycic moves
            name = "Confusion";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Special,
                ElementType.Psychic,
                25,
                50,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Psybeam";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Special,
                ElementType.Psychic,
                20,
                65,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Psychic";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Special,
                ElementType.Psychic,
                10,
                90,
                100,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //Ground moves
            name = "Rock Throw";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Rock,
                15,
                50,
                90,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            name = "Rock Slide";
            MoveArchetypes.Add(name, new MoveArchetype(
                name,
                MoveType.Physical,
                ElementType.Rock,
                10,
                75,
                90,
                DurationType.SingleFire,
                0,
                BattleEffectStageEffect.None,
                EffectType.None,
                EffectStart.Immediate,
                MoveTarget.ActiveEnemy,
                BattleEffectType.DamageOnly,
                ""
                ));

            //MoveSet--------------------------------------------------

            var levelledList = new List<LevelledMove>
                {
                    new LevelledMove(0, MoveArchetypes["Tackle"]),
                    new LevelledMove(0, MoveArchetypes["Scratch"])
                };

            // Standard
            var standardMoveSet = new CombatMoveSet
                {
                    new CombatMove(MoveArchetypes["Tackle"]),
                    new CombatMove(MoveArchetypes["Scratch"])
                };

            var alakazamMoveSet = new CombatMoveSet
                {
                    new CombatMove(MoveArchetypes["Tackle"]),
                    new CombatMove(MoveArchetypes["Confusion"]),
                    new CombatMove(MoveArchetypes["Psybeam"]),
                    new CombatMove(MoveArchetypes["Psychic"])
                };

            var pidgeotMoveSet = new CombatMoveSet
                {
                    new CombatMove(MoveArchetypes["Tackle"]),
                    new CombatMove(MoveArchetypes["Wing Attack"]),
                    new CombatMove(MoveArchetypes["Gust"]),
                    new CombatMove(MoveArchetypes["Peck"])
                };

            var onixMoveSet = new CombatMoveSet
                {
                    new CombatMove(MoveArchetypes["Tackle"]),
                    new CombatMove(MoveArchetypes["Slam"]),
                    new CombatMove(MoveArchetypes["Rock Throw"]),
                    new CombatMove(MoveArchetypes["Rock Slide"])
                };

            var arcanineMoveSet = new CombatMoveSet
                {
                    new CombatMove(MoveArchetypes["Tackle"]),
                    new CombatMove(MoveArchetypes["Fire Blast"])
                };

            var gyaradosMoveSet = new CombatMoveSet
                {
                    new CombatMove(MoveArchetypes["Slam"]),
                    new CombatMove(MoveArchetypes["Bite"]),
                    new CombatMove(MoveArchetypes["Aqua Tail"]),
                    new CombatMove(MoveArchetypes["Ice Fang"])
                };

            // Pokemon-----------------------------------------------------

            name = "Alakazam";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                65,
                ElementType.Psychic,
                ElementType.None,
                "Alakazam's brain continually grows, infinitely multiplying brain cells. " +
                "This amazing brain gives this Pokémon an astoundingly high IQ of 5,000. It " +
                "has a thorough memory of everything that has occurred in the world.",
                false,
                0,
                13,
                6,
                6,
                8,
                7,
                8,
                314,
                199,
                189,
                369,
                269,
                339,
                _pokemonTexture,
                new Rectangle(226, 854, 64, 64),
                new Rectangle(162, 854, 64, 64),
                new Rectangle(290, 854, 32, 32),
                new Rectangle(290, 886, 32, 32),
                ExperienceGroup.MediumSlow,
                levelledList,
                Gender.None
                ));

            int uniqueID = 1;
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                alakazamMoveSet,
                Gender.Male,
                false,
                Trainers["Sabrina"],
                90000
                ));

            name = "Pidgeot";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                18,
                ElementType.Normal,
                ElementType.Flying,
                "When hunting, it skims the surface of water at high " +
                "speed to pick off unwary prey such as Magikarp.",
                false,
                0,
                13,
                7,
                7,
                7,
                7,
                7,
                370,
                259,
                249,
                239,
                239,
                281,
                _pokemonTexture,
                new Rectangle(64, 334, 64, 64),
                new Rectangle(1, 330, 64, 64),
                new Rectangle(290, 854, 32, 32),
                new Rectangle(290, 886, 32, 32),
                ExperienceGroup.MediumSlow,
                levelledList,
                Gender.None
                ));

            uniqueID = 2;
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                pidgeotMoveSet,
                Gender.Male,
                false,
                Trainers["Trond"],
                90000
                ));

            name = "Onix";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                95,
                ElementType.Rock,
                ElementType.Ground,
                "As it grows, the stone portions of its body harden to become similar " +
                "to a diamond, but colored black.",
                false,
                0,
                12,
                6,
                9,
                6,
                6,
                7,
                274,
                189,
                419,
                159,
                189,
                239,
                _pokemonTexture,
                new Rectangle(1030, 265, 64, 64),
                new Rectangle(970, 265, 64, 64),
                new Rectangle(1095, 270, 32, 32),
                new Rectangle(1095, 300, 32, 32),
                ExperienceGroup.MediumFast,
                levelledList,
                Gender.None
                ));

            uniqueID = 3;
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                onixMoveSet,
                Gender.Male,
                false,
                Trainers["Trond"],
                90000
                ));

            name = "Arcanine";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                59,
                ElementType.Fire,
                ElementType.None,
                "Arcanine is known for its high speed. It is said to be " +
                "capable of running over 6,200 miles in a single day and " +
                "night. The fire that blazes wildly within this Pokémon's " +
                "body is its source of power.",
                false,
                0,
                13,
                8,
                7,
                7,
                8,
                9,
                384,
                319,
                259,
                299,
                259,
                289,
                _pokemonTexture,
                new Rectangle(709, 657, 64, 64),
                new Rectangle(645, 657, 64, 64),
                new Rectangle(773, 657, 32, 32),
                new Rectangle(773, 689, 100, 32),
                ExperienceGroup.MediumSlow,
                levelledList,
                Gender.None
                ));

            uniqueID = 4;
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                arcanineMoveSet,
                Gender.Female,
                false,
                Trainers["Trond"],
                100
                ));

            name = "Gyarados";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                130,
                ElementType.Water,
                ElementType.Flying,
                "Brutally vicious and enormously destructive. " +
                "Known for totally destroying cities in ancient times.",
                false,
                0,
                13,
                8,
                7,
                7,
                7,
                7,
                394,
                349,
                257,
                219,
                299,
                261,
                _pokemonTexture,
                new Rectangle(1353, 592, 64, 64),
                new Rectangle(1289, 592, 64, 64),
                new Rectangle(290, 854, 32, 32),
                new Rectangle(290, 886, 32, 32),
                ExperienceGroup.Slow,
                levelledList,
                Gender.None
                ));

            uniqueID = 5;
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                gyaradosMoveSet,
                Gender.Male,
                false,
                Trainers["Trond"],
                90000
                ));

            name = "Scyther";
            PokemonArchetypes.Add(name, new PokemonArchetype(
                name,
                123,
                ElementType.Bug,
                ElementType.Flying,
                "Brutally vicious and enormously destructive. " +
                "Known for totally destroying cities in ancient times.",
                false,
                0,
                13,
                8,
                7,
                7,
                7,
                7,
                394,
                349,
                257,
                219,
                299,
                261,
                _pokemonTexture,
                new Rectangle(1353, 592, 64, 64),
                new Rectangle(1289, 592, 64, 64),
                new Rectangle(290, 854, 32, 32),
                new Rectangle(290, 886, 32, 32),
                ExperienceGroup.Slow,
                levelledList,
                Gender.None
                ));

            uniqueID = 5;
            PokemonInstances.Add(uniqueID, new PokemonInstance(
                game,
                uniqueID,
                PokemonArchetypes[name],
                name,
                gyaradosMoveSet,
                Gender.Male,
                false,
                Trainers["Trond"],
                90000
                ));

            Trainers["Trond"].PokemonSet.Add(PokemonInstances[4]);
            Trainers["Sabrina"].PokemonSet.Add(PokemonInstances[4]);

            AddEffectiveness(ElementType.Normal, ElementType.Rock, 0.5f);
            AddEffectiveness(ElementType.Normal, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Fire, ElementType.Fire, 0.5f);
            AddEffectiveness(ElementType.Fire, ElementType.Water, 0.5f);
            AddEffectiveness(ElementType.Fire, ElementType.Grass, 2f);
            AddEffectiveness(ElementType.Fire, ElementType.Ice, 2f);
            AddEffectiveness(ElementType.Fire, ElementType.Bug, 2f);
            AddEffectiveness(ElementType.Fire, ElementType.Rock, 0.5f);
            AddEffectiveness(ElementType.Fire, ElementType.Dragon, 0.5f);
            AddEffectiveness(ElementType.Fire, ElementType.Steel, 2f);
            AddEffectiveness(ElementType.Water, ElementType.Fire, 2f);
            AddEffectiveness(ElementType.Water, ElementType.Grass, 0.5f);
            AddEffectiveness(ElementType.Water, ElementType.Ground, 2f);
            AddEffectiveness(ElementType.Water, ElementType.Rock, 2f);
            AddEffectiveness(ElementType.Water, ElementType.Dragon, 0.5f);
            AddEffectiveness(ElementType.Electric, ElementType.Water, 2f);
            AddEffectiveness(ElementType.Electric, ElementType.Electric, 0.5f);
            AddEffectiveness(ElementType.Electric, ElementType.Grass, 0.5f);
            AddEffectiveness(ElementType.Electric, ElementType.Ground, 0f);
            AddEffectiveness(ElementType.Electric, ElementType.Flying, 2f);
            AddEffectiveness(ElementType.Electric, ElementType.Dragon, 0f);
            AddEffectiveness(ElementType.Grass, ElementType.Fire, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Water, 2f);
            AddEffectiveness(ElementType.Grass, ElementType.Grass, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Poision, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Ground, 2f);
            AddEffectiveness(ElementType.Grass, ElementType.Flying, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Bug, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Dragon, 0.5f);
            AddEffectiveness(ElementType.Grass, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Ice, ElementType.Fire, 0.5f);
            AddEffectiveness(ElementType.Ice, ElementType.Water, 0.5f);
            AddEffectiveness(ElementType.Ice, ElementType.Grass, 2f);
            AddEffectiveness(ElementType.Ice, ElementType.Ice, 0.5f);
            AddEffectiveness(ElementType.Ice, ElementType.Ground, 2f);
            AddEffectiveness(ElementType.Ice, ElementType.Flying, 2f);
            AddEffectiveness(ElementType.Ice, ElementType.Dragon, 2f);
            AddEffectiveness(ElementType.Ice, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Fight, ElementType.Normal, 2f);
            AddEffectiveness(ElementType.Fight, ElementType.Ice, 2f);
            AddEffectiveness(ElementType.Fight, ElementType.Poision, 0.5f);
            AddEffectiveness(ElementType.Fight, ElementType.Flying, 0.5f);
            AddEffectiveness(ElementType.Fight, ElementType.Psychic, 0.5f);
            AddEffectiveness(ElementType.Fight, ElementType.Bug, 0.5f);
            AddEffectiveness(ElementType.Fight, ElementType.Rock, 2f);
            AddEffectiveness(ElementType.Fight, ElementType.Ghost, 0f);
            AddEffectiveness(ElementType.Fight, ElementType.Dark, 2f);
            AddEffectiveness(ElementType.Fight, ElementType.Steel, 2f);
            AddEffectiveness(ElementType.Poision, ElementType.Grass, 2f);
            AddEffectiveness(ElementType.Poision, ElementType.Poision, 0.5f);
            AddEffectiveness(ElementType.Poision, ElementType.Ground, 0.5f);
            AddEffectiveness(ElementType.Poision, ElementType.Rock, 0.5f);
            AddEffectiveness(ElementType.Poision, ElementType.Ghost, 0.5f);
            AddEffectiveness(ElementType.Poision, ElementType.Steel, 0f);
            AddEffectiveness(ElementType.Ground, ElementType.Fire, 2f);
            AddEffectiveness(ElementType.Ground, ElementType.Electric, 2f);
            AddEffectiveness(ElementType.Ground, ElementType.Grass, 0.5f);
            AddEffectiveness(ElementType.Ground, ElementType.Poision, 2f);
            AddEffectiveness(ElementType.Ground, ElementType.Flying, 0f);
            AddEffectiveness(ElementType.Ground, ElementType.Bug, 2f);
            AddEffectiveness(ElementType.Ground, ElementType.Rock, 0.5f);
            AddEffectiveness(ElementType.Ground, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Flying, ElementType.Electric, 0.5f);
            AddEffectiveness(ElementType.Flying, ElementType.Grass, 2f);
            AddEffectiveness(ElementType.Flying, ElementType.Fight, 2f);
            AddEffectiveness(ElementType.Flying, ElementType.Bug, 2f);
            AddEffectiveness(ElementType.Flying, ElementType.Rock, 0.5f);
            AddEffectiveness(ElementType.Flying, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Psychic, ElementType.Fight, 2f);
            AddEffectiveness(ElementType.Psychic, ElementType.Poision, 2f);
            AddEffectiveness(ElementType.Psychic, ElementType.Psychic, 0.5f);
            AddEffectiveness(ElementType.Psychic, ElementType.Dark, 0f);
            AddEffectiveness(ElementType.Psychic, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Bug, ElementType.Fire, 0.5f);
            AddEffectiveness(ElementType.Bug, ElementType.Grass, 2f);
            AddEffectiveness(ElementType.Bug, ElementType.Fight, 0.5f);
            AddEffectiveness(ElementType.Bug, ElementType.Flying, 0.5f);
            AddEffectiveness(ElementType.Bug, ElementType.Psychic, 2f);
            AddEffectiveness(ElementType.Bug, ElementType.Ghost, 0.5f);
            AddEffectiveness(ElementType.Bug, ElementType.Dark, 2f);
            AddEffectiveness(ElementType.Bug, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Rock, ElementType.Fire, 2f);
            AddEffectiveness(ElementType.Rock, ElementType.Ice, 2f);
            AddEffectiveness(ElementType.Rock, ElementType.Fight, 0.5f);
            AddEffectiveness(ElementType.Rock, ElementType.Ground, 0.5f);
            AddEffectiveness(ElementType.Rock, ElementType.Flying, 2f);
            AddEffectiveness(ElementType.Rock, ElementType.Bug, 2f);
            AddEffectiveness(ElementType.Rock, ElementType.Steel, 2f);
            AddEffectiveness(ElementType.Ghost, ElementType.Normal, 0f);
            AddEffectiveness(ElementType.Ghost, ElementType.Psychic, 2f);
            AddEffectiveness(ElementType.Ghost, ElementType.Ghost, 2f);
            AddEffectiveness(ElementType.Ghost, ElementType.Dark, 0.5f);
            AddEffectiveness(ElementType.Ghost, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Dragon, ElementType.Dragon, 2f);
            AddEffectiveness(ElementType.Dragon, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Dark, ElementType.Fight, 0.5f);
            AddEffectiveness(ElementType.Dark, ElementType.Psychic, 2f);
            AddEffectiveness(ElementType.Dark, ElementType.Ghost, 2f);
            AddEffectiveness(ElementType.Dark, ElementType.Dark, 0.5f);
            AddEffectiveness(ElementType.Dark, ElementType.Steel, 0.5f);
            AddEffectiveness(ElementType.Steel, ElementType.Fire, 0.5f);
            AddEffectiveness(ElementType.Steel, ElementType.Water, 0.5f);
            AddEffectiveness(ElementType.Steel, ElementType.Electric, 0.5f);
            AddEffectiveness(ElementType.Steel, ElementType.Ice, 2f);
            AddEffectiveness(ElementType.Steel, ElementType.Rock, 2f);
            AddEffectiveness(ElementType.Steel, ElementType.Steel, 0.5f);
        }