Beispiel #1
0
        public async Task Detail(int id)
        {
            var user = Context.Message.Author;

            if (!(await _userController.UserExists(user.Id)))
            {
                await RegisterUser(user);
                await ReplyAsync($"Your inventory is empty. Go catch some pokemon!");

                return;
            }

            var userData = await _userController.GetUserByDiscordId(user.Id);

            if (!userData.PokeCollection.Any(x => x.Id == id))
            {
                return;
            }

            var pokemonForReturn  = userData.PokeCollection.FirstOrDefault(x => x.Id == id);
            var pokeTypeForReturn = await _pokemonController.GetPokeType(pokemonForReturn.Type);

            var moves = await GetMovesFromIds(pokemonForReturn.MoveIds);

            var pokemon = new PokeEntity(id, pokemonForReturn, pokeTypeForReturn, moves);

            var embeddedMessage = EmbeddedMessageUtil.CreatePokemonDetailEmbed(Context.Client.CurrentUser, pokemon);
            await user.SendMessageAsync(embed : embeddedMessage);
        }
Beispiel #2
0
        private string CreateEffectLogMessage(Move move, PokeEntity attacker, PokeEntity defender)
        {
            if (move.StatChangeName == "none")
            {
                return("");
            }
            var logMessage = "";

            if (move.TargetsOther)
            {
                logMessage += $"|{defender.Name}'s {move.StatChangeName} ";
            }
            else
            {
                logMessage += $"|{attacker.Name}'s {move.StatChangeName} ";
            }
            if (move.StatChangeValue > 0)
            {
                logMessage += "rose!\n";
            }
            else
            {
                logMessage += "fell!\n";
            }

            return(logMessage);
        }
Beispiel #3
0
 public override void RemoveFrom(PokeEntity illPokemon)
 {
     if (TurnCounter != 0)
     {
         return;
     }
     TurnCounter = MAX_TURNS;
     illPokemon.RemoveAilment(this.Name);
 }
Beispiel #4
0
 public override void RemoveFrom(PokeEntity illPokemon)
 {
     if (TurnCounter != 0)
     {
         return;
     }
     illPokemon.CurrentAilments.Remove(this.Name);
     TurnCounter = MAX_TURNS;
     illPokemon.SetDisabled(false);
 }
Beispiel #5
0
 public override void ApplyAilment(PokeEntity receiver)
 {
     if (TurnCounter > 0)
     {
         receiver.SetDisabled(true);
         TurnCounter--;
     }
     else
     {
         RemoveFrom(receiver);
     }
 }
        private static string GetPokemonHealthBar(PokeEntity pokemon)
        {
            var    percent            = (pokemon.Stats.HP / pokemon.Stats.MaxHP) * 10; // multiply by 10 for nice round numbers
            string healthBar          = "|";
            int    numberOfHealthBars = (int)percent;

            for (; numberOfHealthBars > 0; numberOfHealthBars--)
            {
                healthBar += "█ ";
            }
            return(healthBar);
        }
Beispiel #7
0
 public override void ApplyAilment(PokeEntity receiver)
 {
     if (TurnCounter > 0)
     {
         int damage = (int)(receiver.GetStats().MaxHP *(DAMAGE));
         receiver.TakeDamage(damage);
         TurnCounter--;
     }
     else
     {
         RemoveFrom(receiver);
     }
 }
Beispiel #8
0
 public override void ApplyAilment(PokeEntity receiver)
 {
     if (TurnCounter > 0)
     {
         int damage = (int)healthLeeched(receiver);
         receiver.TakeDamage(damage);
         TurnCounter--;
     }
     else
     {
         RemoveFrom(receiver);
     }
 }
