diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-31 14:37:24 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-31 14:37:24 -0400 |
commit | 0015d6fe2c6a53c5f757599122ae9fd1a156a69f (patch) | |
tree | 81b7269c767da1ad4a5a9ac01e58ead5e92f0983 /src/field/scrcmd.c | |
parent | 46bc01f0dd1a3435b3c6ce71e1be0d19b7aaa5bd (diff) | |
parent | 59f81c5f2a25ec77baf4a30c3da9ccb7675d1562 (diff) |
Merge branch 'master' into contest_link_80C2020
Diffstat (limited to 'src/field/scrcmd.c')
-rw-r--r-- | src/field/scrcmd.c | 2020 |
1 files changed, 0 insertions, 2020 deletions
diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c deleted file mode 100644 index bc5cd0b1d..000000000 --- a/src/field/scrcmd.c +++ /dev/null @@ -1,2020 +0,0 @@ -#include "global.h" -#include "battle_setup.h" -#include "berry.h" -#include "clock.h" -#include "coins.h" -#include "contest_link_80C2020.h" -#include "contest_painting.h" -#include "data2.h" -#include "decoration.h" -#include "decoration_inventory.h" -#include "event_data.h" -#include "field_door.h" -#include "field_effect.h" -#include "field_fadetransition.h" -#include "field_map_obj.h" -#include "field_map_obj_helpers.h" -#include "field_message_box.h" -#include "field_player_avatar.h" -#include "field_screen_effect.h" -#include "field_specials.h" -#include "field_tasks.h" -#include "field_weather.h" -#include "fieldmap.h" -#include "item.h" -#include "main.h" -#include "map_obj_lock.h" -#include "menu.h" -#include "money.h" -#include "mystery_event_script.h" -#include "palette.h" -#include "party_menu.h" -#include "pokemon.h" -#include "random.h" -#include "overworld.h" -#include "rtc.h" -#include "script.h" -#include "script_menu.h" -#include "script_movement.h" -#include "script_pokemon_80C4.h" -#include "script_pokemon_80F9.h" -#include "shop.h" -#include "slot_machine.h" -#include "sound.h" -#include "string_util.h" -#include "tv.h" - -typedef u16 (*SpecialFunc)(void); -typedef void (*NativeFunc)(void); - -extern u32 gUnknown_0202E8AC; - -static EWRAM_DATA u32 gUnknown_0202E8B0 = 0; -static EWRAM_DATA u16 sPauseCounter = 0; -static EWRAM_DATA u16 sMovingNpcId = 0; -static EWRAM_DATA u16 sMovingNpcMapBank = 0; -static EWRAM_DATA u16 sMovingNpcMapId = 0; -static EWRAM_DATA u16 sFieldEffectScriptId = 0; - -extern u16 gSpecialVar_0x8000; -extern u16 gSpecialVar_0x8001; -extern u16 gSpecialVar_0x8002; -extern u16 gSpecialVar_0x8004; - -extern u16 gSpecialVar_Result; - -extern u16 gSpecialVar_ContestCategory; - -extern SpecialFunc gSpecials[]; -extern u8 *gStdScripts[]; -extern u8 *gStdScripts_End[]; - -// This is defined in here so the optimizer can't see its value when compiling -// script.c. -void * const gNullScriptPtr = NULL; - -static const u8 sScriptConditionTable[6][3] = -{ -// < = > - 1, 0, 0, // < - 0, 1, 0, // = - 0, 0, 1, // > - 1, 1, 0, // <= - 0, 1, 1, // >= - 1, 0, 1, // != -}; - -static u8 * const sScriptStringVars[] = -{ - gStringVar1, - gStringVar2, - gStringVar3, -}; - -bool8 ScrCmd_nop(struct ScriptContext *ctx) -{ - return FALSE; -} - -bool8 ScrCmd_nop1(struct ScriptContext *ctx) -{ - return FALSE; -} - -bool8 ScrCmd_end(struct ScriptContext *ctx) -{ - StopScript(ctx); - return FALSE; -} - -bool8 ScrCmd_gotonative(struct ScriptContext *ctx) -{ - bool8 (*addr)(void) = (bool8 (*)(void))ScriptReadWord(ctx); - - SetupNativeScript(ctx, addr); - return TRUE; -} - -bool8 ScrCmd_special(struct ScriptContext *ctx) -{ - u16 index = ScriptReadHalfword(ctx); - - gSpecials[index](); - return FALSE; -} - -bool8 ScrCmd_specialvar(struct ScriptContext *ctx) -{ - u16 *var = GetVarPointer(ScriptReadHalfword(ctx)); - - *var = gSpecials[ScriptReadHalfword(ctx)](); - return FALSE; -} - -bool8 ScrCmd_callnative(struct ScriptContext *ctx) -{ - NativeFunc func = (NativeFunc)ScriptReadWord(ctx); - - func(); - return FALSE; -} - -bool8 ScrCmd_waitstate(struct ScriptContext *ctx) -{ - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_goto(struct ScriptContext *ctx) -{ - u8 *ptr = (u8 *)ScriptReadWord(ctx); - - ScriptJump(ctx, ptr); - return FALSE; -} - -bool8 ScrCmd_return(struct ScriptContext *ctx) -{ - ScriptReturn(ctx); - return FALSE; -} - -bool8 ScrCmd_call(struct ScriptContext *ctx) -{ - u8 *ptr = (u8 *)ScriptReadWord(ctx); - - ScriptCall(ctx, ptr); - return FALSE; -} - -bool8 ScrCmd_goto_if(struct ScriptContext *ctx) -{ - u8 condition = ScriptReadByte(ctx); - u8 *ptr = (u8 *)ScriptReadWord(ctx); - - if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) - ScriptJump(ctx, ptr); - return FALSE; -} - -bool8 ScrCmd_call_if(struct ScriptContext *ctx) -{ - u8 condition = ScriptReadByte(ctx); - u8 *ptr = (u8 *)ScriptReadWord(ctx); - - if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) - ScriptCall(ctx, ptr); - return FALSE; -} - -bool8 ScrCmd_setvaddress(struct ScriptContext *ctx) -{ - u32 addr1 = (u32)ctx->scriptPtr - 1; - u32 addr2 = ScriptReadWord(ctx); - - gUnknown_0202E8B0 = addr2 - addr1; - return FALSE; -} - -bool8 ScrCmd_vgoto(struct ScriptContext *ctx) -{ - u32 addr = ScriptReadWord(ctx); - - ScriptJump(ctx, (u8 *)(addr - gUnknown_0202E8B0)); - return FALSE; -} - -bool8 ScrCmd_vcall(struct ScriptContext *ctx) -{ - u32 addr = ScriptReadWord(ctx); - - ScriptCall(ctx, (u8 *)(addr - gUnknown_0202E8B0)); - return FALSE; -} - -bool8 ScrCmd_vgoto_if(struct ScriptContext *ctx) -{ - u8 condition = ScriptReadByte(ctx); - u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); - - if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) - ScriptJump(ctx, ptr); - return FALSE; -} - -bool8 ScrCmd_vcall_if(struct ScriptContext *ctx) -{ - u8 condition = ScriptReadByte(ctx); - u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); - - if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) - ScriptCall(ctx, ptr); - return FALSE; -} - -bool8 ScrCmd_gotostd(struct ScriptContext *ctx) -{ - u8 index = ScriptReadByte(ctx); - u8 **ptr = &gStdScripts[index]; - - if (ptr < gStdScripts_End) - ScriptJump(ctx, *ptr); - return FALSE; -} - -bool8 ScrCmd_callstd(struct ScriptContext *ctx) -{ - u8 index = ScriptReadByte(ctx); - u8 **ptr = &gStdScripts[index]; - - if (ptr < gStdScripts_End) - ScriptCall(ctx, *ptr); - return FALSE; -} - -bool8 ScrCmd_gotostd_if(struct ScriptContext *ctx) -{ - u8 condition = ScriptReadByte(ctx); - u8 index = ScriptReadByte(ctx); - - if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) - { - u8 **ptr = &gStdScripts[index]; - if (ptr < gStdScripts_End) - ScriptJump(ctx, *ptr); - } - return FALSE; -} - -bool8 ScrCmd_callstd_if(struct ScriptContext *ctx) -{ - u8 condition = ScriptReadByte(ctx); - u8 index = ScriptReadByte(ctx); - - if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) - { - u8 **ptr = &gStdScripts[index]; - if (ptr < gStdScripts_End) - ScriptCall(ctx, *ptr); - } - return FALSE; -} - -bool8 ScrCmd_gotoram(struct ScriptContext *ctx) -{ - ScriptJump(ctx, (u8 *)gUnknown_0202E8AC); - return FALSE; -} - -bool8 ScrCmd_killscript(struct ScriptContext *ctx) -{ - ClearRamScript(); - StopScript(ctx); - return TRUE; -} - -bool8 ScrCmd_setmysteryeventstatus(struct ScriptContext *ctx) -{ - u8 value = ScriptReadByte(ctx); - - SetMysteryEventScriptStatus(value); - return FALSE; -} - -bool8 ScrCmd_loadword(struct ScriptContext *ctx) -{ - u8 index = ScriptReadByte(ctx); - - ctx->data[index] = ScriptReadWord(ctx); - return FALSE; -} - -bool8 ScrCmd_loadbytefromaddr(struct ScriptContext *ctx) -{ - u8 index = ScriptReadByte(ctx); - - ctx->data[index] = *(u8 *)ScriptReadWord(ctx); - return FALSE; -} - -bool8 ScrCmd_writebytetoaddr(struct ScriptContext *ctx) -{ - u8 value = ScriptReadByte(ctx); - - *(u8 *)ScriptReadWord(ctx) = value; - return FALSE; -} - -bool8 ScrCmd_loadbyte(struct ScriptContext *ctx) -{ - u8 index = ScriptReadByte(ctx); - - ctx->data[index] = ScriptReadByte(ctx); - return FALSE; -} - -bool8 ScrCmd_setptrbyte(struct ScriptContext *ctx) -{ - u8 index = ScriptReadByte(ctx); - - *(u8 *)ScriptReadWord(ctx) = ctx->data[index]; - return FALSE; -} - -bool8 ScrCmd_copylocal(struct ScriptContext *ctx) -{ - u8 destIndex = ScriptReadByte(ctx); - u8 srcIndex = ScriptReadByte(ctx); - - ctx->data[destIndex] = ctx->data[srcIndex]; - return FALSE; -} - -bool8 ScrCmd_copybyte(struct ScriptContext *ctx) -{ - u8 *ptr = (u8 *)ScriptReadWord(ctx); - *ptr = *(u8 *)ScriptReadWord(ctx); - return FALSE; -} - -bool8 ScrCmd_setvar(struct ScriptContext *ctx) -{ - u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); - *ptr = ScriptReadHalfword(ctx); - return FALSE; -} - -bool8 ScrCmd_copyvar(struct ScriptContext *ctx) -{ - u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); - *ptr = *GetVarPointer(ScriptReadHalfword(ctx)); - return FALSE; -} - -bool8 ScrCmd_setorcopyvar(struct ScriptContext *ctx) -{ - u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); - *ptr = VarGet(ScriptReadHalfword(ctx)); - return FALSE; -} - -u8 compare_012(u16 a1, u16 a2) -{ - if (a1 < a2) - return 0; - if (a1 == a2) - return 1; - return 2; -} - -// comparelocaltolocal -bool8 ScrCmd_compare_local_to_local(struct ScriptContext *ctx) -{ - u8 value1 = ctx->data[ScriptReadByte(ctx)]; - u8 value2 = ctx->data[ScriptReadByte(ctx)]; - - ctx->comparisonResult = compare_012(value1, value2); - return FALSE; -} - -// comparelocaltoimm -bool8 ScrCmd_compare_local_to_value(struct ScriptContext *ctx) -{ - u8 value1 = ctx->data[ScriptReadByte(ctx)]; - u8 value2 = ScriptReadByte(ctx); - - ctx->comparisonResult = compare_012(value1, value2); - return FALSE; -} - -bool8 ScrCmd_compare_local_to_addr(struct ScriptContext *ctx) -{ - u8 value1 = ctx->data[ScriptReadByte(ctx)]; - u8 value2 = *(u8 *)ScriptReadWord(ctx); - - ctx->comparisonResult = compare_012(value1, value2); - return FALSE; -} - -bool8 ScrCmd_compare_addr_to_local(struct ScriptContext *ctx) -{ - u8 value1 = *(u8 *)ScriptReadWord(ctx); - u8 value2 = ctx->data[ScriptReadByte(ctx)]; - - ctx->comparisonResult = compare_012(value1, value2); - return FALSE; -} - -bool8 ScrCmd_compare_addr_to_value(struct ScriptContext *ctx) -{ - u8 value1 = *(u8 *)ScriptReadWord(ctx); - u8 value2 = ScriptReadByte(ctx); - - ctx->comparisonResult = compare_012(value1, value2); - return FALSE; -} - -bool8 ScrCmd_compare_addr_to_addr(struct ScriptContext *ctx) -{ - u8 value1 = *(u8 *)ScriptReadWord(ctx); - u8 value2 = *(u8 *)ScriptReadWord(ctx); - - ctx->comparisonResult = compare_012(value1, value2); - return FALSE; -} - -bool8 ScrCmd_compare_var_to_value(struct ScriptContext *ctx) -{ - u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx)); - u16 value2 = ScriptReadHalfword(ctx); - - ctx->comparisonResult = compare_012(value1, value2); - return FALSE; -} - -bool8 ScrCmd_compare_var_to_var(struct ScriptContext *ctx) -{ - u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); - u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); - - ctx->comparisonResult = compare_012(*ptr1, *ptr2); - return FALSE; -} - -bool8 ScrCmd_addvar(struct ScriptContext *ctx) -{ - u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); - *ptr += ScriptReadHalfword(ctx); - return FALSE; -} - -bool8 ScrCmd_subvar(struct ScriptContext *ctx) -{ - u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); - *ptr -= VarGet(ScriptReadHalfword(ctx)); - return FALSE; -} - -bool8 ScrCmd_random(struct ScriptContext *ctx) -{ - u16 max = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = Random() % max; - return FALSE; -} - -bool8 ScrCmd_giveitem(struct ScriptContext *ctx) -{ - u16 itemId = VarGet(ScriptReadHalfword(ctx)); - u32 quantity = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = AddBagItem(itemId, (u8)quantity); - return FALSE; -} - -bool8 ScrCmd_takeitem(struct ScriptContext *ctx) -{ - u16 itemId = VarGet(ScriptReadHalfword(ctx)); - u32 quantity = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = RemoveBagItem(itemId, (u8)quantity); - return FALSE; -} - -bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx) -{ - u16 itemId = VarGet(ScriptReadHalfword(ctx)); - u32 quantity = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = CheckBagHasSpace(itemId, (u8)quantity); - return FALSE; -} - -bool8 ScrCmd_checkitem(struct ScriptContext *ctx) -{ - u16 itemId = VarGet(ScriptReadHalfword(ctx)); - u32 quantity = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = CheckBagHasItem(itemId, (u8)quantity); - return FALSE; -} - -bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) -{ - u16 itemId = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = GetPocketByItemId(itemId); - return FALSE; -} - -bool8 ScrCmd_givepcitem(struct ScriptContext *ctx) -{ - u16 itemId = VarGet(ScriptReadHalfword(ctx)); - u16 quantity = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = AddPCItem(itemId, quantity); - return FALSE; -} - -bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) -{ - u16 itemId = VarGet(ScriptReadHalfword(ctx)); - u16 quantity = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = CheckPCHasItem(itemId, quantity); - return FALSE; -} - -bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) -{ - u32 decoration = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = IsThereStorageSpaceForDecoration(decoration); - return FALSE; -} - -bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) -{ - u32 decoration = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = sub_81340A8(decoration); - return FALSE; -} - -bool8 ScrCmd_checkdecorspace(struct ScriptContext *ctx) -{ - u32 decorId = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = sub_8134074(decorId); - return FALSE; -} - -bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) -{ - u32 decorId = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = sub_8133FE4(decorId); - return FALSE; -} - -bool8 ScrCmd_setflag(struct ScriptContext *ctx) -{ - FlagSet(ScriptReadHalfword(ctx)); - return FALSE; -} - -bool8 ScrCmd_clearflag(struct ScriptContext *ctx) -{ - FlagClear(ScriptReadHalfword(ctx)); - return FALSE; -} - -bool8 ScrCmd_checkflag(struct ScriptContext *ctx) -{ - ctx->comparisonResult = FlagGet(ScriptReadHalfword(ctx)); - return FALSE; -} - -bool8 ScrCmd_incrementgamestat(struct ScriptContext *ctx) -{ - IncrementGameStat(ScriptReadByte(ctx)); - return FALSE; -} - -bool8 ScrCmd_animateflash(struct ScriptContext *ctx) -{ - sub_8081594(ScriptReadByte(ctx)); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_setflashradius(struct ScriptContext *ctx) -{ - u16 flashLevel = VarGet(ScriptReadHalfword(ctx)); - - Overworld_SetFlashLevel(flashLevel); - return FALSE; -} - -bool8 IsPaletteNotActive(void) -{ - if (!gPaletteFade.active) - return TRUE; - else - return FALSE; -} - -bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) -{ - FadeScreen(ScriptReadByte(ctx), 0); - SetupNativeScript(ctx, IsPaletteNotActive); - return TRUE; -} - -bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) -{ - u8 duration = ScriptReadByte(ctx); - u8 delay = ScriptReadByte(ctx); - - FadeScreen(duration, delay); - SetupNativeScript(ctx, IsPaletteNotActive); - return TRUE; -} - -bool8 RunPauseTimer() -{ - sPauseCounter--; - - if (sPauseCounter == 0) - return TRUE; - else - return FALSE; -} - -bool8 ScrCmd_delay(struct ScriptContext *ctx) -{ - sPauseCounter = ScriptReadHalfword(ctx); - SetupNativeScript(ctx, RunPauseTimer); - return TRUE; -} - -bool8 ScrCmd_initclock(struct ScriptContext *ctx) -{ - u8 hour = VarGet(ScriptReadHalfword(ctx)); - u8 minute = VarGet(ScriptReadHalfword(ctx)); - - RtcInitLocalTimeOffset(hour, minute); - return FALSE; -} - -bool8 ScrCmd_dodailyevents(struct ScriptContext *ctx) -{ - DoTimeBasedEvents(); - return FALSE; -} - -bool8 ScrCmd_gettime(struct ScriptContext *ctx) -{ - RtcCalcLocalTime(); - gSpecialVar_0x8000 = gLocalTime.hours; - gSpecialVar_0x8001 = gLocalTime.minutes; - gSpecialVar_0x8002 = gLocalTime.seconds; - return FALSE; -} - -bool8 ScrCmd_setweather(struct ScriptContext *ctx) -{ - u16 weather = VarGet(ScriptReadHalfword(ctx)); - - SetSav1Weather(weather); - return FALSE; -} - -bool8 ScrCmd_resetweather(struct ScriptContext *ctx) -{ - SetSav1WeatherFromCurrMapHeader(); - return FALSE; -} - -bool8 ScrCmd_doweather(struct ScriptContext *ctx) -{ - DoCurrentWeather(); - return FALSE; -} - -bool8 ScrCmd_setstepcallback(struct ScriptContext *ctx) -{ - ActivatePerStepCallback(ScriptReadByte(ctx)); - return FALSE; -} - -bool8 ScrCmd_setmaplayoutindex(struct ScriptContext *ctx) -{ - u16 value = VarGet(ScriptReadHalfword(ctx)); - - sub_8053D14(value); - return FALSE; -} - -bool8 ScrCmd_warp(struct ScriptContext *ctx) -{ - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - u8 warpId = ScriptReadByte(ctx); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); - sub_8080E88(); - player_avatar_init_params_reset(); - return TRUE; -} - -bool8 ScrCmd_warpsilent(struct ScriptContext *ctx) -{ - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - u8 warpId = ScriptReadByte(ctx); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); - sp13E_warp_to_last_warp(); - player_avatar_init_params_reset(); - return TRUE; -} - -bool8 ScrCmd_warpdoor(struct ScriptContext *ctx) -{ - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - u8 warpId = ScriptReadByte(ctx); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); - sub_8080EF0(); - player_avatar_init_params_reset(); - return TRUE; -} - -bool8 ScrCmd_warphole(struct ScriptContext *ctx) -{ - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - u16 x; - u16 y; - - PlayerGetDestCoords(&x, &y); - if (mapGroup == 0xFF && mapNum == 0xFF) - sub_8053720(x - 7, y - 7); - else - Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); - sp13F_fall_to_last_warp(); - player_avatar_init_params_reset(); - return TRUE; -} - -bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) -{ - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - u8 warpId = ScriptReadByte(ctx); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); - sub_8080F68(); - player_avatar_init_params_reset(); - return TRUE; -} - -bool8 ScrCmd_setwarp(struct ScriptContext *ctx) -{ - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - u8 warpId = ScriptReadByte(ctx); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); - return FALSE; -} - -bool8 ScrCmd_setdynamicwarp(struct ScriptContext *ctx) -{ - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - u8 warpId = ScriptReadByte(ctx); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - saved_warp2_set_2(0, mapGroup, mapNum, warpId, x, y); - return FALSE; -} - -bool8 ScrCmd_setdivewarp(struct ScriptContext *ctx) -{ - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - u8 warpId = ScriptReadByte(ctx); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - sub_8053690(mapGroup, mapNum, warpId, x, y); - return FALSE; -} - -bool8 ScrCmd_setholewarp(struct ScriptContext *ctx) -{ - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - u8 warpId = ScriptReadByte(ctx); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - sub_80536E4(mapGroup, mapNum, warpId, x, y); - return FALSE; -} - -bool8 ScrCmd_setescapewarp(struct ScriptContext *ctx) -{ - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - u8 warpId = ScriptReadByte(ctx); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - sub_805363C(mapGroup, mapNum, warpId, x, y); - return FALSE; -} - -bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) -{ - u16 *pX = GetVarPointer(ScriptReadHalfword(ctx)); - u16 *pY = GetVarPointer(ScriptReadHalfword(ctx)); - - *pX = gSaveBlock1.pos.x; - *pY = gSaveBlock1.pos.y; - return FALSE; -} - -bool8 ScrCmd_getpartysize(struct ScriptContext *ctx) -{ - gSpecialVar_Result = CalculatePlayerPartyCount(); - return FALSE; -} - -bool8 ScrCmd_playse(struct ScriptContext *ctx) -{ - PlaySE(ScriptReadHalfword(ctx)); - return FALSE; -} - -static bool8 WaitForSoundEffectFinish(void) -{ - if (!IsSEPlaying()) - return TRUE; - else - return FALSE; -} - -bool8 ScrCmd_waitse(struct ScriptContext *ctx) -{ - SetupNativeScript(ctx, WaitForSoundEffectFinish); - return TRUE; -} - -bool8 ScrCmd_playfanfare(struct ScriptContext *ctx) -{ - PlayFanfare(ScriptReadHalfword(ctx)); - return FALSE; -} - -static bool8 WaitForFanfareFinish(void) -{ - return IsFanfareTaskInactive(); -} - -bool8 ScrCmd_waitfanfare(struct ScriptContext *ctx) -{ - SetupNativeScript(ctx, WaitForFanfareFinish); - return TRUE; -} - -bool8 ScrCmd_playbgm(struct ScriptContext *ctx) -{ - u16 songId = ScriptReadHalfword(ctx); - bool8 val = ScriptReadByte(ctx); - - if (val == TRUE) - Overworld_SetSavedMusic(songId); - PlayNewMapMusic(songId); - return FALSE; -} - -bool8 ScrCmd_savebgm(struct ScriptContext *ctx) -{ - Overworld_SetSavedMusic(ScriptReadHalfword(ctx)); - return FALSE; -} - -bool8 ScrCmd_fadedefaultbgm(struct ScriptContext *ctx) -{ - Overworld_ChangeMusicToDefault(); - return FALSE; -} - -bool8 ScrCmd_fadenewbgm(struct ScriptContext *ctx) -{ - Overworld_ChangeMusicTo(ScriptReadHalfword(ctx)); - return FALSE; -} - -bool8 ScrCmd_fadeoutbgm(struct ScriptContext *ctx) -{ - u8 speed = ScriptReadByte(ctx); - - if (speed != 0) - FadeOutBGMTemporarily(4 * speed); - else - FadeOutBGMTemporarily(4); - SetupNativeScript(ctx, IsBGMPausedOrStopped); - return TRUE; -} - -bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx) -{ - u8 speed = ScriptReadByte(ctx); - - if (speed != 0) - FadeInBGM(4 * speed); - else - FadeInBGM(4); - return FALSE; -} - -bool8 ScrCmd_applymovement(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - void *movementScript = (void *)ScriptReadWord(ctx); - - ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, movementScript); - sMovingNpcId = localId; - return FALSE; -} - -bool8 ScrCmd_applymovement_at(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - void *movementScript = (void *)ScriptReadWord(ctx); - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - - ScriptMovement_StartObjectMovementScript(localId, mapNum, mapGroup, movementScript); - sMovingNpcId = localId; - return FALSE; -} - -static bool8 WaitForMovementFinish(void) -{ - return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank); -} - -bool8 ScrCmd_waitmovement(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - - if (localId != 0) - sMovingNpcId = localId; - sMovingNpcMapBank = gSaveBlock1.location.mapGroup; - sMovingNpcMapId = gSaveBlock1.location.mapNum; - SetupNativeScript(ctx, WaitForMovementFinish); - return TRUE; -} - -bool8 ScrCmd_waitmovement_at(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - u8 mapBank; - u8 mapId; - - if (localId != 0) - sMovingNpcId = localId; - mapBank = ScriptReadByte(ctx); - mapId = ScriptReadByte(ctx); - sMovingNpcMapBank = mapBank; - sMovingNpcMapId = mapId; - SetupNativeScript(ctx, WaitForMovementFinish); - return TRUE; -} - -bool8 ScrCmd_removeobject(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - - RemoveFieldObjectByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - return FALSE; -} - -bool8 ScrCmd_removeobject_at(struct ScriptContext *ctx) -{ - u16 objectId = VarGet(ScriptReadHalfword(ctx)); - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - - RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup); - return FALSE; -} - -bool8 ScrCmd_addobject(struct ScriptContext *ctx) -{ - u16 objectId = VarGet(ScriptReadHalfword(ctx)); - - show_sprite(objectId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - return FALSE; -} - -bool8 ScrCmd_addobject_at(struct ScriptContext *ctx) -{ - u16 objectId = VarGet(ScriptReadHalfword(ctx)); - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - - show_sprite(objectId, mapNum, mapGroup); - return FALSE; -} - -bool8 ScrCmd_setobjectxy(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - sub_805C0F8(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, x, y); - return FALSE; -} - -bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - Overworld_SetMapObjTemplateCoords(localId, x, y); - return FALSE; -} - -bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - - sub_805C78C(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - return FALSE; -} - -bool8 ScrCmd_showobjectat(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - - npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 0); - return FALSE; -} - -bool8 ScrCmd_hideobjectat(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - - npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 1); - return FALSE; -} - -bool8 ScrCmd_setobjectpriority(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - u8 priority = ScriptReadByte(ctx); - - sub_805BCF0(localId, mapNum, mapGroup, priority + 83); - return FALSE; -} - -bool8 ScrCmd_resetobjectpriority(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - u8 mapGroup = ScriptReadByte(ctx); - u8 mapNum = ScriptReadByte(ctx); - - sub_805BD48(localId, mapNum, mapGroup); - return FALSE; -} - -bool8 ScrCmd_faceplayer(struct ScriptContext *ctx) -{ - if (gMapObjects[gSelectedMapObject].active) - { - FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject], - player_get_direction_lower_nybble()); - } - return FALSE; -} - -bool8 ScrCmd_turnobject(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - u8 direction = ScriptReadByte(ctx); - - FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, direction); - return FALSE; -} - -bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) -{ - u16 localId = VarGet(ScriptReadHalfword(ctx)); - u8 movementType = ScriptReadByte(ctx); - - Overworld_SetMapObjTemplateMovementType(localId, movementType); - return FALSE; -} - -bool8 ScrCmd_createvobject(struct ScriptContext *ctx) -{ - u8 graphicsId = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u16 x = VarGet(ScriptReadHalfword(ctx)); - u32 y = VarGet(ScriptReadHalfword(ctx)); - u8 elevation = ScriptReadByte(ctx); - u8 direction = ScriptReadByte(ctx); - - sub_805B410(graphicsId, v2, x, y, elevation, direction); - return FALSE; -} - -bool8 ScrCmd_turnvobject(struct ScriptContext *ctx) -{ - u8 v1 = ScriptReadByte(ctx); - u8 direction = ScriptReadByte(ctx); - - sub_8064990(v1, direction); - return FALSE; -} - -bool8 ScrCmd_lockall(struct ScriptContext *ctx) -{ - if (is_c1_link_related_active()) - { - return FALSE; - } - else - { - ScriptFreezeMapObjects(); - SetupNativeScript(ctx, sub_8064CFC); - return TRUE; - } -} - -bool8 ScrCmd_lock(struct ScriptContext *ctx) -{ - if (is_c1_link_related_active()) - { - return FALSE; - } - else - { - if (gMapObjects[gSelectedMapObject].active) - { - LockSelectedMapObject(); - SetupNativeScript(ctx, sub_8064DB4); - } - else - { - ScriptFreezeMapObjects(); - SetupNativeScript(ctx, sub_8064CFC); - } - return TRUE; - } -} - -bool8 ScrCmd_releaseall(struct ScriptContext *ctx) -{ - u8 objectId; - - HideFieldMessageBox(); - objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); - FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]); - sub_80A2178(); - UnfreezeMapObjects(); - return FALSE; -} - -bool8 ScrCmd_release(struct ScriptContext *ctx) -{ - u8 objectId; - - HideFieldMessageBox(); - if (gMapObjects[gSelectedMapObject].active) - FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedMapObject]); - objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0); - FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]); - sub_80A2178(); - UnfreezeMapObjects(); - return FALSE; -} - -bool8 ScrCmd_message(struct ScriptContext *ctx) -{ - u8 *msg = (u8 *)ScriptReadWord(ctx); - - if (msg == NULL) - msg = (u8 *)ctx->data[0]; - ShowFieldMessage(msg); - return FALSE; -} - -bool8 ScrCmd_messageautoscroll(struct ScriptContext *ctx) -{ - u8 *msg = (u8 *)ScriptReadWord(ctx); - - if (msg == NULL) - msg = (u8 *)ctx->data[0]; - ShowFieldAutoScrollMessage(msg); - return FALSE; -} - -bool8 ScrCmd_waitmessage(struct ScriptContext *ctx) -{ - SetupNativeScript(ctx, IsFieldMessageBoxHidden); - return TRUE; -} - -bool8 ScrCmd_closemessage(struct ScriptContext *ctx) -{ - HideFieldMessageBox(); - return FALSE; -} - -static bool8 WaitForAorBPress(void) -{ - if (gMain.newKeys & A_BUTTON) - return TRUE; - if (gMain.newKeys & B_BUTTON) - return TRUE; - return FALSE; -} - -bool8 ScrCmd_waitbuttonpress(struct ScriptContext *ctx) -{ - SetupNativeScript(ctx, WaitForAorBPress); - return TRUE; -} - -bool8 ScrCmd_yesnobox(struct ScriptContext *ctx) -{ - u8 left = ScriptReadByte(ctx); - u8 top = ScriptReadByte(ctx); - - if (ScriptMenu_YesNo(left, top) == TRUE) - { - ScriptContext1_Stop(); - return TRUE; - } - else - { - return FALSE; - } -} - -bool8 ScrCmd_multichoice(struct ScriptContext *ctx) -{ - u8 left = ScriptReadByte(ctx); - u8 top = ScriptReadByte(ctx); - u8 multichoiceId = ScriptReadByte(ctx); - u8 ignoreBPress = ScriptReadByte(ctx); - - if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) - { - ScriptContext1_Stop(); - return TRUE; - } - else - { - return FALSE; - } -} - -bool8 ScrCmd_multichoicedefault(struct ScriptContext *ctx) -{ - u8 left = ScriptReadByte(ctx); - u8 top = ScriptReadByte(ctx); - u8 multichoiceId = ScriptReadByte(ctx); - u8 defaultChoice = ScriptReadByte(ctx); - u8 ignoreBPress = ScriptReadByte(ctx); - - if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE) - { - ScriptContext1_Stop(); - return TRUE; - } - else - { - return FALSE; - } -} - -bool8 ScrCmd_drawbox(struct ScriptContext *ctx) -{ - u8 left = ScriptReadByte(ctx); - u8 top = ScriptReadByte(ctx); - u8 right = ScriptReadByte(ctx); - u8 bottom = ScriptReadByte(ctx); - - Menu_DrawStdWindowFrame(left, top, right, bottom); - return FALSE; -} - -bool8 ScrCmd_multichoicegrid(struct ScriptContext *ctx) -{ - u8 left = ScriptReadByte(ctx); - u8 top = ScriptReadByte(ctx); - u8 multichoiceId = ScriptReadByte(ctx); - u8 numColumns = ScriptReadByte(ctx); - u8 ignoreBPress = ScriptReadByte(ctx); - - if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE) - { - ScriptContext1_Stop(); - return TRUE; - } - else - { - return FALSE; - } -} - -bool8 ScrCmd_erasebox(struct ScriptContext *ctx) -{ - u8 left = ScriptReadByte(ctx); - u8 top = ScriptReadByte(ctx); - u8 right = ScriptReadByte(ctx); - u8 bottom = ScriptReadByte(ctx); - - Menu_EraseWindowRect(left, top, right, bottom); - return FALSE; -} - -// unused -bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) -{ - u8 left = ScriptReadByte(ctx); - u8 top = ScriptReadByte(ctx); - u8 multichoiceId = ScriptReadByte(ctx); - u8 ignoreBPress = ScriptReadByte(ctx); - - if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) - { - ScriptContext1_Stop(); - return TRUE; - } - else - { - return FALSE; - } -} - -bool8 ScrCmd_drawmonpic(struct ScriptContext *ctx) -{ - u16 species = VarGet(ScriptReadHalfword(ctx)); - u8 x = ScriptReadByte(ctx); - u8 y = ScriptReadByte(ctx); - - ScriptMenu_ShowPokemonPic(species, x, y); - return FALSE; -} - -bool8 ScrCmd_erasemonpic(struct ScriptContext *ctx) -{ - bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc(); - - if (func == NULL) - return FALSE; - SetupNativeScript(ctx, func); - return TRUE; -} - -bool8 ScrCmd_drawcontestwinner(struct ScriptContext *ctx) -{ - u8 v1 = ScriptReadByte(ctx); - - if (v1) - sub_8106630(v1); - ShowContestWinner(); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) -{ - u8 *ptr = (u8 *)ScriptReadWord(ctx); - - u8 v2 = ptr[0]; - u8 v3 = ptr[1]; - u8 v4 = ptr[2]; - u8 v5 = ptr[3]; - u8 v6 = ptr[4]; - u8 v7 = ptr[5]; - StringBraille(gStringVar4, ptr + 6); - Menu_DrawStdWindowFrame(v2, v3, v4, v5); - Menu_PrintText(gStringVar4, v6, v7); - return FALSE; -} - -bool8 ScrCmd_vmessage(struct ScriptContext *ctx) -{ - u32 v1 = ScriptReadWord(ctx); - - ShowFieldMessage((u8 *)(v1 - gUnknown_0202E8B0)); - return FALSE; -} - -bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) -{ - u8 stringVarIndex = ScriptReadByte(ctx); - u16 species = VarGet(ScriptReadHalfword(ctx)); - - StringCopy(sScriptStringVars[stringVarIndex], gSpeciesNames[species]); - return FALSE; -} - -bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) -{ - u8 stringVarIndex = ScriptReadByte(ctx); - - u8 *dest = sScriptStringVars[stringVarIndex]; - u8 partyIndex = GetLeadMonIndex(); - u32 species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES, NULL); - StringCopy(dest, gSpeciesNames[species]); - return FALSE; -} - -bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) -{ - u8 stringVarIndex = ScriptReadByte(ctx); - u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); - - GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]); - StringGetEnd10(sScriptStringVars[stringVarIndex]); - return FALSE; -} - -bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx) -{ - u8 stringVarIndex = ScriptReadByte(ctx); - u16 itemId = VarGet(ScriptReadHalfword(ctx)); - - CopyItemName(itemId, sScriptStringVars[stringVarIndex]); - return FALSE; -} - -bool8 ScrCmd_bufferdecorationname(struct ScriptContext *ctx) -{ - u8 stringVarIndex = ScriptReadByte(ctx); - u16 decorId = VarGet(ScriptReadHalfword(ctx)); - - StringCopy(sScriptStringVars[stringVarIndex], gDecorations[decorId].name); - return FALSE; -} - -bool8 ScrCmd_buffermovename(struct ScriptContext *ctx) -{ - u8 stringVarIndex = ScriptReadByte(ctx); - u16 moveId = VarGet(ScriptReadHalfword(ctx)); - - StringCopy(sScriptStringVars[stringVarIndex], gMoveNames[moveId]); - return FALSE; -} - -bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx) -{ - u8 stringVarIndex = ScriptReadByte(ctx); - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = sub_80BF0B8(v1); - - ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], v1, 0, v2); - return FALSE; -} - -bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx) -{ - u8 stringVarIndex = ScriptReadByte(ctx); - u16 index = VarGet(ScriptReadHalfword(ctx)); - - StringCopy(sScriptStringVars[stringVarIndex], gUnknown_083CE048[index]); - return FALSE; -} - -bool8 ScrCmd_bufferstring(struct ScriptContext *ctx) -{ - u8 stringVarIndex = ScriptReadByte(ctx); - u8 *text = (u8 *)ScriptReadWord(ctx); - - StringCopy(sScriptStringVars[stringVarIndex], text); - return FALSE; -} - -bool8 ScrCmd_vloadptr(struct ScriptContext *ctx) -{ - u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); - - StringExpandPlaceholders(gStringVar4, ptr); - return FALSE; -} - -bool8 ScrCmd_vbufferstring(struct ScriptContext *ctx) -{ - u8 stringVarIndex = ScriptReadByte(ctx); - u32 addr = ScriptReadWord(ctx); - - u8 *src = (u8 *)(addr - gUnknown_0202E8B0); - u8 *dest = sScriptStringVars[stringVarIndex]; - StringCopy(dest, src); - return FALSE; -} - -bool8 ScrCmd_givemon(struct ScriptContext *ctx) -{ - u16 species = VarGet(ScriptReadHalfword(ctx)); - u8 level = ScriptReadByte(ctx); - u16 item = VarGet(ScriptReadHalfword(ctx)); - u32 unkParam1 = ScriptReadWord(ctx); - u32 unkParam2 = ScriptReadWord(ctx); - u8 unkParam3 = ScriptReadByte(ctx); - - gSpecialVar_Result = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); - return FALSE; -} - -bool8 ScrCmd_giveegg(struct ScriptContext *ctx) -{ - u16 species = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = ScriptGiveEgg(species); - return FALSE; -} - -bool8 ScrCmd_setmonmove(struct ScriptContext *ctx) -{ - u8 partyIndex = ScriptReadByte(ctx); - u8 slot = ScriptReadByte(ctx); - u16 move = ScriptReadHalfword(ctx); - - ScriptSetMonMoveSlot(partyIndex, move, slot); - return FALSE; -} - -bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) -{ - u8 i; - u16 moveId = ScriptReadHalfword(ctx); - - gSpecialVar_Result = 6; - for (i = 0; i < PARTY_SIZE; i++) - { - u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); - if (!species) - break; - // UB: GetMonData() arguments don't match function definition - if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && pokemon_has_move(&gPlayerParty[i], moveId) == TRUE) - { - gSpecialVar_Result = i; - gSpecialVar_0x8004 = species; - break; - } - } - return FALSE; -} - -bool8 ScrCmd_givemoney(struct ScriptContext *ctx) -{ - u32 amount = ScriptReadWord(ctx); - u8 ignore = ScriptReadByte(ctx); - - if (!ignore) - AddMoney(&gSaveBlock1.money, amount); - return FALSE; -} - -bool8 ScrCmd_takemoney(struct ScriptContext *ctx) -{ - u32 amount = ScriptReadWord(ctx); - u8 ignore = ScriptReadByte(ctx); - - if (!ignore) - RemoveMoney(&gSaveBlock1.money, amount); - return FALSE; -} - -bool8 ScrCmd_checkmoney(struct ScriptContext *ctx) -{ - u32 amount = ScriptReadWord(ctx); - u8 ignore = ScriptReadByte(ctx); - - if (!ignore) - gSpecialVar_Result = IsEnoughMoney(gSaveBlock1.money, amount); - return FALSE; -} - -bool8 ScrCmd_showmoneybox(struct ScriptContext *ctx) -{ - u8 x = ScriptReadByte(ctx); - u8 y = ScriptReadByte(ctx); - u8 ignore = ScriptReadByte(ctx); - - if (!ignore) - OpenMoneyWindow(gSaveBlock1.money, x, y); - return FALSE; -} - -bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx) -{ - u8 x = ScriptReadByte(ctx); - u8 y = ScriptReadByte(ctx); - - CloseMoneyWindow(x, y); - return FALSE; -} - -bool8 ScrCmd_updatemoneybox(struct ScriptContext *ctx) -{ - u8 x = ScriptReadByte(ctx); - u8 y = ScriptReadByte(ctx); - u8 ignore = ScriptReadByte(ctx); - - if (!ignore) - UpdateMoneyWindow(gSaveBlock1.money, x, y); - return FALSE; -} - -bool8 ScrCmd_showcoinsbox(struct ScriptContext *ctx) -{ - u8 x = ScriptReadByte(ctx); - u8 y = ScriptReadByte(ctx); - - ShowCoinsWindow(gSaveBlock1.coins, x, y); - return FALSE; -} - -bool8 ScrCmd_hidecoinsbox(struct ScriptContext *ctx) -{ - u8 x = ScriptReadByte(ctx); - u8 y = ScriptReadByte(ctx); - - HideCoinsWindow(x, y); - return FALSE; -} - -bool8 ScrCmd_updatecoinsbox(struct ScriptContext *ctx) -{ - u8 x = ScriptReadByte(ctx); - u8 y = ScriptReadByte(ctx); - - UpdateCoinsWindow(gSaveBlock1.coins, x, y); - return FALSE; -} - -bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx) -{ - ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr); - return FALSE; -} - -bool8 ScrCmd_trainerbattlebegin(struct ScriptContext *ctx) -{ - BattleSetup_StartTrainerBattle(); - return TRUE; -} - -bool8 ScrCmd_gotopostbattlescript(struct ScriptContext *ctx) -{ - ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle(); - return FALSE; -} - -bool8 ScrCmd_gotobeatenscript(struct ScriptContext *ctx) -{ - ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript(); - return FALSE; -} - -bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx) -{ - u16 index = VarGet(ScriptReadHalfword(ctx)); - - ctx->comparisonResult = HasTrainerAlreadyBeenFought(index); - return FALSE; -} - -bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx) -{ - u16 index = VarGet(ScriptReadHalfword(ctx)); - - SetTrainerFlag(index); - return FALSE; -} - -bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx) -{ - u16 index = VarGet(ScriptReadHalfword(ctx)); - - ClearTrainerFlag(index); - return FALSE; -} - -bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx) -{ - u16 species = ScriptReadHalfword(ctx); - u8 level = ScriptReadByte(ctx); - u16 item = ScriptReadHalfword(ctx); - - CreateScriptedWildMon(species, level, item); - return FALSE; -} - -bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx) -{ - BattleSetup_StartScriptedWildBattle(); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_pokemart(struct ScriptContext *ctx) -{ - void *ptr = (void *)ScriptReadWord(ctx); - - Shop_CreatePokemartMenu(ptr); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_pokemartdecoration(struct ScriptContext *ctx) -{ - void *ptr = (void *)ScriptReadWord(ctx); - - Shop_CreateDecorationShop1Menu(ptr); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_pokemartdecoration2(struct ScriptContext *ctx) -{ - void *ptr = (void *)ScriptReadWord(ctx); - - Shop_CreateDecorationShop2Menu(ptr); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) -{ - u8 v2 = VarGet(ScriptReadHalfword(ctx)); - - PlaySlotMachine(v2, c2_exit_to_overworld_1_continue_scripts_restart_music); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_setberrytree(struct ScriptContext *ctx) -{ - u8 treeId = ScriptReadByte(ctx); - u8 berry = ScriptReadByte(ctx); - u8 growthStage = ScriptReadByte(ctx); - - if (berry == 0) - PlantBerryTree(treeId, 0, growthStage, FALSE); - else - PlantBerryTree(treeId, berry, growthStage, FALSE); - return FALSE; -} - -bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) -{ - u16 value = VarGet(ScriptReadHalfword(ctx)); - - gSpecialVar_Result = GetPriceReduction(value); - return FALSE; -} - -bool8 ScrCmd_choosecontestmon(struct ScriptContext *ctx) -{ - sub_80F99CC(); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_startcontest(struct ScriptContext *ctx) -{ - sub_80C48C8(); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx) -{ - sub_80C4940(); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx) -{ - sub_80C4980(gSpecialVar_ContestCategory); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_dofieldeffect(struct ScriptContext *ctx) -{ - u16 effectId = VarGet(ScriptReadHalfword(ctx)); - - sFieldEffectScriptId = effectId; - FieldEffectStart(sFieldEffectScriptId); - return FALSE; -} - -bool8 ScrCmd_setfieldeffectargument(struct ScriptContext *ctx) -{ - u8 argNum = ScriptReadByte(ctx); - - gFieldEffectArguments[argNum] = (s16)VarGet(ScriptReadHalfword(ctx)); - return FALSE; -} - -static bool8 sub_8067B48() -{ - if (!FieldEffectActiveListContains(sFieldEffectScriptId)) - return TRUE; - else - return FALSE; -} - -bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx) -{ - sFieldEffectScriptId = VarGet(ScriptReadHalfword(ctx)); - SetupNativeScript(ctx, sub_8067B48); - return TRUE; -} - -bool8 ScrCmd_setrespawn(struct ScriptContext *ctx) -{ - u16 healLocationId = VarGet(ScriptReadHalfword(ctx)); - - Overworld_SetHealLocationWarp(healLocationId); - return FALSE; -} - -bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) -{ - gSpecialVar_Result = gSaveBlock2.playerGender; - return FALSE; -} - -bool8 ScrCmd_playmoncry(struct ScriptContext *ctx) -{ - u16 species = VarGet(ScriptReadHalfword(ctx)); - u16 mode = VarGet(ScriptReadHalfword(ctx)); - - PlayCry5(species, mode); - return FALSE; -} - -bool8 ScrCmd_waitmoncry(struct ScriptContext *ctx) -{ - SetupNativeScript(ctx, IsCryFinished); - return TRUE; -} - -bool8 ScrCmd_setmetatile(struct ScriptContext *ctx) -{ - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - u16 metatileId = VarGet(ScriptReadHalfword(ctx)); - u16 v8 = VarGet(ScriptReadHalfword(ctx)); - - x += 7; - y += 7; - if (!v8) - MapGridSetMetatileIdAt(x, y, metatileId); - else - MapGridSetMetatileIdAt(x, y, metatileId | 0xC00); - return FALSE; -} - -bool8 ScrCmd_opendoor(struct ScriptContext *ctx) -{ - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - x += 7; - y += 7; - PlaySE(GetDoorSoundEffect(x, y)); - FieldAnimateDoorOpen(x, y); - return FALSE; -} - -bool8 ScrCmd_closedoor(struct ScriptContext *ctx) -{ - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - x += 7; - y += 7; - FieldAnimateDoorClose(x, y); - return FALSE; -} - -static bool8 IsDoorAnimationStopped() -{ - if (!FieldIsDoorAnimationRunning()) - return TRUE; - else - return FALSE; -} - -bool8 ScrCmd_waitdooranim(struct ScriptContext *ctx) -{ - SetupNativeScript(ctx, IsDoorAnimationStopped); - return TRUE; -} - -bool8 ScrCmd_setdooropen(struct ScriptContext *ctx) -{ - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - x += 7; - y += 7; - FieldSetDoorOpened(x, y); - return FALSE; -} - -bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx) -{ - u16 x = VarGet(ScriptReadHalfword(ctx)); - u16 y = VarGet(ScriptReadHalfword(ctx)); - - x += 7; - y += 7; - FieldSetDoorClosed(x, y); - return FALSE; -} - -bool8 ScrCmd_addelevmenuitem(struct ScriptContext *ctx) -{ - u8 v3 = ScriptReadByte(ctx); - u16 v5 = VarGet(ScriptReadHalfword(ctx)); - u16 v7 = VarGet(ScriptReadHalfword(ctx)); - u16 v9 = VarGet(ScriptReadHalfword(ctx)); - - ScriptAddElevatorMenuItem(v3, v5, v7, v9); - return FALSE; -} - -bool8 ScrCmd_showelevmenu(struct ScriptContext *ctx) -{ - ScriptShowElevatorMenu(); - ScriptContext1_Stop(); - return TRUE; -} - -bool8 ScrCmd_checkcoins(struct ScriptContext *ctx) -{ - u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx)); - *ptr = GetCoins(); - return FALSE; -} - -bool8 ScrCmd_givecoins(struct ScriptContext *ctx) -{ - u16 coins = VarGet(ScriptReadHalfword(ctx)); - - if (GiveCoins(coins) == TRUE) - gSpecialVar_Result = 0; - else - gSpecialVar_Result = 1; - return FALSE; -} - -bool8 ScrCmd_takecoins(struct ScriptContext *ctx) -{ - u16 coins = VarGet(ScriptReadHalfword(ctx)); - - if (TakeCoins(coins) == TRUE) - gSpecialVar_Result = 0; - else - gSpecialVar_Result = 1; - return FALSE; -} |