mirror of https://github.com/pmret/papermario.git
2601 lines
93 KiB
C
2601 lines
93 KiB
C
#include "mac_05.h"
|
|
#include "sprite/player.h"
|
|
|
|
void increment_max_star_power(void);
|
|
|
|
NpcSettings N(NpcSettings_Whale) = {
|
|
.height = 24,
|
|
.radius = 48,
|
|
.level = ACTOR_LEVEL_NONE,
|
|
};
|
|
|
|
#include "world/common/npc/Kolorado.inc.c"
|
|
|
|
NpcSettings N(NpcSettings_JrTroopa_01) = {
|
|
.height = 32,
|
|
.radius = 24,
|
|
.level = ACTOR_LEVEL_NONE,
|
|
};
|
|
|
|
#include "world/common/npc/Toad_Patrol.inc.c"
|
|
#include "world/common/npc/Toad_Stationary.inc.c"
|
|
|
|
NpcSettings N(NpcSettings_Unused1) = {
|
|
.height = 48,
|
|
.radius = 32,
|
|
.level = ACTOR_LEVEL_NONE,
|
|
};
|
|
|
|
#define CHUCK_QUIZMO_NPC_ID NPC_ChuckQuizmo
|
|
#include "world/common/complete/Quizmo.inc.c"
|
|
|
|
MAP_STATIC_PAD(1,key_choice);
|
|
#include "world/common/complete/KeyItemChoice.inc.c"
|
|
MAP_STATIC_PAD(1,item_choice);
|
|
#include "world/common/complete/NormalItemChoice.inc.c"
|
|
|
|
#include "world/common/complete/LetterDelivery.inc.c"
|
|
|
|
s32 N(Fishmael_LetterList)[] = {
|
|
ITEM_LETTER_CHAIN_FISHMAEL, ITEM_NONE
|
|
};
|
|
|
|
EvtScript N(EVS_LetterPrompt_Fishmael) = {
|
|
Call(N(LetterDelivery_Init), NPC_Fishmael,
|
|
ANIM_Fishmael_Talk, ANIM_Fishmael_Idle,
|
|
ITEM_LETTER_CHAIN_FISHMAEL, ITEM_LETTER_CHAIN_KOOVER_2,
|
|
MSG_MAC_Port_0064, MSG_MAC_Port_0065,
|
|
MSG_MAC_Port_0066, MSG_MAC_Port_0067,
|
|
Ref(N(Fishmael_LetterList)))
|
|
ExecWait(N(EVS_DoLetterDelivery))
|
|
Return
|
|
End
|
|
};
|
|
|
|
s32 N(Kolorado_LetterList)[] = {
|
|
ITEM_LETTER_TO_KOLORADO, ITEM_NONE
|
|
};
|
|
|
|
EvtScript N(EVS_LetterPrompt_Kolorado) = {
|
|
Call(N(LetterDelivery_Init), NPC_Kolorado,
|
|
ANIM_Kolorado_Talk, ANIM_Kolorado_Idle,
|
|
ITEM_LETTER_TO_KOLORADO, ITEM_NONE,
|
|
MSG_MAC_Port_0085, MSG_MAC_Port_0086,
|
|
MSG_MAC_Port_0087, MSG_MAC_Port_0088,
|
|
Ref(N(Kolorado_LetterList)))
|
|
ExecWait(N(EVS_DoLetterDelivery))
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_LetterReward_Kolorado) = {
|
|
IfEq(LVarC, DELIVERY_ACCEPTED)
|
|
EVT_GIVE_STAR_PIECE()
|
|
EndIf
|
|
Return
|
|
End
|
|
};
|
|
|
|
s32 N(ItemList_Artifact)[] = {
|
|
ITEM_ARTIFACT,
|
|
ITEM_NONE
|
|
};
|
|
|
|
EvtScript N(EVS_ArtifactReward_Kolorado) = {
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_008E)
|
|
EVT_GIVE_STAR_PIECE()
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_008F)
|
|
Set(GF_SBK_GaveArtifactToKolorado, TRUE)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_ArtifactPrompt_Kolorado) = {
|
|
IfEq(GF_SBK_GaveArtifactToKolorado, TRUE)
|
|
Return
|
|
EndIf
|
|
Call(FindKeyItem, ITEM_ARTIFACT, LVar0)
|
|
IfEq(LVar0, -1)
|
|
Return
|
|
EndIf
|
|
IfEq(AF_MAC_44, FALSE)
|
|
Set(AF_MAC_44, TRUE)
|
|
IfEq(GF_SBK_KeptArtifactFromKolorado, FALSE)
|
|
Set(GF_SBK_KeptArtifactFromKolorado, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_0089)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_008A)
|
|
EndIf
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_008B)
|
|
EndIf
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, LVar0)
|
|
Set(LVar0, Ref(N(ItemList_Artifact)))
|
|
Set(LVar1, 1)
|
|
ExecWait(N(EVS_ChooseKeyItem))
|
|
Switch(LVar0)
|
|
CaseGe(1)
|
|
ExecWait(N(EVS_ArtifactReward_Kolorado))
|
|
BreakSwitch
|
|
CaseDefault
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_008C)
|
|
Set(LVar0, Ref(N(ItemList_Artifact)))
|
|
Set(LVar1, 1)
|
|
ExecWait(N(EVS_ChooseKeyItem))
|
|
Switch(LVar0)
|
|
CaseGe(1)
|
|
ExecWait(N(EVS_ArtifactReward_Kolorado))
|
|
CaseDefault
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_008D)
|
|
EndSwitch
|
|
EndSwitch
|
|
Return
|
|
End
|
|
};
|
|
|
|
#if VERSION_JP
|
|
API_CALLABLE(N(IncreaseMaxSP)) {
|
|
increment_max_star_power();
|
|
return ApiStatus_DONE2;
|
|
}
|
|
#endif
|
|
|
|
API_CALLABLE(N(func_80242A90_854C00)) {
|
|
Bytecode* args = script->ptrReadPos;
|
|
s32 mode = evt_get_variable(script, *args++);
|
|
s32 outVarX = *args++;
|
|
s32 outVarY = *args++;
|
|
s32 outVarZ = *args++;
|
|
Npc* npc = get_npc_safe(NPC_Whale);
|
|
f32 posX, posY, posZ;
|
|
f32 radius, angle;
|
|
|
|
switch (mode) {
|
|
case 0:
|
|
radius = 55.0f;
|
|
break;
|
|
case 1:
|
|
radius = 85.0f;
|
|
break;
|
|
case 2:
|
|
radius = 25.0f;
|
|
break;
|
|
case 3:
|
|
posX = -295.0f;
|
|
posY = -10.0f;
|
|
posZ = 400.0f;
|
|
break;
|
|
case 4:
|
|
posX = -285.0f;
|
|
posY = -10.0f;
|
|
posZ = 380.0f;
|
|
break;
|
|
default:
|
|
posX = -295.0f;
|
|
posY = -10.0f;
|
|
posZ = 420.0f;
|
|
break;
|
|
}
|
|
if (mode < 3) {
|
|
angle = -npc->yaw;
|
|
posX = npc->pos.x + 30.0f + sin_deg(angle) * radius;
|
|
posZ = npc->pos.z + cos_deg(angle) * radius;
|
|
posY = npc->pos.y + 50.0f;
|
|
}
|
|
evt_set_float_variable(script, outVarX, posX);
|
|
evt_set_float_variable(script, outVarY, posY);
|
|
evt_set_float_variable(script, outVarZ, posZ);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
// maybe a duplicate, not sure if the NPCs are the same
|
|
API_CALLABLE(N(func_80242C78_854DE8)) {
|
|
Bytecode* args = script->ptrReadPos;
|
|
Npc* npc0 = get_npc_safe(NPC_Whale);
|
|
Npc* npc1;
|
|
Npc* partner;
|
|
f32 forward, radius;
|
|
f32 x, y, z;
|
|
|
|
if (isInitialCall) {
|
|
script->functionTemp[0] = evt_get_variable(script, *args++);
|
|
switch (script->functionTemp[0]) {
|
|
case 0:
|
|
script->functionTemp[1] = 55;
|
|
break;
|
|
case 1:
|
|
script->functionTemp[1] = 85;
|
|
break;
|
|
default:
|
|
script->functionTemp[1] = 25;
|
|
break;
|
|
}
|
|
}
|
|
|
|
radius = script->functionTemp[1];
|
|
forward = -npc0->yaw;
|
|
x = npc0->pos.x + 30.0f + sin_deg(forward) * radius;
|
|
z = npc0->pos.z + cos_deg(forward) * radius;
|
|
y = npc0->pos.y + 50.0f;
|
|
|
|
switch (script->functionTemp[0]) {
|
|
case 0:
|
|
gPlayerStatus.pos.x = x;
|
|
gPlayerStatus.pos.y = y;
|
|
gPlayerStatus.pos.z = z;
|
|
npc0->colliderPos.x = npc0->pos.x;
|
|
npc0->colliderPos.y = npc0->pos.y;
|
|
npc0->colliderPos.z = npc0->pos.z;
|
|
npc0->flags |= NPC_FLAG_DIRTY_SHADOW;
|
|
break;
|
|
case 1:
|
|
partner = get_npc_safe(NPC_PARTNER);
|
|
if (partner == NULL) {
|
|
return ApiStatus_DONE2;
|
|
}
|
|
partner->pos.x = x;
|
|
partner->pos.y = y;
|
|
partner->pos.z = z;
|
|
partner->colliderPos.x = partner->pos.x;
|
|
partner->colliderPos.y = partner->pos.y;
|
|
partner->colliderPos.z = partner->pos.z;
|
|
partner->flags |= NPC_FLAG_DIRTY_SHADOW;
|
|
break;
|
|
case 2:
|
|
npc1 = get_npc_safe(NPC_Kolorado);
|
|
npc1->pos.x = x;
|
|
npc1->pos.y = y;
|
|
npc1->pos.z = z;
|
|
npc1->colliderPos.x = npc1->pos.x;
|
|
npc1->colliderPos.y = npc1->pos.y;
|
|
npc1->colliderPos.z = npc1->pos.z;
|
|
npc1->flags |= NPC_FLAG_DIRTY_SHADOW;
|
|
break;
|
|
}
|
|
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
|
|
API_CALLABLE(N(func_80242E84_854FF4)) {
|
|
Bytecode* args = script->ptrReadPos;
|
|
Npc* npc = get_npc_safe(NPC_Whale);
|
|
|
|
if (isInitialCall) {
|
|
script->functionTemp[0] = evt_get_variable(script, *args++);
|
|
if (script->functionTemp[0] == 0) {
|
|
script->functionTemp[2] = 0;
|
|
script->functionTemp[1] = 90;
|
|
} else {
|
|
script->functionTemp[2] = 10;
|
|
script->functionTemp[1] = 290;
|
|
npc->pos.x = 650.0f;
|
|
npc->pos.y = -30.0f;
|
|
npc->pos.z = 372.0f;
|
|
}
|
|
}
|
|
|
|
switch (script->functionTemp[2]) {
|
|
case 0:
|
|
npc->curAnim = ANIM_Kolorado_Idle;
|
|
npc->yaw -= 1.0f;
|
|
npc->pos.x += 3.0f;
|
|
script->functionTemp[1]--;
|
|
if (script->functionTemp[1] <= 0) {
|
|
script->functionTemp[2] = 1;
|
|
script->functionTemp[1] = 200;
|
|
}
|
|
break;
|
|
case 1:
|
|
if (evt_get_variable(NULL, MF_Unk_01)) {
|
|
npc->pos.x += 3.0f;
|
|
script->functionTemp[1]--;
|
|
if (script->functionTemp[1] <= 0) {
|
|
return ApiStatus_DONE1;
|
|
}
|
|
}
|
|
break;
|
|
case 10:
|
|
npc->yaw = 270.0f;
|
|
npc->pos.x -= 3.0f;
|
|
script->functionTemp[1]--;
|
|
if (script->functionTemp[1] <= 0) {
|
|
script->functionTemp[2] = 11;
|
|
script->functionTemp[1] = 90;
|
|
}
|
|
break;
|
|
case 11:
|
|
npc->yaw -= 1.0f;
|
|
script->functionTemp[1]--;
|
|
if (script->functionTemp[1] <= 0) {
|
|
return ApiStatus_DONE1;
|
|
}
|
|
break;
|
|
}
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
|
|
EvtScript N(D_802484D8_85A648) = {
|
|
Call(N(func_80242C78_854DE8), LVar0)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(D_802484F8_85A668) = {
|
|
Call(GetNpcPos, NPC_Whale, LVar0, LVar1, LVar2)
|
|
Call(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 1)
|
|
IfEq(LVar0, 0)
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(90.0))
|
|
Else
|
|
Call(SetCamSpeed, CAM_DEFAULT, 1)
|
|
EndIf
|
|
Wait(1)
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 0)
|
|
Call(SetCamSpeed, CAM_DEFAULT, 1)
|
|
Loop(0)
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
IfLt(LVar0, 100)
|
|
Call(GetNpcPos, NPC_Whale, LVar0, LVar1, LVar2)
|
|
Call(SetCamTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Else
|
|
Set(LVar3, LVar0)
|
|
Sub(LVar3, 100)
|
|
Call(GetNpcPos, NPC_Whale, LVar0, LVar1, LVar2)
|
|
Sub(LVar0, LVar3)
|
|
Call(SetCamTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
EndIf
|
|
Wait(1)
|
|
EndLoop
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(D_802486EC_85A85C) = {
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Loop(0)
|
|
Call(GetPlayerPos, LVar0, LVar4, LVar4)
|
|
IfGt(LVar0, -150)
|
|
Call(GetPlayerPos, LVar0, LVar4, LVar4)
|
|
Call(SetCamTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Else
|
|
Set(LVar3, LVar0)
|
|
Sub(LVar3, -150)
|
|
Call(GetPlayerPos, LVar0, LVar4, LVar4)
|
|
Sub(LVar0, LVar3)
|
|
Call(SetCamTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(GetNpcPos, NPC_Whale, LVar0, LVar4, LVar4)
|
|
IfLt(LVar0, -150)
|
|
Call(SetCamTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Else
|
|
Call(SetCamTarget, CAM_DEFAULT, -150, LVar1, LVar2)
|
|
EndIf
|
|
EndIf
|
|
Wait(1)
|
|
EndLoop
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_80248878) = {
|
|
Set(GB_StoryProgress, STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
Call(DisablePlayerInput, TRUE)
|
|
Call(DisablePlayerPhysics, TRUE)
|
|
Call(SetPlayerActionState, ACTION_STATE_LAND)
|
|
Call(DisablePartnerAI, 0)
|
|
Call(SetNpcPos, NPC_PARTNER, -120, 24, 375)
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Call(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamDistance, CAM_DEFAULT, 400)
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 1)
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(90.0))
|
|
Wait(20)
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_MAC_Port_009F)
|
|
Wait(20)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Shout)
|
|
Call(GetNpcPos, NPC_Whale, LVar0, LVar1, LVar2)
|
|
Add(LVar0, 40)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamDistance, CAM_DEFAULT, 475)
|
|
Call(SetCamSpeed, CAM_DEFAULT, 3)
|
|
Wait(10)
|
|
Thread
|
|
Call(SetPlayerJumpscale, Float(0.5))
|
|
Call(SetPlayerAnimation, ANIM_Mario1_Flail)
|
|
Call(SetPlayerPos, -120, 24, 375)
|
|
Call(PlaySoundAtPlayer, SOUND_WHALE_EJECT, SOUND_SPACE_DEFAULT)
|
|
Call(PlayerJump1, -310, -10, 372, 80)
|
|
Call(SetPlayerActionState, ACTION_STATE_LAND)
|
|
Call(PlayerFaceNpc, NPC_Whale, FALSE)
|
|
EndThread
|
|
Thread
|
|
Wait(5)
|
|
Call(SetNpcPos, NPC_PARTNER, -120, 24, 375)
|
|
Call(SetNpcJumpscale, NPC_PARTNER, Float(0.5))
|
|
Call(PlaySoundAtNpc, NPC_PARTNER, SOUND_WHALE_EJECT, SOUND_SPACE_DEFAULT)
|
|
Call(NpcJump0, NPC_PARTNER, -345, 0, 372, 80)
|
|
Call(ClearPartnerMoveHistory, NPC_PARTNER)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Whale, 0)
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE)
|
|
EndThread
|
|
Thread
|
|
Wait(10)
|
|
Call(SetNpcPos, NPC_Fuzzipede, -120, 24, 375)
|
|
Call(SetNpcJumpscale, NPC_Fuzzipede, Float(0.5))
|
|
Call(PlaySoundAtNpc, NPC_Fuzzipede, SOUND_WHALE_EJECT, SOUND_SPACE_DEFAULT)
|
|
Call(NpcJump0, NPC_Fuzzipede, -280, -10, 372, 90)
|
|
Call(NpcFaceNpc, NPC_Fuzzipede, NPC_Whale, 0)
|
|
EndThread
|
|
Wait(50)
|
|
Thread
|
|
Wait(15)
|
|
Call(SetNpcJumpscale, NPC_Kolorado, Float(0.1))
|
|
Call(NpcJump0, NPC_Kolorado, -380, -10, 372, 20)
|
|
Call(NpcFaceNpc, NPC_Kolorado, NPC_Whale, 0)
|
|
EndThread
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Still)
|
|
Wait(60)
|
|
Call(NpcFacePlayer, NPC_Kolorado, 0)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Fuzzipede, 0)
|
|
Call(NpcFaceNpc, NPC_Fuzzipede, NPC_Whale, 0)
|
|
Call(PlayerFaceNpc, NPC_Fuzzipede, FALSE)
|
|
Call(SetCamSpeed, CAM_DEFAULT, 3)
|
|
Call(GetNpcPos, NPC_Fuzzipede, LVar0, LVar1, LVar2)
|
|
Call(GetNpcPos, NPC_Whale, LVar3, LVar4, LVar5)
|
|
Add(LVar0, LVar3)
|
|
Add(LVar1, LVar4)
|
|
Add(LVar2, LVar5)
|
|
Div(LVar0, 2)
|
|
Div(LVar1, 2)
|
|
Div(LVar2, 2)
|
|
Call(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamDistance, CAM_DEFAULT, 400)
|
|
Call(WaitForCam, CAM_DEFAULT, Float(1.0))
|
|
Call(SpeakToPlayer, NPC_Fuzzipede, ANIM_Fuzzipede_Anim24, ANIM_Fuzzipede_Anim04, 5, MSG_MAC_Port_00A0)
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_MAC_Port_00A1)
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Call(GetNpcPos, NPC_Whale, LVar3, LVar4, LVar5)
|
|
Add(LVar0, LVar3)
|
|
Add(LVar1, LVar4)
|
|
Add(LVar2, LVar5)
|
|
Div(LVar0, 2)
|
|
Div(LVar1, 2)
|
|
Div(LVar2, 2)
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(90.0))
|
|
Call(SetCamDistance, CAM_DEFAULT, 475)
|
|
Call(SetCamPosA, CAM_DEFAULT, Float(-63.5), 0)
|
|
Call(SetCamPitch, CAM_DEFAULT, Float(18.5), Float(-5.0))
|
|
Call(SpeakToNpc, NPC_Fuzzipede, ANIM_Fuzzipede_Anim24, ANIM_Fuzzipede_Anim04, 0, NPC_Whale, MSG_MAC_Port_00A2)
|
|
Call(NpcFacePlayer, NPC_Fuzzipede, 0)
|
|
Wait(10)
|
|
Call(EndSpeech, NPC_Fuzzipede, ANIM_Fuzzipede_Anim24, ANIM_Fuzzipede_Anim04, 0)
|
|
Wait(10)
|
|
Call(SetNpcJumpscale, NPC_Fuzzipede, 1)
|
|
Call(GetNpcPos, NPC_Fuzzipede, LVar0, LVar1, LVar2)
|
|
Call(FadeOutMusic, 0, 3000)
|
|
Loop(10)
|
|
Add(LVar2, -60)
|
|
Call(PlaySoundAtNpc, NPC_Fuzzipede, SOUND_FUZZIPEDE_MOTION, SOUND_SPACE_DEFAULT)
|
|
Call(NpcJump0, NPC_Fuzzipede, LVar0, LVar1, LVar2, 10)
|
|
Call(NpcFaceNpc, NPC_Kolorado, NPC_Fuzzipede, 0)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Fuzzipede, 0)
|
|
Call(PlayerFaceNpc, NPC_Fuzzipede, FALSE)
|
|
EndLoop
|
|
Call(SetNpcPos, NPC_Fuzzipede, NPC_DISPOSE_LOCATION)
|
|
Thread
|
|
Wait(5)
|
|
Call(NpcFaceNpc, NPC_Kolorado, NPC_Whale, 0)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Whale, 0)
|
|
Call(PlayerFaceNpc, NPC_Whale, FALSE)
|
|
EndThread
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_MAC_Port_00A3)
|
|
Call(GetNpcPos, NPC_Kolorado, LVar0, LVar1, LVar2)
|
|
Call(GetPlayerPos, LVar3, LVar4, LVar5)
|
|
Add(LVar0, LVar3)
|
|
Add(LVar1, LVar4)
|
|
Add(LVar2, LVar5)
|
|
Div(LVar0, 2)
|
|
Div(LVar1, 2)
|
|
Div(LVar2, 2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamDistance, CAM_DEFAULT, 300)
|
|
Call(SetCamPosA, CAM_DEFAULT, 0, 0)
|
|
Call(SetCamPitch, CAM_DEFAULT, Float(18.0), Float(-7.0))
|
|
Wait(5)
|
|
Thread
|
|
Wait(5)
|
|
Call(NpcFacePlayer, NPC_Kolorado, 0)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Kolorado, 0)
|
|
Call(PlayerFaceNpc, NPC_Kolorado, FALSE)
|
|
EndThread
|
|
Call(SpeakToPlayer, NPC_Kolorado, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_00A4)
|
|
Call(SetCamSpeed, CAM_DEFAULT, 3)
|
|
Call(GetNpcPos, NPC_PARTNER, LVar0, LVar1, LVar2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamDistance, CAM_DEFAULT, 250)
|
|
Thread
|
|
Wait(5)
|
|
Call(NpcFaceNpc, NPC_Kolorado, NPC_PARTNER, 0)
|
|
Call(PlayerFaceNpc, NPC_PARTNER, FALSE)
|
|
EndThread
|
|
Call(GetCurrentPartnerID, LVar0)
|
|
Switch(LVar0)
|
|
CaseEq(PARTNER_GOOMBARIO)
|
|
Call(SpeakToPlayer, NPC_PARTNER, ANIM_WorldGoombario_Talk, ANIM_WorldGoombario_Idle, 0, MSG_MAC_Port_00A5)
|
|
CaseEq(PARTNER_KOOPER)
|
|
Call(SpeakToPlayer, NPC_PARTNER, ANIM_WorldKooper_Talk, ANIM_WorldKooper_Idle, 0, MSG_MAC_Port_00A6)
|
|
CaseEq(PARTNER_BOMBETTE)
|
|
Call(SpeakToPlayer, NPC_PARTNER, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_MAC_Port_00A7)
|
|
CaseEq(PARTNER_PARAKARRY)
|
|
Call(SpeakToPlayer, NPC_PARTNER, ANIM_WorldParakarry_Talk, ANIM_WorldParakarry_Idle, 0, MSG_MAC_Port_00A8)
|
|
CaseEq(PARTNER_BOW)
|
|
Call(SpeakToPlayer, NPC_PARTNER, ANIM_WorldBow_Talk, ANIM_WorldBow_Idle, 0, MSG_MAC_Port_00A9)
|
|
CaseEq(PARTNER_WATT)
|
|
Call(SpeakToPlayer, NPC_PARTNER, ANIM_WorldWatt_Talk, ANIM_WorldWatt_Idle, 0, MSG_MAC_Port_00AA)
|
|
EndSwitch
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Call(GetNpcPos, NPC_Whale, LVar3, LVar4, LVar5)
|
|
Add(LVar0, LVar3)
|
|
Add(LVar1, LVar4)
|
|
Add(LVar2, LVar5)
|
|
Div(LVar0, 2)
|
|
Div(LVar1, 2)
|
|
Div(LVar2, 2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(90.0))
|
|
Call(SetCamDistance, CAM_DEFAULT, 475)
|
|
Call(SetCamPosA, CAM_DEFAULT, Float(-63.5), 0)
|
|
Call(SetCamPitch, CAM_DEFAULT, Float(18.5), Float(-5.0))
|
|
Wait(5)
|
|
Thread
|
|
Wait(5)
|
|
Call(NpcFaceNpc, NPC_Kolorado, NPC_Whale, 0)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Whale, 0)
|
|
Call(PlayerFaceNpc, NPC_Whale, FALSE)
|
|
EndThread
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_MAC_Port_00AB)
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 0)
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(1.5))
|
|
Thread
|
|
Wait(100)
|
|
Call(SetCamSpeed, CAM_DEFAULT, 1)
|
|
EndThread
|
|
Call(DisablePlayerPhysics, FALSE)
|
|
Call(DisablePlayerInput, FALSE)
|
|
Call(EnablePartnerAI)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(D_802496C0_85B830) = {
|
|
Call(SetPlayerAnimation, ANIM_Mario1_Jump)
|
|
Wait(5)
|
|
Call(SetPlayerAnimation, ANIM_Mario1_Fall)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_802496FC) = {
|
|
Call(DisablePlayerInput, TRUE)
|
|
Call(DisablePlayerPhysics, TRUE)
|
|
Call(SetPlayerActionState, ACTION_STATE_LAND)
|
|
Call(InterpPlayerYaw, 270, 0)
|
|
Set(LVar0, 1)
|
|
ExecGetTID(N(D_802484F8_85A668), LVarA)
|
|
Call(DisablePartnerAI, 0)
|
|
Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_FLYING | NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_IGNORE_ENTITY_COLLISION, TRUE)
|
|
Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_GRAVITY, FALSE)
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE)
|
|
Call(SetNpcYaw, NPC_PARTNER, 270)
|
|
Set(LVar0, 0)
|
|
ExecGetTID(N(D_802484D8_85A648), LVarB)
|
|
Set(LVar0, 1)
|
|
ExecGetTID(N(D_802484D8_85A648), LVarC)
|
|
IfEq(GB_StoryProgress, STORY_CH5_TRADED_VASE_FOR_SEED)
|
|
Set(LVar0, 2)
|
|
ExecGetTID(N(D_802484D8_85A648), LVarD)
|
|
EndIf
|
|
Call(N(func_80242E84_854FF4), 2)
|
|
KillThread(LVarB)
|
|
KillThread(LVarC)
|
|
IfEq(GB_StoryProgress, STORY_CH5_TRADED_VASE_FOR_SEED)
|
|
KillThread(LVarD)
|
|
EndIf
|
|
Wait(1)
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_tt9, COLLIDER_FLAGS_UPPER_MASK)
|
|
IfEq(GB_StoryProgress, STORY_CH5_TRADED_VASE_FOR_SEED)
|
|
Call(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_Run)
|
|
Call(N(func_80242A90_854C00), 5, LVar0, LVar1, LVar2)
|
|
Call(PlaySoundAtNpc, NPC_Kolorado, SOUND_NPC_JUMP, SOUND_SPACE_DEFAULT)
|
|
Call(SetNpcJumpscale, NPC_Kolorado, Float(1.0))
|
|
Call(NpcJump0, NPC_Kolorado, LVar0, LVar1, LVar2, 20)
|
|
Call(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_Idle)
|
|
EndIf
|
|
Call(N(func_80242A90_854C00), 3, LVar0, LVar1, LVar2)
|
|
Exec(N(D_802496C0_85B830))
|
|
Call(SetPlayerJumpscale, Float(1.0))
|
|
Call(PlayerJump, LVar0, LVar1, LVar2, 20)
|
|
Call(SetPlayerAnimation, ANIM_Mario1_Idle)
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_RUN)
|
|
Call(N(func_80242A90_854C00), 4, LVar0, LVar1, LVar2)
|
|
Call(SetNpcJumpscale, NPC_PARTNER, Float(1.0))
|
|
Call(NpcJump0, NPC_PARTNER, LVar0, LVar1, LVar2, 20)
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE)
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_tt9, COLLIDER_FLAGS_UPPER_MASK)
|
|
KillThread(LVarA)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_TalkSad)
|
|
Call(InterpNpcYaw, NPC_Whale, 270, 60)
|
|
Thread
|
|
Call(SetNpcJumpscale, NPC_Whale, 0)
|
|
Call(NpcJump0, NPC_Whale, -220, 10, 372, 20)
|
|
EndThread
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Call(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 1)
|
|
Call(WaitForCam, CAM_DEFAULT, Float(1.0))
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 0)
|
|
Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_FLYING | NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_IGNORE_ENTITY_COLLISION, FALSE)
|
|
Switch(GB_StoryProgress)
|
|
CaseRange(STORY_CH5_SUSHIE_JOINED_PARTY, STORY_CH5_STAR_SPRIT_DEPARTED)
|
|
IfEq(GF_MAC01_Defeated_JrTroopa4, FALSE)
|
|
Call(SetNpcVar, NPC_JrTroopa_01, 0, 1)
|
|
EndIf
|
|
CaseEq(STORY_CH5_TRADED_VASE_FOR_SEED)
|
|
Call(SetNpcVar, NPC_Kolorado, 0, 1)
|
|
EndSwitch
|
|
Exec(N(EVS_SetupMusic))
|
|
Call(DisablePlayerPhysics, FALSE)
|
|
Call(DisablePlayerInput, FALSE)
|
|
Call(EnablePartnerAI)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(D_80249C34_85BDA4) = {
|
|
Thread
|
|
Call(SetPlayerJumpscale, Float(1.0))
|
|
Call(SetPlayerAnimation, ANIM_Mario1_Flail)
|
|
Call(PlayerJump1, -310, -10, 372, 30)
|
|
Call(SetPlayerActionState, ACTION_STATE_LAND)
|
|
Call(PlayerFaceNpc, NPC_Whale, FALSE)
|
|
EndThread
|
|
Thread
|
|
Call(DisablePartnerAI, 0)
|
|
Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_FLYING | NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_IGNORE_ENTITY_COLLISION, TRUE)
|
|
Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_GRAVITY, FALSE)
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE)
|
|
Call(SetNpcJumpscale, NPC_PARTNER, Float(1.0))
|
|
Call(NpcJump0, NPC_PARTNER, -345, -10, 372, 30)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Whale, 0)
|
|
Call(ClearPartnerMoveHistory, NPC_PARTNER)
|
|
Call(EnablePartnerAI)
|
|
EndThread
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(D_80249D80_85BEF0) = {
|
|
Wait(20)
|
|
Call(PlayerMoveTo, -285, 485, 40)
|
|
Call(PlayerMoveTo, -310, 372, 20)
|
|
Call(PlayerFaceNpc, NPC_Whale, FALSE)
|
|
Call(DisablePartnerAI, 0)
|
|
Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_FLYING | NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_IGNORE_ENTITY_COLLISION, TRUE)
|
|
Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_GRAVITY, FALSE)
|
|
Call(NpcMoveTo, NPC_PARTNER, -345, 372, 30)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Whale, Float(1.0))
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE)
|
|
Call(ClearPartnerMoveHistory, NPC_PARTNER)
|
|
Call(EnablePartnerAI)
|
|
Return
|
|
End
|
|
};
|
|
|
|
#include "world/common/todo/GetFloorCollider.inc.c"
|
|
|
|
API_CALLABLE(N(func_802430B4_855224)) {
|
|
Bytecode* args = script->ptrReadPos;
|
|
Npc* npc = get_npc_safe(-4);
|
|
s32 outVal = -1;
|
|
|
|
if (gCollisionStatus.bombetteExploded >= 0) {
|
|
f32 temp = 11.0f;
|
|
f32 x = npc->pos.x;
|
|
f32 y = npc->pos.y + temp;
|
|
f32 z = npc->pos.z;
|
|
|
|
temp = 12.0f;
|
|
if (npc_raycast_down_around(npc->collisionChannel, &x, &y, &z, &temp, npc->yaw, npc->collisionDiameter) &&
|
|
temp <= 12.0f)
|
|
{
|
|
outVal = NpcHitQueryColliderID;
|
|
}
|
|
}
|
|
evt_set_variable(script, *args++, outVal);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
EvtScript N(D_80249E84_85BFF4) = {
|
|
Set(LVarA, 0)
|
|
Loop(0)
|
|
Call(N(GetFloorCollider), LVar0)
|
|
IfEq(LVar0, 29)
|
|
Set(LVar5, 0)
|
|
Call(GetPlayerActionState, LVar1)
|
|
IfEq(LVar1, ACTION_STATE_HAMMER)
|
|
Add(LVar5, 1)
|
|
EndIf
|
|
Call(GetPlayerPos, LVar2, LVar3, LVar4)
|
|
Call(GetPlayerTargetYaw, LVar3)
|
|
IfLt(LVar3, 180)
|
|
IfGt(LVar2, -60)
|
|
Add(LVar5, 1)
|
|
EndIf
|
|
Else
|
|
IfGt(LVar2, -40)
|
|
Add(LVar5, 1)
|
|
EndIf
|
|
EndIf
|
|
IfEq(LVar5, 2)
|
|
IfEq(LVarA, 2)
|
|
Set(LFlag0, TRUE)
|
|
Return
|
|
Else
|
|
Call(DisablePlayerInput, TRUE)
|
|
Loop(0)
|
|
Wait(1)
|
|
Call(GetPlayerActionState, LVar1)
|
|
IfEq(LVar1, ACTION_STATE_IDLE)
|
|
BreakLoop
|
|
EndIf
|
|
EndLoop
|
|
Wait(10)
|
|
Thread
|
|
Call(SetPlayerJumpscale, Float(1.0))
|
|
Call(GetPlayerPos, LVar2, LVar3, LVar4)
|
|
Call(SetPlayerAnimation, ANIM_Mario1_Flail)
|
|
Call(PlayerJump1, LVar2, LVar3, LVar4, 10)
|
|
Call(SetPlayerAnimation, ANIM_Mario1_Idle)
|
|
EndThread
|
|
Call(PlaySoundAt, SOUND_WHALE_JIGGLE, SOUND_SPACE_DEFAULT, 0, 0, 480)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Panic)
|
|
Wait(10)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_WalkSad)
|
|
Call(DisablePlayerInput, FALSE)
|
|
Add(LVarA, 1)
|
|
EndIf
|
|
EndIf
|
|
IfEq(LVar1, ACTION_STATE_SPIN_POUND)
|
|
Set(LFlag0, TRUE)
|
|
Return
|
|
EndIf
|
|
EndIf
|
|
Call(N(func_802430B4_855224), LVar2)
|
|
IfEq(LVar2, 29)
|
|
IfEq(LVar0, 29)
|
|
Set(LFlag0, TRUE)
|
|
EndIf
|
|
Return
|
|
EndIf
|
|
Wait(1)
|
|
EndLoop
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(D_8024A1F8_85C368) = {
|
|
ExecWait(N(D_80249E84_85BFF4))
|
|
Call(DisablePlayerInput, TRUE)
|
|
Wait(10)
|
|
Call(PlaySoundAt, SOUND_WHALE_JIGGLE, SOUND_SPACE_DEFAULT, 0, 0, 480)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Panic)
|
|
Wait(10)
|
|
Call(DisablePlayerPhysics, TRUE)
|
|
ExecGetTID(N(D_802486EC_85A85C), LVarA)
|
|
IfEq(LFlag0, TRUE)
|
|
Exec(N(D_80249C34_85BDA4))
|
|
EndIf
|
|
Wait(10)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Run)
|
|
Wait(20)
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Run, ANIM_Kolorado_Run, 5, MSG_MAC_Port_0090)
|
|
IfEq(LFlag0, FALSE)
|
|
Exec(N(D_80249D80_85BEF0))
|
|
EndIf
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_kujira, COLLIDER_FLAGS_UPPER_MASK)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_WalkSad)
|
|
Call(MakeLerp, 480, 372, 50, EASING_COS_IN_OUT)
|
|
Label(0)
|
|
Call(UpdateLerp)
|
|
Call(SetNpcPos, NPC_Whale, -73, -53, LVar0)
|
|
IfEq(LVar1, 1)
|
|
Wait(1)
|
|
Goto(0)
|
|
EndIf
|
|
Call(MakeLerp, -73, -220, 50, EASING_COS_IN_OUT)
|
|
Label(1)
|
|
Call(UpdateLerp)
|
|
Call(SetNpcPos, NPC_Whale, LVar0, -53, 372)
|
|
IfEq(LVar1, 1)
|
|
Wait(1)
|
|
Goto(1)
|
|
EndIf
|
|
Wait(20)
|
|
Call(MakeLerp, -53, 10, 50, EASING_COS_IN_OUT)
|
|
Label(2)
|
|
Call(UpdateLerp)
|
|
Call(SetNpcPos, NPC_Whale, -220, LVar0, 372)
|
|
IfEq(LVar1, 1)
|
|
Wait(1)
|
|
Goto(2)
|
|
EndIf
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_HurtStill)
|
|
Wait(50)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Talk)
|
|
KillThread(LVarA)
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Call(GetNpcPos, NPC_Kolorado, LVar3, LVar4, LVar5)
|
|
Add(LVar0, LVar3)
|
|
Add(LVar1, LVar4)
|
|
Add(LVar2, LVar5)
|
|
Div(LVar0, 2)
|
|
Div(LVar1, 2)
|
|
Div(LVar2, 2)
|
|
Call(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamDistance, CAM_DEFAULT, 300)
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 1)
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(90.0))
|
|
Thread
|
|
Wait(5)
|
|
Call(NpcFaceNpc, NPC_Kolorado, NPC_Whale, 0)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Kolorado, 0)
|
|
Call(PlayerFaceNpc, NPC_Kolorado, FALSE)
|
|
EndThread
|
|
Call(SpeakToPlayer, NPC_Kolorado, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_0091)
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Call(GetNpcPos, NPC_Whale, LVar3, LVar4, LVar5)
|
|
Add(LVar0, LVar3)
|
|
Add(LVar1, LVar4)
|
|
Add(LVar2, LVar5)
|
|
Div(LVar0, 2)
|
|
Div(LVar1, 2)
|
|
Div(LVar2, 2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamDistance, CAM_DEFAULT, 475)
|
|
Call(SetCamPosA, CAM_DEFAULT, Float(-63.5), 0)
|
|
Call(SetCamPitch, CAM_DEFAULT, Float(18.5), Float(-5.0))
|
|
Thread
|
|
Wait(5)
|
|
Call(NpcFaceNpc, NPC_Kolorado, NPC_Whale, 0)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Whale, 0)
|
|
Call(PlayerFaceNpc, NPC_Whale, FALSE)
|
|
EndThread
|
|
Exec(N(EVS_80244314))
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Talk, 5, MSG_MAC_Port_0092)
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Call(GetNpcPos, NPC_Kolorado, LVar3, LVar4, LVar5)
|
|
Add(LVar0, LVar3)
|
|
Add(LVar1, LVar4)
|
|
Add(LVar2, LVar5)
|
|
Div(LVar0, 2)
|
|
Div(LVar1, 2)
|
|
Div(LVar2, 2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamDistance, CAM_DEFAULT, 300)
|
|
Call(SetCamPosA, CAM_DEFAULT, 0, 0)
|
|
Call(SetCamPitch, CAM_DEFAULT, Float(18.0), Float(-7.0))
|
|
Thread
|
|
Wait(5)
|
|
Call(NpcFaceNpc, NPC_Kolorado, NPC_Whale, 0)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Kolorado, 0)
|
|
Call(PlayerFaceNpc, NPC_Kolorado, FALSE)
|
|
EndThread
|
|
Call(SpeakToPlayer, NPC_Kolorado, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_0093)
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Call(GetNpcPos, NPC_Whale, LVar3, LVar4, LVar5)
|
|
Add(LVar0, LVar3)
|
|
Add(LVar1, LVar4)
|
|
Add(LVar2, LVar5)
|
|
Div(LVar0, 2)
|
|
Div(LVar1, 2)
|
|
Div(LVar2, 2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamDistance, CAM_DEFAULT, 475)
|
|
Call(SetCamPosA, CAM_DEFAULT, Float(-63.5), 0)
|
|
Call(SetCamPitch, CAM_DEFAULT, Float(18.5), Float(-5.0))
|
|
Thread
|
|
Wait(5)
|
|
Call(NpcFaceNpc, NPC_Kolorado, NPC_Whale, 0)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Whale, 0)
|
|
Call(PlayerFaceNpc, NPC_Whale, FALSE)
|
|
EndThread
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_MAC_Port_0094)
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Call(GetNpcPos, NPC_Kolorado, LVar3, LVar4, LVar5)
|
|
Add(LVar0, LVar3)
|
|
Add(LVar1, LVar4)
|
|
Add(LVar2, LVar5)
|
|
Div(LVar0, 2)
|
|
Div(LVar1, 2)
|
|
Div(LVar2, 2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamDistance, CAM_DEFAULT, 300)
|
|
Call(SetCamPosA, CAM_DEFAULT, 0, 0)
|
|
Call(SetCamPitch, CAM_DEFAULT, Float(18.0), Float(-7.0))
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamDistance, CAM_DEFAULT, 450)
|
|
Thread
|
|
Wait(5)
|
|
Call(NpcFaceNpc, NPC_Kolorado, NPC_Whale, 0)
|
|
Call(NpcFaceNpc, NPC_PARTNER, NPC_Whale, 0)
|
|
Call(PlayerFaceNpc, NPC_Whale, FALSE)
|
|
EndThread
|
|
Set(GB_StoryProgress, STORY_CH5_WHALE_MOUTH_OPEN)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Yell)
|
|
Wait(50)
|
|
Call(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
Call(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(3.0))
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 1)
|
|
Call(WaitForCam, CAM_DEFAULT, Float(1.0))
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 0)
|
|
Call(DisablePlayerPhysics, FALSE)
|
|
Call(DisablePlayerInput, FALSE)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Toad_01) = {
|
|
IfLt(GB_StoryProgress, STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
IfGe(GB_StoryProgress, STORY_CH5_WHALE_MOUTH_OPEN)
|
|
IfLt(GB_StoryProgress, STORY_CH5_ENTERED_WHALE)
|
|
Call(GetNpcAnimation, NPC_Whale, LVar0)
|
|
IfEq(LVar0, ANIM_Kolorado_Yell)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_IdleSad)
|
|
Wait(15)
|
|
EndIf
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Still)
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Talk, 5, MSG_MAC_Port_0097)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Yell)
|
|
Wait(30)
|
|
Return
|
|
Else
|
|
Call(GetNpcAnimation, NPC_Whale, LVar0)
|
|
IfEq(LVar0, ANIM_Kolorado_Yell)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_IdleSad)
|
|
Wait(15)
|
|
EndIf
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Still)
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Talk, 5, MSG_MAC_Port_0098)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Yell)
|
|
Wait(30)
|
|
Return
|
|
EndIf
|
|
Else
|
|
Return
|
|
EndIf
|
|
EndIf
|
|
Call(DisablePlayerPhysics, TRUE)
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_MAC_Port_00B0)
|
|
Call(ShowChoice, MSG_Choice_0010)
|
|
IfEq(LVar0, 1)
|
|
Call(ContinueSpeech, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_MAC_Port_00B2)
|
|
Call(DisablePlayerPhysics, FALSE)
|
|
Return
|
|
Else
|
|
Call(EndSpeech, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5)
|
|
EndIf
|
|
Call(SetNpcJumpscale, NPC_SELF, 0)
|
|
Call(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
|
Call(NpcJump0, NPC_SELF, -220, -30, 372, 20)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_TalkSad)
|
|
Call(InterpNpcYaw, NPC_Whale, 180, 60)
|
|
Set(LVar0, 0)
|
|
Exec(N(D_802484F8_85A668))
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_tt9, COLLIDER_FLAGS_UPPER_MASK)
|
|
Call(DisablePartnerAI, 0)
|
|
Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_FLYING | NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_IGNORE_ENTITY_COLLISION, TRUE)
|
|
Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_GRAVITY, FALSE)
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE)
|
|
Call(GetPlayerPos, LVar3, LVar4, LVar5)
|
|
Call(N(func_80242A90_854C00), 0, LVar0, LVar1, LVar2)
|
|
Exec(N(D_802496C0_85B830))
|
|
Call(SetPlayerJumpscale, Float(1.0))
|
|
Call(PlayerJump, LVar0, LVar1, LVar2, 20)
|
|
Call(SetPlayerAnimation, ANIM_Mario1_Idle)
|
|
Call(InterpPlayerYaw, 90, 0)
|
|
Thread
|
|
Call(N(func_80242C78_854DE8), 0)
|
|
EndThread
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_RUN)
|
|
Call(NpcMoveTo, NPC_PARTNER, LVar3, LVar5, 10)
|
|
Call(N(func_80242A90_854C00), 1, LVar0, LVar1, LVar2)
|
|
Call(SetNpcJumpscale, NPC_PARTNER, Float(1.0))
|
|
Call(NpcJump0, NPC_PARTNER, LVar0, LVar1, LVar2, 20)
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE)
|
|
Call(InterpNpcYaw, NPC_PARTNER, 90, 0)
|
|
Thread
|
|
Call(N(func_80242C78_854DE8), 1)
|
|
EndThread
|
|
IfLt(GB_StoryProgress, STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
|
Call(SpeakToPlayer, NPC_Kolorado, ANIM_Kolorado_Talk, ANIM_Kolorado_Talk, 0, MSG_MAC_Port_00AD)
|
|
Call(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_Run)
|
|
Call(NpcMoveTo, NPC_Kolorado, LVar3, LVar5, 20)
|
|
Call(N(func_80242A90_854C00), 2, LVar0, LVar1, LVar2)
|
|
Call(PlaySoundAtNpc, NPC_Kolorado, SOUND_NPC_JUMP, SOUND_SPACE_DEFAULT)
|
|
Call(SetNpcJumpscale, NPC_Kolorado, Float(1.0))
|
|
Call(NpcJump0, NPC_Kolorado, LVar0, LVar1, LVar2, 20)
|
|
Call(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_Idle)
|
|
Thread
|
|
Call(N(func_80242C78_854DE8), 2)
|
|
EndThread
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_MAC_Port_00AE)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Shout)
|
|
Wait(30)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Idle)
|
|
Else
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_MAC_Port_00B1)
|
|
EndIf
|
|
Set(MF_Unk_01, FALSE)
|
|
Thread
|
|
Call(N(func_80242E84_854FF4), 0)
|
|
Call(GotoMap, Ref("mac_06"), mac_06_ENTRY_0)
|
|
EndThread
|
|
IfLt(GB_StoryProgress, STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
|
Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_MAC_Port_00AF)
|
|
Set(MF_Unk_01, TRUE)
|
|
Else
|
|
Set(MF_Unk_01, TRUE)
|
|
EndIf
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_Toad_01) = {
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Toad_01)))
|
|
Call(SetNpcFlagBits, NPC_Whale, NPC_FLAG_HAS_NO_SPRITE, TRUE)
|
|
Call(SetNpcFlagBits, NPC_Whale, NPC_FLAG_HAS_SHADOW, FALSE)
|
|
Call(InterpNpcYaw, NPC_Whale, 270, 0)
|
|
IfLt(GB_StoryProgress, STORY_CH3_STAR_SPRIT_DEPARTED)
|
|
Call(SetNpcPos, NPC_Whale, NPC_DISPOSE_LOCATION)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_WalkSad)
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_kujira_atari, COLLIDER_FLAGS_UPPER_MASK)
|
|
Return
|
|
EndIf
|
|
IfLt(GB_StoryProgress, STORY_CH4_STAR_SPRIT_DEPARTED)
|
|
Call(SetNpcPos, NPC_Whale, 0, -60, 290)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_WalkSad)
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_kujira_atari, COLLIDER_FLAGS_UPPER_MASK)
|
|
Return
|
|
EndIf
|
|
IfLt(GB_StoryProgress, STORY_CH5_WHALE_MOUTH_OPEN)
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_kujira, COLLIDER_FLAGS_UPPER_MASK)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Run)
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_kujira_atari, COLLIDER_FLAGS_UPPER_MASK)
|
|
Call(SetNpcPos, NPC_Whale, -73, -53, 480)
|
|
Exec(N(D_8024A1F8_85C368))
|
|
Return
|
|
EndIf
|
|
Call(GetEntryID, LVar0)
|
|
IfEq(LVar0, mac_05_ENTRY_2)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Talk)
|
|
Call(SetNpcPos, NPC_Whale, -220, 10, 372)
|
|
Return
|
|
EndIf
|
|
IfLt(GB_StoryProgress, STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Talk)
|
|
Call(SetNpcPos, NPC_Whale, -220, 10, 372)
|
|
Return
|
|
EndIf
|
|
Call(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Still)
|
|
Call(SetNpcPos, NPC_Whale, -220, 10, 372)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcIdle_Kolorado) = {
|
|
Call(DisablePlayerInput, TRUE)
|
|
Loop(0)
|
|
Call(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
|
IfEq(LVar1, -10)
|
|
BreakLoop
|
|
EndIf
|
|
Wait(1)
|
|
EndLoop
|
|
Call(SetNpcFlagBits, NPC_SELF, NPC_FLAG_IGNORE_PLAYER_COLLISION, TRUE)
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_Kolorado_Walk)
|
|
Call(SetNpcSpeed, NPC_SELF, Float(1.5))
|
|
Call(NpcMoveTo, NPC_SELF, -335, 400, 10)
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_Kolorado_Idle)
|
|
Call(NpcFacePlayer, NPC_SELF, 0)
|
|
Loop(0)
|
|
Call(GetSelfVar, 0, LVar0)
|
|
IfEq(LVar0, 1)
|
|
BreakLoop
|
|
EndIf
|
|
Wait(1)
|
|
EndLoop
|
|
Wait(10)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_00B3)
|
|
Thread
|
|
Wait(15 * DT)
|
|
Call(PlayerMoveTo, -340, 380, 20 * DT)
|
|
Call(InterpPlayerYaw, 45, 0)
|
|
EndThread
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_Kolorado_Run)
|
|
Call(SetNpcSpeed, NPC_SELF, Float(8.0 / DT))
|
|
Call(NpcMoveTo, NPC_SELF, -280, 280, 0)
|
|
Call(NpcMoveTo, NPC_SELF, -340, 70, 0)
|
|
Call(NpcMoveTo, NPC_SELF, -260, -140, 0)
|
|
Call(SetNpcSpeed, NPC_SELF, Float(7.0 / DT))
|
|
Call(NpcMoveTo, NPC_SELF, 150, -140, 0)
|
|
Call(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
|
Set(GB_StoryProgress, STORY_CH5_RETURNED_TO_TOAD_TOWN)
|
|
IfEq(GF_MAC01_Defeated_JrTroopa4, FALSE)
|
|
Call(SetNpcVar, NPC_JrTroopa_01, 0, 1)
|
|
EndIf
|
|
Call(DisablePlayerInput, FALSE)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Kolorado) = {
|
|
Switch(GB_StoryProgress)
|
|
CaseLt(STORY_CH5_WHALE_MOUTH_OPEN)
|
|
IfEq(AF_MAC_38, FALSE)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_0083)
|
|
Set(AF_MAC_38, TRUE)
|
|
Else
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_0084)
|
|
EndIf
|
|
CaseLt(STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
Call(SpeakToPlayer, NPC_Kolorado, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_0095)
|
|
Call(SetPlayerAnimation, ANIM_Mario1_Idle)
|
|
Wait(10)
|
|
Call(SetPlayerAnimation, ANIM_MarioW2_SpeakUp)
|
|
Wait(30)
|
|
Call(SpeakToPlayer, NPC_Kolorado, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_0096)
|
|
CaseLt(STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
|
Call(SpeakToPlayer, NPC_Kolorado, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_MAC_Port_00AC)
|
|
EndSwitch
|
|
ExecWait(N(EVS_ArtifactPrompt_Kolorado))
|
|
ExecWait(N(EVS_LetterPrompt_Kolorado))
|
|
ExecWait(N(EVS_LetterReward_Kolorado))
|
|
IfNe(LVarC, 0)
|
|
Return
|
|
EndIf
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_Kolorado) = {
|
|
Switch(GB_StoryProgress)
|
|
CaseLt(STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
|
Call(SetNpcPos, NPC_SELF, -380, -10, 372)
|
|
Call(NpcFaceNpc, NPC_SELF, NPC_Whale, 0)
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Kolorado)))
|
|
CaseEq(STORY_CH5_TRADED_VASE_FOR_SEED)
|
|
Call(SetSelfVar, 0, 0)
|
|
Call(BindNpcIdle, NPC_SELF, Ref(N(EVS_NpcIdle_Kolorado)))
|
|
CaseDefault
|
|
Call(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
|
Call(EnableNpcShadow, NPC_SELF, FALSE)
|
|
EndSwitch
|
|
Return
|
|
End
|
|
};
|
|
|
|
API_CALLABLE(N(func_802431B0_855320)) {
|
|
Npc* npc = get_npc_safe(NPC_JrTroopa_01);
|
|
f32 x = npc->pos.x + 20.0f;
|
|
f32 y = npc->pos.y;
|
|
f32 z = npc->pos.z - 15.0f;
|
|
|
|
if (y < 0.0f) {
|
|
fx_rising_bubble(0, x, y, z, 0.0f);
|
|
sfx_adjust_env_sound_pos(SOUND_LRAW_JR_TROOPA_SWIM, SOUND_SPACE_DEFAULT, x, y, z);
|
|
}
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
EvtScript N(D_8024BCBC_85DE2C) = {
|
|
Loop(0)
|
|
Call(N(func_802431B0_855320))
|
|
Wait(5)
|
|
EndLoop
|
|
Return
|
|
End
|
|
};
|
|
|
|
API_CALLABLE(N(func_80243254_8553C4)) {
|
|
PlayerStatus* playerStatus = &gPlayerStatus;
|
|
Bytecode* args = script->ptrReadPos;
|
|
s32 npcID = evt_get_variable(script, *args++);
|
|
s32 outVar0 = *args++;
|
|
s32 outVar1 = *args++;
|
|
Npc* npc = resolve_npc(script, npcID);
|
|
f32 theta;
|
|
f32 x;
|
|
f32 z;
|
|
|
|
if (npc == NULL) {
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
theta = clamp_angle(atan2(playerStatus->pos.x, playerStatus->pos.z, npc->pos.x, npc->pos.z));
|
|
x = playerStatus->pos.x + (sin_deg(theta) * 40.0f);
|
|
z = playerStatus->pos.z - (cos_deg(theta) * 40.0f);
|
|
evt_set_variable(script, outVar0, x);
|
|
evt_set_variable(script, outVar1, z);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
EvtScript N(EVS_NpcIdle_JrTroopa_01) = {
|
|
Call(SetSelfVar, 0, 0)
|
|
Label(0)
|
|
Call(GetSelfVar, 0, LVar0)
|
|
IfEq(LVar0, 0)
|
|
Wait(1)
|
|
Goto(0)
|
|
EndIf
|
|
Call(DisablePlayerInput, TRUE)
|
|
Wait(45)
|
|
Exec(N(EVS_80244298))
|
|
Call(PlaySound, SOUND_LOOP_JR_TROOPA_SWIM)
|
|
ExecGetTID(N(D_8024BCBC_85DE2C), LVar9)
|
|
Call(SetNpcPos, NPC_SELF, 150, -30, 490)
|
|
Wait(5)
|
|
Thread
|
|
Call(InterpPlayerYaw, 90, 0)
|
|
Call(InterpNpcYaw, NPC_PARTNER, 90, 0)
|
|
Wait(20)
|
|
Call(PlaySoundAtPlayer, SOUND_EMOTE_IDEA, SOUND_SPACE_DEFAULT)
|
|
Call(ShowEmote, 0, EMOTE_EXCLAMATION, 0, 30, EMOTER_PLAYER, 0, 0, 0, 0)
|
|
Call(PlaySoundAtNpc, NPC_PARTNER, SOUND_EMOTE_IDEA, SOUND_SPACE_DEFAULT)
|
|
Call(ShowEmote, NPC_PARTNER, EMOTE_EXCLAMATION, 0, 30, EMOTER_NPC, 0, 0, 0, 0)
|
|
EndThread
|
|
Call(ShowMessageAtScreenPos, MSG_MAC_Port_00B4, 160, 40)
|
|
Call(UseSettingsFrom, CAM_DEFAULT, -100, -10, 490)
|
|
Call(SetPanTarget, CAM_DEFAULT, -100, -10, 490)
|
|
Call(SetCamDistance, CAM_DEFAULT, 700)
|
|
Call(SetCamPitch, CAM_DEFAULT, Float(20.0), Float(-8.0))
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(90.0))
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 1)
|
|
Call(WaitForCam, CAM_DEFAULT, Float(1.0))
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_ChargeTripped)
|
|
Call(SetNpcSpeed, NPC_SELF, Float(2.0))
|
|
Call(NpcMoveTo, NPC_SELF, -40, 490, 0)
|
|
KillThread(LVar9)
|
|
Call(StopSound, SOUND_LOOP_JR_TROOPA_SWIM)
|
|
Call(PlaySoundAtNpc, NPC_SELF, SOUND_JR_TROOPA_SPLASH, SOUND_SPACE_DEFAULT)
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_kujira, COLLIDER_FLAGS_UPPER_MASK)
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o236, COLLIDER_FLAGS_UPPER_MASK)
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_Charge)
|
|
Call(SetNpcJumpscale, NPC_SELF, Float(1.5))
|
|
Call(NpcJump0, NPC_SELF, -100, -10, 490, 15)
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_OutOfBreath)
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_kujira, COLLIDER_FLAGS_UPPER_MASK)
|
|
Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o236, COLLIDER_FLAGS_UPPER_MASK)
|
|
Wait(10)
|
|
Call(SetCamDistance, CAM_DEFAULT, 300)
|
|
Call(SetCamPitch, CAM_DEFAULT, Float(18.0), Float(-7.0))
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 1)
|
|
Wait(10)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_JrTroopa_TiredTalk, ANIM_JrTroopa_OutOfBreath, 0, MSG_MAC_Port_00B5)
|
|
Call(SetCamDistance, CAM_DEFAULT, 225)
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(5.0))
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 1)
|
|
Call(WaitForCam, CAM_DEFAULT, Float(1.0))
|
|
Wait(10)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_JrTroopa_PointTalk, ANIM_JrTroopa_OutOfBreath, 0, MSG_MAC_Port_00B6)
|
|
Call(SetPanTarget, CAM_DEFAULT, -250, -10, 490)
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(0.5))
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 1)
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_Walk)
|
|
Call(NpcMoveTo, NPC_SELF, -255, 490, 75)
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_OutOfBreath)
|
|
Wait(10)
|
|
Thread
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_JrTroopa_RunBack, ANIM_JrTroopa_RunBack, 0, MSG_MAC_Port_00B7)
|
|
EndThread
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_RunBack)
|
|
Wait(15)
|
|
Thread
|
|
Call(N(func_80243254_8553C4), -1, LVar0, LVar2)
|
|
Call(NpcMoveTo, NPC_SELF, LVar0, LVar2, 45)
|
|
EndThread
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 0)
|
|
Call(DisablePlayerInput, FALSE)
|
|
Call(StartBossBattle, SONG_JR_TROOPA_BATTLE)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_JrTroopa_01) = {
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_JrTroopa_Defeated, ANIM_JrTroopa_Defeated, 5, MSG_MAC_Port_00BD)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcDefeat_JrTroopa_01) = {
|
|
Call(DisablePartnerAI, 0)
|
|
Set(GF_MAC01_Defeated_JrTroopa4, TRUE)
|
|
Call(SetPlayerPos, -340, -10, 380)
|
|
Call(GetNpcPos, NPC_PARTNER, LVar0, LVar1, LVar2)
|
|
Call(SetNpcPos, NPC_PARTNER, -360, LVar1, 390)
|
|
Call(SetNpcYaw, NPC_PARTNER, 90)
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE)
|
|
Call(SetNpcPos, NPC_SELF, -300, -10, 380)
|
|
Call(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
|
Call(SetNpcPos, NPC_JrTroopa_02, LVar0, LVar1, LVar2)
|
|
Call(SetNpcYaw, NPC_SELF, 270)
|
|
Call(SetNpcYaw, NPC_JrTroopa_02, 270)
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_Defeated)
|
|
Call(ResetCam, CAM_DEFAULT, Float(90.0))
|
|
Wait(10)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_JrTroopa_Defeated, ANIM_JrTroopa_Defeated, 0, MSG_MAC_Port_00BE)
|
|
Call(FadeOutMusic, 0, 2000)
|
|
Call(EnablePartnerAI)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcHit_JrTroopa_02) = {
|
|
Call(GetOwnerEncounterTrigger, LVar0)
|
|
Switch(LVar0)
|
|
CaseOrEq(ENCOUNTER_TRIGGER_JUMP)
|
|
CaseOrEq(ENCOUNTER_TRIGGER_HAMMER)
|
|
CaseOrEq(ENCOUNTER_TRIGGER_PARTNER)
|
|
Call(DisablePlayerInput, TRUE)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_JrTroopa_Defeated, ANIM_JrTroopa_Defeated, 5, MSG_MAC_Port_00BD)
|
|
Call(DisablePlayerInput, FALSE)
|
|
EndCaseGroup
|
|
EndSwitch
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_JrTroopa_01) = {
|
|
Call(BindNpcIdle, NPC_SELF, Ref(N(EVS_NpcIdle_JrTroopa_01)))
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_JrTroopa_01)))
|
|
Call(BindNpcDefeat, NPC_SELF, Ref(N(EVS_NpcDefeat_JrTroopa_01)))
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_JrTroopa_02) = {
|
|
Call(EnableNpcShadow, NPC_SELF, FALSE)
|
|
Call(SetNpcFlagBits, NPC_SELF, NPC_FLAG_INVISIBLE, TRUE)
|
|
Call(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
|
Call(BindNpcHit, NPC_SELF, Ref(N(EVS_NpcHit_JrTroopa_02)))
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Fuzzipede1) = {
|
|
Switch(GB_StoryProgress)
|
|
#if VERSION_JP
|
|
CaseLt(STORY_CH0_MET_STAR_SPIRITS)
|
|
Set(LVar0, MSG_MAC_Port_00D9)
|
|
Set(LVar1, MSG_MAC_Port_00DC)
|
|
CaseLt(STORY_CH1_MERLIN_REVEALED_KOOPA_BROS)
|
|
Set(LVar0, MSG_MAC_Port_00DA)
|
|
Set(LVar1, MSG_MAC_Port_00DD)
|
|
CaseLt(STORY_CH1_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_00DB)
|
|
Set(LVar1, MSG_MAC_Port_00DE)
|
|
#endif
|
|
CaseLt(STORY_CH2_STAR_SPRIT_DEPARTED)
|
|
IfEq(GF_MAC03_BombedRock, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_004E)
|
|
Set(LVar1, MSG_MAC_Port_005B)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_004F)
|
|
Set(LVar1, MSG_MAC_Port_005C)
|
|
EndIf
|
|
CaseLt(STORY_CH3_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_0050)
|
|
Set(LVar1, MSG_MAC_Port_005D)
|
|
EndSwitch
|
|
Call(SpeakToNpc, NPC_Fishmael, ANIM_Fishmael_Talk, ANIM_Fishmael_Idle, 0, NPC_Fuzzipede, LVar0)
|
|
Call(SpeakToNpc, NPC_Fuzzipede, ANIM_Fuzzipede_Anim24, ANIM_Fuzzipede_Anim04, 0, NPC_Fishmael, LVar1)
|
|
ExecWait(N(EVS_LetterPrompt_Fishmael))
|
|
IfNe(LVarC, 0)
|
|
Return
|
|
EndIf
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Fishmael) = {
|
|
Switch(GB_StoryProgress)
|
|
CaseLt(STORY_CH4_RETURNED_STOREROOM_KEY)
|
|
IfEq(GF_MAC04_StoreroomKeyStolen, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_0051)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_0052)
|
|
EndIf
|
|
CaseLt(STORY_CH4_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0053)
|
|
CaseLt(STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
Set(LVar0, MSG_MAC_Port_0054)
|
|
CaseLt(STORY_CH5_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0055)
|
|
CaseLt(STORY_CH6_ARRIVED_AT_FLOWER_FIELDS)
|
|
Set(LVar0, MSG_MAC_Port_0056)
|
|
CaseLt(STORY_CH6_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_0057)
|
|
CaseLt(STORY_CH7_INVITED_TO_STARBORN_VALLEY)
|
|
Set(LVar0, MSG_MAC_Port_0058)
|
|
CaseLt(STORY_CH7_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0059)
|
|
CaseLt(STORY_EPILOGUE)
|
|
Set(LVar0, MSG_MAC_Port_005A)
|
|
EndSwitch
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Fishmael_Talk, ANIM_Fishmael_Idle, 0, LVar0)
|
|
ExecWait(N(EVS_LetterPrompt_Fishmael))
|
|
IfNe(LVarC, 0)
|
|
Return
|
|
EndIf
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Fuzzipede2) = {
|
|
Switch(GB_StoryProgress)
|
|
CaseLt(STORY_CH5_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_005E)
|
|
CaseLt(STORY_CH6_ARRIVED_AT_FLOWER_FIELDS)
|
|
Set(LVar0, MSG_MAC_Port_005F)
|
|
CaseLt(STORY_CH6_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_0060)
|
|
CaseLt(STORY_CH7_INVITED_TO_STARBORN_VALLEY)
|
|
Set(LVar0, MSG_MAC_Port_0061)
|
|
CaseLt(STORY_CH7_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0062)
|
|
CaseLt(STORY_EPILOGUE)
|
|
Set(LVar0, MSG_MAC_Port_0063)
|
|
EndSwitch
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Fuzzipede_Anim24, ANIM_Fuzzipede_Anim04, 0, LVar0)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_Fishmael) = {
|
|
Call(SetNpcCollisionSize, NPC_SELF, 38, 38)
|
|
IfLt(GB_StoryProgress, STORY_CH3_STAR_SPIRIT_RESCUED)
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Fuzzipede1)))
|
|
Else
|
|
Call(SetSelfEnemyFlagBits, ENEMY_FLAG_400000, 0)
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Fishmael)))
|
|
EndIf
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_Fuzzipede) = {
|
|
Switch(GB_StoryProgress)
|
|
CaseLt(STORY_CH3_STAR_SPIRIT_RESCUED)
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Fuzzipede1)))
|
|
CaseLt(STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
Call(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
|
CaseDefault
|
|
Call(SetSelfEnemyFlagBits, ENEMY_FLAG_400000, 0)
|
|
Call(SetNpcPos, NPC_SELF, -575, 40, 120)
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Fuzzipede2)))
|
|
CaseDefault
|
|
EndSwitch
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Toad_04) = {
|
|
Switch(GB_StoryProgress)
|
|
#if VERSION_JP
|
|
CaseLt(STORY_CH0_MET_STAR_SPIRITS)
|
|
Set(LVar0, MSG_MAC_Port_00CC)
|
|
CaseLt(STORY_CH1_MERLIN_REVEALED_KOOPA_BROS)
|
|
Set(LVar0, MSG_MAC_Port_00CD)
|
|
CaseLt(STORY_CH1_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_00CE)
|
|
#endif
|
|
CaseLt(STORY_CH2_STAR_SPRIT_DEPARTED)
|
|
IfEq(GF_MAC03_BombedRock, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_001A)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_001B)
|
|
EndIf
|
|
CaseLt(STORY_CH3_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_001C)
|
|
CaseLt(STORY_CH4_RETURNED_STOREROOM_KEY)
|
|
IfEq(GF_MAC04_StoreroomKeyStolen, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_001D)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_001E)
|
|
EndIf
|
|
CaseLt(STORY_CH4_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_001F)
|
|
CaseLt(STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
Set(LVar0, MSG_MAC_Port_0020)
|
|
CaseLt(STORY_CH5_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0021)
|
|
CaseLt(STORY_CH6_ARRIVED_AT_FLOWER_FIELDS)
|
|
Set(LVar0, MSG_MAC_Port_0022)
|
|
CaseLt(STORY_CH6_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_0023)
|
|
CaseLt(STORY_CH7_INVITED_TO_STARBORN_VALLEY)
|
|
Set(LVar0, MSG_MAC_Port_0024)
|
|
CaseLt(STORY_CH7_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0025)
|
|
CaseLt(STORY_EPILOGUE)
|
|
Set(LVar0, MSG_MAC_Port_0026)
|
|
EndSwitch
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Blue_Talk, ANIM_Toad_Blue_Idle, 0, LVar0)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_Toad_04) = {
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Toad_04)))
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Toad_05) = {
|
|
Switch(GB_StoryProgress)
|
|
#if VERSION_JP
|
|
CaseLt(STORY_CH0_MET_STAR_SPIRITS)
|
|
Set(LVar0, MSG_MAC_Port_00CF)
|
|
CaseLt(STORY_CH1_MERLIN_REVEALED_KOOPA_BROS)
|
|
Set(LVar0, MSG_MAC_Port_00D0)
|
|
CaseLt(STORY_CH1_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_00D1)
|
|
#endif
|
|
CaseLt(STORY_CH2_STAR_SPRIT_DEPARTED)
|
|
IfEq(GF_MAC03_BombedRock, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_0027)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_0028)
|
|
EndIf
|
|
CaseLt(STORY_CH3_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_0029)
|
|
CaseLt(STORY_CH4_RETURNED_STOREROOM_KEY)
|
|
IfEq(GF_MAC04_StoreroomKeyStolen, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_002A)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_002B)
|
|
EndIf
|
|
CaseLt(STORY_CH4_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_002C)
|
|
CaseLt(STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
Set(LVar0, MSG_MAC_Port_002D)
|
|
CaseLt(STORY_CH5_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_002E)
|
|
CaseLt(STORY_CH6_ARRIVED_AT_FLOWER_FIELDS)
|
|
Set(LVar0, MSG_MAC_Port_002F)
|
|
CaseLt(STORY_CH6_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_0030)
|
|
CaseLt(STORY_CH7_INVITED_TO_STARBORN_VALLEY)
|
|
Set(LVar0, MSG_MAC_Port_0031)
|
|
CaseLt(STORY_CH7_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0032)
|
|
CaseLt(STORY_EPILOGUE)
|
|
Set(LVar0, MSG_MAC_Port_0033)
|
|
EndSwitch
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Blue_Talk, ANIM_Toad_Blue_Idle, 0, LVar0)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_Toad_05) = {
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Toad_05)))
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Toad_06) = {
|
|
Switch(GB_StoryProgress)
|
|
#if VERSION_JP
|
|
CaseLt(STORY_CH0_MET_STAR_SPIRITS)
|
|
Set(LVar0, MSG_MAC_Port_00D3)
|
|
CaseLt(STORY_CH1_MERLIN_REVEALED_KOOPA_BROS)
|
|
Set(LVar0, MSG_MAC_Port_00D4)
|
|
CaseLt(STORY_CH1_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_00D5)
|
|
#endif
|
|
CaseLt(STORY_CH2_STAR_SPRIT_DEPARTED)
|
|
IfEq(GF_MAC03_BombedRock, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_0034)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_0035)
|
|
EndIf
|
|
CaseLt(STORY_CH3_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_0036)
|
|
CaseLt(STORY_CH4_RETURNED_STOREROOM_KEY)
|
|
IfEq(GF_MAC04_StoreroomKeyStolen, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_0037)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_0038)
|
|
EndIf
|
|
CaseLt(STORY_CH4_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0039)
|
|
CaseLt(STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
Set(LVar0, MSG_MAC_Port_003A)
|
|
CaseLt(STORY_CH5_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_003B)
|
|
CaseLt(STORY_CH6_ARRIVED_AT_FLOWER_FIELDS)
|
|
Set(LVar0, MSG_MAC_Port_003C)
|
|
CaseLt(STORY_CH6_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_003D)
|
|
CaseLt(STORY_CH7_INVITED_TO_STARBORN_VALLEY)
|
|
Set(LVar0, MSG_MAC_Port_003E)
|
|
CaseLt(STORY_CH7_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_003F)
|
|
CaseLt(STORY_EPILOGUE)
|
|
Set(LVar0, MSG_MAC_Port_0040)
|
|
EndSwitch
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Red_Talk, ANIM_Toad_Red_Idle, 0, LVar0)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_Toad_06) = {
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Toad_06)))
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Toad_07) = {
|
|
Switch(GB_StoryProgress)
|
|
#if VERSION_JP
|
|
CaseLt(STORY_CH0_MET_STAR_SPIRITS)
|
|
Set(LVar0, MSG_MAC_Port_00D6)
|
|
CaseLt(STORY_CH1_MERLIN_REVEALED_KOOPA_BROS)
|
|
Set(LVar0, MSG_MAC_Port_00D7)
|
|
CaseLt(STORY_CH1_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_00D8)
|
|
#endif
|
|
CaseLt(STORY_CH2_STAR_SPRIT_DEPARTED)
|
|
IfEq(GF_MAC03_BombedRock, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_0041)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_0042)
|
|
EndIf
|
|
CaseLt(STORY_CH3_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_0043)
|
|
CaseLt(STORY_CH4_RETURNED_STOREROOM_KEY)
|
|
IfEq(GF_MAC04_StoreroomKeyStolen, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_0044)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_0045)
|
|
EndIf
|
|
CaseLt(STORY_CH4_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0046)
|
|
CaseLt(STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
Set(LVar0, MSG_MAC_Port_0047)
|
|
CaseLt(STORY_CH5_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0048)
|
|
CaseLt(STORY_CH6_ARRIVED_AT_FLOWER_FIELDS)
|
|
Set(LVar0, MSG_MAC_Port_0049)
|
|
CaseLt(STORY_CH6_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_004A)
|
|
CaseLt(STORY_CH7_INVITED_TO_STARBORN_VALLEY)
|
|
Set(LVar0, MSG_MAC_Port_004B)
|
|
CaseLt(STORY_CH7_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_004C)
|
|
CaseLt(STORY_EPILOGUE)
|
|
Set(LVar0, MSG_MAC_Port_004D)
|
|
EndSwitch
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Yellow_Talk, ANIM_Toad_Yellow_Idle, 0, LVar0)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_Toad_07) = {
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Toad_07)))
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Bartender) = {
|
|
Switch(GB_StoryProgress)
|
|
#if VERSION_JP
|
|
CaseLt(STORY_CH0_MET_STAR_SPIRITS)
|
|
Set(LVar0, MSG_MAC_Port_00C6)
|
|
CaseLt(STORY_CH1_MERLIN_REVEALED_KOOPA_BROS)
|
|
Set(LVar0, MSG_MAC_Port_00C7)
|
|
CaseLt(STORY_CH1_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_00C8)
|
|
#endif
|
|
CaseLt(STORY_CH2_STAR_SPRIT_DEPARTED)
|
|
IfEq(GF_MAC03_BombedRock, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_0000)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_0001)
|
|
EndIf
|
|
CaseLt(STORY_CH3_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_0002)
|
|
CaseLt(STORY_CH4_RETURNED_STOREROOM_KEY)
|
|
IfEq(GF_MAC04_StoreroomKeyStolen, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_0003)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_0004)
|
|
EndIf
|
|
CaseLt(STORY_CH4_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0005)
|
|
CaseLt(STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
Set(LVar0, MSG_MAC_Port_0006)
|
|
CaseLt(STORY_CH5_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0007)
|
|
CaseLt(STORY_CH6_ARRIVED_AT_FLOWER_FIELDS)
|
|
Set(LVar0, MSG_MAC_Port_0008)
|
|
CaseLt(STORY_CH6_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_0009)
|
|
CaseLt(STORY_CH7_INVITED_TO_STARBORN_VALLEY)
|
|
Set(LVar0, MSG_MAC_Port_000A)
|
|
CaseLt(STORY_CH7_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_000B)
|
|
CaseLt(STORY_EPILOGUE)
|
|
Set(LVar0, MSG_MAC_Port_000C)
|
|
EndSwitch
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Bartender_Talk, ANIM_Bartender_Idle, 0, LVar0)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_Bartender) = {
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Bartender)))
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Toad_02) = {
|
|
Switch(GB_StoryProgress)
|
|
#if VERSION_JP
|
|
CaseLt(STORY_CH0_MET_STAR_SPIRITS)
|
|
Set(LVar0, MSG_MAC_Port_00C9)
|
|
CaseLt(STORY_CH1_MERLIN_REVEALED_KOOPA_BROS)
|
|
Set(LVar0, MSG_MAC_Port_00CA)
|
|
CaseLt(STORY_CH1_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_00CB)
|
|
#endif
|
|
CaseLt(STORY_CH2_STAR_SPRIT_DEPARTED)
|
|
IfEq(GF_MAC03_BombedRock, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_000D)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_000E)
|
|
EndIf
|
|
CaseLt(STORY_CH3_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_000F)
|
|
CaseLt(STORY_CH4_RETURNED_STOREROOM_KEY)
|
|
IfEq(GF_MAC04_StoreroomKeyStolen, FALSE)
|
|
Set(LVar0, MSG_MAC_Port_0010)
|
|
Else
|
|
Set(LVar0, MSG_MAC_Port_0011)
|
|
EndIf
|
|
CaseLt(STORY_CH4_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0012)
|
|
CaseLt(STORY_CH5_DEFEATED_FUZZIPEDE)
|
|
Set(LVar0, MSG_MAC_Port_0013)
|
|
CaseLt(STORY_CH5_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0014)
|
|
CaseLt(STORY_CH6_ARRIVED_AT_FLOWER_FIELDS)
|
|
Set(LVar0, MSG_MAC_Port_0015)
|
|
CaseLt(STORY_CH6_STAR_SPIRIT_RESCUED)
|
|
Set(LVar0, MSG_MAC_Port_0016)
|
|
CaseLt(STORY_CH7_INVITED_TO_STARBORN_VALLEY)
|
|
Set(LVar0, MSG_MAC_Port_0017)
|
|
CaseLt(STORY_CH7_STAR_SPRIT_DEPARTED)
|
|
Set(LVar0, MSG_MAC_Port_0018)
|
|
CaseLt(STORY_EPILOGUE)
|
|
Set(LVar0, MSG_MAC_Port_0019)
|
|
EndSwitch
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Red_Talk, ANIM_Toad_Red_Idle, 0, LVar0)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_Toad_02) = {
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Toad_02)))
|
|
Return
|
|
End
|
|
};
|
|
|
|
s32 N(D_8024D704_85F874)[] = {
|
|
104, 0
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_ArtistToad) = {
|
|
Set(GF_MAC05_Met_Simon, TRUE)
|
|
Set(LVarA, 0)
|
|
IfGe(GB_StoryProgress, STORY_CH2_BEGAN_PEACH_MISSION)
|
|
IfEq(AF_MAC_3E, TRUE)
|
|
Set(LVarA, 1)
|
|
EndIf
|
|
EndIf
|
|
IfEq(LVarA, 0)
|
|
IfEq(AF_MAC_3D, FALSE)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_0070)
|
|
Set(AF_MAC_3D, TRUE)
|
|
Else
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_0071)
|
|
EndIf
|
|
Return
|
|
EndIf
|
|
IfEq(GF_MAC05_SimonGaveLyrics, FALSE)
|
|
Call(DisablePartnerAI, 0)
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_0072)
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_Musician_Poet_Write)
|
|
Wait(60)
|
|
Call(SetNpcAnimation, NPC_SELF, ANIM_Musician_Poet_Idle)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_0073)
|
|
Call(SpeakToPlayer, NPC_Chanterelle, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_0074)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_0075)
|
|
EVT_GIVE_KEY_REWARD(ITEM_LYRICS)
|
|
Set(GF_MAC05_SimonGaveLyrics, TRUE)
|
|
Call(EnablePartnerAI)
|
|
Return
|
|
EndIf
|
|
IfEq(GF_MAC05_SimonGotMelody, TRUE)
|
|
IfEq(AF_MAC_3D, FALSE)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_0081)
|
|
Set(AF_MAC_3D, TRUE)
|
|
Else
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_0082)
|
|
Set(AF_MAC_3D, FALSE)
|
|
EndIf
|
|
Return
|
|
EndIf
|
|
Call(FindKeyItem, ITEM_MELODY, LVar0)
|
|
IfEq(LVar0, -1)
|
|
IfEq(AF_MAC_3D, FALSE)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_0076)
|
|
Set(AF_MAC_3D, TRUE)
|
|
Else
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_0077)
|
|
EndIf
|
|
Else
|
|
Call(DisablePartnerAI, 0)
|
|
Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE)
|
|
IfEq(AF_MAC_3D, FALSE)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_0078)
|
|
Set(AF_MAC_3D, TRUE)
|
|
Else
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_0079)
|
|
EndIf
|
|
Set(LVar0, Ref(N(D_8024D704_85F874)))
|
|
Set(LVar1, 10)
|
|
ExecWait(N(EVS_ChooseKeyItem))
|
|
Switch(LVar0)
|
|
CaseEq(-1)
|
|
Call(EnablePartnerAI)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_007A)
|
|
CaseDefault
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_007B)
|
|
Set(GF_MAC05_SimonGotMelody, TRUE)
|
|
Call(SpeakToPlayer, NPC_Chanterelle, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_007C)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_007D)
|
|
Call(SpeakToPlayer, NPC_Chanterelle, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_007E)
|
|
Call(SetNpcFlagBits, NPC_Chanterelle, NPC_FLAG_IGNORE_PLAYER_COLLISION, TRUE)
|
|
Thread
|
|
Call(PlayerMoveTo, 167, -513, 20)
|
|
Call(InterpPlayerYaw, 270, 0)
|
|
Wait(10)
|
|
Call(EnablePartnerAI)
|
|
Call(func_802CF56C, 2)
|
|
EndThread
|
|
Thread
|
|
Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Walk)
|
|
Call(NpcMoveTo, NPC_Chanterelle, 112, -511, 60)
|
|
Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Idle)
|
|
EndThread
|
|
Thread
|
|
Call(SetNpcAnimation, NPC_Bartender, ANIM_Bartender_Walk)
|
|
Call(NpcMoveTo, NPC_Bartender, 70, -540, 45)
|
|
Call(SetNpcAnimation, NPC_Bartender, ANIM_Bartender_Idle)
|
|
EndThread
|
|
Call(UseSettingsFrom, CAM_DEFAULT, 112, 0, -511)
|
|
Call(SetPanTarget, CAM_DEFAULT, 112, 0, -511)
|
|
Call(SetCamDistance, CAM_DEFAULT, Float(320.0))
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(2.0))
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 1)
|
|
Call(WaitForCam, CAM_DEFAULT, Float(1.0))
|
|
Call(InterpNpcYaw, NPC_Toad_02, 90, 0)
|
|
Call(InterpNpcYaw, NPC_ArtistToad, 270, 0)
|
|
Wait(60)
|
|
Exec(N(EVS_802442C4))
|
|
Call(SetPlayerAnimation, ANIM_Mario1_Pray)
|
|
Call(SetNpcAnimation, NPC_Toad_02, ANIM_Toad_Red_Disappointed)
|
|
Call(SetNpcAnimation, NPC_ArtistToad, ANIM_Musician_Poet_Pensive)
|
|
Wait(30)
|
|
Call(SetNpcAnimation, NPC_Bartender, ANIM_Bartender_Talk)
|
|
Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Still)
|
|
Wait(30)
|
|
Call(SetMusicTrack, 0, SONG_POP_DIVA_SONG, 0, 8)
|
|
Call(SetNpcAnimation, NPC_Bartender, ANIM_Bartender_StrumGuitar)
|
|
Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Idle)
|
|
Wait(30 * DT)
|
|
Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Sing)
|
|
Wait(150 * DT)
|
|
Wait(150 * DT)
|
|
Wait(150 * DT)
|
|
Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Idle)
|
|
Call(SetNpcAnimation, NPC_Bartender, ANIM_Bartender_Idle)
|
|
Wait(40 * DT)
|
|
Call(SetNpcAnimation, NPC_Toad_02, ANIM_Toad_Red_Idle)
|
|
Call(SetNpcAnimation, NPC_ArtistToad, ANIM_Musician_Poet_Idle)
|
|
Call(SetPlayerAnimation, ANIM_Mario1_Idle)
|
|
Wait(30 * DT)
|
|
Exec(N(EVS_802442E8))
|
|
Thread
|
|
Call(SetNpcAnimation, NPC_Bartender, ANIM_Bartender_Walk)
|
|
Call(NpcMoveTo, NPC_Bartender, -85, -520, 40)
|
|
Call(SetNpcAnimation, NPC_Bartender, ANIM_Bartender_Idle)
|
|
Call(InterpNpcYaw, NPC_Bartender, 90, 0)
|
|
EndThread
|
|
Thread
|
|
Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Walk)
|
|
Call(NpcMoveTo, NPC_Chanterelle, 208, -530, 60)
|
|
Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Idle)
|
|
Call(InterpNpcYaw, NPC_Chanterelle, 270, 0)
|
|
Call(InterpNpcYaw, NPC_ArtistToad, 90, 0)
|
|
Call(InterpPlayerYaw, 90, 0)
|
|
Wait(10)
|
|
Call(func_802CF56C, 2)
|
|
Call(SetNpcFlagBits, NPC_Chanterelle, NPC_FLAG_IGNORE_PLAYER_COLLISION, FALSE)
|
|
EndThread
|
|
Call(SetCamSpeed, CAM_DEFAULT, Float(3.0))
|
|
Call(PanToTarget, CAM_DEFAULT, 0, 0)
|
|
Wait(60)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Musician_Poet_Talk, ANIM_Musician_Poet_Idle, 0, MSG_MAC_Port_007F)
|
|
Call(SpeakToPlayer, NPC_Chanterelle, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_0080)
|
|
Wait(10)
|
|
Set(LVar0, ITEM_ATTACK_FX_D)
|
|
Set(LVar3, ITEM_TYPE_BADGE)
|
|
ExecWait(N(GiveItemReward))
|
|
Call(AddBadge, LVar0, LVar1)
|
|
Call(SetTattleMessage, NPC_Chanterelle, MSG_NpcTattle_PopDiva_CanSing)
|
|
EndSwitch
|
|
EndIf
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_ArtistToad) = {
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_ArtistToad)))
|
|
Set(AF_MAC_3D, FALSE)
|
|
Set(AF_MAC_3E, FALSE)
|
|
IfEq(GF_MAC05_Met_Simon, TRUE)
|
|
Set(AF_MAC_3E, TRUE)
|
|
EndIf
|
|
Return
|
|
End
|
|
};
|
|
|
|
API_CALLABLE(N(func_8024335C_8554CC)) {
|
|
if (func_8014AD40() == 0) {
|
|
return ApiStatus_DONE2;
|
|
} else {
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
}
|
|
|
|
EvtScript N(D_8024E23C_8603AC) = {
|
|
Set(AF_JAN01_TreeDrop_StarPiece, TRUE)
|
|
Call(SetSelfEnemyFlagBits, ENEMY_FLAG_400000 | ENEMY_FLAG_CANT_INTERACT, 1)
|
|
Call(InterpNpcYaw, NPC_Chanterelle, 270, 0)
|
|
Call(SetMusicTrack, 0, SONG_POP_DIVA_SONG, 1, 8)
|
|
ChildThread
|
|
Wait(30)
|
|
Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Sing)
|
|
Wait(1900)
|
|
Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Idle)
|
|
EndChildThread
|
|
ChildThread
|
|
Wait(30)
|
|
Call(N(func_8024335C_8554CC))
|
|
Set(AF_JAN01_TreeDrop_StarPiece, FALSE)
|
|
EndChildThread
|
|
Loop(0)
|
|
IfEq(AF_JAN01_TreeDrop_StarPiece, FALSE)
|
|
BreakLoop
|
|
EndIf
|
|
Wait(1)
|
|
EndLoop
|
|
Exec(N(EVS_802442E8))
|
|
Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Idle)
|
|
Call(SetSelfEnemyFlagBits, ENEMY_FLAG_400000 | ENEMY_FLAG_CANT_INTERACT, 0)
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInteract_Chanterelle) = {
|
|
IfEq(GF_MAC05_SimonGaveLyrics, FALSE)
|
|
IfEq(AF_MAC_3F, FALSE)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_0068)
|
|
Set(AF_MAC_3F, TRUE)
|
|
Else
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_0069)
|
|
Set(AF_MAC_3F, FALSE)
|
|
EndIf
|
|
Return
|
|
EndIf
|
|
IfEq(GF_MAC05_SimonGotMelody, FALSE)
|
|
IfEq(AF_MAC_3F, FALSE)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_006A)
|
|
Set(AF_MAC_3F, TRUE)
|
|
Else
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_006B)
|
|
Set(AF_MAC_3F, FALSE)
|
|
EndIf
|
|
Return
|
|
EndIf
|
|
IfEq(AF_MAC_3F, FALSE)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_006C)
|
|
Set(AF_MAC_3F, TRUE)
|
|
Else
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_006D)
|
|
EndIf
|
|
Call(ShowChoice, MSG_Choice_000D)
|
|
IfNe(LVar0, 0)
|
|
Call(ContinueSpeech, NPC_SELF, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_006E)
|
|
Else
|
|
Call(ContinueSpeech, NPC_SELF, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_006F)
|
|
Exec(N(D_8024E23C_8603AC))
|
|
EndIf
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_Chanterelle) = {
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Chanterelle)))
|
|
IfEq(GF_MAC05_SimonGotMelody, TRUE)
|
|
Call(SetTattleMessage, NPC_Chanterelle, MSG_NpcTattle_PopDiva_CanSing)
|
|
EndIf
|
|
Return
|
|
End
|
|
};
|
|
|
|
API_CALLABLE(N(CheckTradeEventTime)) {
|
|
script->varTable[0] = (s32) ((gPlayerData.frameCounter - gPlayerData.tradeEventStartTime) / 3600) < script->varTable[0];
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(N(GetTradeEventItemCount)) {
|
|
script->varTable[0] = get_item_count();
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
EvtScript N(EVS_NpcInteract_Toad_03) = {
|
|
Set(LVar0, 7)
|
|
Call(N(CheckTradeEventTime))
|
|
IfEq(LVar0, 0)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_MAC_Port_00BF)
|
|
Return
|
|
EndIf
|
|
Call(N(GetTradeEventItemCount))
|
|
IfEq(LVar0, 0)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_MAC_Port_00C0)
|
|
Wait(10)
|
|
Call(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
|
Call(PlaySoundAtNpc, NPC_SELF, SOUND_SMOKE_BURST, SOUND_SPACE_DEFAULT)
|
|
PlayEffect(EFFECT_BIG_SMOKE_PUFF, LVar0, LVar1, LVar2, 1, 1, 1, 1)
|
|
Call(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
|
Set(GF_TradingEvent3_Active, FALSE)
|
|
Return
|
|
EndIf
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_MAC_Port_00C1)
|
|
Set(LVar0, 0)
|
|
Set(LVar1, 11)
|
|
ExecWait(N(EVS_ChooseItem))
|
|
Switch(LVar0)
|
|
CaseEq(-1)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_MAC_Port_00C5)
|
|
Return
|
|
CaseEq(ITEM_COCONUT)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_MAC_Port_00C2)
|
|
EVT_GIVE_CONSUMABLE_REWARD(ITEM_YUMMY_MEAL)
|
|
Wait(10)
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_MAC_Port_00C3)
|
|
Wait(10)
|
|
Call(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
|
Call(PlaySoundAtNpc, NPC_SELF, SOUND_SMOKE_BURST, SOUND_SPACE_DEFAULT)
|
|
PlayEffect(EFFECT_BIG_SMOKE_PUFF, LVar0, LVar1, LVar2, 1, 1, 1, 1)
|
|
Call(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
|
Set(GF_TradingEvent3_Active, FALSE)
|
|
Add(GB_TradingEvent_Count, 1)
|
|
CaseDefault
|
|
Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_MAC_Port_00C4)
|
|
EndSwitch
|
|
Return
|
|
End
|
|
};
|
|
|
|
EvtScript N(EVS_NpcInit_TradeEventToad) = {
|
|
IfNe(GF_TradingEvent3_Active, FALSE)
|
|
Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Toad_03)))
|
|
Else
|
|
Call(RemoveNpc, NPC_SELF)
|
|
EndIf
|
|
Return
|
|
End
|
|
};
|
|
|
|
NpcData N(NpcData_Toad_01) = {
|
|
.id = NPC_Whale,
|
|
.pos = { NPC_DISPOSE_LOCATION },
|
|
.yaw = 270,
|
|
.init = &N(EVS_NpcInit_Toad_01),
|
|
.settings = &N(NpcSettings_Whale),
|
|
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_IGNORE_WORLD_COLLISION | ENEMY_FLAG_IGNORE_PLAYER_COLLISION | ENEMY_FLAG_IGNORE_ENTITY_COLLISION | ENEMY_FLAG_FLYING | ENEMY_FLAG_400000,
|
|
.drops = NO_DROPS,
|
|
.animations = TOAD_RED_ANIMS,
|
|
.tattle = MSG_NpcTattle_Whale,
|
|
};
|
|
|
|
NpcData N(NpcData_Kolorado) = {
|
|
.id = NPC_Kolorado,
|
|
.pos = { NPC_DISPOSE_LOCATION },
|
|
.yaw = 270,
|
|
.init = &N(EVS_NpcInit_Kolorado),
|
|
.settings = &N(NpcSettings_Kolorado),
|
|
.flags = COMMON_PASSIVE_FLAGS,
|
|
.drops = NO_DROPS,
|
|
.animations = KOLORADO_ANIMS,
|
|
.tattle = MSG_NpcTattle_Kolorado,
|
|
};
|
|
|
|
NpcData N(NpcData_Fishmael) = {
|
|
.id = NPC_Fishmael,
|
|
.pos = { 370.0f, -10.0f, -115.0f },
|
|
.yaw = 270,
|
|
.init = &N(EVS_NpcInit_Fishmael),
|
|
.settings = &N(NpcSettings_Toad_Stationary),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_400000,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_Fishmael_Idle,
|
|
},
|
|
.tattle = MSG_NpcTattle_Fishmael,
|
|
};
|
|
|
|
AnimID N(ExtraAnims_Fuzzipede)[] = {
|
|
ANIM_Fuzzipede_Anim00,
|
|
ANIM_Fuzzipede_Anim04,
|
|
ANIM_Fuzzipede_Anim08,
|
|
ANIM_Fuzzipede_Anim0A,
|
|
ANIM_Fuzzipede_Anim24,
|
|
ANIM_LIST_END
|
|
};
|
|
|
|
NpcData N(NpcData_Fuzzipede) = {
|
|
.id = NPC_Fuzzipede,
|
|
.pos = { 320.0f, -10.0f, -115.0f },
|
|
.yaw = 90,
|
|
.init = &N(EVS_NpcInit_Fuzzipede),
|
|
.settings = &N(NpcSettings_Toad_Stationary),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_400000,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_Fuzzipede_Anim04,
|
|
},
|
|
.extraAnimations = N(ExtraAnims_Fuzzipede),
|
|
.tattle = MSG_NpcTattle_Fuzzipede,
|
|
};
|
|
|
|
AnimID N(ExtraAnims_JrTroopa)[] = {
|
|
ANIM_JrTroopa_Still,
|
|
ANIM_JrTroopa_PointStill,
|
|
ANIM_JrTroopa_Idle,
|
|
ANIM_JrTroopa_OutOfBreath,
|
|
ANIM_JrTroopa_Walk,
|
|
ANIM_JrTroopa_Charge,
|
|
ANIM_JrTroopa_ChargeArmsUp,
|
|
ANIM_JrTroopa_ChargeTripped,
|
|
ANIM_JrTroopa_RunBack,
|
|
ANIM_JrTroopa_Defeated,
|
|
ANIM_JrTroopa_TiredTalk,
|
|
ANIM_JrTroopa_PointTalk,
|
|
ANIM_LIST_END
|
|
};
|
|
|
|
NpcData N(NpcData_JrTroopa_01)[] = {
|
|
{
|
|
.id = NPC_JrTroopa_01,
|
|
.pos = { NPC_DISPOSE_LOCATION },
|
|
.yaw = 270,
|
|
.init = &N(EVS_NpcInit_JrTroopa_01),
|
|
.settings = &N(NpcSettings_JrTroopa_01),
|
|
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_IGNORE_WORLD_COLLISION | ENEMY_FLAG_IGNORE_ENTITY_COLLISION | ENEMY_FLAG_FLYING | ENEMY_FLAG_40000 | ENEMY_FLAG_400000,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_JrTroopa_Idle,
|
|
.walk = ANIM_JrTroopa_Walk,
|
|
.run = ANIM_JrTroopa_Walk,
|
|
.chase = ANIM_JrTroopa_Walk,
|
|
.anim_4 = ANIM_JrTroopa_Idle,
|
|
.anim_5 = ANIM_JrTroopa_Idle,
|
|
.death = ANIM_JrTroopa_Idle,
|
|
.hit = ANIM_JrTroopa_Idle,
|
|
.anim_8 = ANIM_JrTroopa_Idle,
|
|
.anim_9 = ANIM_JrTroopa_Idle,
|
|
.anim_A = ANIM_JrTroopa_Idle,
|
|
.anim_B = ANIM_JrTroopa_Idle,
|
|
.anim_C = ANIM_JrTroopa_Idle,
|
|
.anim_D = ANIM_JrTroopa_Idle,
|
|
.anim_E = ANIM_JrTroopa_Idle,
|
|
.anim_F = ANIM_JrTroopa_Idle,
|
|
},
|
|
.extraAnimations = N(ExtraAnims_JrTroopa),
|
|
.tattle = MSG_NpcTattle_JrTroopa,
|
|
},
|
|
{
|
|
.id = NPC_JrTroopa_02,
|
|
.pos = { NPC_DISPOSE_LOCATION },
|
|
.yaw = 270,
|
|
.init = &N(EVS_NpcInit_JrTroopa_02),
|
|
.settings = &N(NpcSettings_JrTroopa_01),
|
|
.flags = ENEMY_FLAG_4 | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_IGNORE_WORLD_COLLISION | ENEMY_FLAG_IGNORE_PLAYER_COLLISION | ENEMY_FLAG_IGNORE_ENTITY_COLLISION | ENEMY_FLAG_FLYING | ENEMY_FLAG_40000 | ENEMY_FLAG_100000 | ENEMY_FLAG_400000 | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_SPIN,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_JrTroopa_Idle,
|
|
.walk = ANIM_JrTroopa_Walk,
|
|
.run = ANIM_JrTroopa_Walk,
|
|
.chase = ANIM_JrTroopa_Walk,
|
|
.anim_4 = ANIM_JrTroopa_Idle,
|
|
.anim_5 = ANIM_JrTroopa_Idle,
|
|
.death = ANIM_JrTroopa_Idle,
|
|
.hit = ANIM_JrTroopa_Idle,
|
|
.anim_8 = ANIM_JrTroopa_Idle,
|
|
.anim_9 = ANIM_JrTroopa_Idle,
|
|
.anim_A = ANIM_JrTroopa_Idle,
|
|
.anim_B = ANIM_JrTroopa_Idle,
|
|
.anim_C = ANIM_JrTroopa_Idle,
|
|
.anim_D = ANIM_JrTroopa_Idle,
|
|
.anim_E = ANIM_JrTroopa_Idle,
|
|
.anim_F = ANIM_JrTroopa_Idle,
|
|
},
|
|
.extraAnimations = N(ExtraAnims_JrTroopa),
|
|
.tattle = MSG_NpcTattle_JrTroopa,
|
|
},
|
|
};
|
|
|
|
NpcData N(NpcData_Toad_04)[] = {
|
|
{
|
|
.id = NPC_Toad_04,
|
|
.pos = { 320.0f, 0.0f, -300.0f },
|
|
.yaw = 270,
|
|
.init = &N(EVS_NpcInit_Toad_04),
|
|
.settings = &N(NpcSettings_Toad_Stationary),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_NO_SHADOW_RAYCAST,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_Toad_Blue_Idle,
|
|
.walk = ANIM_Toad_Blue_Walk,
|
|
.run = ANIM_Toad_Blue_Run,
|
|
.chase = ANIM_Toad_Blue_Run,
|
|
.anim_4 = ANIM_Toad_Blue_Idle,
|
|
.anim_5 = ANIM_Toad_Blue_Idle,
|
|
.death = ANIM_Toad_Blue_Disappointed,
|
|
.hit = ANIM_Toad_Blue_Disappointed,
|
|
.anim_8 = ANIM_Toad_Blue_Run,
|
|
.anim_9 = ANIM_Toad_Blue_Run,
|
|
.anim_A = ANIM_Toad_Blue_Run,
|
|
.anim_B = ANIM_Toad_Blue_Run,
|
|
.anim_C = ANIM_Toad_Blue_Run,
|
|
.anim_D = ANIM_Toad_Blue_Run,
|
|
.anim_E = ANIM_Toad_Blue_Run,
|
|
.anim_F = ANIM_Toad_Blue_Run,
|
|
},
|
|
.tattle = MSG_NpcTattle_MAC_PortGuide,
|
|
},
|
|
{
|
|
.id = NPC_Toad_05,
|
|
.pos = { -330.0f, -10.0f, -90.0f },
|
|
.yaw = 90,
|
|
.init = &N(EVS_NpcInit_Toad_05),
|
|
.settings = &N(NpcSettings_Toad_Stationary),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_NO_SHADOW_RAYCAST,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_Toad_Blue_Idle,
|
|
.walk = ANIM_Toad_Blue_Walk,
|
|
.run = ANIM_Toad_Blue_Run,
|
|
.chase = ANIM_Toad_Blue_Run,
|
|
.anim_4 = ANIM_Toad_Blue_Idle,
|
|
.anim_5 = ANIM_Toad_Blue_Idle,
|
|
.death = ANIM_Toad_Blue_Disappointed,
|
|
.hit = ANIM_Toad_Blue_Disappointed,
|
|
.anim_8 = ANIM_Toad_Blue_Run,
|
|
.anim_9 = ANIM_Toad_Blue_Run,
|
|
.anim_A = ANIM_Toad_Blue_Run,
|
|
.anim_B = ANIM_Toad_Blue_Run,
|
|
.anim_C = ANIM_Toad_Blue_Run,
|
|
.anim_D = ANIM_Toad_Blue_Run,
|
|
.anim_E = ANIM_Toad_Blue_Run,
|
|
.anim_F = ANIM_Toad_Blue_Run,
|
|
},
|
|
.tattle = MSG_NpcTattle_MAC_SeaLover,
|
|
},
|
|
{
|
|
.id = NPC_Toad_06,
|
|
.pos = { -50.0f, 0.0f, -400.0f },
|
|
.yaw = 270,
|
|
.init = &N(EVS_NpcInit_Toad_06),
|
|
.settings = &N(NpcSettings_Toad_Stationary),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_NO_SHADOW_RAYCAST,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_Toad_Red_Idle,
|
|
.walk = ANIM_Toad_Red_Walk,
|
|
.run = ANIM_Toad_Red_Run,
|
|
.chase = ANIM_Toad_Red_Run,
|
|
.anim_4 = ANIM_Toad_Red_Idle,
|
|
.anim_5 = ANIM_Toad_Red_Idle,
|
|
.death = ANIM_Toad_Red_Disappointed,
|
|
.hit = ANIM_Toad_Red_Disappointed,
|
|
.anim_8 = ANIM_Toad_Red_Run,
|
|
.anim_9 = ANIM_Toad_Red_Run,
|
|
.anim_A = ANIM_Toad_Red_Run,
|
|
.anim_B = ANIM_Toad_Red_Run,
|
|
.anim_C = ANIM_Toad_Red_Run,
|
|
.anim_D = ANIM_Toad_Red_Run,
|
|
.anim_E = ANIM_Toad_Red_Run,
|
|
.anim_F = ANIM_Toad_Red_Run,
|
|
},
|
|
.tattle = MSG_NpcTattle_MAC_WellTraveledToad,
|
|
},
|
|
{
|
|
.id = NPC_Toad_07,
|
|
.pos = { 200.0f, 0.0f, -220.0f },
|
|
.yaw = 270,
|
|
.territory = {
|
|
.patrol = {
|
|
.isFlying = TRUE,
|
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
|
.numPoints = 2,
|
|
.points = {
|
|
{ -120, 0, -220 },
|
|
{ 200, 0, -220 },
|
|
},
|
|
.detectShape = SHAPE_CYLINDER,
|
|
.detectPos = { 180, 20, -435 },
|
|
.detectSize = { 10 },
|
|
}
|
|
},
|
|
.init = &N(EVS_NpcInit_Toad_07),
|
|
.settings = &N(NpcSettings_Toad_Stationary),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_NO_SHADOW_RAYCAST,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_Toad_Yellow_Idle,
|
|
.walk = ANIM_Toad_Yellow_Walk,
|
|
.run = ANIM_Toad_Yellow_Run,
|
|
.chase = ANIM_Toad_Yellow_Run,
|
|
.anim_4 = ANIM_Toad_Yellow_Idle,
|
|
.anim_5 = ANIM_Toad_Yellow_Idle,
|
|
.death = ANIM_Toad_Yellow_Disappointed,
|
|
.hit = ANIM_Toad_Yellow_Disappointed,
|
|
.anim_8 = ANIM_Toad_Yellow_Run,
|
|
.anim_9 = ANIM_Toad_Yellow_Run,
|
|
.anim_A = ANIM_Toad_Yellow_Run,
|
|
.anim_B = ANIM_Toad_Yellow_Run,
|
|
.anim_C = ANIM_Toad_Yellow_Run,
|
|
.anim_D = ANIM_Toad_Yellow_Run,
|
|
.anim_E = ANIM_Toad_Yellow_Run,
|
|
.anim_F = ANIM_Toad_Yellow_Run,
|
|
},
|
|
.tattle = MSG_NpcTattle_MAC_SingsOffKey,
|
|
},
|
|
};
|
|
|
|
NpcData N(NpcData_Bartender)[] = {
|
|
{
|
|
.id = NPC_Bartender,
|
|
.pos = { -85.0f, 0.0f, -520.0f },
|
|
.yaw = 90,
|
|
.init = &N(EVS_NpcInit_Bartender),
|
|
.settings = &N(NpcSettings_Toad_Stationary),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_NO_SHADOW_RAYCAST,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_Bartender_Idle,
|
|
.walk = ANIM_Bartender_Idle,
|
|
.run = ANIM_Bartender_Idle,
|
|
.chase = ANIM_Bartender_Idle,
|
|
.anim_4 = ANIM_Bartender_Idle,
|
|
.anim_5 = ANIM_Bartender_Idle,
|
|
.death = ANIM_Bartender_Idle,
|
|
.hit = ANIM_Bartender_Idle,
|
|
.anim_8 = ANIM_Bartender_Idle,
|
|
.anim_9 = ANIM_Bartender_Idle,
|
|
.anim_A = ANIM_Bartender_Idle,
|
|
.anim_B = ANIM_Bartender_Idle,
|
|
.anim_C = ANIM_Bartender_Idle,
|
|
.anim_D = ANIM_Bartender_Idle,
|
|
.anim_E = ANIM_Bartender_Idle,
|
|
.anim_F = ANIM_Bartender_Idle,
|
|
},
|
|
.tattle = MSG_NpcTattle_Club64_Bartender,
|
|
},
|
|
{
|
|
.id = NPC_Toad_02,
|
|
.pos = { 30.0f, 0.0f, -570.0f },
|
|
.yaw = 270,
|
|
.init = &N(EVS_NpcInit_Toad_02),
|
|
.settings = &N(NpcSettings_Toad_Stationary),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_NO_SHADOW_RAYCAST,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_Toad_Red_Idle,
|
|
.walk = ANIM_Toad_Red_Walk,
|
|
.run = ANIM_Toad_Red_Run,
|
|
.chase = ANIM_Toad_Red_Run,
|
|
.anim_4 = ANIM_Toad_Red_Idle,
|
|
.anim_5 = ANIM_Toad_Red_Idle,
|
|
.death = ANIM_Toad_Red_Disappointed,
|
|
.hit = ANIM_Toad_Red_Disappointed,
|
|
.anim_8 = ANIM_Toad_Red_Run,
|
|
.anim_9 = ANIM_Toad_Red_Run,
|
|
.anim_A = ANIM_Toad_Red_Run,
|
|
.anim_B = ANIM_Toad_Red_Run,
|
|
.anim_C = ANIM_Toad_Red_Run,
|
|
.anim_D = ANIM_Toad_Red_Run,
|
|
.anim_E = ANIM_Toad_Red_Run,
|
|
.anim_F = ANIM_Toad_Red_Run,
|
|
},
|
|
.tattle = MSG_NpcTattle_Club64_Waiter,
|
|
},
|
|
{
|
|
.id = NPC_Chanterelle,
|
|
.pos = { 208.0f, 0.0f, -530.0f },
|
|
.yaw = 270,
|
|
.init = &N(EVS_NpcInit_Chanterelle),
|
|
.settings = &N(NpcSettings_Toad_Stationary),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_NO_SHADOW_RAYCAST,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_Chanterelle_Idle,
|
|
.walk = ANIM_Chanterelle_Still,
|
|
.run = ANIM_Chanterelle_Still,
|
|
.chase = ANIM_Chanterelle_Still,
|
|
.anim_4 = ANIM_Chanterelle_Still,
|
|
.anim_5 = ANIM_Chanterelle_Still,
|
|
.death = ANIM_Chanterelle_Still,
|
|
.hit = ANIM_Chanterelle_Still,
|
|
.anim_8 = ANIM_Chanterelle_Still,
|
|
.anim_9 = ANIM_Chanterelle_Still,
|
|
.anim_A = ANIM_Chanterelle_Still,
|
|
.anim_B = ANIM_Chanterelle_Still,
|
|
.anim_C = ANIM_Chanterelle_Still,
|
|
.anim_D = ANIM_Chanterelle_Still,
|
|
.anim_E = ANIM_Chanterelle_Still,
|
|
.anim_F = ANIM_Chanterelle_Still,
|
|
},
|
|
.tattle = MSG_NpcTattle_PopDiva_CantSing,
|
|
},
|
|
{
|
|
.id = NPC_ArtistToad,
|
|
.pos = { 158.0f, 0.0f, -555.0f },
|
|
.yaw = 90,
|
|
.init = &N(EVS_NpcInit_ArtistToad),
|
|
.settings = &N(NpcSettings_Toad_Stationary),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_NO_SHADOW_RAYCAST,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_Musician_Poet_Idle,
|
|
.walk = ANIM_Musician_Poet_Idle,
|
|
.run = ANIM_Musician_Poet_Idle,
|
|
.chase = ANIM_Musician_Poet_Idle,
|
|
.anim_4 = ANIM_Musician_Poet_Idle,
|
|
.anim_5 = ANIM_Musician_Poet_Idle,
|
|
.death = ANIM_Musician_Poet_Idle,
|
|
.hit = ANIM_Musician_Poet_Idle,
|
|
.anim_8 = ANIM_Musician_Poet_Idle,
|
|
.anim_9 = ANIM_Musician_Poet_Idle,
|
|
.anim_A = ANIM_Musician_Poet_Idle,
|
|
.anim_B = ANIM_Musician_Poet_Idle,
|
|
.anim_C = ANIM_Musician_Poet_Idle,
|
|
.anim_D = ANIM_Musician_Poet_Idle,
|
|
.anim_E = ANIM_Musician_Poet_Idle,
|
|
.anim_F = ANIM_Musician_Poet_Idle,
|
|
},
|
|
.tattle = MSG_NpcTattle_MasterPoet,
|
|
},
|
|
{
|
|
.id = NPC_TradeEventToad,
|
|
.pos = { 92.0f, 0.0f, -500.0f },
|
|
.yaw = 90,
|
|
.init = &N(EVS_NpcInit_TradeEventToad),
|
|
.settings = &N(NpcSettings_Toad_Stationary),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_NO_SHADOW_RAYCAST | ENEMY_FLAG_10000 | ENEMY_FLAG_100000,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_Toad_Pink_Idle,
|
|
.walk = ANIM_Toad_Pink_Walk,
|
|
.run = ANIM_Toad_Pink_Run,
|
|
.chase = ANIM_Toad_Pink_Run,
|
|
.anim_4 = ANIM_Toad_Pink_Idle,
|
|
.anim_5 = ANIM_Toad_Pink_Idle,
|
|
.death = ANIM_Toad_Pink_Idle,
|
|
.hit = ANIM_Toad_Pink_Disappointed,
|
|
.anim_8 = ANIM_Toad_Pink_Run,
|
|
.anim_9 = ANIM_Toad_Pink_Run,
|
|
.anim_A = ANIM_Toad_Pink_Run,
|
|
.anim_B = ANIM_Toad_Pink_Run,
|
|
.anim_C = ANIM_Toad_Pink_Run,
|
|
.anim_D = ANIM_Toad_Pink_Run,
|
|
.anim_E = ANIM_Toad_Pink_Run,
|
|
.anim_F = ANIM_Toad_Pink_Run,
|
|
},
|
|
.tattle = MSG_NpcTattle_PrizeToad,
|
|
},
|
|
};
|
|
|
|
NpcData N(NpcData_ChuckQuizmo) = {
|
|
.id = NPC_ChuckQuizmo,
|
|
.pos = { 472.0f, 0.0f, -230.0f },
|
|
.yaw = 90,
|
|
.initVarCount = 1,
|
|
.initVar = { .bytes = { 0, QUIZ_AREA_MAC, QUIZ_COUNT_MAC, QUIZ_MAP_MAC_05 }},
|
|
.settings = &N(NpcSettings_ChuckQuizmo),
|
|
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_NO_SHADOW_RAYCAST | ENEMY_FLAG_HAS_NO_SPRITE,
|
|
.drops = NO_DROPS,
|
|
.animations = {
|
|
.idle = ANIM_ChuckQuizmo_Idle,
|
|
.walk = ANIM_ChuckQuizmo_Walk,
|
|
.run = ANIM_ChuckQuizmo_Run,
|
|
.chase = ANIM_ChuckQuizmo_Run,
|
|
.anim_4 = ANIM_ChuckQuizmo_Idle,
|
|
.anim_5 = ANIM_ChuckQuizmo_Idle,
|
|
.death = ANIM_ChuckQuizmo_Still,
|
|
.hit = ANIM_ChuckQuizmo_Still,
|
|
.anim_8 = ANIM_ChuckQuizmo_Run,
|
|
.anim_9 = ANIM_ChuckQuizmo_Run,
|
|
.anim_A = ANIM_ChuckQuizmo_Run,
|
|
.anim_B = ANIM_ChuckQuizmo_Run,
|
|
.anim_C = ANIM_ChuckQuizmo_Run,
|
|
.anim_D = ANIM_ChuckQuizmo_Run,
|
|
.anim_E = ANIM_ChuckQuizmo_Run,
|
|
.anim_F = ANIM_ChuckQuizmo_Run,
|
|
},
|
|
.tattle = MSG_NpcTattle_ChuckQuizmo,
|
|
};
|
|
|
|
NpcGroupList N(NpcSetA) = {
|
|
NPC_GROUP(N(NpcData_Fuzzipede)),
|
|
NPC_GROUP(N(NpcData_Fishmael)),
|
|
NPC_GROUP(N(NpcData_Bartender)),
|
|
NPC_GROUP(N(NpcData_Toad_04)),
|
|
NPC_GROUP(N(NpcData_Toad_01)),
|
|
NPC_GROUP(N(NpcData_ChuckQuizmo)),
|
|
{}
|
|
};
|
|
|
|
NpcGroupList N(NpcSetB) = {
|
|
NPC_GROUP(N(NpcData_Kolorado)),
|
|
NPC_GROUP(N(NpcData_Fuzzipede)),
|
|
NPC_GROUP(N(NpcData_Fishmael)),
|
|
NPC_GROUP(N(NpcData_Bartender)),
|
|
NPC_GROUP(N(NpcData_Toad_04)),
|
|
NPC_GROUP(N(NpcData_Toad_01)),
|
|
{}
|
|
};
|
|
|
|
NpcGroupList N(NpcSetC) = {
|
|
NPC_GROUP(N(NpcData_JrTroopa_01), BTL_KMR_3_FORMATION_05),
|
|
NPC_GROUP(N(NpcData_Kolorado)),
|
|
NPC_GROUP(N(NpcData_Fishmael)),
|
|
NPC_GROUP(N(NpcData_Bartender)),
|
|
NPC_GROUP(N(NpcData_Toad_04)),
|
|
NPC_GROUP(N(NpcData_Toad_01)),
|
|
{}
|
|
};
|