Merge branch 'beta' into global-scene

This commit is contained in:
NightKev 2024-12-12 07:22:28 -08:00
commit 0208956b95
8 changed files with 741 additions and 103 deletions

620
CREDITS.md Normal file
View File

@ -0,0 +1,620 @@
# 🎵 Music
## BGM
- Pokémon Mystery Dungeon: Explorers of Sky
- Arata Iiyoshi
- Hideki Sakamoto
- Keisuke Ito
- Ken-ichi Saito
- Yoshihiro Maeda
- Pokémon Black/White
- Go Ichinose
- Hitomi Sato
- Shota Kageyama
- Pokémon Mystery Dungeon: Rescue Team DX
- Keisuke Ito
- Arata Iiyoshi
- Atsuhiro Ishizuna
- Pokémon HeartGold/SoulSilver
- Pokémon Black/White 2
- Pokémon X/Y
- Pokémon Omega Ruby/Alpha Sapphire
- Pokémon Sun/Moon
- Pokémon Ultra Sun/Ultra Moon
- Pokémon Sword/Shield
- Pokémon Legends: Arceus
- Pokémon Scarlet/Violet
- Firel (Custom Graveyard, Ice Cave, Laboratory, Metropolis, Plains, Power Plant, Seabed, Space, and Volcano biome music)
- Lmz (Custom Ancient Ruins, Jungle, and Lake biome music)
- Andr06 (Custom Forest, Slum and Sea biome music)
- _tresnoir
- unveiler
## Sound Effects
- Pokémon Emerald
- Pokémon Black/White
# 🎨 Art
## Backgrounds
- Squip (Paid Commissions)
- Contributions by Someonealive-QN
## UI
- GAMEFREAK
- LJ Birdman
## Pagefault Games Intro
- Spectremint
## Game Logo
- Gonstar (Paid Commission)
## Trainer Sprites
- GAMEFREAK (Pokémon Black/White 2, Pokémon Diamond/Pearl)
- kyledove
- Brumirage
- pkmn_realidea (Paid Commissions)
- IceJkai
- Leparagon
- wormhood
## Mystery Event Sprites
- chrysomelinae
- koda_want_to_sleep
- “🐺Kieran/YJ 🐍” rival_kieran aka thedreadedden
- ImperialSympathizer
- wormhood
- gerolau
- otterwatch
## Trainer Portraits
- pkmn_realidea (Paid Commissions)
## Pokémon Sprites and Animation
In addition to the lists below, please check [the PokéRogue wiki](https://wiki.pokerogue.net/credits:credits) for a more detailed list of Pokémon Sprite credits.
- GAMEFREAK (Pokémon Black/White 2)
- Smogon Sprite Project (Various Artists)
- Skyflyer
- Nolo33
- Ebaru
- EricLostie
- kiriaura
- Caruban
- Sopita_Yorita
- Azrita
- AshnixsLaw
- Hellfire0raptor
- RetroNC
- Franark122k
- OldSoulja
- PKMarioG
- ItsYugen
- lucasomi
- Pkm Sinfonia
- Poki Papillon
- Fleimer_
- bizcoeindoloro
- mangalos810
- selstar
### Static Sprites and Base Shiny Replacements Credits
- AMVictory
- Antiant
- Arhops
- arinoelle
- Arkeis
- aXl
- BananaToast
- Basic Vanillite
- BlackWhiteRobin
- Blaquaza
- Branflakes325
- Brylark
- Buna
- Bynine
- Corson
- Cynda
- “Diashi” diazhi
- Dleep
- doomchaos
- Espeon Scientist
- Farriella
- fishbowlsoul90
- “Follower” rulerofthesea11
- Galifia
- GeoisEvil
- G.E.Z.
- Glustora
- Harrie
- HealnDeal
- Hematite
- HM100
- Ice-cold Claws
- Involuntary Twitch
- “Jay” itsamejay
- KattenK
- KingOfThe-X-Roads
- KyleDove
- Kyleo
- Kyuzeth
- Larryturbo
- Layell
- Legitimate Username
- leParagon
- “LJ” lj_birdman
- Luigi Player
- Madmadness65
- Mega-Pokebattlerz
- Mintly
- mjco
- “Momo” sphinx_sage
- MrDollSteak
- MyMarshlands
- N-Kin
- Noscium
- “Nova” fabunova
- “Omniv” omniv
- paintseagull
- princessofmusic
- PumpkinPastel
- Quanyails
- RadicalCharizard
- RedRooster
- “♂ROMEO⚧” gerolau
- ruleroftheseas11
- SelenaArmorclaw
- “serif” serifaizawa
- Siiilver
- Sleet
- Snivy101
- Speed-X
- Sphex
- Spook
- Squip
- TeraVolt
- TheAetherPlayer
- TheCynicalPoet
- Tooni
- TrainerSplash
- Travis
- Turtleye
- Tyrell D. Barnes
- “Vari” \_vari\_
- Wobblebuns
- WolfPP
- WPS
- Wyverii
- “zan” smtif
- Zerudez
- Z-nogyroP
### Animated Sprites Credits
- Antiant
- arinoelle
- Blaquaza
- Claire Starsword
- Coyotango
- DanEx
- “Diashi” diazhi
- GalacticArtistMuffin
- G.E.Z.
- hexagonereal
- HM100
- Katten
- LeParagon
- localghost
- MallowOut
- mattiwarden
- “Momo” sphinx_sage
- N-Kin
- NoelleMBrooks
- Nyx
- “Omniv” omniv
- princessofmusic
- PumpkinPastel
- RadicalCharizard
- seleccion
- SelenaArmorclaw
- TheAetherPlayer
- Tinkatooni
- Typhlito
- uppa
- “Vari” \_vari\_
### Rare/Epic Shiny Variants Credits
- “Andr06” andr06
- “Appo” appo
- “Ashhawk” k_redacted
- “Auralite” _auralite
- “Awesome_Soul” awesome_soul
- “Bagon” bagonganda
- “Bibble” nuts_.
- “BloomOfWoods” bloomofwoods
- “Buge” buge
- “bun” bunove
- “bukie” bukie
- cameranian
- “Caramel” saltedcarriemel
- “Chocolate Niblets” choconibs
- “CKC” ckc_
- “ClawsHDi” clawshdi
- “Clown Princess” clown_princess
- “Cmac2173” cmac2173
- “Corsola” corsola_bandit
- “Criminon” criminon
- “Cryptican Gogoat Enthusiast” crypticanexe
- “Diashi” diazhi
- “deviant.daffodil, bug enthusiast” deviant.daffodil
- “DigitalVaporeon” digitalvaporeon
- dingosig
- “Eku” ekusas00
- “Elefante”
- “Esca” colossalsquid
- “Folf” folf.
- “Follower” ruleroftheseas11
- “Fontbane” fontbane
- “Gallow” gallowhound
- “Giojoe” giojoe10
- “Gonfold” gonfold
- greenninja757
- “Grassy_Storm” grassy_storm
- “GreenMegaMan” greenmegaman
- “GROWL” myflixer.to
- “guy claiming to work on a guide” 7thatlas
- “h. 🍄” letterh.
- “hamez” .hamez
- “Hanniel” hanniel.15
- “ImaginaryNeon” imaginaryneon
- “Jay” itsamejay
- “Jelke” jelke
- kalikimothy
- “🐺Kieran/YJ 🐍” rival_kieran aka thedreadedden
- “Koda” Koda_want_to_sleep
- “Lana” smogonian
- “LJ” lj_birdman
- “Long Girl” docamakesart
- “Lucky” luckyluckylucky
- “MissingNo.” clickonflareblitz
- “Momo” sphinx_sage
- monkehestman
- “Nexxus” nexxus_
- “Nik :3” realniktrustme
- “Nikolatsu”
- “nora” ora.n
- “NOVA” fabunova
- officerporkchops
- “Omniv” omniv
- “Otterwatch” otterwatch_
- “Pandoraz” pandoraz
- “Papa Pepsm An” papapepsman
- “Penguin” peng06
- “Prodigy” lorekeeperprodigy
- “Purpenigma” purpenigma
- “Rage” ragerevival
- “♂ROMEO⚧” gerolau
- “Sagrell D'Arcadia” coffeerequired
- “serif” serifaizawa
- “SillyTopplingGoose” sillytopplinggoose
- “Splash Damage” splashceles
- “Sweg1b01” sweg1b01
- “SyntheGrim” synthegrim
- “TaMenace” tamariontherestless
- “TheTRUEgge” thetruegge
- “Thorn” crownofthorns
- “Togepi” togepimax
- “Toopy” .toopy
- “Tristan” tristan.w
- “Umbreon” umbreon\_.\_
- “Vari” \_vari\_
- “Waasephi”
- wormhood
- “Yep, it's Caio” yepitscaio
- “Ymri” ymri
- “zaccie” zaccie
- “zan” smtif
## Move Animations
- Pokémon Reborn
# ⚖️ Balance
## Balance Team
- damocleas
- Blitzy aka Kazapple
- Cynthia_calliope
- Esca
- Fontbane
- Plasto
- Sethcurry
- Starkrieg
## Past Members
- Swizzo
- Zaccie
## Past Contributors
- chrysomelinae (Mystery Events)
- AsdarDevelops (Mystery Events)
# 💻 Development
## Server Owner/Administrator
- pancakes aka patapancakes
## Senior Developers
- Walker
- NightKev
- Moka
- Temp aka Tempo-anon
- Madmadness65
## Developers
- CodeTappert
- flx-sta
- innerthunder
- frutescens
- Opaquer
- SN34KZ
- Swain aka torranx
## Junior Developers
- KimJeongSun
- ImperialSympathizer
## Bug/Issue Managers
- Snailman
- Daleks
- Lily
- PigeonBar
## Past Contributors
- Fontbane
- sodaMelon
- schmidtc1
- shayebeadling
- DustinLin
- lucfd
- madibye
- EmberCM
- Mewtwo2387
- hayuna
- sirzento
- ReneGV
- mattrossdev
- zacharied
- NxKarim
- td76099
- Xiaphear
- j-diefenbach
- jaimefd
- EvasiveAce
- EmoUsedHM01
- francktrouillez
- JakubHanko
- FredeX
- PigeonBar
- prime-dialga
- rnicar245
- rationality6
- Neverblade
- Corrade
- Admiral-Billy
- okimin
- Arxalc
- PrabbyDD
- JonStudders
- karl-police
- prateau
- meepen
- arColm
- allen925
- InfernoVulpix
- snoozbuster
- zaccie
- happinyz
- PyGaVS
- mcmontag
- ElizaAlex
- AsdarDevelops
- Vassiat
- RedstonewolfX
- Sam/Flashfyre (initial developer, started PokéRogue)
- Greenlamp
- bennybroseph
- OrangeRed
- Dakurei
- Brain Frog
# 🌎 Translation
## In-Game Translators
### 🇩🇪 German (de)
- CodeTappert
### 🇪🇸 Spanish (es-ES)
- Dan Stevenson
- Javi
- Lily Alterni
- Qyxgames
### 🇫🇷 French (fr)
- Lugiadrien
### 🇮🇹 Italian (it)
- Nicus
### 🇯🇵 Japanese (ja)
- 6mozuke9
- Chapybara
- PeachFresca
### 🇰🇷 Korean (ko)
- Enoch
- KimJeongSun
- Returntoice
- sodamelon
### 🇧🇷 Portuguese (pt-BR)
- Zé Ricardo
### 🇨🇳 Chinese (zh-CN)
- dddsenic
- mercurius
- VittorioVeneto
- Yonmaru
### 🇹🇼 Chinese (zh-TW)
- mercurius
- Seagull
### Past contributors
- Asdar (es-ES)
- Rafa (es-ES)
- GINK-SS (ko)
- prostagma (pt-BR)
- Ei (zh-TW)
## Wiki Translators
### 🇪🇸 Spanish (es-ES)
- victorcooler
### 🇫🇷 French (fr)
- Evan
- Mitsue
- Papier
- Sangara
- Voltarix
### 🇮🇹 Italian (it)
- Purce
- T-reds
### 🇰🇷 Korean (ko)
- LeKaaN
- Returntoice
- sodamelon
### 🇵🇱 Polish (pl)
- Talo
### 🇧🇷 Portuguese (pt-BR)
- Beast
- Sushi
- Zé Ricardo
### 🇨🇳 Chinese (zh-CN)
- jw-0-
### Past contributors
- Dietaube (de)
- Gnorpelltroll (de)
- xRegix (de)
- Broly Ikari (fr)
- Leo Edgar_Zimmer (fr)
- Telor (fr)
- dorri (ko)
- Little Moder_eldenring (ko)
- Andy (zh-CN)
- Black Feather (zh-CN)
- itschili (zh-CN)
- RimKnight (zh-CN)
- Yubari (zh-CN)
## 🇺🇸 English Proofreaders
- Cheyu
- Faust
- HaywiredUp
- Irridescence
- Ke'ahi
- Louie
- Nully
- PeD
- The Programmer
### Past contributors
- I...
# 📰 Wiki
## Wiki Head
- H.A.R.V.
## Wiki Lead
- Sangara
- Zac
- Smew
- Brain Frog
- Hannah
## Editor
- Prodigy
- Akuma
- Dan Gioia
- Shimizoki
- Stave
- NalysArbur
- Ceimir
- Solanum Tuberosum
- Pom
## Artist
- dub
- SmashMania
- Wren
- Lugiadrien
## Contributor
- Daleks <3
- Inferno Vulpix
- Embri
- Nekod
- P0kemonY
- Scoom
- BlueVaron
# ☎️ Discord
## Head Moderator
- leah
## Senior Moderators
- Solanum Tuberosum
- Madmadness65
- Necrowmancer
- lana
## Moderators
- Sethcurry
## Junior Moderators
- chacolah
- ChaosGrimmon
- Cynthia
- Kat
- lyn
- Pom
# ✨ Special Thanks
## Reddit Moderators
- TheZigglez
- Vicksin
- Sapphire
- Javi
- roi
## External Tools
- Ydarissep (RogueDex)
- Admiral-Billy (Offline App - Desktop)
- Red aka StonedModder (iOS App)

View File

@ -37,93 +37,6 @@ For detailed guidelines on documenting your code, refer to the [comments.md](./d
Check out [Github Issues](https://github.com/pagefaultgames/pokerogue/issues) to see how can you help us!
# 📝 Credits
> If this project contains assets you have produced and you do not see your name here, **please** reach out.
> If this project contains assets you have produced and you do not see your name, **please** reach out, either [here on GitHub](https://github.com/pagefaultgames/pokerogue/issues/new) or via [Discord](https://discord.gg/pokerogue).
### 🎵 BGM
- Pokémon Mystery Dungeon: Explorers of Sky
- Arata Iiyoshi
- Hideki Sakamoto
- Keisuke Ito
- Ken-ichi Saito
- Yoshihiro Maeda
- Pokémon Black/White
- Go Ichinose
- Hitomi Sato
- Shota Kageyama
- Pokémon Mystery Dungeon: Rescue Team DX
- Keisuke Ito
- Arata Iiyoshi
- Atsuhiro Ishizuna
- Pokémon HeartGold/SoulSilver
- Pokémon Black/White 2
- Pokémon X/Y
- Pokémon Omega Ruby/Alpha Sapphire
- Pokémon Sun/Moon
- Pokémon Ultra Sun/Ultra Moon
- Pokémon Sword/Shield
- Pokémon Legends: Arceus
- Pokémon Scarlet/Violet
- Firel (Custom Ice Cave, Laboratory, Metropolis, Plains, Power Plant, Seabed, Space, and Volcano biome music)
- Lmz (Custom Ancient Ruins, Jungle, and Lake biome music)
- Andr06 (Custom Slum and Sea biome music)
### 🎵 Sound Effects
- Pokémon Emerald
- Pokémon Black/White
### 🎨 Backgrounds
- Squip (Paid Commissions)
- Contributions by Someonealive-QN
### 🎨 UI
- GAMEFREAK
- LJ Birdman
### 🎨 Pagefault Games Intro
- Spectremint
### 🎨 Game Logo
- Gonstar (Paid Commission)
### 🎨 Trainer Sprites
- GAMEFREAK (Pokémon Black/White 2, Pokémon Diamond/Pearl)
- kyledove
- Brumirage
- pkmn_realidea (Paid Commissions)
- IceJkai
### 🎨 Trainer Portraits
- pkmn_realidea (Paid Commissions)
### 🎨 Pokemon Sprites and Animation
- GAMEFREAK (Pokémon Black/White 2)
- Smogon Sprite Project (Various Artists)
- Skyflyer
- Nolo33
- Ebaru
- EricLostie
- KingOfThe-X-Roads
- kiriaura
- Caruban
- Sopita_Yorita
- Azrita
- AshnixsLaw
- Hellfire0raptor
- RetroNC
- Franark122k
- OldSoulja
- PKMarioG
- ItsYugen
- lucasomi
- Pkm Sinfonia
- Poki Papillon
- Fleimer_
- bizcoeindoloro
- mangalos810
- Involuntary-Twitch
- selstar
- koda_want_to_sleep
- thedreadedden
### 🎨 Move Animations
- Pokémon Reborn
Thank you to all the wonderful people that have contributed to the PokéRogue project! You can find the credits [here](./CREDITS.md).

View File

@ -107,7 +107,7 @@ export const speciesEggMoves = {
[Species.SNEASEL]: [ Moves.DIRE_CLAW, Moves.DARKEST_LARIAT, Moves.TRIPLE_AXEL, Moves.CLOSE_COMBAT ],
[Species.TEDDIURSA]: [ Moves.MOUNTAIN_GALE, Moves.FAKE_OUT, Moves.SLACK_OFF, Moves.PRECIPICE_BLADES ],
[Species.SLUGMA]: [ Moves.BURNING_BULWARK, Moves.POWER_GEM, Moves.SOLAR_BEAM, Moves.MAGMA_STORM ],
[Species.SWINUB]: [ Moves.SLACK_OFF, Moves.LANDS_WRATH, Moves.STONE_AXE, Moves.GLACIAL_LANCE ],
[Species.SWINUB]: [ Moves.SLACK_OFF, Moves.MOUNTAIN_GALE, Moves.STONE_AXE, Moves.PRECIPICE_BLADES ],
[Species.CORSOLA]: [ Moves.SCALD, Moves.FREEZE_DRY, Moves.STRENGTH_SAP, Moves.SALT_CURE ],
[Species.REMORAID]: [ Moves.WATER_SHURIKEN, Moves.TAKE_HEART, Moves.SHELL_SIDE_ARM, Moves.BOUNCY_BUBBLE ],
[Species.DELIBIRD]: [ Moves.BONEMERANG, Moves.FLOATY_FALL, Moves.VICTORY_DANCE, Moves.GLACIAL_LANCE ],
@ -360,7 +360,7 @@ export const speciesEggMoves = {
[Species.CLAUNCHER]: [ Moves.SHELL_SMASH, Moves.ARMOR_CANNON, Moves.ENERGY_BALL, Moves.ORIGIN_PULSE ],
[Species.HELIOPTILE]: [ Moves.WEATHER_BALL, Moves.HYDRO_STEAM, Moves.EARTH_POWER, Moves.BOOMBURST ],
[Species.TYRUNT]: [ Moves.DRAGON_HAMMER, Moves.FLARE_BLITZ, Moves.VOLT_TACKLE, Moves.SHIFT_GEAR ],
[Species.AMAURA]: [ Moves.RECOVER, Moves.TERA_STARSTORM, Moves.POWER_GEM, Moves.GEOMANCY ],
[Species.AMAURA]: [ Moves.RECOVER, Moves.WRING_OUT, Moves.POWER_GEM, Moves.GEOMANCY ],
[Species.HAWLUCHA]: [ Moves.TRIPLE_AXEL, Moves.HIGH_HORSEPOWER, Moves.FLOATY_FALL, Moves.WICKED_BLOW ],
[Species.DEDENNE]: [ Moves.BOOMBURST, Moves.FAKE_OUT, Moves.NASTY_PLOT, Moves.REVIVAL_BLESSING ],
[Species.CARBINK]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SPARKLY_SWIRL, Moves.DIAMOND_STORM ],
@ -468,7 +468,7 @@ export const speciesEggMoves = {
[Species.PINCURCHIN]: [ Moves.TRICK_ROOM, Moves.VOLT_SWITCH, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ],
[Species.SNOM]: [ Moves.FROST_BREATH, Moves.HEAL_ORDER, Moves.EARTH_POWER, Moves.SPORE ],
[Species.STONJOURNER]: [ Moves.BODY_PRESS, Moves.HELPING_HAND, Moves.ACCELEROCK, Moves.DIAMOND_STORM ],
[Species.EISCUE]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.SHELL_SMASH, Moves.GLACIAL_LANCE ],
[Species.EISCUE]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.AXE_KICK, Moves.SHELL_SMASH ],
[Species.INDEEDEE]: [ Moves.MATCHA_GOTCHA, Moves.EXPANDING_FORCE, Moves.MOONBLAST, Moves.REVIVAL_BLESSING ],
[Species.MORPEKO]: [ Moves.TRIPLE_AXEL, Moves.OBSTRUCT, Moves.SWORDS_DANCE, Moves.COLLISION_COURSE ],
[Species.CUFANT]: [ Moves.LIQUIDATION, Moves.CURSE, Moves.COMBAT_TORQUE, Moves.GIGATON_HAMMER ],
@ -559,7 +559,7 @@ export const speciesEggMoves = {
[Species.FRIGIBAX]: [ Moves.BEHEMOTH_BLADE, Moves.DRAGON_DANCE, Moves.MOUNTAIN_GALE, Moves.PRECIPICE_BLADES ],
[Species.GIMMIGHOUL]: [ Moves.HAPPY_HOUR, Moves.AURA_SPHERE, Moves.SURF, Moves.ASTRAL_BARRAGE ],
[Species.WO_CHIEN]: [ Moves.SPORE, Moves.FIERY_WRATH, Moves.SAPPY_SEED, Moves.STRENGTH_SAP ],
[Species.CHIEN_PAO]: [ Moves.KNOCK_OFF, Moves.PARTING_SHOT, Moves.BITTER_BLADE, Moves.GLACIAL_LANCE ],
[Species.CHIEN_PAO]: [ Moves.KNOCK_OFF, Moves.PARTING_SHOT, Moves.TRIPLE_AXEL, Moves.BITTER_BLADE ],
[Species.TING_LU]: [ Moves.SHORE_UP, Moves.CEASELESS_EDGE, Moves.SAPPY_SEED, Moves.PRECIPICE_BLADES ],
[Species.CHI_YU]: [ Moves.FIERY_WRATH, Moves.HYDRO_STEAM, Moves.MORNING_SUN, Moves.BLUE_FLARE ],
[Species.ROARING_MOON]: [ Moves.FIRE_LASH, Moves.DRAGON_HAMMER, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ],

View File

@ -1882,8 +1882,14 @@ export class FlameBurstAttr extends MoveEffectAttr {
}
export class SacrificialFullRestoreAttr extends SacrificialAttr {
constructor() {
protected restorePP: boolean;
protected moveMessage: string;
constructor(restorePP: boolean, moveMessage: string) {
super();
this.restorePP = restorePP;
this.moveMessage = moveMessage;
}
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
@ -1894,8 +1900,18 @@ export class SacrificialFullRestoreAttr extends SacrificialAttr {
// We don't know which party member will be chosen, so pick the highest max HP in the party
const maxPartyMemberHp = globalScene.getPlayerParty().map(p => p.getMaxHp()).reduce((maxHp: integer, hp: integer) => Math.max(hp, maxHp), 0);
globalScene.pushPhase(new PokemonHealPhase(user.getBattlerIndex(),
maxPartyMemberHp, i18next.t("moveTriggers:sacrificialFullRestore", { pokemonName: getPokemonNameWithAffix(user) }), true, false, false, true), true);
globalScene.pushPhase(
new PokemonHealPhase(
user.getBattlerIndex(),
maxPartyMemberHp,
i18next.t(this.moveMessage, { pokemonName: getPokemonNameWithAffix(user) }),
true,
false,
false,
true,
false,
this.restorePP),
true);
return true;
}
@ -8999,7 +9015,7 @@ export function initMoves() {
.attr(GyroBallPowerAttr)
.ballBombMove(),
new SelfStatusMove(Moves.HEALING_WISH, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(SacrificialFullRestoreAttr)
.attr(SacrificialFullRestoreAttr, false, "moveTriggers:sacrificialFullRestore")
.triageMove(),
new AttackMove(Moves.BRINE, Type.WATER, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 4)
.attr(MovePowerMultiplierAttr, (user, target, move) => target.getHpRatio() < 0.5 ? 2 : 1),
@ -9276,10 +9292,9 @@ export function initMoves() {
new AttackMove(Moves.SPACIAL_REND, Type.DRAGON, MoveCategory.SPECIAL, 100, 95, 5, -1, 0, 4)
.attr(HighCritAttr),
new SelfStatusMove(Moves.LUNAR_DANCE, Type.PSYCHIC, -1, 10, -1, 0, 4)
.attr(SacrificialAttrOnHit)
.attr(SacrificialFullRestoreAttr, true, "moveTriggers:lunarDanceRestore")
.danceMove()
.triageMove()
.unimplemented(),
.triageMove(),
new AttackMove(Moves.CRUSH_GRIP, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4)
.attr(OpponentHighHpPowerAttr, 120),
new AttackMove(Moves.MAGMA_STORM, Type.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, 0, 4)

View File

@ -21,8 +21,9 @@ export class PokemonHealPhase extends CommonAnimPhase {
private revive: boolean;
private healStatus: boolean;
private preventFullHeal: boolean;
private fullRestorePP: boolean;
constructor(battlerIndex: BattlerIndex, hpHealed: integer, message: string | null, showFullHpMessage: boolean, skipAnim: boolean = false, revive: boolean = false, healStatus: boolean = false, preventFullHeal: boolean = false) {
constructor(battlerIndex: BattlerIndex, hpHealed: integer, message: string | null, showFullHpMessage: boolean, skipAnim: boolean = false, revive: boolean = false, healStatus: boolean = false, preventFullHeal: boolean = false, fullRestorePP: boolean = false) {
super(battlerIndex, undefined, CommonAnim.HEALTH_UP);
this.hpHealed = hpHealed;
@ -32,6 +33,7 @@ export class PokemonHealPhase extends CommonAnimPhase {
this.revive = revive;
this.healStatus = healStatus;
this.preventFullHeal = preventFullHeal;
this.fullRestorePP = fullRestorePP;
}
start() {
@ -86,6 +88,13 @@ export class PokemonHealPhase extends CommonAnimPhase {
lastStatusEffect = pokemon.status.effect;
pokemon.resetStatus();
}
if (this.fullRestorePP) {
for (const move of this.getPokemon().getMoveset()) {
if (move) {
move.ppUsed = 0;
}
}
}
pokemon.updateInfo().then(() => super.end());
} else if (this.healStatus && !this.revive && pokemon.status) {
lastStatusEffect = pokemon.status.effect;

View File

@ -0,0 +1,77 @@
import { StatusEffect } from "#app/enums/status-effect";
import { CommandPhase } from "#app/phases/command-phase";
import { Abilities } from "#enums/abilities";
import { Moves } from "#enums/moves";
import { Species } from "#enums/species";
import GameManager from "#test/utils/gameManager";
import Phaser from "phaser";
import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest";
describe("Moves - Lunar Dance", () => {
let phaserGame: Phaser.Game;
let game: GameManager;
beforeAll(() => {
phaserGame = new Phaser.Game({
type: Phaser.HEADLESS,
});
});
afterEach(() => {
game.phaseInterceptor.restoreOg();
});
beforeEach(() => {
game = new GameManager(phaserGame);
game.override
.statusEffect(StatusEffect.BURN)
.battleType("double")
.enemyAbility(Abilities.BALL_FETCH)
.enemyMoveset(Moves.SPLASH);
});
it("should full restore HP, PP and status of switched in pokemon, then fail second use because no remaining backup pokemon in party", async () => {
await game.classicMode.startBattle([ Species.BULBASAUR, Species.ODDISH, Species.RATTATA ]);
const [ bulbasaur, oddish, rattata ] = game.scene.getPlayerParty();
game.move.changeMoveset(bulbasaur, [ Moves.LUNAR_DANCE, Moves.SPLASH ]);
game.move.changeMoveset(oddish, [ Moves.LUNAR_DANCE, Moves.SPLASH ]);
game.move.changeMoveset(rattata, [ Moves.LUNAR_DANCE, Moves.SPLASH ]);
game.move.select(Moves.SPLASH, 0);
game.move.select(Moves.SPLASH, 1);
await game.phaseInterceptor.to(CommandPhase);
await game.toNextTurn();
// Bulbasaur should still be burned and have used a PP for splash and not at max hp
expect(bulbasaur.status?.effect).toBe(StatusEffect.BURN);
expect(bulbasaur.moveset[1]?.ppUsed).toBe(1);
expect(bulbasaur.hp).toBeLessThan(bulbasaur.getMaxHp());
// Switch out Bulbasaur for Rattata so we can swtich bulbasaur back in with lunar dance
game.doSwitchPokemon(2);
game.move.select(Moves.SPLASH, 1);
await game.phaseInterceptor.to(CommandPhase);
await game.toNextTurn();
game.move.select(Moves.SPLASH, 0);
game.move.select(Moves.LUNAR_DANCE);
game.doSelectPartyPokemon(2);
await game.phaseInterceptor.to("SwitchPhase", false);
await game.toNextTurn();
// Bulbasaur should NOT have any status and have full PP for splash and be at max hp
expect(bulbasaur.status?.effect).toBeUndefined();
expect(bulbasaur.moveset[1]?.ppUsed).toBe(0);
expect(bulbasaur.isFullHp()).toBe(true);
game.move.select(Moves.SPLASH, 0);
game.move.select(Moves.LUNAR_DANCE);
await game.phaseInterceptor.to(CommandPhase);
await game.toNextTurn();
// Using Lunar dance again should fail because nothing in party and rattata should be alive
expect(rattata.status?.effect).toBe(StatusEffect.BURN);
expect(rattata.hp).toBeLessThan(rattata.getMaxHp());
});
});

View File

@ -188,7 +188,7 @@ export class TimedEventDisplay extends Phaser.GameObjects.Container {
const secs = Math.round(diff % 6e4 / 1e3);
// Return formatted string
return "Event Ends in : " + z(days) + "d " + z(hours) + "h " + z(mins) + "m " + z(secs) + "s";
return i18next.t("menu:eventTimer", { days: z(days), hours: z(hours), mins: z(mins), secs: z(secs) });
}
updateCountdown() {

View File

@ -81,7 +81,11 @@ export default class LoginFormUiHandler extends FormModalUiHandler {
}
override getModalTitle(_config?: ModalConfig): string {
return i18next.t("menu:login");
let key = "menu:login";
if (import.meta.env.VITE_SERVER_URL === "https://apibeta.pokerogue.net") {
key = "menu:loginBeta";
}
return i18next.t(key);
}
override getWidth(_config?: ModalConfig): number {