예제 #1
0
        private void SetPokemon()
        {
            var entry = Controller.ActivePlayer.HallOfFame[_index];
            var data  = PokemonSaveData.GenerateNew();

            data.dv         = entry.dv;
            data.id         = entry.id;
            data.nickname   = entry.nickname;
            data.experience = entry.experience;
            _pokemon        = Pokemon.Get(data);
        }
예제 #2
0
        public static Pokemon Get(int id, int level)
        {
            // generate save data
            var saveData = PokemonSaveData.GenerateNew();

            saveData.id = id;
            var p = Get(saveData);

            p.Experience = PokemonStatHelper.GetExperienceForLevel(p._data.ExperienceType, level);
            p.HP         = p.MaxHP;

            // learn moves up to level
            var moves = p._data.moves
                        .Where(m => !m.breeding && !m.tm && m.level <= level)
                        .Select(m => m.ToPokemonMoveData());
            var learned = p._saveData.moves.ToList();
            var i       = learned.Count;

            if (i == MAX_MOVES)
            {
                i = 0;
            }
            foreach (var learnMove in moves)
            {
                if (learned.All(m => m.name != learnMove.name))
                {
                    if (learned.Count < MAX_MOVES)
                    {
                        learned.Add(learnMove);
                    }
                    else
                    {
                        learned[i] = learnMove;
                    }
                    i++;
                    if (i == MAX_MOVES)
                    {
                        i = 0;
                    }
                }
            }
            p._saveData.moves = learned.ToArray();

            return(p);
        }