Beispiel #9
0
 public override void ApplyAilment(PokeEntity receiver)
 {
     if (TurnCounter > 0)
     {
         receiver.SetDisabled(true);
         var damage = receiver.GetStats().MaxHP *PercentageOfHealth;
         receiver.TakeDamage((int)damage);
         TurnCounter--;
     }
     else
     {
         RemoveFrom(receiver);
     }
 }
        public static Embed CreatePokemonDetailEmbed(SocketSelfUser self, PokeEntity pokemon)
        {
            var pokemonStats = pokemon.Stats.ToString();

            return(new EmbedBuilder()
                   .WithAuthor(self)
                   .WithColor(Color.Red)
                   .WithTitle($"🎴 POKÉDEX")
                   .WithThumbnailUrl(pokemon.FrontSpriteUrl)
                   .WithDescription($"▼**{pokemon.Name.ToUpper()}**\n{pokemonStats}\n\n ►► Moves ◄◄ \n 1.) {pokemon.Moves[0].Name}\n2.) {pokemon.Moves[1].Name}\n3.) {pokemon.Moves[2].Name}\n4.) {pokemon.Moves[3].Name}")
                   .WithFooter(footer => footer.Text = "Detailed at ")
                   .WithCurrentTimestamp()
                   .Build());
        }
        private static EmbedFieldBuilder CreateFieldForPokemonCard(PokeEntity pokemon)
        {
            var fieldBuilder = new EmbedFieldBuilder()
                               .WithName($"{pokemon.Name.ToUpper()}")
                               .WithValue(
                $"► Lv. {pokemon.Stats.Level}\n" +
                $"► `{pokemon.PokeType.Name}`\n" +
                $"► {(int)pokemon.Stats.MaxHP} / {(int)pokemon.Stats.MaxHP} HP\n" +
                $"► {pokemon.Stats.Experience} / {Math.Pow(pokemon.Stats.Level + 1, 3)}\n" +
                $"1. {pokemon.Moves[0].Name}\n2. {pokemon.Moves[1].Name}\n3. {pokemon.Moves[2].Name}\n4. {pokemon.Moves[3].Name}"
                )
                               .WithIsInline(true);

            return(fieldBuilder);
        }
Beispiel #12
0
 public async Task UpdateUserPokemon(PokeEntity pokemon)
 {
     PokemonForUpdateDto pokemonForUpdate = new PokemonForUpdateDto
     {
         Name           = pokemon.Name,
         MaxHP          = pokemon.Stats.MaxHP,
         Level          = pokemon.Stats.Level,
         Experience     = pokemon.Stats.Experience,
         Attack         = pokemon.Stats.Skills["attack"].Value,
         Defense        = pokemon.Stats.Skills["defense"].Value,
         SpecialAttack  = pokemon.Stats.Skills["special-attack"].Value,
         SpecialDefense = pokemon.Stats.Skills["special-defense"].Value,
         Speed          = pokemon.Stats.Skills["speed"].Value
     };
     await _pokemonController.UpdatePokemon(pokemon.Id, pokemonForUpdate);
 }
Beispiel #13
0
        public void GainHalfExperience(PokeEntity loser)
        {
            // Based on the formula for XP gain for a pokemon -- for more info see: https://bulbapedia.bulbagarden.net/wiki/Experience#Experience_gain_in_battle
            float a = 1.5f;
            float b = loser.Stats.Base_Experience;
            float e = 1f;
            float f = 1f;
            float L = loser.Stats.Level;
            float p = 1f;
            float s = 1f;
            float t = 1f;
            float v = 1f;

            float numerator   = a * t * b * e * L * p * f * v;
            float denominator = 7 * s;

            int gain = (int)(numerator / denominator);

            System.Console.WriteLine($"EXP GAIN: {gain}");
            this.Experience += (gain / 2);
        }
Beispiel #14
0
 public float GetDamage(PokeEntity illPokemon)
 {
     return(illPokemon.Stats.MaxHP * PercentageOfHealth);
 }
Beispiel #15
0
 public abstract void RemoveFrom(PokeEntity illPokemon);
Beispiel #16
0
 public void RewardLosingPokemonExperience(PokeEntity loser)
 {
     CurrentPokemon.Stats.GainHalfExperience(loser);
 }
Beispiel #17
0
 public void InitializeCurrentPokemon(PokemonForReturnDto pokemonForReturn, PokeTypeForReturnDto pokeType, Move[] moves, int id)
 {
     CurrentPokemon = new PokeEntity(id, pokemonForReturn, pokeType, moves);
 }
Beispiel #18
0
 private PokeBattleStates DetermineFirstTurn(PokeEntity playerOne, PokeEntity playerTwo)
 {
     return(playerOne.Stats.Skills["speed"].Value >= playerTwo.Stats.Skills["speed"].Value ? PokeBattleStates.PLAYER_ONE
         : PokeBattleStates.PLAYER_TWO);
 }
Beispiel #19
0
 public abstract void ApplyAilment(PokeEntity receiver);