From 892e8fc6b1095c13b1134f3e5b59103d5b03f5de Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Sun, 4 Aug 2024 14:40:07 +0100 Subject: [PATCH] Summer Beach House fixes, evo moves (bugs!) Evo moves commit is unfinished and doesn't work properly. Script in evolve.asm has details. Summer Beach House now teaches Pikachu Surf and has two issues; one is that backing out of teaching Pikachu causes issues (basically, it only goes a correct way if you say yes), and the teaching menu uses tiles from the overworld because I am stupid. Are you a bad enough dude to fix these bugs? --- data/pokemon/evolution_moves.asm | 400 +++++++++++++++++++++++++++++++ data/pokemon/evos_attacks.asm | 1 + engine/events/specials.asm | 44 ++-- engine/pokemon/evolve.asm | 46 ++++ maps/DebugRoom.asm | 4 +- maps/Route19.asm | 2 +- maps/SummerBeachHouse.asm | 31 ++- 7 files changed, 505 insertions(+), 23 deletions(-) create mode 100644 data/pokemon/evolution_moves.asm diff --git a/data/pokemon/evolution_moves.asm b/data/pokemon/evolution_moves.asm new file mode 100644 index 0000000..a5ad4b0 --- /dev/null +++ b/data/pokemon/evolution_moves.asm @@ -0,0 +1,400 @@ +EvolutionMoves:: + dw NO_MOVE ;BULBASAUR ; 01 + dw NO_MOVE ;IVYSAUR ; 02 + dw NO_MOVE ;VENUSAUR ; 03 + dw NO_MOVE ;CHARMANDER ; 04 + dw NO_MOVE ;CHARMELEON ; 05 + dw NO_MOVE ;CHARIZARD ; 06 + dw NO_MOVE ;CHARMADA + dw NO_MOVE ;SQUIRTLE ; 07 + dw NO_MOVE ;WARTORTLE ; 08 + dw NO_MOVE ;TOTARTLE ; 09 + dw NO_MOVE ;CATERPIE ; 0a + dw NO_MOVE ;METAPOD ; 0b + dw NO_MOVE ;BUTTERFREE ; 0c + dw NO_MOVE ;WEEDLE ; 0d + dw NO_MOVE ;KAKUNA ; 0e + dw NO_MOVE ;BEEDRILL ; 0f + dw NO_MOVE ;GENTLARVA + dw NO_MOVE ;PUPAL + dw NO_MOVE ;CARAPTHOR + dw NO_MOVE ;KOTORA + dw NO_MOVE ;GAOTORA + dw NO_MOVE ;GOROTORA + dw NO_MOVE ;RAITORA + dw NO_MOVE ;PIDGEY ; 10 + dw NO_MOVE ;PIDGEOTTO ; 11 + dw NO_MOVE ;PIDGEOT ; 12 + dw NO_MOVE ;RATTATA ; 13 + dw NO_MOVE ;RATICATE ; 14 + dw NO_MOVE ;SPEAROW ; 15 + dw NO_MOVE ;FEAROW ; 16 + dw NO_MOVE ;EKANS ; 17 + dw NO_MOVE ;ARBOK ; 18 + dw NO_MOVE ;PIKACHU ; 19 + dw NO_MOVE ;RAICHU ; 1a + dw NO_MOVE ;GOROCHU + dw NO_MOVE ;SANDSHREW ; 1b + dw NO_MOVE ;SANDSLASH ; 1c + dw NO_MOVE ;NIDORAN_F ; 1d + dw NO_MOVE ;NIDORINA ; 1e + dw NO_MOVE ;NIDOQUEEN ; 1f + dw NO_MOVE ;NIDORAN_M ; 20 + dw NO_MOVE ;NIDORINO ; 21 + dw NO_MOVE ;NIDOKING ; 22 + dw NO_MOVE ;NIDOREIGN + dw NO_MOVE ;CLEFAIRY ; 23 + dw NO_MOVE ;CLEFABLE ; 24 + dw NO_MOVE ;VULPIII + dw NO_MOVE ;VULPIX ; 25 + dw NO_MOVE ;NINETALES ; 26 + dw NO_MOVE ;JIGGLYPUFF ; 27 + dw NO_MOVE ;WIGGLYTUFF ; 28 + dw NO_MOVE ;BITTYBAT + dw NO_MOVE ;ZUBAT ; 29 + dw NO_MOVE ;GOLBAT ; 2a + dw NO_MOVE ;ODDISH ; 2b + dw NO_MOVE ;GLOOM ; 2c + dw NO_MOVE ;VILEPLUME ; 2d + dw NO_MOVE ;PARASPOR + dw NO_MOVE ;PARAS ; 2e + dw NO_MOVE ;PARASECT ; 2f + dw NO_MOVE ;VENONAT ; 30 + dw NO_MOVE ;VENOMOTH ; 31 + dw NO_MOVE ;DIGLETT ; 32 + dw NO_MOVE ;DUGTRIO ; 33 + dw NO_MOVE ;COINPUR + dw NO_MOVE ;MEOWTH ; 34 + dw NO_MOVE ;PERSIAN ; 35 + dw NO_MOVE ;PERRSERKER + dw NO_MOVE ;PSYDUCK ; 36 + dw NO_MOVE ;WEIRDUCK + dw NO_MOVE ;GOLDUCK ; 37 + dw NO_MOVE ;MANKEY ; 38 + dw NO_MOVE ;PRIMEAPE ; 39 + dw NO_MOVE ;ANNIHILAPE + dw NO_MOVE ;PUPPERON + dw NO_MOVE ;GROWLITHE ; 3a + dw NO_MOVE ;ARCANINE ; 3b + dw NO_MOVE ;POLIWAG ; 3c + dw NO_MOVE ;POLIWHIRL ; 3d + dw NO_MOVE ;POLIWRATH ; 3e + dw NO_MOVE ;ABRA ; 3f + dw NO_MOVE ;KADABRA ; 40 + dw NO_MOVE ;ALAKAZAM ; 41 + dw NO_MOVE ;MACHOP ; 42 + dw NO_MOVE ;MACHOKE ; 43 + dw NO_MOVE ;MACHAMP ; 44 + dw NO_MOVE ;BELLSPROUT ; 45 + dw NO_MOVE ;WEEPINBELL ; 46 + dw NO_MOVE ;VICTREEBEL ; 47 + dw NO_MOVE ;BELLIGNAN + dw NO_MOVE ;TENTACOOL ; 48 + dw NO_MOVE ;TENTACRUEL ; 49 + dw NO_MOVE ;TOEDSCOOL + dw NO_MOVE ;TOEDSCRUEL + dw NO_MOVE ;BLOTTLE + dw NO_MOVE ;PENDRAKEN + dw NO_MOVE ;GEODUDE ; 4a + dw NO_MOVE ;GRAVELER ; 4b + dw NO_MOVE ;GOLEM ; 4c + dw NO_MOVE ;KOLTA + dw NO_MOVE ;PONYTA ; 4d + dw NO_MOVE ;RAPIDASH ; 4e + dw NO_MOVE ;BALUMBA + dw NO_MOVE ;SLOWPOKE ; 4f + dw NO_MOVE ;SLOWBRO ; 50 + dw NO_MOVE ;MAGNEMITE ; 51 + dw NO_MOVE ;MAGNETITE + dw NO_MOVE ;MAGNETON ; 52 + dw NO_MOVE ;MAGNEZONE + dw NO_MOVE ;GAVILLAIN + dw NO_MOVE ;CHEEP + dw NO_MOVE ;JABETTA + dw NO_MOVE ;RIBBITO + dw NO_MOVE ;CROAKOZUNA + dw NO_MOVE ;FARFETCH_D ; 53 + dw NO_MOVE ;LUXWAN + dw NO_MOVE ;DODUO ; 54 + dw NO_MOVE ;DODRIO ; 55 + dw NO_MOVE ;SEEL ; 56 + dw NO_MOVE ;DEWGONG ; 57 + dw NO_MOVE ;SMUJJ + dw NO_MOVE ;GRIMER ; 58 + dw NO_MOVE ;MUK ; 59 + dw NO_MOVE ;SHELLDER ; 5a + dw NO_MOVE ;CLOYSTER ; 5b + dw NO_MOVE ;DISTURBAN + dw NO_MOVE ;GASTLY ; 5c + dw NO_MOVE ;HAUNTER ; 5d + dw NO_MOVE ;GENGAR ; 5e + dw NO_MOVE ;ONIX ; 5f + dw NO_MOVE ;DROWZEE ; 60 + dw NO_MOVE ;HYPNO ; 61 + dw NO_MOVE ;KRABBY ; 62 + dw NO_MOVE ;KINGLER ; 63 + dw NO_MOVE ;VOLTORB ; 64 + dw NO_MOVE ;ELECTRODE ; 65 + dw NO_MOVE ;EXEGGCUTE ; 66 + dw NO_MOVE ;EXEGGUTOR ; 67 + dw NO_MOVE ;CUBONE ; 68 + dw NO_MOVE ;MAROWAK ; 69 + dw NO_MOVE ;GUARDIA + dw NO_MOVE ;HITMONLEE ; 6a + dw NO_MOVE ;HITMONCHAN ; 6b + dw NO_MOVE ;LICKITUNG ; 6c + dw NO_MOVE ;LICKILICKY + dw NO_MOVE ;LICKILORD + dw NO_MOVE ;KOFFING ; 6d + dw NO_MOVE ;WEEZING ; 6e + dw NO_MOVE ;RHYHORN ; 6f + dw NO_MOVE ;RHYDON ; 70 + dw NO_MOVE ;HAPPINY + dw NO_MOVE ;CHANSEY ; 71 + dw NO_MOVE ;BURGELA + dw NO_MOVE ;TANGELA ; 72 + dw NO_MOVE ;TANGROWTH + dw NO_MOVE ;JUNGELA + dw NO_MOVE ;KANGASKHAN ; 73 + dw NO_MOVE ;HORSEA ; 74 + dw NO_MOVE ;SEADRA ; 75 + dw NO_MOVE ;BLASTYKE + dw NO_MOVE ;BLASTOISE + dw NO_MOVE ;ORFRY + dw NO_MOVE ;GOLDEEN ; 76 + dw NO_MOVE ;SEAKING ; 77 + dw NO_MOVE ;STARYU ; 78 + dw NO_MOVE ;STARMIE ; 79 + dw NO_MOVE ;MIME_JR_ + dw NO_MOVE ;MR__MIME ; 7a + dw NO_MOVE ;SCYTHER ; 7b + dw NO_MOVE ;KLEAVOR + dw NO_MOVE ;JYNX ; 7c + dw NO_MOVE ;BUU + dw NO_MOVE ;ELECTABUZZ ; 7d + dw NO_MOVE ;ELECTIVIRE + dw NO_MOVE ;MAGMAR ; 7e + dw NO_MOVE ;MAGMORTAR + dw NO_MOVE ;PINSIR ; 7f + dw NO_MOVE ;TRICULES + dw NO_MOVE ;TAUROS ; 80 + dw NO_MOVE ;MAGIKARP ; 81 + dw NO_MOVE ;GYARADOS ; 82 + dw NO_MOVE ;MAGIPREY + dw NO_MOVE ;TERRADOS + dw NO_MOVE ;LAPRAS ; 83 + dw NO_MOVE ;DITTO ; 84 + dw NO_MOVE ;MIMMEO + dw NO_MOVE ;EEVEE ; 85 + dw NO_MOVE ;VAPOREON ; 86 + dw NO_MOVE ;JOLTEON ; 87 + dw NO_MOVE ;FLAREON ; 88 + dw NO_MOVE ;PORYGON ; 89 + dw NO_MOVE ;OMANYTE ; 8a + dw NO_MOVE ;OMASTAR ; 8b + dw NO_MOVE ;KABUTO ; 8c + dw NO_MOVE ;KABUTOPS ; 8d + dw NO_MOVE ;FERADACTYL + dw NO_MOVE ;AERODACTYL ; 8e + dw NO_MOVE ;DECILLA + dw NO_MOVE ;GAWARHED + dw NO_MOVE ;MUNCHLAX + dw NO_MOVE ;SNORLAX ; 8f + dw NO_MOVE ;ARTICUNO ; 90 + dw NO_MOVE ;ZAPDOS ; 91 + dw NO_MOVE ;MOLTRES ; 92 + dw NO_MOVE ;SQUEAMATA + dw NO_MOVE ;MINISTARE + dw NO_MOVE ;IGUANARCH + dw NO_MOVE ;DRATINI ; 93 + dw NO_MOVE ;DRAGONAIR ; 94 + dw NO_MOVE ;DRAGONITE ; 95 + dw NO_MOVE ;MEWTWO ; 96 + dw NO_MOVE ;MEW ; 97 + dw NO_MOVE ;CHIKORITA ; 98 + dw NO_MOVE ;BAYLEEF ; 99 + dw NO_MOVE ;MEGANIUM ; 9a + dw NO_MOVE ;CYNDAQUIL ; 9b + dw NO_MOVE ;QUILAVA ; 9c + dw NO_MOVE ;TYPHLOSION ; 9d + dw NO_MOVE ;TOTODILE ; 9e + dw NO_MOVE ;CROCONAW ; 9f + dw NO_MOVE ;FERALIGATR ; a0 + dw NO_MOVE ;CUBBURN + dw NO_MOVE ;FLAMBEAR + dw NO_MOVE ;BRUINOUS + dw NO_MOVE ;PALSSIO + dw NO_MOVE ;PRESSIO + dw NO_MOVE ;DONMARIN + dw NO_MOVE ;SENTRET ; a1 + dw NO_MOVE ;FURRET ; a2 + dw NO_MOVE ;HOOTHOOT ; a3 + dw NO_MOVE ;NOCTOWL ; a4 + dw NO_MOVE ;LEDYBA ; a5 + dw NO_MOVE ;LEDIAN ; a6 + dw NO_MOVE ;SPINARAK ; a7 + dw NO_MOVE ;ARIADOS ; a8 + dw NO_MOVE ;FOLAGE + dw CONFUSION ;BARREAU + dw MOONLIGHT ;CROBAT ; a9 + dw NO_MOVE ;CHINCHOU ; aa + dw NO_MOVE ;LANTURN ; ab + dw NO_MOVE ;REROAD + dw NO_MOVE ;PICHU ; ac + dw NO_MOVE ;CLEFFA ; ad + dw NO_MOVE ;IGGLYBUFF ; ae + dw NO_MOVE ;TOGEPI ; af + dw NO_MOVE ;TOGETIC ; b0 + dw NO_MOVE ;TOGEKISS + dw NO_MOVE ;NATU ; b1 + dw NO_MOVE ;QATU + dw NO_MOVE ;XATU ; b2 + dw NO_MOVE ;MOIBELLE + dw NO_MOVE ;BELLEDAM + dw NO_MOVE ;MAREEP ; b3 + dw NO_MOVE ;FLAAFFY ; b4 + dw NO_MOVE ;AMPHAROS ; b5 + dw NO_MOVE ;BELLOSSOM ; b6 + dw NO_MOVE ;AZURILL + dw NO_MOVE ;MARILL ; b7 + dw NO_MOVE ;AZUMARILL ; b8 + dw NO_MOVE ;BONSLY + dw NO_MOVE ;SUDOWOODO ; b9 + dw NO_MOVE ;POLITOED ; ba + dw NO_MOVE ;HOPPIP ; bb + dw NO_MOVE ;SKIPLOOM ; bc + dw NO_MOVE ;JUMPLUFF ; bd + dw NO_MOVE ;AIPOM ; be + dw NO_MOVE ;AMBIPOM + dw NO_MOVE ;SUNKERN ; bf + dw NO_MOVE ;SUNBUD + dw NO_MOVE ;SUNFLORA ; c0 + dw NO_MOVE ;HIPPUNK + dw NO_MOVE ;AERCROW + dw NO_MOVE ;FOXFIRE + dw NO_MOVE ;YANMA ; c1 + dw NO_MOVE ;YANMEGA + dw NO_MOVE ;PENDING03 + dw NO_MOVE ;WOOPER ; c2 + dw NO_MOVE ;QUAGSIRE ; c3 + dw NO_MOVE ;ESPEON ; c4 + dw NO_MOVE ;UMBREON ; c5 + dw NO_MOVE ;LEAFEON + dw NO_MOVE ;GLACEON + dw NO_MOVE ;SYLVEON + dw NO_MOVE ;MURKROW ; c6 + dw NO_MOVE ;HONCHKROW + dw NO_MOVE ;SLOWKING ; c7 + dw NO_MOVE ;MISDREAVUS ; c8 + dw NO_MOVE ;MISMAGIUS + dw NO_MOVE ;STROMEN + dw NO_MOVE ;PHANDARIN + dw NO_MOVE ;UNOWN ; c9 + dw NO_MOVE ;WYNAUT + dw NO_MOVE ;WOBBUFFET ; ca + dw NO_MOVE ;BIPULLA + dw NO_MOVE ;GIRAFARIG ; cb + dw NO_MOVE ;FARIGIRAF + dw NO_MOVE ;EMORDROME + dw NO_MOVE ;PINECO ; cc + dw NO_MOVE ;FORRETRESS ; cd + dw NO_MOVE ;DUNSPARCE ; ce + dw NO_MOVE ;DUDUNSPARCE + dw NO_MOVE ;GLIGAR ; cf + dw NO_MOVE ;STEELIX ; d0 + dw NO_MOVE ;SNUBBULL ; d1 + dw NO_MOVE ;GRANBULL ; d2 + dw NO_MOVE ;CARETORKER + dw NO_MOVE ;QWILFISH ; d3 + dw NO_MOVE ;KAZAPPELIN + dw NO_MOVE ;QWILFATHER + dw NO_MOVE ;SCIZOR ; d4 + dw NO_MOVE ;SHUCKLE ; d5 + dw NO_MOVE ;POCKLE + dw NO_MOVE ;HERACROSS ; d6 + dw NO_MOVE ;SNEASEL ; d7 + dw NO_MOVE ;TEDDIURSA ; d8 + dw NO_MOVE ;URSARING ; d9 + dw NO_MOVE ;URSALUNA + dw NO_MOVE ;SLUGMA ; da + dw NO_MOVE ;MAGCARGO ; db + dw NO_MOVE ;SWINUB ; dc + dw NO_MOVE ;PILOSWINE ; dd + dw NO_MOVE ;MAMOSWINE + dw NO_MOVE ;HIRSUSWINE + dw NO_MOVE ;CORSOLA ; de + dw NO_MOVE ;REMORAID ; df + dw NO_MOVE ;OCTILLERY ; e0 + dw NO_MOVE ;STRICHEEL + dw NO_MOVE ;LURREEL + dw NO_MOVE ;DELIBIRD ; e1 + dw NO_MOVE ;MANTYKE + dw NO_MOVE ;MANTINE ; e2 + dw NO_MOVE ;SKARMORY ; e3 + dw NO_MOVE ;HOUNDOUR ; e4 + dw NO_MOVE ;HOUNDOOM ; e5 + dw NO_MOVE ;KINGDRA ; e6 + dw NO_MOVE ;PHANPY ; e7 + dw NO_MOVE ;DONPHAN ; e8 + dw NO_MOVE ;PORYGON2 ; e9 + dw NO_MOVE ;PORYGON_Z + dw NO_MOVE ;STANTLER ; ea + dw NO_MOVE ;WYRDEER + dw NO_MOVE ;SMEARGLE ; eb + dw NO_MOVE ;GRENMAR + dw NO_MOVE ;TYROGUE ; ec + dw NO_MOVE ;HITMONTOP ; ed + dw NO_MOVE ;SMOOCHUM ; ee + dw NO_MOVE ;ELEBEBI + dw NO_MOVE ;ELEKID ; ef + dw NO_MOVE ;MAGBY ; f0 + dw NO_MOVE ;MILTANK ; f1 + dw NO_MOVE ;BLISSEY ; f2 + dw NO_MOVE ;WARUCHU + dw NO_MOVE ;SONEGG + dw NO_MOVE ;CACAWPHONY + dw NO_MOVE ;TREBIR + dw NO_MOVE ;SAKURAZE + dw NO_MOVE ;AMANOBI + dw NO_MOVE ;TRUSTAN + dw NO_MOVE ;KUWAGUARD + dw NO_MOVE ;TONQUITO + dw NO_MOVE ;MOLAMBINO + dw NO_MOVE ;LUANBO + dw NO_MOVE ;GRANBO + dw NO_MOVE ;ANGORE + dw NO_MOVE ;EUCALA + dw NO_MOVE ;KIWOOKED + dw NO_MOVE ;CYCLORP + dw NO_MOVE ;KITSEN + dw NO_MOVE ;WISPIRIT + dw NO_MOVE ;COATL + dw NO_MOVE ;MIMEAR + dw NO_MOVE ;INOSHIKA + dw NO_MOVE ;RUDDERNAUT + dw NO_MOVE ;XYLODON + dw NO_MOVE ;XYLOFIN + dw NO_MOVE ;DOKUROAR + dw NO_MOVE ;SCREAM_TAIL + dw NO_MOVE ;SANDY_SHOCKS + dw NO_MOVE ;GREAT_TUSK + dw NO_MOVE ;FLUTTER_MANE + dw NO_MOVE ;IRON_TREADS + dw NO_MOVE ;IRON_BUNDLE + dw NO_MOVE ;IRON_THORNS + dw NO_MOVE ;RAGING_BOLT + dw NO_MOVE ;GOUGING_FIRE + dw NO_MOVE ;WALKING_WAKE + dw NO_MOVE ;RAIKOU ; f3 + dw NO_MOVE ;ENTEI ; f4 + dw NO_MOVE ;SUICUNE ; f5 + dw NO_MOVE ;LARVITAR ; f6 + dw NO_MOVE ;PUPITAR ; f7 + dw NO_MOVE ;TYRANITAR ; f8 + dw NO_MOVE ;LUGIA ; f9 + dw NO_MOVE ;HO_OH ; fa + dw NO_MOVE ;SHI_SHI + dw NO_MOVE ;CELEBI ; fb + +;--- +_NUM_EVO_MOVES = (@ - EvolutionMoves) / 2 diff --git a/data/pokemon/evos_attacks.asm b/data/pokemon/evos_attacks.asm index 8e8898c..579bace 100644 --- a/data/pokemon/evos_attacks.asm +++ b/data/pokemon/evos_attacks.asm @@ -20,5 +20,6 @@ EvosAttacksPointers:: indirect_entries NUM_POKEMON, EvosAttacksPointers2 indirect_table_end +INCLUDE "data/pokemon/evolution_moves.asm" INCLUDE "data/pokemon/evos_attacks_kanto.asm" INCLUDE "data/pokemon/evos_attacks_johto.asm" diff --git a/engine/events/specials.asm b/engine/events/specials.asm index 81ee165..10cf094 100644 --- a/engine/events/specials.asm +++ b/engine/events/specials.asm @@ -31,35 +31,43 @@ TeachPikachuSurf: pop hl ld b, a ld de, PARTYMON_STRUCT_LENGTH - call DebugGiveMonSpecialMove.CheckForNthPokemon +.CheckForNthPokemon: +; start at the end of the party and search backwards for the last Pokemon in the party. + ld a, [hl] + cp b + jr z, .GiveMove + ld a, l + sub e + ld l, a + ld a, h + sbc d + ld h, a + dec c + jr nz, .CheckForNthPokemon + ret .GiveMove - ; BUG: Doesn't seem to find Surf properly. - ; The move DOES reach Pikachu's moveset!!!!!! However, what it learns just isn't correct. - ; Similar issue to when I tried to add evo moves ~ PvK - ld a, SURF + ; Teach Pikachu Surf + ld hl, SURF call GetMoveIDFromIndex + ld [wNamedObjectIndex], a ld [wPutativeTMHMMove], a + call GetMoveName + call CopyName1 - ; Find Pikachu again + ; Find Pikachu again to slap em in wCurPartyMon. ld bc, wPartyCount ld a, [bc] ld hl, MON_SPECIES call DebugGiveMonSpecialMove.GetNthPartyMon ld [wCurPartyMon], a - ; BUG: Doesn't load the tiles correctly because I'm stupid - ; Is it just in the wrong place? lmao - ld hl, .MenuHeader - call LoadMenuHeader - - ; Learn the move + ; Learn the move. predef LearnMove + ; BUG: Doesn't load the tiles for forgetting moves correctly because I'm stupid + ; 99.9% sure it's a bankswitch issue - ForgetMove is in a different script. + ; Needs more research. ret -.MenuHeader: - db MENU_BACKUP_TILES ; flags - menu_coords 0, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1 - ; Currently only works for Pikachu but could possibly be reworked for other things in the future. 90% sure there's a better way to do this. ; TODO: Check the DVs to see if it's strong enough. I'm feeling Shiny DV total or above. CheckPikachu: @@ -79,10 +87,10 @@ CheckPikachu: endc endc jr nz, .notMon - ld a, 1 + ld a, 1 ; return 1 if Pikachu jr .done .notMon - xor a ; return 0 if not it + xor a ; return 0 if not Pikachu ld [wScriptVar], a .done ret diff --git a/engine/pokemon/evolve.asm b/engine/pokemon/evolve.asm index dfd8408..8f770fa 100644 --- a/engine/pokemon/evolve.asm +++ b/engine/pokemon/evolve.asm @@ -291,6 +291,7 @@ EvolveAfterBattle_MasterLoop: ld [wTempSpecies], a xor a ld [wMonType], a + call LearnEvolutionMove call LearnLevelMoves ld a, [wTempSpecies] call SetSeenAndCaughtMon @@ -354,6 +355,51 @@ EvolveAfterBattle_MasterLoop: call nz, RestartMapMusic ret +; BUG: Does not take in the designated move correctly, resulting in strange behaviour usually seen when GetMoveIDFromIndex takes an 8-bit index. +; Comments proceeding +LearnEvolutionMove: + ld a, [wTempSpecies] + ld [wCurPartySpecies], a + call GetPokemonIndexFromID + ld b, h + ld c, l + ld hl, EvolutionMoves + add hl, bc + add hl, bc + dec hl + dec hl + ld a, [hli] + ld h, [hl] + ld l, a ; Moves through the table by going up according to the Pokemon's ID, storing the equivalent move in hl. This is fine. + or h ; hl == 0? + ret z + + call GetMoveIDFromIndex ; grabs what's in hl (the move) and converts it to 8-bit...or something like that. anyway, it should return in register a. + push hl ; I don't actually know why it does this. Removing it produces manmade horrors beyond my comprehension, so it isn't part of the current problem. + ld d, a ; preserve a + ld hl, wPartyMon1Moves + ld a, [wCurPartyMon] + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld b, NUM_MOVES +.check_move + ld a, [hli] + cp d ; use preserved a to check if a move is there + jr z, .has_move + dec b + jr nz, .check_move + ld a, d ; take the preserved a and reload + ld [wPutativeTMHMMove], a ; proceed to learn the move with adequate preprep + ld [wNamedObjectIndex], a + call GetMoveName + call CopyName1 + predef LearnMove + ld a, [wCurPartySpecies] + ld [wTempSpecies], a +.has_move + pop hl + ret +; so wtf is going on UpdateSpeciesNameIfNotNicknamed: ld a, [wCurSpecies] push af diff --git a/maps/DebugRoom.asm b/maps/DebugRoom.asm index ce806a8..7df2b40 100644 --- a/maps/DebugRoom.asm +++ b/maps/DebugRoom.asm @@ -19,12 +19,12 @@ DebugPokemon1Script: DebugPokemon2Script: opentext - getmonname STRING_BUFFER_3, MACHAMP + getmonname STRING_BUFFER_3, FOLAGE writetext ReceivedDebugPokemonText playsound SFX_CAUGHT_MON waitsfx promptbutton - givepoke MACHAMP, 31, TM_ROCK_SMASH + givepoke FOLAGE, 31, RARE_CANDY closetext end diff --git a/maps/Route19.asm b/maps/Route19.asm index f38d114..152b92c 100644 --- a/maps/Route19.asm +++ b/maps/Route19.asm @@ -19,7 +19,7 @@ Route19ClearRocksCallback: changeblock 8, 6, $7a ; rock changeblock 10, 6, $7a ; rock changeblock 12, 8, $7a ; rock - changeblock 4, 8, $7a ; rock + changeblock 4, 6, $7a ; rock - changed to account for the surfin' dude's house changeblock 10, 10, $7a ; rock .Done: endcallback diff --git a/maps/SummerBeachHouse.asm b/maps/SummerBeachHouse.asm index 0c72e16..6804dcf 100644 --- a/maps/SummerBeachHouse.asm +++ b/maps/SummerBeachHouse.asm @@ -34,12 +34,17 @@ SummerBeachHouseSurfinDudeScript: cry PIKACHU waitbutton applymovement SUMMERBEACHHOUSE_PUKA, PukaMovement1 + writetext SummerBeachHouseSurfinDudeTextICanDoIt2 + waitbutton + special TeachPikachuSurf +; iffalse .StoppedLearning ; doesn't work because I'm stupid and thought simply teaching the electric rat to use a surfboard would work like yesorno. the ceiling is the floor. + writetext SummerBeachHouseSurfinDudeTextDone applymovement SUMMERBEACHHOUSE_PUKA, PukaMovement2 waitbutton closetext -; setevent EVENT_TAUGHT_PIKACHU_SURF +; setevent EVENT_TAUGHT_PIKACHU_SURF ; not yet in for testing purposes. end .NotPikachu: @@ -54,6 +59,12 @@ SummerBeachHouseSurfinDudeScript: closetext end +.StoppedLearning: + writetext SummerBeachHouseSurfinDudeStoppedLearning + waitbutton + closetext + end + PukaMovement1: step LEFT step UP @@ -92,6 +103,14 @@ SummerBeachHouseSurfinDudeTextNoHave: line "one? Aww…" done +SummerBeachHouseSurfinDudeStoppedLearning: + text "Not the right" + line "time? Alright." + + para "Come back, though," + line "ya hear?" + done + SummerBeachHouseSurfinDudeTextICanDoIt: text "Yeah! This PIKACHU" line "yearns for the" @@ -100,6 +119,14 @@ SummerBeachHouseSurfinDudeTextICanDoIt: para "PUKA, come here!" done +SummerBeachHouseSurfinDudeTextICanDoIt2: + text "This PIKACHU is" + line "as strong as you!" + + para "Let's teach it to" + line "SURF!" + done + SummerBeachHouseSurfinDudeTextDone: text "There! You can" line "SURF wherever" @@ -130,7 +157,7 @@ SummerBeachHousePoster2Text: done SummerBeachHousePoster3Script: - jumptext SummerBeachHousePoster1Text + jumptext SummerBeachHousePoster3Text SummerBeachHousePoster3Text: text "It's an old pos-"