papermario/include/script_api/common.h
Alex Bates 37f59877e5
Doxygen (#1142)
* use doxygen
* add documenting guide based on https://github.com/zeldaret/oot/blob/main/docs/Documenting.md
* exclude stdlib readme from doxygen
* refuse to configure matching iQue on macOS (EGCS compiler is not built for macOS, so iQue won't build. We still enable iQue builds on macOS by using gcc-papermario via --non-matching.)
* use proper doxygen bug comment style
* document common EVT API funcs nicely
* add doxygen ci
* add \vars command
2024-01-09 23:56:08 +00:00

1373 lines
32 KiB
C

/// @file script_api/common.h
/// EVT scripting API functions available at all times.
/// @sa script_api/battle.h script_api/map.h
// Command for reading all declarations in a source file:
// $ cat src/evt/*.c | grep "ApiStatus [^{]*" -o | sed "s/ $/;/"
#ifndef _SCRIPT_API_COMMON_H_
#define _SCRIPT_API_COMMON_H_
#include "common_structs.h"
#include "macros.h"
/// @{
/// @name Map
/// @evtapi
ApiStatus TranslateModel(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RotateModel(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ScaleModel(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetModelIndex(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus InvalidateModelTransform(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus CloneModel(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetModelCenter(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetTexPanner(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCustomGfxEnabled(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetModelCustomGfx(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetModelTexVariant(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus EnableTexPanning(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus EnableModel(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetGroupVisibility(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetTexPanOffset(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCustomGfx(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCustomGfxBuilders(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetModelFlags(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus MakeTransformGroup(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetTransformGroupEnabled(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus TranslateGroup(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RotateGroup(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ScaleGroup(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetTransformGroup(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus EnableGroup(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus MakeLocalVertexCopy(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ModifyColliderFlags(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ResetFromLava(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetColliderCenter(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ParentColliderToModel(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus UpdateColliderTransform(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetZoneEnabled(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GotoMap(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GotoMapSpecial(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GotoMapByID(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetEntryID(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetMapID(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetLoadType(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetRenderMode(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlaySoundAtModel(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlaySoundAtCollider(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Animated Model
/// @evtapi
ApiStatus InitAnimatedModels(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus LoadAnimatedModel(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus LoadAnimatedMesh(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayModelAnimation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayModelAnimationStartingFrom(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ChangeModelAnimation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetAnimatedModelRootPosition(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetAnimatedModelRootPosition(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AddAnimatedModelRootPosition(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetAnimatedModelRootRotation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetAnimatedModelRootScale(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetAnimatedModelRenderMode(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DeleteAnimatedModel(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetAnimatorFlags(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetAnimatedNodePosition(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetAnimatedNodeRotation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetAnimatedPositionByTreeIndex(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetAnimatedRotationByTreeIndex(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetAnimatedNodeFlags(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Camera
/// @evtapi
ApiStatus SetCamEnabled(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamNoDraw(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamPerspective(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802CA90C(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802CA988(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamViewport(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802CABE8(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802CACC0(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamBGColor(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802CAE50(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamTarget(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus InterpCamTargetPos(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShakeCam(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamLeadPlayer(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802CB710(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PanToTarget(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus UseSettingsFrom(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus LoadSettings(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamType(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamPitch(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamDistance(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamPosA(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamPosB(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamPosC(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetPanTarget(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamSpeed(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetCamType(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetCamPitch(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetCamDistance(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetCamPosA(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetCamPosB(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetCamPosC(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetCamPosition(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus WaitForCam(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetCamProperties(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AdjustCam(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ResetCam(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name NPC
/// @evtapi
ApiStatus CreateNpc(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DeleteNpc(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetNpcPointer(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcPos(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcRotation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcRotationPivot(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcScale(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcCollisionSize(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcSpeed(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcJumpscale(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcAnimation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetNpcAnimation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcAnimationSpeed(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus NpcMoveTo(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus NpcJump0(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus NpcJump1(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus NpcFlyTo(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetNpcYaw(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcYaw(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus InterpNpcYaw(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus NpcFacePlayer(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus NpcFaceNpc(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcFlagBits(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetNpcPos(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcCollisionChannel(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcSprite(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus EnableNpcShadow(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus EnableNpcBlur(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ClearPartnerMoveHistory(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus NpcSetHomePosToCurrent(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetPartnerPos(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DisablePartnerAI(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus EnablePartnerAI(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802CF54C(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802CF56C(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus BringPartnerOut(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PutPartnerAway(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetCurrentPartnerID(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PartnerCanUseAbility(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PartnerIsFlying(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcImgFXParams(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcImgFXFlags(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcPaletteSwapMode(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcPaletteSwapLower(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcPaletteSwapping(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcDecoration(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlaySoundAtNpc(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcRenderMode(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Encounter
/// @evtapi
ApiStatus SetEncounterStatusFlags(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus IsStartingConversation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_80044238(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus LoadDemoBattle(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_80044290(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus MakeNpcs(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RemoveNpc(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RemoveEncounter(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetBattleOutcome(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_800445A8(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_800445D4(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetOwnerEncounterTrigger(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DoNpcDefeat(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus StartBattle(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus StartBattleWith(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus StartBossBattle(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetBattleMusic(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus BindNpcAI(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus BindNpcIdle(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RestartNpcAI(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus EnableNpcAI(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcAux(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus BindNpcAux(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RestartNpcAux(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus EnableNpcAux(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus BindNpcInteract(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus BindNpcHit(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus BindNpcDefeat(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetSelfVar(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetSelfVar(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetNpcVar(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetNpcVar(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetSelfRotation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetSelfEnemyFlags(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetSelfEnemyFlagBits(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SelfEnemyOverrideSyncPos(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetSelfNpcID(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ClearDefeatedEnemies(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetEnemyFlagBits(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_8004572C(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetSelfAnimationFromTable(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_80045798(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetOwnerInstigatorValue(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetBattleAsScripted(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetEncounterTriggerHitTier(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_80045838(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_800458CC(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus OnPlayerFled(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetTattleMessage(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowMerleeCoinMessage(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowMerleeRanOutMessage(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FadeInMerlee(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FadeOutMerlee(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus MerleeUpdateFX(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus MerleeStopFX(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayMerleeGatherFX(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayMerleeOrbFX(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowMerleeCoinMessage(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowMerleeRanOutMessage(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FadeBackgroundDarken(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FadeBackgroundLighten(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FadeInMerlee(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FadeOutMerlee(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus MerleeUpdateFX(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus MerleeStopFX(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetCamLookAtObjVector(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus HasMerleeCasts(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayMerleeGatherFX(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayMerleeOrbFX(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus OnDefeatEnemy(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus OnFleeBattleDrops(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Message
/// @evtapi
ApiStatus SpeakToPlayer(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus EndSpeech(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ContinueSpeech(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SpeakToNpc(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowMessageAtScreenPos(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowMessageAtWorldPos(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus CloseMessage(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SwitchMessage(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowChoice(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus CloseChoice(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus CancelMessage(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetMessageImages(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D0C94(Evt* script, s32 initialCall);
/// @evtapi
ApiStatus SetMessageText(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetMessageValue(Evt* script, s32 initialCall);
/// @}
/// @{
/// @name Player
/// Hides the player's shadow if `hide` is `TRUE`, shows it if `FALSE`.
/// @evtapi
/// @param hide Whether to hide the player's shadow.
/// @see disable_player_shadow, enable_player_shadow
ApiStatus HidePlayerShadow(Evt* script, s32 isInitialCall);
/// Disables player physics if `disable` is `TRUE`, enables it if `FALSE`.
/// @evtapi
/// @param disable Whether to disable player physics.
/// @see disable_player_static_collisions, enable_player_static_collisions
ApiStatus DisablePlayerPhysics(Evt* script, s32 isInitialCall);
/// Disables player and partner input, and disables the status menu.
/// @evtapi
/// @param disable Whether to disable player input.
ApiStatus DisablePlayerInput(Evt* script, s32 isInitialCall);
/// Sets the player position.
/// @evtapi
/// @param x
/// @param y `-1000` is used for hiding the player.
/// @param z
/// @see GetPlayerPos
ApiStatus SetPlayerPos(Evt* script, s32 isInitialCall);
/// Overrides the player collision size.
/// @evtapi
/// @param height
/// @param diameter
ApiStatus SetPlayerCollisionSize(Evt* script, s32 isInitialCall);
/// Sets the move speed of the player for subequent \ref PlayerMoveTo calls.
/// @evtapi
/// @param speed Float multiplier.
/// @see SetNpcSpeed
ApiStatus SetPlayerSpeed(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetPlayerJumpscale(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetPlayerAnimation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetPlayerActionState(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetPlayerAnimationSpeed(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayerMoveTo(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D1270(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D1380(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayerJump(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayerJump1(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayerJump2(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus InterpPlayerYaw(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayerFaceNpc(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetPlayerTargetYaw(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetPlayerFlagBits(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetPlayerActionState(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetPlayerPos(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetPlayerAnimation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FullyRestoreHPandFP(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FullyRestoreSP(Evt* script, s32 isInitialCall);
/// Enables switching to the given partner.
/// @evtapi
/// @param partnerID The \ref PartnerIDs "partner id" to enable.
/// @see DisablePartner
ApiStatus EnablePartner(Evt* script, s32 isInitialCall);
/// Disables switching to the given partner.
/// @evtapi
/// @param partnerID The \ref PartnerIDs "partner id" to disable.
/// @see EnablePartner
ApiStatus DisablePartner(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus UseEntryHeading(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D2148(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus UseExitHeading(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus WaitForPlayerTouchingFloor(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D2484(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus IsPlayerOnValidFloor(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus WaitForPlayerMoveToComplete(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus WaitForPlayerInputEnabled(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus UpdatePlayerImgFX(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetPlayerImgFXFlags(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FacePlayerTowardPoint(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DisablePulseStone(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetPartnerInUse(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ForceUsePartner(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus InterruptUsePartner(Evt* script, s32 isInitialCall);
/// Enables and disables the 8-bit Mario easter egg.
///
/// @evtapi
/// @param disable Disable the easter egg if `TRUE`, enable it if `FALSE`.
///
/// Whilst active, the player uses a retro sprite, and the following actions are disabled:
/// - Spin dash
/// - Hammer
/// - Spin jump and tornado jump
/// - Menus
/// - Partner usage and partner switching
///
/// @see PA_FLAG_8BIT_MARIO
ApiStatus Disable8bitMario(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D2C14(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetPlayerPushVelocity(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlaySoundAtPlayer(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Math
/// @evtapi
ApiStatus MakeLerp(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus UpdateLerp(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RandInt(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetAngleBetweenNPCs(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetAngleToNPC(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetAngleToPlayer(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AwaitPlayerApproach(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus IsPlayerWithin(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AwaitPlayerLeave(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AddVectorPolar(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D4BDC(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D4C4C(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D4CC4(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D4D14(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D4D88(Evt* script, s32 isInitialCall);
/// @evtapi
/// @see GetNextPathPos
ApiStatus LoadPath(Evt* script, s32 isInitialCall);
/// @evtapi
/// @see LoadPath
ApiStatus GetNextPathPos(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetDist2D(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetTimeFreezeMode(Evt* script, s32 initialCall);
/// @evtapi
ApiStatus ModifyGlobalOverrideFlags(Evt* script, s32 initialCall);
/// @evtapi
ApiStatus SetValueByRef(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetValueByRef(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetGameMode(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ClampAngleInt(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ClampAngleFloat(Evt* script, s32 isInitialCall);
#ifdef VERSION_PAL
/// @evtapi
ApiStatus GetLanguage(Evt* script, s32 isInitialCall);
#endif
/// @}
/// @{
/// @name UI
/// @evtapi
ApiStatus EnableWorldStatusBar(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowWorldStatusBar(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowCoinCounter(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Audio
/// @evtapi
ApiStatus PollMusicEvents(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RegisterMusicEvents(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FadeOutMusic(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetMusicTrack(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FadeInMusic(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus EnableMusicProximityMix(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AdjustMusicProximityMix(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetMusicTrackVolumes(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PopSong(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PushSong(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PopBattleSong(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PushBattleSong(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetBattleSong(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ClearAmbientSounds(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayAmbientSounds(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlaySound(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlaySoundWithVolume(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlaySoundAt(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus StopSound(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus StopTrackingSoundPos(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus UseDoorSounds(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus UseRoomDoorSounds(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlaySoundAtF(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Virtual Entity
/// @evtapi
ApiStatus InitVirtualEntityList(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus CreateVirtualEntityAt(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus CreateVirtualEntity(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus CreateVirtualEntity_ALT(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DeleteVirtualEntity(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetVirtualEntityRenderCommands(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetVirtualEntityPosition(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetVirtualEntityPosition(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetVirtualEntityRotation(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetVirtualEntityScale(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetVirtualEntityMoveSpeed(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetVirtualEntityJumpGravity(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus VirtualEntityMoveTo(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus VirtualEntityJumpTo(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus VirtualEntityLandJump(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetVirtualEntityFlags(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetVirtualEntityFlagBits(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetVirtualEntityRenderMode(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Item
/// @evtapi
ApiStatus ShowKeyChoicePopup(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowConsumableChoicePopup(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RemoveKeyItemAt(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RemoveItemAt(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AddKeyItem(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus CloseChoicePopup(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus HasKeyItem(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FindKeyItem(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AddItem(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ClearVariable(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus FindItem(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RemoveItem(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus CountFortessKeys(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RemoveFortressKeys(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus MakeItemEntity(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DropItemEntity(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DropResizableItemEntity(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RemoveItemEntity(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AddBadge(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RemoveBadge(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetItemPos(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetItemFlags(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetItemAlpha(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AddCoin(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AddStarPoints(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AddStarPieces(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus GetItemPower(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowGotItem(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Effect
/// @evtapi
ApiStatus ShowStartRecoveryShimmer(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowRecoveryShimmer(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D7690(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowEmote(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus RemoveEffect(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DismissEffect(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DismissItemOutline(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus func_802D7B74(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus InterpMotionBlurParams(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetMotionBlurParams(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowSweat(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus ShowSleepBubble(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetSleepBubbleTimeLeft(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus PlayEffect(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Entity
// TODO: document varargs better
/// Creates an entity.
///
/// @evtapi
/// @param blueprint Pointer to \ref EntityBlueprint to use.
/// @param x
/// @param y
/// @param z
/// @param flags \ref EntityFlags
/// @param ... Varargs.
/// @param MAKE_ENTITY_END Terminates the varargs.
/// @vars{out | LVar0 | Created entity's ID.}
ApiStatus MakeEntity(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus SetEntityCullMode(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus UseDynamicShadow(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AssignScript(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AssignSwitchFlag(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AssignBlockFlag(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AssignChestFlag(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AssignPanelFlag(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus AssignCrateFlag(Evt* script, s32 isInitialCall);
/// Removes a trigger previously bound with \ref EVT_BIND_TRIGGER.
/// @evtapi
/// @param triggerPtr
ApiStatus DeleteTrigger(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Sprite shading
/// @evtapi
ApiStatus SetSpriteShading(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus EnableSpriteShading(Evt* script, s32 isInitialCall);
/// @}
/// @{
/// @name Demo
/// @evtapi
ApiStatus GetDemoState(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DemoPressButton(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DemoReleaseButton(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DemoSetButtons(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DemoJoystickRadial(Evt* script, s32 isInitialCall);
/// @evtapi
ApiStatus DemoJoystickXY(Evt* script, s32 isInitialCall);
/// @}
extern EvtScript EnemyNpcHit;
extern EvtScript EnemyNpcDefeat;
#endif