diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2015-11-18 18:35:44 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2015-11-18 18:35:44 -0500 |
commit | 91f749101724a17398363745d8ac95cd4feeb1c1 (patch) | |
tree | a1e244eb086ed30d5f477fa80c9d078f20b5180c /engine | |
parent | 1ff37608b6b71f831608c1319d71eec3ac0583a9 (diff) |
items/item_effects.asm; engine/evolution.asm
Diffstat (limited to 'engine')
-rwxr-xr-x | engine/breeding/egg.asm | 2 | ||||
-rwxr-xr-x | engine/evolve.asm | 682 | ||||
-rwxr-xr-x | engine/link.asm | 2 | ||||
-rw-r--r-- | engine/party_menu.asm | 52 | ||||
-rwxr-xr-x | engine/pokegear.asm | 5 | ||||
-rw-r--r-- | engine/predef.asm | 4 | ||||
-rw-r--r-- | engine/specials.asm | 2 | ||||
-rwxr-xr-x | engine/startmenu.asm | 97 | ||||
-rwxr-xr-x | engine/town_map.asm | 2 |
9 files changed, 766 insertions, 82 deletions
diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm index f007fde6a..ea365d8b5 100755 --- a/engine/breeding/egg.asm +++ b/engine/breeding/egg.asm @@ -219,7 +219,7 @@ Function16f7a: ; 16f7a (5:6f7a) push de - callba Function4dbb8 + callba SetEggMonCaughtData callba MobileFn_10608d ld a, [CurPartyMon] ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) diff --git a/engine/evolve.asm b/engine/evolve.asm new file mode 100755 index 000000000..940b033b1 --- /dev/null +++ b/engine/evolve.asm @@ -0,0 +1,682 @@ +EvolvePokemon: ; 421d8 + ld hl, EvolvableFlags + xor a + ld [hl], a + ld a, [CurPartyMon] + ld c, a + ld b, SET_FLAG + call EvoFlagAction + +EvolveAfterBattle: ; 421e6 + xor a + ld [wd268], a + dec a + ld [CurPartyMon], a + push hl + push bc + push de + ld hl, PartyCount + + push hl + +CheckForEvolvablePokemon: ; 421f5 + ld hl, CurPartyMon + inc [hl] + + pop hl + + inc hl + ld a, [hl] + cp $ff + jp z, Evolution_ReturnToMap + + ld [Buffer1], a + + push hl + ld a, [CurPartyMon] + ld c, a + ld hl, EvolvableFlags + ld b, CHECK_FLAG + call EvoFlagAction + ld a, c + and a + jp z, CheckForEvolvablePokemon + + ld a, [Buffer1] + dec a + ld b, 0 + ld c, a + ld hl, EvosAttacksPointers +rept 2 + add hl, bc +endr + ld a, [hli] + ld h, [hl] + ld l, a + + push hl + xor a + ld [MonType], a + predef CopyPkmnToTempMon + pop hl + +.loop + ld a, [hli] + and a + jr z, CheckForEvolvablePokemon + + ld b, a + + cp EVOLVE_TRADE + jr z, .trade + + ld a, [wLinkMode] + and a + jp nz, .dont_evolve_2 + + ld a, b + cp EVOLVE_ITEM + jp z, .item + + ld a, [wd1e9] + and a + jp nz, .dont_evolve_2 + + ld a, b + cp EVOLVE_LEVEL + jp z, .level + + cp EVOLVE_HAPPINESS + jr z, .happiness + + +; EVOLVE_STAT + ld a, [TempMonLevel] + cp [hl] + jp c, .dont_evolve_1 + + call IsMonHoldingEverstone + jp z, .dont_evolve_1 + + push hl + ld de, TempMonAttack + ld hl, TempMonDefense + ld c, 2 + call StringCmp + ld a, ATK_EQ_DEF + jr z, .got_tyrogue_evo + ld a, ATK_LT_DEF + jr c, .got_tyrogue_evo + ld a, ATK_GT_DEF +.got_tyrogue_evo + pop hl + + inc hl + cp [hl] + jp nz, .dont_evolve_2 + + inc hl + jr .proceed + + +.happiness + ld a, [TempMonHappiness] + cp 220 + jp c, .dont_evolve_2 + + call IsMonHoldingEverstone + jp z, .dont_evolve_2 + + ld a, [hli] + cp TR_ANYTIME + jr z, .proceed + cp TR_MORNDAY + jr z, .happiness_daylight + +; TR_NITE + ld a, [TimeOfDay] + cp NITE + jp nz, .dont_evolve_3 + jr .proceed + +.happiness_daylight + ld a, [TimeOfDay] + cp NITE + jp z, .dont_evolve_3 + jr .proceed + + +.trade + ld a, [wLinkMode] + and a + jp z, .dont_evolve_2 + + call IsMonHoldingEverstone + jp z, .dont_evolve_2 + + ld a, [hli] + ld b, a + inc a + jr z, .proceed + + ld a, [wLinkMode] + cp LINK_TIMECAPSULE + jp z, .dont_evolve_3 + + ld a, [TempMonItem] + cp b + jp nz, .dont_evolve_3 + + xor a + ld [TempMonItem], a + jr .proceed + + +.item + ld a, [hli] + ld b, a + ld a, [CurItem] + cp b + jp nz, .dont_evolve_3 + + ld a, [wd1e9] + and a + jp z, .dont_evolve_3 + ld a, [wLinkMode] + and a + jp nz, .dont_evolve_3 + jr .proceed + + +.level + ld a, [hli] + ld b, a + ld a, [TempMonLevel] + cp b + jp c, .dont_evolve_3 + call IsMonHoldingEverstone + jp z, .dont_evolve_3 + +.proceed + ld a, [TempMonLevel] + ld [CurPartyLevel], a + ld a, $1 + ld [wd268], a + + push hl + + ld a, [hl] + ld [Buffer2], a + ld a, [CurPartyMon] + ld hl, PartyMonNicknames + call GetNick + call CopyName1 + ld hl, Text_WhatEvolving + call PrintText + + ld c, 50 + call DelayFrames + + xor a + ld [hBGMapMode], a + hlcoord 0, 0 + lb bc, 12, 20 + call ClearBox + + ld a, $1 + ld [hBGMapMode], a + call ClearSprites + + callba EvolutionAnimation + + push af + call ClearSprites + pop af + jp c, CancelEvolution + + ld hl, Text_CongratulationsYourPokemon + call PrintText + + pop hl + + ld a, [hl] + ld [CurSpecies], a + ld [TempMonSpecies], a + ld [Buffer2], a + ld [wd265], a + call GetPokemonName + + push hl + ld hl, Text_EvolvedIntoPKMN + call PrintTextBoxText + callba MobileFn_106094 + + ld de, MUSIC_NONE + call PlayMusic + ld de, SFX_CAUGHT_MON + call PlaySFX + call WaitSFX + + ld c, 40 + call DelayFrames + + call ClearTileMap + call UpdateSpeciesNameIfNotNicknamed + call GetBaseData + + ld hl, TempMonExp + 2 + ld de, TempMonMaxHP + ld b, $1 + predef CalcPkmnStats + + ld a, [CurPartyMon] + ld hl, PartyMons + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld e, l + ld d, h + ld bc, MON_MAXHP + add hl, bc + ld a, [hli] + ld b, a + ld c, [hl] + ld hl, TempMonMaxHP + 1 + ld a, [hld] + sub c + ld c, a + ld a, [hl] + sbc b + ld b, a + ld hl, TempMonHP + 1 + ld a, [hl] + add c + ld [hld], a + ld a, [hl] + adc b + ld [hl], a + + ld hl, TempMonSpecies + ld bc, PARTYMON_STRUCT_LENGTH + call CopyBytes + + ld a, [CurSpecies] + ld [wd265], a + xor a + ld [MonType], a + call LearnLevelMoves + ld a, [wd265] + dec a + call SetSeenAndCaughtMon + + ld a, [wd265] + cp UNOWN + jr nz, .skip_unown + + ld hl, TempMonDVs + predef GetUnownLetter + callab UpdateUnownDex + +.skip_unown + pop de + pop hl + ld a, [TempMonSpecies] + ld [hl], a + push hl + ld l, e + ld h, d + jp CheckForEvolvablePokemon +; 423f8 + +.dont_evolve_1 + inc hl +.dont_evolve_2 + inc hl +.dont_evolve_3 + inc hl + jp .loop +; 423fe + +; dummy pop + pop hl + +Evolution_ReturnToMap: ; 423ff + pop de + pop bc + pop hl + ld a, [wLinkMode] + and a + ret nz + ld a, [wBattleMode] + and a + ret nz + ld a, [wd268] + and a + call nz, RestartMapMusic + ret +; 42414 + +UpdateSpeciesNameIfNotNicknamed: ; 42414 + ld a, [CurSpecies] + push af + ld a, [BaseDexNo] + ld [wd265], a + call GetPokemonName + pop af + ld [CurSpecies], a + ld hl, StringBuffer1 + ld de, StringBuffer2 +.loop + ld a, [de] + inc de + cp [hl] + inc hl + ret nz + cp "@" + jr nz, .loop + + ld a, [CurPartyMon] + ld bc, PKMN_NAME_LENGTH + ld hl, PartyMonNicknames + call AddNTimes + push hl + ld a, [CurSpecies] + ld [wd265], a + call GetPokemonName + ld hl, StringBuffer1 + pop de + ld bc, PKMN_NAME_LENGTH + jp CopyBytes +; 42454 + +CancelEvolution: ; 42454 + ld hl, Text_StoppedEvolving + call PrintText + call ClearTileMap + pop hl + jp CheckForEvolvablePokemon +; 42461 + +IsMonHoldingEverstone: ; 42461 + push hl + ld a, [CurPartyMon] + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld a, [hl] + cp EVERSTONE + pop hl + ret +; 42473 + +Text_CongratulationsYourPokemon: ; 0x42473 + ; Congratulations! Your @ @ + text_jump UnknownText_0x1c4b92 + db "@" +; 0x42478 + +Text_EvolvedIntoPKMN: ; 0x42478 + ; evolved into @ ! + text_jump UnknownText_0x1c4baf + db "@" +; 0x4247d + +Text_StoppedEvolving: ; 0x4247d + ; Huh? @ stopped evolving! + text_jump UnknownText_0x1c4bc5 + db "@" +; 0x42482 + +Text_WhatEvolving: ; 0x42482 + ; What? @ is evolving! + text_jump UnknownText_0x1c4be3 + db "@" +; 0x42487 + + +LearnLevelMoves: ; 42487 + ld a, [wd265] + ld [CurPartySpecies], a + dec a + ld b, 0 + ld c, a + ld hl, EvosAttacksPointers +rept 2 + add hl, bc +endr + ld a, [hli] + ld h, [hl] + ld l, a + +.skip_evos + ld a, [hli] + and a + jr nz, .skip_evos + +.find_move + ld a, [hli] + and a + jr z, .done + + ld b, a + ld a, [CurPartyLevel] + cp b + ld a, [hli] + jr nz, .find_move + + push hl + ld d, a + ld hl, PartyMon1Moves + ld a, [CurPartyMon] + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + + ld b, NUM_MOVES +.check_move + ld a, [hli] + cp d + jr z, .has_move + dec b + jr nz, .check_move + jr .learn +.has_move + + pop hl + jr .find_move + +.learn + ld a, d + ld [wd262], a + ld [wd265], a + call GetMoveName + call CopyName1 + predef LearnMove + pop hl + jr .find_move + +.done + ld a, [CurPartySpecies] + ld [wd265], a + ret +; 424e1 + + +FillMoves: ; 424e1 +; Fill in moves at de for CurPartySpecies at CurPartyLevel + + push hl + push de + push bc + ld hl, EvosAttacksPointers + ld b, 0 + ld a, [CurPartySpecies] + dec a + add a + rl b + ld c, a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a +.GoToAttacks + ld a, [hli] + and a + jr nz, .GoToAttacks + jr .GetLevel + +.NextMove + pop de +.GetMove + inc hl +.GetLevel + ld a, [hli] + and a + jp z, .done + ld b, a + ld a, [CurPartyLevel] + cp b + jp c, .done + ld a, [Buffer1] + and a + jr z, .CheckMove + ld a, [wd002] + cp b + jr nc, .GetMove + +.CheckMove + push de + ld c, NUM_MOVES +.CheckRepeat + ld a, [de] + inc de + cp [hl] + jr z, .NextMove + dec c + jr nz, .CheckRepeat + pop de + push de + ld c, NUM_MOVES +.CheckSlot + ld a, [de] + and a + jr z, .LearnMove + inc de + dec c + jr nz, .CheckSlot + pop de + push de + push hl + ld h, d + ld l, e + call ShiftMoves + ld a, [Buffer1] + and a + jr z, .ShiftedMove + push de + ld bc, PartyMon1PP - (PartyMon1Moves + NUM_MOVES - 1) + add hl, bc + ld d, h + ld e, l + call ShiftMoves + pop de + +.ShiftedMove + pop hl + +.LearnMove + ld a, [hl] + ld [de], a + ld a, [Buffer1] + and a + jr z, .NextMove + push hl + ld a, [hl] + ld hl, MON_PP - MON_MOVES + add hl, de + push hl + dec a + ld hl, Moves + MOVE_PP + ld bc, MOVE_LENGTH + call AddNTimes + ld a, BANK(Moves) + call GetFarByte + pop hl + ld [hl], a + pop hl + jr .NextMove + +.done + pop bc + pop de + pop hl + ret +; 4256e + +ShiftMoves: ; 4256e + ld c, NUM_MOVES - 1 +.loop + inc de + ld a, [de] + ld [hli], a + dec c + jr nz, .loop + ret +; 42577 + + +EvoFlagAction: ; 42577 + push de + ld d, $0 + predef FlagPredef + pop de + ret +; 42581 + +GetPreEvolution: ; 42581 +; Find the first mon to evolve into CurPartySpecies. + +; Return carry and the new species in CurPartySpecies +; if a pre-evolution is found. + + ld c, 0 +.loop ; For each Pokemon... + ld hl, EvosAttacksPointers + ld b, 0 +rept 2 + add hl, bc +endr + ld a, [hli] + ld h, [hl] + ld l, a +.loop2 ; For each evolution... + ld a, [hli] + and a + jr z, .no_evolve ; If we jump, this Pokemon does not evolve into CurPartySpecies. + cp EVOLVE_STAT ; This evolution type has the extra parameter of stat comparison. + jr nz, .not_tyrogue + inc hl + +.not_tyrogue + inc hl + ld a, [CurPartySpecies] + cp [hl] + jr z, .found_preevo + inc hl + ld a, [hl] + and a + jr nz, .loop2 + +.no_evolve + inc c + ld a, c + cp NUM_POKEMON + jr c, .loop + and a + ret + +.found_preevo + inc c + ld a, c + ld [CurPartySpecies], a + scf + ret +; 425b1 diff --git a/engine/link.asm b/engine/link.asm index afc4f2d2e..afdbd218a 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -1920,7 +1920,7 @@ Function28b87: ; 28b87 ld a, [PartyCount] dec a ld [CurPartyMon], a - callab Function421d8 + callab EvolvePokemon call ClearScreen call Function28ef8 call Function28eff diff --git a/engine/party_menu.asm b/engine/party_menu.asm index 4d50ee8e4..6b50ca620 100644 --- a/engine/party_menu.asm +++ b/engine/party_menu.asm @@ -839,92 +839,92 @@ YouHaveNoPKMNString: ; 0x50556 db "You have no <PK><MN>!@" -Function50566: ; 50566 +PrintPartyMenuActionText: ; 50566 ld a, [CurPartyMon] ld hl, PartyMonNicknames call GetNick ld a, [PartyMenuActionText] and $f - ld hl, Unknown_5057b - call Function505c1 + ld hl, .MenuActionTexts + call .PrintText ret ; 5057b -Unknown_5057b: ; 5057b - dw UnknownText_0x50594 - dw UnknownText_0x5059e - dw UnknownText_0x505a3 - dw UnknownText_0x505a8 - dw UnknownText_0x50599 - dw UnknownText_0x5058f - dw UnknownText_0x505ad - dw UnknownText_0x505b2 - dw UnknownText_0x505b7 - dw UnknownText_0x505bc +.MenuActionTexts: ; 5057b + dw .Text_CuredOfPoison + dw .Text_BurnWasHealed + dw .Text_Defrosted + dw .Text_WokeUp + dw .Text_RidOfParalysis + dw .Text_RecoveredSomeHP + dw .Text_HealthReturned + dw .Text_Revitalized + dw .Text_GrewToLevel + dw .Text_CameToItsSenses ; 5058f -UnknownText_0x5058f: ; 0x5058f +.Text_RecoveredSomeHP: ; 0x5058f ; recovered @ HP! text_jump UnknownText_0x1bc0a2 db "@" ; 0x50594 -UnknownText_0x50594: ; 0x50594 +.Text_CuredOfPoison: ; 0x50594 ; 's cured of poison. text_jump UnknownText_0x1bc0bb db "@" ; 0x50599 -UnknownText_0x50599: ; 0x50599 +.Text_RidOfParalysis: ; 0x50599 ; 's rid of paralysis. text_jump UnknownText_0x1bc0d2 db "@" ; 0x5059e -UnknownText_0x5059e: ; 0x5059e +.Text_BurnWasHealed: ; 0x5059e ; 's burn was healed. text_jump UnknownText_0x1bc0ea db "@" ; 0x505a3 -UnknownText_0x505a3: ; 0x505a3 +.Text_Defrosted: ; 0x505a3 ; was defrosted. text_jump UnknownText_0x1bc101 db "@" ; 0x505a8 -UnknownText_0x505a8: ; 0x505a8 +.Text_WokeUp: ; 0x505a8 ; woke up. text_jump UnknownText_0x1bc115 db "@" ; 0x505ad -UnknownText_0x505ad: ; 0x505ad +.Text_HealthReturned: ; 0x505ad ; 's health returned. text_jump UnknownText_0x1bc123 db "@" ; 0x505b2 -UnknownText_0x505b2: ; 0x505b2 +.Text_Revitalized: ; 0x505b2 ; is revitalized. text_jump UnknownText_0x1bc13a db "@" ; 0x505b7 -UnknownText_0x505b7: ; 0x505b7 +.Text_GrewToLevel: ; 0x505b7 ; grew to level @ !@ @ text_jump UnknownText_0x1bc14f db "@" ; 0x505bc -UnknownText_0x505bc: ; 0x505bc +.Text_CameToItsSenses: ; 0x505bc ; came to its senses. text_jump UnknownText_0x1bc16e db "@" ; 0x505c1 -Function505c1: ; 505c1 +.PrintText: ; 505c1 ld e, a ld d, 0 rept 2 @@ -935,7 +935,7 @@ endr ld l, a ld a, [Options] push af - set 4, a + set NO_TEXT_SCROLL, a ld [Options], a call PrintText pop af diff --git a/engine/pokegear.asm b/engine/pokegear.asm index 424669b20..3954f5384 100755 --- a/engine/pokegear.asm +++ b/engine/pokegear.asm @@ -330,7 +330,7 @@ Function90e3f: ; 90e3f .kanto ld e, 1 .ok - callba Function91ae1 + callba PokegearMap ld a, $7 ld bc, $12 hlcoord 1, 2 @@ -1919,7 +1919,8 @@ endr .kanto jp LoadStation_PlacesAndPeople ; 91ae1 -Function91ae1: ; 91ae1 + +PokegearMap: ; 91ae1 ld a, e and a jr nz, .kanto diff --git a/engine/predef.asm b/engine/predef.asm index cb72f9202..213cfc352 100644 --- a/engine/predef.asm +++ b/engine/predef.asm @@ -58,7 +58,7 @@ PredefPointers:: ; 856b add_predef GetMonFrontpic add_predef LearnLevelMoves add_predef FillMoves - add_predef Function421e6 + add_predef EvolveAfterBattle add_predef Function28f63 add_predef Function28f24 add_predef CopyPkmnToTempMon @@ -97,7 +97,7 @@ PredefPointers:: ; 856b add_predef DecompressPredef ; $40 add_predef CheckTypeMatchup add_predef ConvertMon_1to2 - add_predef Functionfb877 + add_predef NewPokedexEntry add_predef AnimateMon_Slow_Normal add_predef PlaceStatusString add_predef LoadMonAnimation diff --git a/engine/specials.asm b/engine/specials.asm index 68ad47aa4..29c4da492 100644 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -215,7 +215,7 @@ Special_GameCornerPrizeMonCheckDex: ; c230 call FadeToMenu ld a, [ScriptVar] ld [wd265], a - callba Functionfb877 + callba NewPokedexEntry call ExitAllMenus ret ; c252 diff --git a/engine/startmenu.asm b/engine/startmenu.asm index 41c79478f..290e6d6ea 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -664,7 +664,7 @@ UnknownText_0x12a5b: ; 0x12a5b CantUseItem: ; 12a60 ld hl, CantUseItemText - call Function2012 + call MenuTextBoxWaitButton ret ; 12a67 @@ -1241,14 +1241,14 @@ OpenPartyStats: ; 12e00 MonMenu_Cut: ; 12e1b callba CutFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12e2d + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12e2d +.Fail ld a, $3 ret ; 12e30 @@ -1256,160 +1256,161 @@ MonMenu_Cut: ; 12e1b MonMenu_Fly: ; 12e30 callba FlyFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $2 - jr z, .asm_12e4c + jr z, .Fail cp $0 - jr z, .asm_12e4f + jr z, .Error callba MobileFn_1060b5 ld b, $4 ld a, $2 ret -.asm_12e4c +.Fail ld a, $3 ret -.asm_12e4f +.Error ld a, $0 ret -.asm_12e52 +.Unused ld a, $1 ret ; 12e55 MonMenu_Flash: ; 12e55 callba Functionc8ac - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12e67 + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12e67 +.Fail ld a, $3 ret ; 12e6a MonMenu_Strength: ; 12e6a callba StrengthFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12e7c + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12e7c +.Fail ld a, $3 ret ; 12e7f MonMenu_Whirlpool: ; 12e7f callba WhirlpoolFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12e91 + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12e91 +.Fail ld a, $3 ret ; 12e94 MonMenu_Waterfall: ; 12e94 callba Functioncade - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12ea6 + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12ea6 +.Fail ld a, $3 ret ; 12ea9 MonMenu_Teleport: ; 12ea9 callba TeleportFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] and a - jr z, .asm_12eba + jr z, .Fail ld b, $4 ld a, $2 ret -.asm_12eba +.Fail ld a, $3 ret ; 12ebd MonMenu_Surf: ; 12ebd callba SurfFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] and a - jr z, .asm_12ece + jr z, .Fail ld b, $4 ld a, $2 ret -.asm_12ece +.Fail ld a, $3 ret ; 12ed1 MonMenu_Dig: ; 12ed1 callba DigFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12ee3 + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12ee3 +.Fail ld a, $3 ret ; 12ee6 MonMenu_Softboiled_MilkDrink: ; 12ee6 - call Function12f05 - jr nc, .asm_12ef3 - callba Functionf3df - jr .asm_12ef9 + call .CheckMonHasEnoughHP + jr nc, .NotEnoughHP + callba Softboiled_MilkDrinkFunction + jr .finish -.asm_12ef3 - ld hl, UnknownText_0x12f00 +.NotEnoughHP + ld hl, .Text_NotEnoughHP call PrintText -.asm_12ef9 +.finish xor a ld [PartyMenuActionText], a ld a, $3 ret ; 12f00 -UnknownText_0x12f00: ; 0x12f00 +.Text_NotEnoughHP: ; 0x12f00 ; Not enough HP! text_jump UnknownText_0x1c1ce3 db "@" ; 0x12f05 -Function12f05: ; 12f05 +.CheckMonHasEnoughHP: ; 12f05 +; Need to have at least (MaxHP / 5) HP left. ld a, MON_MAXHP call GetPartyParamLocation ld a, [hli] ld [hDividend + 0], a ld a, [hl] ld [hDividend + 1], a - ld a, $5 + ld a, 5 ld [hDivisor], a - ld b, $2 + ld b, 2 call Divide ld a, MON_HP + 1 call GetPartyParamLocation @@ -1423,28 +1424,28 @@ Function12f05: ; 12f05 MonMenu_Headbutt: ; 12f26 callba HeadbuttFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12f38 + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12f38 +.Fail ld a, $3 ret ; 12f3b MonMenu_RockSmash: ; 12f3b callba RockSmashFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12f4d + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12f4d +.Fail ld a, $3 ret ; 12f50 diff --git a/engine/town_map.asm b/engine/town_map.asm index a2f93119a..c821e793a 100755 --- a/engine/town_map.asm +++ b/engine/town_map.asm @@ -147,7 +147,7 @@ Function91a04: ; 91a04 ld e, $1 .okay - callba Function91ae1 + callba PokegearMap ld a, $7 ld bc, 6 hlcoord 1, 0 |