protected static bool TryParseNonVolatileStatusCondition(string input,
                                                                 out PokemonInstance.NonVolatileStatusCondition nvsc,
                                                                 out string invalidityMessage)
        {
            PokemonInstance.NonVolatileStatusCondition?value = input switch
            {
                "none" => PokemonInstance.NonVolatileStatusCondition.None,
                "burnt" => PokemonInstance.NonVolatileStatusCondition.Burn,
                "frozen" => PokemonInstance.NonVolatileStatusCondition.Frozen,
                "paralysed" => PokemonInstance.NonVolatileStatusCondition.Paralysed,
                "poisoned" => PokemonInstance.NonVolatileStatusCondition.Poisoned,
                "badlypoisoned" => PokemonInstance.NonVolatileStatusCondition.BadlyPoisoned,
                "asleep" => PokemonInstance.NonVolatileStatusCondition.Asleep,
                _ => null
            };

            if (value == null)
            {
                nvsc = PokemonInstance.NonVolatileStatusCondition.None;
                invalidityMessage = "Invalid status condition provided";
                return(false);
            }

            nvsc = (PokemonInstance.NonVolatileStatusCondition)value;
            invalidityMessage = "";
            return(true);
        }
Beispiel #2
0
        public void SetValues(string name,
                              Sprite icon,
                              float healthBarValue,
                              PokemonInstance.NonVolatileStatusCondition statusCondition,
                              bool hasHeldItem)
        {
            if (healthBarValue < 0 || healthBarValue > 1)
            {
                Debug.LogError("Health bar value provided out of range");
            }

            textName.text    = name;
            imageIcon.sprite = icon;
            healthBar.UpdateBar(healthBarValue);

            if (statusCondition == PokemonInstance.NonVolatileStatusCondition.None)
            {
                imageStatusCondition.gameObject.SetActive(false);
            }
            else
            {
                imageStatusCondition.gameObject.SetActive(true);
                imageStatusCondition.sprite = SpriteStorage.GetNonVolatileStatusConditionSprite(statusCondition);
            }

            imageHeldItem.enabled = hasHeldItem;
        }
Beispiel #3
0
 public void UpdateNonVolatileStatsCondition(PokemonInstance.NonVolatileStatusCondition nvsc)
 {
     if (nvsc == PokemonInstance.NonVolatileStatusCondition.None)
     {
         imageNonVolatileStatusCondition.gameObject.SetActive(false);
     }
     else
     {
         imageNonVolatileStatusCondition.gameObject.SetActive(true);
         imageNonVolatileStatusCondition.sprite = SpriteStorage.GetNonVolatileStatusConditionSprite(nvsc);
     }
 }
Beispiel #4
0
    public static Sprite GetNonVolatileStatusConditionSprite(PokemonInstance.NonVolatileStatusCondition nvsc)
    {
        if (nvsc == PokemonInstance.NonVolatileStatusCondition.None)
        {
            return(null);
        }

        if (!nonVolatileStatusConditionResourceNames.ContainsKey(nvsc))
        {
            Debug.LogWarning("No resource name found for NVSC " + nvsc);
            return(null);
        }

        string resourceName = statusConditionSpritePrefix + nonVolatileStatusConditionResourceNames[nvsc];

        return(GetSprite(SpriteType.BattleSprite,
                         resourceName));
    }
Beispiel #5
0
        /// <summary>
        /// Generate a PokemonInstance specifying many property values
        /// </summary>
        /// <returns>The PokemonInstance created</returns>
        public static PokemonInstance GenerateFull(
            int speciesId,
            int natureId,
            Stats <byte> effortValues,
            Stats <byte> individualValues,
            int[] _moves,
            byte[] movePPs,
            int experience,
            PokemonInstance.NonVolatileStatusCondition nonVolatileStatusCondition,
            PokemonInstance.BattleProperties battleProperties,
            Guid?_guid                 = null,
            string nickname            = "",
            Item heldItem              = null,
            int _health                = -1,
            bool?gender                = true,
            Stats <int> currentStats   = new Stats <int>(),                 //If all of these values are 0, they won't be used
            int pokeBallId             = PokemonInstance.defaultPokeBallId, //The poke ball id
            string originalTrainerName = "",
            Guid?_originalTrainerGuid  = null,
            bool cheatPokemon          = false,
            bool shinyPokemon          = false,
            long catchTime             = 0,
            byte?_friendship           = null // If this is null, the species' base friendship is used
            )
        {
            Guid guid = _guid == null?Guid.NewGuid() : (Guid)_guid;

            int[] moves = new int[4];

            //By default, the moves will be unset
            for (int i = 0; i < moves.Length; i++)
            {
                moves[i] = -1;
            }

            if (_moves.Length > 4)
            {
                Debug.LogWarning("Length of moves passed to GenerateFull was greater than 4");
                Array.Copy(_moves, moves, 4);
            }

            Array.Copy(_moves, moves, _moves.Length);

            Guid originalTrainerGuid = _originalTrainerGuid == null ? Guid.Empty : (Guid)_originalTrainerGuid;

            byte friendship = _friendship == null?PokemonSpecies.GetPokemonSpeciesById(speciesId).baseFriendship : (byte)_friendship;

            PokemonInstance instance = new PokemonInstance(individualValues)
            {
                speciesId    = speciesId,
                natureId     = natureId,
                effortValues = effortValues,
                moveIds      = moves,
                movePPs      = movePPs,
                experience   = experience,
                nonVolatileStatusCondition = nonVolatileStatusCondition,
                battleProperties           = battleProperties,
                guid                = guid,
                nickname            = nickname,
                heldItem            = heldItem,
                health              = _health > 0 ? _health : 1,
                gender              = gender,
                pokeBallId          = pokeBallId,
                originalTrainerName = originalTrainerName,
                originalTrainerGuid = originalTrainerGuid,
                cheatPokemon        = cheatPokemon,
                catchTime           = catchTime,
                friendship          = friendship
            };

            // Shininess
            instance.SetIsShiny(shinyPokemon);

            #region Setting Current Stats

            bool needToSetCurrentStats = false;

            foreach (Stats <int> .Stat stat in (Stats <int> .Stat[])Enum.GetValues(typeof(Stats <int> .Stat)))
            {
                if (currentStats.GetStat(stat) != 0)
                {
                    needToSetCurrentStats = true;
                    break;
                }
            }

            if (needToSetCurrentStats)
            {
                instance.SetCurrentStats(currentStats);
            }

            #endregion

            if (_health <= 0)
            {
                instance.RestoreFully();
            }

            return(instance);
        }
        /// <summary>
        /// Cheat command to inflict NVSC on an opponent pokemon. Negative party index means active pokemon
        /// </summary>
        public void CheatCommand_OpponentInflictNonVolatileStatusCondition(int partyIndex, PokemonInstance.NonVolatileStatusCondition nvsc)
        {
            PokemonInstance pokemon = partyIndex >= 0 ? battleData.participantOpponent.GetPokemon()[partyIndex] : battleData.participantOpponent.ActivePokemon;

            if (pokemon == null)
            {
                return;
            }
            pokemon.nonVolatileStatusCondition = nvsc;
            FullUpdateOpponentOverviewPane();
        }