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); }
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; }
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); } }
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)); }
/// <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(); }