mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-06 16:32:16 +02:00
Compare commits
8 Commits
80eb86a76c
...
fb8cf781a5
Author | SHA1 | Date | |
---|---|---|---|
|
fb8cf781a5 | ||
|
64c0f2edb9 | ||
|
a2d0a9ece3 | ||
|
2aa6ec5031 | ||
|
a0a42ed2ec | ||
|
576bcf7bdb | ||
|
00aaeb5947 | ||
|
1263ff3af2 |
31
.github/workflows/tests.yml
vendored
Normal file
31
.github/workflows/tests.yml
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
name: Tests
|
||||
|
||||
on:
|
||||
# Trigger the workflow on push or pull request,
|
||||
# but only for the main branch
|
||||
push:
|
||||
branches:
|
||||
- main # Trigger on push events to the main branch
|
||||
pull_request:
|
||||
branches:
|
||||
- main # Trigger on pull request events targeting the main branch
|
||||
|
||||
jobs:
|
||||
run-tests: # Define a job named "run-tests"
|
||||
name: Run tests # Human-readable name for the job
|
||||
runs-on: ubuntu-latest # Specify the latest Ubuntu runner for the job
|
||||
|
||||
steps:
|
||||
- name: Check out Git repository # Step to check out the repository
|
||||
uses: actions/checkout@v4 # Use the checkout action version 4
|
||||
|
||||
- name: Set up Node.js # Step to set up Node.js environment
|
||||
uses: actions/setup-node@v4 # Use the setup-node action version 4
|
||||
with:
|
||||
node-version: 20 # Specify Node.js version 20
|
||||
|
||||
- name: Install Node.js dependencies # Step to install Node.js dependencies
|
||||
run: npm ci # Use 'npm ci' to install dependencies
|
||||
|
||||
- name: tests # Step to run tests
|
||||
run: npm run test:silent
|
@ -2321,7 +2321,7 @@ export function initSpecies() {
|
||||
new PokemonForm("Ruby Swirl", "ruby-swirl", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true),
|
||||
new PokemonForm("Caramel Swirl", "caramel-swirl", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true),
|
||||
new PokemonForm("Rainbow Swirl", "rainbow-swirl", Type.FAIRY, null, 0.3, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 495, 65, 60, 75, 110, 121, 64, 100, 50, 173, false, null, true),
|
||||
new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FAIRY, null, 30, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 595, 80, 70, 85, 140, 150, 65, 100, 50, 173),
|
||||
new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FAIRY, null, 30, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 595, 85, 70, 85, 140, 150, 65, 100, 50, 173),
|
||||
),
|
||||
new PokemonSpecies(Species.FALINKS, 8, false, false, false, "Formation Pokémon", Type.FIGHTING, null, 3, 62, Abilities.BATTLE_ARMOR, Abilities.NONE, Abilities.DEFIANT, 470, 65, 100, 100, 70, 60, 75, 45, 50, 165, GrowthRate.MEDIUM_FAST, null, false),
|
||||
new PokemonSpecies(Species.PINCURCHIN, 8, false, false, false, "Sea Urchin Pokémon", Type.ELECTRIC, null, 0.3, 1, Abilities.LIGHTNING_ROD, Abilities.NONE, Abilities.ELECTRIC_SURGE, 435, 48, 101, 95, 91, 85, 15, 75, 50, 152, GrowthRate.MEDIUM_FAST, 50, false),
|
||||
@ -2617,19 +2617,19 @@ export function initSpecies() {
|
||||
),
|
||||
new PokemonSpecies(Species.GALAR_YAMASK, 8, false, false, false, "Spirit Pokémon", Type.GROUND, Type.GHOST, 0.5, 1.5, Abilities.WANDERING_SPIRIT, Abilities.NONE, Abilities.NONE, 303, 38, 55, 85, 30, 65, 30, 190, 50, 61, GrowthRate.MEDIUM_FAST, 50, false),
|
||||
new PokemonSpecies(Species.GALAR_STUNFISK, 8, false, false, false, "Trap Pokémon", Type.GROUND, Type.STEEL, 0.7, 20.5, Abilities.MIMICRY, Abilities.NONE, Abilities.NONE, 471, 109, 81, 99, 66, 84, 32, 75, 70, 165, GrowthRate.MEDIUM_FAST, 50, false),
|
||||
new PokemonSpecies(Species.HISUI_GROWLITHE, 8, false, false, false, "Puppy Pokémon", Type.FIRE, Type.ROCK, 0.8, 22.7, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.ROCK_HEAD, 350, 60, 85, 45, 65, 50, 55, 190, 50, 70, GrowthRate.SLOW, 75, false),
|
||||
new PokemonSpecies(Species.HISUI_GROWLITHE, 8, false, false, false, "Puppy Pokémon", Type.FIRE, Type.ROCK, 0.8, 22.7, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.ROCK_HEAD, 350, 60, 75, 45, 65, 50, 55, 190, 50, 70, GrowthRate.SLOW, 75, false),
|
||||
new PokemonSpecies(Species.HISUI_ARCANINE, 8, false, false, false, "Legendary Pokémon", Type.FIRE, Type.ROCK, 2, 168, Abilities.INTIMIDATE, Abilities.FLASH_FIRE, Abilities.ROCK_HEAD, 555, 95, 115, 80, 95, 80, 90, 85, 50, 194, GrowthRate.SLOW, 75, false),
|
||||
new PokemonSpecies(Species.HISUI_VOLTORB, 8, false, false, false, "Ball Pokémon", Type.ELECTRIC, Type.GRASS, 0.5, 13, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 330, 40, 30, 50, 55, 55, 100, 190, 80, 66, GrowthRate.MEDIUM_FAST, null, false),
|
||||
new PokemonSpecies(Species.HISUI_ELECTRODE, 8, false, false, false, "Ball Pokémon", Type.ELECTRIC, Type.GRASS, 1.2, 81, Abilities.SOUNDPROOF, Abilities.STATIC, Abilities.AFTERMATH, 490, 60, 50, 70, 80, 80, 150, 60, 70, 172, GrowthRate.MEDIUM_FAST, null, false),
|
||||
new PokemonSpecies(Species.HISUI_TYPHLOSION, 8, false, false, false, "Volcano Pokémon", Type.FIRE, Type.GHOST, 1.6, 69.8, Abilities.BLAZE, Abilities.NONE, Abilities.FRISK, 534, 83, 84, 78, 119, 85, 95, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false),
|
||||
new PokemonSpecies(Species.HISUI_TYPHLOSION, 8, false, false, false, "Volcano Pokémon", Type.FIRE, Type.GHOST, 1.6, 69.8, Abilities.BLAZE, Abilities.NONE, Abilities.FRISK, 534, 73, 84, 78, 119, 85, 95, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false),
|
||||
new PokemonSpecies(Species.HISUI_QWILFISH, 8, false, false, false, "Balloon Pokémon", Type.DARK, Type.POISON, 0.5, 3.9, Abilities.POISON_POINT, Abilities.SWIFT_SWIM, Abilities.INTIMIDATE, 440, 65, 95, 85, 55, 55, 85, 45, 50, 88, GrowthRate.MEDIUM_FAST, 50, false),
|
||||
new PokemonSpecies(Species.HISUI_SNEASEL, 8, false, false, false, "Sharp Claw Pokémon", Type.FIGHTING, Type.POISON, 0.9, 27, Abilities.INNER_FOCUS, Abilities.KEEN_EYE, Abilities.PICKPOCKET, 430, 55, 95, 55, 35, 85, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true),
|
||||
new PokemonSpecies(Species.HISUI_SNEASEL, 8, false, false, false, "Sharp Claw Pokémon", Type.FIGHTING, Type.POISON, 0.9, 27, Abilities.INNER_FOCUS, Abilities.KEEN_EYE, Abilities.PICKPOCKET, 430, 55, 95, 55, 35, 75, 115, 60, 35, 86, GrowthRate.MEDIUM_SLOW, 50, true),
|
||||
new PokemonSpecies(Species.HISUI_SAMUROTT, 8, false, false, false, "Formidable Pokémon", Type.WATER, Type.DARK, 1.5, 58.2, Abilities.TORRENT, Abilities.NONE, Abilities.SHARPNESS, 528, 90, 108, 80, 100, 65, 85, 45, 80, 238, GrowthRate.MEDIUM_SLOW, 87.5, false),
|
||||
new PokemonSpecies(Species.HISUI_LILLIGANT, 8, false, false, false, "Flowering Pokémon", Type.GRASS, Type.FIGHTING, 1.2, 19.2, Abilities.CHLOROPHYLL, Abilities.HUSTLE, Abilities.LEAF_GUARD, 480, 80, 105, 75, 50, 75, 105, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false),
|
||||
new PokemonSpecies(Species.HISUI_ZORUA, 8, false, false, false, "Tricky Fox Pokémon", Type.NORMAL, Type.GHOST, 0.7, 12.5, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 330, 35, 60, 40, 85, 40, 80, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false),
|
||||
new PokemonSpecies(Species.HISUI_LILLIGANT, 8, false, false, false, "Flowering Pokémon", Type.GRASS, Type.FIGHTING, 1.2, 19.2, Abilities.CHLOROPHYLL, Abilities.HUSTLE, Abilities.LEAF_GUARD, 480, 70, 105, 75, 50, 75, 105, 75, 50, 168, GrowthRate.MEDIUM_FAST, 0, false),
|
||||
new PokemonSpecies(Species.HISUI_ZORUA, 8, false, false, false, "Tricky Fox Pokémon", Type.NORMAL, Type.GHOST, 0.7, 12.5, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 330, 35, 60, 40, 85, 40, 70, 75, 50, 66, GrowthRate.MEDIUM_SLOW, 87.5, false),
|
||||
new PokemonSpecies(Species.HISUI_ZOROARK, 8, false, false, false, "Illusion Fox Pokémon", Type.NORMAL, Type.GHOST, 1.6, 83, Abilities.ILLUSION, Abilities.NONE, Abilities.NONE, 510, 55, 100, 60, 125, 60, 110, 45, 50, 179, GrowthRate.MEDIUM_SLOW, 87.5, false),
|
||||
new PokemonSpecies(Species.HISUI_BRAVIARY, 8, false, false, false, "Valiant Pokémon", Type.PSYCHIC, Type.FLYING, 1.7, 43.4, Abilities.KEEN_EYE, Abilities.SHEER_FORCE, Abilities.TINTED_LENS, 510, 110, 83, 80, 112, 70, 65, 60, 50, 179, GrowthRate.SLOW, 100, false),
|
||||
new PokemonSpecies(Species.HISUI_SLIGGOO, 8, false, false, false, "Soft Tissue Pokémon", Type.STEEL, Type.DRAGON, 0.7, 68.5, Abilities.SAP_SIPPER, Abilities.SHELL_ARMOR, Abilities.GOOEY, 452, 58, 85, 83, 83, 113, 40, 45, 35, 158, GrowthRate.SLOW, 50, false),
|
||||
new PokemonSpecies(Species.HISUI_BRAVIARY, 8, false, false, false, "Valiant Pokémon", Type.PSYCHIC, Type.FLYING, 1.7, 43.4, Abilities.KEEN_EYE, Abilities.SHEER_FORCE, Abilities.TINTED_LENS, 510, 110, 83, 70, 112, 70, 65, 60, 50, 179, GrowthRate.SLOW, 100, false),
|
||||
new PokemonSpecies(Species.HISUI_SLIGGOO, 8, false, false, false, "Soft Tissue Pokémon", Type.STEEL, Type.DRAGON, 0.7, 68.5, Abilities.SAP_SIPPER, Abilities.SHELL_ARMOR, Abilities.GOOEY, 452, 58, 75, 83, 83, 113, 40, 45, 35, 158, GrowthRate.SLOW, 50, false),
|
||||
new PokemonSpecies(Species.HISUI_GOODRA, 8, false, false, false, "Dragon Pokémon", Type.STEEL, Type.DRAGON, 1.7, 334.1, Abilities.SAP_SIPPER, Abilities.SHELL_ARMOR, Abilities.GOOEY, 600, 80, 100, 100, 110, 150, 60, 45, 35, 270, GrowthRate.SLOW, 50, false),
|
||||
new PokemonSpecies(Species.HISUI_AVALUGG, 8, false, false, false, "Iceberg Pokémon", Type.ICE, Type.ROCK, 1.4, 262.4, Abilities.STRONG_JAW, Abilities.ICE_BODY, Abilities.STURDY, 514, 95, 127, 184, 34, 36, 38, 55, 50, 180, GrowthRate.MEDIUM_FAST, 50, false),
|
||||
new PokemonSpecies(Species.HISUI_DECIDUEYE, 8, false, false, false, "Arrow Quill Pokémon", Type.GRASS, Type.FIGHTING, 1.6, 37, Abilities.OVERGROW, Abilities.NONE, Abilities.SCRAPPY, 530, 88, 112, 80, 95, 95, 60, 45, 50, 239, GrowthRate.MEDIUM_SLOW, 87.5, false),
|
||||
|
@ -211,58 +211,58 @@ export const PGMachv: AchievementTranslationEntries = {
|
||||
description: "Complete the {{type}} monotype challenge.",
|
||||
},
|
||||
"MONO_NORMAL": {
|
||||
name: "Mono NORMAL",
|
||||
name: "Extra Ordinary",
|
||||
},
|
||||
"MONO_FIGHTING": {
|
||||
name: "I Know Kung Fu",
|
||||
},
|
||||
"MONO_FLYING": {
|
||||
name: "Mono FLYING",
|
||||
name: "Angry Birds",
|
||||
},
|
||||
"MONO_POISON": {
|
||||
name: "Kanto's Favourite",
|
||||
},
|
||||
"MONO_GROUND": {
|
||||
name: "Mono GROUND",
|
||||
name: "Forecast: Earthquakes",
|
||||
},
|
||||
"MONO_ROCK": {
|
||||
name: "Brock Hard",
|
||||
},
|
||||
"MONO_BUG": {
|
||||
name: "Sting Like A Beedrill",
|
||||
name: "You Like Jazz?",
|
||||
},
|
||||
"MONO_GHOST": {
|
||||
name: "Who you gonna call?",
|
||||
name: "Who You Gonna Call?",
|
||||
},
|
||||
"MONO_STEEL": {
|
||||
name: "Mono STEEL",
|
||||
name: "Iron Giant",
|
||||
},
|
||||
"MONO_FIRE": {
|
||||
name: "Mono FIRE",
|
||||
name: "I Cast Fireball!",
|
||||
},
|
||||
"MONO_WATER": {
|
||||
name: "When It Rains, It Pours",
|
||||
},
|
||||
"MONO_GRASS": {
|
||||
name: "Mono GRASS",
|
||||
name: "Can't Touch This",
|
||||
},
|
||||
"MONO_ELECTRIC": {
|
||||
name: "Mono ELECTRIC",
|
||||
name: "Aim For The Horn!",
|
||||
},
|
||||
"MONO_PSYCHIC": {
|
||||
name: "Mono PSYCHIC",
|
||||
name: "Big Brain Energy",
|
||||
},
|
||||
"MONO_ICE": {
|
||||
name: "Mono ICE",
|
||||
name: "Walking On Thin Ice",
|
||||
},
|
||||
"MONO_DRAGON": {
|
||||
name: "Mono DRAGON",
|
||||
name: "Pseudo-Legend Club",
|
||||
},
|
||||
"MONO_DARK": {
|
||||
name: "It's just a phase",
|
||||
name: "It's Just A Phase",
|
||||
},
|
||||
"MONO_FAIRY": {
|
||||
name: "Mono FAIRY",
|
||||
name: "Hey! Listen!",
|
||||
},
|
||||
} as const;
|
||||
|
||||
|
@ -897,7 +897,7 @@ export const ability: AbilityTranslationEntries = {
|
||||
name: "Boost Chimère",
|
||||
description: "Augmente la stat la plus élevée du Pokémon quand il met K.O. un autre Pokémon.",
|
||||
},
|
||||
rKSSystem: {
|
||||
rksSystem: {
|
||||
name: "Système Alpha",
|
||||
description: "Change le type du Pokémon en fonction de la ROM équipée.",
|
||||
},
|
||||
|
@ -385,182 +385,182 @@ export const PGMdialogue: DialogueTranslationEntries = {
|
||||
},
|
||||
"rocket_grunt": {
|
||||
"encounter": {
|
||||
1: "Prepare for trouble!"
|
||||
1: "트러블에 대비하도록!"
|
||||
},
|
||||
"victory": {
|
||||
1: "Team Rocket blasting off again!"
|
||||
1: "로켓단은 다시 떠오를 거니까!"
|
||||
},
|
||||
},
|
||||
"magma_grunt": {
|
||||
"encounter": {
|
||||
1: " If you get in the way of Team Magma, don’t expect any mercy!"
|
||||
1: " 마그마단을 방해한다면, 자비는 없닷!"
|
||||
},
|
||||
"victory": {
|
||||
1: "Huh? I lost?!"
|
||||
1: "하? 내가 졌어?!"
|
||||
},
|
||||
},
|
||||
"aqua_grunt": {
|
||||
"encounter": {
|
||||
1: "No one who crosses Team Aqua gets any mercy, not even kids!"
|
||||
1: "아쿠아단을 넘본 사람에게는 자비는 없다, 꼬마도 마찬가지야!"
|
||||
},
|
||||
"victory": {
|
||||
1: "You're kidding me!"
|
||||
1: "말도 안돼!"
|
||||
},
|
||||
},
|
||||
"galactic_grunt": {
|
||||
"encounter": {
|
||||
1: "Don't mess with Team Galactic!"
|
||||
1: "갤럭시단을 방해하지 마!"
|
||||
},
|
||||
"victory": {
|
||||
1: "Shut down..."
|
||||
1: "사격 중지…… "
|
||||
},
|
||||
},
|
||||
"plasma_grunt": {
|
||||
"encounter": {
|
||||
1: "We won't tolerate people who have different ideas!"
|
||||
1: "다른 생각을 가진사람들은 용납하지 않겠다!"
|
||||
},
|
||||
"victory": {
|
||||
1: "Plasmaaaaaaaaa!"
|
||||
1: "플라-스마-!"
|
||||
},
|
||||
},
|
||||
"flare_grunt": {
|
||||
"encounter": {
|
||||
1: "Fashion is most important to us!"
|
||||
1: "패션이 우리한텐 가장 중요하다고!"
|
||||
},
|
||||
"victory": {
|
||||
1: "The future doesn't look bright for me."
|
||||
1: "미래가 밝아 보이질 않네."
|
||||
},
|
||||
},
|
||||
"rocket_boss_giovanni_1": {
|
||||
"encounter": {
|
||||
1: "So! I must say, I am impressed you got here!"
|
||||
1: "그래서! 여기까지 오다니, 감탄이 절로 나오는군!"
|
||||
},
|
||||
"victory": {
|
||||
1: "WHAT! This cannot be!"
|
||||
1: "하! 이럴 순 없어!"
|
||||
},
|
||||
"defeat": {
|
||||
1: "Mark my words. Not being able to measure your own strength shows that you are still a child."
|
||||
1: "자신의 힘을 측정하지 못하는 걸 보아하니, 아직 별볼일 없는 꼬맹이로군. 내 말을 명심하도록. "
|
||||
}
|
||||
},
|
||||
"rocket_boss_giovanni_2": {
|
||||
"encounter": {
|
||||
1: "My old associates need me... Are you going to get in my way?"
|
||||
1: "옛 친구들이 나를 필요로 하고 있다…… 그런데도 방해하겠다는 건가?"
|
||||
},
|
||||
"victory": {
|
||||
1: "How is this possible...?\nThe precious dream of Team Rocket has become little more than an illusion..."
|
||||
1: "어떻게 이런 일이…?\n로켓단의 소중한 꿈이 환상에 불과해졌군…… "
|
||||
},
|
||||
"defeat": {
|
||||
1: "Team Rocket will be reborn again, and I will rule the world!"
|
||||
1: "로켓단은 다시 태어난다, 그리고 세상을 지배할 것이다!"
|
||||
}
|
||||
},
|
||||
"magma_boss_maxie_1": {
|
||||
"encounter": {
|
||||
1: "I will bury you by my own hand. I hope you appreciate this honor!"
|
||||
1: "내 손으로 널 파묻어주지. 영광으로 알도록!"
|
||||
},
|
||||
"victory": {
|
||||
1: "Ugh! You are... quite capable...\nI fell behind, but only by an inch..."
|
||||
1: "윽! 꽤… 제법이군…\n내가 뒤쳐졌지만, 겨우 한 끝이다…"
|
||||
},
|
||||
"defeat": {
|
||||
1: "Team Magma will prevail!"
|
||||
1: "마그마단이 앞선다!"
|
||||
}
|
||||
},
|
||||
"magma_boss_maxie_2": {
|
||||
"encounter": {
|
||||
1: "You are the final obstacle remaining between me and my goals.\nBrace yourself for my ultimate attack! Fuhahaha!"
|
||||
1: "나와 내 목표 사이에 남은 마지막 장애물이로군.\n최후의 공격에 대비하도록! 후하하하!"
|
||||
},
|
||||
"victory": {
|
||||
1: "This... This is not.. Ngh..."
|
||||
1: "이런… 이럴 수는… 없어… "
|
||||
},
|
||||
"defeat": {
|
||||
1: "And now... I will transform this planet to a land ideal for humanity."
|
||||
1: "이제부터… 인류의 이상을 위해 대지를 더 늘려가겠다."
|
||||
}
|
||||
},
|
||||
"aqua_boss_archie_1": {
|
||||
"encounter": {
|
||||
1: "I'm leader of Team Aqua, so I'm afraid it's the rope's end for you."
|
||||
1: "내가 아쿠아단의 리더다, 유감스럽게도 넌 이게 끝이겠군."
|
||||
},
|
||||
"victory": {
|
||||
1: "Let's meet again somewhere. I'll be sure to remember that face."
|
||||
1: "다시 어딘가에서 만나도록하지. 그 얼굴 기억해둘테니까."
|
||||
},
|
||||
"defeat": {
|
||||
1: "Brilliant! My team won't hold back now!"
|
||||
1: "좋군! 이제 아쿠아단을 막아설 것은 없다!"
|
||||
}
|
||||
},
|
||||
"aqua_boss_archie_2": {
|
||||
"encounter": {
|
||||
1: "I've been waiting so long for this day to come.\nThis is the true power of my team!"
|
||||
1: "이 날이 오는 것을 너무 오래 기다렸군.\n이것이 우리의 진정한 힘이다!"
|
||||
},
|
||||
"victory": {
|
||||
1: "Like I figured..."
|
||||
1: "내가 생각했던 것들이…… "
|
||||
},
|
||||
"defeat": {
|
||||
1: "I'll return everything in this world to its original, pure state!!"
|
||||
1: "이 세상을 원래의 순수한 상태로 되돌리겠다, 그 모든 것을!!"
|
||||
}
|
||||
},
|
||||
"galactic_boss_cyrus_1": {
|
||||
"encounter": {
|
||||
1: "You were compelled to come here by such vacuous sentimentality\nI will make you regret paying heed to your heart!"
|
||||
1: "넌 공허한 감정에 이끌려 이곳에 오게된 것이다.\n마음에 귀를 기울인 것을 후회하게 해주지!"
|
||||
},
|
||||
"victory": {
|
||||
1: "Interesting. And quite curious."
|
||||
1: "흥미롭군. 게다가 꽤 궁금해졌어."
|
||||
},
|
||||
"defeat": {
|
||||
1: "I will create my new world..."
|
||||
1: "새로운 세상을 만들 것이다…"
|
||||
}
|
||||
},
|
||||
"galactic_boss_cyrus_2": {
|
||||
"encounter": {
|
||||
1: "So we meet again. It seems our fates have become intertwined.\nBut here and now, I will finally break that bond!"
|
||||
1: "이런 우리가 다시 만나게 됐군. 우리의 운명이 얽히게 된 것 같군.\n 하지만 지금 여기서, 나는 마침내 그 끈을 끊을 것이다!"
|
||||
},
|
||||
"victory": {
|
||||
1: "How? How? HOW?!"
|
||||
1: "어떻게? 어째서? 어떻게?!"
|
||||
},
|
||||
"defeat": {
|
||||
1: "Farewell."
|
||||
1: "작별이로군."
|
||||
}
|
||||
},
|
||||
"plasma_boss_ghetsis_1": {
|
||||
"encounter": {
|
||||
1: "I won't allow anyone to stop me! No matter who does what!"
|
||||
1: "누구도 저를 막을 수 없습니다! 무슨 짓을 하더라도!"
|
||||
},
|
||||
"victory": {
|
||||
1: "How can this be? I'm the creator of Team Plasma! I'm perfect!"
|
||||
1: "…어떻게 된 거지? 이 몸은 플라스마단을 만들어낸 완벽한 남자라고! "
|
||||
},
|
||||
"defeat": {
|
||||
1: "I am the perfect ruler of a perfect new world! Mwa ha ha!"
|
||||
1: "세계를 바꿀 완전한 지배자가 아니었단 말인가!? …흐하하!"
|
||||
}
|
||||
},
|
||||
"plasma_boss_ghetsis_2": {
|
||||
"encounter": {
|
||||
1: "Come now! I want to see your face at the moment you lose all hope!"
|
||||
1: "오시죠! 당신이 모든 희망을 잃는 순간의 얼굴을 보겠습니다!"
|
||||
},
|
||||
"victory": {
|
||||
1: "My calculations... No! My careful schemes! The world should be mine!"
|
||||
1: "내 계산이… 틀려! 내 치밀한 계획이 틀리다니! 세상은 내 것이어야 하는데!"
|
||||
},
|
||||
"defeat": {
|
||||
1: "Kyurem! Use Absofusion!"
|
||||
1: "큐레무! 합체해라!"
|
||||
}
|
||||
},
|
||||
"flare_boss_lysandre_1": {
|
||||
"encounter": {
|
||||
1: "Do you want to stop me? Show me in battle."
|
||||
1: "나를 막겠다고? 배틀로 증명하도록."
|
||||
},
|
||||
"victory": {
|
||||
1: "You are here to stop me. But I ask you to wait. "
|
||||
1: "네가 나를 여기서 막았군. 하지만 잠시 기다리도록. "
|
||||
},
|
||||
"defeat": {
|
||||
1: "Pokemon...Shall no longer exist."
|
||||
1: "포켓몬은… 더 이상 존재하지 않는다."
|
||||
}
|
||||
},
|
||||
"flare_boss_lysandre_2": {
|
||||
"encounter": {
|
||||
1: "The future you want, or the future I want... Let us see which one is more deserving, shall we?"
|
||||
1: "너의 미래와 나의 미래… 어느 쪽이 옳은지 서로의 포켓몬에게 묻도록 하지."
|
||||
},
|
||||
"victory": {
|
||||
1: "Whaugh!"
|
||||
1: "크윽!"
|
||||
},
|
||||
"defeat": {
|
||||
1: "Fools with no vision will continue to befoul this beautiful world."
|
||||
1: "우매한 자들이 이 아름다운 세상을 계속 더럽히고 있군."
|
||||
}
|
||||
},
|
||||
"brock": {
|
||||
|
@ -1,67 +1,67 @@
|
||||
import { SimpleTranslationEntries } from "#app/plugins/i18n";
|
||||
|
||||
export const challenges: SimpleTranslationEntries = {
|
||||
"title": "Challenge Modifiers",
|
||||
"title": "適用挑戰條件",
|
||||
"points": "Bad Ideas",
|
||||
"confirm_start": "Proceed with these challenges?",
|
||||
"singleGeneration.name": "Mono Gen",
|
||||
"singleGeneration.value.0": "Off",
|
||||
"singleGeneration.desc.0": "You can only use pokemon from the chosen generation.",
|
||||
"singleGeneration.value.1": "Gen 1",
|
||||
"singleGeneration.desc.1": "You can only use pokemon from generation one.",
|
||||
"singleGeneration.value.2": "Gen 2",
|
||||
"singleGeneration.desc.2": "You can only use pokemon from generation two.",
|
||||
"singleGeneration.value.3": "Gen 3",
|
||||
"singleGeneration.desc.3": "You can only use pokemon from generation three.",
|
||||
"singleGeneration.value.4": "Gen 4",
|
||||
"singleGeneration.desc.4": "You can only use pokemon from generation four.",
|
||||
"singleGeneration.value.5": "Gen 5",
|
||||
"singleGeneration.desc.5": "You can only use pokemon from generation five.",
|
||||
"singleGeneration.value.6": "Gen 6",
|
||||
"singleGeneration.desc.6": "You can only use pokemon from generation six.",
|
||||
"singleGeneration.value.7": "Gen 7",
|
||||
"singleGeneration.desc.7": "You can only use pokemon from generation seven.",
|
||||
"singleGeneration.value.8": "Gen 8",
|
||||
"singleGeneration.desc.8": "You can only use pokemon from generation eight.",
|
||||
"singleGeneration.value.9": "Gen 9",
|
||||
"singleGeneration.desc.9": "You can only use pokemon from generation nine.",
|
||||
"singleType.name": "Mono Type",
|
||||
"singleType.value.0": "Off",
|
||||
"singleType.desc.0": "You can only use pokemon of the chosen type.",
|
||||
"singleType.value.1": "Normal",
|
||||
"singleType.desc.1": "You can only use pokemon with the Normal type.",
|
||||
"singleType.value.2": "Fighting",
|
||||
"singleType.desc.2": "You can only use pokemon with the Fighting type.",
|
||||
"singleType.value.3": "Flying",
|
||||
"singleType.desc.3": "You can only use pokemon with the Flying type.",
|
||||
"singleType.value.4": "Poison",
|
||||
"singleType.desc.4": "You can only use pokemon with the Poison type.",
|
||||
"singleType.value.5": "Ground",
|
||||
"singleType.desc.5": "You can only use pokemon with the Ground type.",
|
||||
"singleType.value.6": "Rock",
|
||||
"singleType.desc.6": "You can only use pokemon with the Rock type.",
|
||||
"singleType.value.7": "Bug",
|
||||
"singleType.desc.7": "You can only use pokemon with the Bug type.",
|
||||
"singleType.value.8": "Ghost",
|
||||
"singleType.desc.8": "You can only use pokemon with the Ghost type.",
|
||||
"singleType.value.9": "Steel",
|
||||
"singleType.desc.9": "You can only use pokemon with the Steel type.",
|
||||
"singleType.value.10": "Fire",
|
||||
"singleType.desc.10": "You can only use pokemon with the Fire type.",
|
||||
"singleType.value.11": "Water",
|
||||
"singleType.desc.11": "You can only use pokemon with the Water type.",
|
||||
"singleType.value.12": "Grass",
|
||||
"singleType.desc.12": "You can only use pokemon with the Grass type.",
|
||||
"singleType.value.13": "Electric",
|
||||
"singleType.desc.13": "You can only use pokemon with the Electric type.",
|
||||
"singleType.value.14": "Psychic",
|
||||
"singleType.desc.14": "You can only use pokemon with the Psychic type.",
|
||||
"singleType.value.15": "Ice",
|
||||
"singleType.desc.15": "You can only use pokemon with the Ice type.",
|
||||
"singleType.value.16": "Dragon",
|
||||
"singleType.desc.16": "You can only use pokemon with the Dragon type.",
|
||||
"singleType.value.17": "Dark",
|
||||
"singleType.desc.17": "You can only use pokemon with the Dark type.",
|
||||
"singleType.value.18": "Fairy",
|
||||
"singleType.desc.18": "You can only use pokemon with the Fairy type.",
|
||||
"confirm_start": "要執行這些挑戰嗎?",
|
||||
"singleGeneration.name": "單一世代",
|
||||
"singleGeneration.value.0": "關閉",
|
||||
"singleGeneration.desc.0": "你只能使用所選世代的寶可夢",
|
||||
"singleGeneration.value.1": "第一世代",
|
||||
"singleGeneration.desc.1": "你只能使用第一世代的寶可夢",
|
||||
"singleGeneration.value.2": "第二世代",
|
||||
"singleGeneration.desc.2": "你只能使用第二世代的寶可夢",
|
||||
"singleGeneration.value.3": "第三世代",
|
||||
"singleGeneration.desc.3": "你只能使用第三世代的寶可夢",
|
||||
"singleGeneration.value.4": "第四世代",
|
||||
"singleGeneration.desc.4": "你只能使用第四世代的寶可夢",
|
||||
"singleGeneration.value.5": "第五世代",
|
||||
"singleGeneration.desc.5": "你只能使用第五世代的寶可夢",
|
||||
"singleGeneration.value.6": "第六世代",
|
||||
"singleGeneration.desc.6": "你只能使用第六世代的寶可夢",
|
||||
"singleGeneration.value.7": "第七世代",
|
||||
"singleGeneration.desc.7": "你只能使用第七世代的寶可夢",
|
||||
"singleGeneration.value.8": "第八世代",
|
||||
"singleGeneration.desc.8": "你只能使用第八世代的寶可夢",
|
||||
"singleGeneration.value.9": "第九世代",
|
||||
"singleGeneration.desc.9": "你只能使用第九世代的寶可夢",
|
||||
"singleType.name": "單屬性",
|
||||
"singleType.value.0": "關閉",
|
||||
"singleType.desc.0": "你只能使用所選屬性的寶可夢",
|
||||
"singleType.value.1": "普通",
|
||||
"singleType.desc.1": "你只能使用普通屬性的寶可夢",
|
||||
"singleType.value.2": "格鬥",
|
||||
"singleType.desc.2": "你只能使用格鬥屬性的寶可夢",
|
||||
"singleType.value.3": "飛行",
|
||||
"singleType.desc.3": "你只能使用飛行屬性的寶可夢",
|
||||
"singleType.value.4": "毒",
|
||||
"singleType.desc.4": "你只能使用毒屬性的寶可夢",
|
||||
"singleType.value.5": "地面",
|
||||
"singleType.desc.5": "你只能使用地面屬性的寶可夢",
|
||||
"singleType.value.6": "岩石",
|
||||
"singleType.desc.6": "你只能使用岩石屬性的寶可夢",
|
||||
"singleType.value.7": "蟲",
|
||||
"singleType.desc.7": "你只能使用蟲屬性的寶可夢",
|
||||
"singleType.value.8": "幽靈",
|
||||
"singleType.desc.8": "你只能使用幽靈屬性的寶可夢",
|
||||
"singleType.value.9": "鋼",
|
||||
"singleType.desc.9": "你只能使用鋼屬性的寶可夢",
|
||||
"singleType.value.10": "火",
|
||||
"singleType.desc.10": "你只能使用火屬性的寶可夢",
|
||||
"singleType.value.11": "水",
|
||||
"singleType.desc.11": "你只能使用水屬性的寶可夢",
|
||||
"singleType.value.12": "草",
|
||||
"singleType.desc.12": "你只能使用草屬性的寶可夢",
|
||||
"singleType.value.13": "電",
|
||||
"singleType.desc.13": "你只能使用電屬性的寶可夢",
|
||||
"singleType.value.14": "超能",
|
||||
"singleType.desc.14": "你只能使用超能屬性的寶可夢",
|
||||
"singleType.value.15": "冰",
|
||||
"singleType.desc.15": "你只能使用冰屬性的寶可夢",
|
||||
"singleType.value.16": "龍",
|
||||
"singleType.desc.16": "你只能使用龍屬性的寶可夢",
|
||||
"singleType.value.17": "惡",
|
||||
"singleType.desc.17": "你只能使用惡屬性的寶可夢",
|
||||
"singleType.value.18": "妖精",
|
||||
"singleType.desc.18": "你只能使用妖精屬性的寶可夢",
|
||||
} as const;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -3,13 +3,13 @@ import {SimpleTranslationEntries} from "#app/plugins/i18n";
|
||||
// Titles of special trainers like gym leaders, elite four, and the champion
|
||||
export const titles: SimpleTranslationEntries = {
|
||||
"elite_four": "四天王",
|
||||
"elite_four_female": "Elite Four",
|
||||
"elite_four_female": "四天王",
|
||||
"gym_leader": "道館館主",
|
||||
"gym_leader_female": "道館館主",
|
||||
"gym_leader_double": "Gym Leader Duo",
|
||||
"gym_leader_double": "道館館主",
|
||||
"champion": "冠軍",
|
||||
"champion_female": "Champion",
|
||||
"champion_double": "Champion Duo",
|
||||
"champion_female": "冠軍",
|
||||
"champion_double": "冠軍搭檔",
|
||||
"rival": "勁敵",
|
||||
"professor": "博士",
|
||||
"frontier_brain": "開拓頭腦",
|
||||
@ -305,14 +305,14 @@ export const trainerNames: SimpleTranslationEntries = {
|
||||
"rival_female": "艾薇",
|
||||
|
||||
// Double Names
|
||||
"blue_red_double": "Blue & Red",
|
||||
"red_blue_double": "Red & Blue",
|
||||
"tate_liza_double": "Tate & Liza",
|
||||
"liza_tate_double": "Liza & Tate",
|
||||
"steven_wallace_double": "Steven & Wallace",
|
||||
"wallace_steven_double": "Wallace & Steven",
|
||||
"alder_iris_double": "Alder & Iris",
|
||||
"iris_alder_double": "Iris & Alder",
|
||||
"marnie_piers_double": "Marnie & Piers",
|
||||
"piers_marnie_double": "Piers & Marnie",
|
||||
"blue_red_double": "青綠 & 赤紅",
|
||||
"red_blue_double": "赤紅 & 青綠",
|
||||
"tate_liza_double": "小楓 & 小南",
|
||||
"liza_tate_double": "小南 & 小楓",
|
||||
"steven_wallace_double": "大吾 & 米可利",
|
||||
"wallace_steven_double": "米可利 & 大吾",
|
||||
"alder_iris_double": "阿戴克 & 艾莉絲",
|
||||
"iris_alder_double": "艾莉絲 & 阿戴克",
|
||||
"marnie_piers_double": "瑪俐 & 聶梓",
|
||||
"piers_marnie_double": "聶梓 & 瑪俐",
|
||||
} as const;
|
||||
|
@ -1798,7 +1798,12 @@ export class TurnInitPhase extends FieldPhase {
|
||||
start() {
|
||||
super.start();
|
||||
const enemyField = this.scene.getEnemyField().filter(p => p.isActive()) as Pokemon[];
|
||||
enemyField.map(p => this.scene.unshiftPhase(new PostSummonPhase(this.scene, p.getBattlerIndex())));
|
||||
enemyField.map(p => {
|
||||
if (p.battleSummonData.turnCount !== 1) {
|
||||
return;
|
||||
}
|
||||
return this.scene.unshiftPhase(new PostSummonPhase(this.scene, p.getBattlerIndex()));
|
||||
});
|
||||
|
||||
this.scene.getPlayerField().forEach(p => {
|
||||
// If this pokemon is in play and evolved into something illegal under the current challenge, force a switch
|
||||
|
@ -5,11 +5,15 @@ import * as overrides from "#app/overrides";
|
||||
import {Abilities} from "#app/data/enums/abilities";
|
||||
import {Species} from "#app/data/enums/species";
|
||||
import {
|
||||
CommandPhase, TurnInitPhase
|
||||
CommandPhase, DamagePhase,
|
||||
EnemyCommandPhase,
|
||||
TurnInitPhase,
|
||||
} from "#app/phases";
|
||||
import {Mode} from "#app/ui/ui";
|
||||
import {BattleStat} from "#app/data/battle-stat";
|
||||
import {Moves} from "#app/data/enums/moves";
|
||||
import {getMovePosition} from "#app/test/utils/gameManagerUtils";
|
||||
import {Command} from "#app/ui/command-ui-handler";
|
||||
|
||||
|
||||
describe("Abilities - Intimidate", () => {
|
||||
@ -56,7 +60,7 @@ describe("Abilities - Intimidate", () => {
|
||||
expect(game.scene.getParty()[0].species.speciesId).toBe(Species.POOCHYENA);
|
||||
|
||||
battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-1);
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(0);
|
||||
|
||||
battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(-2);
|
||||
@ -81,7 +85,7 @@ describe("Abilities - Intimidate", () => {
|
||||
expect(game.scene.getParty()[0].species.speciesId).toBe(Species.POOCHYENA);
|
||||
|
||||
battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-1);
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(0);
|
||||
|
||||
battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(-2);
|
||||
@ -106,7 +110,7 @@ describe("Abilities - Intimidate", () => {
|
||||
expect(game.scene.getParty()[0].species.speciesId).toBe(Species.POOCHYENA);
|
||||
|
||||
battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-1);
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(0);
|
||||
|
||||
battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(-2);
|
||||
@ -186,4 +190,146 @@ describe("Abilities - Intimidate", () => {
|
||||
const battleStatsPokemon2 = game.scene.getParty()[1].summonData.battleStats;
|
||||
expect(battleStatsPokemon2[BattleStat.ATK]).toBe(-2);
|
||||
}, 20000);
|
||||
|
||||
it("single - wild next wave opp triger once, us: none", async() => {
|
||||
vi.spyOn(overrides, "STARTING_WAVE_OVERRIDE", "get").mockReturnValue(2);
|
||||
vi.spyOn(overrides, "MOVESET_OVERRIDE", "get").mockReturnValue([Moves.AERIAL_ACE]);
|
||||
await game.startBattle([
|
||||
Species.MIGHTYENA,
|
||||
Species.POOCHYENA,
|
||||
]);
|
||||
let battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(-1);
|
||||
let battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-1);
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
game.scene.ui.setMode(Mode.FIGHT, (game.scene.getCurrentPhase() as CommandPhase).getFieldIndex());
|
||||
});
|
||||
game.onNextPrompt("CommandPhase", Mode.FIGHT, () => {
|
||||
const movePosition = getMovePosition(game.scene, 0, Moves.AERIAL_ACE);
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
await game.phaseInterceptor.runFrom(EnemyCommandPhase).to(DamagePhase);
|
||||
await game.killPokemon(game.scene.currentBattle.enemyParty[0]);
|
||||
expect(game.scene.currentBattle.enemyParty[0].isFainted()).toBe(true);
|
||||
await game.toNextWave();
|
||||
battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-2);
|
||||
battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(0);
|
||||
}, 20000);
|
||||
|
||||
it("single - wild next turn - no retrigger on next turn", async() => {
|
||||
vi.spyOn(overrides, "STARTING_WAVE_OVERRIDE", "get").mockReturnValue(2);
|
||||
vi.spyOn(overrides, "MOVESET_OVERRIDE", "get").mockReturnValue([Moves.SPLASH]);
|
||||
await game.startBattle([
|
||||
Species.MIGHTYENA,
|
||||
Species.POOCHYENA,
|
||||
]);
|
||||
let battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(-1);
|
||||
let battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-1);
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
game.scene.ui.setMode(Mode.FIGHT, (game.scene.getCurrentPhase() as CommandPhase).getFieldIndex());
|
||||
});
|
||||
game.onNextPrompt("CommandPhase", Mode.FIGHT, () => {
|
||||
const movePosition = getMovePosition(game.scene, 0, Moves.AERIAL_ACE);
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
console.log("===to new turn===");
|
||||
await game.toNextTurn();
|
||||
battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-1);
|
||||
battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(-1);
|
||||
}, 20000);
|
||||
|
||||
it("single - trainer should only trigger once and each time he switch", async() => {
|
||||
vi.spyOn(overrides, "MOVESET_OVERRIDE", "get").mockReturnValue([Moves.SPLASH]);
|
||||
vi.spyOn(overrides, "OPP_MOVESET_OVERRIDE", "get").mockReturnValue([Moves.VOLT_SWITCH,Moves.VOLT_SWITCH,Moves.VOLT_SWITCH,Moves.VOLT_SWITCH]);
|
||||
vi.spyOn(overrides, "STARTING_WAVE_OVERRIDE", "get").mockReturnValue(5);
|
||||
await game.startBattle([
|
||||
Species.MIGHTYENA,
|
||||
Species.POOCHYENA,
|
||||
]);
|
||||
let battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(-1);
|
||||
let battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-1);
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
game.scene.ui.setMode(Mode.FIGHT, (game.scene.getCurrentPhase() as CommandPhase).getFieldIndex());
|
||||
});
|
||||
game.onNextPrompt("CommandPhase", Mode.FIGHT, () => {
|
||||
const movePosition = getMovePosition(game.scene, 0, Moves.AERIAL_ACE);
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
console.log("===to new turn===");
|
||||
await game.toNextTurn();
|
||||
battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-2);
|
||||
battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(0);
|
||||
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
game.scene.ui.setMode(Mode.FIGHT, (game.scene.getCurrentPhase() as CommandPhase).getFieldIndex());
|
||||
});
|
||||
game.onNextPrompt("CommandPhase", Mode.FIGHT, () => {
|
||||
const movePosition = getMovePosition(game.scene, 0, Moves.AERIAL_ACE);
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
console.log("===to new turn===");
|
||||
await game.toNextTurn();
|
||||
battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-3);
|
||||
battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(0);
|
||||
}, 200000);
|
||||
|
||||
it("single - trainer should only trigger once whatever turn we are", async() => {
|
||||
vi.spyOn(overrides, "MOVESET_OVERRIDE", "get").mockReturnValue([Moves.SPLASH]);
|
||||
vi.spyOn(overrides, "OPP_MOVESET_OVERRIDE", "get").mockReturnValue([Moves.SPLASH,Moves.SPLASH,Moves.SPLASH,Moves.SPLASH]);
|
||||
vi.spyOn(overrides, "STARTING_WAVE_OVERRIDE", "get").mockReturnValue(5);
|
||||
await game.startBattle([
|
||||
Species.MIGHTYENA,
|
||||
Species.POOCHYENA,
|
||||
]);
|
||||
let battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(-1);
|
||||
let battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-1);
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
game.scene.ui.setMode(Mode.FIGHT, (game.scene.getCurrentPhase() as CommandPhase).getFieldIndex());
|
||||
});
|
||||
game.onNextPrompt("CommandPhase", Mode.FIGHT, () => {
|
||||
const movePosition = getMovePosition(game.scene, 0, Moves.AERIAL_ACE);
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
console.log("===to new turn===");
|
||||
await game.toNextTurn();
|
||||
battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-1);
|
||||
battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(-1);
|
||||
|
||||
|
||||
game.onNextPrompt("CommandPhase", Mode.COMMAND, () => {
|
||||
game.scene.ui.setMode(Mode.FIGHT, (game.scene.getCurrentPhase() as CommandPhase).getFieldIndex());
|
||||
});
|
||||
game.onNextPrompt("CommandPhase", Mode.FIGHT, () => {
|
||||
const movePosition = getMovePosition(game.scene, 0, Moves.AERIAL_ACE);
|
||||
(game.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, movePosition, false);
|
||||
});
|
||||
console.log("===to new turn===");
|
||||
await game.toNextTurn();
|
||||
battleStatsPokemon = game.scene.getParty()[0].summonData.battleStats;
|
||||
expect(battleStatsPokemon[BattleStat.ATK]).toBe(-1);
|
||||
battleStatsOpponent = game.scene.currentBattle.enemyParty[0].summonData.battleStats;
|
||||
expect(battleStatsOpponent[BattleStat.ATK]).toBe(-1);
|
||||
}, 200000);
|
||||
});
|
||||
|
@ -48,8 +48,8 @@ describe("Inputs", () => {
|
||||
});
|
||||
|
||||
it("Mobile - test touch holding for 1000ms - 4 input", async () => {
|
||||
await game.inputsHandler.pressTouch("dpadUp", 1000);
|
||||
expect(game.inputsHandler.log.length).toBe(4);
|
||||
await game.inputsHandler.pressTouch("dpadUp", 1050);
|
||||
expect(game.inputsHandler.log.length).toBe(5);
|
||||
});
|
||||
|
||||
it("keyboard - test input holding for 200ms - 1 input", async() => {
|
||||
@ -63,13 +63,8 @@ describe("Inputs", () => {
|
||||
});
|
||||
|
||||
it("keyboard - test input holding for 1000ms - 4 input", async() => {
|
||||
await game.inputsHandler.pressKeyboardKey(cfg_keyboard_qwerty.deviceMapping.KEY_ARROW_UP, 1000);
|
||||
expect(game.inputsHandler.log.length).toBe(4);
|
||||
});
|
||||
|
||||
it("keyboard - test input holding for 2000ms - 8 input", async() => {
|
||||
await game.inputsHandler.pressKeyboardKey(cfg_keyboard_qwerty.deviceMapping.KEY_ARROW_UP, 2000);
|
||||
expect(game.inputsHandler.log.length).toBe(8);
|
||||
await game.inputsHandler.pressKeyboardKey(cfg_keyboard_qwerty.deviceMapping.KEY_ARROW_UP, 1050);
|
||||
expect(game.inputsHandler.log.length).toBe(5);
|
||||
});
|
||||
|
||||
it("gamepad - test input holding for 1ms - 1 input", async() => {
|
||||
@ -82,24 +77,14 @@ describe("Inputs", () => {
|
||||
expect(game.inputsHandler.log.length).toBe(1);
|
||||
});
|
||||
|
||||
it("gamepad - test input holding for 249ms - 1 input", async() => {
|
||||
await game.inputsHandler.pressGamepadButton(pad_xbox360.deviceMapping.RC_S, 249);
|
||||
expect(game.inputsHandler.log.length).toBe(1);
|
||||
});
|
||||
|
||||
it("gamepad - test input holding for 300ms - 2 input", async() => {
|
||||
await game.inputsHandler.pressGamepadButton(pad_xbox360.deviceMapping.RC_S, 300);
|
||||
expect(game.inputsHandler.log.length).toBe(2);
|
||||
});
|
||||
|
||||
it("gamepad - test input holding for 1000ms - 4 input", async() => {
|
||||
await game.inputsHandler.pressGamepadButton(pad_xbox360.deviceMapping.RC_S, 1000);
|
||||
expect(game.inputsHandler.log.length).toBe(4);
|
||||
});
|
||||
|
||||
it("gamepad - test input holding for 2000ms - 8 input", async() => {
|
||||
await game.inputsHandler.pressGamepadButton(pad_xbox360.deviceMapping.RC_S, 2000);
|
||||
expect(game.inputsHandler.log.length).toBe(8);
|
||||
await game.inputsHandler.pressGamepadButton(pad_xbox360.deviceMapping.RC_S, 1050);
|
||||
expect(game.inputsHandler.log.length).toBe(5);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -222,6 +222,7 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container {
|
||||
this.pokemonGenderNewText.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, this.scene.uiTheme));
|
||||
this.pokemonGenderNewText.setVisible((newGender & caughtAttr) === BigInt(0));
|
||||
} else {
|
||||
this.pokemonGenderNewText.setVisible(false);
|
||||
this.pokemonGenderText.setVisible(false);
|
||||
}
|
||||
|
||||
@ -312,6 +313,8 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container {
|
||||
this.pokemonShinyNewIcon.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, this.scene.uiTheme));
|
||||
const newShinyOrVariant = ((newShiny & caughtAttr) === BigInt(0)) || ((newVariant & caughtAttr) === BigInt(0));
|
||||
this.pokemonShinyNewIcon.setVisible(!!newShinyOrVariant);
|
||||
} else {
|
||||
this.pokemonShinyNewIcon.setVisible(false);
|
||||
}
|
||||
|
||||
this.pokemonFusionShinyIcon.setPosition(this.pokemonShinyIcon.x, this.pokemonShinyIcon.y);
|
||||
|
Loading…
Reference in New Issue
Block a user