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); }
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); }
public override void RemoveFrom(PokeEntity illPokemon) { if (TurnCounter != 0) { return; } TurnCounter = MAX_TURNS; illPokemon.RemoveAilment(this.Name); }
public override void RemoveFrom(PokeEntity illPokemon) { if (TurnCounter != 0) { return; } illPokemon.CurrentAilments.Remove(this.Name); TurnCounter = MAX_TURNS; illPokemon.SetDisabled(false); }
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); }
public override void ApplyAilment(PokeEntity receiver) { if (TurnCounter > 0) { int damage = (int)(receiver.GetStats().MaxHP *(DAMAGE)); receiver.TakeDamage(damage); TurnCounter--; } else { RemoveFrom(receiver); } }
public override void ApplyAilment(PokeEntity receiver) { if (TurnCounter > 0) { int damage = (int)healthLeeched(receiver); receiver.TakeDamage(damage); TurnCounter--; } else { RemoveFrom(receiver); } }
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); }
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); }
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); }
public float GetDamage(PokeEntity illPokemon) { return(illPokemon.Stats.MaxHP * PercentageOfHealth); }
public abstract void RemoveFrom(PokeEntity illPokemon);
public void RewardLosingPokemonExperience(PokeEntity loser) { CurrentPokemon.Stats.GainHalfExperience(loser); }
public void InitializeCurrentPokemon(PokemonForReturnDto pokemonForReturn, PokeTypeForReturnDto pokeType, Move[] moves, int id) { CurrentPokemon = new PokeEntity(id, pokemonForReturn, pokeType, moves); }
private PokeBattleStates DetermineFirstTurn(PokeEntity playerOne, PokeEntity playerTwo) { return(playerOne.Stats.Skills["speed"].Value >= playerTwo.Stats.Skills["speed"].Value ? PokeBattleStates.PLAYER_ONE : PokeBattleStates.PLAYER_TWO); }
public abstract void ApplyAilment(PokeEntity receiver);