Compare commits

...

12 Commits

Author SHA1 Message Date
Madi Simpson
cbf06ffa2c bugfix: ensure direct stat modifying moves update both pokemon's stat info 2024-05-03 15:12:48 -04:00
Madmadness65
9a559c8d6a Update passive abilities for legendaries
This is the first batch of passive ability revisions, this one directed at legendary and mythical Pokémon.
2024-05-03 14:04:43 -05:00
Flashfyre
71705dd6d4 Add candy popup sound 2024-05-03 15:03:11 -04:00
Flashfyre
9fc6bdde21 Revert "Rework - Inputs management to include all gamepad mapping (#390)"
This reverts commit 70324c4159.
2024-05-03 13:04:32 -04:00
Greenlamp2
70324c4159
Rework - Inputs management to include all gamepad mapping (#390)
* rework of the input handling, including different gamepad and keyboard

* rework of the input handling, including different gamepad and keyboard

* first version of a too complex inputHandler based on phaser3-merged-input

* removed useless control management and kept it simple for our use case, investigating to put out button_XX()

* renamed inputHandler to inputController

* aggregate directions and some action into a same method + fix menu return value

* added back repeated input feature on keeping down a key

* cleanup + return type

* fix submit/action doing two things simultaneously, still same behaviour as before

* extracted UI inputs out of battle-scene

* tab -> spaces

* tab -> spaces what about now github ?
2024-05-03 12:59:10 -04:00
Dario Krause
c44ec421b0 Update pokemon.ts 2024-05-03 12:05:45 -04:00
Xavion3
c7c4deb416 Implement Sniper 2024-05-03 12:05:20 -04:00
Lugiad
e082dd9089
Minor correction to apostrophes in French menu-ui-handler.ts (#415) 2024-05-03 09:51:00 -05:00
Xavion3
bc319a8eda Fix eggs during dailies 2024-05-03 10:28:40 -04:00
Paul Beslin
24a9dba2c4 Fix attacks with charge (solar beam, dig...) allowing to switch target on second turn 2024-05-03 08:35:31 -04:00
Benjamin Odom
b84a4b4ee5 Fix Shedinja PPused Share
Fixed having Shedinja share PP usage with the Ninjask it evolved from and vice versa.

The solution was to make a deep copy of each move in the moveset array rather than copying the array itself.
2024-05-03 08:33:33 -04:00
Jaime
f7b391746e Fix Gyro Ball only checking base stat 2024-05-03 08:32:39 -04:00
14 changed files with 300 additions and 251 deletions

BIN
public/audio/se/shing.wav Normal file

Binary file not shown.

View File

@ -1609,6 +1609,27 @@ export class BonusCritAbAttr extends AbAttr {
} }
} }
export class MultCritAbAttr extends AbAttr {
public multAmount: number;
constructor(multAmount: number) {
super(true);
this.multAmount = multAmount;
}
apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
const critMult = args[0] as Utils.NumberHolder;
if (critMult.value > 1){
critMult.value *= this.multAmount;
return true;
}
return false;
}
}
export class BlockNonDirectDamageAbAttr extends AbAttr { export class BlockNonDirectDamageAbAttr extends AbAttr {
apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
cancelled.value = true; cancelled.value = true;
@ -2776,7 +2797,7 @@ export function initAbilities() {
.attr(MoveTypeChangeAttr, Type.NORMAL, 1.2, (user, target, move) => move.id !== Moves.HIDDEN_POWER && move.id !== Moves.WEATHER_BALL && .attr(MoveTypeChangeAttr, Type.NORMAL, 1.2, (user, target, move) => move.id !== Moves.HIDDEN_POWER && move.id !== Moves.WEATHER_BALL &&
move.id !== Moves.NATURAL_GIFT && move.id !== Moves.JUDGMENT && move.id !== Moves.TECHNO_BLAST), move.id !== Moves.NATURAL_GIFT && move.id !== Moves.JUDGMENT && move.id !== Moves.TECHNO_BLAST),
new Ability(Abilities.SNIPER, 4) new Ability(Abilities.SNIPER, 4)
.unimplemented(), .attr(MultCritAbAttr, 1.5),
new Ability(Abilities.MAGIC_GUARD, 4) new Ability(Abilities.MAGIC_GUARD, 4)
.attr(BlockNonDirectDamageAbAttr), .attr(BlockNonDirectDamageAbAttr),
new Ability(Abilities.NO_GUARD, 4) new Ability(Abilities.NO_GUARD, 4)

View File

@ -391,6 +391,12 @@ export class FrenzyTag extends BattlerTag {
} }
} }
export class ChargingTag extends BattlerTag {
constructor(sourceMove: Moves, sourceId: integer) {
super(BattlerTagType.CHARGING, BattlerTagLapseType.CUSTOM, 1, sourceMove, sourceId);
}
}
export class EncoreTag extends BattlerTag { export class EncoreTag extends BattlerTag {
public moveId: Moves; public moveId: Moves;
@ -1116,6 +1122,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc
return new NightmareTag(); return new NightmareTag();
case BattlerTagType.FRENZY: case BattlerTagType.FRENZY:
return new FrenzyTag(sourceMove, sourceId); return new FrenzyTag(sourceMove, sourceId);
case BattlerTagType.CHARGING:
return new ChargingTag(sourceMove, sourceId);
case BattlerTagType.ENCORE: case BattlerTagType.ENCORE:
return new EncoreTag(sourceId); return new EncoreTag(sourceId);
case BattlerTagType.HELPING_HAND: case BattlerTagType.HELPING_HAND:

View File

@ -9,6 +9,7 @@ export enum BattlerTagType {
SEEDED = "SEEDED", SEEDED = "SEEDED",
NIGHTMARE = "NIGHTMARE", NIGHTMARE = "NIGHTMARE",
FRENZY = "FRENZY", FRENZY = "FRENZY",
CHARGING = "CHARGING",
ENCORE = "ENCORE", ENCORE = "ENCORE",
HELPING_HAND = "HELPING_HAND", HELPING_HAND = "HELPING_HAND",
INGRAIN = "INGRAIN", INGRAIN = "INGRAIN",

View File

@ -1325,10 +1325,13 @@ export class ChargeAttr extends OverrideMoveEffectAttr {
user.getMoveQueue().push({ move: move.id, targets: [ target.getBattlerIndex() ], ignorePP: true }); user.getMoveQueue().push({ move: move.id, targets: [ target.getBattlerIndex() ], ignorePP: true });
if (this.sameTurn) if (this.sameTurn)
user.scene.pushMovePhase(new MovePhase(user.scene, user, [ target.getBattlerIndex() ], user.moveset.find(m => m.moveId === move.id), true), this.followUpPriority); user.scene.pushMovePhase(new MovePhase(user.scene, user, [ target.getBattlerIndex() ], user.moveset.find(m => m.moveId === move.id), true), this.followUpPriority);
user.addTag(BattlerTagType.CHARGING, 1, move.id, user.id);
resolve(true); resolve(true);
}); });
} else } else {
user.lapseTag(BattlerTagType.CHARGING);
resolve(false); resolve(false);
}
}); });
} }
@ -1570,7 +1573,7 @@ export class CopyStatsAttr extends MoveEffectAttr {
user.addTag(BattlerTagType.CRIT_BOOST, 0, move.id); user.addTag(BattlerTagType.CRIT_BOOST, 0, move.id);
else else
user.removeTag(BattlerTagType.CRIT_BOOST); user.removeTag(BattlerTagType.CRIT_BOOST);
target.updateInfo();
user.updateInfo(); user.updateInfo();
target.scene.queueMessage(getPokemonMessage(user, 'copied\n') + getPokemonMessage(target, `'s stat changes!`)); target.scene.queueMessage(getPokemonMessage(user, 'copied\n') + getPokemonMessage(target, `'s stat changes!`));
@ -1586,7 +1589,7 @@ export class InvertStatsAttr extends MoveEffectAttr {
for (let s = 0; s < target.summonData.battleStats.length; s++) for (let s = 0; s < target.summonData.battleStats.length; s++)
target.summonData.battleStats[s] *= -1; target.summonData.battleStats[s] *= -1;
target.updateInfo();
user.updateInfo(); user.updateInfo();
target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere all reversed!`)); target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere all reversed!`));
@ -1602,7 +1605,7 @@ export class ResetStatsAttr extends MoveEffectAttr {
for (let s = 0; s < target.summonData.battleStats.length; s++) for (let s = 0; s < target.summonData.battleStats.length; s++)
target.summonData.battleStats[s] = 0; target.summonData.battleStats[s] = 0;
target.updateInfo();
user.updateInfo(); user.updateInfo();
target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere eliminated!`)); target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere eliminated!`));
@ -1770,13 +1773,13 @@ export class BattleStatRatioPowerAttr extends VariablePowerAttr {
if (this.invert) { if (this.invert) {
// Gyro ball uses a specific formula // Gyro ball uses a specific formula
let userSpeed = user.getStat(this.stat); let userSpeed = user.getBattleStat(this.stat);
if (userSpeed < 1) { if (userSpeed < 1) {
// Gen 6+ always have 1 base power // Gen 6+ always have 1 base power
power.value = 1; power.value = 1;
return true; return true;
} }
let bp = Math.floor(Math.min(150, 25 * target.getStat(this.stat) / userSpeed + 1)); let bp = Math.floor(Math.min(150, 25 * target.getBattleStat(this.stat) / userSpeed + 1));
power.value = bp; power.value = bp;
return true; return true;
} }

View File

@ -3300,7 +3300,7 @@ export const starterPassiveAbilities = {
[Species.ENTEI]: Abilities.MOXIE, [Species.ENTEI]: Abilities.MOXIE,
[Species.SUICUNE]: Abilities.UNAWARE, [Species.SUICUNE]: Abilities.UNAWARE,
[Species.LARVITAR]: Abilities.SAND_FORCE, [Species.LARVITAR]: Abilities.SAND_FORCE,
[Species.LUGIA]: Abilities.STORM_DRAIN, [Species.LUGIA]: Abilities.DELTA_STREAM,
[Species.HO_OH]: Abilities.MAGIC_GUARD, [Species.HO_OH]: Abilities.MAGIC_GUARD,
[Species.CELEBI]: Abilities.GRASSY_SURGE, [Species.CELEBI]: Abilities.GRASSY_SURGE,
[Species.TREECKO]: Abilities.GRASSY_SURGE, [Species.TREECKO]: Abilities.GRASSY_SURGE,
@ -3366,13 +3366,13 @@ export const starterPassiveAbilities = {
[Species.LUVDISC]: Abilities.PICKUP, [Species.LUVDISC]: Abilities.PICKUP,
[Species.BAGON]: Abilities.GALE_WINGS, [Species.BAGON]: Abilities.GALE_WINGS,
[Species.BELDUM]: Abilities.IRON_FIST, [Species.BELDUM]: Abilities.IRON_FIST,
[Species.REGIROCK]: Abilities.REGENERATOR, [Species.REGIROCK]: Abilities.SAND_STREAM,
[Species.REGICE]: Abilities.ICE_SCALES, [Species.REGICE]: Abilities.SNOW_WARNING,
[Species.REGISTEEL]: Abilities.STEELY_SPIRIT, [Species.REGISTEEL]: Abilities.FILTER,
[Species.LATIAS]: Abilities.SERENE_GRACE, [Species.LATIAS]: Abilities.SOUL_HEART,
[Species.LATIOS]: Abilities.SERENE_GRACE, [Species.LATIOS]: Abilities.TINTED_LENS,
[Species.KYOGRE]: Abilities.HYDRATION, [Species.KYOGRE]: Abilities.HYDRATION,
[Species.GROUDON]: Abilities.EARTH_EATER, [Species.GROUDON]: Abilities.FLAME_BODY,
[Species.RAYQUAZA]: Abilities.UNNERVE, [Species.RAYQUAZA]: Abilities.UNNERVE,
[Species.JIRACHI]: Abilities.COMATOSE, [Species.JIRACHI]: Abilities.COMATOSE,
[Species.DEOXYS]: Abilities.PROTEAN, [Species.DEOXYS]: Abilities.PROTEAN,
@ -3414,16 +3414,16 @@ export const starterPassiveAbilities = {
[Species.MANTYKE]: Abilities.STORM_DRAIN, [Species.MANTYKE]: Abilities.STORM_DRAIN,
[Species.SNOVER]: Abilities.SNOW_CLOAK, [Species.SNOVER]: Abilities.SNOW_CLOAK,
[Species.ROTOM]: Abilities.HADRON_ENGINE, [Species.ROTOM]: Abilities.HADRON_ENGINE,
[Species.UXIE]: Abilities.ILLUSION, [Species.UXIE]: Abilities.UNAWARE,
[Species.MESPRIT]: Abilities.MOODY, [Species.MESPRIT]: Abilities.MOODY,
[Species.AZELF]: Abilities.NEUROFORCE, [Species.AZELF]: Abilities.NEUROFORCE,
[Species.DIALGA]: Abilities.SPEED_BOOST, [Species.DIALGA]: Abilities.SPEED_BOOST,
[Species.PALKIA]: Abilities.MAGIC_BOUNCE, [Species.PALKIA]: Abilities.MULTISCALE,
[Species.HEATRAN]: Abilities.ROUGH_SKIN, [Species.HEATRAN]: Abilities.FILTER,
[Species.REGIGIGAS]: Abilities.MINDS_EYE, [Species.REGIGIGAS]: Abilities.MINDS_EYE,
[Species.GIRATINA]: Abilities.SHADOW_TAG, [Species.GIRATINA]: Abilities.SHADOW_SHIELD,
[Species.CRESSELIA]: Abilities.MAGIC_BOUNCE, [Species.CRESSELIA]: Abilities.MAGIC_BOUNCE,
[Species.PHIONE]: Abilities.SWIFT_SWIM, [Species.PHIONE]: Abilities.SIMPLE,
[Species.MANAPHY]: Abilities.SIMPLE, [Species.MANAPHY]: Abilities.SIMPLE,
[Species.DARKRAI]: Abilities.UNNERVE, [Species.DARKRAI]: Abilities.UNNERVE,
[Species.SHAYMIN]: Abilities.FLOWER_VEIL, [Species.SHAYMIN]: Abilities.FLOWER_VEIL,
@ -3500,16 +3500,16 @@ export const starterPassiveAbilities = {
[Species.LARVESTA]: Abilities.DROUGHT, [Species.LARVESTA]: Abilities.DROUGHT,
[Species.COBALION]: Abilities.INTREPID_SWORD, [Species.COBALION]: Abilities.INTREPID_SWORD,
[Species.TERRAKION]: Abilities.ROCKY_PAYLOAD, [Species.TERRAKION]: Abilities.ROCKY_PAYLOAD,
[Species.VIRIZION]: Abilities.SYMBIOSIS, [Species.VIRIZION]: Abilities.SHARPNESS,
[Species.TORNADUS]: Abilities.DELTA_STREAM, [Species.TORNADUS]: Abilities.DRIZZLE,
[Species.THUNDURUS]: Abilities.DRIZZLE, [Species.THUNDURUS]: Abilities.DRIZZLE,
[Species.RESHIRAM]: Abilities.ORICHALCUM_PULSE, [Species.RESHIRAM]: Abilities.ORICHALCUM_PULSE,
[Species.ZEKROM]: Abilities.HADRON_ENGINE, [Species.ZEKROM]: Abilities.HADRON_ENGINE,
[Species.LANDORUS]: Abilities.PRANKSTER, [Species.LANDORUS]: Abilities.STORM_DRAIN,
[Species.KYUREM]: Abilities.SNOW_WARNING, [Species.KYUREM]: Abilities.SNOW_WARNING,
[Species.KELDEO]: Abilities.SHARPNESS, [Species.KELDEO]: Abilities.GRIM_NEIGH,
[Species.MELOETTA]: Abilities.PUNK_ROCK, [Species.MELOETTA]: Abilities.MINDS_EYE,
[Species.GENESECT]: Abilities.MEGA_LAUNCHER, [Species.GENESECT]: Abilities.REGENERATOR,
[Species.CHESPIN]: Abilities.IRON_BARBS, [Species.CHESPIN]: Abilities.IRON_BARBS,
[Species.FENNEKIN]: Abilities.MAGIC_BOUNCE, [Species.FENNEKIN]: Abilities.MAGIC_BOUNCE,
[Species.FROAKIE]: Abilities.ADAPTABILITY, [Species.FROAKIE]: Abilities.ADAPTABILITY,
@ -3541,11 +3541,11 @@ export const starterPassiveAbilities = {
[Species.PUMPKABOO]: Abilities.FLASH_FIRE, [Species.PUMPKABOO]: Abilities.FLASH_FIRE,
[Species.BERGMITE]: Abilities.MIRROR_ARMOR, [Species.BERGMITE]: Abilities.MIRROR_ARMOR,
[Species.NOIBAT]: Abilities.PUNK_ROCK, [Species.NOIBAT]: Abilities.PUNK_ROCK,
[Species.XERNEAS]: Abilities.COMPETITIVE, [Species.XERNEAS]: Abilities.MISTY_SURGE,
[Species.YVELTAL]: Abilities.DEFIANT, [Species.YVELTAL]: Abilities.SOUL_HEART,
[Species.ZYGARDE]: Abilities.REGENERATOR, [Species.ZYGARDE]: Abilities.HUGE_POWER,
[Species.DIANCIE]: Abilities.QUEENLY_MAJESTY, [Species.DIANCIE]: Abilities.LEVITATE,
[Species.HOOPA]: Abilities.TRACE, [Species.HOOPA]: Abilities.OPPORTUNIST,
[Species.VOLCANION]: Abilities.FILTER, [Species.VOLCANION]: Abilities.FILTER,
[Species.ROWLET]: Abilities.SNIPER, [Species.ROWLET]: Abilities.SNIPER,
[Species.LITTEN]: Abilities.PRANKSTER, [Species.LITTEN]: Abilities.PRANKSTER,
@ -3582,26 +3582,26 @@ export const starterPassiveAbilities = {
[Species.DRAMPA]: Abilities.FLASH_FIRE, [Species.DRAMPA]: Abilities.FLASH_FIRE,
[Species.DHELMISE]: Abilities.INFILTRATOR, [Species.DHELMISE]: Abilities.INFILTRATOR,
[Species.JANGMO_O]: Abilities.DANCER, [Species.JANGMO_O]: Abilities.DANCER,
[Species.TAPU_KOKO]: Abilities.GALVANIZE, [Species.TAPU_KOKO]: Abilities.TRANSISTOR,
[Species.TAPU_LELE]: Abilities.BERSERK, [Species.TAPU_LELE]: Abilities.SHEER_FORCE,
[Species.TAPU_BULU]: Abilities.FLOWER_VEIL, [Species.TAPU_BULU]: Abilities.GRASS_PELT,
[Species.TAPU_FINI]: Abilities.FAIRY_AURA, [Species.TAPU_FINI]: Abilities.FAIRY_AURA,
[Species.COSMOG]: Abilities.BEAST_BOOST, [Species.COSMOG]: Abilities.BEAST_BOOST,
[Species.NIHILEGO]: Abilities.POISON_PUPPETEER, [Species.NIHILEGO]: Abilities.LEVITATE,
[Species.BUZZWOLE]: Abilities.MOXIE, [Species.BUZZWOLE]: Abilities.MOXIE,
[Species.PHEROMOSA]: Abilities.MOXIE, [Species.PHEROMOSA]: Abilities.TINTED_LENS,
[Species.XURKITREE]: Abilities.LIGHTNING_ROD, [Species.XURKITREE]: Abilities.TRANSISTOR,
[Species.CELESTEELA]: Abilities.CHLOROPHYLL, [Species.CELESTEELA]: Abilities.HEATPROOF,
[Species.KARTANA]: Abilities.SHARPNESS, [Species.KARTANA]: Abilities.SHARPNESS,
[Species.GUZZLORD]: Abilities.GLUTTONY, [Species.GUZZLORD]: Abilities.INNARDS_OUT,
[Species.NECROZMA]: Abilities.BEAST_BOOST, [Species.NECROZMA]: Abilities.BEAST_BOOST,
[Species.MAGEARNA]: Abilities.STEELY_SPIRIT, [Species.MAGEARNA]: Abilities.STEELY_SPIRIT,
[Species.MARSHADOW]: Abilities.IRON_FIST, [Species.MARSHADOW]: Abilities.IRON_FIST,
[Species.POIPOLE]: Abilities.MERCILESS, [Species.POIPOLE]: Abilities.SHEER_FORCE,
[Species.STAKATAKA]: Abilities.DAUNTLESS_SHIELD, [Species.STAKATAKA]: Abilities.SOLID_ROCK,
[Species.BLACEPHALON]: Abilities.MAGIC_GUARD, [Species.BLACEPHALON]: Abilities.MAGIC_GUARD,
[Species.ZERAORA]: Abilities.MOTOR_DRIVE, [Species.ZERAORA]: Abilities.TOUGH_CLAWS,
[Species.MELTAN]: Abilities.FULL_METAL_BODY, [Species.MELTAN]: Abilities.STEELY_SPIRIT,
[Species.GROOKEY]: Abilities.GRASS_PELT, [Species.GROOKEY]: Abilities.GRASS_PELT,
[Species.SCORBUNNY]: Abilities.RECKLESS, [Species.SCORBUNNY]: Abilities.RECKLESS,
[Species.SOBBLE]: Abilities.SUPER_LUCK, [Species.SOBBLE]: Abilities.SUPER_LUCK,
@ -3639,17 +3639,17 @@ export const starterPassiveAbilities = {
[Species.ARCTOVISH]: Abilities.STRONG_JAW, [Species.ARCTOVISH]: Abilities.STRONG_JAW,
[Species.DURALUDON]: Abilities.MEGA_LAUNCHER, [Species.DURALUDON]: Abilities.MEGA_LAUNCHER,
[Species.DREEPY]: Abilities.PARENTAL_BOND, [Species.DREEPY]: Abilities.PARENTAL_BOND,
[Species.ZACIAN]: Abilities.GUARD_DOG, [Species.ZACIAN]: Abilities.UNNERVE,
[Species.ZAMAZENTA]: Abilities.GUARD_DOG, [Species.ZAMAZENTA]: Abilities.STAMINA,
[Species.ETERNATUS]: Abilities.SUPREME_OVERLORD, [Species.ETERNATUS]: Abilities.SUPREME_OVERLORD,
[Species.KUBFU]: Abilities.IRON_FIST, [Species.KUBFU]: Abilities.IRON_FIST,
[Species.ZARUDE]: Abilities.PRANKSTER, [Species.ZARUDE]: Abilities.GRASSY_SURGE,
[Species.REGIELEKI]: Abilities.LEVITATE, [Species.REGIELEKI]: Abilities.ELECTRIC_SURGE,
[Species.REGIDRAGO]: Abilities.INTIMIDATE, [Species.REGIDRAGO]: Abilities.MULTISCALE,
[Species.GLASTRIER]: Abilities.FILTER, [Species.GLASTRIER]: Abilities.FILTER,
[Species.SPECTRIER]: Abilities.PERISH_BODY, [Species.SPECTRIER]: Abilities.SHADOW_SHIELD,
[Species.CALYREX]: Abilities.HARVEST, [Species.CALYREX]: Abilities.HARVEST,
[Species.ENAMORUS]: Abilities.PRANKSTER, [Species.ENAMORUS]: Abilities.FAIRY_AURA,
[Species.SPRIGATITO]: Abilities.MAGICIAN, [Species.SPRIGATITO]: Abilities.MAGICIAN,
[Species.FUECOCO]: Abilities.EARTH_EATER, [Species.FUECOCO]: Abilities.EARTH_EATER,
[Species.QUAXLY]: Abilities.DANCER, [Species.QUAXLY]: Abilities.DANCER,
@ -3688,40 +3688,40 @@ export const starterPassiveAbilities = {
[Species.DONDOZO]: Abilities.GLUTTONY, [Species.DONDOZO]: Abilities.GLUTTONY,
[Species.TATSUGIRI]: Abilities.WATER_BUBBLE, [Species.TATSUGIRI]: Abilities.WATER_BUBBLE,
[Species.GREAT_TUSK]: Abilities.INTIMIDATE, [Species.GREAT_TUSK]: Abilities.INTIMIDATE,
[Species.SCREAM_TAIL]: Abilities.PIXILATE, [Species.SCREAM_TAIL]: Abilities.UNAWARE,
[Species.BRUTE_BONNET]: Abilities.BEAST_BOOST, [Species.BRUTE_BONNET]: Abilities.BEAST_BOOST,
[Species.FLUTTER_MANE]: Abilities.DAZZLING, [Species.FLUTTER_MANE]: Abilities.DAZZLING,
[Species.SLITHER_WING]: Abilities.MOXIE, [Species.SLITHER_WING]: Abilities.SCRAPPY,
[Species.SANDY_SHOCKS]: Abilities.EARTH_EATER, [Species.SANDY_SHOCKS]: Abilities.EARTH_EATER,
[Species.IRON_TREADS]: Abilities.BULLETPROOF, [Species.IRON_TREADS]: Abilities.STEELY_SPIRIT,
[Species.IRON_BUNDLE]: Abilities.SNOW_WARNING, [Species.IRON_BUNDLE]: Abilities.SNOW_WARNING,
[Species.IRON_HANDS]: Abilities.IRON_FIST, [Species.IRON_HANDS]: Abilities.IRON_FIST,
[Species.IRON_JUGULIS]: Abilities.NO_GUARD, [Species.IRON_JUGULIS]: Abilities.AERILATE,
[Species.IRON_MOTH]: Abilities.LEVITATE, [Species.IRON_MOTH]: Abilities.LEVITATE,
[Species.IRON_THORNS]: Abilities.SAND_STREAM, [Species.IRON_THORNS]: Abilities.SAND_STREAM,
[Species.FRIGIBAX]: Abilities.THICK_FAT, [Species.FRIGIBAX]: Abilities.THICK_FAT,
[Species.GIMMIGHOUL]: Abilities.SUPER_LUCK, [Species.GIMMIGHOUL]: Abilities.SUPER_LUCK,
[Species.WO_CHIEN]: Abilities.TRIAGE, [Species.WO_CHIEN]: Abilities.GRASSY_SURGE,
[Species.CHIEN_PAO]: Abilities.REFRIGERATE, [Species.CHIEN_PAO]: Abilities.INTREPID_SWORD,
[Species.TING_LU]: Abilities.STAMINA, [Species.TING_LU]: Abilities.STAMINA,
[Species.CHI_YU]: Abilities.BLAZE, [Species.CHI_YU]: Abilities.DROUGHT,
[Species.ROARING_MOON]: Abilities.AERILATE, [Species.ROARING_MOON]: Abilities.TOUGH_CLAWS,
[Species.IRON_VALIANT]: Abilities.DOWNLOAD, [Species.IRON_VALIANT]: Abilities.DOWNLOAD,
[Species.KORAIDON]: Abilities.PROTOSYNTHESIS, [Species.KORAIDON]: Abilities.PROTOSYNTHESIS,
[Species.MIRAIDON]: Abilities.QUARK_DRIVE, [Species.MIRAIDON]: Abilities.QUARK_DRIVE,
[Species.WALKING_WAKE]: Abilities.BEAST_BOOST, [Species.WALKING_WAKE]: Abilities.BEAST_BOOST,
[Species.IRON_LEAVES]: Abilities.SHARPNESS, [Species.IRON_LEAVES]: Abilities.SHARPNESS,
[Species.POLTCHAGEIST]: Abilities.FLAME_BODY, [Species.POLTCHAGEIST]: Abilities.FLAME_BODY,
[Species.OKIDOGI]: Abilities.INTIMIDATE, [Species.OKIDOGI]: Abilities.FUR_COAT,
[Species.MUNKIDORI]: Abilities.PRANKSTER, [Species.MUNKIDORI]: Abilities.NEUROFORCE,
[Species.FEZANDIPITI]: Abilities.DAZZLING, [Species.FEZANDIPITI]: Abilities.LEVITATE,
[Species.OGERPON]: Abilities.OPPORTUNIST, [Species.OGERPON]: Abilities.OPPORTUNIST,
[Species.GOUGING_FIRE]: Abilities.BEAST_BOOST, [Species.GOUGING_FIRE]: Abilities.BEAST_BOOST,
[Species.RAGING_BOLT]: Abilities.BEAST_BOOST, [Species.RAGING_BOLT]: Abilities.BEAST_BOOST,
[Species.IRON_BOULDER]: Abilities.SHARPNESS, [Species.IRON_BOULDER]: Abilities.SHARPNESS,
[Species.IRON_CROWN]: Abilities.SHARPNESS, [Species.IRON_CROWN]: Abilities.SHARPNESS,
[Species.TERAPAGOS]: Abilities.PROTEAN, [Species.TERAPAGOS]: Abilities.REGENERATOR,
[Species.PECHARUNT]: Abilities.CORROSION, [Species.PECHARUNT]: Abilities.TOXIC_CHAIN,
[Species.ALOLA_RATTATA]: Abilities.CHEEK_POUCH, [Species.ALOLA_RATTATA]: Abilities.CHEEK_POUCH,
[Species.ALOLA_SANDSHREW]: Abilities.ICE_BODY, [Species.ALOLA_SANDSHREW]: Abilities.ICE_BODY,
[Species.ALOLA_VULPIX]: Abilities.ICE_BODY, [Species.ALOLA_VULPIX]: Abilities.ICE_BODY,
@ -3736,7 +3736,7 @@ export const starterPassiveAbilities = {
[Species.GALAR_FARFETCHD]: Abilities.SUPER_LUCK, [Species.GALAR_FARFETCHD]: Abilities.SUPER_LUCK,
[Species.GALAR_ARTICUNO]: Abilities.SERENE_GRACE, [Species.GALAR_ARTICUNO]: Abilities.SERENE_GRACE,
[Species.GALAR_ZAPDOS]: Abilities.TOUGH_CLAWS, [Species.GALAR_ZAPDOS]: Abilities.TOUGH_CLAWS,
[Species.GALAR_MOLTRES]: Abilities.REGENERATOR, [Species.GALAR_MOLTRES]: Abilities.DARK_AURA,
[Species.GALAR_CORSOLA]: Abilities.SHADOW_TAG, [Species.GALAR_CORSOLA]: Abilities.SHADOW_TAG,
[Species.GALAR_ZIGZAGOON]: Abilities.PICKPOCKET, [Species.GALAR_ZIGZAGOON]: Abilities.PICKPOCKET,
[Species.GALAR_DARUMAKA]: Abilities.FLASH_FIRE, [Species.GALAR_DARUMAKA]: Abilities.FLASH_FIRE,

View File

@ -27,7 +27,7 @@ import { TempBattleStat } from '../data/temp-battle-stat';
import { ArenaTagSide, WeakenMoveScreenTag, WeakenMoveTypeTag } from '../data/arena-tag'; import { ArenaTagSide, WeakenMoveScreenTag, WeakenMoveTypeTag } from '../data/arena-tag';
import { ArenaTagType } from "../data/enums/arena-tag-type"; import { ArenaTagType } from "../data/enums/arena-tag-type";
import { Biome } from "../data/enums/biome"; import { Biome } from "../data/enums/biome";
import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr } from '../data/ability'; import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr } from '../data/ability';
import { Abilities } from "#app/data/enums/abilities"; import { Abilities } from "#app/data/enums/abilities";
import PokemonData from '../system/pokemon-data'; import PokemonData from '../system/pokemon-data';
import Battle, { BattlerIndex } from '../battle'; import Battle, { BattlerIndex } from '../battle';
@ -1332,7 +1332,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
} }
const sourceAtk = new Utils.IntegerHolder(source.getBattleStat(isPhysical ? Stat.ATK : Stat.SPATK, this, null, isCritical)); const sourceAtk = new Utils.IntegerHolder(source.getBattleStat(isPhysical ? Stat.ATK : Stat.SPATK, this, null, isCritical));
const targetDef = new Utils.IntegerHolder(this.getBattleStat(isPhysical ? Stat.DEF : Stat.SPDEF, source, move, isCritical)); const targetDef = new Utils.IntegerHolder(this.getBattleStat(isPhysical ? Stat.DEF : Stat.SPDEF, source, move, isCritical));
const criticalMultiplier = isCritical ? 1.5 : 1; const criticalMultiplier = new Utils.NumberHolder(isCritical ? 1.5 : 1);
applyAbAttrs(MultCritAbAttr, source, null, criticalMultiplier);
const screenMultiplier = new Utils.NumberHolder(1); const screenMultiplier = new Utils.NumberHolder(1);
if (!isCritical) { if (!isCritical) {
this.scene.arena.applyTagsForSide(WeakenMoveScreenTag, this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY, move.category, this.scene.currentBattle.double, screenMultiplier); this.scene.arena.applyTagsForSide(WeakenMoveScreenTag, this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY, move.category, this.scene.currentBattle.double, screenMultiplier);
@ -1355,7 +1356,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
applyMoveAttrs(VariableDefAttr, source, this, move, targetDef); applyMoveAttrs(VariableDefAttr, source, this, move, targetDef);
if (!isTypeImmune) { if (!isTypeImmune) {
damage.value = Math.ceil(((((2 * source.level / 5 + 2) * power.value * sourceAtk.value / targetDef.value) / 50) + 2) * stabMultiplier.value * typeMultiplier.value * arenaAttackTypeMultiplier * screenMultiplier.value * ((this.scene.randBattleSeedInt(15) + 85) / 100) * criticalMultiplier); damage.value = Math.ceil(((((2 * source.level / 5 + 2) * power.value * sourceAtk.value / targetDef.value) / 50) + 2) * stabMultiplier.value * typeMultiplier.value * arenaAttackTypeMultiplier * screenMultiplier.value * ((this.scene.randBattleSeedInt(15) + 85) / 100) * criticalMultiplier.value);
if (isPhysical && source.status && source.status.effect === StatusEffect.BURN) { if (isPhysical && source.status && source.status.effect === StatusEffect.BURN) {
const burnDamageReductionCancelled = new Utils.BooleanHolder(false); const burnDamageReductionCancelled = new Utils.BooleanHolder(false);
applyAbAttrs(BypassBurnDamageReductionAbAttr, source, burnDamageReductionCancelled); applyAbAttrs(BypassBurnDamageReductionAbAttr, source, burnDamageReductionCancelled);
@ -2473,7 +2474,7 @@ export class PlayerPokemon extends Pokemon {
if (newEvolution.condition.predicate(this)) { if (newEvolution.condition.predicate(this)) {
const newPokemon = this.scene.addPlayerPokemon(this.species, this.level, this.abilityIndex, this.formIndex, undefined, this.shiny, this.variant, this.ivs, this.nature); const newPokemon = this.scene.addPlayerPokemon(this.species, this.level, this.abilityIndex, this.formIndex, undefined, this.shiny, this.variant, this.ivs, this.nature);
newPokemon.natureOverride = this.natureOverride; newPokemon.natureOverride = this.natureOverride;
newPokemon.moveset = this.moveset.slice(); newPokemon.moveset = this.copyMoveset();
newPokemon.luck = this.luck; newPokemon.luck = this.luck;
newPokemon.fusionSpecies = this.fusionSpecies; newPokemon.fusionSpecies = this.fusionSpecies;
@ -2583,6 +2584,15 @@ export class PlayerPokemon extends Pokemon {
this.updateFusionPalette(); this.updateFusionPalette();
}); });
} }
/** Returns a deep copy of this Pokemon's moveset array */
copyMoveset(): PokemonMove[] {
let newMoveset = [];
this.moveset.forEach(move =>
newMoveset.push(new PokemonMove(move.moveId, 0, move.ppUp, move.virtual)));
return newMoveset;
}
} }
export class EnemyPokemon extends Pokemon { export class EnemyPokemon extends Pokemon {

View File

@ -223,6 +223,7 @@ export class LoadingScene extends SceneBase {
this.loadSe('sparkle'); this.loadSe('sparkle');
this.loadSe('restore'); this.loadSe('restore');
this.loadSe('shine'); this.loadSe('shine');
this.loadSe('shing');
this.loadSe('charge'); this.loadSe('charge');
this.loadSe('beam'); this.loadSe('beam');
this.loadSe('upgrade'); this.loadSe('upgrade');

View File

@ -605,208 +605,208 @@ export const pokemon: SimpleTranslationEntries = {
"tynamo": "Zapplardin", "tynamo": "Zapplardin",
"eelektrik": "Zapplalek", "eelektrik": "Zapplalek",
"eelektross": "Zapplarang", "eelektross": "Zapplarang",
"elgyem": "Elgyem", "elgyem": "Pygraulon",
"beheeyem": "Beheeyem", "beheeyem": "Megalon",
"litwick": "Litwick", "litwick": "Lichtel",
"lampent": "Lampent", "lampent": "Laternecto",
"chandelure": "Chandelure", "chandelure": "Skelabra",
"axew": "Axew", "axew": "Milza",
"fraxure": "Fraxure", "fraxure": "Scharfax",
"haxorus": "Haxorus", "haxorus": "Maxax",
"cubchoo": "Cubchoo", "cubchoo": "Petznief",
"beartic": "Beartic", "beartic": "Siberio",
"cryogonal": "Cryogonal", "cryogonal": "Frigometri",
"shelmet": "Shelmet", "shelmet": "Schnuthelm",
"accelgor": "Accelgor", "accelgor": "Hydragil",
"stunfisk": "Stunfisk", "stunfisk": "Flunschlik",
"mienfoo": "Mienfoo", "mienfoo": "Lin-Fu",
"mienshao": "Mienshao", "mienshao": "Wie-Shu",
"druddigon": "Druddigon", "druddigon": "Shardrago",
"golett": "Golett", "golett": "Golbit",
"golurk": "Golurk", "golurk": "Golgantes",
"pawniard": "Pawniard", "pawniard": "Gladiantri",
"bisharp": "Bisharp", "bisharp": "Ceasurio",
"bouffalant": "Bouffalant", "bouffalant": "Bisofank",
"rufflet": "Rufflet", "rufflet": "Geronimatz",
"braviary": "Braviary", "braviary": "Washakwil",
"vullaby": "Vullaby", "vullaby": "Skallyk",
"mandibuzz": "Mandibuzz", "mandibuzz": "Grypheldis",
"heatmor": "Heatmor", "heatmor": "Furnifraß",
"durant": "Durant", "durant": "Fermicula",
"deino": "Deino", "deino": "Kapuno",
"zweilous": "Zweilous", "zweilous": "Duodino",
"hydreigon": "Hydreigon", "hydreigon": "Trikephalo",
"larvesta": "Larvesta", "larvesta": "Ignivor",
"volcarona": "Volcarona", "volcarona": "Ramoth",
"cobalion": "Cobalion", "cobalion": "Kobalium",
"terrakion": "Terrakion", "terrakion": "Terrakium",
"virizion": "Virizion", "virizion": "Viridium",
"tornadus": "Tornadus", "tornadus": "Boreos",
"thundurus": "Thundurus", "thundurus": "Voltolos",
"reshiram": "Reshiram", "reshiram": "Reshiram",
"zekrom": "Zekrom", "zekrom": "Zekrom",
"landorus": "Landorus", "landorus": "Dementeros",
"kyurem": "Kyurem", "kyurem": "Kyurem",
"keldeo": "Keldeo", "keldeo": "Keldeo",
"meloetta": "Meloetta", "meloetta": "Meloetta",
"genesect": "Genesect", "genesect": "Genesect",
"chespin": "Chespin", "chespin": "Igamaro",
"quilladin": "Quilladin", "quilladin": "Igastarnish",
"chesnaught": "Chesnaught", "chesnaught": "Brigaron",
"fennekin": "Fennekin", "fennekin": "Fynx",
"braixen": "Braixen", "braixen": "Rutena",
"delphox": "Delphox", "delphox": "Fennexis",
"froakie": "Froakie", "froakie": "Froxy",
"frogadier": "Frogadier", "frogadier": "Amphizel",
"greninja": "Greninja", "greninja": "Quajutsu",
"bunnelby": "Bunnelby", "bunnelby": "Scoppel",
"diggersby": "Diggersby", "diggersby": "Grebbit",
"fletchling": "Fletchling", "fletchling": "Dartiri",
"fletchinder": "Fletchinder", "fletchinder": "Dartignis",
"talonflame": "Talonflame", "talonflame": "Fiaro",
"scatterbug": "Scatterbug", "scatterbug": "Purmel",
"spewpa": "Spewpa", "spewpa": "Puponcho",
"vivillon": "Vivillon", "vivillon": "Vivillon",
"litleo": "Litleo", "litleo": "Leufeo",
"pyroar": "Pyroar", "pyroar": "Pyroleo",
"flabebe": "Flabébé", "flabebe": "Flabébé",
"floette": "Floette", "floette": "Floette",
"florges": "Florges", "florges": "Florges",
"skiddo": "Skiddo", "skiddo": "Mähikel",
"gogoat": "Gogoat", "gogoat": "Chevrumm",
"pancham": "Pancham", "pancham": "Pam-Pam",
"pangoro": "Pangoro", "pangoro": "Pandrago",
"furfrou": "Furfrou", "furfrou": "Coiffwaff",
"espurr": "Espurr", "espurr": "Psiau",
"meowstic": "Meowstic", "meowstic": "Psiaugon",
"honedge": "Honedge", "honedge": "Gramokles",
"doublade": "Doublade", "doublade": "Duokles",
"aegislash": "Aegislash", "aegislash": "Durengard",
"spritzee": "Spritzee", "spritzee": "Parfi",
"aromatisse": "Aromatisse", "aromatisse": "Parfinesse",
"swirlix": "Swirlix", "swirlix": "Flauschling",
"slurpuff": "Slurpuff", "slurpuff": "Sabbaione",
"inkay": "Inkay", "inkay": "Iscalar",
"malamar": "Malamar", "malamar": "Calamanero",
"binacle": "Binacle", "binacle": "Bithora",
"barbaracle": "Barbaracle", "barbaracle": "Thanathora",
"skrelp": "Skrelp", "skrelp": "Algitt",
"dragalge": "Dragalge", "dragalge": "Tandrak",
"clauncher": "Clauncher", "clauncher": "Scampisto",
"clawitzer": "Clawitzer", "clawitzer": "Wummer",
"helioptile": "Helioptile", "helioptile": "Eguana",
"heliolisk": "Heliolisk", "heliolisk": "Elezard",
"tyrunt": "Tyrunt", "tyrunt": "Balgoras",
"tyrantrum": "Tyrantrum", "tyrantrum": "Monargoras",
"amaura": "Amaura", "amaura": "Amarino",
"aurorus": "Aurorus", "aurorus": "Amagarga",
"sylveon": "Sylveon", "sylveon": "Feelinara",
"hawlucha": "Hawlucha", "hawlucha": "Resladero",
"dedenne": "Dedenne", "dedenne": "Dedenne",
"carbink": "Carbink", "carbink": "Rocara",
"goomy": "Goomy", "goomy": "Viscora",
"sliggoo": "Sliggoo", "sliggoo": "Viscargot",
"goodra": "Goodra", "goodra": "Viscogon",
"klefki": "Klefki", "klefki": "Clavion",
"phantump": "Phantump", "phantump": "Paragoni",
"trevenant": "Trevenant", "trevenant": "Trombork",
"pumpkaboo": "Pumpkaboo", "pumpkaboo": "Irrbis",
"gourgeist": "Gourgeist", "gourgeist": "Pumpdjinn",
"bergmite": "Bergmite", "bergmite": "Arktip",
"avalugg": "Avalugg", "avalugg": "Arktilas",
"noibat": "Noibat", "noibat": "eF-eM",
"noivern": "Noivern", "noivern": "UHaFnir",
"xerneas": "Xerneas", "xerneas": "Xerneas",
"yveltal": "Yveltal", "yveltal": "Yveltal",
"zygarde": "Zygarde", "zygarde": "Zygarde",
"diancie": "Diancie", "diancie": "Diancie",
"hoopa": "Hoopa", "hoopa": "Hoopa",
"volcanion": "Volcanion", "volcanion": "Volcanion",
"rowlet": "Rowlet", "rowlet": "Bauz",
"dartrix": "Dartrix", "dartrix": "Arboretoss",
"decidueye": "Decidueye", "decidueye": "Silvarro",
"litten": "Litten", "litten": "Flamiau",
"torracat": "Torracat", "torracat": "Miezunder",
"incineroar": "Incineroar", "incineroar": "Fuegro",
"popplio": "Popplio", "popplio": "Robball",
"brionne": "Brionne", "brionne": "Marikeck",
"primarina": "Primarina", "primarina": "Primarene",
"pikipek": "Pikipek", "pikipek": "Peppeck",
"trumbeak": "Trumbeak", "trumbeak": "Trompeck",
"toucannon": "Toucannon", "toucannon": "Tukanon",
"yungoos": "Yungoos", "yungoos": "Mangunior",
"gumshoos": "Gumshoos", "gumshoos": "Manguspektor",
"grubbin": "Grubbin", "grubbin": "Mabula",
"charjabug": "Charjabug", "charjabug": "Akkup",
"vikavolt": "Vikavolt", "vikavolt": "Donarion",
"crabrawler": "Crabrawler", "crabrawler": "Krabbox",
"crabominable": "Crabominable", "crabominable": "Krawell",
"oricorio": "Oricorio", "oricorio": "Choreogel",
"cutiefly": "Cutiefly", "cutiefly": "Wommel",
"ribombee": "Ribombee", "ribombee": "Bandelby",
"rockruff": "Rockruff", "rockruff": "Wuffels",
"lycanroc": "Lycanroc", "lycanroc": "Wolwerock",
"wishiwashi": "Wishiwashi", "wishiwashi": "Lusardin",
"mareanie": "Mareanie", "mareanie": "Garstella",
"toxapex": "Toxapex", "toxapex": "Aggrostella",
"mudbray": "Mudbray", "mudbray": "Pampuli",
"mudsdale": "Mudsdale", "mudsdale": "Pampross",
"dewpider": "Dewpider", "dewpider": "Araqua",
"araquanid": "Araquanid", "araquanid": "Aranestro",
"fomantis": "Fomantis", "fomantis": "Imantis",
"lurantis": "Lurantis", "lurantis": "Mantidea",
"morelull": "Morelull", "morelull": "Bubungus",
"shiinotic": "Shiinotic", "shiinotic": "Lamellus",
"salandit": "Salandit", "salandit": "Molunk",
"salazzle": "Salazzle", "salazzle": "Amfira",
"stufful": "Stufful", "stufful": "Velursi",
"bewear": "Bewear", "bewear": "Kosturso",
"bounsweet": "Bounsweet", "bounsweet": "Frubberl",
"steenee": "Steenee", "steenee": "Frubaila",
"tsareena": "Tsareena", "tsareena": "Fruyal",
"comfey": "Comfey", "comfey": "Curelei",
"oranguru": "Oranguru", "oranguru": "Kommandutan",
"passimian": "Passimian", "passimian": "Quartermak",
"wimpod": "Wimpod", "wimpod": "Reißlaus",
"golisopod": "Golisopod", "golisopod": "Tectass",
"sandygast": "Sandygast", "sandygast": "Sankabuh",
"palossand": "Palossand", "palossand": "Colossand",
"pyukumuku": "Pyukumuku", "pyukumuku": "Gufa",
"type_null": "Type: Null", "type_null": "Typ:Null",
"silvally": "Silvally", "silvally": "Amigento",
"minior": "Minior", "minior": "Meteno",
"komala": "Komala", "komala": "Koalelu",
"turtonator": "Turtonator", "turtonator": "Turtonator",
"togedemaru": "Togedemaru", "togedemaru": "Togedemaru",
"mimikyu": "Mimikyu", "mimikyu": "Mimigma",
"bruxish": "Bruxish", "bruxish": "Knirfish",
"drampa": "Drampa", "drampa": "Sen-Long",
"dhelmise": "Dhelmise", "dhelmise": "Moruda",
"jangmo_o": "Jangmo-o", "jangmo_o": "Miniras",
"hakamo_o": "Hakamo-o", "hakamo_o": "Mediras",
"kommo_o": "Kommo-o", "kommo_o": "Grandiras",
"tapu_koko": "Tapu Koko", "tapu_koko": "Kapu-Riki",
"tapu_lele": "Tapu Lele", "tapu_lele": "Kapu-Fala",
"tapu_bulu": "Tapu Bulu", "tapu_bulu": "Kapu-Toro",
"tapu_fini": "Tapu Fini", "tapu_fini": "Kapu-Kime",
"cosmog": "Cosmog", "cosmog": "Cosmog",
"cosmoem": "Cosmoem", "cosmoem": "Cosmovum",
"solgaleo": "Solgaleo", "solgaleo": "Solgaleo",
"lunala": "Lunala", "lunala": "Lunala",
"nihilego": "Nihilego", "nihilego": "Anego",
"buzzwole": "Buzzwole", "buzzwole": "Masskito",
"pheromosa": "Pheromosa", "pheromosa": "Schabelle",
"xurkitree": "Xurkitree", "xurkitree": "Voltriant",
"celesteela": "Celesteela", "celesteela": "Kaguron",
"kartana": "Kartana", "kartana": "Katagami",
"guzzlord": "Guzzlord", "guzzlord": "Schlingking",
"necrozma": "Necrozma", "necrozma": "Necrozma",
"magearna": "Magearna", "magearna": "Magearna",
"marshadow": "Marshadow", "marshadow": "Marshadow",
"poipole": "Poipole", "poipole": "Venicro",
"naganadel": "Naganadel", "naganadel": "Agoyon",
"stakataka": "Stakataka", "stakataka": "Muramura",
"blacephalon": "Blacephalon", "blacephalon": "Kopplosio",
"zeraora": "Zeraora", "zeraora": "Zeraora",
"meltan": "Meltan", "meltan": "Meltan",
"melmetal": "Melmetal", "melmetal": "Melmetal",

View File

@ -13,9 +13,9 @@ export const menuUiHandler: SimpleTranslationEntries = {
"LOG_OUT": "Déconnexion", "LOG_OUT": "Déconnexion",
"slot": "Emplacement {{slotNumber}}", "slot": "Emplacement {{slotNumber}}",
"importSession": "Importer session", "importSession": "Importer session",
"importSlotSelect": "Sélectionnez l'emplacement vers lequel importer les données.", "importSlotSelect": "Sélectionnez lemplacement vers lequel importer les données.",
"exportSession": "Exporter session", "exportSession": "Exporter session",
"exportSlotSelect": "Sélectionnez l'emplacement depuis lequel exporter les données.", "exportSlotSelect": "Sélectionnez lemplacement depuis lequel exporter les données.",
"importData": "Importer données", "importData": "Importer données",
"exportData": "Exporter données", "exportData": "Exporter données",
"cancel": "Retour", "cancel": "Retour",

View File

@ -1686,6 +1686,8 @@ export class CommandPhase extends FieldPhase {
console.log(moveTargets, playerPokemon.name); console.log(moveTargets, playerPokemon.name);
if (moveTargets.targets.length <= 1 || moveTargets.multiple) if (moveTargets.targets.length <= 1 || moveTargets.multiple)
turnCommand.move.targets = moveTargets.targets; turnCommand.move.targets = moveTargets.targets;
else if(playerPokemon.getTag(BattlerTagType.CHARGING) && playerPokemon.getMoveQueue().length >= 1)
turnCommand.move.targets = playerPokemon.getMoveQueue()[0].targets;
else else
this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex)); this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex));
this.scene.currentBattle.turnCommands[this.fieldIndex] = turnCommand; this.scene.currentBattle.turnCommands[this.fieldIndex] = turnCommand;
@ -2327,13 +2329,14 @@ export class MovePhase extends BattlePhase {
showMoveText(): void { showMoveText(): void {
if (this.move.getMove().getAttrs(ChargeAttr).length) { if (this.move.getMove().getAttrs(ChargeAttr).length) {
this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500);
const lastMove = this.pokemon.getLastXMoves() as TurnMove[]; const lastMove = this.pokemon.getLastXMoves() as TurnMove[];
if (!lastMove.length || lastMove[0].move !== this.move.getMove().id || lastMove[0].result !== MoveResult.OTHER) if (!lastMove.length || lastMove[0].move !== this.move.getMove().id || lastMove[0].result !== MoveResult.OTHER){
this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500);
return; return;
}
} }
if (this.pokemon.getTag(BattlerTagType.RECHARGING|| BattlerTagType.INTERRUPTED)) if (this.pokemon.getTag(BattlerTagType.RECHARGING || BattlerTagType.INTERRUPTED))
return; return;
this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500); this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500);

View File

@ -1060,7 +1060,7 @@ export class GameData {
this.gameStats.shinyPokemonHatched++; this.gameStats.shinyPokemonHatched++;
} }
if (!hasPrevolution && (!pokemon.scene.gameMode.isDaily || hasNewAttr)) if (!hasPrevolution && (!pokemon.scene.gameMode.isDaily || hasNewAttr || fromEgg))
this.addStarterCandy(species, (1 * (pokemon.isShiny() ? 5 * Math.pow(2, pokemon.variant || 0) : 1)) * (fromEgg || pokemon.isBoss() ? 2 : 1)); this.addStarterCandy(species, (1 * (pokemon.isShiny() ? 5 * Math.pow(2, pokemon.variant || 0) : 1)) * (fromEgg || pokemon.isBoss() ? 2 : 1));
} }

View File

@ -69,6 +69,8 @@ export default class CandyBar extends Phaser.GameObjects.Container {
if (this.tween) if (this.tween)
this.tween.stop(); this.tween.stop();
(this.scene as BattleScene).playSound('shing');
this.tween = this.scene.tweens.add({ this.tween = this.scene.tweens.add({
targets: this, targets: this,
x: (this.scene.game.canvas.width / 6) - (this.bg.width - 5), x: (this.scene.game.canvas.width / 6) - (this.bg.width - 5),

View File

@ -258,7 +258,7 @@ class SessionSlot extends Phaser.GameObjects.Container {
async setupWithData(data: SessionSaveData) { async setupWithData(data: SessionSaveData) {
this.remove(this.loadingLabel, true); this.remove(this.loadingLabel, true);
const gameModeLabel = addTextObject(this.scene, 8, 5, `${gameModes[data.gameMode].getName()} - Wave ${data.waveIndex}`, TextStyle.WINDOW); const gameModeLabel = addTextObject(this.scene, 8, 5, `${gameModes[data.gameMode]?.getName() || 'Unknown'} - Wave ${data.waveIndex}`, TextStyle.WINDOW);
this.add(gameModeLabel); this.add(gameModeLabel);
const timestampLabel = addTextObject(this.scene, 8, 19, new Date(data.timestamp).toLocaleString(), TextStyle.WINDOW); const timestampLabel = addTextObject(this.scene, 8, 19, new Date(data.timestamp).toLocaleString(), TextStyle.WINDOW);