* couple jan

* pipe includes cleanup

* jan_13 checkpoint

* Rafael checkpoint

* jan_05 ok

* jan_0X done

* fix spear guy name

* all jan ok

* jan done

* no halves

---------

Co-authored-by: HailSanta <Hail2Santa@gmail.com>
This commit is contained in:
HailSanta 2023-02-10 03:00:28 -05:00 committed by GitHub
parent 6c606383e8
commit 768e88f20d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
507 changed files with 14538 additions and 6254 deletions

View File

@ -39,7 +39,7 @@ typedef struct DeadEnemy {
/* 0x06C */ s32 varTable[16];
/* 0x0AC */ s32 aiDetectFlags;
/* 0x0B0 */ s32 aiFlags;
/* 0x0B4 */ s8 aiPaused;
/* 0x0B4 */ s8 aiSuspendTime;
/* 0x0B5 */ s8 instigatorValue;
/* 0x0B6 */ char unk_B6[2];
/* 0x0B8 */ EvtScript* unk_B8; // some bytecode

View File

@ -502,7 +502,8 @@ enum Emotes {
enum Emoters {
EMOTER_PLAYER = 0,
EMOTER_NPC = 1
EMOTER_NPC = 1,
EMOTER_POS = 2,
};
enum EasingType {
@ -1831,9 +1832,9 @@ enum ItemIDs {
ITEM_STAR_STONE = 0x0000006C,
ITEM_SNEAKY_PARASOL = 0x0000006D,
ITEM_KOOT_KOOPA_LEGENDS = 0x0000006E,
ITEM_KOOT_MERLUVLEE_AUTOGRAPH = 0x0000006F,
ITEM_KOOT_LUIGIS_AUTOGRAPH = 0x0000006F,
ITEM_KOOT_EMPTY_WALLET = 0x00000070,
ITEM_KOOT_LUIGI_AUTOGRAPH = 0x00000071,
ITEM_KOOT_MERLUVLEES_AUTOGRAPH = 0x00000071,
ITEM_KOOT_SHELL = 0x00000072,
ITEM_KOOT_OLD_PHOTO = 0x00000073,
ITEM_KOOT_GLASSES = 0x00000074,
@ -5023,11 +5024,18 @@ enum EnemyFlags {
ENEMY_FLAG_80000000 = 0x80000000,
};
#define COMMON_PASSIVE_FLAGS \
ENEMY_FLAG_PASSIVE \
| ENEMY_FLAG_ENABLE_HIT_SCRIPT \
| ENEMY_FLAG_100 \
| ENEMY_FLAG_400 \
| ENEMY_FLAG_800
// used with enemy->aiFlags
enum EnemyAIFlags {
ENEMY_AI_FLAG_1 = 0x00000001,
ENEMY_AI_FLAG_2 = 0x00000002, // do not move; do not sense player
ENEMY_AI_FLAG_4 = 0x00000004, // pause ai? reset ai?
ENEMY_AI_FLAG_SUSPEND = 0x00000004,
ENEMY_AI_FLAG_8 = 0x00000008,
ENEMY_AI_FLAG_10 = 0x00000010,
ENEMY_AI_FLAG_20 = 0x00000020,

View File

@ -343,7 +343,7 @@ typedef struct Enemy {
/* 0xAC */ u8 aiDetectFlags; // detect player flags: 1 = require line of sight | 2 = adjust hitbox for moving player
/* 0xAD */ char unk_AD[3];
/* 0xB0 */ u32 aiFlags;
/* 0xB4 */ s8 aiPaused;
/* 0xB4 */ s8 aiSuspendTime;
/* 0xB5 */ s8 instigatorValue; // value is passed to first actor in formation if a battle is triggered with this enemy
/* 0xB6 */ char unk_B6[2];
/* 0xB8 */ EvtScript* unk_B8; // some bytecode

View File

@ -682,21 +682,23 @@ void basic_ai_loiter(Evt* script, MobileAISettings* aiSettings, EnemyDetectVolum
f32 yaw;
s32 emoteTemp;
if (aiSettings->playerSearchInterval >= 0 && basic_ai_check_player_dist(territory, enemy, aiSettings->chaseRadius, aiSettings->chaseOffsetDist, 0)) {
x = npc->pos.x;
y = npc->pos.y;
z = npc->pos.z;
yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
if (!npc_test_move_simple_with_slipping(npc->collisionChannel, &x, &y, &z, aiSettings->chaseSpeed, yaw, npc->collisionHeight, npc->collisionRadius)) {
npc->yaw = yaw;
ai_enemy_play_sound(npc, SOUND_2F4, SOUND_PARAM_MORE_QUIET);
fx_emote(EMOTE_EXCLAMATION, npc, 0, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 15, &emoteTemp);
if (enemy->npcSettings->actionFlags & AI_ACTION_JUMP_WHEN_SEE_PLAYER) {
script->AI_TEMP_STATE = AI_STATE_ALERT_INIT;
} else {
script->AI_TEMP_STATE = AI_STATE_CHASE_INIT;
if (aiSettings->playerSearchInterval >= 0) {
if (basic_ai_check_player_dist(territory, enemy, aiSettings->chaseRadius, aiSettings->chaseOffsetDist, 0)) {
x = npc->pos.x;
y = npc->pos.y;
z = npc->pos.z;
yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
if (!npc_test_move_simple_with_slipping(npc->collisionChannel, &x, &y, &z, aiSettings->chaseSpeed, yaw, npc->collisionHeight, npc->collisionRadius)) {
npc->yaw = yaw;
ai_enemy_play_sound(npc, SOUND_2F4, SOUND_PARAM_MORE_QUIET);
fx_emote(EMOTE_EXCLAMATION, npc, 0, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 15, &emoteTemp);
if (enemy->npcSettings->actionFlags & AI_ACTION_JUMP_WHEN_SEE_PLAYER) {
script->AI_TEMP_STATE = AI_STATE_ALERT_INIT;
} else {
script->AI_TEMP_STATE = AI_STATE_CHASE_INIT;
}
return;
}
return;
}
}
@ -858,7 +860,7 @@ ApiStatus BasicAI_Main(Evt* script, s32 isInitialCall) {
territory.halfHeight = 65.0f;
territory.detectFlags = 0;
if (isInitialCall || enemy->aiFlags & ENEMY_AI_FLAG_4) {
if (isInitialCall || enemy->aiFlags & ENEMY_AI_FLAG_SUSPEND) {
script->AI_TEMP_STATE = AI_STATE_WANDER_INIT;
npc->duration = 0;
@ -873,14 +875,14 @@ ApiStatus BasicAI_Main(Evt* script, s32 isInitialCall) {
npc->flags |= NPC_FLAG_8;
}
if (enemy->aiFlags & ENEMY_AI_FLAG_4) {
if (enemy->aiFlags & ENEMY_AI_FLAG_SUSPEND) {
script->AI_TEMP_STATE = AI_STATE_SUSPEND;
script->functionTemp[1] = AI_STATE_WANDER_INIT;
} else if (enemy->flags & ENEMY_FLAG_40000000) {
script->AI_TEMP_STATE = AI_STATE_CHASE_INIT;
}
enemy->aiFlags &= ~ENEMY_AI_FLAG_4;
enemy->aiFlags &= ~ENEMY_AI_FLAG_SUSPEND;
enemy->flags &= ~ENEMY_FLAG_40000000;
}

View File

@ -14,7 +14,7 @@ void basic_ai_suspend(Evt* script) {
Enemy* enemy = script->owner1.enemy;
get_npc_unsafe(enemy->npcID);
if (enemy->aiPaused == 0) {
if (enemy->aiSuspendTime == 0) {
script->functionTemp[0] = script->functionTemp[1];
}
}

View File

@ -3,7 +3,7 @@
#include "battle/battle.h"
#include "script_api/battle.h"
#include "sprite/npc/ShyGuy.h"
#include "sprite/npc/JungleGuy.h"
#include "sprite/npc/SpearGuy.h"
#define NAMESPACE b_area_jan_spear_guy
@ -21,38 +21,38 @@ extern Formation N(specialFormation_8021A8C0);
extern Formation N(specialFormation_8021A8DC);
s32 N(idleAnimations_802185C0)[] = {
STATUS_NORMAL, ANIM_JungleGuy_Anim04,
STATUS_STONE, ANIM_JungleGuy_Anim02,
STATUS_SLEEP, ANIM_JungleGuy_Anim0D,
STATUS_POISON, ANIM_JungleGuy_Anim0F,
STATUS_STOP, ANIM_JungleGuy_Anim02,
STATUS_STATIC, ANIM_JungleGuy_Anim04,
STATUS_PARALYZE, ANIM_JungleGuy_Anim02,
STATUS_DIZZY, ANIM_JungleGuy_Anim0F,
STATUS_FEAR, ANIM_JungleGuy_Anim0F,
STATUS_NORMAL, ANIM_SpearGuy_Anim04,
STATUS_STONE, ANIM_SpearGuy_Anim02,
STATUS_SLEEP, ANIM_SpearGuy_Anim0D,
STATUS_POISON, ANIM_SpearGuy_Anim0F,
STATUS_STOP, ANIM_SpearGuy_Anim02,
STATUS_STATIC, ANIM_SpearGuy_Anim04,
STATUS_PARALYZE, ANIM_SpearGuy_Anim02,
STATUS_DIZZY, ANIM_SpearGuy_Anim0F,
STATUS_FEAR, ANIM_SpearGuy_Anim0F,
STATUS_END,
};
s32 N(idleAnimations_8021860C)[] = {
STATUS_NORMAL, ANIM_JungleGuy_Anim03,
STATUS_STONE, ANIM_JungleGuy_Anim0D,
STATUS_SLEEP, ANIM_JungleGuy_Anim0D,
STATUS_POISON, ANIM_JungleGuy_Anim0F,
STATUS_STOP, ANIM_JungleGuy_Anim01,
STATUS_STATIC, ANIM_JungleGuy_Anim03,
STATUS_PARALYZE, ANIM_JungleGuy_Anim01,
STATUS_DIZZY, ANIM_JungleGuy_Anim0F,
STATUS_FEAR, ANIM_JungleGuy_Anim0F,
STATUS_NORMAL, ANIM_SpearGuy_Anim03,
STATUS_STONE, ANIM_SpearGuy_Anim0D,
STATUS_SLEEP, ANIM_SpearGuy_Anim0D,
STATUS_POISON, ANIM_SpearGuy_Anim0F,
STATUS_STOP, ANIM_SpearGuy_Anim01,
STATUS_STATIC, ANIM_SpearGuy_Anim03,
STATUS_PARALYZE, ANIM_SpearGuy_Anim01,
STATUS_DIZZY, ANIM_SpearGuy_Anim0F,
STATUS_FEAR, ANIM_SpearGuy_Anim0F,
STATUS_END,
};
s32 N(idleAnimations_80218658)[] = {
STATUS_NORMAL, ANIM_JungleGuy_Anim14,
STATUS_NORMAL, ANIM_SpearGuy_Anim14,
STATUS_END,
};
s32 N(idleAnimations_80218664)[] = {
STATUS_NORMAL, ANIM_JungleGuy_Anim19,
STATUS_NORMAL, ANIM_SpearGuy_Anim19,
STATUS_END,
};
@ -215,11 +215,11 @@ EvtScript N(init_80218980) = {
EVT_SWITCH(LVar0)
EVT_CASE_EQ(0)
EVT_EXEC_WAIT(N(setSpearStance))
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim04)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim04)
EVT_CASE_EQ(1)
EVT_EXEC_WAIT(N(setSpearStance))
EVT_CALL(SetPartEventFlags, -127, 2, 16)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim03)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim03)
EVT_END_SWITCH
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_8021BCB4)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_80218E3C)))
@ -232,7 +232,7 @@ EvtScript N(init_80218980) = {
EVT_CASE_OR_EQ(6)
EVT_CALL(SetPartEventBits, ACTOR_SELF, 2, ACTOR_EVENT_FLAG_SPIKY_FRONT, 0)
EVT_CALL(SetIdleAnimations, ACTOR_SELF, 2, EVT_PTR(N(idleAnimations_8021860C)))
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim03)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim03)
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_RETURN
@ -288,14 +288,14 @@ EvtScript N(idle_80218BE0) = {
EvtScript N(80218D7C) = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim06)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim06)
EVT_EXEC_WAIT(DoReturnHome)
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(0)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim04)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim04)
EVT_CASE_EQ(1)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim03)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim03)
EVT_END_SWITCH
EVT_RETURN
EVT_END
@ -309,8 +309,8 @@ EvtScript N(handleEvent_80218E3C) = {
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim08)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim08)
EVT_EXEC_WAIT(N(80218B5C))
EVT_EXEC_WAIT(DoNormalHit)
EVT_END_CASE_GROUP
@ -320,17 +320,17 @@ EvtScript N(handleEvent_80218E3C) = {
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarB)
EVT_IF_FLAG(LVarB, STATUS_FLAG_SLEEP | STATUS_FLAG_FEAR | STATUS_FLAG_DIZZY)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim0A)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim0C)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim0A)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim0C)
EVT_ELSE
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim0B)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim0B)
EVT_SET_CONST(LVar2, -1)
EVT_END_IF
EVT_ELSE
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim0A)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim0C)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim0A)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim0C)
EVT_END_IF
EVT_EXEC_WAIT(DoBurnHit)
EVT_CASE_EQ(EVENT_BURN_DEATH)
@ -339,88 +339,88 @@ EvtScript N(handleEvent_80218E3C) = {
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarB)
EVT_IF_FLAG(LVarB, STATUS_FLAG_SLEEP | STATUS_FLAG_FEAR | STATUS_FLAG_DIZZY)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim0A)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim0C)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim0A)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim0C)
EVT_EXEC_WAIT(DoBurnHit)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim0C)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim0C)
EVT_EXEC_WAIT(DoDeath)
EVT_ELSE
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim0B)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim0B)
EVT_SET_CONST(LVar2, -1)
EVT_EXEC_WAIT(DoBurnHit)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim0B)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim0B)
EVT_EXEC_WAIT(DoDeath)
EVT_END_IF
EVT_ELSE
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim0A)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim0C)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim0A)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim0C)
EVT_EXEC_WAIT(DoBurnHit)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim0C)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim0C)
EVT_EXEC_WAIT(DoDeath)
EVT_END_IF
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim08)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim08)
EVT_EXEC_WAIT(N(80218B5C))
EVT_EXEC_WAIT(DoSpinSmashHit)
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim08)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim08)
EVT_EXEC_WAIT(N(80218B5C))
EVT_EXEC_WAIT(DoSpinSmashHit)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim09)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim08)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim09)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim08)
EVT_EXEC_WAIT(N(80218B5C))
EVT_EXEC_WAIT(DoDeath)
EVT_RETURN
EVT_CASE_EQ(EVENT_SHOCK_HIT)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim08)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim08)
EVT_EXEC_WAIT(N(80218B5C))
EVT_EXEC_WAIT(DoShockHit)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim08)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim08)
EVT_EXEC_WAIT(N(80218B5C))
EVT_EXEC_WAIT(DoJumpBack)
EVT_EXEC_WAIT(N(80218D7C))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim07)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim07)
EVT_EXEC_WAIT(DoShockHit)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim09)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim09)
EVT_EXEC_WAIT(DoDeath)
EVT_RETURN
EVT_CASE_OR_EQ(EVENT_SCRIPTED_IMMUNE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim03)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim04)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim03)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim04)
EVT_EXEC_WAIT(N(80218B5C))
EVT_EXEC_WAIT(DoImmune)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_DEATH)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim08)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim07)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim08)
EVT_EXEC_WAIT(N(80218B5C))
EVT_EXEC_WAIT(DoNormalHit)
EVT_WAIT(10)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim09)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim08)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim09)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim08)
EVT_EXEC_WAIT(N(80218B5C))
EVT_EXEC_WAIT(DoDeath)
EVT_RETURN
@ -429,26 +429,26 @@ EvtScript N(handleEvent_80218E3C) = {
EVT_SWITCH(LVar0)
EVT_CASE_EQ(0)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim04)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim04)
EVT_EXEC_WAIT(DoRecover)
EVT_CASE_EQ(1)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim03)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim03)
EVT_EXEC_WAIT(DoRecover)
EVT_END_SWITCH
EVT_CASE_EQ(EVENT_SCARE_AWAY)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim06)
EVT_SET_CONST(LVar2, ANIM_JungleGuy_Anim07)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim06)
EVT_SET_CONST(LVar2, ANIM_SpearGuy_Anim07)
EVT_EXEC_WAIT(DoScareAway)
EVT_RETURN
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim04)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim04)
EVT_EXEC_WAIT(DoAirLift)
EVT_CASE_EQ(EVENT_BLOW_AWAY)
EVT_SET_CONST(LVar0, 2)
EVT_SET_CONST(LVar1, ANIM_JungleGuy_Anim04)
EVT_SET_CONST(LVar1, ANIM_SpearGuy_Anim04)
EVT_EXEC_WAIT(DoBlowAway)
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIKE_TAUNT)
@ -516,7 +516,7 @@ EvtScript N(spearStab) = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(func_8024ECF8, -1, 1, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim06)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim06)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
@ -530,9 +530,9 @@ EvtScript N(spearStab) = {
EVT_ADD(LVar2, 1)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim04)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim04)
EVT_WAIT(5)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim1A)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim1A)
EVT_WAIT(15)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
EVT_SWITCH(LVar0)
@ -540,7 +540,7 @@ EvtScript N(spearStab) = {
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
EVT_SET(LVarA, LVar0)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_309)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim1B)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim1B)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.5))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 30)
@ -566,7 +566,7 @@ EvtScript N(spearStab) = {
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_309)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim1B)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim1B)
EVT_WAIT(5)
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
@ -593,7 +593,7 @@ EvtScript N(summonBackup) = {
EVT_CALL(MoveBattleCamOver, 15)
EVT_WAIT(15)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_B)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim05)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim05)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
EVT_THREAD
EVT_WAIT(5)
@ -604,10 +604,10 @@ EvtScript N(summonBackup) = {
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 10)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim05)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim05)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim10)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim10)
EVT_WAIT(25)
EVT_THREAD
EVT_WAIT(5)
@ -618,22 +618,22 @@ EvtScript N(summonBackup) = {
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 20)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim05)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim05)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim10)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim10)
EVT_WAIT(30)
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 10)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim05)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim05)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar1, 15)
EVT_CALL(PlayEffect, EFFECT_SPARKLES, 0, LVar0, LVar1, LVar2, 30, 0, 0, 0, 0, 0, 0, 0, 0)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_206D)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim0E)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim0E)
EVT_WAIT(20)
EVT_CALL(GetOriginalActorType, ACTOR_SELF, LVar0)
EVT_CALL(EnemyCreateTargetList, 32772)
@ -642,7 +642,7 @@ EvtScript N(summonBackup) = {
EVT_CALL(GetOwnerTarget, LVar1, LVar2)
EVT_CALL(GetOriginalActorType, LVar1, LVar2)
EVT_IF_EQ(LVar0, LVar2)
EVT_CALL(SetAnimation, LVar1, 2, ANIM_JungleGuy_Anim04)
EVT_CALL(SetAnimation, LVar1, 2, ANIM_SpearGuy_Anim04)
EVT_CALL(GetIndexFromHome, LVar1, LVar3)
EVT_IF_LT(LVarA, LVar3)
EVT_CALL(GetActorVar, LVar1, 0, LVar4)
@ -650,7 +650,7 @@ EvtScript N(summonBackup) = {
EVT_CALL(SetActorVar, LVar1, 0, 1)
EVT_CALL(SetIdleAnimations, LVar1, 2, EVT_PTR(N(idleAnimations_8021860C)))
EVT_CALL(SetPartEventFlags, LVar1, 2, 16)
EVT_CALL(SetAnimation, LVar1, 2, ANIM_JungleGuy_Anim03)
EVT_CALL(SetAnimation, LVar1, 2, ANIM_SpearGuy_Anim03)
EVT_END_IF
EVT_END_IF
EVT_END_IF
@ -678,7 +678,7 @@ EvtScript N(summonBackup) = {
EVT_END_IF
EVT_SET(LVarB, LVar0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(SetAnimation, LVarB, 2, ANIM_JungleGuy_Anim10)
EVT_CALL(SetAnimation, LVarB, 2, ANIM_SpearGuy_Anim10)
EVT_CALL(SetGoalToIndex, LVarB, LVarA)
EVT_CALL(GetGoalPos, LVarB, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 220)
@ -701,12 +701,12 @@ EvtScript N(summonBackup) = {
EVT_CALL(GetActorPos, LVarB, LVar0, LVar1, LVar2)
EVT_ADD(LVar1, 15)
EVT_CALL(PlayEffect, EFFECT_SPARKLES, 0, LVar0, LVar1, LVar2, 30, 0, 0, 0, 0, 0, 0, 0, 0)
EVT_CALL(SetAnimation, LVarB, 2, ANIM_JungleGuy_Anim0E)
EVT_CALL(SetAnimation, LVarB, 2, ANIM_SpearGuy_Anim0E)
EVT_WAIT(20)
EVT_IF_EQ(LocalFlag(0), 0)
EVT_CALL(SetAnimation, LVarB, 2, ANIM_JungleGuy_Anim04)
EVT_CALL(SetAnimation, LVarB, 2, ANIM_SpearGuy_Anim04)
EVT_ELSE
EVT_CALL(SetAnimation, LVarB, 2, ANIM_JungleGuy_Anim03)
EVT_CALL(SetAnimation, LVarB, 2, ANIM_SpearGuy_Anim03)
EVT_END_IF
EVT_CALL(GetActorPos, LVarB, LVar0, LVar1, LVar2)
EVT_CALL(ForceHomePos, LVarB, LVar0, LVar1, LVar2)
@ -740,9 +740,9 @@ EvtScript N(becomeShyGuy) = {
EVT_WAIT(10)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(SetHomePos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim13)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim13)
EVT_WAIT(5)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim18)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim18)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 10)
EVT_ADD(LVar1, 15)
@ -791,13 +791,13 @@ EvtScript N(spearThrow) = {
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim06)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim06)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 200)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim15)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim15)
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_SUB(LVar0, 100)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
@ -820,10 +820,10 @@ EvtScript N(spearThrow) = {
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
EVT_SET(LVarA, LVar0)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim11)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim11)
EVT_WAIT(5)
EVT_THREAD
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim17)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim17)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.5))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 20)
@ -832,7 +832,7 @@ EvtScript N(spearThrow) = {
EVT_SUB(LVar0, 10)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim12)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim12)
EVT_END_THREAD
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(SetPartPos, ACTOR_SELF, 3, LVar0, 20, LVar2)
@ -873,10 +873,10 @@ EvtScript N(spearThrow) = {
EVT_RETURN
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim11)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim11)
EVT_WAIT(5)
EVT_THREAD
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim17)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim17)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.5))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 20)
@ -885,7 +885,7 @@ EvtScript N(spearThrow) = {
EVT_SUB(LVar0, 10)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_JungleGuy_Anim12)
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_SpearGuy_Anim12)
EVT_END_THREAD
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(SetPartPos, ACTOR_SELF, 3, LVar0, 20, LVar2)

View File

@ -213,7 +213,7 @@ EvtScript N(8022C6D4) = {
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_263)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar1, 30)
EVT_CALL(ShowEmote, 0, EMOTE_QUESTION, -45, 30, 2, LVar0, LVar1, LVar2, 5)
EVT_CALL(ShowEmote, 0, EMOTE_QUESTION, -45, 30, EMOTER_POS, LVar0, LVar1, LVar2, 5)
EVT_WAIT(30)
EVT_END_IF
EVT_END_IF

View File

@ -144,7 +144,7 @@ EvtScript N(8022A750) = {
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_263)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar1, 30)
EVT_CALL(ShowEmote, 0, EMOTE_QUESTION, -45, 30, 2, LVar0, LVar1, LVar2, 5)
EVT_CALL(ShowEmote, 0, EMOTE_QUESTION, -45, 30, EMOTER_POS, LVar0, LVar1, LVar2, 5)
EVT_WAIT(30)
EVT_END_IF
EVT_END_IF

View File

@ -130,7 +130,7 @@ EvtScript N(80225F7C) = {
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_263)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar1, 30)
EVT_CALL(ShowEmote, 0, EMOTE_QUESTION, -45, 30, 2, LVar0, LVar1, LVar2, 5)
EVT_CALL(ShowEmote, 0, EMOTE_QUESTION, -45, 30, EMOTER_POS, LVar0, LVar1, LVar2, 5)
EVT_WAIT(30)
EVT_END_IF
EVT_END_IF

View File

@ -124,7 +124,7 @@ EvtScript N(80228084) = {
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_263)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar1, 30)
EVT_CALL(ShowEmote, 0, EMOTE_QUESTION, -45, 30, 2, LVar0, LVar1, LVar2, 5)
EVT_CALL(ShowEmote, 0, EMOTE_QUESTION, -45, 30, EMOTER_POS, LVar0, LVar1, LVar2, 5)
EVT_WAIT(30)
EVT_END_IF
EVT_END_IF

View File

