Finish field_specials

This commit is contained in:
PikalaxALT
2019-10-24 15:28:43 -04:00
parent 0d73967f6c
commit 7c3d9df380
21 changed files with 664 additions and 1550 deletions
+2 -2
View File
@@ -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
-1350
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -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
View File
@@ -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
-105
View File
@@ -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
+2 -2
View File
@@ -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 -7
View File
@@ -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
+2 -2
View File
@@ -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
View File
@@ -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::
+1
View File
@@ -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
+4 -4
View File
@@ -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
+1
View File
@@ -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
+1 -1
View File
@@ -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);
+1
View File
@@ -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);
-2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -445,7 +445,7 @@ static void StartMenu_FadeScreenIfLeavingOverworld(void)
&& sStartMenuCallback != StartMenuExitCallback
&& sStartMenuCallback != StartMenuSafariZoneRetireCallback)
{
sub_80CCB68();
StopPokemonLeagueLightingEffectTask();
fade_screen(1, 0);
}
}