Finish field_specials
This commit is contained in:
@@ -366,9 +366,9 @@ sub_806CAC8: @ 806CAC8
|
||||
bl IncrementGameStat
|
||||
bl MENewsJisanStepCounter
|
||||
bl IncrementRenewableHiddenItemStepCounter
|
||||
bl sub_80CC918
|
||||
bl RunMassageCooldownStepCounter
|
||||
bl IncrementResortGorgeousStepCounter
|
||||
bl sub_80CCFBC
|
||||
bl BirthIslandDeoxysStepCounter
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
adds r2, r6, 0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -33,7 +33,7 @@ sub_8097898: @ 8097898
|
||||
ldr r4, _080978CC @ =gUnknown_2039874
|
||||
movs r0, 0
|
||||
strb r0, [r4]
|
||||
bl sub_80CCD84
|
||||
bl CutMoveRuinValleyCheck
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
@@ -232,7 +232,7 @@ sub_8097A20: @ 8097A20
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _08097A3C
|
||||
bl sub_80CCDD0
|
||||
bl CutMoveOpenDottedHoleDoor
|
||||
b _08097A42
|
||||
.align 2, 0
|
||||
_08097A38: .4byte gUnknown_2039874
|
||||
|
||||
+16
-15
@@ -15,6 +15,7 @@
|
||||
#include "constants/map_objects.h"
|
||||
#include "constants/fame_checker.h"
|
||||
#include "constants/seagallop.h"
|
||||
#include "constants/game_stat.h"
|
||||
.include "asm/macros.inc"
|
||||
.include "asm/macros/event.inc"
|
||||
.set FALSE, 0
|
||||
@@ -1599,7 +1600,7 @@ EventScript_1A6578:: @ 81A6578
|
||||
end
|
||||
|
||||
EventScript_1A65B8:: @ 81A65B8
|
||||
incrementgamestat 15
|
||||
incrementgamestat GAME_STAT_USED_POKECENTER
|
||||
message Text_1A54E1
|
||||
waitmessage
|
||||
call EventScript_1A65CE
|
||||
@@ -1618,7 +1619,7 @@ EventScript_1A65CE:: @ 81A65CE
|
||||
return
|
||||
|
||||
EventScript_1A65EC:: @ 81A65EC
|
||||
specialvar VAR_RESULT, sub_80CD074
|
||||
specialvar VAR_RESULT, Special_PlayerIsNotInTrainerTowerLobby
|
||||
compare_var_to_value VAR_RESULT, 0
|
||||
goto_if eq, EventScript_1A661D
|
||||
specialvar VAR_RESULT, sp182_move_string
|
||||
@@ -1797,7 +1798,7 @@ gStdScript_1:: @ 81A67B3
|
||||
EventScript_1A67EE:: @ 81A67EE
|
||||
removeobject VAR_LAST_TALKED
|
||||
additem VAR_0x8004, VAR_0x8005
|
||||
specialvar VAR_RESULT, sub_80CC8CC
|
||||
specialvar VAR_RESULT, Special_ItemIsTM_GetMoveName
|
||||
copyvar VAR_0x8008, VAR_RESULT
|
||||
compare_var_to_value VAR_0x8008, 1
|
||||
call_if eq, EventScript_1A6821
|
||||
@@ -2500,7 +2501,7 @@ Movement_1A75D3:: @ 81A75D3
|
||||
step_end
|
||||
|
||||
EventScript_1A75D5:: @ 81A75D5
|
||||
special sub_80CC974
|
||||
special Special_PokemonLeagueLightingEffect
|
||||
return
|
||||
|
||||
Movement_1A75D9:: @ 81A75D9
|
||||
@@ -2704,7 +2705,7 @@ gUnknown_81A7702:: @ 81A7702
|
||||
call EventScript_1A6AC0
|
||||
lock
|
||||
faceplayer
|
||||
specialvar VAR_0x8008, sub_80CC4D4
|
||||
specialvar VAR_0x8008, Special_GetMartClerkObjectId
|
||||
textcolor 0
|
||||
compare_var_to_value VAR_0x8004, 0
|
||||
goto_if eq, EventScript_1A774D
|
||||
@@ -4392,12 +4393,12 @@ EventScript_1A925E:: @ 81A925E
|
||||
doweather
|
||||
return
|
||||
|
||||
EventScript_1A926C:: @ 81A926C
|
||||
special sub_80CD098
|
||||
EventScript_BrailleCursorWaitButton:: @ 81A926C
|
||||
special Special_BrailleCursorToggle
|
||||
waitbuttonpress
|
||||
playse SE_SELECT
|
||||
setvar VAR_0x8006, 1
|
||||
special sub_80CD098
|
||||
special Special_BrailleCursorToggle
|
||||
return
|
||||
|
||||
EventScript_1A927C:: @ 81A927C
|
||||
@@ -9182,7 +9183,7 @@ EventScript_1BBA04:: @ 81BBA04
|
||||
faceplayer
|
||||
checkflag FLAG_SYS_POKEDEX_GET
|
||||
goto_if FALSE, EventScript_1BB877
|
||||
specialvar VAR_RESULT, sub_80CD034
|
||||
specialvar VAR_RESULT, Special_BadEggInParty
|
||||
compare_var_to_value VAR_RESULT, 1
|
||||
goto_if eq, EventScript_1BB867
|
||||
copyvar VAR_0x8007, VAR_LAST_TALKED
|
||||
@@ -9304,7 +9305,7 @@ EventScript_1BBB9C:: @ 81BBB9C
|
||||
faceplayer
|
||||
checkflag FLAG_SYS_POKEDEX_GET
|
||||
goto_if FALSE, EventScript_1BB877
|
||||
specialvar VAR_RESULT, sub_80CD034
|
||||
specialvar VAR_RESULT, Special_BadEggInParty
|
||||
compare_var_to_value VAR_RESULT, 1
|
||||
goto_if eq, EventScript_1BB867
|
||||
specialvar VAR_RESULT, IsWirelessAdapterConnected
|
||||
@@ -11504,7 +11505,7 @@ EventScript_1BF3DD:: @ 81BF3DD
|
||||
msgbox Text_19DE24
|
||||
waitmoncry
|
||||
special PutMonInRoute5Daycare
|
||||
incrementgamestat 47
|
||||
incrementgamestat GAME_STAT_USED_DAYCARE
|
||||
goto EventScript_1BF541
|
||||
end
|
||||
|
||||
@@ -13879,13 +13880,13 @@ TwoIsland_CapeBrink_House_EventScript_1C4DEC:: @ 81C4DEC
|
||||
special sub_8112364
|
||||
lock
|
||||
faceplayer
|
||||
checkflag FLAG_LEARNED_MOVE_AT_CAPE_BRINK
|
||||
checkflag FLAG_LEARNED_ALL_MOVES_AT_CAPE_BRINK
|
||||
goto_if TRUE, EventScript_1C4EA1
|
||||
checkflag FLAG_TEMP_2
|
||||
goto_if TRUE, EventScript_1C4E97
|
||||
getfirstpartymonname 0
|
||||
msgbox Text_1A46C6
|
||||
specialvar VAR_RESULT, sub_80CCB94
|
||||
specialvar VAR_RESULT, Special_CapeBrinkGetMoveToTeachLeadPokemon
|
||||
compare_var_to_value VAR_RESULT, 0
|
||||
goto_if eq, EventScript_1C4F26
|
||||
copyvar VAR_0x8009, VAR_0x8005
|
||||
@@ -13925,7 +13926,7 @@ EventScript_1C4EA1:: @ 81C4EA1
|
||||
|
||||
EventScript_1C4EAB:: @ 81C4EAB
|
||||
copyvar VAR_0x8005, VAR_0x8009
|
||||
specialvar VAR_RESULT, sub_80CCCF8
|
||||
specialvar VAR_RESULT, Special_HasLearnedAllMovesFromCapeBrinkTutor
|
||||
compare_var_to_value VAR_RESULT, 1
|
||||
goto_if eq, EventScript_1C4ECD
|
||||
msgbox Text_1A4865
|
||||
@@ -13935,7 +13936,7 @@ EventScript_1C4EAB:: @ 81C4EAB
|
||||
|
||||
EventScript_1C4ECD:: @ 81C4ECD
|
||||
msgbox Text_1A48F3
|
||||
setflag FLAG_LEARNED_MOVE_AT_CAPE_BRINK
|
||||
setflag FLAG_LEARNED_ALL_MOVES_AT_CAPE_BRINK
|
||||
release
|
||||
end
|
||||
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
#include "constants/species.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/maps.h"
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
.section .rodata
|
||||
|
||||
.align 2
|
||||
gUnknown_83F5F50:: @ 83F5F50
|
||||
.incbin "data/field_specials/unk_83F5F50.gbapal"
|
||||
.incbin "data/field_specials/unk_83F5F70.gbapal"
|
||||
.incbin "data/field_specials/unk_83F5F90.gbapal"
|
||||
.incbin "data/field_specials/unk_83F5FB0.gbapal"
|
||||
.incbin "data/field_specials/unk_83F5FD0.gbapal"
|
||||
.incbin "data/field_specials/unk_83F5FF0.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6010.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6030.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6050.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6070.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6090.gbapal"
|
||||
|
||||
gUnknown_83F60B0:: @ 83F60B0
|
||||
.incbin "data/field_specials/unk_83F60B0.gbapal"
|
||||
|
||||
gUnknown_83F60D0:: @ 83F60D0
|
||||
.incbin "data/field_specials/unk_83F60D0.gbapal"
|
||||
.incbin "data/field_specials/unk_83F60F0.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6110.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6130.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6150.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6170.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6190.gbapal"
|
||||
.incbin "data/field_specials/unk_83F61B0.gbapal"
|
||||
|
||||
gUnknown_83F61D0:: @ 83F61D0
|
||||
.incbin "data/field_specials/unk_83F61D0.gbapal"
|
||||
|
||||
gUnknown_83F61F0:: @ 83F61F0
|
||||
.byte 40
|
||||
.byte 12
|
||||
.byte 12
|
||||
.byte 12
|
||||
.byte 12
|
||||
.byte 12
|
||||
.byte 12
|
||||
.byte 12
|
||||
.byte 12
|
||||
.byte 12
|
||||
.byte 12
|
||||
|
||||
gUnknown_83F61FB:: @ 83F61FB
|
||||
.byte 20
|
||||
.byte 8
|
||||
.byte 8
|
||||
.byte 8
|
||||
.byte 8
|
||||
.byte 8
|
||||
.byte 8
|
||||
.byte 8
|
||||
|
||||
gUnknown_83F6203:: @ 83F6203
|
||||
.byte 3
|
||||
.byte 6
|
||||
.byte 9
|
||||
|
||||
.align 1
|
||||
gUnknown_83F6206:: @ 83F6206
|
||||
.incbin "data/field_specials/unk_83F6206.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6226.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6246.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6266.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6286.gbapal"
|
||||
.incbin "data/field_specials/unk_83F62A6.gbapal"
|
||||
.incbin "data/field_specials/unk_83F62C6.gbapal"
|
||||
.incbin "data/field_specials/unk_83F62E6.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6306.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6326.gbapal"
|
||||
.incbin "data/field_specials/unk_83F6346.gbapal"
|
||||
|
||||
gUnknown_83F6366:: @ 83F6366
|
||||
.byte 0x0f, 0x0c
|
||||
.byte 0x0b, 0x0e
|
||||
.byte 0x0f, 0x08
|
||||
.byte 0x13, 0x0e
|
||||
.byte 0x0c, 0x0b
|
||||
.byte 0x12, 0x0b
|
||||
.byte 0x0f, 0x0e
|
||||
.byte 0x0b, 0x0e
|
||||
.byte 0x13, 0x0e
|
||||
.byte 0x0f, 0x0f
|
||||
.byte 0x0f, 0x0a
|
||||
|
||||
gUnknown_83F637C:: @ 83F637C
|
||||
.byte 0x04
|
||||
.byte 0x08
|
||||
.byte 0x08
|
||||
.byte 0x08
|
||||
.byte 0x04
|
||||
.byte 0x04
|
||||
.byte 0x04
|
||||
.byte 0x06
|
||||
.byte 0x03
|
||||
.byte 0x03
|
||||
|
||||
.align 2
|
||||
@@ -5,7 +5,7 @@ BirthIsland_Exterior_MapScripts:: @ 8165203
|
||||
.byte 0
|
||||
|
||||
BirthIsland_Exterior_MapScript3_165213:: @ 8165213
|
||||
special sub_80CD008
|
||||
special Special_SetDeoxysTriangleObjectPal
|
||||
end
|
||||
|
||||
BirthIsland_Exterior_MapScript1_165217:: @ 8165217
|
||||
@@ -50,7 +50,7 @@ BirthIsland_Exterior_EventScript_165271:: @ 8165271
|
||||
compare_var_to_value VAR_RESULT, 2
|
||||
goto_if eq, EventScript_1A7AE0
|
||||
special sub_8112364
|
||||
special sub_80CCDFC
|
||||
special Special_DeoxysSound
|
||||
waitstate
|
||||
switch VAR_RESULT
|
||||
case 0, EventScript_1652BA
|
||||
|
||||
@@ -49,12 +49,12 @@ EventScript_1688BA:: @ 81688BA
|
||||
EventScript_1688E3:: @ 81688E3
|
||||
getspeciesname 1, SPECIES_TOGEPI
|
||||
setvar VAR_0x8004, SPECIES_TOGEPI
|
||||
specialvar VAR_RESULT, sub_80CD0F4
|
||||
specialvar VAR_RESULT, Special_PlayerPartyContainsSpeciesWithPlayerID
|
||||
compare_var_to_value VAR_RESULT, 1
|
||||
goto_if eq, EventScript_168895
|
||||
getspeciesname 1, SPECIES_TOGETIC
|
||||
setvar VAR_0x8004, SPECIES_TOGETIC
|
||||
specialvar VAR_RESULT, sub_80CD0F4
|
||||
specialvar VAR_RESULT, Special_PlayerPartyContainsSpeciesWithPlayerID
|
||||
compare_var_to_value VAR_RESULT, 1
|
||||
goto_if eq, EventScript_168895
|
||||
msgbox gUnknown_818A9C0
|
||||
|
||||
@@ -40,7 +40,7 @@ EventScript_171993:: @ 8171993
|
||||
msgbox gUnknown_81BF860
|
||||
waitmoncry
|
||||
special StoreSelectedPokemonInDaycare
|
||||
incrementgamestat 47
|
||||
incrementgamestat GAME_STAT_USED_DAYCARE
|
||||
specialvar VAR_RESULT, GetDaycareState
|
||||
compare_var_to_value VAR_RESULT, 2
|
||||
goto_if eq, EventScript_171A01
|
||||
|
||||
@@ -7,31 +7,31 @@ MtEmber_RubyPath_B5F_EventScript_163BAB:: @ 8163BAB
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A92C5
|
||||
getbraillestringwidth gUnknown_81A92C5
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A92D0
|
||||
getbraillestringwidth gUnknown_81A92D0
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A92DC
|
||||
getbraillestringwidth gUnknown_81A92DC
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A92E6
|
||||
getbraillestringwidth gUnknown_81A92E6
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A92F2
|
||||
getbraillestringwidth gUnknown_81A92F2
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A92FE
|
||||
getbraillestringwidth gUnknown_81A92FE
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A930A
|
||||
getbraillestringwidth gUnknown_81A930A
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
braillemessage gUnknown_81A9316
|
||||
waitbuttonpress
|
||||
releaseall
|
||||
|
||||
@@ -45,7 +45,7 @@ NavelRock_Summit_EventScript_164FFB:: @ 8164FFB
|
||||
special SpawnCameraObject
|
||||
setvar VAR_0x8004, 3
|
||||
setvar VAR_0x8005, 35
|
||||
special sub_80CD1B4
|
||||
special Special_LoopWingFlapSound
|
||||
applymovement 1, Movement_1650E0
|
||||
applymovement 127, Movement_1650CD
|
||||
waitmovement 0
|
||||
@@ -59,7 +59,7 @@ NavelRock_Summit_EventScript_164FFB:: @ 8164FFB
|
||||
delay 60
|
||||
setvar VAR_0x8004, 3
|
||||
setvar VAR_0x8005, 35
|
||||
special sub_80CD1B4
|
||||
special Special_LoopWingFlapSound
|
||||
applymovement 127, Movement_1650D1
|
||||
applymovement 1, Movement_1650D7
|
||||
waitmovement 0
|
||||
|
||||
@@ -241,63 +241,63 @@ SixIsland_DottedHole_SapphireRoom_EventScript_16441F:: @ 816441F
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A9321
|
||||
getbraillestringwidth gUnknown_81A9321
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A932D
|
||||
getbraillestringwidth gUnknown_81A932D
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A9338
|
||||
getbraillestringwidth gUnknown_81A9338
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A933F
|
||||
getbraillestringwidth gUnknown_81A933F
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A934A
|
||||
getbraillestringwidth gUnknown_81A934A
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A9356
|
||||
getbraillestringwidth gUnknown_81A9356
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A9362
|
||||
getbraillestringwidth gUnknown_81A9362
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A9368
|
||||
getbraillestringwidth gUnknown_81A9368
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A9374
|
||||
getbraillestringwidth gUnknown_81A9374
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A937C
|
||||
getbraillestringwidth gUnknown_81A937C
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A9387
|
||||
getbraillestringwidth gUnknown_81A9387
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A9393
|
||||
getbraillestringwidth gUnknown_81A9393
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A939F
|
||||
getbraillestringwidth gUnknown_81A939F
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A93AB
|
||||
getbraillestringwidth gUnknown_81A93AB
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
setvar VAR_0x8006, 0
|
||||
braillemessage gUnknown_81A93B4
|
||||
getbraillestringwidth gUnknown_81A93B4
|
||||
call EventScript_1A926C
|
||||
call EventScript_BrailleCursorWaitButton
|
||||
braillemessage gUnknown_81A93C0
|
||||
waitbuttonpress
|
||||
releaseall
|
||||
|
||||
+12
-12
@@ -398,7 +398,7 @@ gSpecials:: @ 815FD60
|
||||
def_special sub_811999C
|
||||
def_special sp182_move_string
|
||||
def_special sub_811390C
|
||||
def_special sub_80CC4D4
|
||||
def_special Special_GetMartClerkObjectId
|
||||
def_special Special_BattleCardAction
|
||||
def_special sub_8110AB4
|
||||
def_special sub_8112364
|
||||
@@ -415,7 +415,7 @@ gSpecials:: @ 815FD60
|
||||
def_special IsNationalPokedexEnabled
|
||||
def_special sub_815D9E8
|
||||
def_special sub_814B504
|
||||
def_special sub_80CC8CC
|
||||
def_special Special_ItemIsTM_GetMoveName
|
||||
def_special Special_DaisyMassageServices
|
||||
def_special HelpSystem_Disable
|
||||
def_special HelpSystem_Enable
|
||||
@@ -426,31 +426,31 @@ gSpecials:: @ 815FD60
|
||||
def_special sub_815EEB0
|
||||
def_special sub_815EF5C
|
||||
def_special sub_815F070
|
||||
def_special sub_80CC974
|
||||
def_special Special_PokemonLeagueLightingEffect
|
||||
def_special sub_814EA7C
|
||||
def_special sub_80CCB94
|
||||
def_special sub_80CCCF8
|
||||
def_special Special_CapeBrinkGetMoveToTeachLeadPokemon
|
||||
def_special Special_HasLearnedAllMovesFromCapeBrinkTutor
|
||||
def_special Special_Credits
|
||||
def_special sub_8153810
|
||||
def_special sub_809D764
|
||||
def_special sub_809D8C0
|
||||
def_special sub_8147500
|
||||
def_special GetPlayerFacingDirection
|
||||
def_special sub_80CCDFC
|
||||
def_special sub_80CD008
|
||||
def_special Special_DeoxysSound
|
||||
def_special Special_SetDeoxysTriangleObjectPal
|
||||
def_special sub_8147594
|
||||
def_special sub_80CD034
|
||||
def_special Special_BadEggInParty
|
||||
def_special sub_815D834
|
||||
def_special HasAllMons
|
||||
def_special sub_80CD074
|
||||
def_special sub_80CD098
|
||||
def_special Special_PlayerIsNotInTrainerTowerLobby
|
||||
def_special Special_BrailleCursorToggle
|
||||
def_special sub_811B15C
|
||||
def_special sub_80CD0F4
|
||||
def_special Special_PlayerPartyContainsSpeciesWithPlayerID
|
||||
def_special sub_809C4A8
|
||||
def_special sub_81537C0
|
||||
def_special sub_809C5FC
|
||||
def_special Special_InitElevatorFloorSelectMenuPos
|
||||
def_special Special_ComputeLoreleiDollCollection
|
||||
def_special sub_80CD1B4
|
||||
def_special Special_LoopWingFlapSound
|
||||
def_special CreateObedientEnemyMon
|
||||
gSpecialsEnd::
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
#define FLDEFF_USE_TELEPORT 63
|
||||
#define FLDEFF_UNK_40 64
|
||||
#define FLDEFF_UNK_41 65 // TODO: related to vs_seeker
|
||||
#define FLDEFF_UNK_43 67 // TODO: related to deoxys
|
||||
#define FLDEFF_UNK_45 69 // TODO: related to fame checker photos
|
||||
|
||||
#endif // GUARD_CONSTANTS_FIELD_EFFECTS_H
|
||||
|
||||
@@ -748,10 +748,10 @@
|
||||
#define FLAG_NO_ROOM_FOR_TOGEPI_EGG 0x2DB
|
||||
#define FLAG_RECOVERED_SAPPHIRE 0x2DC
|
||||
#define FLAG_GOT_RUBY 0x2DD
|
||||
#define FLAG_0x2DE 0x2DE
|
||||
#define FLAG_0x2DF 0x2DF
|
||||
#define FLAG_0x2E0 0x2E0
|
||||
#define FLAG_LEARNED_MOVE_AT_CAPE_BRINK 0x2E1
|
||||
#define FLAG_TUTOR_FRENZY_PLANT 0x2DE
|
||||
#define FLAG_TUTOR_BLAST_BURN 0x2DF
|
||||
#define FLAG_TUTOR_HYDRO_CANNON 0x2E0
|
||||
#define FLAG_LEARNED_ALL_MOVES_AT_CAPE_BRINK 0x2E1
|
||||
#define FLAG_GOT_NUGGET_FROM_DUNSPARCE_TUNNEL 0x2E2
|
||||
#define FLAG_USED_CUT_ON_RUIN_VALLEY_BRAILLE 0x2E3
|
||||
#define FLAG_FOUGHT_DEOXYS 0x2E4
|
||||
|
||||
@@ -20,5 +20,6 @@ void sub_8084454(void);
|
||||
void sub_8084784(u8 a0, u8 a1);
|
||||
void sub_8084F2C(u8 a0);
|
||||
void sub_80853CC(u8 a0);
|
||||
void sub_8083598(u8 a0);
|
||||
|
||||
#endif //GUARD_FIELD_EFFECTS_H
|
||||
|
||||
@@ -15,7 +15,7 @@ u8 GetLeadMonIndex(void);
|
||||
s32 CountDigits(s32 number);
|
||||
void TV_PrintIntToStringVar(u8, int);
|
||||
u16 ScrSpecial_GetStarter(void);
|
||||
void sub_80CCB68(void);
|
||||
void StopPokemonLeagueLightingEffectTask(void);
|
||||
void nullsub_60(void);
|
||||
void nullsub_61(void);
|
||||
u8 ContextNpcGetTextColor(void);
|
||||
|
||||
@@ -25,6 +25,7 @@ bool32 CanCameraMoveInDirection(s32);
|
||||
u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr);
|
||||
const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection);
|
||||
struct MapConnection * GetMapConnectionAtPos(s16 x, s16 y);
|
||||
void sub_8059948(u8 a0, u8 a1);
|
||||
|
||||
void save_serialize_map(void);
|
||||
|
||||
|
||||
@@ -188,7 +188,6 @@ SECTIONS {
|
||||
src/prof_pc.o(.text);
|
||||
src/hof_pc.o(.text);
|
||||
src/field_specials.o(.text);
|
||||
asm/field_specials.o(.text);
|
||||
src/battle_records.o(.text);
|
||||
asm/evolution_scene.o(.text);
|
||||
src/coins.o(.text);
|
||||
@@ -447,7 +446,6 @@ SECTIONS {
|
||||
src/battle_ai_script_commands.o(.rodata);
|
||||
data/data_83F5738.o(.rodata);
|
||||
src/field_specials.o(.rodata);
|
||||
data/field_specials.o(.rodata);
|
||||
src/battle_records.o(.rodata);
|
||||
data/data_83F5738.o(.rodata.83F6C90);
|
||||
src/battle_transition.o(.rodata);
|
||||
|
||||
+589
-22
@@ -1,5 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "malloc.h"
|
||||
#include "palette.h"
|
||||
#include "quest_log.h"
|
||||
#include "list_menu.h"
|
||||
#include "diploma.h"
|
||||
@@ -17,6 +18,7 @@
|
||||
#include "task.h"
|
||||
#include "battle_tower.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "menu_indicators.h"
|
||||
#include "random.h"
|
||||
@@ -33,6 +35,7 @@
|
||||
#include "menu.h"
|
||||
#include "mevent.h"
|
||||
#include "naming_screen.h"
|
||||
#include "party_menu.h"
|
||||
#include "dynamic_placeholder_text_util.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "constants/songs.h"
|
||||
@@ -41,13 +44,14 @@
|
||||
#include "constants/map_objects.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/region_map.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
EWRAM_DATA u8 sElevatorCurrentFloorWindowId = 0;
|
||||
EWRAM_DATA u16 sElevatorScroll = 0;
|
||||
EWRAM_DATA u16 sElevatorCursorPos = 0;
|
||||
EWRAM_DATA struct ListMenuItem * gUnknown_2039A14 = NULL;
|
||||
EWRAM_DATA u16 gUnknown_2039A18 = 0;
|
||||
EWRAM_DATA u8 gUnknown_2039A1A = 0;
|
||||
EWRAM_DATA u8 sUnknownBoxId = 0;
|
||||
EWRAM_DATA u8 gUnknown_2039A1B = 0;
|
||||
|
||||
struct ListMenuTemplate gUnknown_3005360;
|
||||
@@ -74,8 +78,14 @@ static void Task_ListMenuRemoveScrollIndicatorArrowPair(u8 taskId);
|
||||
static u16 GetStarterPokemon(u16 starterIdx);
|
||||
static void ChangeBoxPokemonNickname_CB(void);
|
||||
static void ChangePokemonNickname_CB(void);
|
||||
static void Task_RunPokemonLeagueLightingEffect(u8 taskId);
|
||||
static void Task_CancelPokemonLeagueLightingEffect(u8 taskId);
|
||||
static void task_deoxys_sound(u8 taskId);
|
||||
static void MoveDeoxysObject(u8 num);
|
||||
static void Task_WaitDeoxysFieldEffect(u8 taskId);
|
||||
static void Task_WingFlapSound(u8 taskId);
|
||||
|
||||
static u8 *const gUnknown_83F5AF8[] = {
|
||||
static u8 *const sStringVarPtrs[] = {
|
||||
gStringVar1,
|
||||
gStringVar2,
|
||||
gStringVar3
|
||||
@@ -319,7 +329,7 @@ void Special_BufferEReaderTrainerName5(void)
|
||||
CopyEReaderTrainerName5(gStringVar1);
|
||||
}
|
||||
|
||||
static const u8 gUnknown_83F5B04[] = {
|
||||
static const u8 sUnused_83F5B04[] = {
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
@@ -736,7 +746,7 @@ static const u8 *const sFloorNamePointers[] = {
|
||||
gUnknown_841806D
|
||||
};
|
||||
|
||||
static const u8 gUnknown_83F5B84[] = {
|
||||
static const u8 sUnused_83F5B84[] = {
|
||||
26,
|
||||
26,
|
||||
26,
|
||||
@@ -1214,7 +1224,7 @@ void Special_ListMenu(void)
|
||||
}
|
||||
}
|
||||
|
||||
static const u8 *const gUnknown_83F5BCC[][12] = {
|
||||
static const u8 *const sListMenuLabels[][12] = {
|
||||
{
|
||||
gUnknown_8417FD9,
|
||||
gUnknown_8417FE6,
|
||||
@@ -1293,7 +1303,7 @@ static void Task_CreateScriptListMenu(u8 taskId)
|
||||
mwidth = 0;
|
||||
for (i = 0; i < task->data[1]; i++)
|
||||
{
|
||||
gUnknown_2039A14[i].label = gUnknown_83F5BCC[gSpecialVar_0x8004][i];
|
||||
gUnknown_2039A14[i].label = sListMenuLabels[gSpecialVar_0x8004][i];
|
||||
gUnknown_2039A14[i].index = i;
|
||||
width = GetStringWidth(2, gUnknown_2039A14[i].label, 0);
|
||||
if (width > mwidth)
|
||||
@@ -1530,7 +1540,7 @@ bool8 Special_HasLeadMonBeenRenamed(void)
|
||||
void TV_PrintIntToStringVar(u8 varidx, s32 number)
|
||||
{
|
||||
s32 n = CountDigits(number);
|
||||
ConvertIntToDecimalStringN(gUnknown_83F5AF8[varidx], number, STR_CONV_MODE_LEFT_ALIGN, n);
|
||||
ConvertIntToDecimalStringN(sStringVarPtrs[varidx], number, STR_CONV_MODE_LEFT_ALIGN, n);
|
||||
}
|
||||
|
||||
s32 CountDigits(s32 number)
|
||||
@@ -1714,7 +1724,7 @@ bool8 Special_PlayerPartyContainsSpecies(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static const u8 gUnknown_83F5D32[][3] = {
|
||||
static const u8 sMartMaps[][3] = {
|
||||
{MAP_GROUP(VIRIDIAN_CITY_MART), MAP_NUM(VIRIDIAN_CITY_MART), 1},
|
||||
{MAP_GROUP(PEWTER_CITY_MART), MAP_NUM(PEWTER_CITY_MART), 3},
|
||||
{MAP_GROUP(CERULEAN_CITY_MART), MAP_NUM(CERULEAN_CITY_MART), 1},
|
||||
@@ -1729,13 +1739,13 @@ static const u8 gUnknown_83F5D32[][3] = {
|
||||
{MAP_GROUP(SIX_ISLAND_MART), MAP_NUM(SIX_ISLAND_MART), 1}
|
||||
};
|
||||
|
||||
u8 sub_80CC4D4(void)
|
||||
u8 Special_GetMartClerkObjectId(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < NELEMS(gUnknown_83F5D32); i++)
|
||||
for (i = 0; i < NELEMS(sMartMaps); i++)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == gUnknown_83F5D32[i][0] && gSaveBlock1Ptr->location.mapNum == gUnknown_83F5D32[i][1])
|
||||
return gUnknown_83F5D32[i][2];
|
||||
if (gSaveBlock1Ptr->location.mapGroup == sMartMaps[i][0] && gSaveBlock1Ptr->location.mapNum == sMartMaps[i][1])
|
||||
return sMartMaps[i][2];
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -1750,7 +1760,7 @@ static const struct {
|
||||
u16 num;
|
||||
u16 grp2;
|
||||
u16 num2;
|
||||
} gUnknown_83F5D58[51] = {
|
||||
} sInsideOutsidePairs[51] = {
|
||||
{MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_1F), MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_1F), MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN)},
|
||||
{MAP_GROUP(PALLET_TOWN_PROFESSOR_OAKS_LAB), MAP_NUM(PALLET_TOWN_PROFESSOR_OAKS_LAB), MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN)},
|
||||
{MAP_GROUP(VIRIDIAN_CITY_GYM), MAP_NUM(VIRIDIAN_CITY_GYM), MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY)},
|
||||
@@ -1807,9 +1817,9 @@ static const struct {
|
||||
void sub_80CC534(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < NELEMS(gUnknown_83F5D58); i++)
|
||||
for (i = 0; i < NELEMS(sInsideOutsidePairs); i++)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == gUnknown_83F5D58[i].grp && gSaveBlock1Ptr->location.mapNum == gUnknown_83F5D58[i].num)
|
||||
if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[i].grp && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[i].num)
|
||||
{
|
||||
if (VarGet(VAR_0x404D) != 35 || i != 32)
|
||||
{
|
||||
@@ -1851,7 +1861,7 @@ void sub_80CC59C(void)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE22) && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE22) || gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE23)))
|
||||
{
|
||||
sp0.unk0 = get_mapheader_by_bank_and_number(gUnknown_83F5D58[r5].grp, gUnknown_83F5D58[r5].num)->regionMapSectionId;
|
||||
sp0.unk0 = get_mapheader_by_bank_and_number(sInsideOutsidePairs[r5].grp, sInsideOutsidePairs[r5].num)->regionMapSectionId;
|
||||
if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE22))
|
||||
sp0.unk1 = r5;
|
||||
else
|
||||
@@ -1861,9 +1871,9 @@ void sub_80CC59C(void)
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (gSaveBlock1Ptr->location.mapGroup == gUnknown_83F5D58[r5].grp2 && gSaveBlock1Ptr->location.mapNum == gUnknown_83F5D58[r5].num2)
|
||||
if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[r5].grp2 && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[r5].num2)
|
||||
{
|
||||
sp0.unk0 = get_mapheader_by_bank_and_number(gUnknown_83F5D58[r5].grp, gUnknown_83F5D58[r5].num)->regionMapSectionId;
|
||||
sp0.unk0 = get_mapheader_by_bank_and_number(sInsideOutsidePairs[r5].grp, sInsideOutsidePairs[r5].num)->regionMapSectionId;
|
||||
sp0.unk1 = r5;
|
||||
if (r5 == 22)
|
||||
{
|
||||
@@ -1888,9 +1898,6 @@ void sub_80CC59C(void)
|
||||
}
|
||||
}
|
||||
|
||||
extern const char gUnknown_83F5EF0[];
|
||||
extern const char gUnknown_83F5F24[];
|
||||
|
||||
u16 Special_BattleCardAction(void)
|
||||
{
|
||||
switch (gSpecialVar_Result)
|
||||
@@ -1911,7 +1918,52 @@ u16 Special_BattleCardAction(void)
|
||||
}
|
||||
}
|
||||
|
||||
const u16 gUnknown_83F5F26[] = {
|
||||
void set_unknown_box_id(u8 boxId)
|
||||
{
|
||||
sUnknownBoxId = boxId;
|
||||
}
|
||||
|
||||
u16 get_unknown_box_id(void)
|
||||
{
|
||||
return sUnknownBoxId;
|
||||
}
|
||||
|
||||
bool8 sub_80CC7B4(void)
|
||||
{
|
||||
if (FlagGet(FLAG_SYS_CHANGED_BOX_TO_STORE_MON))
|
||||
return FALSE;
|
||||
if (StorageGetCurrentBox() == VarGet(VAR_0x4037))
|
||||
return FALSE;
|
||||
FlagSet(FLAG_SYS_CHANGED_BOX_TO_STORE_MON);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_80CC7F8(void)
|
||||
{
|
||||
s32 i;
|
||||
s32 j;
|
||||
set_unknown_box_id(VarGet(VAR_0x4037));
|
||||
i = StorageGetCurrentBox();
|
||||
do
|
||||
{
|
||||
for (j = 0; j < IN_BOX_COUNT; j++)
|
||||
{
|
||||
if (GetBoxMonData(GetBoxedMonPtr(i, j), MON_DATA_SPECIES, NULL) == SPECIES_NONE)
|
||||
{
|
||||
if (get_unknown_box_id() != i)
|
||||
FlagClear(FLAG_SYS_CHANGED_BOX_TO_STORE_MON);
|
||||
VarSet(VAR_0x4037, i);
|
||||
return sub_80CC7B4();
|
||||
}
|
||||
}
|
||||
i++;
|
||||
if (i == TOTAL_BOXES_COUNT)
|
||||
i = 0;
|
||||
} while (i != StorageGetCurrentBox());
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
const u16 sPokeCenter1FMaps[] = {
|
||||
MAP_VIRIDIAN_CITY_POKEMON_CENTER_1F,
|
||||
MAP_PEWTER_CITY_POKEMON_CENTER_1F,
|
||||
MAP_CERULEAN_CITY_POKEMON_CENTER_1F,
|
||||
@@ -1934,3 +1986,518 @@ const u16 gUnknown_83F5F26[] = {
|
||||
MAP_UNKNOWN_MAP_00_04,
|
||||
MAP_UNDEFINED
|
||||
};
|
||||
|
||||
bool8 sub_80CC87C(void)
|
||||
{
|
||||
s32 i;
|
||||
u16 mapno = (gUnknown_2031DB4.mapGroup << 8) + gUnknown_2031DB4.mapNum;
|
||||
for (i = 0; sPokeCenter1FMaps[i] != MAP_UNDEFINED; i++)
|
||||
{
|
||||
if (sPokeCenter1FMaps[i] == mapno)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Special_ItemIsTM_GetMoveName(void)
|
||||
{
|
||||
// 8004 = item ID
|
||||
if (gSpecialVar_0x8004 >= ITEM_TM01 && gSpecialVar_0x8004 <= ITEM_HM08)
|
||||
{
|
||||
StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_0x8004)]);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void RunMassageCooldownStepCounter(void)
|
||||
{
|
||||
u16 count = VarGet(VAR_MASSAGE_COOLDOWN_STEP_COUNTER);
|
||||
if (count < 500)
|
||||
VarSet(VAR_MASSAGE_COOLDOWN_STEP_COUNTER, count + 1);
|
||||
}
|
||||
|
||||
void Special_DaisyMassageServices(void)
|
||||
{
|
||||
AdjustFriendship(&gPlayerParty[gSpecialVar_0x8004], 6);
|
||||
VarSet(VAR_MASSAGE_COOLDOWN_STEP_COUNTER, 0);
|
||||
}
|
||||
|
||||
static const u16 sEliteFourLightingPalettes[][16] = {
|
||||
INCBIN_U16("data/field_specials/unk_83F5F50.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F5F70.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F5F90.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F5FB0.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F5FD0.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F5FF0.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6010.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6030.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6050.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6070.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6090.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F60B0.gbapal")
|
||||
};
|
||||
|
||||
static const u16 sChampionRoomLightingPalettes[][16] = {
|
||||
INCBIN_U16("data/field_specials/unk_83F60D0.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F60F0.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6110.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6130.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6150.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6170.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6190.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F61B0.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F61D0.gbapal")
|
||||
};
|
||||
|
||||
static const u8 sEliteFourLightingTimers[] = {
|
||||
40,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
12
|
||||
};
|
||||
|
||||
static const u8 sChampionRoomLightingTimers[] = {
|
||||
20,
|
||||
8,
|
||||
8,
|
||||
8,
|
||||
8,
|
||||
8,
|
||||
8,
|
||||
8
|
||||
};
|
||||
|
||||
void Special_PokemonLeagueLightingEffect(void)
|
||||
{
|
||||
u8 taskId = CreateTask(Task_RunPokemonLeagueLightingEffect, 8);
|
||||
s16 *data = gTasks[taskId].data;
|
||||
if (FlagGet(FLAG_TEMP_3) == TRUE)
|
||||
{
|
||||
gTasks[taskId].func = Task_CancelPokemonLeagueLightingEffect;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(POKEMON_LEAGUE_CHAMPIONS_ROOM) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(POKEMON_LEAGUE_CHAMPIONS_ROOM))
|
||||
{
|
||||
data[0] = sChampionRoomLightingTimers[0];
|
||||
data[2] = 8;
|
||||
LoadPalette(sChampionRoomLightingPalettes[0], 0x70, 0x20);
|
||||
}
|
||||
else
|
||||
{
|
||||
data[0] = sEliteFourLightingTimers[0];
|
||||
data[2] = 11;
|
||||
LoadPalette(sEliteFourLightingPalettes[0], 0x70, 0x20);
|
||||
}
|
||||
data[1] = 0;
|
||||
sub_8059948(7, 1);
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_RunPokemonLeagueLightingEffect(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
if (!gPaletteFade.active
|
||||
&& FlagGet(FLAG_TEMP_2) != FALSE
|
||||
&& FlagGet(FLAG_TEMP_5) != TRUE
|
||||
&& gUnknown_2036E28 != 3
|
||||
&& --data[0] == 0
|
||||
)
|
||||
{
|
||||
if (++data[1] == data[2])
|
||||
data[1] = 0;
|
||||
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(POKEMON_LEAGUE_CHAMPIONS_ROOM) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(POKEMON_LEAGUE_CHAMPIONS_ROOM))
|
||||
{
|
||||
data[0] = sChampionRoomLightingTimers[data[1]];
|
||||
LoadPalette(sChampionRoomLightingPalettes[data[1]], 0x70, 0x20);
|
||||
}
|
||||
else
|
||||
{
|
||||
data[0] = sEliteFourLightingTimers[data[1]];
|
||||
LoadPalette(sEliteFourLightingPalettes[data[1]], 0x70, 0x20);
|
||||
}
|
||||
sub_8059948(7, 1);
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_CancelPokemonLeagueLightingEffect(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
if (FlagGet(FLAG_TEMP_4) != FALSE)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(POKEMON_LEAGUE_CHAMPIONS_ROOM) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(POKEMON_LEAGUE_CHAMPIONS_ROOM))
|
||||
{
|
||||
LoadPalette(sChampionRoomLightingPalettes[8], 0x70, 0x20);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadPalette(sEliteFourLightingPalettes[11], 0x70, 0x20);
|
||||
}
|
||||
sub_8059948(7, 1);
|
||||
if (gPaletteFade.active)
|
||||
{
|
||||
BlendPalettes(0x00000080, 16, RGB_BLACK);
|
||||
}
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void StopPokemonLeagueLightingEffectTask(void)
|
||||
{
|
||||
if (FuncIsActiveTask(Task_RunPokemonLeagueLightingEffect) == TRUE)
|
||||
{
|
||||
DestroyTask(FindTaskIdByFunc(Task_RunPokemonLeagueLightingEffect));
|
||||
}
|
||||
}
|
||||
|
||||
static const u8 sCapeBrinkCompatibleSpecies[] = {
|
||||
SPECIES_VENUSAUR,
|
||||
SPECIES_CHARIZARD,
|
||||
SPECIES_BLASTOISE
|
||||
};
|
||||
|
||||
bool8 Special_CapeBrinkGetMoveToTeachLeadPokemon(void)
|
||||
{
|
||||
// Returns:
|
||||
// 8005 = Move tutor index
|
||||
// 8006 = Num moves known by lead mon
|
||||
// 8007 = Index of lead mon
|
||||
// to specialvar = whether a move can be taught in the first place
|
||||
u8 r7 = 0;
|
||||
u8 r6 = 0;
|
||||
u8 r8 = GetLeadMonIndex();
|
||||
u8 r4;
|
||||
gSpecialVar_0x8007 = r8;
|
||||
for (r4 = 0; r4 < NELEMS(sCapeBrinkCompatibleSpecies); r4++)
|
||||
{
|
||||
if (GetMonData(&gPlayerParty[r8], MON_DATA_SPECIES2, NULL) == sCapeBrinkCompatibleSpecies[r4])
|
||||
{
|
||||
r7 = r4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (r4 == NELEMS(sCapeBrinkCompatibleSpecies) || GetMonData(&gPlayerParty[r8], MON_DATA_FRIENDSHIP) != 255)
|
||||
return FALSE;
|
||||
if (r7 == 0)
|
||||
{
|
||||
StringCopy(gStringVar2, gMoveNames[MOVE_FRENZY_PLANT]);
|
||||
gSpecialVar_0x8005 = MOVETUTOR_FRENZY_PLANT;
|
||||
if (FlagGet(FLAG_TUTOR_FRENZY_PLANT) == TRUE)
|
||||
return FALSE;
|
||||
}
|
||||
else if (r7 == 1)
|
||||
{
|
||||
StringCopy(gStringVar2, gMoveNames[MOVE_BLAST_BURN]);
|
||||
gSpecialVar_0x8005 = MOVETUTOR_BLAST_BURN;
|
||||
if (FlagGet(FLAG_TUTOR_BLAST_BURN) == TRUE)
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
StringCopy(gStringVar2, gMoveNames[MOVE_HYDRO_CANNON]);
|
||||
gSpecialVar_0x8005 = MOVETUTOR_HYDRO_CANNON;
|
||||
if (FlagGet(FLAG_TUTOR_HYDRO_CANNON) == TRUE)
|
||||
return FALSE;
|
||||
}
|
||||
if (GetMonData(&gPlayerParty[r8], MON_DATA_MOVE1) != MOVE_NONE)
|
||||
r6++;
|
||||
if (GetMonData(&gPlayerParty[r8], MON_DATA_MOVE2) != MOVE_NONE)
|
||||
r6++;
|
||||
if (GetMonData(&gPlayerParty[r8], MON_DATA_MOVE3) != MOVE_NONE)
|
||||
r6++;
|
||||
if (GetMonData(&gPlayerParty[r8], MON_DATA_MOVE4) != MOVE_NONE)
|
||||
r6++;
|
||||
gSpecialVar_0x8006 = r6;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 Special_HasLearnedAllMovesFromCapeBrinkTutor(void)
|
||||
{
|
||||
// 8005 is set by Special_CapeBrinkGetMoveToTeachLeadPokemon
|
||||
u8 r4 = 0;
|
||||
if (gSpecialVar_0x8005 == MOVETUTOR_FRENZY_PLANT)
|
||||
FlagSet(FLAG_TUTOR_FRENZY_PLANT);
|
||||
else if (gSpecialVar_0x8005 == MOVETUTOR_BLAST_BURN)
|
||||
FlagSet(FLAG_TUTOR_BLAST_BURN);
|
||||
else
|
||||
FlagSet(FLAG_TUTOR_HYDRO_CANNON);
|
||||
if (FlagGet(FLAG_TUTOR_FRENZY_PLANT) == TRUE)
|
||||
r4++;
|
||||
if (FlagGet(FLAG_TUTOR_BLAST_BURN) == TRUE)
|
||||
r4++;
|
||||
if (FlagGet(FLAG_TUTOR_HYDRO_CANNON) == TRUE)
|
||||
r4++;
|
||||
if (r4 == 3)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 CutMoveRuinValleyCheck(void)
|
||||
{
|
||||
if (FlagGet(FLAG_USED_CUT_ON_RUIN_VALLEY_BRAILLE) != TRUE
|
||||
&& gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SIX_ISLAND_RUIN_VALLEY)
|
||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(SIX_ISLAND_RUIN_VALLEY)
|
||||
&& gSaveBlock1Ptr->pos.x == 24
|
||||
&& gSaveBlock1Ptr->pos.y == 25
|
||||
&& GetPlayerFacingDirection() == DIR_NORTH)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void CutMoveOpenDottedHoleDoor(void)
|
||||
{
|
||||
MapGridSetMetatileIdAt(31, 31, 0x358);
|
||||
DrawWholeMapView();
|
||||
PlaySE(SE_BAN);
|
||||
FlagSet(FLAG_USED_CUT_ON_RUIN_VALLEY_BRAILLE);
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
|
||||
static const u16 sDeoxysObjectPals[][16] = {
|
||||
INCBIN_U16("data/field_specials/unk_83F6206.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6226.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6246.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6266.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6286.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F62A6.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F62C6.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F62E6.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6306.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6326.gbapal"),
|
||||
INCBIN_U16("data/field_specials/unk_83F6346.gbapal")
|
||||
};
|
||||
|
||||
static const u8 sDeoxysCoords[][2] = {
|
||||
{15, 12},
|
||||
{11, 14},
|
||||
{15, 8},
|
||||
{19, 14},
|
||||
{12, 11},
|
||||
{18, 11},
|
||||
{15, 14},
|
||||
{11, 14},
|
||||
{19, 14},
|
||||
{15, 15},
|
||||
{15, 10}
|
||||
};
|
||||
|
||||
static const u8 sDeoxysStepCaps[] = {
|
||||
4,
|
||||
8,
|
||||
8,
|
||||
8,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
6,
|
||||
3,
|
||||
3
|
||||
};
|
||||
|
||||
void Special_DeoxysSound(void)
|
||||
{
|
||||
CreateTask(task_deoxys_sound, 8);
|
||||
}
|
||||
|
||||
static void task_deoxys_sound(u8 taskId)
|
||||
{
|
||||
u16 r5;
|
||||
u16 r6;
|
||||
if (FlagGet(FLAG_SYS_DEOXYS_AWAKENED) == TRUE)
|
||||
{
|
||||
gSpecialVar_Result = 3;
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
r5 = VarGet(VAR_DEOXYS_INTERACTION_NUM);
|
||||
r6 = VarGet(VAR_DEOXYS_INTERACTION_STEP_COUNTER);
|
||||
VarSet(VAR_DEOXYS_INTERACTION_STEP_COUNTER, 0);
|
||||
if (r5 != 0 && sDeoxysStepCaps[r5 - 1] < r6)
|
||||
{
|
||||
MoveDeoxysObject(0);
|
||||
VarSet(VAR_DEOXYS_INTERACTION_NUM, 0);
|
||||
gSpecialVar_Result = 0;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else if (r5 == 10)
|
||||
{
|
||||
FlagSet(FLAG_SYS_DEOXYS_AWAKENED);
|
||||
gSpecialVar_Result = 2;
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
r5++;
|
||||
MoveDeoxysObject(r5);
|
||||
VarSet(VAR_DEOXYS_INTERACTION_NUM, r5);
|
||||
gSpecialVar_Result = 1;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void MoveDeoxysObject(u8 num)
|
||||
{
|
||||
u8 mapObjId;
|
||||
LoadPalette(sDeoxysObjectPals[num], 0x1A0, 0x08);
|
||||
sub_8083598(10);
|
||||
TryGetFieldObjectIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &mapObjId);
|
||||
if (num == 0)
|
||||
PlaySE(SE_W109);
|
||||
else
|
||||
PlaySE(SE_DEOMOV);
|
||||
CreateTask(Task_WaitDeoxysFieldEffect, 8);
|
||||
gFieldEffectArguments[0] = 1;
|
||||
gFieldEffectArguments[1] = 56;
|
||||
gFieldEffectArguments[2] = 2;
|
||||
gFieldEffectArguments[3] = sDeoxysCoords[num][0];
|
||||
gFieldEffectArguments[4] = sDeoxysCoords[num][1];
|
||||
if (num == 0)
|
||||
gFieldEffectArguments[5] = 60;
|
||||
else
|
||||
gFieldEffectArguments[5] = 5;
|
||||
FieldEffectStart(FLDEFF_UNK_43);
|
||||
Overworld_SetMapObjTemplateCoords(1, sDeoxysCoords[num][0], sDeoxysCoords[num][1]);
|
||||
}
|
||||
|
||||
static void Task_WaitDeoxysFieldEffect(u8 taskId)
|
||||
{
|
||||
if (!FieldEffectActiveListContains(FLDEFF_UNK_43))
|
||||
{
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void BirthIslandDeoxysStepCounter(void)
|
||||
{
|
||||
u16 count = VarGet(VAR_DEOXYS_INTERACTION_STEP_COUNTER);
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BIRTH_ISLAND_EXTERIOR) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BIRTH_ISLAND_EXTERIOR))
|
||||
{
|
||||
count++;
|
||||
if (count > 99)
|
||||
VarSet(VAR_DEOXYS_INTERACTION_STEP_COUNTER, 0);
|
||||
else
|
||||
VarSet(VAR_DEOXYS_INTERACTION_STEP_COUNTER, count);
|
||||
}
|
||||
}
|
||||
|
||||
void Special_SetDeoxysTriangleObjectPal(void)
|
||||
{
|
||||
u8 num = VarGet(VAR_DEOXYS_INTERACTION_NUM);
|
||||
LoadPalette(sDeoxysObjectPals[num], 0x1A0, 0x08);
|
||||
sub_8083598(10);
|
||||
}
|
||||
|
||||
bool8 Special_BadEggInParty(void)
|
||||
{
|
||||
u8 partyCount = CalculatePlayerPartyCount();
|
||||
u8 i;
|
||||
for (i = 0; i < partyCount; i++)
|
||||
{
|
||||
if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_IS_BAD_EGG) == TRUE)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Special_PlayerIsNotInTrainerTowerLobby(void)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_LOBBY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY))
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Special_BrailleCursorToggle(void)
|
||||
{
|
||||
// 8004 = x - 27
|
||||
// 8005 = y
|
||||
// 8006 = action (0 = create, 1 = delete)
|
||||
u16 x;
|
||||
if (gUnknown_203ADFA != 2)
|
||||
{
|
||||
x = gSpecialVar_0x8004 + 27;
|
||||
if (gSpecialVar_0x8006 == 0)
|
||||
gUnknown_2039A1B = CreateTextCursorSpriteForOakSpeech(0, x, gSpecialVar_0x8005, 0, 0);
|
||||
else
|
||||
sub_8006398(gUnknown_2039A1B);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 Special_PlayerPartyContainsSpeciesWithPlayerID(void)
|
||||
{
|
||||
// 8004 = species
|
||||
u8 playerCount = CalculatePlayerPartyCount();
|
||||
u8 i;
|
||||
for (i = 0; i < playerCount; i++)
|
||||
{
|
||||
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) == gSpecialVar_0x8004 && GetPlayerTrainerId() == GetMonData(&gPlayerParty[i], MON_DATA_OT_ID, NULL))
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Determines which of Lorelei's doll collection to show
|
||||
* based on how many times you've entered the Hall of Fame.
|
||||
*/
|
||||
void Special_ComputeLoreleiDollCollection(void)
|
||||
{
|
||||
u32 numHofClears = GetGameStat(GAME_STAT_ENTERED_HOF);
|
||||
if (numHofClears >= 25)
|
||||
{
|
||||
FlagClear(FLAG_HIDE_LORELEI_HOUSE_MEOWTH_DOLL);
|
||||
if (numHofClears >= 50)
|
||||
FlagClear(FLAG_HIDE_LORELEI_HOUSE_CHANSEY_DOLL);
|
||||
if (numHofClears >= 75)
|
||||
FlagClear(FLAG_HIDE_LORELEIS_HOUSE_NIDORAN_F_DOLL);
|
||||
if (numHofClears >= 100)
|
||||
FlagClear(FLAG_HIDE_LORELEI_HOUSE_JIGGLYPUFF_DOLL);
|
||||
if (numHofClears >= 125)
|
||||
FlagClear(FLAG_HIDE_LORELEIS_HOUSE_NIDORAN_M_DOLL);
|
||||
if (numHofClears >= 150)
|
||||
FlagClear(FLAG_HIDE_LORELEIS_HOUSE_FEAROW_DOLL);
|
||||
if (numHofClears >= 175)
|
||||
FlagClear(FLAG_HIDE_LORELEIS_HOUSE_PIDGEOT_DOLL);
|
||||
if (numHofClears >= 200)
|
||||
FlagClear(FLAG_HIDE_LORELEIS_HOUSE_LAPRAS_DOLL);
|
||||
}
|
||||
}
|
||||
|
||||
void Special_LoopWingFlapSound(void)
|
||||
{
|
||||
// 8004 = Num flaps
|
||||
// 8005 = Frame delay between flaps
|
||||
CreateTask(Task_WingFlapSound, 8);
|
||||
PlaySE(SE_W017);
|
||||
}
|
||||
|
||||
static void Task_WingFlapSound(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
data[1]++;
|
||||
if (data[1] == gSpecialVar_0x8005)
|
||||
{
|
||||
data[0]++;
|
||||
data[1] = 0;
|
||||
PlaySE(SE_W017);
|
||||
}
|
||||
if (data[0] == gSpecialVar_0x8004 - 1)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
+5
-5
@@ -396,7 +396,7 @@ void FieldUseFunc_TmCase(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80CCB68();
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
fade_screen(1, 0);
|
||||
gTasks[taskId].func = Task_InitTMCaseFromField;
|
||||
}
|
||||
@@ -427,7 +427,7 @@ void FieldUseFunc_BerryPouch(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80CCB68();
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
fade_screen(1, 0);
|
||||
gTasks[taskId].func = Task_InitBerryPouchFromField;
|
||||
}
|
||||
@@ -470,7 +470,7 @@ void FieldUseFunc_TeachyTv(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80CCB68();
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
fade_screen(1, 0);
|
||||
gTasks[taskId].func = Task_InitTeachyTvFromField;
|
||||
}
|
||||
@@ -600,7 +600,7 @@ void FieldUseFunc_TownMap(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80CCB68();
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
fade_screen(1, 0);
|
||||
gTasks[taskId].func = sub_80A1CC0;
|
||||
}
|
||||
@@ -632,7 +632,7 @@ void FieldUseFunc_FameChecker(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80CCB68();
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
fade_screen(1, 0);
|
||||
gTasks[taskId].func = sub_80A1D68;
|
||||
}
|
||||
|
||||
+1
-1
@@ -445,7 +445,7 @@ static void StartMenu_FadeScreenIfLeavingOverworld(void)
|
||||
&& sStartMenuCallback != StartMenuExitCallback
|
||||
&& sStartMenuCallback != StartMenuSafariZoneRetireCallback)
|
||||
{
|
||||
sub_80CCB68();
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
fade_screen(1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user