@ -5,62 +5,28 @@
#define NAMESPACE b_area_tik_tik_05
#include "world/common/atomic/TexturePan.inc.c"
EvtScript N(80233540) = {
EVT_SET_GROUP(0)
EVT_IF_EQ(LVar5, 1)
EVT_IF_EQ(LVar6, 1)
EVT_IF_EQ(LVar7, 1)
EVT_IF_EQ(LVar8, 1)
EVT_CALL(N(UpdateTexturePanSmooth))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_CALL(N(UpdateTexturePanStepped))
EVT_RETURN
EVT_END
};
#include "world/common/atomic/TexturePan.data.inc.c"
EvtScript N(beforeBattle) = {
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
EVT_CALL(SetTexPanner, 15, TEX_PANNER_1)
EVT_CALL(EnableTexPanning, 15, 1)
EVT_CALL(SetTexPanner, MODEL_taki1, TEX_PANNER_1)
EVT_CALL(EnableTexPanning, MODEL_taki1, TRUE)
EVT_THREAD
EVT_SET(LVar0, 1)
EVT_SET(LVar1, 0)
EVT_SET(LVar2, -2700)
EVT_SET(LVar3, 0)
EVT_SET(LVar4, -3000)
EVT_SET(LVar5, 1)
EVT_SET(LVar6, 1)
EVT_SET(LVar7, 1)
EVT_SET(LVar8, 1)
EVT_SET(LVar9, 0)
EVT_SET(LVarA, 0)
EVT_SET(LVarB, 0)
EVT_SET(LVarC, 0)
EVT_EXEC(N(80233540))
TEX_PAN_PARAMS_ID(TEX_PANNER_1)
TEX_PAN_PARAMS_STEP( 0, -2700, 0, -3000)
TEX_PAN_PARAMS_FREQ( 1, 1, 1, 1)
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
EVT_EXEC(N(EVS_UpdateTexturePan))
EVT_END_THREAD
EVT_CALL(SetTexPanner, 16, TEX_PANNER_2)
EVT_CALL(EnableTexPanning, 16, 1)
EVT_CALL(SetTexPanner, MODEL_taki2, TEX_PANNER_2)
EVT_CALL(EnableTexPanning, MODEL_taki2, TRUE)
EVT_THREAD
EVT_SET(LVar0, 2)
EVT_SET(LVar1, 50)
EVT_SET(LVar2, -200)
EVT_SET(LVar3, 110)
EVT_SET(LVar4, -500)
EVT_SET(LVar5, 1)
EVT_SET(LVar6, 1)
EVT_SET(LVar7, 1)
EVT_SET(LVar8, 1)
EVT_SET(LVar9, 0)
EVT_SET(LVarA, 0)
EVT_SET(LVarB, 0)
EVT_SET(LVarC, 0)
EVT_EXEC(N(80233540))
TEX_PAN_PARAMS_ID(TEX_PANNER_2)
TEX_PAN_PARAMS_STEP( 50, -200, 110, -500)
TEX_PAN_PARAMS_FREQ( 1, 1, 1, 1)
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
EVT_EXEC(N(EVS_UpdateTexturePan))
EVT_END_THREAD
EVT_RETURN
EVT_END

View File

@ -5,62 +5,28 @@
#define NAMESPACE b_area_tik2_tik_05
#include "world/common/atomic/TexturePan.inc.c"
EvtScript N(80233540) = {
EVT_SET_GROUP(0)
EVT_IF_EQ(LVar5, 1)
EVT_IF_EQ(LVar6, 1)
EVT_IF_EQ(LVar7, 1)
EVT_IF_EQ(LVar8, 1)
EVT_CALL(N(UpdateTexturePanSmooth))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_CALL(N(UpdateTexturePanStepped))
EVT_RETURN
EVT_END
};
#include "world/common/atomic/TexturePan.data.inc.c"
EvtScript N(beforeBattle) = {
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
EVT_CALL(SetTexPanner, 15, TEX_PANNER_1)
EVT_CALL(EnableTexPanning, 15, 1)
EVT_CALL(SetTexPanner, MODEL_taki1, TEX_PANNER_1)
EVT_CALL(EnableTexPanning, MODEL_taki1, TRUE)
EVT_THREAD
EVT_SET(LVar0, 1)
EVT_SET(LVar1, 0)
EVT_SET(LVar2, -2700)
EVT_SET(LVar3, 0)
EVT_SET(LVar4, -3000)
EVT_SET(LVar5, 1)
EVT_SET(LVar6, 1)
EVT_SET(LVar7, 1)
EVT_SET(LVar8, 1)
EVT_SET(LVar9, 0)
EVT_SET(LVarA, 0)
EVT_SET(LVarB, 0)
EVT_SET(LVarC, 0)
EVT_EXEC(N(80233540))
TEX_PAN_PARAMS_ID(TEX_PANNER_1)
TEX_PAN_PARAMS_STEP( 0, -2700, 0, -3000)
TEX_PAN_PARAMS_FREQ( 1, 1, 1, 1)
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
EVT_EXEC(N(EVS_UpdateTexturePan))
EVT_END_THREAD
EVT_CALL(SetTexPanner, 16, TEX_PANNER_2)
EVT_CALL(EnableTexPanning, 16, 1)
EVT_CALL(SetTexPanner, MODEL_taki2, TEX_PANNER_2)
EVT_CALL(EnableTexPanning, MODEL_taki2, TRUE)
EVT_THREAD
EVT_SET(LVar0, 2)
EVT_SET(LVar1, 50)
EVT_SET(LVar2, -200)
EVT_SET(LVar3, 110)
EVT_SET(LVar4, -500)
EVT_SET(LVar5, 1)
EVT_SET(LVar6, 1)
EVT_SET(LVar7, 1)
EVT_SET(LVar8, 1)
EVT_SET(LVar9, 0)
EVT_SET(LVarA, 0)
EVT_SET(LVarB, 0)
EVT_SET(LVarC, 0)
EVT_EXEC(N(80233540))
TEX_PAN_PARAMS_ID(TEX_PANNER_2)
TEX_PAN_PARAMS_STEP( 50, -200, 110, -500)
TEX_PAN_PARAMS_FREQ( 1, 1, 1, 1)
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
EVT_EXEC(N(EVS_UpdateTexturePan))
EVT_END_THREAD
EVT_RETURN
EVT_END

View File

@ -5,62 +5,28 @@
#define NAMESPACE b_area_tik3_tik_05
#include "world/common/atomic/TexturePan.inc.c"
EvtScript N(80233540) = {
EVT_SET_GROUP(0)
EVT_IF_EQ(LVar5, 1)
EVT_IF_EQ(LVar6, 1)
EVT_IF_EQ(LVar7, 1)
EVT_IF_EQ(LVar8, 1)
EVT_CALL(N(UpdateTexturePanSmooth))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_CALL(N(UpdateTexturePanStepped))
EVT_RETURN
EVT_END
};
#include "world/common/atomic/TexturePan.data.inc.c"
EvtScript N(beforeBattle) = {
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
EVT_CALL(SetTexPanner, 15, TEX_PANNER_1)
EVT_CALL(EnableTexPanning, 15, 1)
EVT_CALL(SetTexPanner, MODEL_taki1, TEX_PANNER_1)
EVT_CALL(EnableTexPanning, MODEL_taki1, TRUE)
EVT_THREAD
EVT_SET(LVar0, 1)
EVT_SET(LVar1, 0)
EVT_SET(LVar2, -2700)
EVT_SET(LVar3, 0)
EVT_SET(LVar4, -3000)
EVT_SET(LVar5, 1)
EVT_SET(LVar6, 1)
EVT_SET(LVar7, 1)
EVT_SET(LVar8, 1)
EVT_SET(LVar9, 0)
EVT_SET(LVarA, 0)
EVT_SET(LVarB, 0)
EVT_SET(LVarC, 0)
EVT_EXEC(N(80233540))
TEX_PAN_PARAMS_ID(TEX_PANNER_1)
TEX_PAN_PARAMS_STEP( 0, -2700, 0, -3000)
TEX_PAN_PARAMS_FREQ( 1, 1, 1, 1)
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
EVT_EXEC(N(EVS_UpdateTexturePan))
EVT_END_THREAD
EVT_CALL(SetTexPanner, 16, TEX_PANNER_2)
EVT_CALL(EnableTexPanning, 16, 1)
EVT_CALL(SetTexPanner, MODEL_taki2, TEX_PANNER_2)
EVT_CALL(EnableTexPanning, MODEL_taki2, TRUE)
EVT_THREAD
EVT_SET(LVar0, 2)
EVT_SET(LVar1, 50)
EVT_SET(LVar2, -200)
EVT_SET(LVar3, 110)
EVT_SET(LVar4, -500)
EVT_SET(LVar5, 1)
EVT_SET(LVar6, 1)
EVT_SET(LVar7, 1)
EVT_SET(LVar8, 1)
EVT_SET(LVar9, 0)
EVT_SET(LVarA, 0)
EVT_SET(LVarB, 0)
EVT_SET(LVarC, 0)
EVT_EXEC(N(80233540))
TEX_PAN_PARAMS_ID(TEX_PANNER_2)
TEX_PAN_PARAMS_STEP( 50, -200, 110, -500)
TEX_PAN_PARAMS_FREQ( 1, 1, 1, 1)
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
EVT_EXEC(N(EVS_UpdateTexturePan))
EVT_END_THREAD
EVT_RETURN
EVT_END

View File

@ -313,7 +313,7 @@ EvtScript N(main) = {
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario_10002)
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
EVT_ADD(LVar1, 32)
EVT_CALL(ShowEmote, 0, EMOTE_QUESTION, -45, 20, 2, LVar0, LVar1, LVar2, 10)
EVT_CALL(ShowEmote, 0, EMOTE_QUESTION, -45, 20, EMOTER_POS, LVar0, LVar1, LVar2, 10)
EVT_WAIT(30)
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30)
EVT_WAIT(1)

View File

@ -485,7 +485,7 @@ void update_encounters_neutral(void) {
s32 cond;
s32 cond2;
s32 firstStrikeType;
s32 aiPaused;
s32 suspendTime;
Enemy* enemy;
Enemy* currentEnemy;
@ -548,15 +548,15 @@ void update_encounters_neutral(void) {
continue;
}
npc = get_npc_unsafe(enemy->npcID);
if (enemy->aiPaused != 0) {
if (enemy->aiSuspendTime != 0) {
if (!(gOverrideFlags & GLOBAL_OVERRIDES_40)) {
enemy->aiPaused--;
aiPaused = enemy->aiPaused;
enemy->aiSuspendTime--;
suspendTime = enemy->aiSuspendTime;
} else {
aiPaused = 0;
suspendTime = 0;
}
if (aiPaused & 1) {
if (suspendTime & 1) {
npc->flags |= NPC_FLAG_80000000;
enemy->flags |= ENEMY_FLAG_80000000;
} else {
@ -1865,7 +1865,7 @@ void update_encounters_post_battle(void) {
enemy = currentEncounter->currentEnemy;
encounter = currentEncounter->currentEncounter;
if (!(enemy->flags & ENEMY_FLAG_40000)) {
enemy->aiPaused = 45;
enemy->aiSuspendTime = 45;
playerStatus->blinkTimer = 45;
for (j = 0; j < encounter->count; j++) {
enemy = encounter->enemy[j];
@ -1878,7 +1878,7 @@ void update_encounters_post_battle(void) {
if (enemy->flags & ENEMY_FLAG_ENABLE_HIT_SCRIPT) {
continue;
}
enemy->aiPaused = 45;
enemy->aiSuspendTime = 45;
playerStatus->blinkTimer = 45;
}
}
@ -2116,7 +2116,7 @@ void update_encounters_post_battle(void) {
enemy = currentEncounter->currentEnemy;
if (!(enemy->flags & ENEMY_FLAG_4)) {
encounter = currentEncounter->currentEncounter;
enemy->aiPaused = 45;
enemy->aiSuspendTime = 45;
playerStatus->blinkTimer = 45;
for (j = 0; j < encounter->count; j++) {
enemy = encounter->enemy[j];
@ -2129,7 +2129,7 @@ void update_encounters_post_battle(void) {
if (enemy->flags & ENEMY_FLAG_ENABLE_HIT_SCRIPT) {
continue;
}
enemy->aiPaused = 45;
enemy->aiSuspendTime = 45;
playerStatus->blinkTimer = 45;
}
}
@ -2158,8 +2158,8 @@ void update_encounters_post_battle(void) {
}
npc = get_npc_unsafe(enemy->npcID);
if (enemy->aiPaused != 0) {
if (enemy->aiPaused & 1) {
if (enemy->aiSuspendTime != 0) {
if (enemy->aiSuspendTime & 1) {
npc->flags |= NPC_FLAG_80000000;
enemy->flags |= ENEMY_FLAG_80000000;
} else {
@ -2492,7 +2492,7 @@ void create_encounters(void) {
enemy->aiFlags = npcData->aiFlags;
enemy->unk_DC = 0;
enemy->aiPaused = 0;
enemy->aiSuspendTime = 0;
enemy->unk_B8 = (EvtScript*)npcSettings->unk_24; // ??
enemy->unk_BC = NULL;
enemy->unk_C0 = 0;

View File

@ -806,7 +806,7 @@ ApiStatus OnPlayerFled(Evt* script, s32 isInitialCall) {
Npc* npc = get_npc_unsafe(enemy->npcID);
s32 skipReaction = evt_get_variable(script, *script->ptrReadPos);
enemy->aiFlags |= ENEMY_AI_FLAG_4;
enemy->aiFlags |= ENEMY_AI_FLAG_SUSPEND;
if (!skipReaction) {
s32 unk;

View File

@ -4,36 +4,140 @@
#include "sprite.h"
typedef struct DemoSceneData {
/* 0x0 */ s16 unk_0;
/* 0x2 */ u16 entryID;
/* 0x0 */ s16 sceneType;
/* 0x2 */ u16 index; // entryID for WORLD, battle index for BATTLE
/* 0x4 */ char unk_4;
/* 0x5 */ s8 partnerID;
/* 0x6 */ s8 unk_6;
/* 0x6 */ s8 storyProgress;
/* 0x7 */ char unk_7;
/* 0x8 */ char* mapName;
} DemoSceneData; // size = 0xC;
DemoSceneData D_80077AE0[20] = {
{ .unk_0 = 0, .entryID = 2, .unk_4 = 0, .partnerID = PARTNER_GOOMBARIO, .unk_6 = 0x9D, .mapName = "nok_12" },
{ .unk_0 = 2, .entryID = 0, .unk_4 = 0, .partnerID = PARTNER_NONE, .unk_6 = 0 },
{ .unk_0 = 0, .entryID = 5, .unk_4 = 0, .partnerID = PARTNER_PARAKARRY, .unk_6 = 0x9D, .mapName = "isk_04" },
{ .unk_0 = 0, .entryID = 2, .unk_4 = 0, .partnerID = PARTNER_KOOPER, .unk_6 = 0x9D, .mapName = "tik_03" },
{ .unk_0 = 0, .entryID = 2, .unk_4 = 0, .partnerID = PARTNER_PARAKARRY, .unk_6 = 0xB3, .mapName = "trd_09" },
{ .unk_0 = 0, .entryID = 4, .unk_4 = 0, .partnerID = PARTNER_SUSHIE, .unk_6 = 0x9D, .mapName = "jan_04" },
{ .unk_0 = 2, .entryID = 1, .unk_4 = 0, .partnerID = PARTNER_NONE, .unk_6 = 0x00 },
{ .unk_0 = 0, .entryID = 6, .unk_4 = 0, .partnerID = PARTNER_BOMBETTE, .unk_6 = 0x9D, .mapName = "mac_00" },
{ .unk_0 = 0, .entryID = 2, .unk_4 = 0, .partnerID = PARTNER_KOOPER, .unk_6 = 0x1B, .mapName = "kzn_02" },
{ .unk_0 = 2, .entryID = 2, .unk_4 = 0, .partnerID = PARTNER_NONE, .unk_6 = 0x00 },
{ .unk_0 = 0, .entryID = 3, .unk_4 = 0, .partnerID = PARTNER_BOMBETTE, .unk_6 = 0x9D, .mapName = "mac_03" },
{ .unk_0 = 0, .entryID = 4, .unk_4 = 0, .partnerID = PARTNER_GOOMBARIO, .unk_6 = 0x9D, .mapName = "nok_02" },
{ .unk_0 = 2, .entryID = 3, .unk_4 = 0, .partnerID = PARTNER_NONE, .unk_6 = 0x00 },
{ .unk_0 = 1, .entryID = 8, .unk_4 = 0, .partnerID = PARTNER_TWINK, .unk_6 = 0x26, .mapName = "kkj_11" },
{ .unk_0 = 0, .entryID = 2, .unk_4 = 0, .partnerID = PARTNER_BOW, .unk_6 = 0xE8, .mapName = "arn_08" },
{ .unk_0 = 2, .entryID = 4, .unk_4 = 0, .partnerID = PARTNER_NONE, .unk_6 = 0x00 },
{ .unk_0 = 0, .entryID = 3, .unk_4 = 0, .partnerID = PARTNER_GOOMBARIO, .unk_6 = 0x9D, .mapName = "nok_12" },
{ .unk_0 = 1, .entryID = 3, .unk_4 = 0, .partnerID = PARTNER_NONE, .unk_6 = 0x9D, .mapName = "kkj_26" },
{ .unk_0 = 3, .entryID = 0, .unk_4 = 0, .partnerID = PARTNER_NONE, .unk_6 = 0x00, .mapName = "end" },
{ .unk_0 = 0, .entryID = 0, .unk_4 = 0, .partnerID = PARTNER_NONE, .unk_6 = 0x00, },
enum DemoSceneType {
DEMO_SCENE_WORLD = 0,
DEMO_SCENE_PEACH = 1,
DEMO_SCENE_BATTLE = 2,
DEMO_SCENE_DONE = 3,
DEMO_SCENE_EXIT = 4,
};
DemoSceneData DemoScenes[] = {
{
.sceneType = DEMO_SCENE_WORLD,
.mapName = "nok_12",
.index = nok_12_ENTRY_2,
.partnerID = PARTNER_GOOMBARIO,
.storyProgress = STORY_CH1_KNOCKED_SWITCH_FROM_TREE
},
{
.sceneType = DEMO_SCENE_BATTLE,
.index = 0
},
{
.sceneType = DEMO_SCENE_WORLD,
.mapName = "isk_04",
.index = isk_04_ENTRY_5,
.partnerID = PARTNER_PARAKARRY,
.storyProgress = STORY_CH1_KNOCKED_SWITCH_FROM_TREE
},
{
.sceneType = DEMO_SCENE_WORLD,
.mapName = "tik_03",
.index = tik_03_ENTRY_2,
.partnerID = PARTNER_KOOPER,
.storyProgress = STORY_CH1_KNOCKED_SWITCH_FROM_TREE
},
{
.sceneType = DEMO_SCENE_WORLD,
.mapName = "trd_09",
.index = trd_09_ENTRY_2,
.partnerID = PARTNER_PARAKARRY,
.storyProgress = STORY_CH1_STAR_SPIRIT_RESCUED
},
{
.sceneType = DEMO_SCENE_WORLD,
.mapName = "jan_04",
.index = jan_04_ENTRY_4,
.partnerID = PARTNER_SUSHIE,
.storyProgress = STORY_CH1_KNOCKED_SWITCH_FROM_TREE
},
{
.sceneType = DEMO_SCENE_BATTLE,
.index = 1
},
{
.sceneType = DEMO_SCENE_WORLD,
.mapName = "mac_00",
.index = mac_00_ENTRY_6,
.partnerID = PARTNER_BOMBETTE,
.storyProgress = STORY_CH1_KNOCKED_SWITCH_FROM_TREE
},
{
.sceneType = DEMO_SCENE_WORLD,
.mapName = "kzn_02",
.index = kzn_02_ENTRY_2,
.partnerID = PARTNER_KOOPER,
.storyProgress = STORY_CH5_LAVA_STREAM_BLOCKED
},
{
.sceneType = DEMO_SCENE_BATTLE,
.index = 2
},
{
.sceneType = DEMO_SCENE_WORLD,
.mapName = "mac_03",
.index = mac_03_ENTRY_3,
.partnerID = PARTNER_BOMBETTE,
.storyProgress = STORY_CH1_KNOCKED_SWITCH_FROM_TREE
},
{
.sceneType = DEMO_SCENE_WORLD,
.mapName = "nok_02" ,
.index = nok_02_ENTRY_4,
.partnerID = PARTNER_GOOMBARIO,
.storyProgress = STORY_CH1_KNOCKED_SWITCH_FROM_TREE
},
{
.sceneType = DEMO_SCENE_BATTLE,
.index = 3
},
{
.sceneType = DEMO_SCENE_PEACH,
.mapName = "kkj_11",
.index = kkj_11_ENTRY_8,
.partnerID = PARTNER_TWINK,
.storyProgress = STORY_CH5_BEGAN_PEACH_MISSION
},
{
.sceneType = DEMO_SCENE_WORLD,
.mapName = "arn_08",
.index = arn_08_ENTRY_2,
.partnerID = PARTNER_BOW,
.storyProgress = STORY_CH3_UNLOCKED_WINDY_MILL
},
{
.sceneType = DEMO_SCENE_BATTLE,
.index = 4
},
{
.sceneType = DEMO_SCENE_WORLD,
.mapName = "nok_12",
.index = nok_12_ENTRY_3,
.partnerID = PARTNER_GOOMBARIO,
.storyProgress = STORY_CH1_KNOCKED_SWITCH_FROM_TREE
},
{
.sceneType = DEMO_SCENE_PEACH,
.mapName = "kkj_26",
.index = kkj_26_ENTRY_3,
.partnerID = PARTNER_NONE,
.storyProgress = STORY_CH1_KNOCKED_SWITCH_FROM_TREE
},
{
.sceneType = DEMO_SCENE_DONE,
.mapName = "end"
},
{} // final entry blank
};
char versionString[] = "Prg Ver.00/12/05 16:54";
@ -57,20 +161,20 @@ void state_init_demo(void) {
void state_step_demo(void) {
PlayerData* playerData = &gPlayerData;
DemoSceneData* demoSceneData = &D_80077AE0[gGameStatusPtr->nextDemoScene];
s16 mode = demoSceneData->unk_0;
DemoSceneData* demoSceneData = &DemoScenes[gGameStatusPtr->nextDemoScene];
s16 mode = demoSceneData->sceneType;
s16 mapID;
s16 areaID;
if (gGameStatusPtr->demoState == 4) {
mode = 3;
mode = DEMO_SCENE_DONE;
}
if (gGameStatusPtr->demoState == 5) {
mode = 4;
mode = DEMO_SCENE_EXIT;
}
switch (mode) {
case 3:
case DEMO_SCENE_DONE:
intro_logos_set_fade_alpha(255);
intro_logos_set_fade_color(224);
gGameStatusPtr->introState = INTRO_STATE_3;
@ -78,7 +182,7 @@ void state_step_demo(void) {
intro_logos_update_fade();
gGameStatusPtr->demoState = 5;
break;
case 4:
case DEMO_SCENE_EXIT:
if (gGameStatusPtr->introState != INTRO_STATE_0) {
gGameStatusPtr->introState--;
}
@ -121,15 +225,15 @@ void state_step_demo(void) {
set_game_mode(GAME_MODE_TITLE_SCREEN);
}
return;
case 0:
case DEMO_SCENE_WORLD:
get_map_IDs_by_name(demoSceneData->mapName, &areaID, &mapID);
gGameStatusPtr->areaID = areaID;
gGameStatusPtr->mapID = mapID;
gGameStatusPtr->entryID = demoSceneData->entryID;
gGameStatusPtr->entryID = demoSceneData->index;
gGameStatusPtr->peachFlags = 0;
playerData->currentPartner = demoSceneData->partnerID;
set_cam_viewport(0, 29, 20, -262, 177);
evt_set_variable(NULL, GB_StoryProgress, demoSceneData->unk_6);
evt_set_variable(NULL, GB_StoryProgress, demoSceneData->storyProgress);
if (gGameStatusPtr->nextDemoScene == 0) {
set_map_transition_effect(3);
@ -139,15 +243,15 @@ void state_step_demo(void) {
set_game_mode(GAME_MODE_ENTER_DEMO_WORLD);
break;
case 1:
case DEMO_SCENE_PEACH:
get_map_IDs_by_name(demoSceneData->mapName, &areaID, &mapID);
gGameStatusPtr->areaID = areaID;
gGameStatusPtr->mapID = mapID;
gGameStatusPtr->entryID = demoSceneData->entryID;
gGameStatusPtr->entryID = demoSceneData->index;
gGameStatusPtr->peachFlags = PEACH_STATUS_FLAG_IS_PEACH;
playerData->currentPartner = demoSceneData->partnerID;
set_cam_viewport(0, 29, 20, -262, 177);
evt_set_variable(NULL, GB_StoryProgress, demoSceneData->unk_6);
evt_set_variable(NULL, GB_StoryProgress, demoSceneData->storyProgress);
if (gGameStatusPtr->nextDemoScene == 0) {
set_map_transition_effect(3);
@ -157,14 +261,14 @@ void state_step_demo(void) {
set_game_mode(GAME_MODE_ENTER_DEMO_WORLD);
break;
case 2:
load_demo_battle(demoSceneData->entryID);
case DEMO_SCENE_BATTLE:
load_demo_battle(demoSceneData->index);
break;
}
gGameStatusPtr->nextDemoScene += 1;
if (gGameStatusPtr->nextDemoScene > 0x12) {
gGameStatusPtr->nextDemoScene = 0x12;
gGameStatusPtr->nextDemoScene++;
if (gGameStatusPtr->nextDemoScene > ARRAY_COUNT(DemoScenes) - 2) {
gGameStatusPtr->nextDemoScene = ARRAY_COUNT(DemoScenes) - 2;
}
}

View File

@ -328,7 +328,7 @@ EvtScript N(EVS_Scene_TubbaRaid) = {
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(NpcFacePlayer, NPC_Boo_03, 1)
EVT_CALL(PlaySoundAtNpc, NPC_Boo_03, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_Boo_03, EMOTE_EXCLAMATION, -45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_03, EMOTE_EXCLAMATION, -45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(20)
EVT_CALL(GetNpcPos, NPC_Boo_03, LVar0, LVar1, LVar2)
EVT_CALL(GetPlayerPos, LVar3, LVar4, LVar5)
@ -356,10 +356,10 @@ EvtScript N(EVS_Scene_TubbaRaid) = {
EVT_CALL(PlaySoundAtNpc, NPC_Boo_02, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(PlaySoundAtNpc, NPC_Boo_03, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(PlaySoundAtNpc, NPC_Boo_05, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_Boo_01, EMOTE_EXCLAMATION, -45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_02, EMOTE_EXCLAMATION, -45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_03, EMOTE_EXCLAMATION, -45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_05, EMOTE_EXCLAMATION, -45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_01, EMOTE_EXCLAMATION, -45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_02, EMOTE_EXCLAMATION, -45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_03, EMOTE_EXCLAMATION, -45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_05, EMOTE_EXCLAMATION, -45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_CALL(FadeOutMusic, 0, 500)
EVT_CALL(ClearAmbientSounds, 250)
EVT_WAIT(20)
@ -437,8 +437,8 @@ EvtScript N(EVS_Scene_TubbaRaid) = {
EVT_CALL(SetNpcPos, NPC_Boo_03, 272, 190, 214)
EVT_CALL(PlaySoundAtNpc, NPC_Boo_01, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(PlaySoundAtNpc, NPC_Boo_02, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_Boo_01, EMOTE_EXCLAMATION, 45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_02, EMOTE_EXCLAMATION, 45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_01, EMOTE_EXCLAMATION, 45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_02, EMOTE_EXCLAMATION, 45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_THREAD
EVT_CALL(PlaySound, SOUND_BOO_APPEAR)
EVT_WAIT(20)

View File

@ -276,12 +276,12 @@ EvtScript N(EVS_Scene_EscapeFromTubba) = {
EVT_CALL(PlaySoundAtNpc, NPC_Boo_04, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(PlaySoundAtNpc, NPC_Boo_05, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(PlaySoundAtNpc, NPC_Boo_06, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_Boo_01, EMOTE_EXCLAMATION, 45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_02, EMOTE_EXCLAMATION, 45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_03, EMOTE_EXCLAMATION, 45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_04, EMOTE_EXCLAMATION, 45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_05, EMOTE_EXCLAMATION, 45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_06, EMOTE_EXCLAMATION, 45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_01, EMOTE_EXCLAMATION, 45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_02, EMOTE_EXCLAMATION, 45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_03, EMOTE_EXCLAMATION, 45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_04, EMOTE_EXCLAMATION, 45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_05, EMOTE_EXCLAMATION, 45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Boo_06, EMOTE_EXCLAMATION, 45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(50)
EVT_SET(LVar2, 1)
EVT_EXEC(N(EVS_CloseDoors))

View File

@ -4,7 +4,6 @@
#define SUPER_BLOCK_MAPVAR MV_SuperBlock
#define SUPER_BLOCK_GAMEFLAG GF_DGB04_SuperBlock
#include "world/common/entity/SuperBlock.inc.c"
#include "world/common/entity/SuperBlock.data.inc.c"
EvtScript N(EVS_MakeEntities) = {
EVT_MAKE_SUPER_BLOCK(500, -360, 110, 0)

View File

@ -1,7 +1,7 @@
#include "dgb_06.h"
#include "entity.h"
#include "world/common/atomic/Chest.inc.c"
#include "world/common/entity/Chest.inc.c"
EvtScript N(EVS_OpenChest_TubbaKey) = EVT_OPEN_CHEST_KEY(ITEM_TUBBA_CASTLE_KEY, GF_DGB06_Chest_CastleKey1);

View File

@ -1,7 +1,7 @@
#include "dgb_12.h"
#include "entity.h"
#include "world/common/atomic/Chest.inc.c"
#include "world/common/entity/Chest.inc.c"
EvtScript N(EVS_Chest_Interact) = EVT_OPEN_CHEST_KEY(ITEM_TUBBA_CASTLE_KEY, GF_DGB12_Chest_CastleKey1);

View File

@ -1,7 +1,7 @@
#include "dgb_18.h"
#include "entity.h"
#include "world/common/atomic/Chest.inc.c"
#include "world/common/entity/Chest.inc.c"
EvtScript N(EVS_OpenChest_MysticalKey) = {
EVT_SET(GF_DGB18_Chest_MysticalKey, TRUE)

View File

@ -1,7 +1,6 @@
#include "dro_01.h"
#include "world/common/entity/Pipe.inc.c"
#include "world/common/entity/Pipe.data.inc.c"
#include "world/common/atomic/UnkFunc27.inc.c"

View File

@ -361,7 +361,7 @@ StaticNpc N(PassiveNPCs)[] = {
.settings = &N(NpcSettings_Dryite_Patrol),
.pos = { 40.0f, 0.0f, 105.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_Dryite_06),
.drops = DRYITE_DROPS,
.territory = {

View File

@ -3,7 +3,6 @@
#define NAMESPACE dro_01_Entity
#include "world/common/entity/Pipe.inc.c"
#include "world/common/entity/Pipe.data.inc.c"
#define NAMESPACE dro_01
EvtScript N(EVS_WarpPipeExit) = {

View File

@ -527,7 +527,7 @@ StaticNpc N(PassiveNPCs)[] = {
.id = NPC_ChuckQuizmo,
.settings = &N(NpcSettings_ChuckQuizmo),
.pos = { -335.0f, 0.0f, 90.0f },
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.initVarCount = 1,
.initVar = { .bytes = { 0, QUIZ_AREA_DRO, QUIZ_COUNT_DRO, QUIZ_MAP_DRO_02 } },
.yaw = 270,

View File

@ -34,7 +34,7 @@
#include "sprite/npc/TuffPuff.h"
#include "sprite/npc/GourmetGuy.h"
#include "sprite/npc/RafaelRaven.h"
#include "sprite/npc/RaphaelRaven.h"
#include "sprite/npc/LavaPiranha.h"
#include "sprite/npc/ParadeYoshi.h"
#include "sprite/npc/YoshiKid.h"
@ -109,7 +109,7 @@ enum {
NPC_Yoshi3 = 59,
NPC_Yoshi4 = 60,
NPC_YoshiChief = 61,
NPC_RafaelRaven = 62,
NPC_RaphaelRaven = 62,
NPC_LavaPiranha = 63,
NPC_YoshiKidGreen = 64,
NPC_YoshiKidBlue = 65,

View File

@ -253,8 +253,8 @@ s32 N(ExtraAnims_GoombaKing)[] = {
-1
};
s32 N(ExtraAnims_RafaelRaven)[] = {
ANIM_RafaelRaven_IdleNoFeet,
s32 N(ExtraAnims_RaphaelRaven)[] = {
ANIM_RaphaelRaven_IdleNoFeet,
-1
};
@ -633,9 +633,9 @@ ParadeNpcInfo N(ParadeNpcsTable)[] = {
.pos = { 232.0f, 50.0f, 25.0f },
.yaw = 270.0f
},
[NPC_RafaelRaven] {
.initialAnim = ANIM_RafaelRaven_IdleNoFeet,
.animList = N(ExtraAnims_RafaelRaven),
[NPC_RaphaelRaven] {
.initialAnim = ANIM_RaphaelRaven_IdleNoFeet,
.animList = N(ExtraAnims_RaphaelRaven),
.pos = { 357.0f, -120.0f, -30.0f },
.yaw = 90.0f
},
@ -1015,7 +1015,7 @@ EvtScript N(EVS_ManageNpcPool) = {
EVT_CALL(DeleteNpc, NPC_Boo3)
EVT_CALL(DeleteNpc, NPC_TubbasHeart)
EVT_WAIT(1)
EVT_CALL(N(CreateParadeNPC), NPC_RafaelRaven)
EVT_CALL(N(CreateParadeNPC), NPC_RaphaelRaven)
EVT_CALL(N(CreateParadeNPC), NPC_LavaPiranha)
EVT_CALL(N(CreateParadeNPC), NPC_Yoshi1)
EVT_CALL(N(CreateParadeNPC), NPC_Yoshi2)
@ -1052,7 +1052,7 @@ EvtScript N(EVS_ManageNpcPool) = {
EVT_CALL(DeleteNpc, NPC_Yoshi3)
EVT_CALL(DeleteNpc, NPC_Yoshi4)
EVT_CALL(DeleteNpc, NPC_YoshiChief)
EVT_CALL(DeleteNpc, NPC_RafaelRaven)
EVT_CALL(DeleteNpc, NPC_RaphaelRaven)
EVT_CALL(DeleteNpc, NPC_LavaPiranha)
EVT_WAIT(1)
EVT_CALL(N(CreateParadeNPC), NPC_HuffNPuffBody)

View File

@ -136,7 +136,7 @@ EvtScript N(EVS_ParadePhase_Caravan) = {
EVT_END_IF
EVT_END_LOOP
EVT_WAIT(20)
EVT_CALL(ShowEmote, NPC_Tutankoopa1, EMOTE_ELLIPSIS, 0, 60, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Tutankoopa1, EMOTE_ELLIPSIS, 0, 60, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(60)
EVT_CALL(MakeLerp, 90, 0, 5, EASING_LINEAR)
EVT_LOOP(5)
@ -190,7 +190,7 @@ EvtScript N(EVS_ParadePhase_BuzzarNest) = {
EVT_END_IF
EVT_END_LOOP
EVT_WAIT(200)
EVT_CALL(ShowEmote, NPC_Buzzar, EMOTE_SHOCK, 45, 30, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Buzzar, EMOTE_SHOCK, 45, 30, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(40)
EVT_CALL(SetNpcAnimation, NPC_Buzzar, ANIM_Buzzar_Anim03)
EVT_CALL(NpcFlyTo, NPC_Buzzar, -855, 100, -180, 60, 0, EASING_LINEAR)

View File

@ -11,11 +11,11 @@ EvtScript N(EVS_ParadePhase_Yoshis) = {
EVT_END_LOOP
EVT_END_CHILD_THREAD
EVT_CHILD_THREAD
EVT_CALL(SetNpcScale, NPC_RafaelRaven, EVT_FLOAT(2.0), EVT_FLOAT(2.0), 1)
EVT_CALL(SetNpcScale, NPC_RaphaelRaven, EVT_FLOAT(2.0), EVT_FLOAT(2.0), 1)
EVT_LOOP(0)
EVT_CALL(NpcFlyTo, NPC_RafaelRaven, 357, 0, -30, 10, 0, EASING_LINEAR)
EVT_CALL(NpcFlyTo, NPC_RaphaelRaven, 357, 0, -30, 10, 0, EASING_LINEAR)
EVT_WAIT(60)
EVT_CALL(NpcFlyTo, NPC_RafaelRaven, 357, -120, -30, 10, 0, EASING_LINEAR)
EVT_CALL(NpcFlyTo, NPC_RaphaelRaven, 357, -120, -30, 10, 0, EASING_LINEAR)
EVT_WAIT(60)
EVT_END_LOOP
EVT_END_CHILD_THREAD

View File

@ -171,7 +171,7 @@ EvtScript N(EVS_NpcInteract_Petunia) = {
EVT_CALL(SetNpcAnimation, NPC_MontyMole_01, ANIM_MontyMole_Dark_Anim16)
EVT_WAIT(10)
EVT_CALL(PlaySoundAtNpc, NPC_MontyMole_01, SOUND_263, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_MontyMole_01, EMOTE_QUESTION, -45, 30, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_MontyMole_01, EMOTE_QUESTION, -45, 30, EMOTER_NPC, 0, 0, 0, 0)
EVT_CALL(GetNpcPos, NPC_MontyMole_02, LVar0, LVar1, LVar2)
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Petunia_AngryTalk, ANIM_Petunia_Angry, 0, MSG_CH6_0052)
EVT_CALL(SetNpcYaw, NPC_MontyMole_02, 90)
@ -226,7 +226,7 @@ EvtScript N(EVS_NpcInteract_Petunia) = {
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
EVT_CALL(SetNpcAnimation, NPC_Dayzee, ANIM_Dayzee_Anim0D)
EVT_CALL(PlaySoundAtNpc, NPC_Dayzee, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_Dayzee, EMOTE_EXCLAMATION, 45, 30, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Dayzee, EMOTE_EXCLAMATION, 45, 30, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(15)
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Petunia_AngryTalk, ANIM_Petunia_Angry, 0, MSG_CH6_0056)
EVT_SET(LVar4, EVT_FLOAT(90.0))
@ -401,7 +401,7 @@ EvtScript N(EVS_NpcIdle_MontyMole_01) = {
EVT_SET(LVar1, 10)
EVT_END_IF
EVT_CALL(PlaySoundAtNpc, NPC_MontyMole_01, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_MontyMole_01, EMOTE_EXCLAMATION, 0, LVar1, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_MontyMole_01, EMOTE_EXCLAMATION, 0, LVar1, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(LVar1)
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_100000 | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP | ENEMY_FLAG_IGNORE_HAMMER | ENEMY_FLAG_10000000, 1)
EVT_END_IF
@ -480,7 +480,7 @@ EvtScript N(EVS_NpcIdle_MontyMole_02) = {
EVT_SET(LVar1, 10)
EVT_END_IF
EVT_CALL(PlaySoundAtNpc, NPC_MontyMole_02, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_MontyMole_02, EMOTE_EXCLAMATION, 0, LVar1, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_MontyMole_02, EMOTE_EXCLAMATION, 0, LVar1, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(LVar1)
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_100000 | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP | ENEMY_FLAG_IGNORE_HAMMER | ENEMY_FLAG_10000000, 1)
EVT_END_IF
@ -559,7 +559,7 @@ EvtScript N(EVS_NpcIdle_MontyMole_03) = {
EVT_SET(LVar1, 10)
EVT_END_IF
EVT_CALL(PlaySoundAtNpc, NPC_MontyMole_03, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_MontyMole_03, EMOTE_EXCLAMATION, 0, LVar1, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_MontyMole_03, EMOTE_EXCLAMATION, 0, LVar1, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(LVar1)
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_100000 | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP | ENEMY_FLAG_IGNORE_HAMMER | ENEMY_FLAG_10000000, 1)
EVT_END_IF
@ -638,7 +638,7 @@ EvtScript N(EVS_NpcIdle_MontyMole_04) = {
EVT_SET(LVar1, 10)
EVT_END_IF
EVT_CALL(PlaySoundAtNpc, NPC_MontyMole_04, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_MontyMole_04, EMOTE_EXCLAMATION, 0, LVar1, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_MontyMole_04, EMOTE_EXCLAMATION, 0, LVar1, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(LVar1)
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_100000 | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP | ENEMY_FLAG_IGNORE_HAMMER | ENEMY_FLAG_10000000, 1)
EVT_END_IF

View File

@ -4,7 +4,6 @@
#define SUPER_BLOCK_MAPVAR MV_SuperBlock
#define SUPER_BLOCK_GAMEFLAG GF_FLO08_SuperBlock
#include "world/common/entity/SuperBlock.inc.c"
#include "world/common/entity/SuperBlock.data.inc.c"
EvtScript N(EVS_MakeEntities) = {
EVT_MAKE_SUPER_BLOCK(-780, 120, -110, 0)

View File

@ -162,7 +162,7 @@ StaticNpc N(NpcData_GateFlower) = {
.settings = &N(NpcSettings_GateFlower),
.pos = { -695.0f, 0.0f, -30.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_GateFlower),
.drops = GATE_FLOWER_DROPS,
.animations = GATE_FLOWER_YELLOW_ANIMS,

View File

@ -137,7 +137,7 @@ EvtScript N(EVS_NpcInteract_Lily) = {
EVT_CALL(NpcFacePlayer, NPC_SELF, 1)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Lily_Idle)
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_SELF, EMOTE_EXCLAMATION, 0, 15, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_SELF, EMOTE_EXCLAMATION, 0, 15, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(15)
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Lily_Idle, ANIM_Lily_Idle, 0, MSG_CH6_007A)
EVT_CALL(EndSpeech, NPC_SELF, ANIM_Lily_Dread, ANIM_Lily_Idle, 0)

View File

@ -4,7 +4,6 @@
#include "../common/FlowerSpawnRegion.inc.c"
#include "world/common/entity/Pipe.inc.c"
#include "world/common/entity/Pipe.data.inc.c"
API_CALLABLE(N(SpawnSunEffect)) {
fx_sun_undeclared(FX_SUN_FROM_LEFT, 0, 0, 0, 0, 0);

View File

@ -4,7 +4,6 @@
#define SUPER_BLOCK_MAPVAR MV_SuperBlock
#define SUPER_BLOCK_GAMEFLAG GF_FLO16_SuperBlock
#include "world/common/entity/SuperBlock.inc.c"
#include "world/common/entity/SuperBlock.data.inc.c"
EvtScript N(EVS_TetherCameraToPlayer) = {
EVT_LABEL(0)

View File

@ -162,7 +162,7 @@ StaticNpc N(NpcData_GateFlower) = {
.settings = &N(NpcSettings_GateFlower),
.pos = { 385.0f, 0.0f, -35.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_GateFlower),
.drops = GATE_FLOWER_DROPS,
.animations = GATE_FLOWER_BLUE_ANIMS,

View File

@ -162,7 +162,7 @@ StaticNpc N(NpcData_GateFlower) = {
.settings = &N(NpcSettings_GateFlower),
.pos = { 505.0f, 0.0f, -25.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_GateFlower),
.drops = GATE_FLOWER_DROPS,
.animations = GATE_FLOWER_RED_ANIMS,

View File

@ -3,7 +3,6 @@
#include "hud_element.h"
#include "world/common/entity/Pipe.inc.c"
#include "world/common/entity/Pipe.data.inc.c"
#include "world/common/atomic/TexturePan.inc.c"
#include "world/common/atomic/TexturePan.data.inc.c"

View File

@ -253,7 +253,7 @@ EvtScript N(EVS_Scene_MeetingTwink) = {
EVT_CALL(GetNpcPos, NPC_Twink, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 40)
EVT_CALL(NpcMoveTo, NPC_Twink, LVar0, LVar2, 0)
EVT_CALL(ShowEmote, NPC_Twink, EMOTE_SHOCK, 45, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_Twink, EMOTE_SHOCK, 45, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(20)
EVT_CALL(SetNpcAnimation, NPC_Twink, ANIM_Twink_ShoutJoy)
EVT_CALL(SetNpcJumpscale, NPC_Twink, EVT_FLOAT(1.0))

View File

@ -445,7 +445,7 @@ StaticNpc N(NpcData_StarSpirits)[] = {
.settings = &N(NpcSettings_StarSpirit),
.pos = { -30.0f, 260.0f, -170.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800,
.flags = COMMON_PASSIVE_FLAGS,
.init = &N(EVS_NpcInit_Eldstar),
.drops = NPC_NO_DROPS,
.animations = ELDSTAR_ANIMS,

View File

@ -149,7 +149,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_StarMan),
.pos = { -463.0f, 10.0f, 400.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800,
.flags = COMMON_PASSIVE_FLAGS,
.init = &N(EVS_NpcInit_StarKid_01),
.drops = STAR_MAN_DROPS,
.animations = STAR_MAN_ANIMS,
@ -160,7 +160,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_StarMan),
.pos = { -325.0f, 10.0f, 600.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800,
.flags = COMMON_PASSIVE_FLAGS,
.init = &N(EVS_NpcInit_StarKid_02),
.drops = STAR_MAN_DROPS,
.animations = STAR_MAN_ANIMS,
@ -171,7 +171,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_StarMan_Wander),
.pos = { 0.0f, 10.0f, 300.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800,
.flags = COMMON_PASSIVE_FLAGS,
.init = &N(EVS_NpcInit_StarKid_03),
.drops = STAR_MAN_DROPS,
.territory = {
@ -194,7 +194,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_StarMan_Wander),
.pos = { 250.0f, 10.0f, 500.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800,
.flags = COMMON_PASSIVE_FLAGS,
.init = &N(EVS_NpcInit_StarKid_04),
.drops = STAR_MAN_DROPS,
.territory = {
@ -217,7 +217,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_StarMan),
.pos = { -485.0f, 335.0f, -100.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800,
.flags = COMMON_PASSIVE_FLAGS,
.init = &N(EVS_NpcInit_StarKid_05),
.drops = STAR_MAN_DROPS,
.animations = STAR_MAN_ANIMS,
@ -228,7 +228,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_StarMan),
.pos = { 458.0f, 35.0f, 233.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800,
.flags = COMMON_PASSIVE_FLAGS,
.init = &N(EVS_NpcInit_ToadHouseKeeper),
.drops = STAR_MAN_DROPS,
.animations = STAR_MAN_ANIMS,
@ -239,7 +239,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_StarMan),
.pos = { 140.0f, 285.0f, -315.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800,
.flags = COMMON_PASSIVE_FLAGS,
.init = &N(EVS_NpcInit_ShopOwner),
.drops = STAR_MAN_DROPS,
.animations = STAR_MAN_ANIMS,
@ -250,7 +250,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_ChuckQuizmo),
.pos = { -200.0f, 0.0f, 400.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.initVarCount = 1,
.initVar = { .bytes = { 0, QUIZ_AREA_HOS, QUIZ_COUNT_HOS, QUIZ_MAP_HOS_03 }},
.drops = QUIZMO_DROPS,

View File

@ -688,7 +688,7 @@ EvtScript N(EVS_KootCheckBall_Merluvlee) = {
EVT_CHOOSE_KEY_ITEM_FROM(N(CrystalBallItems))
EVT_IF_NE(LVar0, -1)
EVT_CALL(SpeakToPlayer, NPC_Merluvlee, ANIM_Merluvlee_Talk, ANIM_Merluvlee_Idle, 0, MSG_HOS_0049)
EVT_GIVE_KEY_REWARD(ITEM_KOOT_LUIGI_AUTOGRAPH)
EVT_GIVE_KEY_REWARD(ITEM_KOOT_MERLUVLEES_AUTOGRAPH)
EVT_SET(GF_HOS06_Gift_MerluvleesAutograph, TRUE)
EVT_ELSE
EVT_CALL(SpeakToPlayer, NPC_Merluvlee, ANIM_Merluvlee_Talk, ANIM_Merluvlee_Idle, 0, MSG_HOS_0048)

View File

@ -2,7 +2,7 @@
#include "entity.h"
#include "effects.h"
#include "world/common/atomic/Chest.inc.c"
#include "world/common/entity/Chest.inc.c"
API_CALLABLE(N(DismissGotItem)) {
Entity* bigChest = get_entity_by_index(script->varTable[0]);

View File

@ -4,7 +4,6 @@
#define SUPER_BLOCK_MAPVAR MV_SuperBlock
#define SUPER_BLOCK_GAMEFLAG GF_ISK10_SuperBlock
#include "world/common/entity/SuperBlock.inc.c"
#include "world/common/entity/SuperBlock.data.inc.c"
API_CALLABLE(N(MonitorPlayerLastFloor)) {
s32 level = -1;

View File

@ -1,7 +1,7 @@
#include "iwa_03.h"
#include "entity.h"
#include "world/common/atomic/Chest.inc.c"
#include "world/common/entity/Chest.inc.c"
MAP_RODATA_PAD(1,entity);

View File

@ -128,7 +128,7 @@ StaticNpc N(NpcData_TrainToad)[] = {
.settings = &N(NpcSettings_TrainToad),
.pos = { -440.0f, 20.0f, 110.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_TrainToad_01),
.drops = TRAIN_CONDUCTOR_DROPS,
.animations = TRAIN_TOAD_WHITE_ANIMS,
@ -139,7 +139,7 @@ StaticNpc N(NpcData_TrainToad)[] = {
.settings = &N(NpcSettings_TrainToad),
.pos = { -425.0f, 70.0f, -20.0f },
.yaw = 0,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_TrainToad_02),
.drops = TRAIN_CONDUCTOR_DROPS,
.animations = TRAIN_CONDUCTOR_ANIMS,
@ -151,7 +151,7 @@ StaticNpc N(NpcData_Toad) = {
.settings = &N(NpcSettings_Toad_Stationary),
.pos = { -254.0f, 20.0f, 165.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Toad),
.drops = {
.dropFlags = NPC_DROP_FLAG_80,
@ -168,7 +168,7 @@ StaticNpc N(NpcData_ThreeSisters)[] = {
.settings = &N(NpcSettings_Toad_Stationary),
.pos = { -562.0f, 0.0f, 384.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_ThreeSisters_02),
.drops = TOADETTE_DROPS,
.animations = TOADETTE_PINK_ANIMS,
@ -179,7 +179,7 @@ StaticNpc N(NpcData_ThreeSisters)[] = {
.settings = &N(NpcSettings_Toad_Stationary),
.pos = { -582.0f, 0.0f, 406.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_ThreeSisters_02),
.drops = TOADETTE_DROPS,
.animations = TOADETTE_PINK_ANIMS,
@ -190,7 +190,7 @@ StaticNpc N(NpcData_ThreeSisters)[] = {
.settings = &N(NpcSettings_Toad_Stationary),
.pos = { -524.0f, 0.0f, 411.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_ThreeSisters_02),
.drops = TOADETTE_DROPS,
.animations = TOADETTE_PINK_ANIMS,
@ -204,7 +204,7 @@ StaticNpc N(NpcData_Dryite)[] = {
.settings = &N(NpcSettings_Dryite),
.pos = { -344.0f, 0.0f, 379.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Dryite),
.drops = DRYITE_DROPS,
.animations = DRYITE_GREEN_ANIMS,
@ -215,7 +215,7 @@ StaticNpc N(NpcData_Dryite)[] = {
.settings = &N(NpcSettings_Toad_Stationary),
.pos = { -760.0f, 0.0f, 160.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_ThreeSisters_01),
.drops = TOADETTE_DROPS,
.animations = TOADETTE_GREEN_ANIMS,

View File

@ -4,7 +4,6 @@
#define SUPER_BLOCK_MAPVAR MV_SuperBlock
#define SUPER_BLOCK_GAMEFLAG GF_IWA10_SuperBlock
#include "world/common/entity/SuperBlock.inc.c"
#include "world/common/entity/SuperBlock.data.inc.c"
EvtScript N(EVS_OnSmashBlock) = {
EVT_SET(GF_IWA10_Hammer1Block, TRUE)

View File

@ -310,7 +310,7 @@ StaticNpc N(NpcData_Parakarry) = {
.settings = &N(NpcSettings_Parakarry),
.pos = { -610.0f, 230.0f, -485.0f },
.yaw = 0,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_200000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_200000,
.init = &N(EVS_NpcInit_Parakarry),
.drops = {
.dropFlags = NPC_DROP_FLAG_80,

View File

@ -23,7 +23,7 @@ StaticNpc N(NpcData_TrainToad) = {
.settings = &N(NpcSettings_TrainToad),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_TrainToad),
.drops = TRAIN_CONDUCTOR_DROPS,
.animations = TRAIN_CONDUCTOR_ANIMS,

View File

@ -1,14 +1,14 @@
#include "common.h"
#include "model.h"
void N(PullVine_apply_shear_mtx)(Matrix4f mtx, f32 f) {
void N(MoveBush_apply_shear_mtx)(Matrix4f mtx, f32 f) {
guMtxIdentF(mtx);
mtx[1][0] = f * 0.2;
mtx[1][1] = 1.0f;
mtx[1][2] = 0.0f;
}
ApiStatus N(PullVine_ShearBushModel)(Evt* script) {
ApiStatus N(MoveBush_AnimateShearing)(Evt* script) {
Bytecode* args = script->ptrReadPos;
s32 modelID = evt_get_variable(script, *args++);
s32 modelIndex = get_model_list_index_from_tree_index(modelID);
@ -17,10 +17,10 @@ ApiStatus N(PullVine_ShearBushModel)(Evt* script) {
Matrix4f mtx;
if (!(mdl->flags & MODEL_FLAG_HAS_TRANSFORM_APPLIED)) {
N(PullVine_apply_shear_mtx)(mdl->transformMatrix, f);
N(MoveBush_apply_shear_mtx)(mdl->transformMatrix, f);
mdl->flags |= MODEL_FLAG_USES_TRANSFORM_MATRIX | MODEL_FLAG_HAS_TRANSFORM_APPLIED;
} else {
N(PullVine_apply_shear_mtx)(mtx, f);
N(MoveBush_apply_shear_mtx)(mtx, f);
guMtxCatF(mtx, mdl->transformMatrix, mdl->transformMatrix);
}
return ApiStatus_DONE2;

View File

@ -0,0 +1,55 @@
#include "common.h"
#include "model.h"
#define EVT_MOVE_BUSHES(collider, bushModelL, bushmodelR, moveVarL, moveVarR) \
{ \
EVT_CALL(PlaySoundAtCollider, collider, SOUND_209F, 0) \
EVT_SET(LVar0, moveVarL) \
EVT_SET(LVar1, moveVarR) \
EVT_SET(LVar6, 0) \
EVT_SET(LVar7, 0) \
EVT_LOOP(60) \
EVT_SETF(LVar2, moveVarL) \
EVT_SETF(LVar3, moveVarR) \
EVT_SUBF(LVar2, LVar0) \
EVT_SUBF(LVar3, LVar1) \
EVT_SETF(LVar4, LVar2) \
EVT_SETF(LVar5, LVar3) \
EVT_MULF(LVar4, EVT_FLOAT(0.09375)) \
EVT_MULF(LVar5, EVT_FLOAT(0.09375)) \
EVT_MULF(LVar6, EVT_FLOAT(0.8)) \
EVT_MULF(LVar7, EVT_FLOAT(0.8)) \
EVT_ADDF(LVar6, LVar4) \
EVT_ADDF(LVar7, LVar5) \
EVT_ADDF(LVar0, LVar6) \
EVT_ADDF(LVar1, LVar7) \
EVT_CALL(TranslateModel, bushModelL, moveVarL, 0, 0) \
EVT_CALL(TranslateModel, bushmodelR, moveVarR, 0, 0) \
EVT_CALL(N(MoveBush_AnimateShearing), bushModelL, LVar6) \
EVT_CALL(N(MoveBush_AnimateShearing), bushmodelR, LVar7) \
EVT_WAIT(1) \
EVT_END_LOOP \
EVT_RETURN \
EVT_END \
}
#define EVT_MOVE_BUSH(collider, bushModel, moveVar) \
{ \
EVT_CALL(PlaySoundAtCollider, collider, SOUND_209F, 0) \
EVT_SET(LVar0, MV_CliffTopBush1OffsetR) \
EVT_SET(LVar6, 0) \
EVT_LOOP(60) \
EVT_SETF(LVar2, moveVar) \
EVT_SUBF(LVar2, LVar0) \
EVT_SETF(LVar4, LVar2) \
EVT_MULF(LVar4, EVT_FLOAT(0.09375)) \
EVT_MULF(LVar6, EVT_FLOAT(0.8)) \
EVT_ADDF(LVar6, LVar4) \
EVT_ADDF(LVar0, LVar6) \
EVT_CALL(TranslateModel, bushModel, moveVar, 0, 0) \
EVT_CALL(N(MoveBush_AnimateShearing), bushModel, LVar6) \
EVT_WAIT(1) \
EVT_END_LOOP \
EVT_RETURN \
EVT_END \
}

View File

@ -0,0 +1,193 @@
#include "common.h"
// ----------------------------------------------------------------
// Requirements
// Script to execute when a vine is pulled (can be a MapVar)
#ifndef PULL_VINE_CALLBACK_SCRIPT
#error PULL_VINE_CALLBACK_SCRIPT is not defined!
#endif
// ----------------------------------------------------------------
// Implementation
API_CALLABLE(N(PullVine_WaitForPlayerGrab)) {
Bytecode* args = script->ptrReadPos;
f32 modelX, modelY, modelZ;
f32 dx, dy, dz;
f32 dist;
s32 result;
modelX = evt_get_float_variable(script, *args++);
modelY = evt_get_float_variable(script, *args++) + 15.0f;
modelZ = evt_get_float_variable(script, *args++);
dist = evt_get_float_variable(script, *args++);
dx = script->varTable[0] - modelX;
dy = script->varTable[1] - modelY;
dz = script->varTable[2] - modelZ;
result = 1;
if (!(SQ(dx) + SQ(dy) + SQ(dz) < SQ(dist))) {
result = 0;
}
script->varTable[0] = result;
return ApiStatus_DONE2;
}
API_CALLABLE(N(PullVine_UpdatePosition)) {
Bytecode* args = script->ptrReadPos;
f32 x1 = evt_get_float_variable(script, *args++);
f32 x2 = evt_get_float_variable(script, *args++);
evt_set_float_variable(script, *args++, (x2 - x1) / 10.0f);
return ApiStatus_DONE2;
}
// LVarF ground modelID
// LVarD vine modelID 1
// LVarE vine modelID 2
// LVar9 tree leaves modelID 1
// LVarA tree leaves modelID 2
// LVarB tree leaves modelID 3
// LVarC unique vine index
// LVar5 drop delay
EvtScript N(EVS_PullVine_Manage) = {
EVT_CALL(GetModelCenter, LVarE)
EVT_SET(LVar6, LVar0)
EVT_SET(LVar7, LVar1)
EVT_SET(LVar8, LVar2)
EVT_ADD(LVar7, -20)
EVT_LABEL(0)
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
EVT_CALL(N(PullVine_WaitForPlayerGrab), LVar6, LVar7, LVar8, 20)
EVT_CALL(GetPlayerActionState, LVar1)
EVT_IF_NE(LVar1, ACTION_STATE_JUMP)
EVT_SET(LVar0, 0)
EVT_END_IF
EVT_IF_EQ(LVar0, 1)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(DisablePlayerPhysics, TRUE)
EVT_CALL(GetModelCenter, LVarD)
EVT_CALL(PlaySoundAt, SOUND_2089, 0, LVar0, LVar1, LVar2)
EVT_SETF(LVar0, EVT_FLOAT(0.0))
EVT_SETF(LVar1, EVT_FLOAT(0.0))
EVT_THREAD
EVT_LOOP(3)
EVT_IF_NE(LVar9, 0)
EVT_CALL(TranslateModel, LVar9, -2, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarA, 0)
EVT_CALL(TranslateModel, LVarA, -1, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarB, 0)
EVT_CALL(TranslateModel, LVarB, 2, 0, 0)
EVT_END_IF
EVT_WAIT(1)
EVT_IF_NE(LVar9, 0)
EVT_CALL(TranslateModel, LVar9, 2, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarA, 0)
EVT_CALL(TranslateModel, LVarA, 1, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarB, 0)
EVT_CALL(TranslateModel, LVarB, -2, 0, 0)
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_IF_NE(LVar9, 0)
EVT_CALL(TranslateModel, LVar9, 0, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarA, 0)
EVT_CALL(TranslateModel, LVarA, 0, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarB, 0)
EVT_CALL(TranslateModel, LVarB, 0, 0, 0)
EVT_END_IF
EVT_END_THREAD
EVT_IF_EQ(LVar5, 0)
EVT_EXEC(PULL_VINE_CALLBACK_SCRIPT)
EVT_ELSE
EVT_THREAD
EVT_WAIT(LVar5)
EVT_EXEC(PULL_VINE_CALLBACK_SCRIPT)
EVT_END_THREAD
EVT_END_IF
EVT_CALL(SetPlayerActionState, ACTION_STATE_LAND)
EVT_WAIT(1)
EVT_CALL(SetPlayerAnimation, ANIM_Mario_8000D)
EVT_LOOP(50)
EVT_CALL(N(PullVine_UpdatePosition), LVar0, EVT_FLOAT(-15.0), LVar2)
EVT_ADDF(LVar1, LVar2)
EVT_MULF(LVar1, EVT_FLOAT(0.93))
EVT_ADDF(LVar0, LVar1)
EVT_CALL(TranslateModel, LVarD, 0, LVar0, 0)
EVT_CALL(TranslateModel, LVarE, 0, LVar0, 0)
EVT_SET(LVar3, LVar7)
EVT_ADD(LVar3, LVar0)
EVT_SET(LVar4, LVar8)
EVT_ADD(LVar4, 2)
EVT_ADD(LVar3, 5)
EVT_CALL(SetPlayerPos, LVar6, LVar3, LVar4)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(GetModelCenter, LVarF)
EVT_CALL(SetPlayerJumpscale, 1)
EVT_CALL(PlayerJump, LVar6, LVar1, LVar4, 10)
EVT_CALL(SetPlayerActionState, ACTION_STATE_IDLE)
EVT_CALL(GetModelCenter, LVarD)
EVT_CALL(PlaySoundAt, SOUND_2089, 0, LVar0, LVar1, LVar2)
EVT_THREAD
EVT_WAIT(10)
EVT_LOOP(5)
EVT_IF_NE(LVar9, 0)
EVT_CALL(TranslateModel, LVar9, -2, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarA, 0)
EVT_CALL(TranslateModel, LVarA, -1, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarB, 0)
EVT_CALL(TranslateModel, LVarB, 2, 0, 0)
EVT_END_IF
EVT_WAIT(1)
EVT_IF_NE(LVar9, 0)
EVT_CALL(TranslateModel, LVar9, 2, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarA, 0)
EVT_CALL(TranslateModel, LVarA, 1, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarB, 0)
EVT_CALL(TranslateModel, LVarB, -2, 0, 0)
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_IF_NE(LVar9, 0)
EVT_CALL(TranslateModel, LVar9, 0, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarA, 0)
EVT_CALL(TranslateModel, LVarA, 0, 0, 0)
EVT_END_IF
EVT_IF_NE(LVarB, 0)
EVT_CALL(TranslateModel, LVarB, 0, 0, 0)
EVT_END_IF
EVT_END_THREAD
EVT_THREAD
EVT_SETF(LVar0, EVT_FLOAT(-15.0))
EVT_SETF(LVar1, EVT_FLOAT(0.0))
EVT_LOOP(100)
EVT_CALL(N(PullVine_UpdatePosition), LVar0, EVT_FLOAT(20.0), LVar2)
EVT_ADDF(LVar1, LVar2)
EVT_MULF(LVar1, EVT_FLOAT(0.93))
EVT_ADDF(LVar0, LVar1)
EVT_CALL(TranslateModel, LVarD, 0, LVar0, 0)
EVT_CALL(TranslateModel, LVarE, 0, LVar0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_END_THREAD
EVT_CALL(DisablePlayerPhysics, FALSE)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_RETURN
EVT_END_IF
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
};

View File

@ -2,44 +2,49 @@
#define _WORLD_AREA_JAN_JAN_H_
enum {
AB_JAN_Unused_0 = AreaByte(0),
AB_JAN_Unused_1 = AreaByte(1),
AB_JAN_Unused_2 = AreaByte(2),
AB_JAN_Unused_3 = AreaByte(3),
AB_JAN_Unused_4 = AreaByte(4),
AB_JAN_Unused_5 = AreaByte(5),
AB_JAN_Unused_6 = AreaByte(6),
AB_JAN_Unused_7 = AreaByte(7),
AB_JAN_Unused_8 = AreaByte(8),
AB_JAN_Unused_9 = AreaByte(9),
AB_JAN_Unused_A = AreaByte(10),
AB_JAN_Unused_B = AreaByte(11),
AB_JAN_Unused_C = AreaByte(12),
AB_JAN_Unused_D = AreaByte(13),
AB_JAN_Unused_E = AreaByte(14),
AB_JAN_Unused_F = AreaByte(15),
AB_JAN22_ZiplineNpc1 = AreaByte(0),
AB_JAN22_ZiplineNpc2 = AreaByte(1),
AB_JAN_2 = AreaByte(2),
AB_JAN13_LastPuzzleProgress = AreaByte(3),
AB_JAN_Unused_4 = AreaByte(4),
AB_JAN_Unused_5 = AreaByte(5),
AB_JAN_Unused_6 = AreaByte(6),
AB_JAN_Unused_7 = AreaByte(7),
AB_JAN_Unused_8 = AreaByte(8),
AB_JAN_Unused_9 = AreaByte(9),
AB_JAN_Unused_A = AreaByte(10),
AB_JAN_Unused_B = AreaByte(11),
AB_JAN_Unused_C = AreaByte(12),
AB_JAN_Unused_D = AreaByte(13),
AB_JAN_Unused_E = AreaByte(14),
AB_JAN_Unused_F = AreaByte(15),
};
enum {
AF_JAN_03 = AreaFlag(3),
AF_JAN02_RaphaelComment = AreaFlag(4),
AF_JAN02_MetCouncillor = AreaFlag(5),
AF_JAN_06 = AreaFlag(6),
AF_JAN_07 = AreaFlag(7),
AF_JAN01_KoloradoShouting = AreaFlag(9),
AF_JAN00_TreeDrop1 = AreaFlag(13),
AF_JAN_02 = AreaFlag(2),
AF_JAN_03 = AreaFlag(3),
AF_JAN02_RaphaelComment = AreaFlag(4),
AF_JAN02_MetCouncillor = AreaFlag(5),
AF_JAN_06 = AreaFlag(6),
AF_JAN_07 = AreaFlag(7),
AF_JAN_08 = AreaFlag(8),
AF_JAN01_KoloradoShouting = AreaFlag(9),
AF_JAN_0A = AreaFlag(10),
AF_JAN22_MisstarReleasedParty = AreaFlag(11),
AF_JAN22_MisstarReleasedKolorado = AreaFlag(12),
AF_JAN00_TreeDrop1 = AreaFlag(13),
AF_JAN01_TreeDrop2 = AreaFlag(14),
AF_JAN01_TreeDrop3 = AreaFlag(15),
AF_JAN01_TreeDrop4 = AreaFlag(16),
AF_JAN01_TreeDrop5 = AreaFlag(17),
AF_JAN01_TreeDrop6 = AreaFlag(18),
AF_JAN01_TreeDrop7 = AreaFlag(19),
AF_JAN01_TreeDrop2 = AreaFlag(14),
AF_JAN01_TreeDrop3 = AreaFlag(15),
AF_JAN01_TreeDrop4 = AreaFlag(16),
AF_JAN01_TreeDrop5 = AreaFlag(17),
AF_JAN01_TreeDrop6 = AreaFlag(18),
AF_JAN01_TreeDrop7 = AreaFlag(19),
AF_JAN02_TreeDrop2 = AreaFlag(20),
AF_JAN02_TreeDrop3 = AreaFlag(21),
AF_JAN_16 = AreaFlag(22),
AF_JAN03_TreeDrop1 = AreaFlag(23),
AF_JAN02_TreeDrop2 = AreaFlag(20),
AF_JAN02_TreeDrop3 = AreaFlag(21),
AF_JAN_16 = AreaFlag(22),
AF_JAN03_TreeDrop1 = AreaFlag(23),
};
extern MapSettings jan_00_settings;

View File

@ -9,11 +9,6 @@
#include "mapfs/jan_00_shape.h"
#include "mapfs/jan_00_hit.h"
#include "sprite/npc/HeartPlant.h"
#include "sprite/npc/WorldParakarry.h"
#include "sprite/npc/Kolorado.h"
#include "sprite/npc/JrTroopa.h"
enum {
NPC_Whale = 0,
NPC_Kolorado_02 = 1,
@ -26,3 +21,5 @@ enum {
};
#define NAMESPACE jan_00
extern EvtScript N(D_80245860_B25DA0);

View File

@ -2,72 +2,15 @@
#include "effects.h"
#include "npc.h"
extern EvtScript N(D_80245860_B25DA0);
extern EvtScript N(EVS_NpcInteract_HeartPlant_01);
#include "world/common/todo/HeartPlant_SpawnHeart.inc.c"
NpcSettings N(NpcSettings_Kolorado_01) = {
.height = 24,
.radius = 48,
.level = 99,
};
NpcSettings N(NpcSettings_Kolorado_02) = {
.height = 40,
.radius = 24,
.level = 99,
};
NpcSettings N(NpcSettings_JrTroopa) = {
.height = 32,
.radius = 24,
.level = 99,
};
EvtScript N(EVS_NpcAuxAI_HeartPlant_01) = {
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
EVT_CALL(SetSelfVar, 0, 0)
EVT_CALL(SetSelfVar, 1, 0)
EVT_RETURN
EVT_END
};
EvtScript N(D_80242260_B227A0) = {
EVT_WAIT(45)
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_HeartPlant_01)))
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInteract_HeartPlant_01) = {
EVT_CALL(GetSelfVar, 1, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetSelfVar, 1, 1)
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_2099, SOUND_SPACE_MODE_0)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HeartPlant_Anim00)
EVT_WAIT(1)
EVT_CALL(N(HeartPlant_SpawnHeart))
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HeartPlant_Anim01)
EVT_THREAD
EVT_CALL(BindNpcInteract, NPC_SELF, 0)
EVT_EXEC(N(D_80242260_B227A0))
EVT_WAIT(45)
EVT_CALL(SetSelfVar, 1, 0)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HeartPlant_Anim00)
EVT_END_THREAD
EVT_END_IF
EVT_RETURN
EVT_END
};
NpcSettings N(NpcSettings_HeartPlant_01) = {
.height = 20,
.radius = 28,
.level = 99,
.otherAI = &N(EVS_NpcAuxAI_HeartPlant_01),
.onInteract = &N(EVS_NpcInteract_HeartPlant_01),
};
#include "world/common/npc/Kolorado.inc.c"
#include "world/common/npc/JrTroopa.inc.c"
#include "world/common/enemy/complete/HeartPlant.inc.c"
#include "world/common/complete/LetterDelivery.inc.c"
@ -653,7 +596,7 @@ EvtScript N(EVS_NpcIdle_JrTroopa) = {
EVT_WAIT(20)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_Panic)
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_262, SOUND_SPACE_MODE_0)
EVT_CALL(ShowEmote, NPC_SELF, EMOTE_EXCLAMATION, 0, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_SELF, EMOTE_EXCLAMATION, 0, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(20)
EVT_CALL(NpcJump0, NPC_SELF, 250, 0, 90, 10)
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_JrTroopa_Panic, ANIM_JrTroopa_Panic, 0, MSG_CH5_000B)
@ -695,7 +638,7 @@ EvtScript N(EVS_NpcInit_JrTroopa) = {
EVT_END
};
StaticNpc N(D_8024488C_B24DCC)[] = {
StaticNpc N(NpcData_Characters)[] = {
{
.id = NPC_Whale,
.settings = &N(NpcSettings_Kolorado_01),
@ -703,61 +646,19 @@ StaticNpc N(D_8024488C_B24DCC)[] = {
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Kolorado_01),
.drops = {
.dropFlags = NPC_DROP_FLAG_80,
.heartDrops = NO_DROPS,
.flowerDrops = NO_DROPS,
},
.animations = {
.idle = ANIM_Kolorado_Idle,
.walk = ANIM_Kolorado_Walk,
.run = ANIM_Kolorado_Run,
.chase = ANIM_Kolorado_Run,
.anim_4 = ANIM_Kolorado_Idle,
.anim_5 = ANIM_Kolorado_Idle,
.death = ANIM_Kolorado_Idle,
.hit = ANIM_Kolorado_Idle,
.anim_8 = ANIM_Kolorado_Idle,
.anim_9 = ANIM_Kolorado_Idle,
.anim_A = ANIM_Kolorado_Idle,
.anim_B = ANIM_Kolorado_Idle,
.anim_C = ANIM_Kolorado_Idle,
.anim_D = ANIM_Kolorado_Idle,
.anim_E = ANIM_Kolorado_Idle,
.anim_F = ANIM_Kolorado_Idle,
},
.drops = NPC_NO_DROPS,
.animations = KOLORADO_ANIMS,
.tattle = MSG_NpcTattle_Whale,
},
{
.id = NPC_Kolorado_02,
.settings = &N(NpcSettings_Kolorado_02),
.settings = &N(NpcSettings_Kolorado),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_800 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Kolorado_02),
.drops = {
.dropFlags = NPC_DROP_FLAG_80,
.heartDrops = NO_DROPS,
.flowerDrops = NO_DROPS,
},
.animations = {
.idle = ANIM_Kolorado_Idle,
.walk = ANIM_Kolorado_Walk,
.run = ANIM_Kolorado_Run,
.chase = ANIM_Kolorado_Run,
.anim_4 = ANIM_Kolorado_Idle,
.anim_5 = ANIM_Kolorado_Idle,
.death = ANIM_Kolorado_Idle,
.hit = ANIM_Kolorado_Idle,
.anim_8 = ANIM_Kolorado_Idle,
.anim_9 = ANIM_Kolorado_Idle,
.anim_A = ANIM_Kolorado_Idle,
.anim_B = ANIM_Kolorado_Idle,
.anim_C = ANIM_Kolorado_Idle,
.anim_D = ANIM_Kolorado_Idle,
.anim_E = ANIM_Kolorado_Idle,
.anim_F = ANIM_Kolorado_Idle,
},
.drops = NPC_NO_DROPS,
.animations = KOLORADO_ANIMS,
.tattle = MSG_NpcTattle_Kolorado,
},
{
@ -767,198 +668,72 @@ StaticNpc N(D_8024488C_B24DCC)[] = {
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_800 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_JrTroopa),
.drops = {
.dropFlags = NPC_DROP_FLAG_80,
.heartDrops = NO_DROPS,
.flowerDrops = 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,
},
.drops = NPC_NO_DROPS,
.animations = JR_TROOPA_ANIMS,
},
};
StaticNpc N(D_80244E5C_B2539C) = {
StaticNpc N(NpcData_HeartPlant_01) = {
.id = NPC_HeartPlant_01,
.settings = &N(NpcSettings_HeartPlant_01),
.settings = &N(NpcSettings_HeartPlant),
.pos = { 455.0f, 0.0f, 115.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_100 | ENEMY_FLAG_800 | ENEMY_FLAG_8000 | ENEMY_FLAG_400000,
.drops = {
.dropFlags = NPC_DROP_FLAG_80,
.heartDrops = NO_DROPS,
.flowerDrops = NO_DROPS,
},
.animations = {
.idle = ANIM_HeartPlant_Anim00,
.walk = ANIM_HeartPlant_Anim00,
.run = ANIM_HeartPlant_Anim00,
.chase = ANIM_HeartPlant_Anim00,
.anim_4 = ANIM_HeartPlant_Anim00,
.anim_5 = ANIM_HeartPlant_Anim00,
.death = ANIM_HeartPlant_Anim00,
.hit = ANIM_HeartPlant_Anim00,
.anim_8 = ANIM_HeartPlant_Anim00,
.anim_9 = ANIM_HeartPlant_Anim00,
.anim_A = ANIM_HeartPlant_Anim00,
.anim_B = ANIM_HeartPlant_Anim00,
.anim_C = ANIM_HeartPlant_Anim00,
.anim_D = ANIM_HeartPlant_Anim00,
.anim_E = ANIM_HeartPlant_Anim00,
.anim_F = ANIM_HeartPlant_Anim00,
},
.drops = NPC_NO_DROPS,
.animations = HEART_PLANT_ANIMS,
.tattle = MSG_NpcTattle_HeartPlant,
};
StaticNpc N(D_8024504C_B2558C) = {
StaticNpc N(NpcData_HeartPlant_02) = {
.id = NPC_HeartPlant_02,
.settings = &N(NpcSettings_HeartPlant_01),
.settings = &N(NpcSettings_HeartPlant),
.pos = { 167.0f, 0.0f, 404.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_100 | ENEMY_FLAG_800 | ENEMY_FLAG_8000 | ENEMY_FLAG_400000,
.drops = {
.dropFlags = NPC_DROP_FLAG_80,
.heartDrops = NO_DROPS,
.flowerDrops = NO_DROPS,
},
.animations = {
.idle = ANIM_HeartPlant_Anim00,
.walk = ANIM_HeartPlant_Anim00,
.run = ANIM_HeartPlant_Anim00,
.chase = ANIM_HeartPlant_Anim00,
.anim_4 = ANIM_HeartPlant_Anim00,
.anim_5 = ANIM_HeartPlant_Anim00,
.death = ANIM_HeartPlant_Anim00,
.hit = ANIM_HeartPlant_Anim00,
.anim_8 = ANIM_HeartPlant_Anim00,
.anim_9 = ANIM_HeartPlant_Anim00,
.anim_A = ANIM_HeartPlant_Anim00,
.anim_B = ANIM_HeartPlant_Anim00,
.anim_C = ANIM_HeartPlant_Anim00,
.anim_D = ANIM_HeartPlant_Anim00,
.anim_E = ANIM_HeartPlant_Anim00,
.anim_F = ANIM_HeartPlant_Anim00,
},
.drops = NPC_NO_DROPS,
.animations = HEART_PLANT_ANIMS,
.tattle = MSG_NpcTattle_HeartPlant,
};
StaticNpc N(D_8024523C_B2577C) = {
StaticNpc N(NpcData_HeartPlant_03) = {
.id = NPC_HeartPlant_03,
.settings = &N(NpcSettings_HeartPlant_01),
.settings = &N(NpcSettings_HeartPlant),
.pos = { 90.0f, 0.0f, 316.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_100 | ENEMY_FLAG_800 | ENEMY_FLAG_8000 | ENEMY_FLAG_400000,
.drops = {
.dropFlags = NPC_DROP_FLAG_80,
.heartDrops = NO_DROPS,
.flowerDrops = NO_DROPS,
},
.animations = {
.idle = ANIM_HeartPlant_Anim00,
.walk = ANIM_HeartPlant_Anim00,
.run = ANIM_HeartPlant_Anim00,
.chase = ANIM_HeartPlant_Anim00,
.anim_4 = ANIM_HeartPlant_Anim00,
.anim_5 = ANIM_HeartPlant_Anim00,
.death = ANIM_HeartPlant_Anim00,
.hit = ANIM_HeartPlant_Anim00,
.anim_8 = ANIM_HeartPlant_Anim00,
.anim_9 = ANIM_HeartPlant_Anim00,
.anim_A = ANIM_HeartPlant_Anim00,
.anim_B = ANIM_HeartPlant_Anim00,
.anim_C = ANIM_HeartPlant_Anim00,
.anim_D = ANIM_HeartPlant_Anim00,
.anim_E = ANIM_HeartPlant_Anim00,
.anim_F = ANIM_HeartPlant_Anim00,
},
.drops = NPC_NO_DROPS,
.animations = HEART_PLANT_ANIMS,
.tattle = MSG_NpcTattle_HeartPlant,
};
StaticNpc N(D_8024542C_B2596C) = {
StaticNpc N(NpcData_HeartPlant_04) = {
.id = NPC_HeartPlant_04,
.settings = &N(NpcSettings_HeartPlant_01),
.settings = &N(NpcSettings_HeartPlant),
.pos = { 424.0f, 0.0f, 182.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_100 | ENEMY_FLAG_800 | ENEMY_FLAG_8000 | ENEMY_FLAG_400000,
.drops = {
.dropFlags = NPC_DROP_FLAG_80,
.heartDrops = NO_DROPS,
.flowerDrops = NO_DROPS,
},
.animations = {
.idle = ANIM_HeartPlant_Anim00,
.walk = ANIM_HeartPlant_Anim00,
.run = ANIM_HeartPlant_Anim00,
.chase = ANIM_HeartPlant_Anim00,
.anim_4 = ANIM_HeartPlant_Anim00,
.anim_5 = ANIM_HeartPlant_Anim00,
.death = ANIM_HeartPlant_Anim00,
.hit = ANIM_HeartPlant_Anim00,
.anim_8 = ANIM_HeartPlant_Anim00,
.anim_9 = ANIM_HeartPlant_Anim00,
.anim_A = ANIM_HeartPlant_Anim00,
.anim_B = ANIM_HeartPlant_Anim00,
.anim_C = ANIM_HeartPlant_Anim00,
.anim_D = ANIM_HeartPlant_Anim00,
.anim_E = ANIM_HeartPlant_Anim00,
.anim_F = ANIM_HeartPlant_Anim00,
},
.drops = NPC_NO_DROPS,
.animations = HEART_PLANT_ANIMS,
.tattle = MSG_NpcTattle_HeartPlant,
};
StaticNpc N(D_8024561C_B25B5C) = {
StaticNpc N(NpcData_HeartPlant_05) = {
.id = NPC_HeartPlant_05,
.settings = &N(NpcSettings_HeartPlant_01),
.settings = &N(NpcSettings_HeartPlant),
.pos = { 143.0f, 0.0f, 260.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_100 | ENEMY_FLAG_800 | ENEMY_FLAG_8000 | ENEMY_FLAG_400000,
.drops = {
.dropFlags = NPC_DROP_FLAG_80,
.heartDrops = NO_DROPS,
.flowerDrops = NO_DROPS,
},
.animations = {
.idle = ANIM_HeartPlant_Anim00,
.walk = ANIM_HeartPlant_Anim00,
.run = ANIM_HeartPlant_Anim00,
.chase = ANIM_HeartPlant_Anim00,
.anim_4 = ANIM_HeartPlant_Anim00,
.anim_5 = ANIM_HeartPlant_Anim00,
.death = ANIM_HeartPlant_Anim00,
.hit = ANIM_HeartPlant_Anim00,
.anim_8 = ANIM_HeartPlant_Anim00,
.anim_9 = ANIM_HeartPlant_Anim00,
.anim_A = ANIM_HeartPlant_Anim00,
.anim_B = ANIM_HeartPlant_Anim00,
.anim_C = ANIM_HeartPlant_Anim00,
.anim_D = ANIM_HeartPlant_Anim00,
.anim_E = ANIM_HeartPlant_Anim00,
.anim_F = ANIM_HeartPlant_Anim00,
},
.drops = NPC_NO_DROPS,
.animations = HEART_PLANT_ANIMS,
.tattle = MSG_NpcTattle_HeartPlant,
};
NpcGroupList N(DefaultNPCs) = {
NPC_GROUP(N(D_8024488C_B24DCC)),
NPC_GROUP(N(D_80244E5C_B2539C)),
NPC_GROUP(N(D_8024504C_B2558C)),
NPC_GROUP(N(D_8024523C_B2577C)),
NPC_GROUP(N(D_8024542C_B2596C)),
NPC_GROUP(N(D_8024561C_B25B5C)),
NPC_GROUP(N(NpcData_Characters)),
NPC_GROUP(N(NpcData_HeartPlant_01)),
NPC_GROUP(N(NpcData_HeartPlant_02)),
NPC_GROUP(N(NpcData_HeartPlant_03)),
NPC_GROUP(N(NpcData_HeartPlant_04)),
NPC_GROUP(N(NpcData_HeartPlant_05)),
{}
};

View File

@ -9,19 +9,16 @@
#include "mapfs/jan_01_shape.h"
#include "mapfs/jan_01_hit.h"
#include "sprite/npc/Kolorado.h"
#include "sprite/npc/Fuzzy.h"
enum {
NPC_Kolorado = 0,
NPC_Fuzzy_01 = 1,
NPC_Fuzzy_02 = 2,
NPC_Fuzzy_03 = 3,
NPC_Fuzzy_04 = 4,
NPC_Kolorado = 0,
NPC_JungleFuzzy_01 = 1,
NPC_JungleFuzzy_02 = 2,
NPC_JungleFuzzy_03 = 3,
NPC_JungleFuzzy_04 = 4,
};
enum {
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
};
#define NAMESPACE jan_01

View File

@ -2,7 +2,7 @@
#include "effects.h"
#include "world/common/enemy/complete/JungleFuzzy_Wander.inc.c"
#include "world/common/enemy/complete/Fuzzy.inc.c"
#include "world/common/enemy/complete/JungleFuzzy.inc.c"
#include "world/common/npc/Kolorado.inc.c"
#include "world/common/todo/SetCamera0Flag1000.inc.c"
#include "world/common/todo/UnsetCamera0Flag1000.inc.c"
@ -49,7 +49,7 @@ EvtScript N(EVS_NpcIdle_Kolorado) = {
EVT_CALL(PlaySoundAtPlayer, SOUND_262, 0)
EVT_CALL(ShowEmote, NPC_Kolorado, EMOTE_EXCLAMATION, 0, 25, FALSE, 0, 0, 0, 0)
EVT_CALL(PlaySoundAtNpc, NPC_PARTNER, SOUND_262, 0)
EVT_CALL(ShowEmote, NPC_PARTNER, EMOTE_EXCLAMATION, 0, 25, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_PARTNER, EMOTE_EXCLAMATION, 0, 25, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(25)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_LABEL(0)
@ -63,7 +63,7 @@ EvtScript N(EVS_NpcIdle_Kolorado) = {
EVT_CALL(InterruptUsePartner)
EVT_END_IF
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(RemoveNpc, NPC_Fuzzy_01)
EVT_CALL(RemoveNpc, NPC_JungleFuzzy_01)
EVT_CALL(ShowMessageAtScreenPos, MSG_CH5_0010, 0, 60)
EVT_CALL(InterpPlayerYaw, 270, 4)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Kolorado_Panic)
@ -152,7 +152,7 @@ EvtScript N(EVS_NpcInit_Kolorado) = {
EVT_END
};
EvtScript N(EVS_NpcIdle_Fuzzy_01) = {
EvtScript N(EVS_NpcIdle_JungleFuzzy_01) = {
EVT_CHILD_THREAD
EVT_CALL(GetNpcPos, NPC_Kolorado, LVar3, LVar1, LVar2)
EVT_SET(LVar4, LVar3)
@ -206,7 +206,7 @@ EvtScript N(EVS_NpcIdle_Fuzzy_01) = {
EVT_END
};
EvtScript N(EVS_NpcDefeat_FuzzyBoss) = {
EvtScript N(EVS_NpcDefeat_JungleFuzzyBoss) = {
EVT_CALL(GetBattleOutcome, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(OUTCOME_PLAYER_WON)
@ -256,12 +256,12 @@ EvtScript N(EVS_NpcDefeat_FuzzyBoss) = {
EVT_END
};
EvtScript N(EVS_NpcInit_Fuzzy_01) = {
EvtScript N(EVS_NpcInit_JungleFuzzy_01) = {
EVT_IF_LT(GB_StoryProgress, STORY_CH5_KOLORADO_ESCAPED_FUZZIES)
EVT_CALL(SetSelfVar, 0, 0)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Fuzzy_Jungle_Anim04)
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Fuzzy_01)))
EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_FuzzyBoss)))
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_JungleFuzzy_01)))
EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_JungleFuzzyBoss)))
EVT_ELSE
EVT_CALL(RemoveNpc, NPC_SELF)
EVT_END_IF
@ -281,18 +281,18 @@ StaticNpc N(NpcData_Kolorado) = {
.tattle = MSG_NpcTattle_Kolorado,
};
StaticNpc N(NpcData_Fuzzy_01) = {
.id = NPC_Fuzzy_01,
.settings = &N(NpcSettings_Fuzzy),
StaticNpc N(NpcData_JungleFuzzy_01) = {
.id = NPC_JungleFuzzy_01,
.settings = &N(NpcSettings_JungleFuzzy),
.pos = { -30.0f, 0.0f, 90.0f },
.yaw = 270,
.flags = ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS,
.init = &N(EVS_NpcInit_Fuzzy_01),
.init = &N(EVS_NpcInit_JungleFuzzy_01),
.drops = NPC_NO_DROPS,
.animations = JUNGLE_FUZZY_ANIMS,
};
EvtScript N(EVS_NpcInit_Fuzzy_02) = {
EvtScript N(EVS_NpcInit_JungleFuzzy_02) = {
EVT_IF_LT(GB_StoryProgress, STORY_CH5_KOLORADO_ESCAPED_FUZZIES)
EVT_CALL(RemoveNpc, NPC_SELF)
EVT_END_IF
@ -300,13 +300,13 @@ EvtScript N(EVS_NpcInit_Fuzzy_02) = {
EVT_END
};
StaticNpc N(NpcData_Fuzzy_02) = {
.id = NPC_Fuzzy_02,
StaticNpc N(NpcData_JungleFuzzy_02) = {
.id = NPC_JungleFuzzy_02,
.settings = &N(NpcSettings_JungleFuzzy_Wander),
.pos = { -350.0f, 3.0f, 40.0f },
.yaw = 270,
.flags = ENEMY_FLAG_400 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Fuzzy_02),
.init = &N(EVS_NpcInit_JungleFuzzy_02),
.drops = JUNGLE_FUZZY_DROPS,
.territory = {
.wander = {
@ -324,13 +324,13 @@ StaticNpc N(NpcData_Fuzzy_02) = {
.aiDetectFlags = AI_DETECT_SENSITIVE_MOTION,
};
StaticNpc N(NpcData_Fuzzy_03) = {
.id = NPC_Fuzzy_03,
StaticNpc N(NpcData_JungleFuzzy_03) = {
.id = NPC_JungleFuzzy_03,
.settings = &N(NpcSettings_JungleFuzzy_Wander),
.pos = { 0.0f, -10.0f, 110.0f },
.yaw = 90,
.flags = ENEMY_FLAG_400 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Fuzzy_02),
.init = &N(EVS_NpcInit_JungleFuzzy_02),
.drops = JUNGLE_FUZZY_DROPS,
.territory = {
.wander = {
@ -348,13 +348,13 @@ StaticNpc N(NpcData_Fuzzy_03) = {
.aiDetectFlags = AI_DETECT_SENSITIVE_MOTION,
};
StaticNpc N(NpcData_Fuzzy_04) = {
.id = NPC_Fuzzy_04,
StaticNpc N(NpcData_JungleFuzzy_04) = {
.id = NPC_JungleFuzzy_04,
.settings = &N(NpcSettings_JungleFuzzy_Wander),
.pos = { 350.0f, 3.0f, 40.0f },
.yaw = 270,
.flags = ENEMY_FLAG_400 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Fuzzy_02),
.init = &N(EVS_NpcInit_JungleFuzzy_02),
.drops = JUNGLE_FUZZY_DROPS,
.territory = {
.wander = {
@ -374,9 +374,9 @@ StaticNpc N(NpcData_Fuzzy_04) = {
NpcGroupList N(DefaultNPCs) = {
NPC_GROUP(N(NpcData_Kolorado)),
NPC_GROUP(N(NpcData_Fuzzy_01), BTL_JAN_FORMATION_0A, BTL_JAN_STAGE_00),
NPC_GROUP(N(NpcData_Fuzzy_02), BTL_JAN_FORMATION_0A, BTL_JAN_STAGE_00),
NPC_GROUP(N(NpcData_Fuzzy_03), BTL_JAN_FORMATION_0B, BTL_JAN_STAGE_00),
NPC_GROUP(N(NpcData_Fuzzy_04), BTL_JAN_FORMATION_0A, BTL_JAN_STAGE_00),
NPC_GROUP(N(NpcData_JungleFuzzy_01), BTL_JAN_FORMATION_0A, BTL_JAN_STAGE_00),
NPC_GROUP(N(NpcData_JungleFuzzy_02), BTL_JAN_FORMATION_0A, BTL_JAN_STAGE_00),
NPC_GROUP(N(NpcData_JungleFuzzy_03), BTL_JAN_FORMATION_0B, BTL_JAN_STAGE_00),
NPC_GROUP(N(NpcData_JungleFuzzy_04), BTL_JAN_FORMATION_0A, BTL_JAN_STAGE_00),
{}
};

View File

@ -394,7 +394,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_Yoshi),
.pos = { 323.0f, 30.0f, 412.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_VillageLeader),
.drops = NPC_NO_DROPS,
.animations = YOSHI_LEADER_ANIMS,
@ -405,7 +405,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_Yoshi),
.pos = { 172.0f, 30.0f, 418.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Councillor),
.drops = NPC_NO_DROPS,
.animations = YOSHI_COUNCILLOR_ANIMS,
@ -417,7 +417,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_Yoshi_Patrol),
.pos = { -520.0f, 0.0f, -270.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_Yoshi_01),
.drops = NPC_NO_DROPS,
.territory = {
@ -442,7 +442,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_Yoshi_Patrol),
.pos = { 180.0f, 0.0f, -520.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_Yoshi_02),
.drops = NPC_NO_DROPS,
.territory = {
@ -468,7 +468,7 @@ StaticNpc N(NpcData_Townsfolk)[] = {
.settings = &N(NpcSettings_Yoshi_Patrol),
.pos = { 600.0f, 0.0f, -150.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_Yoshi_03),
.drops = NPC_NO_DROPS,
.territory = {
@ -495,7 +495,7 @@ StaticNpc N(NpcData_ChuckQuizmo) = {
.settings = &N(NpcSettings_ChuckQuizmo),
.pos = { -150.0f, 15.0f, 300.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.initVarCount = 1,
.initVar = { .bytes = { 0, QUIZ_AREA_JAN, QUIZ_COUNT_JAN, QUIZ_MAP_JAN_02 }},
.drops = NPC_NO_DROPS,

View File

@ -9,27 +9,25 @@
#include "mapfs/jan_03_shape.h"
#include "mapfs/jan_03_hit.h"
#include "sprite/npc/WorldSushie.h"
enum {
NPC_Toad = 0,
NPC_Yoshi_01 = 1,
NPC_VillageLeader = 2,
NPC_Yoshi_02 = 3,
NPC_Yoshi_03 = 4,
NPC_YoshiKid_01 = 5,
NPC_YoshiKid_02 = 6,
NPC_YoshiKid_03 = 7,
NPC_YoshiKid_04 = 8,
NPC_YoshiKid_05 = 9,
NPC_Raven_01 = 10,
NPC_Raven_02 = 11,
NPC_Raven_03 = 12,
NPC_Raven_04 = 13,
NPC_Raven_05 = 14,
NPC_Kolorado = 15,
NPC_Sushie = 16,
NPC_ChuckQuizmo = 17,
NPC_Toad = 0,
NPC_Yoshi_01 = 1,
NPC_VillageLeader = 2,
NPC_Yoshi_02 = 3,
NPC_Yoshi_03 = 4,
NPC_YoshiKid_01 = 5,
NPC_YoshiKid_02 = 6,
NPC_YoshiKid_03 = 7,
NPC_YoshiKid_04 = 8,
NPC_YoshiKid_05 = 9,
NPC_Raven_01 = 10,
NPC_Raven_02 = 11,
NPC_Raven_03 = 12,
NPC_Raven_04 = 13,
NPC_Raven_05 = 14,
NPC_Kolorado = 15,
NPC_Sushie = 16,
NPC_ChuckQuizmo = 17,
};
#define NAMESPACE jan_03

View File

@ -2,7 +2,6 @@
#include "effects.h"
#include "world/common/entity/Pipe.inc.c"
#include "world/common/entity/Pipe.data.inc.c"
#include "world/common/atomic/TexturePan.inc.c"
#include "world/common/atomic/TexturePan.data.inc.c"

View File

@ -13,15 +13,7 @@
#include "world/common/npc/Raven.inc.c"
#define NAME_SUFFIX
NpcSettings N(NpcSettings_Sushie) = {
.height = 23,
.radius = 22,
.level = 14,
.onHit = &EnemyNpcHit,
.onDefeat = &EnemyNpcDefeat,
.actionFlags = AI_ACTION_JUMP_WHEN_SEE_PLAYER,
};
#include "world/common/npc/Sushie.inc.c"
#include "world/common/npc/Kolorado.inc.c"
#include "world/common/complete/ToadHouseBlanketAnim.inc.c"
@ -676,7 +668,7 @@ EvtScript N(EVS_NpcInteract_Kolorado) = {
EVT_WAIT(15)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Kolorado_Idle)
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_262, 0)
EVT_CALL(ShowEmote, NPC_SELF, EMOTE_EXCLAMATION, 0, 20, TRUE, 0, 0, 0, 0)
EVT_CALL(ShowEmote, NPC_SELF, EMOTE_EXCLAMATION, 0, 20, EMOTER_NPC, 0, 0, 0, 0)
EVT_WAIT(25)
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_CH5_001A)
EVT_GIVE_KEY_REWARD(ITEM_MAGICAL_SEED4)
@ -770,7 +762,7 @@ StaticNpc N(NpcData_VillageLeader) = {
.settings = &N(NpcSettings_Yoshi),
.pos = { -300.0f, 0.0f, -70.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_VillageLeader),
.drops = NPC_NO_DROPS,
.animations = YOSHI_LEADER_ANIMS,
@ -790,27 +782,10 @@ StaticNpc N(NpcData_Sushie) = {
.settings = &N(NpcSettings_Sushie),
.pos = { -425.0f, 0.0f, -350.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_Sushie),
.drops = NPC_NO_DROPS,
.animations = {
.idle = ANIM_WorldSushie_Idle,
.walk = ANIM_WorldSushie_Idle,
.run = ANIM_WorldSushie_Idle,
.chase = ANIM_WorldSushie_Idle,
.anim_4 = ANIM_WorldSushie_Idle,
.anim_5 = ANIM_WorldSushie_Idle,
.death = ANIM_WorldSushie_Idle,
.hit = ANIM_WorldSushie_Idle,
.anim_8 = ANIM_WorldSushie_Idle,
.anim_9 = ANIM_WorldSushie_Idle,
.anim_A = ANIM_WorldSushie_Idle,
.anim_B = ANIM_WorldSushie_Idle,
.anim_C = ANIM_WorldSushie_Idle,
.anim_D = ANIM_WorldSushie_Idle,
.anim_E = ANIM_WorldSushie_Idle,
.anim_F = ANIM_WorldSushie_Idle,
},
.animations = SUSHIE_ANIMS,
.extraAnimations = N(ExtraAnims_Sushie),
.tattle = MSG_NpcTattle_Sushie,
};
@ -828,7 +803,7 @@ StaticNpc N(NpcData_Kolorado) = {
.settings = &N(NpcSettings_Kolorado),
.pos = { -475.0f, 0.0f, -75.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_Kolorado),
.drops = NPC_NO_DROPS,
.animations = KOLORADO_ANIMS,
@ -842,7 +817,7 @@ StaticNpc N(NpcData_Toad)[] = {
.settings = &N(NpcSettings_Toad_Stationary),
.pos = { 275.0f, 0.0f, -70.0f },
.yaw = 0,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_Toad),
.drops = NPC_NO_DROPS,
.animations = TOAD_RED_ANIMS,
@ -853,7 +828,7 @@ StaticNpc N(NpcData_Toad)[] = {
.settings = &N(NpcSettings_Yoshi),
.pos = { 125.0f, 30.0f, -425.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_Yoshi_01),
.drops = NPC_NO_DROPS,
.animations = YOSHI_BLUE_ANIMS,
@ -864,7 +839,7 @@ StaticNpc N(NpcData_Toad)[] = {
.settings = &N(NpcSettings_Yoshi_Patrol),
.pos = { -350.0f, 0.0f, -220.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_Yoshi_02),
.drops = NPC_NO_DROPS,
.territory = {
@ -889,7 +864,7 @@ StaticNpc N(NpcData_Toad)[] = {
.settings = &N(NpcSettings_Yoshi_Patrol),
.pos = { -100.0f, 0.0f, -80.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_Yoshi_03),
.drops = NPC_NO_DROPS,
.territory = {
@ -914,7 +889,7 @@ StaticNpc N(NpcData_Toad)[] = {
.settings = &N(NpcSettings_YoshiKid_Patrol),
.pos = { -450.0f, 0.0f, -160.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_YoshiKid_01),
.drops = NPC_NO_DROPS,
.territory = {
@ -942,7 +917,7 @@ StaticNpc N(NpcData_Toad)[] = {
.settings = &N(NpcSettings_YoshiKid_Patrol),
.pos = { -340.0f, 0.0f, -385.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_YoshiKid_02),
.drops = NPC_NO_DROPS,
.territory = {
@ -968,7 +943,7 @@ StaticNpc N(NpcData_Toad)[] = {
.settings = &N(NpcSettings_YoshiKid_Patrol),
.pos = { -260.0f, 0.0f, -220.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_YoshiKid_03),
.drops = NPC_NO_DROPS,
.territory = {
@ -994,7 +969,7 @@ StaticNpc N(NpcData_Toad)[] = {
.settings = &N(NpcSettings_YoshiKid_Patrol),
.pos = { -460.0f, 0.0f, 150.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_YoshiKid_04),
.drops = NPC_NO_DROPS,
.territory = {
@ -1020,7 +995,7 @@ StaticNpc N(NpcData_Toad)[] = {
.settings = &N(NpcSettings_YoshiKid_Patrol),
.pos = { -320.0f, 0.0f, 80.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.init = &N(EVS_NpcInit_YoshiKid_05),
.drops = NPC_NO_DROPS,
.territory = {
@ -1056,7 +1031,7 @@ StaticNpc N(NpcData_Ravens)[] = {
.settings = &N(NpcSettings_Raven),
.pos = { -650.0f, 374.0f, -150.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Raven),
.drops = NPC_NO_DROPS,
.animations = RAVEN_ANIMS,
@ -1068,7 +1043,7 @@ StaticNpc N(NpcData_Ravens)[] = {
.settings = &N(NpcSettings_Raven),
.pos = { -645.0f, 457.0f, -255.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Raven),
.drops = NPC_NO_DROPS,
.animations = RAVEN_ANIMS,
@ -1078,7 +1053,7 @@ StaticNpc N(NpcData_Ravens)[] = {
.settings = &N(NpcSettings_Raven),
.pos = { -570.0f, 374.0f, -300.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Raven),
.drops = NPC_NO_DROPS,
.animations = RAVEN_ANIMS,
@ -1089,7 +1064,7 @@ StaticNpc N(NpcData_Ravens)[] = {
.settings = &N(NpcSettings_Raven),
.pos = { -500.0f, 374.0f, -285.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Raven),
.drops = NPC_NO_DROPS,
.animations = RAVEN_ANIMS,
@ -1100,7 +1075,7 @@ StaticNpc N(NpcData_Ravens)[] = {
.settings = &N(NpcSettings_Raven),
.pos = { -450.0f, 374.0f, -175.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Raven),
.drops = NPC_NO_DROPS,
.animations = RAVEN_ANIMS,
@ -1113,7 +1088,7 @@ StaticNpc N(NpcData_ChuckQuizmo) = {
.settings = &N(NpcSettings_ChuckQuizmo),
.pos = { 300.0f, 0.0f, 400.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_2000,
.initVarCount = 1,
.initVar = { .bytes = { 0, QUIZ_AREA_JAN, QUIZ_COUNT_JAN, QUIZ_MAP_JAN_03 }},
.drops = NPC_NO_DROPS,

View File

@ -1,12 +0,0 @@
#include "jan_04.h"
static char* N(exit_str_0) = "kmr_24";
static char* N(exit_str_1) = "jan_05";
s32 N(get_tattle)(void) {
if (evt_get_variable(NULL, GB_StoryProgress) < STORY_CH5_SUSHIE_JOINED_PARTY) {
return MSG_MapTattle_jan_04_before;
} else {
return MSG_MapTattle_jan_04_after;
}
}

View File

@ -1,4 +0,0 @@
#include "jan_04.h"
#include "world/common/atomic/TexturePan.inc.c"

View File

@ -1,9 +0,0 @@
#include "jan_04.h"
#include "world/common/todo/StashVars.inc.c"
#include "world/common/todo/GetItemName.inc.c"
#include "world/common/todo/SomeItemEntityFunc.inc.c"
#include "world/common/todo/IsItemBadge.inc.c"

View File

@ -1,3 +0,0 @@
#include "jan_04.h"
#include "world/common/util/ChangeNpcToPartner.inc.c"

View File

@ -1,4 +0,0 @@
#include "jan_04.h"
#include "common/foliage.inc.c"

View File

@ -1,28 +0,0 @@
#include "jan_04.h"
#define PARTY_IMAGE "party_opuku"
BSS PAL_BIN N(palette)[256];
BSS IMG_BIN N(raster)[0x3D90]; // similar to LoadPartyImage include but with D_8024A290 in the middle randomly
BSS Evt* D_8024A290;
BSS char D_8024A294[0xC]; // padding?
BSS MessageImageData N(image);
API_CALLABLE(N(LoadPartyImage)) {
u32 decompressedSize;
void* compressed = load_asset_by_name(PARTY_IMAGE, &decompressedSize);
decode_yay0(compressed, &N(palette));
general_heap_free(compressed);
N(image).raster = N(raster);
N(image).palette = N(palette);
N(image).width = 150;
N(image).height = 105;
N(image).format = G_IM_FMT_CI;
N(image).bitDepth = G_IM_SIZ_8b;
set_message_images(&N(image));
return ApiStatus_DONE2;
}
const char* N(exit_str_2) = "flo_00\0\0\0\0\0\0\0";

View File

@ -1,48 +0,0 @@
#include "jan_04.h"
#include "world/common/todo/SetEntityPositionF.inc.c"
#include "world/common/todo/GetEntityPosition.inc.c"
ApiStatus func_80240BE8_B45358(Evt* script, s32 isInitialCall) {
Entity* entity = get_entity_by_index(script->varTable[10]);
if (isInitialCall) {
script->functionTemp[0] = 0;
script->functionTemp[1] = 60;
}
entity->scale.x = (60 - script->functionTemp[1]) / 60.0f;
entity->scale.y = (60 - script->functionTemp[1]) / 60.0f;
entity->scale.z = (60 - script->functionTemp[1]) / 60.0f;
entity->rotation.y = (1.0f - cos_rad(entity->scale.y * PI)) * 990.0 * 0.25f;
script->functionTemp[1]--;
if (script->functionTemp[1] == -1) {
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
const char* N(exit_str_0) = "jan_04\0"; // remove \0 when this is part of a script and not an isolated symbol
const char* N(exit_str_1) = "jan_04";
ApiStatus func_80240D0C_B4547C(Evt* script, s32 isInitialCall) {
Entity* entity = get_entity_by_index(script->varTable[10]);
if (isInitialCall) {
script->functionTemp[0] = -30;
}
entity->rotation.x = script->functionTemp[0];
entity->rotation.z = script->functionTemp[0];
script->functionTemp[0]++;
if (script->functionTemp[0] == 1) {
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
#define NAMESPACE dup_jan_04
#include "common/foliage.inc.c"
#define NAMESPACE jan_04

View File

@ -1,39 +0,0 @@
#include "jan_04.h"
#include "world/partners.h"
extern s32 D_8024625C_B4A9CC;
extern Evt* D_8024A290;
ApiStatus func_80240FC0_B45730(Evt* script, s32 isInitialCall) {
PlayerStatus* playerStatus = &gPlayerStatus;
EvtScript* rideScript;
switch (D_8024625C_B4A9CC) {
case 0:
rideScript = partner_get_ride_script();
if (rideScript != NULL) {
Evt* newScript;
D_8024625C_B4A9CC++;
newScript = start_script(rideScript, EVT_PRIORITY_0, EVT_FLAG_RUN_IMMEDIATELY);
newScript->varTable[1] = playerStatus->position.x - 10.0f;
newScript->varTable[2] = playerStatus->position.y;
newScript->varTable[3] = playerStatus->position.z;
D_8024A290 = newScript;
newScript->varTable[12] = 1;
}
break;
case 1:
case 2:
D_8024625C_B4A9CC++;
break;
case 3:
wPartnerNpc->yaw = 270.0f;
playerStatus->targetYaw = 270.0f;
playerStatus->currentYaw = 270.0f;
playerStatus->spriteFacingAngle = 180.0f;
D_8024A290->functionTemp[1] = 1;
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}

View File

@ -2,8 +2,51 @@
/// @brief Jade Jungle - Sushi Tree
#include "common.h"
#include "../jan.h"
#include "message_ids.h"
#include "map.h"
#include "../jan.h"
#include "mapfs/jan_04_shape.h"
#include "mapfs/jan_04_hit.h"
#include "sprite/npc/WorldSushie.h"
#include "sprite/npc/YoshiKid.h"
enum {
NPC_Sushie = 0,
NPC_Bubulb = 1,
NPC_YoshiKid_01 = 2,
NPC_YoshiKid_02 = 3,
NPC_YoshiKid_03 = 4,
NPC_YoshiKid_04 = 5,
NPC_YoshiKid_05 = 6,
};
enum {
MV_Unk_00 = MapVar(0),
MV_Unk_01 = MapVar(1),
};
enum {
MF_TreeDrop_Letter = MapFlag(10),
};
#define NAMESPACE jan_04
extern EvtScript N(EVS_Main);
extern EvtScript N(EVS_SetupMusic);
extern EvtScript N(EVS_PushNewPartnerSong);
extern EvtScript N(EVS_PopSong);
extern EvtScript N(EVS_GotoMap_kmr_24_0);
extern EvtScript N(EVS_Scene_TreasureChest);
extern EvtScript N(EVS_Scene_Epilogue);
extern EvtScript N(EVS_SetupTrees);
extern EvtScript N(EVS_SetupBushes);
extern EvtScript N(EVS_SetupUnused);
extern EvtScript N(EVS_MakeEntities);
extern EvtScript N(EVS_PlayDemoScene);
extern NpcGroupList N(DefaultNPCs);
extern NpcGroupList N(EpilogueNPCs);
API_CALLABLE(N(LoadPartyImage));

View File

@ -0,0 +1,25 @@
#include "jan_04.h"
s32 N(get_tattle)(void) {
if (evt_get_variable(NULL, GB_StoryProgress) < STORY_CH5_SUSHIE_JOINED_PARTY) {
return MSG_MapTattle_jan_04_before;
} else {
return MSG_MapTattle_jan_04_after;
}
}
EntryList N(Entrances) = {
[jan_04_ENTRY_0] { -483.0, 0.0, 0.0, 90.0 },
[jan_04_ENTRY_1] { 0.0, -100.0, 0.0, 90.0 },
[jan_04_ENTRY_2] { 0.0, -100.0, 0.0, 90.0 },
[jan_04_ENTRY_3] { 0.0, -100.0, 0.0, 90.0 },
[jan_04_ENTRY_4] { -110.0, -15.0, 204.0, 270.0 },
};
MapSettings N(settings) = {
.main = &N(EVS_Main),
.entryList = &N(Entrances),
.entryCount = ENTRY_COUNT(N(Entrances)),
.background = &gBackgroundImage,
.tattle = { .get = &N(get_tattle) },
};

View File

@ -0,0 +1,143 @@
#include "jan_04.h"
#include "world/partners.h"
extern Evt* D_8024A290;
EvtScript N(EVS_ProvideDemoInputs) = {
EVT_CALL(DemoJoystickXY, -40, 30)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -67, 50)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -67, 53)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -67, 60)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -67, 65)
EVT_WAIT(48)
EVT_CALL(DemoJoystickXY, -65, 66)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -63, 66)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -58, 68)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -53, 70)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -46, 72)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -41, 73)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -36, 74)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -34, 74)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -30, 75)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -27, 76)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -20, 77)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -14, 78)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -10, 79)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, -4, 79)
EVT_WAIT(2)
EVT_CALL(DemoSetButtons, BUTTON_C_DOWN)
EVT_WAIT(28)
EVT_CALL(DemoSetButtons, 0)
EVT_WAIT(25)
EVT_CALL(DemoJoystickXY, 4, 80)
EVT_WAIT(2)
EVT_CALL(DemoJoystickXY, 5, 80)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, 7, 81)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, 11, 81)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, 16, 80)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, 21, 79)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, 31, 77)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, 40, 75)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, 50, 72)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, 60, 70)
EVT_WAIT(1)
EVT_CALL(DemoJoystickXY, 64, 69)
EVT_WAIT(30)
EVT_IF_EQ(GF_DemoSceneDone, TRUE)
EVT_RETURN
EVT_END_IF
EVT_SET(GF_DemoSceneDone, TRUE)
EVT_CALL(GotoMapSpecial, EVT_PTR("jan_04"), jan_04_ENTRY_2, TRANSITION_2)
EVT_WAIT(110)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_MonitorDemoState) = {
EVT_WAIT(10)
EVT_LOOP(0)
EVT_CALL(GetDemoState, LVar0)
EVT_IF_EQ(LVar0, DEMO_STATE_CHANGE_MAP)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_IF_EQ(GF_DemoSceneDone, TRUE)
EVT_RETURN
EVT_END_IF
EVT_SET(GF_DemoSceneDone, TRUE)
EVT_CALL(GotoMapSpecial, EVT_PTR("jan_04"), jan_04_ENTRY_2, TRANSITION_3)
EVT_WAIT(100)
EVT_RETURN
EVT_END
};
s32 N(DemoInitState) = 0;
API_CALLABLE(N(SetupDemoScene)) {
PlayerStatus* playerStatus = &gPlayerStatus;
EvtScript* rideScriptSrc;
switch (N(DemoInitState)) {
case 0:
rideScriptSrc = partner_get_ride_script();
if (rideScriptSrc != NULL) {
Evt* newScript;
N(DemoInitState)++;
newScript = start_script(rideScriptSrc, EVT_PRIORITY_0, EVT_FLAG_RUN_IMMEDIATELY);
newScript->varTable[1] = playerStatus->position.x - 10.0f;
newScript->varTable[2] = playerStatus->position.y;
newScript->varTable[3] = playerStatus->position.z;
D_8024A290 = newScript;
newScript->varTable[12] = 1;
}
break;
case 1:
case 2:
N(DemoInitState)++;
break;
case 3:
wPartnerNpc->yaw = 270.0f;
playerStatus->targetYaw = 270.0f;
playerStatus->currentYaw = 270.0f;
playerStatus->spriteFacingAngle = 180.0f;
D_8024A290->functionTemp[1] = 1;
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
EvtScript N(EVS_PlayDemoScene) = {
EVT_CALL(N(SetupDemoScene))
EVT_SET(GF_DemoSceneDone, FALSE)
EVT_EXEC(N(EVS_MonitorDemoState))
EVT_EXEC(N(EVS_ProvideDemoInputs))
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,30 @@
#include "jan_04.h"
EvtScript N(EVS_SetupMusic) = {
EVT_CALL(GetEntryID, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_RANGE(jan_04_ENTRY_1, jan_04_ENTRY_2)
EVT_CALL(SetMusicTrack, 0, SONG_VOLCANO_ESCAPE, 0, 8)
EVT_CASE_EQ(jan_04_ENTRY_3)
EVT_CALL(FadeInMusic, 0, SONG_JADE_JUNGLE, 0, 3000, 0, 127)
EVT_CASE_DEFAULT
EVT_CALL(SetMusicTrack, 0, SONG_JADE_JUNGLE, 0, 8)
EVT_END_SWITCH
EVT_CALL(ClearAmbientSounds, 250)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_PushNewPartnerSong) = {
EVT_CALL(PushSong, SONG_NEW_PARTNER, 0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_PopSong) = {
EVT_CALL(FadeOutMusic, 0, 500)
EVT_WAIT(15)
EVT_CALL(PopSong)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,86 @@
#include "jan_04.h"
#include "world/common/atomic/TexturePan.inc.c"
#include "world/common/atomic/TexturePan.data.inc.c"
EvtScript N(EVS_GotoMap_kmr_24_0) = {
EVT_CALL(FadeOutMusic, 0, 1500)
EVT_CALL(GotoMapSpecial, EVT_PTR("kmr_24"), kmr_24_ENTRY_0, TRANSITION_9)
EVT_WAIT(100)
}; //@bug script not terminated
EvtScript N(EVS_ExitWalk_jan_05_2) = {
EVT_SET_GROUP(EVT_GROUP_1B)
EVT_CALL(UseExitHeading, 60, jan_04_ENTRY_0)
EVT_EXEC(ExitWalk)
EVT_CALL(GotoMap, EVT_PTR("jan_05"), jan_05_ENTRY_2)
EVT_WAIT(100)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_BindExitTriggers) = {
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_05_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_EnterMap) = {
EVT_CALL(GetEntryID, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(jan_04_ENTRY_0)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitw, COLLIDER_FLAGS_UPPER_MASK)
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
EVT_EXEC(EnterWalk)
EVT_CASE_RANGE(jan_04_ENTRY_1, jan_04_ENTRY_2)
EVT_EXEC(N(EVS_Scene_TreasureChest))
EVT_CASE_EQ(jan_04_ENTRY_3)
EVT_EXEC(N(EVS_Scene_Epilogue))
EVT_CASE_EQ(jan_04_ENTRY_4)
EVT_END_SWITCH
EVT_RETURN
EVT_END
};
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_JADE_JUNGLE)
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_CALL(GetEntryID, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(jan_04_ENTRY_0)
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
EVT_CASE_EQ(jan_04_ENTRY_3)
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(EpilogueNPCs)))
EVT_END_SWITCH
EVT_EXEC(N(EVS_MakeEntities))
EVT_EXEC(N(EVS_SetupTrees))
EVT_EXEC(N(EVS_SetupBushes))
EVT_EXEC(N(EVS_SetupUnused))
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o52, SURFACE_TYPE_DOCK_WALL)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o53, SURFACE_TYPE_DOCK_WALL)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o54, SURFACE_TYPE_DOCK_WALL)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o52, COLLIDER_FLAG_80000)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o53, COLLIDER_FLAG_80000)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o54, COLLIDER_FLAG_80000)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o1, SURFACE_TYPE_WATER)
EVT_CALL(MakeTransformGroup, MODEL_g12)
EVT_CALL(EnableTexPanning, MODEL_o61, TRUE)
EVT_THREAD
TEX_PAN_PARAMS_ID(TEX_PANNER_1)
TEX_PAN_PARAMS_STEP( -80, 140, 80, -100)
TEX_PAN_PARAMS_FREQ( 1, 1, 1, 1)
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
EVT_EXEC(N(EVS_UpdateTexturePan))
EVT_END_THREAD
EVT_CALL(GetDemoState, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_EXEC_WAIT(N(EVS_PlayDemoScene))
EVT_RETURN
EVT_END_IF
EVT_EXEC(N(EVS_EnterMap))
EVT_WAIT(1)
EVT_EXEC(N(EVS_SetupMusic))
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,18 @@
#include "jan_04.h"
#include "entity.h"
#include "world/common/entity/Chest.inc.c"
EvtScript N(EVS_OpenChest_VolcanoVase) = EVT_OPEN_CHEST_KEY(ITEM_VOLCANO_VASE, GF_JAN04_Chest_VolcanoVase);
EvtScript N(EVS_MakeEntities) = {
EVT_SWITCH(GB_StoryProgress)
EVT_CASE_RANGE(STORY_CH5_BEGAN_PEACH_MISSION, STORY_CH8_REACHED_PEACHS_CASTLE)
EVT_CALL(MakeEntity, EVT_PTR(Entity_Chest), 0, 0, 0, 0, 0, MAKE_ENTITY_END)
EVT_CALL(AssignChestFlag, GF_JAN04_Chest_VolcanoVase)
EVT_CALL(AssignScript, EVT_PTR(N(EVS_OpenChest_VolcanoVase)))
EVT_END_SWITCH
EVT_CALL(MakeItemEntity, ITEM_STAR_PIECE, 300, 0, -225, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_JAN04_Item_StarPiece)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,339 @@
#include "jan_04.h"
#include "world/common/npc/Sushie.inc.c"
#include "world/common/npc/Bubulb.inc.c"
#include "world/common/npc/YoshiKid.inc.c"
EvtScript N(EVS_ShakeTree_Sushie) = {
EVT_CALL(GetNpcVar, NPC_Sushie, 0, LVar0)
EVT_IF_EQ(LVar0, 2)
EVT_RETURN
EVT_END_IF
EVT_IF_EQ(AF_JAN_08, TRUE)
EVT_RETURN
EVT_END_IF
EVT_CALL(DisablePlayerInput, TRUE)
EVT_SET(AF_JAN_08, TRUE)
EVT_CALL(SetNpcFlagBits, NPC_Sushie, NPC_FLAG_8000, TRUE)
EVT_IF_EQ(GF_JAN04_SushieTreeHitCounterB, FALSE)
EVT_IF_EQ(GF_JAN04_SushieTreeHitCounterA, FALSE)
EVT_CALL(SetNpcJumpscale, NPC_Sushie, EVT_FLOAT(1.0))
EVT_CALL(PlaySoundAtNpc, NPC_Sushie, SOUND_2A0, 0)
EVT_CALL(NpcJump0, NPC_Sushie, 90, 140, -85, 20)
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 90, 140, -85)
EVT_CALL(SetPanTarget, CAM_DEFAULT, 90, 140, -85)
EVT_CALL(SetCamDistance, CAM_DEFAULT, 280)
EVT_CALL(SetCamPitch, CAM_DEFAULT, 16, EVT_FLOAT(-6.0))
EVT_CALL(SetCamSpeed, CAM_DEFAULT, 3)
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
EVT_CALL(SpeakToPlayer, NPC_Sushie, ANIM_WorldSushie_Talk, ANIM_WorldSushie_Idle, 0, MSG_CH5_00A1)
EVT_CALL(ResetCam, CAM_DEFAULT, EVT_FLOAT(90.0))
EVT_SET(GF_JAN04_SushieTreeHitCounterA, TRUE)
EVT_WAIT(10)
EVT_SET(AF_JAN_08, FALSE)
EVT_ELSE
EVT_CALL(SetNpcJumpscale, NPC_Sushie, EVT_FLOAT(1.0))
EVT_CALL(PlaySoundAtNpc, NPC_Sushie, SOUND_2A0, 0)
EVT_CALL(NpcJump0, NPC_Sushie, -10, 112, -80, 15)
EVT_SET(GF_JAN04_SushieTreeHitCounterA, FALSE)
EVT_SET(GF_JAN04_SushieTreeHitCounterB, TRUE)
EVT_WAIT(10)
EVT_SET(AF_JAN_08, FALSE)
EVT_END_IF
EVT_ELSE
EVT_CALL(SetNpcJumpscale, NPC_Sushie, EVT_FLOAT(1.0))
EVT_CALL(PlaySoundAtNpc, NPC_Sushie, SOUND_2A0, 0)
EVT_CALL(NpcJump0, NPC_Sushie, 50, 0, 0, 20)
EVT_SET(GF_JAN04_SushieTreeHitCounterA, TRUE)
EVT_CALL(EnableNpcShadow, NPC_Sushie, TRUE)
EVT_CALL(SetNpcAnimation, NPC_Sushie, ANIM_WorldSushie_Hurt)
EVT_CALL(SetNpcVar, NPC_Sushie, 0, 10)
EVT_UNBIND
EVT_END_IF
EVT_CALL(SetNpcFlagBits, NPC_Sushie, NPC_FLAG_8000, FALSE)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_Sushie_ScoldPlayerLeaving) = {
EVT_LABEL(1)
EVT_CALL(GetSelfVar, 0, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(0)
EVT_CALL(AwaitPlayerLeave, 0, 0, 170)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(SetSelfVar, 0, 2)
EVT_SET(LVar0, GF_JAN04_SushieTreeHitCounterA)
EVT_SET(LVar1, GF_JAN04_SushieTreeHitCounterB)
EVT_ADD(LVar0, LVar1)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(ShowMessageAtScreenPos, MSG_CH5_00A2, 160, 40)
EVT_ELSE
EVT_CALL(ShowMessageAtScreenPos, MSG_CH5_00A3, 160, 40)
EVT_END_IF
EVT_CALL(DisablePlayerInput, FALSE)
EVT_CALL(SetSelfVar, 0, 1)
EVT_CASE_EQ(1)
EVT_CALL(AwaitPlayerApproach, 0, 0, 130)
EVT_CALL(SetSelfVar, 0, 0)
EVT_END_SWITCH
EVT_WAIT(1)
EVT_GOTO(1)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_Sushie_ShoutAtChildren) = {
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(ShowMessageAtScreenPos, MSG_CH5_009E, 320, 60)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_CALL(AwaitPlayerApproach, 0, 0, 130)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(ShowMessageAtScreenPos, MSG_CH5_009F, 160, 40)
EVT_CALL(SetPlayerAnimation, ANIM_Mario_80022)
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
EVT_CALL(SetPanTarget, CAM_DEFAULT, 30, 140, -60)
EVT_CALL(SetCamDistance, CAM_DEFAULT, 300)
EVT_CALL(SetCamPitch, CAM_DEFAULT, 16, EVT_FLOAT(-6.0))
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(1.0))
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldSushie_Hurt, ANIM_WorldSushie_Idle, 0, MSG_CH5_00A0)
EVT_CALL(ResetCam, CAM_DEFAULT, 3)
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_RETURN
EVT_END
};
BombTrigger N(BombPos_SushieTree) = {
.pos = { 30.0f, 0.0f, -110.0f },
.radius = 0.0f
};
#include "world/common/util/ChangeNpcToPartner.inc.c"
EvtScript N(EVS_NpcIdle_Sushie) = {
EVT_SET(LVar0, GF_JAN04_SushieTreeHitCounterA)
EVT_SET(LVar1, GF_JAN04_SushieTreeHitCounterB)
EVT_ADD(LVar0, LVar1)
EVT_IF_EQ(LVar0, 0)
EVT_EXEC_WAIT(N(EVS_Sushie_ShoutAtChildren))
EVT_ELSE
EVT_CALL(SetSelfVar, 0, 1)
EVT_END_IF
EVT_SET(AF_JAN_08, FALSE)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Sushie)), TRIGGER_WALL_HAMMER, COLLIDER_o34, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Sushie)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_SushieTree)), 1, 0)
EVT_EXEC_GET_TID(N(EVS_Sushie_ScoldPlayerLeaving), LVar9)
EVT_LABEL(0)
EVT_CALL(GetSelfVar, 0, LVar0)
EVT_IF_NE(LVar0, 10)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_IF
EVT_KILL_THREAD(LVar9)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(SetPlayerSpeed, EVT_FLOAT(4.0))
EVT_CALL(PlayerMoveTo, 10, 0, 0)
EVT_CALL(PlayerFaceNpc, NPC_SELF, FALSE)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldSushie_Idle)
EVT_CALL(AdjustCam, CAM_DEFAULT, EVT_FLOAT(5.0), 20, 301, EVT_FLOAT(17.0), EVT_FLOAT(-7.0))
EVT_WAIT(10)
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldSushie_Talk, ANIM_WorldSushie_Idle, 0, MSG_CH5_00A4)
EVT_CALL(SetPlayerAnimation, ANIM_Mario_80007)
EVT_WAIT(40)
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldSushie_Talk, ANIM_WorldSushie_Idle, 0, MSG_CH5_00A5)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldSushie_Sad)
EVT_WAIT(30)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldSushie_Idle)
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldSushie_Talk, ANIM_WorldSushie_Idle, 0, MSG_CH5_00A6)
EVT_CALL(SetPlayerAnimation, ANIM_Mario_80007)
EVT_WAIT(40)
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldSushie_Talk, ANIM_WorldSushie_Idle, 0, MSG_CH5_00A7)
EVT_CALL(CloseMessage)
EVT_CALL(N(ChangeNpcToPartner), NPC_Sushie, PARTNER_SUSHIE)
EVT_CALL(N(LoadPartyImage))
EVT_EXEC(N(EVS_PushNewPartnerSong))
EVT_WAIT(15)
EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_018F, 160, 40)
EVT_EXEC(N(EVS_PopSong))
EVT_WAIT(10)
EVT_CALL(ResetCam, CAM_DEFAULT, EVT_FLOAT(5.0))
EVT_SET(GB_StoryProgress, STORY_CH5_SUSHIE_JOINED_PARTY)
EVT_CALL(EnablePartnerAI)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_Sushie) = {
EVT_CALL(GetEntryID, LVar0)
EVT_IF_EQ(LVar0, jan_04_ENTRY_3)
EVT_RETURN
EVT_END_IF
EVT_IF_EQ(GB_StoryProgress, STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldSushie_Sad)
EVT_CALL(SetNpcYaw, NPC_SELF, 270)
EVT_IF_EQ(GF_JAN04_SushieTreeHitCounterB, FALSE)
EVT_IF_EQ(GF_JAN04_SushieTreeHitCounterA, FALSE)
EVT_CALL(SetNpcPos, NPC_SELF, 55, 150, -95)
EVT_ELSE
EVT_CALL(SetNpcPos, NPC_SELF, 90, 140, -85)
EVT_END_IF
EVT_ELSE
EVT_IF_EQ(GF_JAN04_SushieTreeHitCounterA, FALSE)
EVT_CALL(SetNpcPos, NPC_SELF, -10, 112, -80)
EVT_ELSE
EVT_CALL(SetNpcPos, NPC_SELF, 50, 0, 0)
EVT_CALL(EnableNpcShadow, NPC_SELF, TRUE)
EVT_END_IF
EVT_END_IF
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Sushie)))
EVT_ELSE
EVT_CALL(RemoveNpc, NPC_SELF)
EVT_END_IF
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInteract_Bubulb) = {
EVT_SWITCH(GB_StoryProgress)
EVT_CASE_LT(STORY_CH5_RAFAEL_LEFT_NEST)
EVT_IF_EQ(GF_JAN04_Met_Bubulb, FALSE)
EVT_WAIT(30)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Bubulb_Yellow_PopUp)
EVT_WAIT(10)
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_BURROW_SURFACE, 0)
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_MOLE_POP, 0)
EVT_WAIT(35)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Bubulb_Yellow_Idle)
EVT_CALL(SetNpcCollisionSize, NPC_SELF, 45, 26)
EVT_CALL(SpeakToPlayer, NPC_Bubulb, ANIM_Bubulb_Yellow_Talk, ANIM_Bubulb_Yellow_Idle, 0, MSG_CH5_00A8)
EVT_SET(GF_JAN04_Met_Bubulb, TRUE)
EVT_CALL(SetTattleMessage, NPC_Bubulb, MSG_NpcTattle_JAN_Bubulb_Revealed)
EVT_RETURN
EVT_ELSE
EVT_CALL(SpeakToPlayer, NPC_Bubulb, ANIM_Bubulb_Yellow_Talk, ANIM_Bubulb_Yellow_Idle, 0, MSG_CH5_00A9)
EVT_END_IF
EVT_CASE_LT(STORY_CH5_TRADED_VASE_FOR_SEED)
EVT_CALL(SpeakToPlayer, NPC_Bubulb, ANIM_Bubulb_Yellow_Talk, ANIM_Bubulb_Yellow_Idle, 0, MSG_CH5_00AA)
EVT_CASE_LT(STORY_CH6_FLOWER_GATE_OPEN)
EVT_CALL(SpeakToPlayer, NPC_Bubulb, ANIM_Bubulb_Yellow_Talk, ANIM_Bubulb_Yellow_Idle, 0, MSG_CH5_00AB)
EVT_CASE_DEFAULT
EVT_CALL(SpeakToPlayer, NPC_Bubulb, ANIM_Bubulb_Yellow_Talk, ANIM_Bubulb_Yellow_Idle, 0, MSG_CH5_00AC)
EVT_END_SWITCH
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_Bubulb) = {
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Bubulb)))
EVT_IF_LT(GB_StoryProgress, STORY_CH5_RAFAEL_LEFT_NEST)
EVT_IF_EQ(GF_JAN04_Met_Bubulb, FALSE)
EVT_CALL(SetNpcCollisionSize, NPC_SELF, 25, 25)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Bubulb_Yellow_BuriedIdle)
EVT_CALL(SetTattleMessage, NPC_Bubulb, MSG_NpcTattle_MAC_Bubulb_Hidden)
EVT_END_IF
EVT_END_IF
EVT_RETURN
EVT_END
};
StaticNpc N(NpcData_Characters)[] = {
{
.id = NPC_Sushie,
.settings = &N(NpcSettings_Sushie),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Sushie),
.drops = NPC_NO_DROPS,
.animations = SUSHIE_ANIMS,
},
{
.id = NPC_Bubulb,
.settings = &N(NpcSettings_Bubulb),
.pos = { -230.0f, 0.0f, -320.0f },
.yaw = 90,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Bubulb),
.drops = NPC_NO_DROPS,
.animations = BUBULB_YELLOW_ANIMS,
.tattle = MSG_NpcTattle_JAN_Bubulb_Revealed,
},
};
StaticNpc N(NpcData_YoshiKids)[] = {
{
.id = NPC_YoshiKid_01,
.settings = &N(NpcSettings_YoshiKid),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4,
.drops = NPC_NO_DROPS,
.animations = YOSHI_KID_GREEN_ANIMS,
.tattle = MSG_NpcTattle_GreenYoshiKid,
},
{
.id = NPC_YoshiKid_02,
.settings = &N(NpcSettings_YoshiKid),
.pos = { 45.0f, 0.0f, -70.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4,
.drops = NPC_NO_DROPS,
.animations = YOSHI_KID_RED_ANIMS,
.tattle = MSG_NpcTattle_RedYoshiKid,
},
{
.id = NPC_YoshiKid_03,
.settings = &N(NpcSettings_YoshiKid),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4,
.drops = NPC_NO_DROPS,
.animations = YOSHI_KID_BLUE_ANIMS,
.tattle = MSG_NpcTattle_BlueYoshiKid,
},
{
.id = NPC_YoshiKid_04,
.settings = &N(NpcSettings_YoshiKid),
.pos = { 20.0f, 0.0f, -70.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4,
.drops = NPC_NO_DROPS,
.animations = YOSHI_KID_YELLOW_ANIMS,
.tattle = MSG_NpcTattle_YellowYoshiKid,
},
{
.id = NPC_YoshiKid_05,
.settings = &N(NpcSettings_YoshiKid),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4,
.drops = NPC_NO_DROPS,
.animations = YOSHI_KID_PURPLE_ANIMS,
.tattle = MSG_NpcTattle_PurpleYoshiKid,
},
};
NpcGroupList N(DefaultNPCs) = {
NPC_GROUP(N(NpcData_Characters)),
{}
};
NpcGroupList N(EpilogueNPCs) = {
NPC_GROUP(N(NpcData_Characters)),
NPC_GROUP(N(NpcData_YoshiKids)),
{}
};

View File

@ -0,0 +1,33 @@
#include "jan_04.h"
EvtScript N(D_80243750_B47EC0) = {
EVT_IF_EQ(MV_Unk_00, 0)
EVT_SET(MV_Unk_01, 6)
EVT_END_IF
EVT_ADD(MV_Unk_01, 2)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_80243798) = {
EVT_LABEL(0)
EVT_SUB(MV_Unk_01, 1)
EVT_ADD(MV_Unk_00, MV_Unk_01)
EVT_IF_LT(MV_Unk_00, 0)
EVT_SET(MV_Unk_01, 0)
EVT_SET(MV_Unk_00, 0)
EVT_END_IF
EVT_IF_GT(MV_Unk_00, 90)
EVT_SET(MV_Unk_01, 0)
EVT_SET(MV_Unk_00, 90)
EVT_END_IF
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_SetupUnused) = {
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,99 @@
#include "jan_04.h"
#define NAME_SUFFIX _Trees
#include "common/foliage.inc.c"
#define NAME_SUFFIX
FoliageModelList N(Tree1_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o94, MODEL_o95, MODEL_o96, MODEL_o97, MODEL_o98);
FoliageModelList N(Tree1_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o99);
FoliageVectorList N(Tree1_Effects) = {
.count = 2,
.vectors = {
{ -487.0f, 114.0f, -115.0f },
{ -402.0f, 114.0f, -125.0f },
}
};
ShakeTreeConfig N(ShakeTree_Tree1) = {
.leaves = &N(Tree1_LeafModels),
.trunk = &N(Tree1_TrunkModels),
.vectors = &N(Tree1_Effects),
};
BombTrigger N(BombPos_Tree1) = {
.pos = { -447.0f, 0.0f, -145.0f },
.radius = 0.0f
};
FoliageModelList N(Tree2_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o101, MODEL_o102, MODEL_o103, MODEL_o104, MODEL_o105);
FoliageModelList N(Tree2_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o100);
FoliageDropList N(Tree2_Drops) = {
.count = 1,
.drops = {
{
.itemID = ITEM_LETTER_TO_RUSS_T,
.pos = { 311, 92, -221 },
.spawnMode = ITEM_SPAWN_MODE_FALL_NEVER_VANISH,
.pickupFlag = GF_JAN04_Tree2_Letter04,
.spawnFlag = MF_TreeDrop_Letter,
},
}
};
FoliageVectorList N(Tree2_Effects) = {
.count = 2,
.vectors = {
{ 327.0f, 114.0f, -230.0f },
{ 412.0f, 114.0f, -240.0f },
}
};
ShakeTreeConfig N(ShakeTree_Tree2) = {
.leaves = &N(Tree2_LeafModels),
.trunk = &N(Tree2_TrunkModels),
.drops = &N(Tree2_Drops),
.vectors = &N(Tree2_Effects),
};
BombTrigger N(BombPos_Tree2) = {
.pos = { 367.0f, 0.0f, -260.0f },
.radius = 0.0f
};
FoliageModelList N(Tree3_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o63, MODEL_o64, MODEL_o65, MODEL_o66, MODEL_o67);
FoliageModelList N(Tree3_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o34);
FoliageVectorList N(Tree3_Effects) = {
.count = 2,
.vectors = {
{ -10.0f, 114.0f, -80.0f },
{ 75.0f, 114.0f, -90.0f },
}
};
ShakeTreeConfig N(ShakeTree_Tree3) = {
.leaves = &N(Tree3_LeafModels),
.trunk = &N(Tree3_TrunkModels),
.vectors = &N(Tree3_Effects),
};
BombTrigger N(BombPos_Tree3) = {
.pos = { 30.0f, 0.0f, -110.0f },
.radius = 0.0f
};
EvtScript N(EVS_SetupTrees) = {
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree1)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_WALL_HAMMER, COLLIDER_o156, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree1)), 1, 0)
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree2)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_WALL_HAMMER, COLLIDER_o157, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree2)), 1, 0)
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree3)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_WALL_HAMMER, COLLIDER_o34, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree3)), 1, 0)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,109 @@
#include "jan_04.h"
BSS PAL_BIN N(palette)[256];
BSS IMG_BIN N(raster)[0x3D90]; // similar to LoadPartyImage include but with D_8024A290 in the middle randomly
BSS Evt* D_8024A290;
BSS char D_8024A294[0xC]; // padding?
BSS MessageImageData N(image);
API_CALLABLE(N(LoadPartyImage)) {
u32 decompressedSize;
void* compressed = load_asset_by_name("party_opuku", &decompressedSize);
decode_yay0(compressed, &N(palette));
general_heap_free(compressed);
N(image).raster = N(raster);
N(image).palette = N(palette);
N(image).width = 150;
N(image).height = 105;
N(image).format = G_IM_FMT_CI;
N(image).bitDepth = G_IM_SIZ_8b;
set_message_images(&N(image));
return ApiStatus_DONE2;
}
Vec3f N(YoshiKidsRunPath)[] = {
{ -350.0, 0.0, 15.0 },
{ -220.0, 25.0, 15.0 },
{ -110.0, 0.0, 30.0 },
{ -50.0, 0.0, 130.0 },
{ 50.0, 0.0, 110.0 },
{ 160.0, 25.0, 160.0 },
{ 255.0, 0.0, 285.0 },
};
EvtScript N(EVS_Scene_Epilogue) = {
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(DisablePlayerPhysics, TRUE)
EVT_CALL(SetPlayerActionState, ACTION_STATE_LAND)
EVT_CALL(SetNpcPos, NPC_Sushie, -40, 0, 15)
EVT_CALL(SetNpcYaw, NPC_Sushie, 270)
EVT_CALL(SetNpcAnimation, NPC_Sushie, ANIM_WorldSushie_Read)
EVT_CALL(SetNpcAnimation, NPC_YoshiKid_04, ANIM_YoshiKid_Yellow_Sleep)
EVT_CALL(SetNpcAnimation, NPC_YoshiKid_02, ANIM_YoshiKid_Red_Sleep)
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, -20, 0, 0)
EVT_CALL(SetPanTarget, CAM_DEFAULT, -20, 0, 0)
EVT_CALL(SetCamDistance, CAM_DEFAULT, 350)
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(16.0), EVT_FLOAT(-7.5))
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
EVT_WAIT(90)
EVT_THREAD
EVT_CALL(SetNpcPos, NPC_YoshiKid_01, -350, 0, 15)
EVT_CALL(SetNpcAnimation, NPC_YoshiKid_01, ANIM_YoshiKid_Green_Run)
EVT_CALL(LoadPath, 90, EVT_PTR(N(YoshiKidsRunPath)), ARRAY_COUNT(N(YoshiKidsRunPath)), EASING_LINEAR)
EVT_LABEL(10)
EVT_CALL(GetNextPathPos)
EVT_CALL(SetNpcPos, NPC_YoshiKid_01, LVar1, LVar2, LVar3)
EVT_WAIT(1)
EVT_IF_EQ(LVar0, 1)
EVT_GOTO(10)
EVT_END_IF
EVT_END_THREAD
EVT_THREAD
EVT_WAIT(15)
EVT_CALL(SetNpcPos, NPC_YoshiKid_05, -350, 0, 15)
EVT_CALL(SetNpcAnimation, NPC_YoshiKid_05, ANIM_YoshiKid_Purple_Run)
EVT_CALL(LoadPath, 90, EVT_PTR(N(YoshiKidsRunPath)), ARRAY_COUNT(N(YoshiKidsRunPath)), EASING_LINEAR)
EVT_LABEL(11)
EVT_CALL(GetNextPathPos)
EVT_CALL(SetNpcPos, NPC_YoshiKid_05, LVar1, LVar2, LVar3)
EVT_WAIT(1)
EVT_IF_EQ(LVar0, 1)
EVT_GOTO(11)
EVT_END_IF
EVT_END_THREAD
EVT_WAIT(60)
EVT_CALL(InterpNpcYaw, NPC_Sushie, 90, 0)
EVT_CALL(SetNpcAnimation, NPC_Sushie, ANIM_WorldSushie_Talk)
EVT_CALL(SetNpcJumpscale, NPC_Sushie, EVT_FLOAT(2.0))
EVT_CALL(GetNpcPos, NPC_Sushie, LVar0, LVar1, LVar2)
EVT_CALL(NpcJump0, NPC_Sushie, LVar0, LVar1, LVar2, 10)
EVT_CALL(SetNpcAnimation, NPC_YoshiKid_01, ANIM_YoshiKid_Green_Talk)
EVT_CALL(SetNpcFlagBits, NPC_YoshiKid_03, NPC_FLAG_GRAVITY, TRUE)
EVT_CALL(SetNpcPos, NPC_YoshiKid_03, -350, 0, 15)
EVT_CALL(SetNpcAnimation, NPC_YoshiKid_03, ANIM_YoshiKid_Blue_Run)
EVT_CALL(SetNpcSpeed, NPC_YoshiKid_03, EVT_FLOAT(5.0))
EVT_CALL(NpcMoveTo, NPC_YoshiKid_03, -100, 0, 0)
EVT_CALL(SetNpcAnimation, NPC_YoshiKid_03, ANIM_YoshiKid_Blue_Idle)
EVT_CHILD_THREAD
EVT_WAIT(20)
EVT_CALL(SetNpcJumpscale, NPC_YoshiKid_03, EVT_FLOAT(2.0))
EVT_LOOP(10)
EVT_CALL(SetNpcAnimation, NPC_YoshiKid_03, ANIM_YoshiKid_Blue_Jump)
EVT_CALL(GetNpcPos, NPC_YoshiKid_03, LVar0, LVar1, LVar2)
EVT_CALL(NpcJump0, NPC_YoshiKid_03, LVar0, LVar1, LVar2, 10)
EVT_CALL(SetNpcAnimation, NPC_YoshiKid_03, ANIM_YoshiKid_Blue_Land)
EVT_WAIT(8)
EVT_END_LOOP
EVT_END_CHILD_THREAD
EVT_WAIT(90)
EVT_CALL(FadeOutMusic, 0, 1000)
EVT_CALL(GotoMap, EVT_PTR("flo_00"), flo_00_ENTRY_B)
EVT_WAIT(100)
EVT_RETURN
EVT_END
};
MAP_RODATA_PAD(2, epilogue);

View File

@ -0,0 +1,151 @@
#include "jan_04.h"
#include "entity.h"
#include "effects.h"
#include "world/common/todo/SetEntityPositionF.inc.c"
#include "world/common/todo/GetEntityPosition.inc.c"
API_CALLABLE(N(AnimateFlyingChestRotScale)) {
Entity* entity = get_entity_by_index(script->varTable[10]);
if (isInitialCall) {
script->functionTemp[0] = 0;
script->functionTemp[1] = 60;
}
entity->scale.x = (60 - script->functionTemp[1]) / 60.0f;
entity->scale.y = (60 - script->functionTemp[1]) / 60.0f;
entity->scale.z = (60 - script->functionTemp[1]) / 60.0f;
entity->rotation.y = (1.0f - cos_rad(entity->scale.y * PI)) * 990.0 * 0.25f;
script->functionTemp[1]--;
if (script->functionTemp[1] == -1) {
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
API_CALLABLE(N(AnimateFallingChestRot)) {
Entity* entity = get_entity_by_index(script->varTable[10]);
if (isInitialCall) {
script->functionTemp[0] = -30;
}
entity->rotation.x = script->functionTemp[0];
entity->rotation.z = script->functionTemp[0];
script->functionTemp[0]++;
if (script->functionTemp[0] == 1) {
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
Vec3f N(ChestFlightArc)[] = {
{ -40.0, 330.0, -900.0 },
{ -117.0, 420.0, -600.0 },
{ -195.0, 465.0, -300.0 },
{ -272.0, 465.0, 0.0 },
{ -350.0, 325.0, 300.0 },
{ -350.0, 250.0, 300.0 },
};
Vec3f N(ChestFallPath)[] = {
{ 10.0, 130.0, -20.0 },
{ 5.0, 75.0, -20.0 },
{ 0.0, 0.0, -20.0 },
};
Vec3f N(ChestBouncePath)[] = {
{ 0.0, 0.0, -20.0 },
{ 0.0, 30.0, -8.0 },
{ 0.0, 0.0, 0.0 },
};
EvtScript N(EVS_Scene_TreasureChest) = {
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(DisablePlayerPhysics, TRUE)
EVT_CALL(SetPlayerActionState, ACTION_STATE_LAND)
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_GRAVITY, FALSE)
EVT_CALL(GetEntryID, LVar0)
EVT_IF_EQ(LVar0, jan_04_ENTRY_1)
EVT_CALL(PlaySound, SOUND_302)
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, -350, 300, 0)
EVT_CALL(SetPanTarget, CAM_DEFAULT, -350, 300, 0)
EVT_CALL(SetCamPitch, CAM_DEFAULT, 10, EVT_FLOAT(-7.0))
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
EVT_CALL(MakeEntity, EVT_PTR(Entity_Chest), 0, 2650, 0, 148, MAKE_ENTITY_END)
EVT_SET(LVarA, LVar0)
EVT_THREAD
EVT_CALL(N(AnimateFlyingChestRotScale))
EVT_END_THREAD
EVT_THREAD
EVT_SET(LVar9, LVarA)
EVT_CALL(LoadPath, 70, EVT_PTR(N(ChestFlightArc)), ARRAY_COUNT(N(ChestFlightArc)), EASING_QUADRATIC_OUT)
EVT_LOOP(0)
EVT_CALL(GetNextPathPos)
EVT_CALL(N(SetEntityPositionF), LVar9, LVar1, LVar2, LVar3)
EVT_WAIT(1)
EVT_IF_EQ(LVar0, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_END_THREAD
EVT_WAIT(50)
EVT_CALL(GotoMap, EVT_PTR("jan_04"), jan_04_ENTRY_2)
EVT_WAIT(100)
EVT_ELSE
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 0, 0, 0)
EVT_CALL(SetPanTarget, CAM_DEFAULT, 0, 170, 0)
EVT_CALL(SetCamDistance, CAM_DEFAULT, 350)
EVT_CALL(SetCamPitch, CAM_DEFAULT, 16, EVT_FLOAT(-6.0))
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
EVT_WAIT(20)
EVT_CALL(SetPanTarget, CAM_DEFAULT, 0, 0, 0)
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(1.2))
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
EVT_CALL(MakeEntity, EVT_PTR(Entity_Chest), 0, 2650, 0, 0, MAKE_ENTITY_END)
EVT_SET(LVarA, LVar0)
EVT_THREAD
EVT_CALL(N(AnimateFallingChestRot))
EVT_END_THREAD
EVT_SET(LVar9, LVarA)
EVT_CALL(LoadPath, 12, EVT_PTR(N(ChestFallPath)), ARRAY_COUNT(N(ChestFallPath)), EASING_LINEAR)
EVT_LOOP(0)
EVT_CALL(GetNextPathPos)
EVT_CALL(N(SetEntityPositionF), LVar9, LVar1, LVar2, LVar3)
EVT_WAIT(1)
EVT_IF_EQ(LVar0, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_CALL(PlaySoundAt, SOUND_1AF, 0, LVar1, LVar2, LVar3)
EVT_THREAD
EVT_PLAY_EFFECT(EFFECT_WALKING_DUST, 2, -15, 0, 0, 10, 10)
EVT_PLAY_EFFECT(EFFECT_WALKING_DUST, 2, 0, 0, 0, 0, 0)
EVT_PLAY_EFFECT(EFFECT_WALKING_DUST, 2, 15, 0, 0, 350, 350)
EVT_CALL(ShakeCam, CAM_DEFAULT, 0, 30, EVT_FLOAT(1.0))
EVT_END_THREAD
EVT_CALL(LoadPath, 10, EVT_PTR(N(ChestBouncePath)), ARRAY_COUNT(N(ChestBouncePath)), EASING_LINEAR)
EVT_LOOP(0)
EVT_CALL(GetNextPathPos)
EVT_CALL(N(SetEntityPositionF), LVar9, LVar1, LVar2, LVar3)
EVT_WAIT(1)
EVT_IF_EQ(LVar0, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_CALL(PlaySoundAt, SOUND_1AF, 0, LVar1, LVar2, LVar3)
EVT_PLAY_EFFECT(EFFECT_WALKING_DUST, 2, -10, 0, 15, 0, 0)
EVT_PLAY_EFFECT(EFFECT_WALKING_DUST, 2, -10, 0, 15, 0, 0)
EVT_WAIT(60)
EVT_EXEC(N(EVS_GotoMap_kmr_24_0))
EVT_END_IF
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,170 @@
#include "jan_04.h"
#define NAME_SUFFIX _Bushes
#include "common/foliage.inc.c"
#define NAME_SUFFIX
FoliageModelList N(Bush1_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o82);
FoliageVectorList N(Bush1_Effects) = {
.count = 1,
.vectors = {
{ -400.0f, 20.0f, -120.0f },
}
};
SearchBushConfig N(SearchBush_Bush1) = {
.bush = &N(Bush1_BushModels),
.vectors = &N(Bush1_Effects),
};
FoliageModelList N(Bush2_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o81);
FoliageVectorList N(Bush2_Effects) = {
.count = 1,
.vectors = {
{ -353.0f, 22.0f, -81.0f },
}
};
SearchBushConfig N(SearchBush_Bush2) = {
.bush = &N(Bush2_BushModels),
.vectors = &N(Bush2_Effects),
};
FoliageModelList N(Bush3_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o83);
FoliageVectorList N(Bush3_Effects) = {
.count = 1,
.vectors = {
{ -264.0f, 20.0f, -402.0f },
}
};
SearchBushConfig N(SearchBush_Bush3) = {
.bush = &N(Bush3_BushModels),
.vectors = &N(Bush3_Effects),
};
FoliageModelList N(Bush4_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o85);
FoliageVectorList N(Bush4_Effects) = {
.count = 1,
.vectors = {
{ -211.0f, 22.0f, -420.0f },
}
};
SearchBushConfig N(SearchBush_Bush4) = {
.bush = &N(Bush4_BushModels),
.vectors = &N(Bush4_Effects),
};
FoliageModelList N(Bush5_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o89);
FoliageVectorList N(Bush5_Effects) = {
.count = 1,
.vectors = {
{ -111.0f, 22.0f, -62.0f },
}
};
SearchBushConfig N(SearchBush_Bush5) = {
.bush = &N(Bush5_BushModels),
.vectors = &N(Bush5_Effects),
};
FoliageModelList N(Bush6_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o91);
FoliageVectorList N(Bush6_Effects) = {
.count = 1,
.vectors = {
{ 258.0f, 20.0f, -286.0f },
}
};
SearchBushConfig N(SearchBush_Bush6) = {
.bush = &N(Bush6_BushModels),
.vectors = &N(Bush6_Effects),
};
FoliageModelList N(Bush7_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o92);
FoliageVectorList N(Bush7_Effects) = {
.count = 1,
.vectors = {
{ 315.0f, 20.0f, -289.0f },
}
};
SearchBushConfig N(SearchBush_Bush7) = {
.bush = &N(Bush7_BushModels),
.vectors = &N(Bush7_Effects),
};
FoliageModelList N(Bush8_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o86);
FoliageVectorList N(Bush8_Effects) = {
.count = 1,
.vectors = {
{ 284.0f, 20.0f, 181.0f },
}
};
SearchBushConfig N(SearchBush_Bush8) = {
.bush = &N(Bush8_BushModels),
.vectors = &N(Bush8_Effects),
};
FoliageModelList N(Bush9_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o88);
FoliageVectorList N(Bush9_Effects) = {
.count = 1,
.vectors = {
{ 378.0f, 22.0f, 185.0f },
}
};
SearchBushConfig N(SearchBush_Bush9) = {
.bush = &N(Bush9_BushModels),
.vectors = &N(Bush9_Effects),
};
FoliageModelList N(Bush10_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o87);
FoliageVectorList N(Bush10_Effects) = {
.count = 1,
.vectors = {
{ 435.0f, 20.0f, 205.0f },
}
};
SearchBushConfig N(SearchBush_Bush10) = {
.bush = &N(Bush10_BushModels),
.vectors = &N(Bush10_Effects),
};
EvtScript N(EVS_SetupBushes) = {
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush1)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o118, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush2)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o162, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush3)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o119, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush4)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o163, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush5)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o121, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush6)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o122, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush7)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o166, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush8)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o120, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush9)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o164, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush10)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o165, 1, 0)
EVT_RETURN
EVT_END
};

View File

@ -1,14 +0,0 @@
#include "jan_05.h"
static char* N(exit_str_0) = "jan_03";
static char* N(exit_str_1) = "jan_08";
static char* N(exit_str_2) = "jan_04";
static char* N(exit_str_3) = "jan_06";
s32 N(get_tattle)(void) {
if (evt_get_variable(NULL, GB_StoryProgress) < STORY_CH5_SUSHIE_JOINED_PARTY) {
return MSG_MapTattle_jan_05_before;
} else {
return MSG_MapTattle_jan_05_after;
}
}

View File

@ -1,4 +0,0 @@
#include "jan_05.h"
#include "world/common/atomic/TexturePan.inc.c"

View File

@ -1,3 +0,0 @@
#include "jan_05.h"
#include "world/common/todo/UnkShadowFunc001.inc.c"

View File

@ -1,6 +0,0 @@
#include "jan_05.h"
#include "model.h"
#include "common/foliage.inc.c"
#include "world/common/todo/PullVineSub.inc.c"

View File

@ -1,20 +0,0 @@
#include "jan_05.h"
#include "world/common/todo/HeartPlant_SpawnHeart.inc.c"
#include "world/common/enemy/ai/HoppingAI.inc.c"
#include "world/common/enemy/ai/SpearGuyAI.inc.c"
#define NAMESPACE dup_jan_05
#include "common/foliage.inc.c"
#define NAMESPACE jan_05
ApiStatus func_8024268C_B4D0FC(Evt* script, s32 isInitialCall) {
if (get_enemy_safe(0) == NULL) {
script->varTable[0] = FALSE;
} else {
script->varTable[0] = TRUE;
}
return ApiStatus_DONE2;
}

View File

@ -2,8 +2,40 @@
/// @brief Jade Jungle - SE Jungle (Quake Hammer)
#include "common.h"
#include "../jan.h"
#include "message_ids.h"
#include "map.h"
#include "../jan.h"
#include "mapfs/jan_05_shape.h"
#include "mapfs/jan_05_hit.h"
enum {
NPC_JungleFuzzy = 0,
NPC_SpearGuy = 1,
NPC_SpearGuy_Hitbox = 2,
NPC_YoshiKid = 3,
NPC_HeartPlant = 4,
NPC_HurtPlant = 5,
NPC_MBush = 6,
};
enum {
MV_BushOffsetL = MapVar(0),
MV_BushOffsetR = MapVar(1),
};
enum {
MF_BushDrop_Coin = MapFlag(10),
MF_KillLogShadow = MapFlag(11),
};
#define NAMESPACE jan_05
extern EvtScript N(EVS_Main);
extern EvtScript N(EVS_SetupMusic);
extern EvtScript N(EVS_SetupLogs);
extern EvtScript N(EVS_SetupTrees);
extern EvtScript N(EVS_SetupBushes);
extern EvtScript N(EVS_MakeEntities);
extern NpcGroupList N(DefaultNPCs);

View File

@ -0,0 +1,24 @@
#include "jan_05.h"
s32 N(get_tattle)(void) {
if (evt_get_variable(NULL, GB_StoryProgress) < STORY_CH5_SUSHIE_JOINED_PARTY) {
return MSG_MapTattle_jan_05_before;
} else {
return MSG_MapTattle_jan_05_after;
}
}
EntryList N(Entrances) = {
[jan_05_ENTRY_0] { 330.0, 0.0, 330.0, 315.0 },
[jan_05_ENTRY_1] { -500.0, -20.0, 0.0, 90.0 },
[jan_05_ENTRY_2] { 480.0, 0.0, 0.0, 270.0 },
[jan_05_ENTRY_3] { 0.0, 0.0, -450.0, 180.0 },
};
MapSettings N(settings) = {
.main = &N(EVS_Main),
.entryList = &N(Entrances),
.entryCount = ENTRY_COUNT(N(Entrances)),
.background = &gBackgroundImage,
.tattle = { .get = &N(get_tattle) },
};

View File

@ -0,0 +1,8 @@
#include "jan_05.h"
EvtScript N(EVS_SetupMusic) = {
EVT_CALL(SetMusicTrack, 0, SONG_JADE_JUNGLE, 0, 8)
EVT_CALL(ClearAmbientSounds, 250)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,54 @@
#include "jan_05.h"
#include "world/common/atomic/TexturePan.inc.c"
#include "world/common/atomic/TexturePan.data.inc.c"
EvtScript N(EVS_ExitWalk_jan_03_1) = EVT_EXIT_WALK(60, jan_05_ENTRY_0, "jan_03", jan_03_ENTRY_1);
EvtScript N(EVS_ExitWalk_jan_08_1) = EVT_EXIT_WALK(60, jan_05_ENTRY_1, "jan_08", jan_08_ENTRY_1);
EvtScript N(EVS_ExitWalk_jan_04_0) = EVT_EXIT_WALK(60, jan_05_ENTRY_2, "jan_04", jan_04_ENTRY_0);
EvtScript N(EVS_ExitWalk_jan_06_0) = EVT_EXIT_WALK(60, jan_05_ENTRY_3, "jan_06", jan_06_ENTRY_0);
EvtScript N(EVS_BindExitTriggers) = {
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_08_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_o227, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_03_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilise, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_04_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_06_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilin, 1, 0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_JADE_JUNGLE)
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
EVT_EXEC_WAIT(N(EVS_MakeEntities))
EVT_EXEC(N(EVS_SetupLogs))
EVT_EXEC(N(EVS_SetupTrees))
EVT_EXEC(N(EVS_SetupBushes))
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o75, SURFACE_TYPE_DOCK_WALL)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o77, SURFACE_TYPE_DOCK_WALL)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o75, COLLIDER_FLAG_80000)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o77, COLLIDER_FLAG_80000)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o1, SURFACE_TYPE_WATER)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_deiliw, SURFACE_TYPE_WATER)
EVT_EXEC(N(EVS_SetupTrees))
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitn, COLLIDER_FLAGS_UPPER_MASK)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilite, COLLIDER_FLAGS_UPPER_MASK)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitse, COLLIDER_FLAGS_UPPER_MASK)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitw, COLLIDER_FLAGS_UPPER_MASK)
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
EVT_EXEC(EnterWalk)
EVT_EXEC(N(EVS_SetupMusic))
EVT_CALL(MakeTransformGroup, MODEL_g25)
EVT_CALL(EnableTexPanning, MODEL_o101, TRUE)
EVT_THREAD
TEX_PAN_PARAMS_ID(TEX_PANNER_1)
TEX_PAN_PARAMS_STEP( -80, 140, 80, -100)
TEX_PAN_PARAMS_FREQ( 1, 1, 1, 1)
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
EVT_EXEC(N(EVS_UpdateTexturePan))
EVT_END_THREAD
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,154 @@
#include "jan_05.h"
#include "effects.h"
EvtScript N(EVS_SetupLogObjects) = {
EVT_IF_EQ(GF_JAN05_CreateLogBridge, FALSE)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o21, COLLIDER_FLAGS_UPPER_MASK)
EVT_CALL(EnableModel, MODEL_o147, FALSE)
EVT_CALL(EnableModel, MODEL_o148, FALSE)
EVT_CALL(TranslateGroup, MODEL_g31, 0, -240, 0)
EVT_CALL(TranslateGroup, MODEL_g32, 0, -240, 0)
EVT_ELSE
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o94, COLLIDER_FLAGS_UPPER_MASK)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o92, COLLIDER_FLAGS_UPPER_MASK)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o21, COLLIDER_FLAGS_UPPER_MASK)
EVT_CALL(EnableModel, MODEL_o147, TRUE)
EVT_CALL(EnableModel, MODEL_o148, TRUE)
EVT_CALL(TranslateGroup, MODEL_g31, 0, 10, 0)
EVT_CALL(TranslateGroup, MODEL_g32, 0, 10, 0)
EVT_CALL(RotateGroup, MODEL_g31, -90, 0, 0, 1)
EVT_CALL(RotateGroup, MODEL_g32, -90, 0, 0, 1)
EVT_CALL(RotateGroup, MODEL_g31, 90, 0, 1, 0)
EVT_CALL(RotateGroup, MODEL_g32, -90, 0, 1, 0)
EVT_END_IF
EVT_RETURN
EVT_END
};
EvtScript N(EVS_LogAnim_RiseUp) = {
EVT_CALL(PlaySoundAtCollider, COLLIDER_o94, SOUND_SMASH_GOOMNUT_TREE, 0)
EVT_CALL(MakeLerp, -240, -259, 5, EASING_QUARTIC_OUT)
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_CALL(TranslateGroup, MODEL_g31, 0, LVar0, 0)
EVT_CALL(TranslateGroup, MODEL_g32, 0, LVar0, 0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_RETURN
EVT_END
};
#include "world/common/todo/UpdateLogShadow.inc.c"
EvtScript N(EVS_LogAnim_FallDown) = {
EVT_THREAD
EVT_WAIT(17)
EVT_CALL(SetPlayerAnimation, ANIM_Mario_1002A)
EVT_CALL(N(UpdateLogShadow), MODEL_o147, MF_KillLogShadow)
EVT_END_THREAD
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o94, COLLIDER_FLAGS_UPPER_MASK)
EVT_CALL(MakeLerp, -259, 60, 30, EASING_QUADRATIC_OUT)
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_CALL(TranslateGroup, MODEL_g31, 0, LVar0, 0)
EVT_CALL(TranslateGroup, MODEL_g32, 0, LVar0, 0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_WAIT(1)
EVT_CALL(MakeLerp, 60, 0, 30, EASING_CUBIC_IN)
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_CALL(TranslateGroup, MODEL_g31, 0, LVar0, 0)
EVT_CALL(TranslateGroup, MODEL_g32, 0, LVar0, 0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
EVT_CALL(PlaySoundAtCollider, COLLIDER_o94, SOUND_209D, 0)
EVT_PLAY_EFFECT(EFFECT_LANDING_DUST, 4, -185, 0, 320, 0)
EVT_CALL(ShakeCam, CAM_DEFAULT, 2, 3, 1)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_LogAnim_FallOver) = {
EVT_THREAD
EVT_WAIT(50)
EVT_SET(MF_KillLogShadow, TRUE)
EVT_END_THREAD
EVT_CALL(MakeLerp, 0, -90, 60, EASING_CUBIC_IN)
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_CALL(TranslateGroup, MODEL_g31, 0, 0, 0)
EVT_CALL(TranslateGroup, MODEL_g32, 0, 0, 0)
EVT_CALL(RotateGroup, MODEL_g31, LVar0, 0, 0, 1)
EVT_CALL(RotateGroup, MODEL_g32, LVar0, 0, 0, 1)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_THREAD
EVT_CALL(ShakeCam, CAM_DEFAULT, 2, 3, 1)
EVT_END_THREAD
EVT_RETURN
EVT_END
};
EvtScript N(EVS_LogAnim_Split) = {
EVT_CALL(PlaySoundAtCollider, COLLIDER_o94, SOUND_209E, 0)
EVT_CALL(EnableModel, MODEL_o147, TRUE)
EVT_CALL(EnableModel, MODEL_o148, TRUE)
EVT_CALL(MakeLerp, 0, 90, 30, EASING_COS_FAST_OVERSHOOT)
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_SET(LVar2, LVar0)
EVT_DIVF(LVar2, 9)
EVT_CALL(TranslateGroup, MODEL_g31, 0, LVar2, 0)
EVT_CALL(TranslateGroup, MODEL_g32, 0, LVar2, 0)
EVT_CALL(RotateGroup, MODEL_g31, -90, 0, 0, 1)
EVT_CALL(RotateGroup, MODEL_g32, -90, 0, 0, 1)
EVT_CALL(RotateGroup, MODEL_g31, LVar0, 0, 1, 0)
EVT_CALL(RotateGroup, MODEL_g32, LVar0, 0, -1, 0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_RETURN
EVT_END
};
EvtScript N(EVS_Smash_BuriedLog) = {
EVT_SET(GF_JAN05_CreateLogBridge, TRUE)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_EXEC_WAIT(N(EVS_LogAnim_RiseUp))
EVT_WAIT(1)
EVT_EXEC_WAIT(N(EVS_LogAnim_FallDown))
EVT_WAIT(1)
EVT_EXEC_WAIT(N(EVS_LogAnim_FallOver))
EVT_WAIT(1)
EVT_EXEC_WAIT(N(EVS_LogAnim_Split))
EVT_WAIT(1)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_EXEC(N(EVS_SetupLogObjects))
EVT_RETURN
EVT_END
};
EvtScript N(EVS_SetupLogs) = {
EVT_IF_EQ(GF_JAN05_CreateLogBridge, FALSE)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_Smash_BuriedLog)), TRIGGER_WALL_HAMMER, COLLIDER_o94, 1, 0)
EVT_END_IF
EVT_EXEC(N(EVS_SetupLogObjects))
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,287 @@
#include "jan_05.h"
#define NAME_SUFFIX _Bushes
#include "common/foliage.inc.c"
#define NAME_SUFFIX
#include "../common/MoveBush.inc.c"
#include "../common/MoveBushTemplates.h"
EvtScript N(EVS_MoveBushes_Separate) = EVT_MOVE_BUSHES(COLLIDER_o64,
MODEL_o64, MODEL_o65, MV_BushOffsetL, MV_BushOffsetR);
EvtScript N(EVS_MoveBushes) = {
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o64, COLLIDER_FLAGS_UPPER_MASK)
EVT_EXEC(N(EVS_MoveBushes_Separate))
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(MakeLerp, 0, 45, 30, EASING_CUBIC_OUT)
EVT_LABEL(0)
EVT_CALL(UpdateLerp)
EVT_SETF(MV_BushOffsetR, LVar0)
EVT_SETF(MV_BushOffsetL, MV_BushOffsetR)
EVT_MULF(MV_BushOffsetL, -1)
EVT_IF_EQ(LVar1, 1)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_IF
EVT_CALL(DisablePlayerInput, FALSE)
EVT_RETURN
EVT_END
};
FoliageModelList N(Bush1_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o63);
FoliageDropList N(Bush1_Drops) = {
.count = 1,
.drops = {
{
.itemID = ITEM_COIN,
.pos = { 168, 20, 375 },
.spawnMode = ITEM_SPAWN_MODE_TOSS_SPAWN_ONCE,
.pickupFlag = GF_JAN05_Bush1_Coin,
},
}
};
FoliageVectorList N(Bush1_Effects) = {
.count = 1,
.vectors = {
{ 168.0f, 20.0f, 375.0f },
}
};
SearchBushConfig N(SearchBush_Bush1) = {
.bush = &N(Bush1_BushModels),
.drops = &N(Bush1_Drops),
.vectors = &N(Bush1_Effects),
};
FoliageModelList N(Bush2_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o141);
FoliageDropList N(Bush2_Drops) = {
.count = 1,
.drops = {
{
.itemID = ITEM_COIN,
.pos = { -401, 20, 176 },
.spawnMode = ITEM_SPAWN_MODE_TOSS,
.pickupFlag = GF_JAN05_Bush2_Coin,
.spawnFlag = MF_BushDrop_Coin,
},
}
};
FoliageVectorList N(Bush2_Effects) = {
.count = 1,
.vectors = {
{ -401.0f, 20.0f, 176.0f },
}
};
SearchBushConfig N(SearchBush_Bush2) = {
.bush = &N(Bush2_BushModels),
.drops = &N(Bush2_Drops),
.vectors = &N(Bush2_Effects),
};
FoliageModelList N(Bush3_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o140);
FoliageVectorList N(Bush3_Effects) = {
.count = 1,
.vectors = {
{ -242.0f, 22.0f, 205.0f },
}
};
SearchBushConfig N(SearchBush_Bush3) = {
.bush = &N(Bush3_BushModels),
.vectors = &N(Bush3_Effects),
};
FoliageModelList N(Bush4_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o142);
FoliageVectorList N(Bush4_Effects) = {
.count = 1,
.vectors = {
{ -206.0f, 20.0f, 248.0f },
}
};
SearchBushConfig N(SearchBush_Bush4) = {
.bush = &N(Bush4_BushModels),
.vectors = &N(Bush4_Effects),
};
FoliageModelList N(Bush5_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o134);
FoliageVectorList N(Bush5_Effects) = {
.count = 1,
.vectors = {
{ -462.0f, 20.0f, -207.0f },
}
};
SearchBushConfig N(SearchBush_Bush5) = {
.bush = &N(Bush5_BushModels),
.vectors = &N(Bush5_Effects),
};
FoliageModelList N(Bush6_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o137);
FoliageVectorList N(Bush6_Effects) = {
.count = 1,
.vectors = {
{ -417.0f, 20.0f, -261.0f },
}
};
SearchBushConfig N(SearchBush_Bush6) = {
.bush = &N(Bush6_BushModels),
.vectors = &N(Bush6_Effects),
};
FoliageModelList N(Bush7_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o131);
FoliageVectorList N(Bush7_Effects) = {
.count = 1,
.vectors = {
{ -32.0f, 22.0f, -364.0f },
}
};
SearchBushConfig N(SearchBush_Bush7) = {
.bush = &N(Bush7_BushModels),
.vectors = &N(Bush7_Effects),
};
FoliageModelList N(Bush8_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o132);
FoliageVectorList N(Bush8_Effects) = {
.count = 1,
.vectors = {
{ -91.0f, 20.0f, -485.0f },
}
};
SearchBushConfig N(SearchBush_Bush8) = {
.bush = &N(Bush8_BushModels),
.vectors = &N(Bush8_Effects),
};
FoliageModelList N(Bush9_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o133);
FoliageVectorList N(Bush9_Effects) = {
.count = 1,
.vectors = {
{ 94.0f, 22.0f, -485.0f },
}
};
SearchBushConfig N(SearchBush_Bush9) = {
.bush = &N(Bush9_BushModels),
.vectors = &N(Bush9_Effects),
};
FoliageModelList N(Bush10_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o139);
FoliageVectorList N(Bush10_Effects) = {
.count = 1,
.vectors = {
{ 9.0f, 20.0f, -90.0f },
}
};
SearchBushConfig N(SearchBush_Bush10) = {
.bush = &N(Bush10_BushModels),
.vectors = &N(Bush10_Effects),
};
FoliageModelList N(Bush11_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o138);
FoliageVectorList N(Bush11_Effects) = {
.count = 1,
.vectors = {
{ 53.0f, 20.0f, -63.0f },
}
};
SearchBushConfig N(SearchBush_Bush11) = {
.bush = &N(Bush11_BushModels),
.vectors = &N(Bush11_Effects),
};
FoliageModelList N(Bush12_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o102);
FoliageVectorList N(Bush12_Effects) = {
.count = 1,
.vectors = {
{ 339.0f, 22.0f, -151.0f },
}
};
SearchBushConfig N(SearchBush_Bush12) = {
.bush = &N(Bush12_BushModels),
.vectors = &N(Bush12_Effects),
};
FoliageModelList N(Bush13_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o126);
FoliageVectorList N(Bush13_Effects) = {
.count = 1,
.vectors = {
{ 144.0f, 22.0f, 490.0f },
}
};
SearchBushConfig N(SearchBush_Bush13) = {
.bush = &N(Bush13_BushModels),
.vectors = &N(Bush13_Effects),
};
FoliageModelList N(Bush14_BushModels) = FOLIAGE_MODEL_LIST(MODEL_o106);
FoliageVectorList N(Bush14_Effects) = {
.count = 1,
.vectors = {
{ 209.0f, 20.0f, 471.0f },
}
};
SearchBushConfig N(SearchBush_Bush14) = {
.bush = &N(Bush14_BushModels),
.vectors = &N(Bush14_Effects),
};
EvtScript N(EVS_SetupBushes) = {
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_MoveBushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o64, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush1)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o135, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush2)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o213, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush3)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o214, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush4)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o215, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush5)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o216, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush6)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o217, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush7)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o218, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush8)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o219, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush9)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o220, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush10)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o221, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush11)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o222, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush12)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o223, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush13)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o224, 1, 0)
EVT_SET(LVar0, EVT_PTR(N(SearchBush_Bush14)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_SearchBush_Bushes)), TRIGGER_WALL_PRESS_A, COLLIDER_o225, 1, 0)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,327 @@
#include "jan_05.h"
#include "world/common/enemy/complete/MBush.inc.c"
#include "world/common/npc/YoshiKid.inc.c"
#include "world/common/enemy/complete/HeartPlant.inc.c"
#include "world/common/enemy/complete/HurtPlant.inc.c"
#include "world/common/enemy/complete/JungleFuzzy_Wander.inc.c"
#include "world/common/enemy/complete/SpearGuy_Wander.inc.c"
EvtScript N(EVS_NpcIdle_JungleFuzzy) = {
EVT_CALL(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
EVT_LABEL(0)
EVT_CALL(GetSelfVar, 7, LVar0)
EVT_WAIT(1)
EVT_IF_EQ(LVar0, 0)
EVT_GOTO(0)
EVT_END_IF
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Fuzzy_Jungle_Anim09)
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_GRAVITY, TRUE)
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_8, FALSE)
EVT_CALL(SetNpcPos, NPC_SELF, 125, 100, -392)
EVT_CALL(PlaySoundWithVolume, SOUND_331, 110)
EVT_WAIT(20)
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_GRAVITY, FALSE)
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_8, TRUE)
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_JungleFuzzy_Wander)))
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_JungleFuzzy) = {
EVT_CALL(SetSelfVar, 7, 0)
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_200000, 1)
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_GRAVITY, FALSE)
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_8, TRUE)
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_JungleFuzzy)))
EVT_RETURN
EVT_END
};
EvtScript N(EVS_YoshiKid_WatchPlayerProximinity) = {
EVT_LABEL(1)
EVT_CALL(GetSelfVar, 0, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(0)
EVT_CALL(AwaitPlayerLeave, -308, -270, 70)
EVT_CALL(SetSelfVar, 0, 1)
EVT_CASE_EQ(1)
EVT_CALL(AwaitPlayerApproach, -308, -270, 50)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(ShowMessageAtScreenPos, MSG_CH5_00B8, 160, 40)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_CALL(SetSelfVar, 0, 0)
EVT_END_SWITCH
EVT_WAIT(1)
EVT_GOTO(1)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_OnShakeTree_Yoshi) = {
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(SetNpcVar, NPC_YoshiKid, 0, 9)
EVT_THREAD
EVT_CALL(PlaySoundAtNpc, NPC_YoshiKid, SOUND_301, 0)
EVT_CALL(SetNpcJumpscale, NPC_YoshiKid, EVT_FLOAT(1.0))
EVT_CALL(NpcJump0, NPC_YoshiKid, -308, 0, -248, 30)
EVT_END_THREAD
EVT_CALL(EnableNpcShadow, NPC_YoshiKid, TRUE)
EVT_WAIT(40)
EVT_CALL(SetNpcVar, NPC_YoshiKid, 0, 10)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_UNBIND
EVT_RETURN
EVT_END
};
EvtScript N(EVS_YoshiKid_Sleeping) = {
EVT_LOOP(0)
EVT_CALL(PlaySoundAtNpc, NPC_YoshiKid, SOUND_32F, 0)
EVT_WAIT(24)
EVT_CALL(PlaySoundAtNpc, NPC_YoshiKid, SOUND_334, 0)
EVT_WAIT(21)
EVT_CALL(GetNpcVar, NPC_YoshiKid, 0, LVar0)
EVT_IF_GE(LVar0, 9)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_RETURN
EVT_END
};
EvtScript N(EVS_YoshiKid_PlaySounds) = {
EVT_EXEC_GET_TID(N(EVS_YoshiKid_Sleeping), LVar9)
EVT_LOOP(0)
EVT_WAIT(1)
EVT_CALL(GetNpcVar, NPC_YoshiKid, 0, LVar0)
EVT_IF_GE(LVar0, 9)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_KILL_THREAD(LVar9)
EVT_CALL(SetNpcAnimation, NPC_YoshiKid, ANIM_YoshiKid_Purple_Cry)
EVT_LOOP(3)
EVT_CALL(PlaySoundAtNpc, NPC_YoshiKid, SOUND_1F0, 0)
EVT_WAIT(13)
EVT_END_LOOP
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcIdle_YoshiKid) = {
EVT_CALL(GetEntryID, LVar0)
EVT_IF_EQ(LVar0, jan_05_ENTRY_3)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(ShowMessageAtScreenPos, MSG_CH5_00B8, 160, 40)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_END_IF
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_OnShakeTree_Yoshi)), TRIGGER_WALL_HAMMER, COLLIDER_o87, 1, 0)
EVT_EXEC_GET_TID(N(EVS_YoshiKid_WatchPlayerProximinity), LVar9)
EVT_LOOP(0)
EVT_WAIT(1)
EVT_CALL(GetSelfVar, 0, LVar0)
EVT_IF_EQ(LVar0, 10)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_KILL_THREAD(LVar9)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
EVT_IF_LT(LVar0, -270)
EVT_SET(LVar0, -324)
EVT_SET(LVar1, -355)
EVT_SET(LVar2, 27)
EVT_ELSE
EVT_SET(LVar0, -216)
EVT_SET(LVar1, -185)
EVT_SET(LVar2, -27)
EVT_END_IF
EVT_THREAD
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100, TRUE)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_YoshiKid_Purple_Walk)
EVT_CALL(NpcMoveTo, NPC_SELF, -270, -248, 30)
EVT_CALL(NpcFacePlayer, NPC_SELF, 0)
EVT_END_THREAD
EVT_THREAD
EVT_CALL(DisablePartnerAI, 0)
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_100 | NPC_FLAG_8000, TRUE)
EVT_CALL(NpcMoveTo, NPC_PARTNER, LVar1, -250, 30)
EVT_CALL(NpcFaceNpc, NPC_PARTNER, NPC_YoshiKid, 0)
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_100 | NPC_FLAG_8000, FALSE)
EVT_CALL(EnablePartnerAI)
EVT_END_THREAD
EVT_THREAD
EVT_CALL(PlayerMoveTo, LVar0, -248, 30)
EVT_CALL(PlayerFaceNpc, NPC_SELF, FALSE)
EVT_END_THREAD
EVT_ADD(LVar0, LVar2)
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, 0, -248)
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, 0, -248)
EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(350.0))
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(17.0), EVT_FLOAT(-7.0))
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(4.0))
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
EVT_WAIT(15)
EVT_CALL(GetCurrentPartnerID, LVar0)
EVT_IF_EQ(LVar0, PARTNER_SUSHIE)
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_YoshiKid_Purple_SadTalk, ANIM_YoshiKid_Purple_SadIdle, 0, MSG_CH5_00B9)
EVT_ELSE
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_YoshiKid_Purple_SadTalk, ANIM_YoshiKid_Purple_SadIdle, 0, MSG_CH5_00BA)
EVT_END_IF
EVT_CALL(EndSpeech, NPC_SELF, ANIM_YoshiKid_Purple_Talk, ANIM_YoshiKid_Purple_Idle, 0)
EVT_THREAD
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_YoshiKid_Purple_Run)
EVT_CALL(SetNpcSpeed, NPC_SELF, EVT_FLOAT(5.0))
EVT_CALL(NpcMoveTo, NPC_SELF, -315, -135, 0)
EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(0.5))
EVT_CALL(NpcJump0, NPC_SELF, -325, 0, 215, 25)
EVT_CALL(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
EVT_END_THREAD
EVT_SET(GF_JAN05_SavedYoshi, TRUE)
EVT_SET(LVar0, 0)
EVT_ADD(LVar0, GF_JAN05_SavedYoshi)
EVT_ADD(LVar0, GF_JAN07_SavedYoshi)
EVT_ADD(LVar0, GF_JAN08_SavedYoshi)
EVT_ADD(LVar0, GF_JAN10_SavedYoshi)
EVT_ADD(LVar0, GF_JAN11_SavedYoshi)
EVT_IF_EQ(LVar0, 5)
EVT_CALL(SetMusicTrack, 0, SONG_YOSHI_KIDS_FOUND, 0, 8)
EVT_SET(GB_StoryProgress, STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
EVT_CALL(SetPlayerAnimation, ANIM_Mario_ThumbsUp)
EVT_WAIT(120)
EVT_EXEC(N(EVS_SetupMusic))
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
EVT_ELSE
EVT_WAIT(30)
EVT_END_IF
EVT_CALL(ResetCam, CAM_DEFAULT, EVT_FLOAT(4.0))
EVT_CALL(DisablePlayerInput, FALSE)
EVT_CALL(RemoveNpc, NPC_SELF)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_YoshiKid) = {
EVT_IF_EQ(GB_StoryProgress, STORY_CH5_SUSHIE_JOINED_PARTY)
EVT_IF_EQ(GF_JAN05_SavedYoshi, FALSE)
EVT_CALL(SetNpcPos, NPC_SELF, -308, 110, -300)
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_YoshiKid_Purple_Sleep)
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_YoshiKid)))
EVT_EXEC(N(EVS_YoshiKid_PlaySounds))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_CALL(RemoveNpc, NPC_SELF)
EVT_RETURN
EVT_END
};
StaticNpc N(NpcData_YoshiKid) = {
.id = NPC_YoshiKid,
.settings = &N(NpcSettings_YoshiKid),
.pos = { -320.0f, 0.0f, 80.0f },
.yaw = 270,
.flags = COMMON_PASSIVE_FLAGS | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_YoshiKid),
.drops = NPC_NO_DROPS,
.animations = YOSHI_KID_PURPLE_ANIMS,
.tattle = MSG_NpcTattle_PurpleYoshiKid,
};
s32 N(ExtraAnims_JungleFuzzy)[] = {
ANIM_Fuzzy_Jungle_Idle,
ANIM_Fuzzy_Jungle_Walk,
ANIM_Fuzzy_Jungle_Run,
ANIM_Fuzzy_Jungle_Hurt,
-1
};
StaticNpc N(NpcData_JungleFuzzy) = {
.id = NPC_JungleFuzzy,
.settings = &N(NpcSettings_JungleFuzzy_Wander),
.pos = { 0.0f, 0.0f, 0.0f },
.yaw = 270,
.flags = ENEMY_FLAG_400 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_JungleFuzzy),
.territory = {
.wander = {
.isFlying = TRUE,
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
.wanderShape = SHAPE_CYLINDER,
.centerPos = { 63, 0, -366 },
.wanderSize = { 50 },
.detectShape = SHAPE_CYLINDER,
.detectPos = { 63, 0, -366 },
.detectSize = { 200 },
}
},
.drops = JUNGLE_FUZZY_DROPS,
.animations = JUNGLE_FUZZY_ANIMS,
.extraAnimations = N(ExtraAnims_JungleFuzzy),
.aiDetectFlags = AI_DETECT_SIGHT | AI_DETECT_SENSITIVE_MOTION,
};
StaticNpc N(NpcData_SpearGuy)[] = {
{
.id = NPC_SpearGuy,
.pos = { 0.0f, 0.0f, 0.0f },
.yaw = 90,
.territory = {
.wander = {
.isFlying = FALSE,
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
.wanderShape = SHAPE_CYLINDER,
.centerPos = { 0, 0, 0 },
.wanderSize = { 20 },
.detectShape = SHAPE_CYLINDER,
.detectPos = { 0, 0, 0 },
.detectSize = { 100 },
}
},
.flags = ENEMY_FLAG_400 | ENEMY_FLAG_800,
SPEAR_GUY_WANDER_NPC_DATA
},
SPEAR_GUY_HITBOX(NPC_SpearGuy_Hitbox)
};
StaticNpc N(NpcData_HeartPlant) = {
.id = NPC_HeartPlant,
.settings = &N(NpcSettings_HeartPlant),
.pos = { 430.0f, 0.0f, 205.0f },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_8000 | ENEMY_FLAG_400000,
.drops = NPC_NO_DROPS,
.animations = HEART_PLANT_ANIMS,
.tattle = MSG_NpcTattle_HeartPlant,
};
StaticNpc N(NpcData_HurtPlant) = {
.id = NPC_HurtPlant,
.pos = { 375.0f, 0.0f, 260.0f },
.yaw = 270,
HURT_PLANT_NPC_DATA
};
StaticNpc N(NpcData_MBush) = {
.id = NPC_MBush,
.settings = &N(NpcSettings_MBush),
.pos = { 400.0f, 0.0f, -75.0f },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_8000 | ENEMY_FLAG_400000,
.drops = MBUSH_DROPS,
.animations = MBUSH_ANIMS,
.tattle = MSG_NpcTattle_MBush,
};
NpcGroupList N(DefaultNPCs) = {
NPC_GROUP(N(NpcData_JungleFuzzy), BTL_JAN_FORMATION_0A, BTL_JAN_STAGE_01),
NPC_GROUP(N(NpcData_SpearGuy), BTL_JAN_FORMATION_00, BTL_JAN_STAGE_01),
NPC_GROUP(N(NpcData_HeartPlant)),
NPC_GROUP(N(NpcData_HurtPlant), BTL_JAN_FORMATION_08, BTL_JAN_STAGE_01),
NPC_GROUP(N(NpcData_MBush), BTL_JAN_FORMATION_0E, BTL_JAN_STAGE_01),
NPC_GROUP(N(NpcData_YoshiKid)),
{}
};

View File

@ -0,0 +1,118 @@
#include "jan_05.h"
#define NAME_SUFFIX _Trees
#include "common/foliage.inc.c"
#define NAME_SUFFIX
API_CALLABLE(N(func_8024268C_B4D0FC)) {
if (get_enemy_safe(NPC_JungleFuzzy) == NULL) {
script->varTable[0] = FALSE;
} else {
script->varTable[0] = TRUE;
}
return ApiStatus_DONE2;
}
EvtScript N(EVS_OnShakeTree1) = {
EVT_WAIT(15)
EVT_CALL(N(func_8024268C_B4D0FC))
EVT_IF_EQ(LVar0, 1)
EVT_CALL(SetNpcVar, NPC_JungleFuzzy, 7, 1)
EVT_END_IF
EVT_RETURN
EVT_END
};
FoliageModelList N(Tree1_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o95, MODEL_o96, MODEL_o97, MODEL_o98, MODEL_o99);
FoliageModelList N(Tree1_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o94);
FoliageVectorList N(Tree1_Effects) = {
.count = 2,
.vectors = {
{ 87.0f, 114.0f, -390.0f },
{ 172.0f, 114.0f, -400.0f },
}
};
ShakeTreeConfig N(ShakeTree_Tree1) = {
.leaves = &N(Tree1_LeafModels),
.trunk = &N(Tree1_TrunkModels),
.vectors = &N(Tree1_Effects),
.callback = &N(EVS_OnShakeTree1),
};
BombTrigger N(BombPos_Tree1) = {
.pos = { 127.0f, 0.0f, -420.0f },
.radius = 0.0f
};
FoliageModelList N(Tree2_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o89, MODEL_o90, MODEL_o91, MODEL_o92, MODEL_o93);
FoliageModelList N(Tree2_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o88);
FoliageDropList N(Tree2_Drops) = {
.count = 1,
.drops = {
{
.itemID = ITEM_COIN,
.pos = { 400, 100, -145 },
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
.pickupFlag = GF_JAN05_Tree2_Coin,
},
}
};
FoliageVectorList N(Tree2_Effects) = {
.count = 2,
.vectors = {
{ 402.0f, 114.0f, -135.0f },
{ 487.0f, 114.0f, -145.0f },
}
};
ShakeTreeConfig N(ShakeTree_Tree2) = {
.leaves = &N(Tree2_LeafModels),
.trunk = &N(Tree2_TrunkModels),
.drops = &N(Tree2_Drops),
.vectors = &N(Tree2_Effects),
};
BombTrigger N(BombPos_Tree2) = {
.pos = { 442.0f, 0.0f, -165.0f },
.radius = 0.0f
};
FoliageModelList N(Tree3_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o83, MODEL_o84, MODEL_o85, MODEL_o86, MODEL_o87);
FoliageModelList N(Tree3_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o34);
FoliageVectorList N(Tree3_Effects) = {
.count = 2,
.vectors = {
{ -309.0f, 112.0f, -301.0f },
{ -226.0f, 105.0f, -306.0f },
}
};
ShakeTreeConfig N(ShakeTree_Tree3) = {
.leaves = &N(Tree3_LeafModels),
.trunk = &N(Tree3_TrunkModels),
.vectors = &N(Tree3_Effects),
};
BombTrigger N(BombPos_Tree3) = {
.pos = { -270.0f, 0.0f, -310.0f },
.radius = 0.0f
};
EvtScript N(EVS_SetupTrees) = {
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree1)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_WALL_HAMMER, COLLIDER_o187, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree1)), 1, 0)
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree2)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_WALL_HAMMER, COLLIDER_o188, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree2)), 1, 0)
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree3)))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_WALL_HAMMER, COLLIDER_o87, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree_Trees)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree3)), 1, 0)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,11 @@
#include "jan_05.h"
#include "entity.h"
EvtScript N(EVS_MakeEntities) = {
EVT_CALL(MakeEntity, EVT_PTR(Entity_RedBlock), 0, 60, 0, 0, ITEM_POWER_QUAKE, MAKE_ENTITY_END)
EVT_CALL(AssignBlockFlag, GF_JAN05_BadgeBlock_PowerQuake)
EVT_CALL(MakeEntity, EVT_PTR(Entity_CymbalPlant), 205, 0, 220, 0, MAKE_ENTITY_END)
EVT_CALL(MakeEntity, EVT_PTR(Entity_TrumpetPlant), -386, 0, -214, 160, MAKE_ENTITY_END)
EVT_RETURN
EVT_END
};

View File

@ -1,9 +0,0 @@
#include "jan_06.h"
static char* N(exit_str_0) = "jan_05";
static char* N(exit_str_1) = "jan_07";
static char* N(exit_str_2) = "jan_12";
static char* N(exit_str_3) = "jan_09";
#include "world/common/atomic/TexturePan.inc.c"

View File

@ -1,12 +0,0 @@
#include "jan_06.h"
ApiStatus func_80240310_B52B40(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
script->functionTemp[0] = evt_get_variable(script, *args++);
script->functionTemp[1] = evt_get_variable(script, *args++);
script->functionTemp[2] = evt_get_variable(script, *args++);
sfx_adjust_env_sound_pos(SOUND_9E, SOUND_SPACE_MODE_0, script->functionTemp[0], script->functionTemp[1], script->functionTemp[2]);
return ApiStatus_DONE2;
}

View File

@ -1,3 +0,0 @@
#include "jan_06.h"
#include "world/common/todo/UnkShadowFunc001.inc.c"

Some files were not shown because too many files have changed in this diff Show More