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]));
 }
예제 #2
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);
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        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));
            }
        }
예제 #9
0
        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));
            }
        }
예제 #10
0
        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));
            }
        }
예제 #11
0
 public virtual IPBELocalizedString GetStatName(PBEStat stat)
 {
     return(PBELocalizedString.GetStatName(stat));
 }
예제 #12
0
 public byte this[PBEStat stat]
 {
     get => this.GetStat(stat);
예제 #13
0
 public abstract IPBEReadOnlyLocalizedString GetStatName(PBEStat stat);