private void SetMoveSetIcons()
 {
     for (int i = 0; i < moveSetIcons.Length; i++)
     {
         Image         iconBoxImage = moveSetIcons[i].GetComponent <Image>();
         Image         iconImage    = moveSetIcons[i].transform.Find("Icon").GetComponent <Image>();
         CombatMoveSet moveSet      = creature.stances[creature.stanceId].combatMoveSets[i];
         if (moveSet != null)
         {
             iconImage.sprite = moveSetIconSprites[moveSet.iconIndex];
             iconImage.color  = new Color(1f, 1f, 1f, 1f);
             if (moveSet.IsDisabled())
             {
                 iconBoxImage.sprite = moveSetIconBoxSpriteDisabled;
             }
             else if (i == GetHighlightedIconIndex())
             {
                 iconBoxImage.sprite = moveSetIconBoxSpriteHighlighted;
             }
             else
             {
                 iconBoxImage.sprite = moveSetIconBoxSprite;
             }
         }
         else
         {
             iconBoxImage.sprite = moveSetIconBoxSpritePressed;
             iconImage.color     = new Color(1f, 1f, 1f, 0f);
         }
     }
 }
    private CombatMoveSet GetSelectedMoveSet()
    {
        CombatMoveSet moveSet     = null;
        int           actionIndex = 0;

        for (int i = 0; i < 4; i++)
        {
            if (control.actionModifier[i])
            {
                actionIndex = i + 1;
                break;
            }
        }
        if (control.shift)
        {
            actionIndex += 5;
        }
        moveSet = stances[stanceId].combatMoveSets[actionIndex];
        return(moveSet);
    }
    void SetStance()
    {
        CombatMoveSet cms;
        CombatStance  stance1 = new CombatStance();

        if (speciesId == 0)          //TO DO
        //get rid of this check and just handle it correctly
        {
            cms           = new CombatMoveSet();
            cms.iconIndex = 0;
            cms.moves.Add(segments[1].limbs[0].combatActions[0]);            //right major tentacle
            cms.moves.Add(segments[1].limbs[1].combatActions[0]);            //left major tentacle
            stance1.combatMoveSets[0] = cms;

            cms           = new CombatMoveSet();
            cms.iconIndex = 1;
            cms.moves.Add(segments[1].limbs[2].combatActions[0]);            //bite
            stance1.combatMoveSets[1] = cms;
        }

        stances.Add(stance1);
    }
Esempio n. 4
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);
        }