public static PBELocalizedString GetStatName(PBEStat stat) { if (!Enum.IsDefined(typeof(PBEStat), stat)) { throw new ArgumentOutOfRangeException(nameof(stat)); } return(new PBELocalizedString(PBEUtils.QueryDatabase <SearchResult>(string.Format(QueryId, "StatNames", (byte)stat))[0])); }
public PBEPkmnStatChangedPacket(PBEPokemon pokemon, PBEStat stat, sbyte oldValue, sbyte newValue) { var bytes = new List <byte>(); bytes.AddRange(BitConverter.GetBytes(Code)); bytes.Add((byte)(Pokemon = pokemon.FieldPosition)); bytes.Add((PokemonTeam = pokemon.Team).Id); bytes.Add((byte)(Stat = stat)); bytes.Add((byte)(OldValue = oldValue)); bytes.Add((byte)(NewValue = newValue)); Buffer = BitConverter.GetBytes((short)bytes.Count).Concat(bytes); }
private static void ScoreStatChange(PBEPokemon user, PBEPokemon target, PBEStat stat, int change, ref double score) { // TODO: Do we need the stat change? Physical vs special vs status users, and base stats/transform stats/power trick stats sbyte original = target.GetStatChange(stat); sbyte maxStatChange = user.Team.Battle.Settings.MaxStatChange; change = Math.Max(-maxStatChange, Math.Min(maxStatChange, original + change)) - original; if (change != 0) { score += (user.Team == target.Team ? +1 : -1) * change * 10; score += HPAware(target.HPPercentage, -20, +10); } }
internal PBEPkmnStatChangedPacket(PBEPokemon pokemon, PBEStat stat, sbyte oldValue, sbyte newValue) { var bytes = new List <byte>(); bytes.AddRange(BitConverter.GetBytes(Code)); bytes.Add((byte)(Pokemon = pokemon.FieldPosition)); bytes.Add((PokemonTeam = pokemon.Team).Id); bytes.Add((byte)(Stat = stat)); bytes.Add((byte)(OldValue = oldValue)); bytes.Add((byte)(NewValue = newValue)); bytes.InsertRange(0, BitConverter.GetBytes((short)bytes.Count)); Buffer = new ReadOnlyCollection <byte>(bytes); }
public static PBEReadOnlyLocalizedString GetStatName(PBEStat stat) { if (!Enum.IsDefined(stat)) { throw new ArgumentOutOfRangeException(nameof(stat)); } List <SearchResult> results = PBEDefaultDataProvider.Instance.QueryDatabase <SearchResult>(string.Format(QueryId, "StatNames", stat)); if (results.Count == 1) { return(new PBEReadOnlyLocalizedString(results[0])); } throw new InvalidDataException(); }
internal PBEPkmnStatChangedPacket(PBEBattlePokemon pokemon, PBEStat stat, sbyte oldValue, sbyte newValue) { using (var ms = new MemoryStream()) using (var w = new EndianBinaryWriter(ms, encoding: EncodingType.UTF16)) { w.Write(Code); w.Write((PokemonTrainer = pokemon.Trainer).Id); w.Write(Pokemon = pokemon.FieldPosition); w.Write(Stat = stat); w.Write(OldValue = oldValue); w.Write(NewValue = newValue); Data = new ReadOnlyCollection <byte>(ms.ToArray()); } }
public static void SetStat(this IPBEStatCollection stats, PBEStat stat, byte value) { switch (stat) { case PBEStat.HP: stats.HP = value; break; case PBEStat.Attack: stats.Attack = value; break; case PBEStat.Defense: stats.Defense = value; break; case PBEStat.SpAttack: stats.SpAttack = value; break; case PBEStat.SpDefense: stats.SpDefense = value; break; case PBEStat.Speed: stats.Speed = value; break; default: throw new ArgumentOutOfRangeException(nameof(stat)); } }
public static byte GetStat(this IPBEReadOnlyStatCollection stats, PBEStat stat) { switch (stat) { case PBEStat.HP: return(stats.HP); case PBEStat.Attack: return(stats.Attack); case PBEStat.Defense: return(stats.Defense); case PBEStat.SpAttack: return(stats.SpAttack); case PBEStat.SpDefense: return(stats.SpDefense); case PBEStat.Speed: return(stats.Speed); default: throw new ArgumentOutOfRangeException(nameof(stat)); } }
public sbyte GetStatChange(PBEStat stat) { switch (stat) { case PBEStat.Attack: return(AttackChange); case PBEStat.Defense: return(DefenseChange); case PBEStat.SpAttack: return(SpAttackChange); case PBEStat.SpDefense: return(SpDefenseChange); case PBEStat.Speed: return(SpeedChange); case PBEStat.Accuracy: return(AccuracyChange); case PBEStat.Evasion: return(EvasionChange); default: throw new ArgumentOutOfRangeException(nameof(stat)); } }
public sbyte SetStatChange(PBEStat stat, int value) { sbyte val = (sbyte)PBEUtils.Clamp(value, -Team.Battle.Settings.MaxStatChange, Team.Battle.Settings.MaxStatChange); switch (stat) { case PBEStat.Accuracy: return(AccuracyChange = val); case PBEStat.Attack: return(AttackChange = val); case PBEStat.Defense: return(DefenseChange = val); case PBEStat.Evasion: return(EvasionChange = val); case PBEStat.SpAttack: return(SpAttackChange = val); case PBEStat.SpDefense: return(SpDefenseChange = val); case PBEStat.Speed: return(SpeedChange = val); default: throw new ArgumentOutOfRangeException(nameof(stat)); } }
public virtual IPBELocalizedString GetStatName(PBEStat stat) { return(PBELocalizedString.GetStatName(stat)); }
public byte this[PBEStat stat] { get => this.GetStat(stat);
public abstract IPBEReadOnlyLocalizedString GetStatName(PBEStat stat);