From ebdfb7b4cb1b802ec4786e0d14683d03ca17acd9 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Sun, 23 Apr 2023 18:40:21 -0400 Subject: [PATCH] Add items and ability to summary --- src/battle-scene.ts | 2 + src/data/ability.ts | 341 ++++++++++++++++++----------------- src/modifier/modifier.ts | 43 +++-- src/pokemon.ts | 5 + src/ui/summary-ui-handler.ts | 47 +++++ 5 files changed, 248 insertions(+), 190 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 1e5cfeccb..816b88eff 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -183,6 +183,8 @@ export default class BattleScene extends Phaser.Scene { this.loadImage('summary_moves_overlay_row', 'ui'); this.loadImage('summary_moves_overlay_pp', 'ui'); this.loadAtlas('summary_moves_cursor', 'ui'); + for (let t = 1; t <= 3; t++) + this.loadImage(`summary_tabs_${t}`, 'ui'); for (let o = 1; o <= 3; o++) this.loadImage(`option_select_window_${o}`, 'ui'); diff --git a/src/data/ability.ts b/src/data/ability.ts index 966432102..419a374de 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -187,174 +187,175 @@ export enum Abilities { } export const abilities = [ - new Ability(Abilities.AIR_LOCK, "Air Lock", "Eliminates the effects of weather.", 3), - new Ability(Abilities.ARENA_TRAP, "Arena Trap", "Prevents the foe from fleeing.", 3), - new Ability(Abilities.BATTLE_ARMOR, "Battle Armor", "The POKéMON is protected against critical hits.", 3), - new Ability(Abilities.BLAZE, "Blaze", "Powers up Fire-type moves in a pinch.", 3), - new Ability(Abilities.CHLOROPHYLL, "Chlorophyll", "Boosts the POKéMON's SPEED in sunshine.", 3), - new Ability(Abilities.CLEAR_BODY, "Clear Body", "Prevents other POKéMON from lowering its stats.", 3), - new Ability(Abilities.CLOUD_NINE, "Cloud Nine", "Eliminates the effects of weather.", 3), - new Ability(Abilities.COLOR_CHANGE, "Color Change", "Changes the POKéMON's type to the foe's move.", 3), - new Ability(Abilities.COMPOUND_EYES, "Compound Eyes", "The POKéMON's accuracy is boosted.", 3), - new Ability(Abilities.CUTE_CHARM, "Cute Charm", "Contact with the POKéMON may cause infatuation.", 3), - new Ability(Abilities.DAMP, "Damp", "Prevents the use of self-destructing moves.", 3), - new Ability(Abilities.DRIZZLE, "Drizzle", "The POKéMON makes it rain when it enters a battle.", 3), - new Ability(Abilities.DROUGHT, "Drought", "Turns the sunlight harsh when the POKéMON enters a battle.", 3), - new Ability(Abilities.EARLY_BIRD, "Early Bird", "The POKéMON awakens quickly from sleep.", 3), - new Ability(Abilities.EFFECT_SPORE, "Effect Spore", "Contact may poison or cause paralysis or sleep.", 3), - new Ability(Abilities.FLAME_BODY, "Flame Body", "Contact with the POKéMON may burn the attacker.", 3), - new Ability(Abilities.FLASH_FIRE, "Flash Fire", "It powers up Fire-type moves if it's hit by one.", 3), - new Ability(Abilities.FORECAST, "Forecast", "Castform transforms with the weather.", 3), - new Ability(Abilities.GUTS, "Guts", "Boosts ATTACK if there is a status problem.", 3), - new Ability(Abilities.HUGE_POWER, "Huge Power", "Raises the POKéMON's ATTACK stat.", 3), - new Ability(Abilities.HUSTLE, "Hustle", "Boosts the ATTACK stat, but lowers accuracy.", 3), - new Ability(Abilities.HYPER_CUTTER, "Hyper Cutter", "Prevents other POKéMON from lowering ATTACK stat.", 3), - new Ability(Abilities.ILLUMINATE, "Illuminate", "Raises the likelihood of meeting wild POKéMON.", 3), - new Ability(Abilities.IMMUNITY, "Immunity", "Prevents the POKéMON from getting poisoned.", 3), - new Ability(Abilities.INNER_FOCUS, "Inner Focus", "The POKéMON is protected from flinching.", 3), - new Ability(Abilities.INSOMNIA, "Insomnia", "Prevents the POKéMON from falling asleep.", 3), - new Ability(Abilities.INTIMIDATE, "Intimidate", "Lowers the foe's ATTACK stat.", 3), - new Ability(Abilities.KEEN_EYE, "Keen Eye", "Prevents other POKéMON from lowering accuracy.", 3), - new Ability(Abilities.LEVITATE, "Levitate", "Gives immunity to Ground type moves.", 3), - new Ability(Abilities.LIGHTNING_ROD, "Lightning Rod", "Draws in all Electric-type moves to up SP. ATK.", 3), - new Ability(Abilities.LIMBER, "Limber", "The POKéMON is protected from paralysis.", 3), - new Ability(Abilities.LIQUID_OOZE, "Liquid Ooze", "Damages attackers using any draining move.", 3), - new Ability(Abilities.MAGMA_ARMOR, "Magma Armor", "Prevents the POKéMON from becoming frozen.", 3), - new Ability(Abilities.MAGNET_PULL, "Magnet Pull", "Prevents Steel-type POKéMON from escaping.", 3), - new Ability(Abilities.MARVEL_SCALE, "Marvel Scale", "Ups DEFENSE if there is a status problem.", 3), - new Ability(Abilities.MINUS, "Minus", "Ups SP. ATK if another POKéMON has Plus or Minus.", 3), - new Ability(Abilities.NATURAL_CURE, "Natural Cure", "All status problems heal when it switches out.", 3), - new Ability(Abilities.OBLIVIOUS, "Oblivious", "Prevents it from becoming infatuated.", 3), - new Ability(Abilities.OVERGROW, "Overgrow", "Powers up Grass-type moves in a pinch.", 3), - new Ability(Abilities.OWN_TEMPO, "Own Tempo", "Prevents the POKéMON from becoming confused.", 3), - new Ability(Abilities.PICKUP, "Pickup", "The POKéMON may pick up items.", 3), - new Ability(Abilities.PLUS, "Plus", "Ups SP. ATK if another POKéMON has Plus or Minus.", 3), - new Ability(Abilities.POISON_POINT, "Poison Point", "Contact with the POKéMON may poison the attacker.", 3), - new Ability(Abilities.PRESSURE, "Pressure", "The POKéMON raises the foe's PP usage.", 3), - new Ability(Abilities.PURE_POWER, "Pure Power", "Raises the POKéMON's ATTACK stat.", 3), - new Ability(Abilities.RAIN_DISH, "Rain Dish", "The POKéMON gradually regains HP in rain.", 3), - new Ability(Abilities.ROCK_HEAD, "Rock Head", "Protects the POKéMON from recoil damage.", 3), - new Ability(Abilities.ROUGH_SKIN, "Rough Skin", "Inflicts damage to the attacker on contact.", 3), - new Ability(Abilities.RUN_AWAY, "Run Away", "Enables a sure getaway from wild POKéMON.", 3), - new Ability(Abilities.SAND_STREAM, "Sand Stream", "The POKéMON summons a sandstorm in battle.", 3), - new Ability(Abilities.SAND_VEIL, "Sand Veil", "Boosts the POKéMON's evasion in a sandstorm.", 3), - new Ability(Abilities.SERENE_GRACE, "Serene Grace", "Boosts the likelihood of added effects appearing.", 3), - new Ability(Abilities.SHADOW_TAG, "Shadow Tag", "Prevents the foe from escaping.", 3), - new Ability(Abilities.SHED_SKIN, "Shed Skin", "The POKéMON may heal its own status problems.", 3), - new Ability(Abilities.SHELL_ARMOR, "Shell Armor", "The POKéMON is protected against critical hits.", 3), - new Ability(Abilities.SHIELD_DUST, "Shield Dust", "Blocks the added effects of attacks taken.", 3), - new Ability(Abilities.SOUNDPROOF, "Soundproof", "Gives immunity to sound-based moves.", 3), - new Ability(Abilities.SPEED_BOOST, "Speed Boost", "Its SPEED stat is gradually boosted.", 3), - new Ability(Abilities.STATIC, "Static", "Contact with the POKéMON may cause paralysis.", 3), - new Ability(Abilities.STENCH, "Stench", "The stench may cause the target to flinch.", 3), - new Ability(Abilities.STICKY_HOLD, "Sticky Hold", "Protects the POKéMON from item theft.", 3), - new Ability(Abilities.STURDY, "Sturdy", "It cannot be knocked out with one hit.", 3), - new Ability(Abilities.SUCTION_CUPS, "Suction Cups", "Negates all moves that force switching out.", 3), - new Ability(Abilities.SWARM, "Swarm", "Powers up Bug-type moves in a pinch.", 3), - new Ability(Abilities.SWIFT_SWIM, "Swift Swim", "Boosts the POKéMON's SPEED in rain.", 3), - new Ability(Abilities.SYNCHRONIZE, "Synchronize", "Passes a burn, poison, or paralysis to the foe.", 3), - new Ability(Abilities.THICK_FAT, "Thick Fat", "Ups resistance to Fire- and Ice-type moves.", 3), - new Ability(Abilities.TORRENT, "Torrent", "Powers up Water-type moves in a pinch.", 3), - new Ability(Abilities.TRACE, "Trace", "The POKéMON copies a foe's Ability.", 3), - new Ability(Abilities.TRUANT, "Truant", "POKéMON can't attack on consecutive turns.", 3), - new Ability(Abilities.VITAL_SPIRIT, "Vital Spirit", "Prevents the POKéMON from falling asleep.", 3), - new Ability(Abilities.VOLT_ABSORB, "Volt Absorb", "Restores HP if hit by an Electric-type move.", 3), - new Ability(Abilities.WATER_ABSORB, "Water Absorb", "Restores HP if hit by a Water-type move.", 3), - new Ability(Abilities.WATER_VEIL, "Water Veil", "Prevents the POKéMON from getting a burn.", 3), - new Ability(Abilities.WHITE_SMOKE, "White Smoke", "Prevents other POKéMON from lowering its stats.", 3), - new Ability(Abilities.WONDER_GUARD, "Wonder Guard", "Only supereffective moves will hit.", 3), - new Ability(Abilities.ADAPTABILITY, "Adaptability", "Powers up moves of the same type.", 4), - new Ability(Abilities.AFTERMATH, "Aftermath", "Damages the attacker landing the finishing hit.", 4), - new Ability(Abilities.ANGER_POINT, "Anger Point", "Maxes ATTACK after taking a critical hit.", 4), - new Ability(Abilities.ANTICIPATION, "Anticipation", "Senses a foe's dangerous moves.", 4), - new Ability(Abilities.BAD_DREAMS, "Bad Dreams", "Reduces a sleeping foe's HP.", 4), - new Ability(Abilities.DOWNLOAD, "Download", "Adjusts power according to a foe's defenses.", 4), - new Ability(Abilities.DRY_SKIN, "Dry Skin", "Reduces HP if it is hot. Water restores HP.", 4), - new Ability(Abilities.FILTER, "Filter", "Reduces damage from super-effective attacks.", 4), - new Ability(Abilities.FLOWER_GIFT, "Flower Gift", "Powers up party POKéMON when it is sunny.", 4), - new Ability(Abilities.FOREWARN, "Forewarn", "Determines what moves a foe has.", 4), - new Ability(Abilities.FRISK, "Frisk", "The POKéMON can check a foe's held item.", 4), - new Ability(Abilities.GLUTTONY, "Gluttony", "Encourages the early use of a held Berry.", 4), - new Ability(Abilities.HEATPROOF, "Heatproof", "Weakens the power of Fire-type moves.", 4), - new Ability(Abilities.HONEY_GATHER, "Honey Gather", "The POKéMON may gather Honey from somewhere.", 4), - new Ability(Abilities.HYDRATION, "Hydration", "Heals status problems if it is raining.", 4), - new Ability(Abilities.ICE_BODY, "Ice Body", "The POKéMON gradually regains HP in a hailstorm.", 4), - new Ability(Abilities.IRON_FIST, "Iron Fist", "Boosts the power of punching moves.", 4), - new Ability(Abilities.KLUTZ, "Klutz", "The POKéMON can't use any held items.", 4), - new Ability(Abilities.LEAF_GUARD, "Leaf Guard", "Prevents problems with status in sunny weather.", 4), - new Ability(Abilities.MAGIC_GUARD, "Magic Guard", "Protects the POKéMON from indirect damage.", 4), - new Ability(Abilities.MOLD_BREAKER, "Mold Breaker", "Moves can be used regardless of Abilities.", 4), - new Ability(Abilities.MOTOR_DRIVE, "Motor Drive", "Raises SPEED if hit by an Electric-type move.", 4), - new Ability(Abilities.MULTITYPE, "Multitype", "Changes type to match the held Plate.", 4), - new Ability(Abilities.NO_GUARD, "No Guard", "Ensures attacks by or against the POKéMON land.", 4), - new Ability(Abilities.NORMALIZE, "Normalize", "All the POKéMON's moves become the Normal type.", 4), - new Ability(Abilities.POISON_HEAL, "Poison Heal", "Restores HP if the POKéMON is poisoned.", 4), - new Ability(Abilities.QUICK_FEET, "Quick Feet", "Boosts SPEED if there is a status problem.", 4), - new Ability(Abilities.RECKLESS, "Reckless", "Powers up moves that have recoil damage.", 4), - new Ability(Abilities.RIVALRY, "Rivalry", "Deals more damage to a POKéMON of same gender.", 4), - new Ability(Abilities.SCRAPPY, "Scrappy", "Enables moves to hit Ghost-type POKéMON.", 4), - new Ability(Abilities.SIMPLE, "Simple", "Doubles all stat changes.", 4), - new Ability(Abilities.SKILL_LINK, "Skill Link", "Increases the frequency of multi-strike moves.", 4), - new Ability(Abilities.SLOW_START, "Slow Start", "Temporarily halves ATTACK and SPEED.", 4), - new Ability(Abilities.SNIPER, "Sniper", "Powers up moves if they become critical hits.", 4), - new Ability(Abilities.SNOW_CLOAK, "Snow Cloak", "Raises evasion in a hailstorm.", 4), - new Ability(Abilities.SNOW_WARNING, "Snow Warning", "The POKéMON summons a hailstorm in battle.", 4), - new Ability(Abilities.SOLAR_POWER, "Solar Power", "In sunshine, SP. ATK is boosted but HP decreases.", 4), - new Ability(Abilities.SOLID_ROCK, "Solid Rock", "Reduces damage from super-effective attacks.", 4), - new Ability(Abilities.STALL, "Stall", "The POKéMON moves after all other POKéMON do.", 4), - new Ability(Abilities.STEADFAST, "Steadfast", "Raises SPEED each time the POKéMON flinches.", 4), - new Ability(Abilities.STORM_DRAIN, "Storm Drain", "Draws in all Water-type moves to up SP. ATK.", 4), - new Ability(Abilities.SUPER_LUCK, "Super Luck", "Heightens the critical-hit ratios of moves.", 4), - new Ability(Abilities.TANGLED_FEET, "Tangled Feet", "Raises evasion if the POKéMON is confused.", 4), - new Ability(Abilities.TECHNICIAN, "Technician", "Powers up the POKéMON's weaker moves.", 4), - new Ability(Abilities.TINTED_LENS, "Tinted Lens", "Powers up “not very effective” moves.", 4), - new Ability(Abilities.UNAWARE, "Unaware", "Ignores any stat changes in the POKéMON.", 4), - new Ability(Abilities.UNBURDEN, "Unburden", "Raises SPEED if a held item is used.", 4), - new Ability(Abilities.ANALYTIC, "Analytic", "Boosts move power when the POKéMON moves last.", 5), - new Ability(Abilities.BIG_PECKS, "Big Pecks", "Protects the POKéMON from DEFENSE-lowering attacks.", 5), - new Ability(Abilities.CONTRARY, "Contrary", "Makes stat changes have an opposite effect.", 5), - new Ability(Abilities.CURSED_BODY, "Cursed Body", "May disable a move used on the POKéMON.", 5), - new Ability(Abilities.DEFEATIST, "Defeatist", "Lowers stats when HP drops below half.", 5), - new Ability(Abilities.DEFIANT, "Defiant", "Sharply raises ATTACK when the POKéMON's stats are lowered.", 5), - new Ability(Abilities.FLARE_BOOST, "Flare Boost", "Powers up special attacks when burned.", 5), - new Ability(Abilities.FRIEND_GUARD, "Friend Guard", "Reduces damage done to allies.", 5), - new Ability(Abilities.HARVEST, "Harvest", "May create another Berry after one is used.", 5), - new Ability(Abilities.HEALER, "Healer", "May heal an ally's status conditions.", 5), - new Ability(Abilities.HEAVY_METAL, "Heavy Metal", "Doubles the POKéMON's weight.", 5), - new Ability(Abilities.ILLUSION, "Illusion", "Enters battle disguised as the last POKéMON in the party.", 5), - new Ability(Abilities.IMPOSTER, "Imposter", "It transforms itself into the POKéMON it is facing.", 5), - new Ability(Abilities.INFILTRATOR, "Infiltrator", "Passes through the foe's barrier and strikes.", 5), - new Ability(Abilities.IRON_BARBS, "Iron Barbs", "Inflicts damage to the POKéMON on contact.", 5), - new Ability(Abilities.JUSTIFIED, "Justified", "Raises ATTACK when hit by a Dark-type move.", 5), - new Ability(Abilities.LIGHT_METAL, "Light Metal", "Halves the POKéMON's weight.", 5), - new Ability(Abilities.MAGIC_BOUNCE, "Magic Bounce", "Reflects status- changing moves.", 5), - new Ability(Abilities.MOODY, "Moody", "Raises one stat and lowers another.", 5), - new Ability(Abilities.MOXIE, "Moxie", "Boosts ATTACK after knocking out any POKéMON.", 5), - new Ability(Abilities.MULTISCALE, "Multiscale", "Reduces damage when HP is full.", 5), - new Ability(Abilities.MUMMY, "Mummy", "Contact with this POKéMON spreads this Ability.", 5), - new Ability(Abilities.OVERCOAT, "Overcoat", "Protects the POKéMON from weather damage.", 5), - new Ability(Abilities.PICKPOCKET, "Pickpocket", "Steals an item when hit by another POKéMON.", 5), - new Ability(Abilities.POISON_TOUCH, "Poison Touch", "May poison targets when a POKéMON makes contact.", 5), - new Ability(Abilities.PRANKSTER, "Prankster", "Gives priority to a status move.", 5), - new Ability(Abilities.RATTLED, "Rattled", "Bug, Ghost or Dark type moves scare it and boost its SPEED.", 5), - new Ability(Abilities.REGENERATOR, "Regenerator", "Restores a little HP when withdrawn from battle.", 5), - new Ability(Abilities.SAND_FORCE, "Sand Force", "Boosts certain moves' power in a sandstorm.", 5), - new Ability(Abilities.SAND_RUSH, "Sand Rush", "Boosts the POKéMON's SPEED in a sandstorm.", 5), - new Ability(Abilities.SAP_SIPPER, "Sap Sipper", "Boosts ATTACK when hit by a Grass-type move.", 5), - new Ability(Abilities.SHEER_FORCE, "Sheer Force", "Removes added effects to increase move damage.", 5), - new Ability(Abilities.TELEPATHY, "Telepathy", "Anticipates an ally's ATTACK and dodges it.", 5), - new Ability(Abilities.TERAVOLT, "Teravolt", "Moves can be used regardless of Abilities.", 5), - new Ability(Abilities.TOXIC_BOOST, "Toxic Boost", "Powers up physical attacks when poisoned.", 5), - new Ability(Abilities.TURBOBLAZE, "Turboblaze", "Moves can be used regardless of Abilities.", 5), - new Ability(Abilities.UNNERVE, "Unnerve", "Makes the foe nervous and unable to eat Berries.", 5), - new Ability(Abilities.VICTORY_STAR, "Victory Star", "Boosts the accuracy of its allies and itself.", 5), - new Ability(Abilities.WEAK_ARMOR, "Weak Armor", "Physical attacks lower DEFENSE and raise SPEED.", 5), - new Ability(Abilities.WONDER_SKIN, "Wonder Skin", "Makes status-changing moves more likely to miss.", 5), - new Ability(Abilities.ZEN_MODE, "Zen Mode", "Changes form when HP drops below half.", 5), - new Ability(Abilities.COMPETITIVE, "Competitive", "Sharply raises SP. ATK when the POKéMON's stats are lowered.", 6), - new Ability(Abilities.DARK_AURA, "Dark Aura", "Raises power of Dark type moves for all POKéMON in battle.", 6), - new Ability(Abilities.FAIRY_AURA, "Fairy Aura", "Raises power of Fairy type moves for all POKéMON in battle.", 6), - new Ability(Abilities.PROTEAN, "Protean", "Changes the POKéMON's type to its last used move.", 6), - new Ability(Abilities.SLUSH_RUSH, "Slush Rush", "Boosts the POKéMON's SPEED stat in a hailstorm.", 7), - new Ability(Abilities.NEUTRALIZING_GAS, "Neutralizing Gas", "Neutralizes abilities of all POKéMON in battle.", 8) + new Ability(Abilities.NONE, "- (N)", "", 3), + new Ability(Abilities.AIR_LOCK, "Air Lock (N)", "Eliminates the effects of weather.", 3), + new Ability(Abilities.ARENA_TRAP, "Arena Trap (N)", "Prevents the foe from fleeing.", 3), + new Ability(Abilities.BATTLE_ARMOR, "Battle Armor (N)", "The POKéMON is protected against critical hits.", 3), + new Ability(Abilities.BLAZE, "Blaze (N)", "Powers up FIRE-type moves in a pinch.", 3), + new Ability(Abilities.CHLOROPHYLL, "Chlorophyll (N)", "Boosts the POKéMON's SPEED in sunshine.", 3), + new Ability(Abilities.CLEAR_BODY, "Clear Body (N)", "Prevents other POKéMON from lowering its stats.", 3), + new Ability(Abilities.CLOUD_NINE, "Cloud Nine (N)", "Eliminates the effects of weather.", 3), + new Ability(Abilities.COLOR_CHANGE, "Color Change (N)", "Changes the POKéMON's type to the foe's move.", 3), + new Ability(Abilities.COMPOUND_EYES, "Compound Eyes (N)", "The POKéMON's accuracy is boosted.", 3), + new Ability(Abilities.CUTE_CHARM, "Cute Charm (N)", "Contact with the POKéMON may cause infatuation.", 3), + new Ability(Abilities.DAMP, "Damp (N)", "Prevents the use of self-destructing moves.", 3), + new Ability(Abilities.DRIZZLE, "Drizzle (N)", "The POKéMON makes it rain when it enters a battle.", 3), + new Ability(Abilities.DROUGHT, "Drought (N)", "Turns the sunlight harsh when the POKéMON enters a battle.", 3), + new Ability(Abilities.EARLY_BIRD, "Early Bird (N)", "The POKéMON awakens quickly from sleep.", 3), + new Ability(Abilities.EFFECT_SPORE, "Effect Spore (N)", "Contact may poison or cause paralysis or sleep.", 3), + new Ability(Abilities.FLAME_BODY, "Flame Body (N)", "Contact with the POKéMON may burn the attacker.", 3), + new Ability(Abilities.FLASH_FIRE, "Flash Fire (N)", "It powers up FIRE-type moves if it's hit by one.", 3), + new Ability(Abilities.FORECAST, "Forecast (N)", "Castform transforms with the weather.", 3), + new Ability(Abilities.GUTS, "Guts (N)", "Boosts ATTACK if there is a status problem.", 3), + new Ability(Abilities.HUGE_POWER, "Huge Power (N)", "Raises the POKéMON's ATTACK stat.", 3), + new Ability(Abilities.HUSTLE, "Hustle (N)", "Boosts the ATTACK stat, but lowers accuracy.", 3), + new Ability(Abilities.HYPER_CUTTER, "Hyper Cutter (N)", "Prevents other POKéMON from lowering ATTACK stat.", 3), + new Ability(Abilities.ILLUMINATE, "Illuminate (N)", "Raises the likelihood of meeting wild POKéMON.", 3), + new Ability(Abilities.IMMUNITY, "Immunity (N)", "Prevents the POKéMON from getting poisoned.", 3), + new Ability(Abilities.INNER_FOCUS, "Inner Focus (N)", "The POKéMON is protected from flinching.", 3), + new Ability(Abilities.INSOMNIA, "Insomnia (N)", "Prevents the POKéMON from falling asleep.", 3), + new Ability(Abilities.INTIMIDATE, "Intimidate (N)", "Lowers the foe's ATTACK stat.", 3), + new Ability(Abilities.KEEN_EYE, "Keen Eye (N)", "Prevents other POKéMON from lowering accuracy.", 3), + new Ability(Abilities.LEVITATE, "Levitate (N)", "Gives immunity to GROUND-type moves.", 3), + new Ability(Abilities.LIGHTNING_ROD, "Lightning Rod (N)", "Draws in all ELECTRIC-type moves to up SP. ATK.", 3), + new Ability(Abilities.LIMBER, "Limber (N)", "The POKéMON is protected from paralysis.", 3), + new Ability(Abilities.LIQUID_OOZE, "Liquid Ooze (N)", "Damages attackers using any draining move.", 3), + new Ability(Abilities.MAGMA_ARMOR, "Magma Armor (N)", "Prevents the POKéMON from becoming frozen.", 3), + new Ability(Abilities.MAGNET_PULL, "Magnet Pull (N)", "Prevents STEEL-type POKéMON from escaping.", 3), + new Ability(Abilities.MARVEL_SCALE, "Marvel Scale (N)", "Ups DEFENSE if there is a status problem.", 3), + new Ability(Abilities.MINUS, "Minus (N)", "Ups SP. ATK if another POKéMON has PLUS or MINUS.", 3), + new Ability(Abilities.NATURAL_CURE, "Natural Cure (N)", "All status problems heal when it switches out.", 3), + new Ability(Abilities.OBLIVIOUS, "Oblivious (N)", "Prevents it from becoming infatuated.", 3), + new Ability(Abilities.OVERGROW, "Overgrow (N)", "Powers up GRASS-type moves in a pinch.", 3), + new Ability(Abilities.OWN_TEMPO, "Own Tempo (N)", "Prevents the POKéMON from becoming confused.", 3), + new Ability(Abilities.PICKUP, "Pickup (N)", "The POKéMON may pick up items.", 3), + new Ability(Abilities.PLUS, "Plus (N)", "Ups SP. ATK if another POKéMON has PLUS or MINUS.", 3), + new Ability(Abilities.POISON_POINT, "Poison Point (N)", "Contact with the POKéMON may poison the attacker.", 3), + new Ability(Abilities.PRESSURE, "Pressure (N)", "The POKéMON raises the foe's PP usage.", 3), + new Ability(Abilities.PURE_POWER, "Pure Power (N)", "Raises the POKéMON's ATTACK stat.", 3), + new Ability(Abilities.RAIN_DISH, "Rain Dish (N)", "The POKéMON gradually regains HP in rain.", 3), + new Ability(Abilities.ROCK_HEAD, "Rock Head (N)", "Protects the POKéMON from recoil damage.", 3), + new Ability(Abilities.ROUGH_SKIN, "Rough Skin (N)", "Inflicts damage to the attacker on contact.", 3), + new Ability(Abilities.RUN_AWAY, "Run Away (N)", "Enables a sure getaway from wild POKéMON.", 3), + new Ability(Abilities.SAND_STREAM, "Sand Stream (N)", "The POKéMON summons a sandstorm in battle.", 3), + new Ability(Abilities.SAND_VEIL, "Sand Veil (N)", "Boosts the POKéMON's evasion in a sandstorm.", 3), + new Ability(Abilities.SERENE_GRACE, "Serene Grace (N)", "Boosts the likelihood of added effects appearing.", 3), + new Ability(Abilities.SHADOW_TAG, "Shadow Tag (N)", "Prevents the foe from escaping.", 3), + new Ability(Abilities.SHED_SKIN, "Shed Skin (N)", "The POKéMON may heal its own status problems.", 3), + new Ability(Abilities.SHELL_ARMOR, "Shell Armor (N)", "The POKéMON is protected against critical hits.", 3), + new Ability(Abilities.SHIELD_DUST, "Shield Dust (N)", "Blocks the added effects of attacks taken.", 3), + new Ability(Abilities.SOUNDPROOF, "Soundproof (N)", "Gives immunity to sound-based moves.", 3), + new Ability(Abilities.SPEED_BOOST, "Speed Boost (N)", "Its SPEED stat is gradually boosted.", 3), + new Ability(Abilities.STATIC, "Static (N)", "Contact with the POKéMON may cause paralysis.", 3), + new Ability(Abilities.STENCH, "Stench (N)", "The stench may cause the target to flinch.", 3), + new Ability(Abilities.STICKY_HOLD, "Sticky Hold (N)", "Protects the POKéMON from item theft.", 3), + new Ability(Abilities.STURDY, "Sturdy (N)", "It cannot be knocked out with one hit.", 3), + new Ability(Abilities.SUCTION_CUPS, "Suction Cups (N)", "Negates all moves that force switching out.", 3), + new Ability(Abilities.SWARM, "Swarm (N)", "Powers up BUG-type moves in a pinch.", 3), + new Ability(Abilities.SWIFT_SWIM, "Swift Swim (N)", "Boosts the POKéMON's SPEED in rain.", 3), + new Ability(Abilities.SYNCHRONIZE, "Synchronize (N)", "Passes a burn, poison, or paralysis to the foe.", 3), + new Ability(Abilities.THICK_FAT, "Thick Fat (N)", "Ups resistance to Fire- and ICE-type moves.", 3), + new Ability(Abilities.TORRENT, "Torrent (N)", "Powers up WATER-type moves in a pinch.", 3), + new Ability(Abilities.TRACE, "Trace (N)", "The POKéMON copies a foe's Ability.", 3), + new Ability(Abilities.TRUANT, "Truant (N)", "POKéMON can't attack on consecutive turns.", 3), + new Ability(Abilities.VITAL_SPIRIT, "Vital Spirit (N)", "Prevents the POKéMON from falling asleep.", 3), + new Ability(Abilities.VOLT_ABSORB, "Volt Absorb (N)", "Restores HP if hit by an ELECTRIC-type move.", 3), + new Ability(Abilities.WATER_ABSORB, "Water Absorb (N)", "Restores HP if hit by a WATER-type move.", 3), + new Ability(Abilities.WATER_VEIL, "Water Veil (N)", "Prevents the POKéMON from getting a burn.", 3), + new Ability(Abilities.WHITE_SMOKE, "White Smoke (N)", "Prevents other POKéMON from lowering its stats.", 3), + new Ability(Abilities.WONDER_GUARD, "Wonder Guard (N)", "Only supereffective moves will hit.", 3), + new Ability(Abilities.ADAPTABILITY, "Adaptability (N)", "Powers up moves of the same type.", 4), + new Ability(Abilities.AFTERMATH, "Aftermath (N)", "Damages the attacker landing the finishing hit.", 4), + new Ability(Abilities.ANGER_POINT, "Anger Point (N)", "Maxes ATTACK after taking a critical hit.", 4), + new Ability(Abilities.ANTICIPATION, "Anticipation (N)", "Senses a foe's dangerous moves.", 4), + new Ability(Abilities.BAD_DREAMS, "Bad Dreams (N)", "Reduces a sleeping foe's HP.", 4), + new Ability(Abilities.DOWNLOAD, "Download (N)", "Adjusts power according to a foe's defenses.", 4), + new Ability(Abilities.DRY_SKIN, "Dry Skin (N)", "Reduces HP if it is hot. Water restores HP.", 4), + new Ability(Abilities.FILTER, "Filter (N)", "Reduces damage from super-effective attacks.", 4), + new Ability(Abilities.FLOWER_GIFT, "Flower Gift (N)", "Powers up party POKéMON when it is sunny.", 4), + new Ability(Abilities.FOREWARN, "Forewarn (N)", "Determines what moves a foe has.", 4), + new Ability(Abilities.FRISK, "Frisk (N)", "The POKéMON can check a foe's held item.", 4), + new Ability(Abilities.GLUTTONY, "Gluttony (N)", "Encourages the early use of a held Berry.", 4), + new Ability(Abilities.HEATPROOF, "Heatproof (N)", "Weakens the power of FIRE-type moves.", 4), + new Ability(Abilities.HONEY_GATHER, "Honey Gather (N)", "The POKéMON may gather Honey from somewhere.", 4), + new Ability(Abilities.HYDRATION, "Hydration (N)", "Heals status problems if it is raining.", 4), + new Ability(Abilities.ICE_BODY, "Ice Body (N)", "The POKéMON gradually regains HP in a hailstorm.", 4), + new Ability(Abilities.IRON_FIST, "Iron Fist (N)", "Boosts the power of punching moves.", 4), + new Ability(Abilities.KLUTZ, "Klutz (N)", "The POKéMON can't use any held items.", 4), + new Ability(Abilities.LEAF_GUARD, "Leaf Guard (N)", "Prevents problems with status in sunny weather.", 4), + new Ability(Abilities.MAGIC_GUARD, "Magic Guard (N)", "Protects the POKéMON from indirect damage.", 4), + new Ability(Abilities.MOLD_BREAKER, "Mold Breaker (N)", "Moves can be used regardless of Abilities.", 4), + new Ability(Abilities.MOTOR_DRIVE, "Motor Drive (N)", "Raises SPEED if hit by an ELECTRIC-type move.", 4), + new Ability(Abilities.MULTITYPE, "Multitype (N)", "Changes type to match the held Plate.", 4), + new Ability(Abilities.NO_GUARD, "No Guard (N)", "Ensures attacks by or against the POKéMON land.", 4), + new Ability(Abilities.NORMALIZE, "Normalize (N)", "All the POKéMON's moves become the NORMAL type.", 4), + new Ability(Abilities.POISON_HEAL, "Poison Heal (N)", "Restores HP if the POKéMON is poisoned.", 4), + new Ability(Abilities.QUICK_FEET, "Quick Feet (N)", "Boosts SPEED if there is a status problem.", 4), + new Ability(Abilities.RECKLESS, "Reckless (N)", "Powers up moves that have recoil damage.", 4), + new Ability(Abilities.RIVALRY, "Rivalry (N)", "Deals more damage to a POKéMON of same gender.", 4), + new Ability(Abilities.SCRAPPY, "Scrappy (N)", "Enables moves to hit GHOST-type POKéMON.", 4), + new Ability(Abilities.SIMPLE, "Simple (N)", "Doubles all stat changes.", 4), + new Ability(Abilities.SKILL_LINK, "Skill Link (N)", "Increases the frequency of multi-strike moves.", 4), + new Ability(Abilities.SLOW_START, "Slow Start (N)", "Temporarily halves ATTACK and SPEED.", 4), + new Ability(Abilities.SNIPER, "Sniper (N)", "Powers up moves if they become critical hits.", 4), + new Ability(Abilities.SNOW_CLOAK, "Snow Cloak (N)", "Raises evasion in a hailstorm.", 4), + new Ability(Abilities.SNOW_WARNING, "Snow Warning (N)", "The POKéMON summons a hailstorm in battle.", 4), + new Ability(Abilities.SOLAR_POWER, "Solar Power (N)", "In sunshine, SP. ATK is boosted but HP decreases.", 4), + new Ability(Abilities.SOLID_ROCK, "Solid Rock (N)", "Reduces damage from super-effective attacks.", 4), + new Ability(Abilities.STALL, "Stall (N)", "The POKéMON moves after all other POKéMON do.", 4), + new Ability(Abilities.STEADFAST, "Steadfast (N)", "Raises SPEED each time the POKéMON flinches.", 4), + new Ability(Abilities.STORM_DRAIN, "Storm Drain (N)", "Draws in all WATER-type moves to up SP. ATK.", 4), + new Ability(Abilities.SUPER_LUCK, "Super Luck (N)", "Heightens the critical-hit ratios of moves.", 4), + new Ability(Abilities.TANGLED_FEET, "Tangled Feet (N)", "Raises evasion if the POKéMON is confused.", 4), + new Ability(Abilities.TECHNICIAN, "Technician (N)", "Powers up the POKéMON's weaker moves.", 4), + new Ability(Abilities.TINTED_LENS, "Tinted Lens (N)", "Powers up “not very effective” moves.", 4), + new Ability(Abilities.UNAWARE, "Unaware (N)", "Ignores any stat changes in the POKéMON.", 4), + new Ability(Abilities.UNBURDEN, "Unburden (N)", "Raises SPEED if a held item is used.", 4), + new Ability(Abilities.ANALYTIC, "Analytic (N)", "Boosts move power when the POKéMON moves last.", 5), + new Ability(Abilities.BIG_PECKS, "Big Pecks (N)", "Protects the POKéMON from DEFENSE-lowering attacks.", 5), + new Ability(Abilities.CONTRARY, "Contrary (N)", "Makes stat changes have an opposite effect.", 5), + new Ability(Abilities.CURSED_BODY, "Cursed Body (N)", "May disable a move used on the POKéMON.", 5), + new Ability(Abilities.DEFEATIST, "Defeatist (N)", "Lowers stats when HP drops below half.", 5), + new Ability(Abilities.DEFIANT, "Defiant (N)", "Sharply raises ATTACK when the POKéMON's stats are lowered.", 5), + new Ability(Abilities.FLARE_BOOST, "Flare Boost (N)", "Powers up special attacks when burned.", 5), + new Ability(Abilities.FRIEND_GUARD, "Friend Guard (N)", "Reduces damage done to allies.", 5), + new Ability(Abilities.HARVEST, "Harvest (N)", "May create another Berry after one is used.", 5), + new Ability(Abilities.HEALER, "Healer (N)", "May heal an ally's status conditions.", 5), + new Ability(Abilities.HEAVY_METAL, "Heavy Metal (N)", "Doubles the POKéMON's weight.", 5), + new Ability(Abilities.ILLUSION, "Illusion (N)", "Enters battle disguised as the last POKéMON in the party.", 5), + new Ability(Abilities.IMPOSTER, "Imposter (N)", "It transforms itself into the POKéMON it is facing.", 5), + new Ability(Abilities.INFILTRATOR, "Infiltrator (N)", "Passes through the foe's barrier and strikes.", 5), + new Ability(Abilities.IRON_BARBS, "Iron Barbs (N)", "Inflicts damage to the POKéMON on contact.", 5), + new Ability(Abilities.JUSTIFIED, "Justified (N)", "Raises ATTACK when hit by a DARK-type move.", 5), + new Ability(Abilities.LIGHT_METAL, "Light Metal (N)", "Halves the POKéMON's weight.", 5), + new Ability(Abilities.MAGIC_BOUNCE, "Magic Bounce (N)", "Reflects status- changing moves.", 5), + new Ability(Abilities.MOODY, "Moody (N)", "Raises one stat and lowers another.", 5), + new Ability(Abilities.MOXIE, "Moxie (N)", "Boosts ATTACK after knocking out any POKéMON.", 5), + new Ability(Abilities.MULTISCALE, "Multiscale (N)", "Reduces damage when HP is full.", 5), + new Ability(Abilities.MUMMY, "Mummy (N)", "Contact with this POKéMON spreads this Ability.", 5), + new Ability(Abilities.OVERCOAT, "Overcoat (N)", "Protects the POKéMON from weather damage.", 5), + new Ability(Abilities.PICKPOCKET, "Pickpocket (N)", "Steals an item when hit by another POKéMON.", 5), + new Ability(Abilities.POISON_TOUCH, "Poison Touch (N)", "May poison targets when a POKéMON makes contact.", 5), + new Ability(Abilities.PRANKSTER, "Prankster (N)", "Gives priority to a status move.", 5), + new Ability(Abilities.RATTLED, "Rattled (N)", "BUG, GHOST or DARK type moves scare it and boost its SPEED.", 5), + new Ability(Abilities.REGENERATOR, "Regenerator (N)", "Restores a little HP when withdrawn from battle.", 5), + new Ability(Abilities.SAND_FORCE, "Sand Force (N)", "Boosts certain moves' power in a sandstorm.", 5), + new Ability(Abilities.SAND_RUSH, "Sand Rush (N)", "Boosts the POKéMON's SPEED in a sandstorm.", 5), + new Ability(Abilities.SAP_SIPPER, "Sap Sipper (N)", "Boosts ATTACK when hit by a GRASS-type move.", 5), + new Ability(Abilities.SHEER_FORCE, "Sheer Force (N)", "Removes added effects to increase move damage.", 5), + new Ability(Abilities.TELEPATHY, "Telepathy (N)", "Anticipates an ally's ATTACK and dodges it.", 5), + new Ability(Abilities.TERAVOLT, "Teravolt (N)", "Moves can be used regardless of Abilities.", 5), + new Ability(Abilities.TOXIC_BOOST, "Toxic Boost (N)", "Powers up physical attacks when poisoned.", 5), + new Ability(Abilities.TURBOBLAZE, "Turboblaze (N)", "Moves can be used regardless of Abilities.", 5), + new Ability(Abilities.UNNERVE, "Unnerve (N)", "Makes the foe nervous and unable to eat Berries.", 5), + new Ability(Abilities.VICTORY_STAR, "Victory Star (N)", "Boosts the accuracy of its allies and itself.", 5), + new Ability(Abilities.WEAK_ARMOR, "Weak Armor (N)", "Physical attacks lower DEFENSE and raise SPEED.", 5), + new Ability(Abilities.WONDER_SKIN, "Wonder Skin (N)", "Makes status-changing moves more likely to miss.", 5), + new Ability(Abilities.ZEN_MODE, "Zen Mode (N)", "Changes form when HP drops below half.", 5), + new Ability(Abilities.COMPETITIVE, "Competitive (N)", "Sharply raises SP. ATK when the POKéMON's stats are lowered.", 6), + new Ability(Abilities.DARK_AURA, "Dark Aura (N)", "Raises power of DARK type moves for all POKéMON in battle.", 6), + new Ability(Abilities.FAIRY_AURA, "Fairy Aura (N)", "Raises power of FAIRY type moves for all POKéMON in battle.", 6), + new Ability(Abilities.PROTEAN, "Protean (N)", "Changes the POKéMON's type to its last used move.", 6), + new Ability(Abilities.SLUSH_RUSH, "Slush Rush (N)", "Boosts the POKéMON's SPEED stat in a hailstorm.", 7), + new Ability(Abilities.NEUTRALIZING_GAS, "Neutralizing Gas (N)", "Neutralizes abilities of all POKéMON in battle.", 8) ]; \ No newline at end of file diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 13702f590..50132bcf4 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -3,7 +3,7 @@ import { LearnMovePhase, LevelUpPhase, PokemonHealPhase } from "../battle-phases import BattleScene from "../battle-scene"; import { getLevelTotalExp } from "../data/exp"; import { PokeballType } from "../data/pokeball"; -import Pokemon, { EnemyPokemon, PlayerPokemon } from "../pokemon"; +import Pokemon, { PlayerPokemon } from "../pokemon"; import { Stat } from "../data/pokemon-stat"; import { addTextObject, TextStyle } from "../ui/text"; import { Type } from '../data/type'; @@ -111,7 +111,7 @@ export abstract class PersistentModifier extends Modifier { return 99; } - getIcon(scene: BattleScene): Phaser.GameObjects.Container { + getIcon(scene: BattleScene, forSummary?: boolean): Phaser.GameObjects.Container { const container = scene.add.container(0, 0); const item = scene.add.sprite(0, 12, 'items'); @@ -252,29 +252,32 @@ export abstract class PokemonHeldItemModifier extends PersistentModifier { return super.shouldApply(args) && args.length && args[0] instanceof Pokemon && (this.pokemonId === -1 || (args[0] as Pokemon).id === this.pokemonId); } - getIcon(scene: BattleScene): Phaser.GameObjects.Container { - const container = scene.add.container(0, 0); + getIcon(scene: BattleScene, forSummary?: boolean): Phaser.GameObjects.Container { + const container = !forSummary ? scene.add.container(0, 0) : super.getIcon(scene); - const pokemon = this.getPokemon(scene); - const pokemonIcon = scene.add.sprite(0, 8, pokemon.species.getIconAtlasKey()); - pokemonIcon.play(pokemon.getIconKey()).stop(); - pokemonIcon.setOrigin(0, 0.5); + if (!forSummary) { + const pokemon = this.getPokemon(scene); + const pokemonIcon = scene.add.sprite(0, 8, pokemon.species.getIconAtlasKey()); + pokemonIcon.play(pokemon.getIconKey()).stop(); + pokemonIcon.setOrigin(0, 0.5); - container.add(pokemonIcon); + container.add(pokemonIcon); - const item = scene.add.sprite(16, this.virtualStackCount ? 8 : 16, 'items'); - item.setScale(0.5); - item.setOrigin(0, 0.5); - item.setTexture('items', this.type.iconImage); - container.add(item); + const item = scene.add.sprite(16, this.virtualStackCount ? 8 : 16, 'items'); + item.setScale(0.5); + item.setOrigin(0, 0.5); + item.setTexture('items', this.type.iconImage); + container.add(item); - const stackText = this.getIconStackText(scene); - if (stackText) - container.add(stackText); + const stackText = this.getIconStackText(scene); + if (stackText) + container.add(stackText); - const virtualStackText = this.getIconStackText(scene, true); - if (virtualStackText) - container.add(virtualStackText); + const virtualStackText = this.getIconStackText(scene, true); + if (virtualStackText) + container.add(virtualStackText); + } else + container.setScale(0.5); return container; } diff --git a/src/pokemon.ts b/src/pokemon.ts index 90d6b4820..a232315da 100644 --- a/src/pokemon.ts +++ b/src/pokemon.ts @@ -22,6 +22,7 @@ import { Species } from './data/species'; import { WeatherType } from './data/weather'; import { TempBattleStat } from './data/temp-battle-stat'; import { WeakenTypeTag as WeakenMoveTypeTag } from './data/arena-tag'; +import { Biome } from './data/biome'; export default abstract class Pokemon extends Phaser.GameObjects.Container { public id: integer; @@ -829,11 +830,15 @@ export default interface Pokemon { } export class PlayerPokemon extends Pokemon { + public metBiome: Biome; + public metLevel: integer; public compatibleTms: Moves[]; constructor(scene: BattleScene, species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender?: Gender, shiny?: boolean, dataSource?: Pokemon) { super(scene, 106, 148, species, level, abilityIndex, formIndex, gender, shiny, dataSource); + this.metBiome = scene.arena.biomeType; + this.metLevel = level; this.generateCompatibleTms(); } diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index f8b9c98a0..b6806ebe8 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -11,6 +11,8 @@ import { getGenderColor, getGenderSymbol } from "../data/gender"; import { getLevelTotalExp } from "../data/exp"; import { BlendModes } from "phaser"; import { Stat, getStatName } from "../data/pokemon-stat"; +import { abilities } from "../data/ability"; +import { PokemonHeldItemModifier } from "../modifier/modifier"; enum Page { PROFILE, @@ -27,6 +29,7 @@ export default class SummaryUiHandler extends UiHandler { private summaryUiMode: SummaryUiMode; private summaryContainer: Phaser.GameObjects.Container; + private tabSprite: Phaser.GameObjects.Sprite; private numberText: Phaser.GameObjects.Text; private pokemonSprite: Phaser.GameObjects.Sprite; private nameText: Phaser.GameObjects.Text; @@ -74,6 +77,10 @@ export default class SummaryUiHandler extends UiHandler { summaryBg.setOrigin(0, 1); this.summaryContainer.add(summaryBg); + this.tabSprite = this.scene.add.sprite(134, (-summaryBg.displayHeight) + 16, 'summary_tabs_1'); + this.tabSprite.setOrigin(1, 1); + this.summaryContainer.add(this.tabSprite); + this.numberText = addTextObject(this.scene, 17, -150, '000', TextStyle.SUMMARY); this.numberText.setOrigin(0, 1); this.summaryContainer.add(this.numberText); @@ -353,6 +360,8 @@ export default class SummaryUiHandler extends UiHandler { const forward = this.cursor < cursor; this.cursor = cursor; + this.tabSprite.setTexture(`summary_tabs_${this.cursor + 1}`); + if (this.summaryPageContainer.visible) { this.transitioning = true; this.populatePageContainer(this.summaryPageTransitionContainer, forward ? cursor : cursor + 1); @@ -399,6 +408,34 @@ export default class SummaryUiHandler extends UiHandler { pageBg.setTexture(this.getPageKey(page)); switch (page) { + case Page.PROFILE: + const profileContainer = this.scene.add.container(0, -pageBg.height); + pageContainer.add(profileContainer); + + const typeLabel = addTextObject(this.scene, 7, 28, 'TYPE/', TextStyle.WINDOW); + typeLabel.setOrigin(0, 0); + profileContainer.add(typeLabel); + + const getTypeIcon = (index: integer, type: Type) => { + const typeIcon = this.scene.add.sprite(39 + 34 * index, 42, 'types', Type[type].toLowerCase()); + typeIcon.setOrigin(0, 1); + return typeIcon; + }; + + profileContainer.add(getTypeIcon(0, this.pokemon.species.type1)); + if (this.pokemon.species.type2) + profileContainer.add(getTypeIcon(1, this.pokemon.species.type2)); + + const ability = abilities[this.pokemon.species[`ability${!this.pokemon.abilityIndex ? '1' : '2'}`]]; + + const abilityNameText = addTextObject(this.scene, 7, 66, ability.name.toUpperCase(), TextStyle.SUMMARY); + abilityNameText.setOrigin(0, 1); + profileContainer.add(abilityNameText); + + const abilityDescriptionText = addTextObject(this.scene, 7, 82, ability.description, TextStyle.WINDOW, { wordWrap: { width: 1212 } }); + abilityDescriptionText.setOrigin(0, 1); + profileContainer.add(abilityDescriptionText); + break; case Page.STATS: const statsContainer = this.scene.add.container(0, -pageBg.height); pageContainer.add(statsContainer); @@ -425,6 +462,16 @@ export default class SummaryUiHandler extends UiHandler { statsContainer.add(statValue); }); + const itemModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + && (m as PokemonHeldItemModifier).pokemonId === this.pokemon.id, true) as PokemonHeldItemModifier[]; + + itemModifiers.forEach((item, i) => { + const icon = item.getIcon(this.scene, true); + + icon.setPosition((i % 17) * 12 + 3, 14 * Math.floor(i / 17) + 15); + statsContainer.add(icon); + }); + const totalLvExp = getLevelTotalExp(this.pokemon.level, this.pokemon.species.growthRate); const expRatio = this.pokemon.level < 100 ? this.pokemon.levelExp / totalLvExp : 0;