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-"