Updated Pokemon Entity to Accept Skills, SleepStyles, configuring Types with Berries
This commit is contained in:
parent
8d436e659a
commit
2de78488a9
|
|
@ -13,11 +13,14 @@ namespace Portfolio.Domain.Features.Pokemon
|
|||
public required string PokemonName { get; set; }
|
||||
public bool IsVariation { get; set; } = false;
|
||||
public string? VariationName { get; set; }
|
||||
public string? PokemonType { get; set; }
|
||||
public required string PokemonType { get; set; }
|
||||
public required string SleepType { get; set; }
|
||||
public required string Speciality { get; set; }
|
||||
public string? Skill { get; set; }
|
||||
public string? SkillDescription { get; set; }
|
||||
public string? PokemonImageUrl { get; set; }
|
||||
public string? PokemonShinyImageUrl { get; set; }
|
||||
public string[]? PokemonSleepStyleImageUrls { get; set; }
|
||||
public string? FlavorText { get; set; }
|
||||
public string? Ingredient1 { get; set; }
|
||||
public string? Ingredient2 { get; set; }
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
using Portfolio.Domain.Features.Abstractions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Portfolio.Domain.Features.Pokemon
|
||||
{
|
||||
public class PokemonType : Entity
|
||||
{
|
||||
public string Type { get; set; }
|
||||
public string TypeImageUrl { get; set; }
|
||||
public string Berry { get; set; }
|
||||
public string BerryDescription { get; set; }
|
||||
public string BerryImageUrl { get; set; }
|
||||
}
|
||||
}
|
||||
149
Portfolio.Infrastructure/Migrations/20251205171834_updatePokemonAddBerry+Skill+SleepStyles.Designer.cs
generated
Normal file
149
Portfolio.Infrastructure/Migrations/20251205171834_updatePokemonAddBerry+Skill+SleepStyles.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
// <auto-generated />
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using Portfolio.Infrastructure;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Portfolio.Infrastructure.Migrations
|
||||
{
|
||||
[DbContext(typeof(ApplicationDbContext))]
|
||||
[Migration("20251205171834_updatePokemonAddBerry+Skill+SleepStyles")]
|
||||
partial class updatePokemonAddBerrySkillSleepStyles
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "9.0.2")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||
|
||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("Portfolio.Domain.Features.Pokemon.Pokemon", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("FlavorText")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Ingredient1")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Ingredient2")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Ingredient3")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<bool>("IsVariation")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("PokemonBerry")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<int>("PokemonId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("PokemonImageUrl")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("PokemonName")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("PokemonShinyImageUrl")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.PrimitiveCollection<string>("PokemonSleepStyleImageUrls")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("PokemonType")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Skill")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("SkillDescription")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("SleepType")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Speciality")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("VariationName")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Pokemons");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Portfolio.Domain.Features.Pokemon_Natures.PokemonNature", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("BerryRating")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("IngredientRating")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Nature")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<int>("SkillRating")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("PokemonNatures");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Portfolio.Domain.Features.Pokemon_Subskills.PokemonSubskill", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("BerryRank")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("IngredientRank")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("SkillRank")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("SubSkill")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("PokemonSubskills");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Portfolio.Infrastructure.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class updatePokemonAddBerrySkillSleepStyles : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "PokemonType",
|
||||
table: "Pokemons",
|
||||
type: "nvarchar(max)",
|
||||
nullable: false,
|
||||
defaultValue: "",
|
||||
oldClrType: typeof(string),
|
||||
oldType: "nvarchar(max)",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "PokemonBerry",
|
||||
table: "Pokemons",
|
||||
type: "nvarchar(max)",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "PokemonSleepStyleImageUrls",
|
||||
table: "Pokemons",
|
||||
type: "nvarchar(max)",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "Skill",
|
||||
table: "Pokemons",
|
||||
type: "nvarchar(max)",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "SkillDescription",
|
||||
table: "Pokemons",
|
||||
type: "nvarchar(max)",
|
||||
nullable: true);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "PokemonBerry",
|
||||
table: "Pokemons");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "PokemonSleepStyleImageUrls",
|
||||
table: "Pokemons");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "Skill",
|
||||
table: "Pokemons");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "SkillDescription",
|
||||
table: "Pokemons");
|
||||
|
||||
migrationBuilder.AlterColumn<string>(
|
||||
name: "PokemonType",
|
||||
table: "Pokemons",
|
||||
type: "nvarchar(max)",
|
||||
nullable: true,
|
||||
oldClrType: typeof(string),
|
||||
oldType: "nvarchar(max)");
|
||||
}
|
||||
}
|
||||
}
|
||||
146
Portfolio.Infrastructure/Migrations/20251205172848_updatePokemonRemovedBerry.Designer.cs
generated
Normal file
146
Portfolio.Infrastructure/Migrations/20251205172848_updatePokemonRemovedBerry.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
// <auto-generated />
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using Portfolio.Infrastructure;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Portfolio.Infrastructure.Migrations
|
||||
{
|
||||
[DbContext(typeof(ApplicationDbContext))]
|
||||
[Migration("20251205172848_updatePokemonRemovedBerry")]
|
||||
partial class updatePokemonRemovedBerry
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "9.0.2")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||
|
||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("Portfolio.Domain.Features.Pokemon.Pokemon", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("FlavorText")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Ingredient1")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Ingredient2")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Ingredient3")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<bool>("IsVariation")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<int>("PokemonId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("PokemonImageUrl")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("PokemonName")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("PokemonShinyImageUrl")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.PrimitiveCollection<string>("PokemonSleepStyleImageUrls")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("PokemonType")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Skill")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("SkillDescription")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("SleepType")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Speciality")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("VariationName")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Pokemons");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Portfolio.Domain.Features.Pokemon_Natures.PokemonNature", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("BerryRating")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("IngredientRating")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Nature")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<int>("SkillRating")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("PokemonNatures");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Portfolio.Domain.Features.Pokemon_Subskills.PokemonSubskill", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("BerryRank")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("IngredientRank")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("SkillRank")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("SubSkill")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("PokemonSubskills");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Portfolio.Infrastructure.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class updatePokemonRemovedBerry : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "PokemonBerry",
|
||||
table: "Pokemons");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "PokemonBerry",
|
||||
table: "Pokemons",
|
||||
type: "nvarchar(max)",
|
||||
nullable: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -57,7 +57,17 @@ namespace Portfolio.Infrastructure.Migrations
|
|||
b.Property<string>("PokemonShinyImageUrl")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.PrimitiveCollection<string>("PokemonSleepStyleImageUrls")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("PokemonType")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Skill")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("SkillDescription")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("SleepType")
|
||||
|
|
|
|||
|
|
@ -59,9 +59,9 @@ else
|
|||
<span for="PokemonType" class="input-group-text rounded-start">Pokemon Type</span>
|
||||
<InputSelect id="PokemonType" @bind-Value="NewPokemon.PokemonType" @onchange="@SendPokemon" class="form-select rounded-end">
|
||||
<option disabled value="" selected>Select...</option>
|
||||
@foreach (var pt in PokemonTypes)
|
||||
@foreach (var pt in PkmnTypes)
|
||||
{
|
||||
<option value="@pt">@pt</option>
|
||||
<option value="@pt.Type">@pt.Type</option>
|
||||
}
|
||||
</InputSelect>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ namespace Portfolio.WebUI.Server.Components.Component.Pokemon_Components
|
|||
{
|
||||
PokemonId = 0, // Or any default ID logic
|
||||
PokemonName = string.Empty, // Required fields cannot be null
|
||||
PokemonType = string.Empty, // Required fields cannot be null
|
||||
SleepType = string.Empty,
|
||||
Speciality = string.Empty,
|
||||
IsVariation = false
|
||||
|
|
@ -49,7 +50,7 @@ namespace Portfolio.WebUI.Server.Components.Component.Pokemon_Components
|
|||
protected static readonly string[] Specialities = new[] { "Berries", "Ingredients", "Skills", "All" };
|
||||
|
||||
private List<Ingredient>? Ingredients;
|
||||
|
||||
private List<PokemonType>? PkmnTypes;
|
||||
private bool HideLabel { get; set; }
|
||||
private bool showErrors { get; set; } = false;
|
||||
|
||||
|
|
@ -58,7 +59,14 @@ namespace Portfolio.WebUI.Server.Components.Component.Pokemon_Components
|
|||
{
|
||||
var http = ClientFactory.CreateClient("LocalClient");
|
||||
Ingredients = await http.GetFromJsonAsync<List<Ingredient>>("data/ingredients.json");
|
||||
|
||||
PkmnTypes = await http.GetFromJsonAsync<List<PokemonType>>("data/pkmn_type-and-berries.json");
|
||||
var count = 0;
|
||||
foreach (var t in PkmnTypes)
|
||||
{
|
||||
count++;
|
||||
//if (count <= 9) { Console.WriteLine("0"+ count + ": | " + t.Type + "\t| " + t.Berry); }
|
||||
//else { Console.WriteLine(count + ": | " + t.Type + "\t| " + t.Berry); }
|
||||
}
|
||||
if (formUse == "EDIT")
|
||||
{
|
||||
if (PokemonToEdit.IsVariation == true)
|
||||
|
|
|
|||
|
|
@ -25,11 +25,12 @@ namespace Portfolio.WebUI.Server.Components.Pages.Pokemon_Pages
|
|||
TogglePokemon2FormView();
|
||||
|
||||
}
|
||||
|
||||
// Create up to 3 Pokemon
|
||||
private Pokemon pokemon1 = new Pokemon
|
||||
{
|
||||
PokemonId = 0, // Or any default ID logic
|
||||
PokemonName = string.Empty, // Required fields cannot be null
|
||||
PokemonType = string.Empty,
|
||||
SleepType = string.Empty,
|
||||
Speciality = string.Empty,
|
||||
IsVariation = false
|
||||
|
|
@ -38,6 +39,7 @@ namespace Portfolio.WebUI.Server.Components.Pages.Pokemon_Pages
|
|||
{
|
||||
PokemonId = 0, // Or any default ID logic
|
||||
PokemonName = string.Empty, // Required fields cannot be null
|
||||
PokemonType = string.Empty,
|
||||
SleepType = string.Empty,
|
||||
Speciality = string.Empty,
|
||||
IsVariation = false
|
||||
|
|
@ -46,6 +48,7 @@ namespace Portfolio.WebUI.Server.Components.Pages.Pokemon_Pages
|
|||
{
|
||||
PokemonId = 0, // Or any default ID logic
|
||||
PokemonName = string.Empty, // Required fields cannot be null
|
||||
PokemonType = string.Empty,
|
||||
SleepType = string.Empty,
|
||||
Speciality = string.Empty,
|
||||
IsVariation = false
|
||||
|
|
|
|||
|
|
@ -1,111 +1,129 @@
|
|||
[
|
||||
{
|
||||
"type": "Grass",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/grass.png",
|
||||
"berry": "Durin",
|
||||
"description": "This Berry is tremendously bitter. Just one bite is enough to instantly stop hiccups.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/durinberry.png"
|
||||
"berryDescription": "This Berry is tremendously bitter. Just one bite is enough to instantly stop hiccups.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/durinberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Fire",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/fire.png",
|
||||
"berry": "Leppa",
|
||||
"description": "It takes longer to grow than Berries such as Cheri. The smaller Berries taste better.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/leppaberry.png"
|
||||
"berryDescription": "It takes longer to grow than Berries such as Cheri. The smaller Berries taste better.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/leppaberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Water",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/water.png",
|
||||
"berry": "Oran",
|
||||
"description": "Nature's gifts came together as one in this Berry. It has a wondrous mix of flavors that spread in the mouth.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/oranberry.png"
|
||||
"berryDescription": "Nature's gifts came together as one in this Berry. It has a wondrous mix of flavors that spread in the mouth.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/oranberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Normal",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/normal.png",
|
||||
"berry": "Persim",
|
||||
"description": "The more this Berry absorbs energy from sunlight, the more vividly colorful it grows.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/persimberry.png"
|
||||
"berryDaescription": "The more this Berry absorbs energy from sunlight, the more vividly colorful it grows.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/persimberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Flying",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/flying.png",
|
||||
"berry": "Pamtre",
|
||||
"description": "This Berry drifted from a faraway sea. It can now be cultivated even on this island.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/pamtreberry.png"
|
||||
"berryDescription": "This Berry drifted from a faraway sea. It can now be cultivated even on this island.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/pamtreberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Bug",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/bug.png",
|
||||
"berry": "Lum",
|
||||
"description": "This Berry's gradual process of storing nutrients beneficial to Pok<6F>mon health causes it to mature slowly.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/lumberry.png"
|
||||
"berryDescription": "This Berry's gradual process of storing nutrients beneficial to Pok<6F>mon health causes it to mature slowly.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/lumberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Poison",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/poison.png",
|
||||
"berry": "Chesto",
|
||||
"description": "This Berry's thick skin and fruit are very tough and dry-tasting. However, every bit of it can be eaten.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/chestoberry.png"
|
||||
"berryDescription": "This Berry's thick skin and fruit are very tough and dry-tasting. However, every bit of it can be eaten.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/chestoberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Electric",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/electric.png",
|
||||
"berry": "Grepa",
|
||||
"description": "One bite of this very tender Berry fills the mouth with its sweet and tangy flavor.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/grepaberry.png"
|
||||
"berryDescription": "One bite of this very tender Berry fills the mouth with its sweet and tangy flavor.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/grepaberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Ground",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/ground.png",
|
||||
"berry": "Figy",
|
||||
"description": "This Berry is oddly shaped, appearing as if someone took a bite out of it. It's packed full of spicy substances.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/figyberry.png"
|
||||
"berryDescription": "This Berry is oddly shaped, appearing as if someone took a bite out of it. It's packed full of spicy substances.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/figyberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Rock",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/rock.png",
|
||||
"berry": "Sitrus",
|
||||
"description": "Sitrus came from the same family as Oran. It's larger and smoother- tasting than Oran.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/sitrusberry.png"
|
||||
"berryDescription": "Sitrus came from the same family as Oran. It's larger and smoother- tasting than Oran.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/sitrusberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Ice",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/ice.png",
|
||||
"berry": "Rawst",
|
||||
"description": "If the leaves grow longer and curlier than average, this Berry will have a somewhat bitter taste.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/rawstberry.png"
|
||||
"berryDescription": "If the leaves grow longer and curlier than average, this Berry will have a somewhat bitter taste.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/rawstberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Steel",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/steel.png",
|
||||
"berry": "Belue",
|
||||
"description": "This glossy and colorful Berry has a mouthwateringly delicious appearance. However, it's awfully sour.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/belueberry.png"
|
||||
"berryDescription": "This glossy and colorful Berry has a mouthwateringly delicious appearance. However, it's awfully sour.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/belueberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Fighting",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/fighting.png",
|
||||
"berry": "Cheri",
|
||||
"description": "This bright red Berry is very spicy and has a provocative flavor. It blooms with delicate, pretty flowers.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/cheriberry.png"
|
||||
"berryDescription": "This bright red Berry is very spicy and has a provocative flavor. It blooms with delicate, pretty flowers.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/cheriberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Psychic",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/psychic.png",
|
||||
"berry": "Mago",
|
||||
"description": "This Berry progressively curves as it grows. The curvier the Berry, the sweeter it tastes.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/magoberry.png"
|
||||
"berryDescription": "This Berry progressively curves as it grows. The curvier the Berry, the sweeter it tastes.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/magoberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Dark",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/dark.png",
|
||||
"berry": "Wiki",
|
||||
"description": "It's said that this Berry grew lumps to help Pok<6F>mon grip it, allowing propagation farther afield.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/wikiberry.png"
|
||||
"berryDescription": "It's said that this Berry grew lumps to help Pok<6F>mon grip it, allowing propagation farther afield.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/wikiberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Fairy",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/fairy.png",
|
||||
"berry": "Pecha",
|
||||
"description": "Because of its hollow inside pocket, there isn't a lot to eat. What can be eaten is very sweet and delicious.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/pechaberry.png"
|
||||
"berryDescription": "Because of its hollow inside pocket, there isn't a lot to eat. What can be eaten is very sweet and delicious.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/pechaberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Ghost",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/ghost.png",
|
||||
"berry": "Bluk",
|
||||
"description": "Though this small, delicately skinned Berry is blue in color, it dyes the mouth black when eaten.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/blukberry.png"
|
||||
"berryDescription": "Though this small, delicately skinned Berry is blue in color, it dyes the mouth black when eaten.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/blukberry.png"
|
||||
},
|
||||
{
|
||||
"type": "Dragon",
|
||||
"typeImageUrl": "https://www.serebii.net/pokemonsleep/pokemon/type/dragon.png",
|
||||
"berry": "Yache",
|
||||
"description": "This Berry has a refreshing flavor that strikes a good balance of dryness and sourness. It tastes better chilled.",
|
||||
"imageURL": "https://www.serebii.net/pokemonsleep/berries/yacheberry.png"
|
||||
"berryDescription": "This Berry has a refreshing flavor that strikes a good balance of dryness and sourness. It tastes better chilled.",
|
||||
"berryImageURL": "https://www.serebii.net/pokemonsleep/berries/yacheberry.png"
|
||||
}
|
||||
|
||||
]
|
||||
Loading…
Reference in New Issue