mirror of
https://github.com/pmret/papermario.git
synced 2024-11-08 12:02:30 +01:00
area sam (#931)
* sam_02 * sam_11 ok * sam_11 done * jan progress * jan_03 * fix * small * oops * spaceman --------- Co-authored-by: HailSanta <Hail2Santa@gmail.com>
This commit is contained in:
parent
625d7874c5
commit
18befa1ec6
@ -1739,6 +1739,12 @@ typedef struct BombTrigger {
|
||||
/* 0x0C */ s32 radius; // effective 'size' of the object, usually set to zero because bombettes explosion radius is large enough
|
||||
} BombTrigger; // size = 0x10;
|
||||
|
||||
// the use of this is a bug in sam_11
|
||||
typedef struct BombTriggerF {
|
||||
/* 0x00 */ Vec3f pos;
|
||||
/* 0x0C */ f32 radius;
|
||||
} BombTriggerF; // size = 0x10;
|
||||
|
||||
typedef struct AnimatedModel {
|
||||
/* 0x00 */ s32 animModelID;
|
||||
/* 0x04 */ Vec3f pos;
|
||||
|
@ -2382,29 +2382,19 @@ typedef struct ChapterChangeFXData {
|
||||
} ChapterChangeFXData; // size = 0x58
|
||||
|
||||
typedef struct IceShardFXData {
|
||||
/* 0x00 */ s32 unk_00;
|
||||
/* 0x04 */ f32 unk_04;
|
||||
/* 0x08 */ f32 unk_08;
|
||||
/* 0x0C */ f32 unk_0C;
|
||||
/* 0x10 */ s32 unk_10;
|
||||
/* 0x14 */ s32 unk_14;
|
||||
/* 0x18 */ s32 unk_18;
|
||||
/* 0x1C */ s32 unk_1C;
|
||||
/* 0x20 */ s32 unk_20;
|
||||
/* 0x24 */ s32 unk_24;
|
||||
/* 0x28 */ s32 unk_28;
|
||||
/* 0x2C */ s32 unk_2C;
|
||||
/* 0x30 */ s32 unk_30;
|
||||
/* 0x34 */ s32 unk_34;
|
||||
/* 0x38 */ f32 unk_38;
|
||||
/* 0x3C */ f32 unk_3C;
|
||||
/* 0x40 */ f32 unk_40;
|
||||
/* 0x44 */ f32 unk_44;
|
||||
/* 0x48 */ f32 unk_48;
|
||||
/* 0x4C */ f32 unk_4C;
|
||||
/* 0x50 */ f32 unk_50;
|
||||
/* 0x54 */ f32 unk_54;
|
||||
/* 0x58 */ f32 unk_58;
|
||||
/* 0x00 */ s32 type;
|
||||
/* 0x04 */ Vec3f pos;
|
||||
/* 0x10 */ s32 timeLeft;
|
||||
/* 0x14 */ s32 lifetime;
|
||||
/* 0x18 */ Color4i primCol;
|
||||
/* 0x28 */ Color4i envCol;
|
||||
/* 0x38 */ f32 scale;
|
||||
/* 0x3C */ f32 rotation;
|
||||
/* 0x40 */ f32 angularVel;
|
||||
/* 0x44 */ f32 animFrame;
|
||||
/* 0x48 */ f32 animRate;
|
||||
/* 0x4C */ Vec3f vel;
|
||||
/* 0x58 */ f32 gravAccel;
|
||||
} IceShardFXData; // size = 0x5C
|
||||
|
||||
typedef struct SpiritCardFXData {
|
||||
|
@ -1690,12 +1690,12 @@ enum ItemIDs {
|
||||
ITEM_LETTER19 = 0x0000004C,
|
||||
ITEM_UNUSED_LETTER06 = 0x0000004D,
|
||||
ITEM_LETTER20 = 0x0000004E,
|
||||
ITEM_LETTER21 = 0x0000004F,
|
||||
ITEM_LETTER22 = 0x00000050,
|
||||
ITEM_LETTER_TO_FROSTT = 0x00000051,
|
||||
ITEM_LETTER_TO_RED_YOSHI_KID = 0x0000004F,
|
||||
ITEM_LETTER_TO_DANE_T = 0x00000050,
|
||||
ITEM_LETTER_TO_FROST_T = 0x00000051,
|
||||
ITEM_LETTER24 = 0x00000052,
|
||||
ITEM_ARTIFACT = 0x00000053,
|
||||
ITEM_LETTER25 = 0x00000054,
|
||||
ITEM_LETTER_TO_KOLORADO = 0x00000054,
|
||||
ITEM_UNUSED_LETTER07 = 0x00000055,
|
||||
ITEM_DOLLY = 0x00000056,
|
||||
ITEM_WATER_STONE = 0x00000057,
|
||||
@ -3092,7 +3092,7 @@ enum ItemEntityFlags {
|
||||
ITEM_ENTITY_FLAG_800 = 0x00000800,
|
||||
ITEM_ENTITY_FLAG_1000 = 0x00001000,
|
||||
ITEM_ENTITY_FLAG_FIXED = 0x00002000,
|
||||
ITEM_ENTITY_FLAG_TINY = 0x00004000,
|
||||
ITEM_ENTITY_RESIZABLE = 0x00004000,
|
||||
ITEM_ENTITY_FLAG_8000 = 0x00008000,
|
||||
ITEM_ENTITY_FLAG_10000 = 0x00010000,
|
||||
ITEM_ENTITY_FLAG_20000 = 0x00020000,
|
||||
@ -4773,6 +4773,7 @@ enum TexPanner {
|
||||
};
|
||||
|
||||
enum CustomGfxUnit {
|
||||
CUSTOM_GFX_NONE = -1,
|
||||
CUSTOM_GFX_0 = 0x00,
|
||||
CUSTOM_GFX_1 = 0x01,
|
||||
CUSTOM_GFX_2 = 0x02,
|
||||
@ -4920,6 +4921,7 @@ enum EnemyActionFlags {
|
||||
enum EnemyDetectFlags {
|
||||
AI_DETECT_SIGHT = 0x01,
|
||||
AI_DETECT_SENSITIVE_MOTION = 0x02,
|
||||
AI_DETECT_FLAG_8 = 0x08,
|
||||
};
|
||||
|
||||
enum EnemyTerritoryFlags {
|
||||
@ -5627,13 +5629,41 @@ typedef enum FoldType {
|
||||
FOLD_TYPE_A = 0xA,
|
||||
FOLD_TYPE_B = 0xB,
|
||||
FOLD_TYPE_C = 0xC,
|
||||
FOLD_TYPE_D = 0xD, // noisy star spirit
|
||||
FOLD_TYPE_D = 0xD, // noisy hologram -- used for ghostly star spirits and merlar
|
||||
FOLD_TYPE_E = 0xE,
|
||||
FOLD_TYPE_F = 0xF,
|
||||
FOLD_TYPE_10 = 0x10,
|
||||
FOLD_TYPE_11 = 0x11,
|
||||
} FoldType;
|
||||
|
||||
typedef enum FoldRenderType {
|
||||
FOLD_RENDER_TYPE_0 = 0x0,
|
||||
FOLD_RENDER_TYPE_1 = 0x1,
|
||||
FOLD_RENDER_TYPE_2 = 0x2,
|
||||
FOLD_RENDER_TYPE_3 = 0x3,
|
||||
FOLD_RENDER_TYPE_4 = 0x4,
|
||||
FOLD_RENDER_TYPE_5 = 0x5,
|
||||
FOLD_RENDER_TYPE_6 = 0x6,
|
||||
FOLD_RENDER_TYPE_7 = 0x7,
|
||||
FOLD_RENDER_TYPE_8 = 0x8,
|
||||
FOLD_RENDER_TYPE_9 = 0x9,
|
||||
FOLD_RENDER_TYPE_A = 0xA,
|
||||
FOLD_RENDER_TYPE_B = 0xB,
|
||||
FOLD_RENDER_TYPE_C = 0xC,
|
||||
FOLD_RENDER_TYPE_D = 0xD,
|
||||
FOLD_RENDER_TYPE_E = 0xE,
|
||||
FOLD_RENDER_TYPE_F = 0xF,
|
||||
FOLD_RENDER_TYPE_10 = 0x10,
|
||||
} FoldRenderType;
|
||||
|
||||
typedef enum FoldMeshType {
|
||||
FOLD_MESH_TYPE_0 = 0x0,
|
||||
FOLD_MESH_TYPE_1 = 0x1,
|
||||
FOLD_MESH_TYPE_2 = 0x2,
|
||||
FOLD_MESH_TYPE_3 = 0x3,
|
||||
FOLD_MESH_TYPE_4 = 0x4,
|
||||
} FoldMeshType;
|
||||
|
||||
enum MoveType {
|
||||
MOVE_TYPE_NONE = 0,
|
||||
MOVE_TYPE_HAMMER = 1,
|
||||
|
@ -125,6 +125,10 @@
|
||||
#define COLLISION_WITH_NPC_BIT 0x2000
|
||||
#define COLLISION_WITH_ENTITY_BIT 0x4000
|
||||
|
||||
#define ENTITY_COLLIDER_ID(entityIndex) (entityIndex | COLLISION_WITH_ENTITY_BIT)
|
||||
|
||||
#define NO_COLLIDER -1
|
||||
|
||||
#define NPC_DISPOSE_LOCATION 0,-1000,0
|
||||
#define NPC_DISPOSE_POS_X 0
|
||||
#define NPC_DISPOSE_POS_Y -1000
|
||||
|
@ -7,10 +7,16 @@
|
||||
|
||||
// battle and stage are optional in overloaded NPC_GROUP macros
|
||||
#define NPC_GROUP(args...) VFUNC(NPC_GROUP, args)
|
||||
#define NPC_GROUP1(npcs) { sizeof(npcs) / sizeof(StaticNpc), (StaticNpc*) &npcs, 0, 0 }
|
||||
#define NPC_GROUP2(npcs, battle) { sizeof(npcs) / sizeof(StaticNpc), (StaticNpc*) &npcs, battle, 0 }
|
||||
#define NPC_GROUP1(npcs) { sizeof(npcs) / sizeof(StaticNpc), (StaticNpc*) &npcs, 0, 0 }
|
||||
#define NPC_GROUP2(npcs, battle) { sizeof(npcs) / sizeof(StaticNpc), (StaticNpc*) &npcs, battle, 0 }
|
||||
#define NPC_GROUP3(npcs, battle, stage) { sizeof(npcs) / sizeof(StaticNpc), (StaticNpc*) &npcs, battle, stage + 1 }
|
||||
|
||||
#define NPC_GROUP_EXPLICIT_SIZE(args...) VFUNC(NPC_GROUP_EXPLICIT_SIZE, args)
|
||||
#define NPC_GROUP_EXPLICIT_SIZE3(npcs, start, count) { count, (StaticNpc*) &npcs[start], 0, 0 }
|
||||
#define NPC_GROUP_EXPLICIT_SIZE4(npcs, start, count, battle) { count, (StaticNpc*) &npcs[start], battle, 0 }
|
||||
#define NPC_GROUP_EXPLICIT_SIZE5(npcs, start, count, battle, stage) { count, (StaticNpc*) &npcs[start], battle, stage + 1 }
|
||||
|
||||
|
||||
#define NO_DROPS { { F16(100), F16(0), 0, F16(0) }, }
|
||||
|
||||
// rename this to NO_DROPS and the above to NO_STAT_DROPS after all map data done
|
||||
|
@ -707,7 +707,7 @@ enum GameFlags {
|
||||
GF_IWA03_ItemBlock_Mushroom = GameFlag(0x2BF),
|
||||
GF_IWA03_ItemBlock_HoneySyrup = GameFlag(0x2C0),
|
||||
GF_IWA01_Item_Letter01 = GameFlag(0x2C1),
|
||||
GF_IWA03_Item_Letter25 = GameFlag(0x2C2),
|
||||
GF_IWA03_Item_LettertoKolorado = GameFlag(0x2C2),
|
||||
GF_IWA04_Item_Letter10 = GameFlag(0x2C3),
|
||||
GF_IWA04_Defeated_Buzzar = GameFlag(0x2C4),
|
||||
GF_IWA10_Bush1_Coin = GameFlag(0x2C5),
|
||||
|
@ -260,7 +260,7 @@ ApiStatus CountFortessKeys(Evt* script, s32 isInitialCall);
|
||||
ApiStatus RemoveFortressKeys(Evt* script, s32 isInitialCall);
|
||||
ApiStatus MakeItemEntity(Evt* script, s32 isInitialCall);
|
||||
ApiStatus DropItemEntity(Evt* script, s32 isInitialCall);
|
||||
ApiStatus DropTinyItemEntity(Evt* script, s32 isInitialCall);
|
||||
ApiStatus DropResizableItemEntity(Evt* script, s32 isInitialCall);
|
||||
ApiStatus RemoveItemEntity(Evt* script, s32 isInitialCall);
|
||||
ApiStatus AddBadge(Evt* script, s32 isInitialCall);
|
||||
ApiStatus RemoveBadge(Evt* script, s32 isInitialCall);
|
||||
|
@ -896,7 +896,7 @@ void phys_main_collision_below(void) {
|
||||
playerStatus->groundNormalPitch = get_player_normal_pitch();
|
||||
|
||||
if (collHeightHalf + (temp_f24 * 0.5f) < outLength) {
|
||||
colliderID = -1;
|
||||
colliderID = NO_COLLIDER;
|
||||
}
|
||||
if (playerStatus->timeInAir == 0) {
|
||||
collisionStatus->currentFloor = colliderID;
|
||||
|
26
src/C50A0.c
26
src/C50A0.c
@ -950,10 +950,10 @@ s32 make_item_entity(s32 itemID, f32 x, f32 y, f32 z, s32 itemSpawnMode, s32 pic
|
||||
itemEntity->unk_34.z = -9999;
|
||||
D_801565A6 = 30;
|
||||
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_TINY;
|
||||
itemEntity->flags |= ITEM_ENTITY_RESIZABLE;
|
||||
if (gItemTable[itemID].typeFlags & ITEM_TYPE_FLAG_ENTITY_FULLSIZE) {
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_40000;
|
||||
itemEntity->flags &= ~ITEM_ENTITY_FLAG_TINY;
|
||||
itemEntity->flags &= ~ITEM_ENTITY_RESIZABLE;
|
||||
}
|
||||
|
||||
if (ItemEntityAlternatingSpawn != 0) {
|
||||
@ -1045,33 +1045,33 @@ s32 make_item_entity(s32 itemID, f32 x, f32 y, f32 z, s32 itemSpawnMode, s32 pic
|
||||
case ITEM_SPAWN_MODE_TOSS_FADE1:
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_800000 | ITEM_ENTITY_FLAG_1000;
|
||||
itemEntity->scale = 0.8f;
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_TINY;
|
||||
itemEntity->flags |= ITEM_ENTITY_RESIZABLE;
|
||||
break;
|
||||
case ITEM_SPAWN_MODE_TOSS_FADE2:
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_800000 | ITEM_ENTITY_FLAG_1000;
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_10000;
|
||||
itemEntity->spawnType = ITEM_SPAWN_MODE_TOSS_FADE1;
|
||||
itemEntity->scale = 0.8f;
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_TINY;
|
||||
itemEntity->flags |= ITEM_ENTITY_RESIZABLE;
|
||||
break;
|
||||
case ITEM_SPAWN_MODE_TOSS_FADE3:
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_800000 | ITEM_ENTITY_FLAG_1000;
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_400000;
|
||||
itemEntity->spawnType = ITEM_SPAWN_MODE_TOSS_FADE1;
|
||||
itemEntity->scale = 0.8f;
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_TINY;
|
||||
itemEntity->flags |= ITEM_ENTITY_RESIZABLE;
|
||||
break;
|
||||
case ITEM_SPAWN_MODE_TOSS_SPAWN_ALWAYS_SMALL:
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_800000;
|
||||
itemEntity->spawnType = ITEM_SPAWN_MODE_TOSS_SPAWN_ALWAYS;
|
||||
itemEntity->scale = 0.8f;
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_TINY;
|
||||
itemEntity->flags |= ITEM_ENTITY_RESIZABLE;
|
||||
break;
|
||||
case ITEM_SPAWN_MODE_UNKNOWN_1B:
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_800000 | ITEM_ENTITY_FLAG_8000;
|
||||
itemEntity->spawnType = ITEM_SPAWN_MODE_ITEM_BLOCK_SPAWN_ALWAYS;
|
||||
itemEntity->scale = 0.8f;
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_TINY;
|
||||
itemEntity->flags |= ITEM_ENTITY_RESIZABLE;
|
||||
break;
|
||||
case ITEM_SPAWN_MODE_ITEM_BLOCK_SPAWN_ALWAYS:
|
||||
itemEntity->flags |= ITEM_ENTITY_FLAG_800000 | ITEM_ENTITY_FLAG_8000 | ITEM_ENTITY_FLAG_NEVER_VANISH;
|
||||
@ -1188,10 +1188,10 @@ s32 make_item_entity_at_player(s32 itemID, s32 category, s32 pickupMsgFlags) {
|
||||
item->physicsData = NULL;
|
||||
item->pickupDelay = 0;
|
||||
item->wsFaceAngle = 0;
|
||||
item->flags |= ITEM_ENTITY_FLAG_TINY;
|
||||
item->flags |= ITEM_ENTITY_RESIZABLE;
|
||||
|
||||
if (gItemTable[itemID].typeFlags & ITEM_TYPE_FLAG_ENTITY_FULLSIZE) {
|
||||
item->flags = (item->flags | ITEM_ENTITY_FLAG_40000) & ~ITEM_ENTITY_FLAG_TINY;
|
||||
item->flags = (item->flags | ITEM_ENTITY_FLAG_40000) & ~ITEM_ENTITY_RESIZABLE;
|
||||
}
|
||||
if (ItemEntityAlternatingSpawn != 0) {
|
||||
item->flags |= ITEM_ENTITY_FLAG_20000;
|
||||
@ -1394,7 +1394,7 @@ void appendGfx_item_entity(void* data) {
|
||||
rot = clamp_angle(180.0f - gCameras[gCurrentCamID].currentYaw);
|
||||
guTranslateF(mtxTranslate, itemEntity->position.x, itemEntity->position.y + yOffset, itemEntity->position.z);
|
||||
guRotateF(mtxRotY, rot, 0.0f, 1.0f, 0.0f);
|
||||
if (itemEntity->flags & ITEM_ENTITY_FLAG_TINY) {
|
||||
if (itemEntity->flags & ITEM_ENTITY_RESIZABLE) {
|
||||
guScaleF(mtxScale, itemEntity->scale, itemEntity->scale, itemEntity->scale);
|
||||
guMtxCatF(mtxRotY, mtxScale, mtxRotY);
|
||||
}
|
||||
@ -1605,7 +1605,7 @@ void render_item_entities(void) {
|
||||
rotX = clamp_angle(180.0f - gCameras[gCurrentCamID].currentYaw);
|
||||
guTranslateF(sp58, item->position.x, -item->position.y - offsetY, item->position.z);
|
||||
guRotateF(sp98, rotX, 0.0f, 1.0f, 0.0f);
|
||||
if (item->flags & ITEM_ENTITY_FLAG_TINY) {
|
||||
if (item->flags & ITEM_ENTITY_RESIZABLE) {
|
||||
guScaleF(spD8, item->scale, item->scale, item->scale);
|
||||
guMtxCatF(sp98, spD8, sp98);
|
||||
}
|
||||
@ -1766,12 +1766,12 @@ void func_80133A94(s32 idx, s32 itemID) {
|
||||
|
||||
item->itemID = itemID;
|
||||
|
||||
item->flags |= ITEM_ENTITY_FLAG_TINY;
|
||||
item->flags |= ITEM_ENTITY_RESIZABLE;
|
||||
item->flags &= ~ITEM_ENTITY_FLAG_40000;
|
||||
|
||||
if (gItemTable[itemID].typeFlags & ITEM_TYPE_FLAG_ENTITY_FULLSIZE) {
|
||||
item->flags |= ITEM_ENTITY_FLAG_40000;
|
||||
item->flags &= ~ITEM_ENTITY_FLAG_TINY;
|
||||
item->flags &= ~ITEM_ENTITY_RESIZABLE;
|
||||
}
|
||||
|
||||
item_entity_load(item);
|
||||
|
@ -370,10 +370,10 @@ ApiStatus func_80218250_52B8F0(Evt* script, s32 isInitialCall) {
|
||||
for (i = 0; i < ARRAY_COUNT(bpArray); i++) {
|
||||
EffectInstance* effect = fx_ice_shard(bpArray[i].unk_00, bpArray[i].unk_04, bpArray[i].unk_08,
|
||||
bpArray[i].unk_0C, bpArray[i].unk_10, bpArray[i].unk_14);
|
||||
effect->data.iceShard->unk_4C = bpArray[i].unk_18;
|
||||
effect->data.iceShard->unk_50 = bpArray[i].unk_1C;
|
||||
effect->data.iceShard->unk_54 = bpArray[i].unk_20;
|
||||
effect->data.iceShard->unk_58 = bpArray[i].unk_24;
|
||||
effect->data.iceShard->vel.x = bpArray[i].unk_18;
|
||||
effect->data.iceShard->vel.y = bpArray[i].unk_1C;
|
||||
effect->data.iceShard->vel.z = bpArray[i].unk_20;
|
||||
effect->data.iceShard->gravAccel = bpArray[i].unk_24;
|
||||
}
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
|
@ -1375,7 +1375,7 @@ ApiStatus N(ProcessHurricane)(Evt* script, s32 isInitialCall) {
|
||||
partner->state.moveArcAmplitude = 0;
|
||||
sIsHurricaneActive = TRUE;
|
||||
D_8023D338 = 255;
|
||||
sHuffPuffBreathEffect = effect = fx_huff_puff_breath(0, 0.0f, -1000.0f, 0.0f, 0.0f, -2.0f, 0.6f, 0);
|
||||
sHuffPuffBreathEffect = effect = fx_huff_puff_breath(0, NPC_DISPOSE_LOCATION, 0.0f, -2.0f, 0.6f, 0);
|
||||
|
||||
effect->data.huffPuffBreath->primR = 20;
|
||||
effect->data.huffPuffBreath->primG = 80;
|
||||
|
@ -773,7 +773,7 @@ s32 test_ray_colliders(s32 ignoreFlags, f32 startX, f32 startY, f32 startZ, f32
|
||||
gCollisionRayStartY = startY;
|
||||
gCollisionRayStartZ = startZ;
|
||||
gCollisionRayLength = *hitDepth;
|
||||
colliderID = -1;
|
||||
colliderID = NO_COLLIDER;
|
||||
|
||||
if (dirX < 0) {
|
||||
min_x = startX + dirX * gCollisionRayLength;
|
||||
@ -866,7 +866,7 @@ s32 test_ray_zones(f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 d
|
||||
gCollisionRayStartY = startY;
|
||||
gCollisionRayStartZ = startZ;
|
||||
gCollisionRayLength = *hitDepth;
|
||||
colliderID = -1;
|
||||
colliderID = NO_COLLIDER;
|
||||
|
||||
for (i = 0; i < collisionData->numColliders; i++) {
|
||||
collider = &collisionData->colliderList[i];
|
||||
|
@ -387,7 +387,7 @@ void fold_init_state(FoldState* state) {
|
||||
state->unk_06 = 0;
|
||||
state->flags = 0;
|
||||
state->meshType = 0;
|
||||
state->renderType = 0;
|
||||
state->renderType = FOLD_RENDER_TYPE_0;
|
||||
state->firstVtxIdx = 0;
|
||||
state->lastVtxIdx = 0;
|
||||
state->unk_0C = 0;
|
||||
@ -431,7 +431,7 @@ void fold_update(u32 idx, FoldType type, s32 arg2, s32 arg3, s32 arg4, s32 arg5,
|
||||
state->unk_05 = 0;
|
||||
state->unk_06 = 0;
|
||||
state->meshType = 0;
|
||||
state->renderType = 0;
|
||||
state->renderType = FOLD_RENDER_TYPE_0;
|
||||
state->unk_1C[0][0] = -1;
|
||||
state->unk_1C[1][0] = -1;
|
||||
state->flags &= FOLD_STATE_FLAG_ENABLED;
|
||||
@ -444,7 +444,7 @@ void fold_update(u32 idx, FoldType type, s32 arg2, s32 arg3, s32 arg4, s32 arg5,
|
||||
return;
|
||||
case FOLD_TYPE_1:
|
||||
state->unk_05 = 0;
|
||||
state->renderType = 0;
|
||||
state->renderType = FOLD_RENDER_TYPE_0;
|
||||
state->unk_1C[0][0] = -1;
|
||||
return;
|
||||
case FOLD_TYPE_2:
|
||||
@ -508,7 +508,7 @@ void fold_update(u32 idx, FoldType type, s32 arg2, s32 arg3, s32 arg4, s32 arg5,
|
||||
switch (type) {
|
||||
case FOLD_TYPE_3:
|
||||
state->meshType = 0;
|
||||
state->renderType = 0;
|
||||
state->renderType = FOLD_RENDER_TYPE_0;
|
||||
break;
|
||||
case FOLD_TYPE_4:
|
||||
state->subdivX = 4;
|
||||
@ -518,7 +518,7 @@ void fold_update(u32 idx, FoldType type, s32 arg2, s32 arg3, s32 arg4, s32 arg5,
|
||||
break;
|
||||
case FOLD_TYPE_5:
|
||||
state->meshType = 2;
|
||||
state->renderType = 0xB;
|
||||
state->renderType = FOLD_RENDER_TYPE_B;
|
||||
state->unk_3C[0][0] = 0.0f;
|
||||
state->unk_3C[0][1] = 0.0f;
|
||||
state->flags |= FOLD_STATE_FLAG_200;
|
||||
@ -527,21 +527,21 @@ void fold_update(u32 idx, FoldType type, s32 arg2, s32 arg3, s32 arg4, s32 arg5,
|
||||
case FOLD_TYPE_7:
|
||||
case FOLD_TYPE_8:
|
||||
if (arg2 >= 0xFF && arg3 >= 0xFF && arg4 >= 0xFF && arg5 >= 0xFF) {
|
||||
state->renderType = 0;
|
||||
state->renderType = FOLD_RENDER_TYPE_0;
|
||||
} else if (arg5 >= 0xFF) {
|
||||
state->renderType = 1;
|
||||
state->renderType = FOLD_RENDER_TYPE_1;
|
||||
} else if (arg2 >= 0xFF && arg3 >= 0xFF && arg4 >= 0xFF) {
|
||||
state->renderType = 2;
|
||||
state->renderType = FOLD_RENDER_TYPE_2;
|
||||
} else {
|
||||
state->renderType = 3;
|
||||
state->renderType = FOLD_RENDER_TYPE_3;
|
||||
}
|
||||
break;
|
||||
case FOLD_TYPE_9:
|
||||
case FOLD_TYPE_A:
|
||||
if (arg5 == 255.0) {
|
||||
state->renderType = 4;
|
||||
state->renderType = FOLD_RENDER_TYPE_4;
|
||||
} else {
|
||||
state->renderType = 5;
|
||||
state->renderType = FOLD_RENDER_TYPE_5;
|
||||
}
|
||||
break;
|
||||
case FOLD_TYPE_B:
|
||||
@ -557,9 +557,9 @@ void fold_update(u32 idx, FoldType type, s32 arg2, s32 arg3, s32 arg4, s32 arg5,
|
||||
state->meshType = 0;
|
||||
|
||||
if ((arg3 & 0xFF) == 0xFF) {
|
||||
state->renderType = 6;
|
||||
state->renderType = FOLD_RENDER_TYPE_6;
|
||||
} else {
|
||||
state->renderType = 8;
|
||||
state->renderType = FOLD_RENDER_TYPE_8;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -576,25 +576,25 @@ void fold_update(u32 idx, FoldType type, s32 arg2, s32 arg3, s32 arg4, s32 arg5,
|
||||
state->meshType = 0;
|
||||
|
||||
if ((arg3 & 0xFF) == 0xFF) {
|
||||
state->renderType = 9;
|
||||
state->renderType = FOLD_RENDER_TYPE_9;
|
||||
} else {
|
||||
state->renderType = 0xA;
|
||||
state->renderType = FOLD_RENDER_TYPE_A;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FOLD_TYPE_D:
|
||||
state->renderType = 0xC;
|
||||
state->renderType = FOLD_RENDER_TYPE_C;
|
||||
break;
|
||||
case FOLD_TYPE_E:
|
||||
state->renderType = 0xD;
|
||||
state->renderType = FOLD_RENDER_TYPE_D;
|
||||
break;
|
||||
case FOLD_TYPE_F:
|
||||
case FOLD_TYPE_10:
|
||||
state->meshType = 4;
|
||||
if (arg3 >= 0xFF) {
|
||||
state->renderType = 0xE;
|
||||
state->renderType = FOLD_RENDER_TYPE_E;
|
||||
} else {
|
||||
state->renderType = 0xF;
|
||||
state->renderType = FOLD_RENDER_TYPE_F;
|
||||
}
|
||||
state->unk_3C[1][0] = 0.0f;
|
||||
state->unk_3C[1][1] = 0.0f;
|
||||
@ -648,7 +648,7 @@ s32 fold_appendGfx_component(s32 idx, FoldImageRecPart* image, u32 flagBits, Mat
|
||||
state->unk_1C[1][0] = -1;
|
||||
state->unk_05 = 0;
|
||||
state->meshType = 0;
|
||||
state->renderType = 0;
|
||||
state->renderType = FOLD_RENDER_TYPE_0;
|
||||
state->flags &= ~(FOLD_STATE_FLAG_1000 | FOLD_STATE_FLAG_800 | FOLD_STATE_FLAG_100 | FOLD_STATE_FLAG_80);
|
||||
fold_clear_state_gfx(state);
|
||||
ret = 1;
|
||||
@ -658,7 +658,7 @@ s32 fold_appendGfx_component(s32 idx, FoldImageRecPart* image, u32 flagBits, Mat
|
||||
state->unk_05 = 0;
|
||||
state->unk_06 = 0;
|
||||
state->meshType = 0;
|
||||
state->renderType = 0;
|
||||
state->renderType = FOLD_RENDER_TYPE_0;
|
||||
state->unk_1C[0][0] = -1;
|
||||
state->unk_1C[1][0] = -1;
|
||||
state->flags &= FOLD_STATE_FLAG_ENABLED;
|
||||
@ -744,16 +744,16 @@ void func_8013B1B0(FoldState* state, Matrix4f mtx) {
|
||||
if (!cond && (fold_currentImage->alphaMultiplier < 0xFF)) {
|
||||
state->unk_1C[1][3] = 0xFF;
|
||||
switch (state->renderType) {
|
||||
case 0:
|
||||
case 11:
|
||||
renderType = 2;
|
||||
case FOLD_RENDER_TYPE_0:
|
||||
case FOLD_RENDER_TYPE_B:
|
||||
renderType = FOLD_RENDER_TYPE_2;
|
||||
break;
|
||||
case 1:
|
||||
case 4:
|
||||
renderType = 3;
|
||||
case FOLD_RENDER_TYPE_1:
|
||||
case FOLD_RENDER_TYPE_4:
|
||||
renderType = FOLD_RENDER_TYPE_3;
|
||||
break;
|
||||
case 9:
|
||||
renderType = 10;
|
||||
case FOLD_RENDER_TYPE_9:
|
||||
renderType = FOLD_RENDER_TYPE_A;
|
||||
break;
|
||||
}
|
||||
primColor = state->unk_1C[1][3] * alphaComp;
|
||||
@ -785,11 +785,11 @@ void func_8013B1B0(FoldState* state, Matrix4f mtx) {
|
||||
gDPSetRenderMode(gMasterGfxPos++, mode1, mode2);
|
||||
|
||||
switch (renderType) {
|
||||
case 1:
|
||||
case FOLD_RENDER_TYPE_1:
|
||||
gDPSetCombineMode(gMasterGfxPos++, G_CC_MODULATEIDECALA_PRIM, G_CC_MODULATEIDECALA_PRIM);
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, state->unk_1C[1][0], state->unk_1C[1][1], state->unk_1C[1][2], 0);
|
||||
break;
|
||||
case 2:
|
||||
case FOLD_RENDER_TYPE_2:
|
||||
if (primColor <= 0) {
|
||||
return;
|
||||
}
|
||||
@ -797,7 +797,7 @@ void func_8013B1B0(FoldState* state, Matrix4f mtx) {
|
||||
TEXEL0, 0, PRIMITIVE, 0);
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 0, 0, 0, primColor);
|
||||
break;
|
||||
case 3:
|
||||
case FOLD_RENDER_TYPE_3:
|
||||
if (primColor <= 0) {
|
||||
return;
|
||||
}
|
||||
@ -805,12 +805,12 @@ void func_8013B1B0(FoldState* state, Matrix4f mtx) {
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, state->unk_1C[1][0], state->unk_1C[1][1],
|
||||
state->unk_1C[1][2], primColor);
|
||||
break;
|
||||
case 4:
|
||||
case FOLD_RENDER_TYPE_4:
|
||||
gDPSetCombineLERP(gMasterGfxPos++, 1, PRIMITIVE, TEXEL0, PRIMITIVE, 0, 0, 0, TEXEL0, 1, PRIMITIVE,
|
||||
TEXEL0, PRIMITIVE, 0, 0, 0, TEXEL0);
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, state->unk_1C[1][0], state->unk_1C[1][1], state->unk_1C[1][2], 0);
|
||||
break;
|
||||
case 5:
|
||||
case FOLD_RENDER_TYPE_5:
|
||||
if (primColor <= 0) {
|
||||
return;
|
||||
}
|
||||
@ -819,35 +819,35 @@ void func_8013B1B0(FoldState* state, Matrix4f mtx) {
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, state->unk_1C[1][0], state->unk_1C[1][1],
|
||||
state->unk_1C[1][2], primColor);
|
||||
break;
|
||||
case 6:
|
||||
case FOLD_RENDER_TYPE_6:
|
||||
gDPSetCombineMode(gMasterGfxPos++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
|
||||
gSPSetGeometryMode(gMasterGfxPos++, G_SHADE | G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gMasterGfxPos++, G_LIGHTING);
|
||||
break;
|
||||
case 9:
|
||||
case FOLD_RENDER_TYPE_9:
|
||||
gDPSetCombineLERP(gMasterGfxPos++, 1, SHADE, TEXEL0, SHADE, 0, 0, 0, TEXEL0, 1, SHADE, TEXEL0, SHADE,
|
||||
0, 0, 0, TEXEL0);
|
||||
gSPSetGeometryMode(gMasterGfxPos++, G_SHADE | G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gMasterGfxPos++, G_LIGHTING);
|
||||
break;
|
||||
case 7:
|
||||
case FOLD_RENDER_TYPE_7:
|
||||
gDPSetCombineLERP(gMasterGfxPos++, 0, 0, 0, TEXEL0, TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, TEXEL0, 0,
|
||||
SHADE, 0);
|
||||
gSPSetGeometryMode(gMasterGfxPos++, G_SHADE | G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gMasterGfxPos++, G_LIGHTING);
|
||||
break;
|
||||
case 8:
|
||||
case FOLD_RENDER_TYPE_8:
|
||||
gDPSetCombineMode(gMasterGfxPos++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
gSPSetGeometryMode(gMasterGfxPos++, G_SHADE | G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gMasterGfxPos++, G_LIGHTING);
|
||||
break;
|
||||
case 10:
|
||||
case FOLD_RENDER_TYPE_A:
|
||||
gDPSetCombineLERP(gMasterGfxPos++, 1, SHADE, TEXEL0, SHADE, TEXEL0, 0, SHADE, 0, 1, SHADE, TEXEL0,
|
||||
SHADE, TEXEL0, 0, SHADE, 0);
|
||||
gSPSetGeometryMode(gMasterGfxPos++, G_SHADE | G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gMasterGfxPos++, G_LIGHTING);
|
||||
break;
|
||||
case 11:
|
||||
case FOLD_RENDER_TYPE_B:
|
||||
if (state->flags & (FOLD_STATE_FLAG_2000 | FOLD_STATE_FLAG_8000)) {
|
||||
Camera* currentCam = &gCameras[gCurrentCameraID];
|
||||
|
||||
@ -867,7 +867,7 @@ void func_8013B1B0(FoldState* state, Matrix4f mtx) {
|
||||
}
|
||||
gDPSetCombineMode(gMasterGfxPos++, G_CC_DECALRGBA, G_CC_DECALRGBA);
|
||||
break;
|
||||
case 12:
|
||||
case FOLD_RENDER_TYPE_C:
|
||||
if (state->unk_1C[1][0] == 0) {
|
||||
primColor = state->unk_1C[1][3] * alphaComp;
|
||||
gDPSetCombineLERP(gMasterGfxPos++, NOISE, PRIMITIVE, PRIMITIVE, TEXEL0, TEXEL0, 0, PRIMITIVE, 0,
|
||||
@ -895,17 +895,17 @@ void func_8013B1B0(FoldState* state, Matrix4f mtx) {
|
||||
gDPSetBlendColor(gMasterGfxPos++, 0, 0, 0, blendColor);
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
case FOLD_RENDER_TYPE_D:
|
||||
gDPSetCombineLERP(gMasterGfxPos++, 0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0, 0, 0, 0, PRIMITIVE, 0, 0, 0,
|
||||
TEXEL0);
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, state->unk_1C[1][0], state->unk_1C[1][1], state->unk_1C[1][2], 0);
|
||||
break;
|
||||
case 0:
|
||||
case 14:
|
||||
case 16:
|
||||
case FOLD_RENDER_TYPE_0:
|
||||
case FOLD_RENDER_TYPE_E:
|
||||
case FOLD_RENDER_TYPE_10:
|
||||
gDPSetCombineMode(gMasterGfxPos++, G_CC_DECALRGBA, G_CC_DECALRGBA);
|
||||
break;
|
||||
case 15:
|
||||
case FOLD_RENDER_TYPE_F:
|
||||
gDPSetCombineLERP(gMasterGfxPos++, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, TEXEL0, TEXEL0, 0,
|
||||
PRIMITIVE, 0);
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 0, 0, 0, state->unk_1C[1][1]);
|
||||
@ -914,17 +914,17 @@ void func_8013B1B0(FoldState* state, Matrix4f mtx) {
|
||||
}
|
||||
|
||||
switch (state->meshType) {
|
||||
case 0:
|
||||
case FOLD_MESH_TYPE_0:
|
||||
func_8013CFA8(state, mtx);
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
case FOLD_MESH_TYPE_1:
|
||||
case FOLD_MESH_TYPE_3:
|
||||
func_8013DAB4(state, mtx);
|
||||
break;
|
||||
case 2:
|
||||
case FOLD_MESH_TYPE_2:
|
||||
func_8013E2F0(state, mtx);
|
||||
break;
|
||||
case 4:
|
||||
case FOLD_MESH_TYPE_4:
|
||||
func_8013CFA8(state, mtx);
|
||||
gDPPipeSync(gMasterGfxPos++);
|
||||
func_8013E904(state, mtx);
|
||||
@ -933,7 +933,7 @@ void func_8013B1B0(FoldState* state, Matrix4f mtx) {
|
||||
|
||||
gDPPipeSync(gMasterGfxPos++);
|
||||
|
||||
if (state->renderType == 0xC) {
|
||||
if (state->renderType == FOLD_RENDER_TYPE_C) {
|
||||
gDPSetAlphaCompare(gMasterGfxPos++, G_AC_NONE);
|
||||
gDPSetAlphaDither(gMasterGfxPos++, G_AD_DISABLE);
|
||||
}
|
||||
@ -1339,7 +1339,10 @@ void func_8013CFA8(FoldState* state, Matrix4f mtx) {
|
||||
if ((D_80151328->flags & 1) &&
|
||||
(state->arrayIdx != 0) &&
|
||||
(state->flags & someFlags) &&
|
||||
(state->renderType == 0 || state->renderType == 2 || state->renderType == 15 || state->renderType == 7))
|
||||
(state->renderType == FOLD_RENDER_TYPE_0
|
||||
|| state->renderType == FOLD_RENDER_TYPE_2
|
||||
|| state->renderType == FOLD_RENDER_TYPE_F
|
||||
|| state->renderType == FOLD_RENDER_TYPE_7))
|
||||
{
|
||||
gDPScrollMultiTile2_4b(gMasterGfxPos++,
|
||||
fold_currentImage->raster, G_IM_FMT_CI,
|
||||
@ -1358,13 +1361,13 @@ void func_8013CFA8(FoldState* state, Matrix4f mtx) {
|
||||
|
||||
alpha = 255;
|
||||
switch (state->renderType) {
|
||||
case 0:
|
||||
case FOLD_RENDER_TYPE_0:
|
||||
break;
|
||||
case 2:
|
||||
case 15:
|
||||
case FOLD_RENDER_TYPE_2:
|
||||
case FOLD_RENDER_TYPE_F:
|
||||
alpha = state->unk_1C[1][3];
|
||||
break;
|
||||
case 7:
|
||||
case FOLD_RENDER_TYPE_7:
|
||||
alpha = -1;
|
||||
break;
|
||||
}
|
||||
@ -1423,14 +1426,14 @@ void func_8013CFA8(FoldState* state, Matrix4f mtx) {
|
||||
}
|
||||
|
||||
switch (state->renderType) {
|
||||
case 0:
|
||||
case FOLD_RENDER_TYPE_0:
|
||||
alpha2 = 255;
|
||||
break;
|
||||
case 2:
|
||||
case 15:
|
||||
case FOLD_RENDER_TYPE_2:
|
||||
case FOLD_RENDER_TYPE_F:
|
||||
alpha2 = state->unk_1C[1][3];
|
||||
break;
|
||||
case 7:
|
||||
case FOLD_RENDER_TYPE_7:
|
||||
alpha2 = -1;
|
||||
break;
|
||||
}
|
||||
@ -1504,7 +1507,9 @@ void func_8013DAB4(FoldState* state, Matrix4f mtx) {
|
||||
if ((D_80151328->flags & 1) &&
|
||||
(*D_80156954)[0].arrayIdx != 0 &&
|
||||
(state->flags & (FOLD_STATE_FLAG_100000 | FOLD_STATE_FLAG_80000)) &&
|
||||
(state->renderType == 0 || state->renderType == 2 || state->renderType == 7)) {
|
||||
(state->renderType == FOLD_RENDER_TYPE_0
|
||||
|| state->renderType == FOLD_RENDER_TYPE_2
|
||||
|| state->renderType == FOLD_RENDER_TYPE_7)) {
|
||||
s32 alpha = 255;
|
||||
gDPScrollMultiTile2_4b(gMasterGfxPos++,
|
||||
fold_currentImage->raster, G_IM_FMT_CI,
|
||||
@ -1519,13 +1524,13 @@ void func_8013DAB4(FoldState* state, Matrix4f mtx) {
|
||||
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0x0100, 2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPSetTileSize(gMasterGfxPos++, 2, 0, 0, 63 << 2, 0);
|
||||
switch (state->renderType) {
|
||||
case 0:
|
||||
case FOLD_RENDER_TYPE_0:
|
||||
alpha = 255;
|
||||
break;
|
||||
case 2:
|
||||
case FOLD_RENDER_TYPE_2:
|
||||
alpha = state->unk_1C[1][3];
|
||||
break;
|
||||
case 7:
|
||||
case FOLD_RENDER_TYPE_7:
|
||||
alpha = -1;
|
||||
break;
|
||||
|
||||
@ -1569,7 +1574,10 @@ void func_8013E2F0(FoldState* state, Matrix4f mtx) {
|
||||
gDPSetTextureLUT(gMasterGfxPos++, G_TT_RGBA16);
|
||||
gDPLoadTLUT_pal16(gMasterGfxPos++, 0, fold_currentImage->palette);
|
||||
if ((D_80151328->flags & 1) && (state->flags & (FOLD_STATE_FLAG_100000 | FOLD_STATE_FLAG_80000)) &&
|
||||
(state->renderType == 0 || state->renderType == 2 || state->renderType == 7 || state->renderType == 11)) {
|
||||
(state->renderType == FOLD_RENDER_TYPE_0
|
||||
|| state->renderType == FOLD_RENDER_TYPE_2
|
||||
|| state->renderType == FOLD_RENDER_TYPE_7
|
||||
|| state->renderType == FOLD_RENDER_TYPE_B)) {
|
||||
s32 alpha = 255;
|
||||
gDPScrollMultiTile2_4b(gMasterGfxPos++, fold_currentImage->raster, G_IM_FMT_CI,
|
||||
fold_currentImage->width, fold_currentImage->height,
|
||||
@ -1581,14 +1589,14 @@ void func_8013E2F0(FoldState* state, Matrix4f mtx) {
|
||||
gDPSetTileSize(gMasterGfxPos++, 2, 0, 0, 252, 0);
|
||||
|
||||
switch (state->renderType) {
|
||||
case 0:
|
||||
case 11:
|
||||
case FOLD_RENDER_TYPE_0:
|
||||
case FOLD_RENDER_TYPE_B:
|
||||
alpha = 255;
|
||||
break;
|
||||
case 2:
|
||||
case FOLD_RENDER_TYPE_2:
|
||||
alpha = state->unk_1C[1][3];
|
||||
break;
|
||||
case 7:
|
||||
case FOLD_RENDER_TYPE_7:
|
||||
alpha = -1;
|
||||
break;
|
||||
|
||||
@ -1617,7 +1625,7 @@ void func_8013E904(FoldState* state, Matrix4f mtx) {
|
||||
gSPMatrix(gMasterGfxPos++, VIRTUAL_TO_PHYSICAL(&gDisplayContext->matrixStack[gMatrixListPos++]), G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
|
||||
gDPSetRenderMode(gMasterGfxPos++, G_RM_ZB_XLU_DECAL, G_RM_ZB_XLU_DECAL2);
|
||||
|
||||
if (state->renderType == 15) {
|
||||
if (state->renderType == FOLD_RENDER_TYPE_F) {
|
||||
s32 temp = state->unk_1C[1][1];
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 0, 0, 0, temp);
|
||||
gDPSetCombineLERP(gMasterGfxPos++, TEXEL0, 0, SHADE, 0, TEXEL0, 0, PRIMITIVE, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, PRIMITIVE, 0);
|
||||
|
@ -97,14 +97,14 @@ void ice_pillar_update(EffectInstance* effect) {
|
||||
(data->scale * ((shim_rand_int(10) * 0.7 * 0.1) + 0.3)),
|
||||
i + 30
|
||||
);
|
||||
iceShard->data.iceShard->unk_44 = shim_rand_int(10) * 0.1;
|
||||
iceShard->data.iceShard->unk_48 = (shim_rand_int(30) * 0.01) + 0.1;
|
||||
iceShard->data.iceShard->unk_3C = shim_rand_int(359);
|
||||
iceShard->data.iceShard->unk_40 = shim_rand_int(20);
|
||||
iceShard->data.iceShard->unk_4C = shim_rand_int(10) - 5;
|
||||
iceShard->data.iceShard->unk_50 = shim_rand_int(10) - 5;
|
||||
iceShard->data.iceShard->unk_54 = 0;
|
||||
iceShard->data.iceShard->unk_58 = -0.1f;
|
||||
iceShard->data.iceShard->animFrame = shim_rand_int(10) * 0.1;
|
||||
iceShard->data.iceShard->animRate = (shim_rand_int(30) * 0.01) + 0.1;
|
||||
iceShard->data.iceShard->rotation = shim_rand_int(359);
|
||||
iceShard->data.iceShard->angularVel = shim_rand_int(20);
|
||||
iceShard->data.iceShard->vel.x = shim_rand_int(10) - 5;
|
||||
iceShard->data.iceShard->vel.y = shim_rand_int(10) - 5;
|
||||
iceShard->data.iceShard->vel.z = 0;
|
||||
iceShard->data.iceShard->gravAccel = -0.1f;
|
||||
}
|
||||
shim_remove_effect(data->miscParticles);
|
||||
shim_remove_effect(effect);
|
||||
|
@ -15,11 +15,11 @@ void ice_shard_appendGfx(void* effect);
|
||||
|
||||
EffectInstance* ice_shard_main(
|
||||
s32 arg0,
|
||||
f32 arg1,
|
||||
f32 arg2,
|
||||
f32 arg3,
|
||||
f32 arg4,
|
||||
s32 arg5
|
||||
f32 posX,
|
||||
f32 posY,
|
||||
f32 posZ,
|
||||
f32 scale,
|
||||
s32 duration
|
||||
) {
|
||||
EffectBlueprint bp;
|
||||
EffectInstance* effect;
|
||||
@ -38,33 +38,33 @@ EffectInstance* ice_shard_main(
|
||||
data = effect->data.iceShard = shim_general_heap_malloc(numParts * sizeof(*data));
|
||||
ASSERT(effect->data.iceShard != NULL);
|
||||
|
||||
data->unk_00 = arg0;
|
||||
data->unk_14 = 0;
|
||||
if (arg5 <= 0) {
|
||||
data->unk_10 = 1000;
|
||||
data->type = arg0;
|
||||
data->lifetime = 0;
|
||||
if (duration <= 0) {
|
||||
data->timeLeft = 1000;
|
||||
} else {
|
||||
data->unk_10 = arg5;
|
||||
data->timeLeft = duration;
|
||||
}
|
||||
data->unk_24 = 255;
|
||||
data->unk_04 = arg1;
|
||||
data->unk_08 = arg2;
|
||||
data->unk_0C = arg3;
|
||||
data->unk_38 = arg4;
|
||||
data->unk_18 = 255;
|
||||
data->unk_1C = 255;
|
||||
data->unk_20 = 255;
|
||||
data->unk_28 = 255;
|
||||
data->unk_2C = 255;
|
||||
data->unk_30 = 255;
|
||||
data->unk_34 = 255;
|
||||
data->unk_44 = 0;
|
||||
data->unk_48 = (shim_rand_int(1) * 2 - 1) * 0.25 * (shim_rand_int(4) * 0.1 + 0.1);
|
||||
data->unk_3C = shim_rand_int(359);
|
||||
data->unk_4C = shim_rand_int(10) - 5;
|
||||
data->unk_50 = shim_rand_int(10) - 5;
|
||||
data->unk_54 = shim_rand_int(10) - 5;
|
||||
data->unk_40 = shim_rand_int(40) - 20;
|
||||
data->unk_58 = -0.1f;
|
||||
data->primCol.a = 255;
|
||||
data->pos.x = posX;
|
||||
data->pos.y = posY;
|
||||
data->pos.z = posZ;
|
||||
data->scale = scale;
|
||||
data->primCol.r = 255;
|
||||
data->primCol.g = 255;
|
||||
data->primCol.b = 255;
|
||||
data->envCol.r = 255;
|
||||
data->envCol.g = 255;
|
||||
data->envCol.b = 255;
|
||||
data->envCol.a = 255;
|
||||
data->animFrame = 0;
|
||||
data->animRate = (shim_rand_int(1) * 2 - 1) * 0.25 * (shim_rand_int(4) * 0.1 + 0.1);
|
||||
data->rotation = shim_rand_int(359);
|
||||
data->vel.x = shim_rand_int(10) - 5;
|
||||
data->vel.y = shim_rand_int(10) - 5;
|
||||
data->vel.z = shim_rand_int(10) - 5;
|
||||
data->angularVel = shim_rand_int(40) - 20;
|
||||
data->gravAccel = -0.1f;
|
||||
|
||||
return effect;
|
||||
}
|
||||
@ -74,46 +74,46 @@ void ice_shard_init(EffectInstance* effect) {
|
||||
|
||||
void ice_shard_update(EffectInstance* effect) {
|
||||
IceShardFXData* data = effect->data.iceShard;
|
||||
s32 unk_00 = data->unk_00;
|
||||
s32 unk_00 = data->type;
|
||||
|
||||
if (effect->flags & EFFECT_INSTANCE_FLAG_10) {
|
||||
effect->flags &= ~EFFECT_INSTANCE_FLAG_10;
|
||||
data->unk_10 = 16;
|
||||
data->timeLeft = 16;
|
||||
}
|
||||
|
||||
if (data->unk_10 < 1000) {
|
||||
data->unk_10--;
|
||||
if (data->timeLeft < 1000) {
|
||||
data->timeLeft--;
|
||||
}
|
||||
|
||||
data->unk_14++;
|
||||
data->lifetime++;
|
||||
|
||||
if (data->unk_10 < 0) {
|
||||
if (data->timeLeft < 0) {
|
||||
shim_remove_effect(effect);
|
||||
return;
|
||||
}
|
||||
|
||||
if (data->unk_10 < 16) {
|
||||
data->unk_24 = data->unk_10 * 16;
|
||||
if (data->timeLeft < 16) {
|
||||
data->primCol.a = data->timeLeft * 16;
|
||||
}
|
||||
|
||||
data->unk_44 += data->unk_48;
|
||||
data->animFrame += data->animRate;
|
||||
|
||||
if (data->unk_44 < 0.0f) {
|
||||
data->unk_44 += 1.0f;
|
||||
if (data->animFrame < 0.0f) {
|
||||
data->animFrame += 1.0f;
|
||||
}
|
||||
if (data->unk_44 > 1.0f) {
|
||||
data->unk_44 -= 1.0f;
|
||||
if (data->animFrame > 1.0f) {
|
||||
data->animFrame -= 1.0f;
|
||||
}
|
||||
|
||||
data->unk_50 += data->unk_58;
|
||||
data->unk_04 += data->unk_4C;
|
||||
data->unk_08 += data->unk_50;
|
||||
data->unk_0C += data->unk_54;
|
||||
data->unk_3C += data->unk_40;
|
||||
data->vel.y += data->gravAccel;
|
||||
data->pos.x += data->vel.x;
|
||||
data->pos.y += data->vel.y;
|
||||
data->pos.z += data->vel.z;
|
||||
data->rotation += data->angularVel;
|
||||
|
||||
if (unk_00 >= 2 && data->unk_08 < 0.0f && data->unk_50 < 0.0f) {
|
||||
data->unk_08 = 0.0f;
|
||||
data->unk_50 *= -0.7;
|
||||
if (unk_00 >= 2 && data->pos.y < 0.0f && data->vel.y < 0.0f) {
|
||||
data->pos.y = 0.0f;
|
||||
data->vel.y *= -0.7;
|
||||
}
|
||||
}
|
||||
|
||||
@ -132,10 +132,10 @@ void ice_shard_render(EffectInstance* effect) {
|
||||
|
||||
void ice_shard_appendGfx(void* effect) {
|
||||
IceShardFXData* data = ((EffectInstance*)effect)->data.iceShard;
|
||||
s32 unk_24 = data->unk_24;
|
||||
s32 unk_00 = data->unk_00;
|
||||
s32 temp1;
|
||||
s32 temp2;
|
||||
s32 alpha = data->primCol.a;
|
||||
s32 type = data->type;
|
||||
s32 texCoordS;
|
||||
s32 texCoordT;
|
||||
s32 envAlpha;
|
||||
Matrix4f sp20;
|
||||
Matrix4f unused;
|
||||
@ -143,35 +143,35 @@ void ice_shard_appendGfx(void* effect) {
|
||||
gDPPipeSync(gMasterGfxPos++);
|
||||
gSPSegment(gMasterGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));
|
||||
|
||||
shim_guPositionF(sp20, 0.0f, -gCameras[gCurrentCameraID].currentYaw, 0.0f, data->unk_38, data->unk_04, data->unk_08, data->unk_0C);
|
||||
shim_guPositionF(sp20, 0.0f, -gCameras[gCurrentCameraID].currentYaw, 0.0f, data->scale, data->pos.x, data->pos.y, data->pos.z);
|
||||
shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
|
||||
|
||||
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
shim_guRotateF(sp20, data->unk_3C, 0.0f, 0.0f, 1.0f);
|
||||
shim_guRotateF(sp20, data->rotation, 0.0f, 0.0f, 1.0f);
|
||||
shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
|
||||
|
||||
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gMasterGfxPos++, D_E01108B4[0]);
|
||||
|
||||
temp1 = (unk_00 % 2) * 32;
|
||||
temp2 = (s32) (data->unk_44 * 4.0f) * 32;
|
||||
envAlpha = (data->unk_44 * 4.0f - (s32) data->unk_44 * 4) * 256.0f;
|
||||
texCoordS = (type % 2) * 32;
|
||||
texCoordT = (s32) (data->animFrame * 4.0f) * 32;
|
||||
envAlpha = (data->animFrame * 4.0f - (s32) data->animFrame * 4) * 256.0f;
|
||||
|
||||
gDPSetTileSize(gMasterGfxPos++, G_TX_RENDERTILE,
|
||||
(temp1 ) * 4, (temp2 ) * 4,
|
||||
(temp1 + 31) * 4, (temp2 + 31) * 4);
|
||||
(texCoordS ) * 4, (texCoordT ) * 4,
|
||||
(texCoordS + 31) * 4, (texCoordT + 31) * 4);
|
||||
gDPSetTileSize(gMasterGfxPos++, 1,
|
||||
(temp1 ) * 4, (temp2 + 32) * 4,
|
||||
(temp1 + 31) * 4, (temp2 + 63) * 4);
|
||||
(texCoordS ) * 4, (texCoordT + 32) * 4,
|
||||
(texCoordS + 31) * 4, (texCoordT + 63) * 4);
|
||||
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, data->unk_18, data->unk_1C, data->unk_20, unk_24);
|
||||
gDPSetEnvColor(gMasterGfxPos++, data->unk_28, data->unk_2C, data->unk_30, envAlpha);
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, data->primCol.r, data->primCol.g, data->primCol.b, alpha);
|
||||
gDPSetEnvColor(gMasterGfxPos++, data->envCol.r, data->envCol.g, data->envCol.b, envAlpha);
|
||||
gSPDisplayList(gMasterGfxPos++, D_E01108B0[0]);
|
||||
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
|
||||
|
||||
if (unk_00 % 2 == 1 && (s32) (data->unk_44 * 4.0f) == 3) {
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, data->unk_18, data->unk_1C, data->unk_20, unk_24 * envAlpha / 255);
|
||||
if (type % 2 == 1 && (s32) (data->animFrame * 4.0f) == 3) {
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, data->primCol.r, data->primCol.g, data->primCol.b, alpha * envAlpha / 255);
|
||||
gDPSetCombineLERP(gMasterGfxPos++, 0, 0, 0, PRIMITIVE, SHADE, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, SHADE, 0, PRIMITIVE, 0);
|
||||
gSPDisplayList(gMasterGfxPos++, D_09001168_3F9E28);
|
||||
}
|
||||
|
@ -646,7 +646,7 @@ ApiStatus DropItemEntity(Evt* script, s32 isInitialCall) {
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus DropTinyItemEntity(Evt* script, s32 isInitialCall) {
|
||||
ApiStatus DropResizableItemEntity(Evt* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
s32 itemID = evt_get_variable(script, *args++);
|
||||
s32 x = evt_get_variable(script, *args++);
|
||||
@ -656,7 +656,7 @@ ApiStatus DropTinyItemEntity(Evt* script, s32 isInitialCall) {
|
||||
s32 pickupVar = evt_get_variable_index(script, *args++);
|
||||
|
||||
script->varTable[0] = make_item_entity_nodelay(itemID, x, y, z, itemSpawnMode, pickupVar);
|
||||
set_item_entity_flags(script->varTable[0], ITEM_ENTITY_FLAG_TINY);
|
||||
set_item_entity_flags(script->varTable[0], ITEM_ENTITY_RESIZABLE);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
|
@ -634,42 +634,42 @@ ApiStatus func_802D2520(Evt* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
PlayerStatus* playerStatus = &gPlayerStatus;
|
||||
s32 a0 = *args++;
|
||||
s32 val = evt_get_variable(script, *args++);
|
||||
s32 foldType = evt_get_variable(script, *args++);
|
||||
s32 a2, a3, a4, a5;
|
||||
|
||||
func_802DDFF8(a0, FOLD_TYPE_NONE, 0, 0, 0, 0, 0);
|
||||
|
||||
switch (val) {
|
||||
case 0:
|
||||
switch (foldType) {
|
||||
case FOLD_TYPE_NONE:
|
||||
playerStatus->renderMode = RENDER_MODE_ALPHATEST;
|
||||
func_802DDFF8(a0, FOLD_TYPE_NONE, 0, 0, 0, 0, D_802DB5B0);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
case FOLD_TYPE_2:
|
||||
case FOLD_TYPE_3:
|
||||
playerStatus->renderMode = RENDER_MODE_ALPHATEST;
|
||||
case 1:
|
||||
func_802DDFF8(a0, val, 0, 0, 0, 0, D_802DB5B0);
|
||||
case FOLD_TYPE_1:
|
||||
func_802DDFF8(a0, foldType, 0, 0, 0, 0, D_802DB5B0);
|
||||
break;
|
||||
case 4:
|
||||
case FOLD_TYPE_4:
|
||||
playerStatus->renderMode = RENDER_MODE_ALPHATEST;
|
||||
a2 = evt_get_variable(script, *args++);
|
||||
a3 = evt_get_variable(script, *args++);
|
||||
a4 = evt_get_variable(script, *args++);
|
||||
func_802DDFF8(a0, FOLD_TYPE_4, a2, a3, a4, 0, D_802DB5B0);
|
||||
break;
|
||||
case 6:
|
||||
case FOLD_TYPE_6:
|
||||
playerStatus->renderMode = RENDER_MODE_ALPHATEST;
|
||||
a2 = evt_get_variable(script, *args++);
|
||||
a3 = evt_get_variable(script, *args++);
|
||||
a4 = evt_get_variable(script, *args++);
|
||||
func_802DDFF8(a0, FOLD_TYPE_6, a2, a3, a4, 255, D_802DB5B0);
|
||||
break;
|
||||
case 7:
|
||||
case FOLD_TYPE_7:
|
||||
playerStatus->renderMode = RENDER_MODE_SURFACE_XLU_LAYER2;
|
||||
a5 = evt_get_variable(script, *args++);
|
||||
func_802DDFF8(a0, FOLD_TYPE_7, 255, 255, 255, a5, D_802DB5B0);
|
||||
break;
|
||||
case 8:
|
||||
case FOLD_TYPE_8:
|
||||
playerStatus->renderMode = RENDER_MODE_SURFACE_XLU_LAYER2;
|
||||
a2 = evt_get_variable(script, *args++);
|
||||
a3 = evt_get_variable(script, *args++);
|
||||
@ -677,14 +677,14 @@ ApiStatus func_802D2520(Evt* script, s32 isInitialCall) {
|
||||
a5 = evt_get_variable(script, *args++);
|
||||
func_802DDFF8(a0, FOLD_TYPE_8, a2, a3, a4, a5, D_802DB5B0);
|
||||
break;
|
||||
case 5:
|
||||
case FOLD_TYPE_5:
|
||||
playerStatus->renderMode = RENDER_MODE_ALPHATEST;
|
||||
a2 = evt_get_variable(script, *args++);
|
||||
a3 = evt_get_variable(script, *args++);
|
||||
a4 = evt_get_variable(script, *args++);
|
||||
func_802DDFF8(a0, FOLD_TYPE_5, a2, a3, a4, 0, D_802DB5B0);
|
||||
break;
|
||||
case 13:
|
||||
case FOLD_TYPE_D:
|
||||
playerStatus->renderMode = RENDER_MODE_SURFACE_XLU_LAYER2;
|
||||
a2 = evt_get_variable(script, *args++);
|
||||
a3 = evt_get_variable(script, *args++);
|
||||
|
@ -57,7 +57,7 @@ void action_update_step_up(void) {
|
||||
|
||||
integrate_gravity();
|
||||
sin_cos_rad(DEG_TO_RAD(playerStatus->targetYaw), &sinTheta, &cosTheta);
|
||||
colliderID = -1;
|
||||
colliderID = NO_COLLIDER;
|
||||
playerStatus->position.x += sinTheta * 3.0f;
|
||||
playerStatus->position.z -= cosTheta * 3.0f;
|
||||
|
||||
|
@ -217,7 +217,7 @@ EvtScript N(EVS_Scene_TubbaReunion) = {
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(PlaySoundAtNpc, NPC_TubbasHeart, SOUND_20C8, 0)
|
||||
EVT_CALL(NpcJump0, NPC_TubbasHeart, 298, 56, 31, 18)
|
||||
EVT_CALL(SetNpcPos, NPC_TubbasHeart, 0, -1000, 0)
|
||||
EVT_CALL(SetNpcPos, NPC_TubbasHeart, NPC_DISPOSE_LOCATION)
|
||||
EVT_CALL(EnableNpcShadow, NPC_TubbasHeart, FALSE)
|
||||
EVT_THREAD
|
||||
EVT_CALL(SetNpcAnimation, NPC_Tubba, ANIM_WorldTubba_Anim23)
|
||||
|
@ -29,7 +29,7 @@ EvtScript N(EVS_NpcIdle_TubbasHeart) = {
|
||||
EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(2.5))
|
||||
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_20C8, 0)
|
||||
EVT_CALL(NpcJump0, NPC_SELF, 0, 200, 0, 15)
|
||||
EVT_CALL(SetNpcPos, NPC_SELF, 0, -1000, 0)
|
||||
EVT_CALL(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
||||
EVT_SET(GB_StoryProgress, STORY_CH3_HEART_ESCAPED_WELL)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
|
@ -20,23 +20,7 @@ NpcSettings N(NpcSettings_HuffNPuff) = {
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
NpcSettings N(NpcSettings_Unused1) = {
|
||||
.height = 26,
|
||||
.radius = 24,
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
NpcSettings N(NpcSettings_Unused2) = {
|
||||
.height = 20,
|
||||
.radius = 20,
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
NpcSettings N(NpcSettings_Unused3) = {
|
||||
.height = 22,
|
||||
.radius = 24,
|
||||
.level = 99,
|
||||
};
|
||||
#include "world/common/npc/StarSpirit.inc.c"
|
||||
|
||||
Vec3f N(Path_JumpOut)[] = {
|
||||
{ 600.0, 104.0, 0.0 },
|
||||
|
@ -65,7 +65,7 @@ EvtScript N(EVS_MakeEntities) = {
|
||||
EVT_CALL(AssignBlockFlag, GF_IWA03_ItemBlock_Mushroom)
|
||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_YellowBlock), -1090, 408, -130, 0, ITEM_HONEY_SYRUP, MAKE_ENTITY_END)
|
||||
EVT_CALL(AssignBlockFlag, GF_IWA03_ItemBlock_HoneySyrup)
|
||||
EVT_CALL(MakeItemEntity, ITEM_LETTER25, -20, 95, -85, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_IWA03_Item_Letter25)
|
||||
EVT_CALL(MakeItemEntity, ITEM_LETTER_TO_KOLORADO, -20, 95, -85, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_IWA03_Item_LettertoKolorado)
|
||||
EVT_CALL(MakeItemEntity, ITEM_STAR_PIECE, -1865, 23, 20, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_IWA03_Item_StarPiece)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, -1815, 23, 20, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_IWA03_Item_CoinC)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, -1915, 23, 20, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_IWA03_Item_CoinD)
|
||||
|
@ -158,7 +158,7 @@ EvtScript N(EVS_Scene_MeetParakarry) = {
|
||||
|
||||
s32 N(LetterList)[] = {
|
||||
ITEM_LETTER01,
|
||||
ITEM_LETTER25,
|
||||
ITEM_LETTER_TO_KOLORADO,
|
||||
ITEM_LETTER10,
|
||||
ITEM_NONE
|
||||
};
|
||||
@ -170,7 +170,7 @@ EvtScript N(EVS_NpcInteract_Parakarry) = {
|
||||
EVT_IF_EQ(GF_IWA01_Item_Letter01, TRUE)
|
||||
EVT_ADD(LVar0, 1)
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(GF_IWA03_Item_Letter25, TRUE)
|
||||
EVT_IF_EQ(GF_IWA03_Item_LettertoKolorado, TRUE)
|
||||
EVT_ADD(LVar0, 1)
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(GF_IWA04_Item_Letter10, TRUE)
|
||||
@ -255,7 +255,7 @@ EvtScript N(EVS_NpcInteract_Parakarry) = {
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(SpeakToPlayer, NPC_PARTNER, ANIM_WorldParakarry_Talk, ANIM_WorldParakarry_Idle, 0, MSG_CH2_001E)
|
||||
EVT_CALL(AddKeyItem, ITEM_LETTER01)
|
||||
EVT_CALL(AddKeyItem, ITEM_LETTER25)
|
||||
EVT_CALL(AddKeyItem, ITEM_LETTER_TO_KOLORADO)
|
||||
EVT_CALL(AddKeyItem, ITEM_LETTER10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(ResetCam, CAM_DEFAULT, EVT_FLOAT(4.0))
|
||||
|
@ -2,27 +2,44 @@
|
||||
#define _WORLD_AREA_JAN_JAN_H_
|
||||
|
||||
enum {
|
||||
AB_JAN_0 = AreaByte(0),
|
||||
AB_JAN_1 = AreaByte(1),
|
||||
AB_JAN_2 = AreaByte(2),
|
||||
AB_JAN_3 = AreaByte(3),
|
||||
AB_JAN_4 = AreaByte(4),
|
||||
AB_JAN_5 = AreaByte(5),
|
||||
AB_JAN_6 = AreaByte(6),
|
||||
AB_JAN_7 = AreaByte(7),
|
||||
AB_JAN_8 = AreaByte(8),
|
||||
AB_JAN_9 = AreaByte(9),
|
||||
AB_JAN_A = AreaByte(10),
|
||||
AB_JAN_B = AreaByte(11),
|
||||
AB_JAN_C = AreaByte(12),
|
||||
AB_JAN_D = AreaByte(13),
|
||||
AB_JAN_E = AreaByte(14),
|
||||
AB_JAN_F = AreaByte(15),
|
||||
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),
|
||||
};
|
||||
|
||||
enum {
|
||||
AF_JAN_03 = AreaFlag(3),
|
||||
AF_JAN_0D = AreaFlag(13),
|
||||
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_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),
|
||||
};
|
||||
|
||||
extern MapSettings jan_00_settings;
|
||||
|
@ -72,14 +72,14 @@ NpcSettings N(NpcSettings_HeartPlant_01) = {
|
||||
#include "world/common/complete/LetterDelivery.inc.c"
|
||||
|
||||
s32 N(LetterList)[] = {
|
||||
ITEM_LETTER25,
|
||||
ITEM_LETTER_TO_KOLORADO,
|
||||
ITEM_NONE
|
||||
};
|
||||
|
||||
EvtScript N(EVS_LetterPrompt_Kolorado) = {
|
||||
EVT_CALL(N(LetterDelivery_Init),
|
||||
NPC_Kolorado_02, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle,
|
||||
ITEM_LETTER25, ITEM_NONE,
|
||||
ITEM_LETTER_TO_KOLORADO, ITEM_NONE,
|
||||
MSG_CH5_001D, MSG_CH5_001E, MSG_CH5_001F, MSG_CH5_0020,
|
||||
EVT_PTR(N(LetterList)))
|
||||
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
|
||||
|
@ -13,7 +13,7 @@ FoliageDropList N(Tree1_Drops) = {
|
||||
.itemID = ITEM_COCONUT,
|
||||
.pos = { 485, 95, -145 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||
.spawnFlag = AF_JAN_0D,
|
||||
.spawnFlag = AF_JAN00_TreeDrop1,
|
||||
},
|
||||
}
|
||||
};
|
||||
@ -30,7 +30,7 @@ BombTrigger N(D_80247A1C_B27F5C) = {
|
||||
};
|
||||
|
||||
EvtScript N(EVS_80247A2C) = {
|
||||
EVT_SET(AF_JAN_0D, FALSE)
|
||||
EVT_SET(AF_JAN00_TreeDrop1, FALSE)
|
||||
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree1)))
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_WALL_HAMMER, COLLIDER_o282, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_POINT_BOMB, EVT_PTR(N(D_80247A1C_B27F5C)), 1, 0)
|
||||
|
@ -1,18 +0,0 @@
|
||||
#include "jan_01.h"
|
||||
#include "effects.h"
|
||||
|
||||
static char* N(exit_str_0) = "jan_00";
|
||||
static char* N(exit_str_1) = "jan_02";
|
||||
|
||||
#include "world/common/atomic/TexturePan.inc.c"
|
||||
|
||||
ApiStatus func_8024030C_B2833C(Evt* script, s32 isInitialCall) {
|
||||
fx_sun_undeclared(FX_SUN_FROM_LEFT, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
#include "world/common/enemy/ai/HoppingAI.inc.c"
|
||||
|
||||
#include "world/common/todo/SetCamera0Flag1000.inc.c"
|
||||
|
||||
#include "world/common/todo/UnsetCamera0Flag1000.inc.c"
|
@ -1,4 +0,0 @@
|
||||
#include "jan_01.h"
|
||||
|
||||
#include "common/foliage.inc.c"
|
||||
|
@ -2,8 +2,32 @@
|
||||
/// @brief Jade Jungle - Beach
|
||||
|
||||
#include "common.h"
|
||||
#include "../jan.h"
|
||||
#include "message_ids.h"
|
||||
#include "map.h"
|
||||
|
||||
#include "../jan.h"
|
||||
#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,
|
||||
};
|
||||
|
||||
enum {
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
};
|
||||
|
||||
#define NAMESPACE jan_01
|
||||
|
||||
extern EvtScript N(EVS_Main);
|
||||
extern EvtScript N(EVS_SetupMusic);
|
||||
extern EvtScript N(EVS_MakeEntities);
|
||||
extern EvtScript N(EVS_SetupFoliage);
|
||||
extern NpcGroupList N(DefaultNPCs);
|
||||
|
14
src/world/area_jan/jan_01/jan_01_0_header.c
Normal file
14
src/world/area_jan/jan_01/jan_01_0_header.c
Normal file
@ -0,0 +1,14 @@
|
||||
#include "jan_01.h"
|
||||
|
||||
EntryList N(Entrances) = {
|
||||
[jan_01_ENTRY_0] { -663.0, -14.0, 53.0, 90.0 },
|
||||
[jan_01_ENTRY_1] { 663.0, -16.0, 40.0, 270.0 },
|
||||
};
|
||||
|
||||
MapSettings N(settings) = {
|
||||
.main = &N(EVS_Main),
|
||||
.entryList = &N(Entrances),
|
||||
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||
.background = &gBackgroundImage,
|
||||
.tattle = { MSG_MapTattle_jan_01 },
|
||||
};
|
8
src/world/area_jan/jan_01/jan_01_1_music.c
Normal file
8
src/world/area_jan/jan_01/jan_01_1_music.c
Normal file
@ -0,0 +1,8 @@
|
||||
#include "jan_01.h"
|
||||
|
||||
EvtScript N(EVS_SetupMusic) = {
|
||||
EVT_CALL(SetMusicTrack, 0, SONG_YOSHIS_VILLAGE, 0, 8)
|
||||
EVT_CALL(ClearAmbientSounds, 250)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
58
src/world/area_jan/jan_01/jan_01_2_main.c
Normal file
58
src/world/area_jan/jan_01/jan_01_2_main.c
Normal file
@ -0,0 +1,58 @@
|
||||
#include "jan_01.h"
|
||||
#include "effects.h"
|
||||
|
||||
#include "world/common/atomic/TexturePan.inc.c"
|
||||
#include "world/common/atomic/TexturePan.data.inc.c"
|
||||
|
||||
API_CALLABLE(N(SpawnSunEffect)) {
|
||||
fx_sun_undeclared(FX_SUN_FROM_LEFT, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
EvtScript N(EVS_ExitWalk_jan_00_1) = EVT_EXIT_WALK(60, jan_01_ENTRY_0, "jan_00", jan_00_ENTRY_1);
|
||||
EvtScript N(EVS_ExitWalk_jan_02_0) = EVT_EXIT_WALK(60, jan_01_ENTRY_1, "jan_02", jan_02_ENTRY_0);
|
||||
|
||||
EvtScript N(EVS_BindExitTriggers) = {
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_00_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_02_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 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_DEFAULT()
|
||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||
EVT_EXEC(N(EVS_SetupFoliage))
|
||||
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitw, COLLIDER_FLAGS_UPPER_MASK)
|
||||
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilite, COLLIDER_FLAGS_UPPER_MASK)
|
||||
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||
EVT_EXEC(EnterWalk)
|
||||
EVT_WAIT(1)
|
||||
EVT_EXEC(N(EVS_SetupMusic))
|
||||
EVT_CALL(PlaySound, SOUND_80000017)
|
||||
EVT_CALL(EnableTexPanning, MODEL_o75, TRUE)
|
||||
EVT_CALL(EnableTexPanning, MODEL_o7, TRUE)
|
||||
EVT_CALL(EnableTexPanning, MODEL_o6, TRUE)
|
||||
EVT_THREAD
|
||||
TEX_PAN_PARAMS_ID(TEX_PANNER_1)
|
||||
TEX_PAN_PARAMS_STEP( -100, 350, 0, 0)
|
||||
TEX_PAN_PARAMS_FREQ( 1, 1, 0, 0)
|
||||
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
|
||||
EVT_EXEC(N(EVS_UpdateTexturePan))
|
||||
EVT_END_THREAD
|
||||
EVT_THREAD
|
||||
TEX_PAN_PARAMS_ID(TEX_PANNER_2)
|
||||
TEX_PAN_PARAMS_STEP( 100, 200, 0, 0)
|
||||
TEX_PAN_PARAMS_FREQ( 1, 1, 0, 0)
|
||||
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
|
||||
EVT_EXEC(N(EVS_UpdateTexturePan))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o144, SURFACE_TYPE_WATER)
|
||||
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o145, SURFACE_TYPE_WATER)
|
||||
EVT_CALL(N(SpawnSunEffect))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
382
src/world/area_jan/jan_01/jan_01_3_npc.c
Normal file
382
src/world/area_jan/jan_01/jan_01_3_npc.c
Normal file
@ -0,0 +1,382 @@
|
||||
#include "jan_01.h"
|
||||
#include "effects.h"
|
||||
|
||||
#include "world/common/enemy/complete/JungleFuzzy_Wander.inc.c"
|
||||
#include "world/common/enemy/complete/Fuzzy.inc.c"
|
||||
#include "world/common/npc/Kolorado.inc.c"
|
||||
#include "world/common/todo/SetCamera0Flag1000.inc.c"
|
||||
#include "world/common/todo/UnsetCamera0Flag1000.inc.c"
|
||||
|
||||
EvtScript N(EVS_PlayerWatchKolorado) = {
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(PlayerFaceNpc, NPC_SELF, FALSE)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_Kolorado_RunToVillage) = {
|
||||
EVT_EXEC_GET_TID(N(EVS_PlayerWatchKolorado), LVar9)
|
||||
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40 | NPC_FLAG_100, TRUE)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Kolorado_Run)
|
||||
EVT_CALL(SetNpcSpeed, NPC_SELF, EVT_FLOAT(4.5))
|
||||
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 150)
|
||||
EVT_CALL(NpcMoveTo, NPC_SELF, LVar0, 60, 0)
|
||||
EVT_CALL(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
||||
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_GRAVITY, FALSE)
|
||||
EVT_KILL_THREAD(LVar9)
|
||||
EVT_CALL(N(UnsetCamera0Flag1000))
|
||||
EVT_CALL(ResetCam, CAM_DEFAULT, EVT_FLOAT(5.0))
|
||||
EVT_CALL(SetSelfVar, 0, 3)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcIdle_Kolorado) = {
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Kolorado_Fallen)
|
||||
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_GRAVITY, TRUE)
|
||||
EVT_LOOP(0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||
EVT_IF_GT(LVar0, -600)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(DisablePlayerInput, TRUE)
|
||||
EVT_CALL(ShowMessageAtScreenPos, MSG_CH5_000D, 320, 60)
|
||||
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_WAIT(25)
|
||||
EVT_CALL(DisablePlayerInput, FALSE)
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(GetSelfVar, 0, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||
EVT_IF_GT(LVar0, 430)
|
||||
EVT_CALL(GetPartnerInUse, LVar0)
|
||||
EVT_IF_NE(LVar0, PARTNER_NONE)
|
||||
EVT_CALL(InterruptUsePartner)
|
||||
EVT_END_IF
|
||||
EVT_CALL(DisablePlayerInput, TRUE)
|
||||
EVT_CALL(RemoveNpc, NPC_Fuzzy_01)
|
||||
EVT_CALL(ShowMessageAtScreenPos, MSG_CH5_0010, 0, 60)
|
||||
EVT_CALL(InterpPlayerYaw, 270, 4)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Kolorado_Panic)
|
||||
EVT_CALL(NpcMoveTo, NPC_SELF, 250, 90, 5)
|
||||
EVT_CALL(func_802CF56C, 2)
|
||||
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||
EVT_SET(LVar3, LVar0)
|
||||
EVT_ADD(LVar3, -50)
|
||||
EVT_CALL(SetNpcSpeed, NPC_SELF, EVT_FLOAT(5.0))
|
||||
EVT_CALL(NpcMoveTo, NPC_SELF, LVar3, LVar2, 0)
|
||||
EVT_ADD(LVar0, LVar3)
|
||||
EVT_DIV(LVar0, 2)
|
||||
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetCamDistance, CAM_DEFAULT, 300)
|
||||
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(17.0), EVT_FLOAT(-7.0))
|
||||
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(5.0))
|
||||
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||
EVT_CALL(N(SetCamera0Flag1000))
|
||||
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_CH5_0011)
|
||||
EVT_SET(GB_StoryProgress, STORY_CH5_KOLORADO_ESCAPED_FUZZIES)
|
||||
EVT_EXEC_WAIT(N(EVS_Kolorado_RunToVillage))
|
||||
EVT_CALL(DisablePlayerInput, FALSE)
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_SET_GROUP(EVT_GROUP_00)
|
||||
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_PARTIAL)
|
||||
EVT_CALL(func_802D2C14, 1)
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Shout, ANIM_Kolorado_Idle, 0, MSG_CH5_000F)
|
||||
EVT_SET(GF_JAN01_SavedKolorado, TRUE)
|
||||
EVT_CALL(SetSelfVar, 0, 2)
|
||||
EVT_SET(GB_StoryProgress, STORY_CH5_KOLORADO_ESCAPED_FUZZIES)
|
||||
EVT_EXEC_WAIT(N(EVS_Kolorado_RunToVillage))
|
||||
EVT_CALL(func_802D2C14, 0)
|
||||
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_NORMAL)
|
||||
EVT_SET_GROUP(EVT_GROUP_0B)
|
||||
EVT_CALL(DisablePlayerInput, FALSE)
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(GetSelfVar, 0, LVar0)
|
||||
EVT_IF_NE(LVar0, 3)
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcHit_Kolorado) = {
|
||||
EVT_CALL(GetOwnerEncounterTrigger, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(ENCOUNTER_TRIGGER_HAMMER)
|
||||
EVT_SET(LVar1, 1)
|
||||
EVT_CASE_EQ(ENCOUNTER_TRIGGER_JUMP)
|
||||
EVT_SET(LVar1, 1)
|
||||
EVT_CASE_EQ(ENCOUNTER_TRIGGER_PARTNER)
|
||||
EVT_SET(LVar1, 1)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_END_SWITCH
|
||||
EVT_IF_NE(LVar1, 0)
|
||||
EVT_CALL(DisablePlayerInput, TRUE)
|
||||
EVT_WAIT(5)
|
||||
EVT_SET(AF_JAN01_KoloradoShouting, TRUE)
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(NpcFacePlayer, NPC_SELF, 0)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Shout, ANIM_Kolorado_Yell, 0, MSG_CH5_000E)
|
||||
EVT_SET(AF_JAN01_KoloradoShouting, FALSE)
|
||||
EVT_CALL(DisablePlayerInput, FALSE)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInit_Kolorado) = {
|
||||
EVT_IF_LT(GB_StoryProgress, STORY_CH5_KOLORADO_ESCAPED_FUZZIES)
|
||||
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100, FALSE)
|
||||
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Kolorado)))
|
||||
EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_Kolorado)))
|
||||
EVT_ELSE
|
||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcIdle_Fuzzy_01) = {
|
||||
EVT_CHILD_THREAD
|
||||
EVT_CALL(GetNpcPos, NPC_Kolorado, LVar3, LVar1, LVar2)
|
||||
EVT_SET(LVar4, LVar3)
|
||||
EVT_ADD(LVar3, -200)
|
||||
EVT_ADD(LVar4, 200)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_RANGE(LVar3, LVar4)
|
||||
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_IGNORE_TOUCH, 0)
|
||||
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_10000000, 0)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_IGNORE_TOUCH, 1)
|
||||
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_10000000, 1)
|
||||
EVT_END_SWITCH
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_END_CHILD_THREAD
|
||||
EVT_SET(AF_JAN01_KoloradoShouting, FALSE)
|
||||
EVT_CALL(GetNpcPos, NPC_Kolorado, LVar7, LVar8, LVar9)
|
||||
EVT_ADD(LVar8, 20)
|
||||
EVT_CALL(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar2, 5)
|
||||
EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(4.0))
|
||||
EVT_SET(LVar4, 40)
|
||||
EVT_SET(LVar5, 90)
|
||||
EVT_SET(LVar6, 45)
|
||||
EVT_LOOP(0)
|
||||
EVT_MUL(LVar4, -1)
|
||||
EVT_MUL(LVar5, -1)
|
||||
EVT_MUL(LVar6, -1)
|
||||
EVT_ADD(LVar0, LVar4)
|
||||
EVT_CALL(NpcJump0, NPC_SELF, LVar0, 18, LVar2, 15)
|
||||
EVT_CALL(PlaySoundAtNpc, NPC_Kolorado, SOUND_HIT_PLAYER_NORMAL, 0)
|
||||
EVT_IF_NE(AF_JAN01_KoloradoShouting, TRUE)
|
||||
EVT_CHILD_THREAD
|
||||
EVT_CALL(InterpNpcYaw, NPC_Kolorado, LVar5, 2)
|
||||
EVT_PLAY_EFFECT(EFFECT_DAMAGE_STARS, 3, LVar7, LVar8, LVar9, 0, -1, 0, 3)
|
||||
EVT_END_CHILD_THREAD
|
||||
EVT_END_IF
|
||||
EVT_ADD(LVar0, LVar4)
|
||||
EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(NpcJump0, NPC_SELF, LVar0, -12, LVar2, 15)
|
||||
EVT_LABEL(1)
|
||||
EVT_WAIT(1)
|
||||
EVT_IF_EQ(AF_JAN01_KoloradoShouting, TRUE)
|
||||
EVT_GOTO(1)
|
||||
EVT_END_IF
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcDefeat_Fuzzy_01) = {
|
||||
EVT_CALL(GetBattleOutcome, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(OUTCOME_PLAYER_WON)
|
||||
EVT_CALL(DisablePlayerInput, TRUE)
|
||||
EVT_CALL(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_Idle)
|
||||
EVT_CALL(GetPartnerInUse, LVar0)
|
||||
EVT_IF_NE(LVar0, PARTNER_NONE)
|
||||
EVT_CALL(InterruptUsePartner)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_100, TRUE)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(GetNpcPos, NPC_Kolorado, LVar3, LVar1, LVar2)
|
||||
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||
EVT_SET(LVar4, LVar0)
|
||||
EVT_IF_LT(LVar3, LVar0)
|
||||
EVT_CALL(InterpPlayerYaw, 270, 0)
|
||||
EVT_ADD(LVar4, -30)
|
||||
EVT_ELSE
|
||||
EVT_CALL(InterpPlayerYaw, 90, 0)
|
||||
EVT_ADD(LVar4, 30)
|
||||
EVT_END_IF
|
||||
EVT_ADD(LVar0, LVar4)
|
||||
EVT_DIV(LVar0, 2)
|
||||
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetCamDistance, CAM_DEFAULT, 300)
|
||||
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(3.0))
|
||||
EVT_CALL(N(SetCamera0Flag1000))
|
||||
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||
EVT_CALL(SetNpcFlagBits, NPC_Kolorado, NPC_FLAG_40 | NPC_FLAG_100, TRUE)
|
||||
EVT_CALL(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_Run)
|
||||
EVT_CALL(SetNpcSpeed, NPC_Kolorado, EVT_FLOAT(3.0))
|
||||
EVT_IF_LT(LVar2, -45)
|
||||
EVT_SET(LVar2, -45)
|
||||
EVT_END_IF
|
||||
EVT_CALL(NpcMoveTo, NPC_Kolorado, LVar4, LVar2, 0)
|
||||
EVT_CALL(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_Idle)
|
||||
EVT_CALL(NpcFacePlayer, NPC_Kolorado, 0)
|
||||
EVT_CALL(SetNpcVar, NPC_Kolorado, 0, 1)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(DoNpcDefeat)
|
||||
EVT_CASE_EQ(OUTCOME_PLAYER_LOST)
|
||||
EVT_CASE_EQ(OUTCOME_PLAYER_FLED)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInit_Fuzzy_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_Fuzzy_01)))
|
||||
EVT_ELSE
|
||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
StaticNpc N(NpcData_Kolorado) = {
|
||||
.id = NPC_Kolorado,
|
||||
.settings = &N(NpcSettings_Kolorado),
|
||||
.pos = { -70.0f, -9.0f, 90.0f },
|
||||
.yaw = 90,
|
||||
.flags = ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_100000 | ENEMY_FLAG_200000 | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_20000000,
|
||||
.init = &N(EVS_NpcInit_Kolorado),
|
||||
.drops = NPC_NO_DROPS,
|
||||
.animations = KOLORADO_ANIMS,
|
||||
.tattle = MSG_NpcTattle_Kolorado,
|
||||
};
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy_01) = {
|
||||
.id = NPC_Fuzzy_01,
|
||||
.settings = &N(NpcSettings_Fuzzy),
|
||||
.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_800000,
|
||||
.init = &N(EVS_NpcInit_Fuzzy_01),
|
||||
.drops = NPC_NO_DROPS,
|
||||
.animations = JUNGLE_FUZZY_ANIMS,
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInit_Fuzzy_02) = {
|
||||
EVT_IF_LT(GB_StoryProgress, STORY_CH5_KOLORADO_ESCAPED_FUZZIES)
|
||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy_02) = {
|
||||
.id = NPC_Fuzzy_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),
|
||||
.drops = JUNGLE_FUZZY_DROPS,
|
||||
.territory = {
|
||||
.wander = {
|
||||
.isFlying = FALSE,
|
||||
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||
.wanderShape = SHAPE_CYLINDER,
|
||||
.centerPos = { -350, 3, 40 },
|
||||
.wanderSize = { 50 },
|
||||
.detectShape = SHAPE_CYLINDER,
|
||||
.detectPos = { -350, 3, 40 },
|
||||
.detectSize = { 200 },
|
||||
}
|
||||
},
|
||||
.animations = JUNGLE_FUZZY_ANIMS,
|
||||
.aiDetectFlags = AI_DETECT_SENSITIVE_MOTION,
|
||||
};
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy_03) = {
|
||||
.id = NPC_Fuzzy_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),
|
||||
.drops = JUNGLE_FUZZY_DROPS,
|
||||
.territory = {
|
||||
.wander = {
|
||||
.isFlying = FALSE,
|
||||
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||
.wanderShape = SHAPE_CYLINDER,
|
||||
.centerPos = { 0, -10, 110 },
|
||||
.wanderSize = { 50 },
|
||||
.detectShape = SHAPE_CYLINDER,
|
||||
.detectPos = { 0, -10, 110 },
|
||||
.detectSize = { 200 },
|
||||
}
|
||||
},
|
||||
.animations = JUNGLE_FUZZY_ANIMS,
|
||||
.aiDetectFlags = AI_DETECT_SENSITIVE_MOTION,
|
||||
};
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy_04) = {
|
||||
.id = NPC_Fuzzy_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),
|
||||
.drops = JUNGLE_FUZZY_DROPS,
|
||||
.territory = {
|
||||
.wander = {
|
||||
.isFlying = FALSE,
|
||||
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||
.wanderShape = SHAPE_CYLINDER,
|
||||
.centerPos = { 350, 3, 40 },
|
||||
.wanderSize = { 50 },
|
||||
.detectShape = SHAPE_RECT,
|
||||
.detectPos = { 350, 3, 75 },
|
||||
.detectSize = { 200, 125 },
|
||||
}
|
||||
},
|
||||
.animations = JUNGLE_FUZZY_ANIMS,
|
||||
.aiDetectFlags = AI_DETECT_SENSITIVE_MOTION,
|
||||
};
|
||||
|
||||
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),
|
||||
{}
|
||||
};
|
17
src/world/area_jan/jan_01/jan_01_4_entity.c
Normal file
17
src/world/area_jan/jan_01/jan_01_4_entity.c
Normal file
@ -0,0 +1,17 @@
|
||||
#include "jan_01.h"
|
||||
#include "entity.h"
|
||||
|
||||
EvtScript N(EVS_MakeEntities) = {
|
||||
EVT_CALL(MakeItemEntity, ITEM_LETTER_TO_IGOR, -110, 90, -230, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_JAN01_Item_Letter11)
|
||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_BellbellPlant), -375, -3, -75, 0, MAKE_ENTITY_END)
|
||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_HiddenYellowBlock), -335, 57, -55, 0, ITEM_REPEL_GEL, MAKE_ENTITY_END)
|
||||
EVT_CALL(AssignBlockFlag, GF_JAN01_HiddenItem_RepelGel)
|
||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_BellbellPlant), 180, -3, -115, 0, MAKE_ENTITY_END)
|
||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_HiddenYellowBlock), 140, 57, -85, 0, ITEM_MYSTERY, MAKE_ENTITY_END)
|
||||
EVT_CALL(AssignBlockFlag, GF_JAN01_HiddenItem_Mystery)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, 340, 100, -90, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_JAN01_Item_CoinA)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, 340, 125, -90, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_JAN01_Item_CoinB)
|
||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_SpinningFlower), 340, 0, -90, 0, MAKE_ENTITY_END)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
227
src/world/area_jan/jan_01/jan_01_5_foliage.c
Normal file
227
src/world/area_jan/jan_01/jan_01_5_foliage.c
Normal file
@ -0,0 +1,227 @@
|
||||
#include "jan_01.h"
|
||||
|
||||
#include "common/foliage.inc.c"
|
||||
|
||||
FoliageModelList N(Tree1_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o99);
|
||||
FoliageModelList N(Tree1_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o98);
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree1) = {
|
||||
.leaves = &N(Tree1_LeafModels),
|
||||
.trunk = &N(Tree1_TrunkModels),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree1) = {
|
||||
.pos = { 160.0f, 0.0f, -287.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
FoliageModelList N(Tree2_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o85, MODEL_o86);
|
||||
FoliageModelList N(Tree2_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o84);
|
||||
|
||||
FoliageDropList N(Tree2_Drops) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_COCONUT,
|
||||
.pos = { -618, 95, -75 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||
.spawnFlag = AF_JAN01_TreeDrop2,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree2) = {
|
||||
.leaves = &N(Tree2_LeafModels),
|
||||
.trunk = &N(Tree2_TrunkModels),
|
||||
.drops = &N(Tree2_Drops),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree2) = {
|
||||
.pos = { -628.0f, 0.0f, -95.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
FoliageModelList N(Tree3_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o79, MODEL_o80);
|
||||
FoliageModelList N(Tree3_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o78);
|
||||
|
||||
FoliageDropList N(Tree3_Drops) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_COCONUT,
|
||||
.pos = { -401, 105, -115 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||
.spawnFlag = AF_JAN01_TreeDrop3,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree3) = {
|
||||
.leaves = &N(Tree3_LeafModels),
|
||||
.trunk = &N(Tree3_TrunkModels),
|
||||
.drops = &N(Tree3_Drops),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree3) = {
|
||||
.pos = { -391.0f, 0.0f, -135.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
FoliageModelList N(Tree4_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o82, MODEL_o83);
|
||||
FoliageModelList N(Tree4_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o81);
|
||||
|
||||
FoliageDropList N(Tree4_Drops) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_COCONUT,
|
||||
.pos = { -351, 75, -95 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||
.spawnFlag = AF_JAN01_TreeDrop4,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree4) = {
|
||||
.leaves = &N(Tree4_LeafModels),
|
||||
.trunk = &N(Tree4_TrunkModels),
|
||||
.drops = &N(Tree4_Drops),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree4) = {
|
||||
.pos = { -341.0f, 0.0f, -115.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
FoliageModelList N(Tree5_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o88, MODEL_o89);
|
||||
FoliageModelList N(Tree5_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o87);
|
||||
|
||||
FoliageDropList N(Tree5_Drops) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_COCONUT,
|
||||
.pos = { 58, 95, -135 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||
.spawnFlag = AF_JAN01_TreeDrop5,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree5) = {
|
||||
.leaves = &N(Tree5_LeafModels),
|
||||
.trunk = &N(Tree5_TrunkModels),
|
||||
.drops = &N(Tree5_Drops),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree5) = {
|
||||
.pos = { 68.0f, 0.0f, -155.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
FoliageModelList N(Tree6_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o104, MODEL_o105);
|
||||
FoliageModelList N(Tree6_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o103);
|
||||
|
||||
FoliageDropList N(Tree6_Drops) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_COCONUT,
|
||||
.pos = { 261, 75, -115 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||
.spawnFlag = AF_JAN01_TreeDrop6,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree6) = {
|
||||
.leaves = &N(Tree6_LeafModels),
|
||||
.trunk = &N(Tree6_TrunkModels),
|
||||
.drops = &N(Tree6_Drops),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree6) = {
|
||||
.pos = { 251.0f, 0.0f, -135.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
FoliageModelList N(Tree7_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o113, MODEL_o114);
|
||||
FoliageModelList N(Tree7_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o112);
|
||||
|
||||
FoliageDropList N(Tree7_DropsA) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_STAR_PIECE,
|
||||
.pos = { 441, 75, -135 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_FALL_NEVER_VANISH,
|
||||
.pickupFlag = GF_JAN01_Tree7_StarPiece,
|
||||
.spawnFlag = AF_JAN01_TreeDrop_StarPiece,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
FoliageDropList N(Tree7_DropsB) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_COCONUT,
|
||||
.pos = { 441, 75, -135 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||
.spawnFlag = AF_JAN01_TreeDrop7,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree7A) = {
|
||||
.leaves = &N(Tree7_LeafModels),
|
||||
.trunk = &N(Tree7_TrunkModels),
|
||||
.drops = &N(Tree7_DropsA),
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree7B) = {
|
||||
.leaves = &N(Tree7_LeafModels),
|
||||
.trunk = &N(Tree7_TrunkModels),
|
||||
.drops = &N(Tree7_DropsB),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree7) = {
|
||||
.pos = { 431.0f, 0.0f, -155.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
EvtScript N(EVS_SetupFoliage) = {
|
||||
EVT_SET(AF_JAN01_TreeDrop2, FALSE)
|
||||
EVT_SET(AF_JAN01_TreeDrop3, FALSE)
|
||||
EVT_SET(AF_JAN01_TreeDrop4, FALSE)
|
||||
EVT_SET(AF_JAN01_TreeDrop5, FALSE)
|
||||
EVT_SET(AF_JAN01_TreeDrop6, FALSE)
|
||||
EVT_SET(AF_JAN01_TreeDrop7, FALSE)
|
||||
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree1)))
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_WALL_HAMMER, COLLIDER_o204, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), 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)), TRIGGER_WALL_HAMMER, COLLIDER_o84, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), 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)), TRIGGER_WALL_HAMMER, COLLIDER_o203, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree3)), 1, 0)
|
||||
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree4)))
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_WALL_HAMMER, COLLIDER_o152, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree4)), 1, 0)
|
||||
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree5)))
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_WALL_HAMMER, COLLIDER_o155, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree5)), 1, 0)
|
||||
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree6)))
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_WALL_HAMMER, COLLIDER_o103, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree6)), 1, 0)
|
||||
EVT_IF_EQ(GF_JAN01_Tree7_StarPiece, FALSE)
|
||||
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree7A)))
|
||||
EVT_ELSE
|
||||
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree7B)))
|
||||
EVT_END_IF
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_WALL_HAMMER, COLLIDER_o205, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree7)), 1, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
@ -1,9 +0,0 @@
|
||||
#include "jan_02.h"
|
||||
|
||||
static char* N(exit_str_0) = "jan_01";
|
||||
static char* N(exit_str_1) = "jan_03";
|
||||
|
||||
ApiStatus func_80240000_B2C470(Evt* script, s32 isInitialCall) {
|
||||
bgm_set_track_volumes(0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
#include "jan_02.h"
|
||||
#include "effects.h"
|
||||
#include "mapfs/jan_02_hit.h"
|
||||
#include "mapfs/jan_02_shape.h"
|
||||
|
||||
#include "world/common/atomic/TexturePan.inc.c"
|
||||
|
||||
extern s32 D_80242BD8_B2F048;
|
||||
|
||||
ApiStatus func_8024033C_B2C7AC(Evt* script, s32 isInitialCall) {
|
||||
bgm_clear_track_volumes(0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus func_80240360_B2C7D0(Evt* script, s32 isInitialCall) {
|
||||
u16 currentFloor = gCollisionStatus.currentFloor;
|
||||
|
||||
if (D_80242BD8_B2F048 != 0) {
|
||||
if (currentFloor == COLLIDER_o327 || currentFloor == COLLIDER_o330) {
|
||||
set_model_flags(MODEL_g70, MODEL_FLAG_ENABLED, 0);
|
||||
D_80242BD8_B2F048 = 0;
|
||||
}
|
||||
} else {
|
||||
if (currentFloor == COLLIDER_o319 || currentFloor == COLLIDER_o316) {
|
||||
set_model_flags(MODEL_g70, MODEL_FLAG_ENABLED, 1);
|
||||
D_80242BD8_B2F048 = 1;
|
||||
}
|
||||
}
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
|
||||
ApiStatus func_802403F8_B2C868(Evt* script, s32 isInitialCall) {
|
||||
fx_sun_undeclared(FX_SUN_FROM_LEFT, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
#include "jan_02.h"
|
||||
|
||||
#define CHUCK_QUIZMO_NPC_ID 5
|
||||
|
||||
#include "world/common/enemy/ai/PatrolNoAttackAI.inc.c"
|
||||
|
||||
#include "world/common/todo/GetNpcCollisionHeight.inc.c"
|
||||
|
||||
#include "world/common/todo/AddPlayerHandsOffset.inc.c"
|
||||
|
||||
extern s32 N(ItemChoice_HasSelectedItem);
|
||||
extern s32 N(ItemChoice_SelectedItemID);
|
||||
#include "world/common/todo/ItemChoice_WaitForSelection.inc.c"
|
||||
|
||||
ApiStatus N(ItemChoice_SaveSelected)(Evt* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
|
||||
N(ItemChoice_SelectedItemID) = evt_get_variable(script, *args++);
|
||||
N(ItemChoice_HasSelectedItem) = TRUE;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
BSS s32 D_80248760_jan_02[114];
|
||||
|
||||
ApiStatus func_80241578_B2D9E8(Evt* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
s32* ptr = (s32*) evt_get_variable(script, *args++);
|
||||
s32 i;
|
||||
|
||||
if (ptr != NULL) {
|
||||
for (i = 0; ptr[i] != 0; i++) {
|
||||
D_80248760_jan_02[i] = ptr[i];
|
||||
}
|
||||
D_80248760_jan_02[i] = 0;
|
||||
} else {
|
||||
for (i = 0; i < 112; i++) {
|
||||
D_80248760_jan_02[i] = i + 16;
|
||||
D_80248760_jan_02[112] = 0;
|
||||
}
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
extern s32 N(Quizmo_Worker);
|
||||
extern s32 N(Quizmo_AnswerResult);
|
||||
extern EffectInstance* N(Quizmo_StageEffect);
|
||||
extern EffectInstance* N(Quizmo_AudienceEffect);
|
||||
extern EffectInstance* N(Quizmo_VannaTEffect);
|
||||
|
||||
#include "world/common/atomic/Quizmo.inc.c"
|
||||
|
||||
#include "world/common/todo/SwitchToPartner.inc.c"
|
@ -1,4 +0,0 @@
|
||||
#include "jan_02.h"
|
||||
|
||||
#include "common/foliage.inc.c"
|
||||
|
@ -2,8 +2,28 @@
|
||||
/// @brief Jade Jungle - Village Cove
|
||||
|
||||
#include "common.h"
|
||||
#include "../jan.h"
|
||||
#include "message_ids.h"
|
||||
#include "map.h"
|
||||
|
||||
#include "../jan.h"
|
||||
#include "mapfs/jan_02_shape.h"
|
||||
#include "mapfs/jan_02_hit.h"
|
||||
|
||||
#include "sprite/npc/WorldSushie.h"
|
||||
|
||||
enum {
|
||||
NPC_YoshiLeader = 0,
|
||||
NPC_YoshiCouncillor = 1,
|
||||
NPC_Yoshi_01 = 2,
|
||||
NPC_Yoshi_02 = 3,
|
||||
NPC_Yoshi_03 = 4,
|
||||
NPC_ChuckQuizmo = 5,
|
||||
};
|
||||
|
||||
#define NAMESPACE jan_02
|
||||
|
||||
extern EvtScript N(EVS_Main);
|
||||
extern EvtScript N(EVS_SetupMusic);
|
||||
extern EvtScript N(EVS_MakeEntities);
|
||||
extern EvtScript N(EVS_SetupFoliage);
|
||||
extern NpcGroupList N(DefaultNPCs);
|
||||
|
14
src/world/area_jan/jan_02/jan_02_0_header.c
Normal file
14
src/world/area_jan/jan_02/jan_02_0_header.c
Normal file
@ -0,0 +1,14 @@
|
||||
#include "jan_02.h"
|
||||
|
||||
EntryList N(Entrances) = {
|
||||
[jan_02_ENTRY_0] { -450.0, 0.0, -450.0, 135.0 },
|
||||
[jan_02_ENTRY_1] { 640.0, 0.0, 0.0, 270.0 },
|
||||
};
|
||||
|
||||
MapSettings N(settings) = {
|
||||
.main = &N(EVS_Main),
|
||||
.entryList = &N(Entrances),
|
||||
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||
.background = &gBackgroundImage,
|
||||
.tattle = { MSG_MapTattle_jan_02 },
|
||||
};
|
22
src/world/area_jan/jan_02/jan_02_1_music.c
Normal file
22
src/world/area_jan/jan_02/jan_02_1_music.c
Normal file
@ -0,0 +1,22 @@
|
||||
#include "jan_02.h"
|
||||
|
||||
API_CALLABLE(N(AdjustTrackVolumes)) {
|
||||
bgm_set_track_volumes(0, TRACK_VOLS_0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
EvtScript N(EVS_SetupMusic) = {
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_RANGE(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING, STORY_CH5_SUSHIE_JOINED_PARTY)
|
||||
EVT_CALL(SetMusicTrack, 0, SONG_YOSHIS_PANIC, 0, 8)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(SetMusicTrack, 0, SONG_YOSHIS_VILLAGE, 0, 8)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(3)
|
||||
EVT_CALL(N(AdjustTrackVolumes))
|
||||
EVT_END_THREAD
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(ClearAmbientSounds, 250)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
98
src/world/area_jan/jan_02/jan_02_2_main.c
Normal file
98
src/world/area_jan/jan_02/jan_02_2_main.c
Normal file
@ -0,0 +1,98 @@
|
||||
#include "jan_02.h"
|
||||
#include "effects.h"
|
||||
|
||||
#include "world/common/atomic/TexturePan.inc.c"
|
||||
#include "world/common/atomic/TexturePan.data.inc.c"
|
||||
|
||||
extern s32 N(PrevPalmTreeVisibility);
|
||||
|
||||
API_CALLABLE(N(ClearTrackVols)) {
|
||||
bgm_clear_track_volumes(0, TRACK_VOLS_0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
API_CALLABLE(N(ManageBigPalmTreeVisibility)) {
|
||||
u16 currentFloor = gCollisionStatus.currentFloor;
|
||||
|
||||
if (N(PrevPalmTreeVisibility) != 0) {
|
||||
if (currentFloor == COLLIDER_o327 || currentFloor == COLLIDER_o330) {
|
||||
set_model_flags(MODEL_g70, MODEL_FLAG_ENABLED, FALSE);
|
||||
N(PrevPalmTreeVisibility) = FALSE;
|
||||
}
|
||||
} else {
|
||||
if (currentFloor == COLLIDER_o319 || currentFloor == COLLIDER_o316) {
|
||||
set_model_flags(MODEL_g70, MODEL_FLAG_ENABLED, TRUE);
|
||||
N(PrevPalmTreeVisibility) = TRUE;
|
||||
}
|
||||
}
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
|
||||
API_CALLABLE(N(SpawnSunEffect)) {
|
||||
fx_sun_undeclared(FX_SUN_FROM_LEFT, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
EvtScript N(EVS_ExitWalk_jan_01_1) = {
|
||||
EVT_SET_GROUP(EVT_GROUP_1B)
|
||||
EVT_CALL(N(ClearTrackVols))
|
||||
EVT_CALL(UseExitHeading, 60, jan_02_ENTRY_0)
|
||||
EVT_EXEC(ExitWalk)
|
||||
EVT_CALL(GotoMap, EVT_PTR("jan_01"), jan_01_ENTRY_1)
|
||||
EVT_WAIT(100)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_ExitWalk_jan_03_0) = EVT_EXIT_WALK(60, jan_02_ENTRY_1, "jan_03", jan_03_ENTRY_0);
|
||||
|
||||
EvtScript N(EVS_BindExitTriggers) = {
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_01_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilinw, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_03_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(PrevPalmTreeVisibility) = TRUE;
|
||||
|
||||
EvtScript N(EVS_Main) = {
|
||||
EVT_SET(GB_WorldLocation, LOCATION_YOSHIS_VILLAGE)
|
||||
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||
EVT_SETUP_CAMERA_NO_LEAD()
|
||||
EVT_SET(GF_MAP_YoshisVillage, TRUE)
|
||||
EVT_SET(AF_JAN02_RaphaelComment, FALSE)
|
||||
EVT_SET(AF_JAN02_MetCouncillor, FALSE)
|
||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||
EVT_EXEC(N(EVS_SetupFoliage))
|
||||
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitnw, COLLIDER_FLAGS_UPPER_MASK)
|
||||
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilite, COLLIDER_FLAGS_UPPER_MASK)
|
||||
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||
EVT_EXEC(EnterWalk)
|
||||
EVT_EXEC(N(EVS_SetupMusic))
|
||||
EVT_CALL(PlaySound, SOUND_80000017)
|
||||
EVT_CALL(EnableTexPanning, MODEL_o202, TRUE)
|
||||
EVT_CALL(EnableTexPanning, MODEL_o203, TRUE)
|
||||
EVT_CALL(EnableTexPanning, MODEL_o103, TRUE)
|
||||
EVT_THREAD
|
||||
TEX_PAN_PARAMS_ID(TEX_PANNER_1)
|
||||
TEX_PAN_PARAMS_STEP( 0, 400, 0, 0)
|
||||
TEX_PAN_PARAMS_FREQ( 0, 1, 0, 0)
|
||||
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
|
||||
EVT_EXEC(N(EVS_UpdateTexturePan))
|
||||
EVT_END_THREAD
|
||||
EVT_THREAD
|
||||
TEX_PAN_PARAMS_ID(TEX_PANNER_2)
|
||||
TEX_PAN_PARAMS_STEP( -100, 200, 0, 0)
|
||||
TEX_PAN_PARAMS_FREQ( 1, 1, 0, 0)
|
||||
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
|
||||
EVT_EXEC(N(EVS_UpdateTexturePan))
|
||||
EVT_END_THREAD
|
||||
EVT_THREAD
|
||||
EVT_CALL(N(ManageBigPalmTreeVisibility))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o337, SURFACE_TYPE_WATER)
|
||||
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o338, SURFACE_TYPE_WATER)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
510
src/world/area_jan/jan_02/jan_02_3_npc.c
Normal file
510
src/world/area_jan/jan_02/jan_02_3_npc.c
Normal file
@ -0,0 +1,510 @@
|
||||
#include "jan_02.h"
|
||||
|
||||
#include "world/common/npc/Yoshi.inc.c"
|
||||
#include "world/common/npc/Yoshi_Patrol.inc.c"
|
||||
|
||||
#include "world/common/complete/KeyItemChoice.inc.c"
|
||||
|
||||
#define CHUCK_QUIZMO_NPC_ID NPC_ChuckQuizmo
|
||||
#define QUIZMO_PRE_STATIC_PAD
|
||||
#include "world/common/complete/Quizmo.inc.c"
|
||||
|
||||
#include "world/common/todo/SwitchToPartner.inc.c"
|
||||
|
||||
EvtScript N(EVS_GetRescuedYoshiCount) = {
|
||||
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_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_Scene_GetJadeRaven) = {
|
||||
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_40, TRUE)
|
||||
EVT_IF_EQ(GF_JAN02_Met_VillageLeader, TRUE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_Talk, ANIM_VillageLeader_Idle, 0, MSG_CH5_0023)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_Talk, ANIM_VillageLeader_Idle, 0, MSG_CH5_0024)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100, TRUE)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_VillageLeader_Walk)
|
||||
EVT_CALL(NpcMoveTo, NPC_SELF, 8, -140, 25)
|
||||
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100, FALSE)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_VillageLeader_Idle)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 25, 15, -150)
|
||||
EVT_CALL(SetPanTarget, CAM_DEFAULT, 25, 15, -150)
|
||||
EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(300.0))
|
||||
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(16.0), EVT_FLOAT(-8.0))
|
||||
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(4.0))
|
||||
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(PlayerMoveTo, 58, -140, 25)
|
||||
EVT_CALL(PlayerFaceNpc, NPC_SELF, FALSE)
|
||||
EVT_CALL(func_802D2C14, 1)
|
||||
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_100, TRUE)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_VillageLeader_Rummage)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_Rummage, ANIM_VillageLeader_Rummage, 5, MSG_CH5_0025)
|
||||
EVT_WAIT(60)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_VillageLeader_Idle)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_Talk, ANIM_VillageLeader_Idle, 0, MSG_CH5_0026)
|
||||
EVT_GIVE_KEY_REWARD(ITEM_JADE_RAVEN)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_Talk, ANIM_VillageLeader_Idle, 0, MSG_CH5_0027)
|
||||
EVT_SET(GB_StoryProgress, STORY_CH5_GOT_JADE_RAVEN)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(GetPlayerPos, LVar3, LVar4, LVar5)
|
||||
EVT_ADD(LVar3, 25)
|
||||
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar3, LVar4, LVar5)
|
||||
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(2.5))
|
||||
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_40, FALSE)
|
||||
EVT_CALL(func_802D2C14, 0)
|
||||
EVT_CALL(GetCurrentPartnerID, LVar0)
|
||||
EVT_IF_EQ(LVar0, PARTNER_SUSHIE)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(PlayerFaceNpc, NPC_PARTNER, FALSE)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(DisablePartnerAI, 0)
|
||||
EVT_CALL(SpeakToPlayer, NPC_PARTNER, ANIM_WorldSushie_Talk, ANIM_WorldSushie_Idle, 2, MSG_CH5_0028)
|
||||
EVT_ELSE
|
||||
EVT_CALL(N(SwitchToPartner), PARTNER_SUSHIE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_PARTNER, -1, -1, 5, MSG_CH5_0029)
|
||||
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_100, TRUE)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(GetNpcPos, NPC_PARTNER, LVar2, LVar3, LVar4)
|
||||
EVT_CALL(MakeLerp, LVar2, 85, 10, EASING_LINEAR)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(UpdateLerp)
|
||||
EVT_CALL(SetNpcPos, NPC_PARTNER, LVar0, LVar3, LVar4)
|
||||
EVT_WAIT(1)
|
||||
EVT_IF_EQ(LVar1, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(InterpNpcYaw, NPC_PARTNER, 270, 0)
|
||||
EVT_WAIT(10)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(PlayerFaceNpc, NPC_PARTNER, FALSE)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(DisablePartnerAI, 0)
|
||||
EVT_CALL(ContinueSpeech, NPC_PARTNER, ANIM_WorldSushie_Talk, ANIM_WorldSushie_Idle, 5, MSG_CH5_002A)
|
||||
EVT_WAIT(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(ContinueSpeech, NPC_PARTNER, ANIM_WorldSushie_Talk, ANIM_WorldSushie_Idle, 5, MSG_CH5_002B)
|
||||
EVT_CALL(SetPlayerAnimation, ANIM_Mario_80007)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(SpeakToPlayer, NPC_PARTNER, ANIM_WorldSushie_Talk, ANIM_WorldSushie_Idle, 5, MSG_CH5_002C)
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(EnablePartnerAI)
|
||||
EVT_CALL(ResetCam, CAM_DEFAULT, EVT_FLOAT(2.0))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInteract_VillageLeader) = {
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_LT(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
|
||||
EVT_IF_EQ(GF_JAN02_Met_VillageLeader, FALSE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_TalkSit, ANIM_VillageLeader_IdleSit, 0, MSG_CH5_0021)
|
||||
EVT_SET(GF_JAN02_Met_VillageLeader, TRUE)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_TalkSit, ANIM_VillageLeader_IdleSit, 0, MSG_CH5_0022)
|
||||
EVT_END_IF
|
||||
EVT_CASE_LT(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_CASE_LT(STORY_CH5_GOT_JADE_RAVEN)
|
||||
EVT_EXEC_WAIT(N(EVS_Scene_GetJadeRaven))
|
||||
EVT_CASE_LT(STORY_CH5_RAFAEL_LEFT_NEST)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_Talk, ANIM_VillageLeader_Idle, 0, MSG_CH5_002D)
|
||||
EVT_CASE_LT(STORY_CH5_ZIP_LINE_READY)
|
||||
EVT_IF_EQ(AF_JAN02_RaphaelComment, FALSE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_TalkSit, ANIM_VillageLeader_IdleSit, 0, MSG_CH5_002E)
|
||||
EVT_SET(AF_JAN02_RaphaelComment, TRUE)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_TalkSit, ANIM_VillageLeader_IdleSit, 0, MSG_CH5_002F)
|
||||
EVT_END_IF
|
||||
EVT_CASE_LT(STORY_CH5_ENTERED_MT_LAVA_LAVA)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_TalkSit, ANIM_VillageLeader_IdleSit, 0, MSG_CH5_0030)
|
||||
EVT_CASE_LT(STORY_CH5_STAR_SPRIT_DEPARTED)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_TalkSit, ANIM_VillageLeader_IdleSit, 0, MSG_CH5_0031)
|
||||
EVT_CASE_LT(STORY_CH6_FLOWER_GATE_OPEN)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_TalkSit, ANIM_VillageLeader_IdleSit, 0, MSG_CH5_0032)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_VillageLeader_TalkSit, ANIM_VillageLeader_IdleSit, 0, MSG_CH5_0033)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInit_VillageLeader) = {
|
||||
EVT_CALL(BindNpcIdle, NPC_SELF, 0)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_VillageLeader_IdleSit)
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_LT(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
|
||||
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_VillageLeader)))
|
||||
EVT_CASE_LT(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_CALL(SetNpcPos, NPC_SELF, 0, -1000, 0)
|
||||
EVT_CASE_LT(STORY_CH5_GOT_JADE_RAVEN)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_VillageLeader_Idle)
|
||||
EVT_CALL(InterpNpcYaw, NPC_SELF, 90, 1)
|
||||
EVT_CALL(SetNpcPos, NPC_SELF, 0, 15, -50)
|
||||
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_VillageLeader)))
|
||||
EVT_CASE_LT(STORY_CH5_RAFAEL_LEFT_NEST)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_VillageLeader_Idle)
|
||||
EVT_CALL(InterpNpcYaw, NPC_SELF, 90, 1)
|
||||
EVT_CALL(SetNpcPos, NPC_SELF, 30, 15, -30)
|
||||
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_VillageLeader)))
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_VillageLeader)))
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInteract_Councillor) = {
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_LT(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
|
||||
EVT_IF_EQ(AF_JAN02_MetCouncillor, FALSE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_LeadersFriend_TalkSit, ANIM_LeadersFriend_IdleSit, 0, MSG_CH5_0034)
|
||||
EVT_CALL(EndSpeech, NPC_SELF, ANIM_LeadersFriend_TalkSit, ANIM_LeadersFriend_IdleSit, 0)
|
||||
EVT_SET(AF_JAN02_MetCouncillor, TRUE)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_LeadersFriend_TalkSit, ANIM_LeadersFriend_IdleSit, 0, MSG_CH5_0035)
|
||||
EVT_END_IF
|
||||
EVT_CASE_LT(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_IF_EQ(GF_JAN03_AgreedToRescueChildren, FALSE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_LeadersFriend_TalkSitSad, ANIM_LeadersFriend_BowSit, 0, MSG_CH5_0036)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_LeadersFriend_TalkSitSad, ANIM_LeadersFriend_BowSit, 0, MSG_CH5_0037)
|
||||
EVT_END_IF
|
||||
EVT_CASE_LT(STORY_CH5_GOT_JADE_RAVEN)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_LeadersFriend_TalkSit, ANIM_LeadersFriend_IdleSit, 0, MSG_CH5_0038)
|
||||
EVT_CASE_LT(STORY_CH5_ENTERED_MT_LAVA_LAVA)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_LeadersFriend_TalkSit, ANIM_LeadersFriend_IdleSit, 0, MSG_CH5_0039)
|
||||
EVT_CASE_LT(STORY_CH5_STAR_SPRIT_DEPARTED)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_LeadersFriend_TalkSit, ANIM_LeadersFriend_IdleSit, 0, MSG_CH5_003A)
|
||||
EVT_CASE_LT(STORY_CH6_FLOWER_GATE_OPEN)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_LeadersFriend_TalkSit, ANIM_LeadersFriend_IdleSit, 0, MSG_CH5_003B)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_LeadersFriend_TalkSit, ANIM_LeadersFriend_IdleSit, 0, MSG_CH5_003C)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInit_Councillor) = {
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_LeadersFriend_IdleSit)
|
||||
EVT_CALL(SetNpcCollisionSize, NPC_SELF, 40, 32)
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_LT(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
|
||||
EVT_CASE_LT(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_LeadersFriend_BowSit)
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(BindNpcIdle, NPC_SELF, 0)
|
||||
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Councillor)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInteract_Yoshi_01) = {
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_LT(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Red_Talk, ANIM_Yoshi_Red_Idle, 0, MSG_CH5_003D)
|
||||
EVT_CASE_LT(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_EXEC_WAIT(N(EVS_GetRescuedYoshiCount))
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_IF_EQ(GF_JAN03_AgreedToRescueChildren, FALSE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Red_CryTalk, ANIM_Yoshi_Red_Cry, 0, MSG_CH5_003E)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Red_CryTalk, ANIM_Yoshi_Red_Cry, 0, MSG_CH5_003F)
|
||||
EVT_END_IF
|
||||
EVT_ELSE
|
||||
EVT_IF_EQ(GF_JAN08_SavedYoshi, FALSE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Red_CryTalk, ANIM_Yoshi_Red_Cry, 0, MSG_CH5_0040)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Red_Talk, ANIM_Yoshi_Red_Idle, 0, MSG_CH5_0041)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_CASE_LE(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Red_Talk, ANIM_Yoshi_Red_Idle, 0, MSG_CH5_0042)
|
||||
EVT_CASE_LT(STORY_CH5_STAR_SPRIT_DEPARTED)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Red_Talk, ANIM_Yoshi_Red_Idle, 0, MSG_CH5_0043)
|
||||
EVT_CASE_LT(STORY_CH6_FLOWER_GATE_OPEN)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Red_Talk, ANIM_Yoshi_Red_Idle, 0, MSG_CH5_0044)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Red_Talk, ANIM_Yoshi_Red_Idle, 0, MSG_CH5_0045)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcIdle_Yoshi_01) = {
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(NpcMoveTo, NPC_SELF, -520, -270, 50)
|
||||
EVT_CALL(NpcMoveTo, NPC_SELF, -420, -270, 50)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInit_Yoshi_01) = {
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_LT(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
|
||||
EVT_CASE_LT(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_IF_EQ(GF_JAN08_SavedYoshi, FALSE)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Yoshi_Red_Panic)
|
||||
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Yoshi_01)))
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Yoshi_01)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInteract_Yoshi_02) = {
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_LT(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Blue_Talk, ANIM_Yoshi_Blue_Idle, 0, MSG_CH5_0046)
|
||||
EVT_CASE_LT(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_EXEC_WAIT(N(EVS_GetRescuedYoshiCount))
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_IF_EQ(GF_JAN03_AgreedToRescueChildren, FALSE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Blue_CryTalk, ANIM_Yoshi_Blue_Cry, 0, MSG_CH5_0047)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Blue_CryTalk, ANIM_Yoshi_Blue_Cry, 0, MSG_CH5_0048)
|
||||
EVT_END_IF
|
||||
EVT_ELSE
|
||||
EVT_IF_EQ(GF_JAN10_SavedYoshi, FALSE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Blue_CryTalk, ANIM_Yoshi_Blue_Cry, 0, MSG_CH5_0049)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Blue_Talk, ANIM_Yoshi_Blue_Idle, 0, MSG_CH5_004A)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_CASE_LE(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Blue_Talk, ANIM_Yoshi_Blue_Idle, 0, MSG_CH5_004B)
|
||||
EVT_CASE_LT(STORY_CH5_STAR_SPRIT_DEPARTED)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Blue_Talk, ANIM_Yoshi_Blue_Idle, 0, MSG_CH5_004C)
|
||||
EVT_CASE_LT(STORY_CH6_FLOWER_GATE_OPEN)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Blue_Talk, ANIM_Yoshi_Blue_Idle, 0, MSG_CH5_004D)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Blue_Talk, ANIM_Yoshi_Blue_Idle, 0, MSG_CH5_004E)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcIdle_Yoshi_02) = {
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(NpcMoveTo, NPC_SELF, 180, -520, 50)
|
||||
EVT_CALL(NpcMoveTo, NPC_SELF, 80, -520, 50)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInit_Yoshi_02) = {
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_LT(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
|
||||
EVT_CASE_LT(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_IF_EQ(GF_JAN10_SavedYoshi, FALSE)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Yoshi_Blue_Panic)
|
||||
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Yoshi_02)))
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Yoshi_02)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInteract_Yoshi_03) = {
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_LT(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Purple_Talk, ANIM_Yoshi_Purple_Idle, 0, MSG_CH5_004F)
|
||||
EVT_CASE_LT(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_EXEC_WAIT(N(EVS_GetRescuedYoshiCount))
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_IF_EQ(GF_JAN03_AgreedToRescueChildren, FALSE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Purple_CryTalk, ANIM_Yoshi_Purple_Cry, 0, MSG_CH5_0050)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Purple_CryTalk, ANIM_Yoshi_Purple_Cry, 0, MSG_CH5_0051)
|
||||
EVT_END_IF
|
||||
EVT_ELSE
|
||||
EVT_IF_EQ(GF_JAN05_SavedYoshi, FALSE)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Purple_CryTalk, ANIM_Yoshi_Purple_Cry, 0, MSG_CH5_0052)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Purple_Talk, ANIM_Yoshi_Purple_Idle, 0, MSG_CH5_0053)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_CASE_LE(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Purple_Talk, ANIM_Yoshi_Purple_Idle, 0, MSG_CH5_0054)
|
||||
EVT_CASE_LT(STORY_CH5_STAR_SPRIT_DEPARTED)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Purple_Talk, ANIM_Yoshi_Purple_Idle, 0, MSG_CH5_0055)
|
||||
EVT_CASE_LT(STORY_CH6_FLOWER_GATE_OPEN)
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Purple_Talk, ANIM_Yoshi_Purple_Idle, 0, MSG_CH5_0056)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Yoshi_Purple_Talk, ANIM_Yoshi_Purple_Idle, 0, MSG_CH5_0057)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcIdle_Yoshi_03) = {
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(NpcMoveTo, NPC_SELF, 600, -150, 50)
|
||||
EVT_CALL(NpcMoveTo, NPC_SELF, 500, -150, 50)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_NpcInit_Yoshi_03) = {
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_LT(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
|
||||
EVT_CASE_LT(STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED)
|
||||
EVT_IF_EQ(GF_JAN05_SavedYoshi, FALSE)
|
||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Yoshi_Purple_Panic)
|
||||
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Yoshi_03)))
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Yoshi_03)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(ExtraAnims_Councillor)[] = {
|
||||
ANIM_LeadersFriend_TalkSit,
|
||||
ANIM_LeadersFriend_TalkSitSad,
|
||||
ANIM_LeadersFriend_IdleSit,
|
||||
ANIM_LeadersFriend_BowSit,
|
||||
-1
|
||||
};
|
||||
|
||||
StaticNpc N(NpcData_Townsfolk)[] = {
|
||||
{
|
||||
.id = NPC_YoshiLeader,
|
||||
.settings = &N(NpcSettings_Yoshi),
|
||||
.pos = { 323.0f, 30.0f, 412.0f },
|
||||
.yaw = 270,
|
||||
.flags = ENEMY_FLAG_1 | ENEMY_FLAG_8 | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
|
||||
.init = &N(EVS_NpcInit_VillageLeader),
|
||||
.drops = NPC_NO_DROPS,
|
||||
.animations = YOSHI_LEADER_ANIMS,
|
||||
.tattle = MSG_NpcTattle_VillageLeader,
|
||||
},
|
||||
{
|
||||
.id = NPC_YoshiCouncillor,
|
||||
.settings = &N(NpcSettings_Yoshi),
|
||||
.pos = { 172.0f, 30.0f, 418.0f },
|
||||
.yaw = 90,
|
||||
.flags = ENEMY_FLAG_1 | ENEMY_FLAG_8 | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000 | ENEMY_FLAG_400000,
|
||||
.init = &N(EVS_NpcInit_Councillor),
|
||||
.drops = NPC_NO_DROPS,
|
||||
.animations = YOSHI_COUNCILLOR_ANIMS,
|
||||
.extraAnimations = N(ExtraAnims_Councillor),
|
||||
.tattle = MSG_NpcTattle_LeadersFriend,
|
||||
},
|
||||
{
|
||||
.id = NPC_Yoshi_01,
|
||||
.settings = &N(NpcSettings_Yoshi_Patrol),
|
||||
.pos = { -520.0f, 0.0f, -270.0f },
|
||||
.yaw = 90,
|
||||
.flags = ENEMY_FLAG_1 | ENEMY_FLAG_8 | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
|
||||
.init = &N(EVS_NpcInit_Yoshi_01),
|
||||
.drops = NPC_NO_DROPS,
|
||||
.territory = {
|
||||
.patrol = {
|
||||
.isFlying = TRUE,
|
||||
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||
.numPoints = 2,
|
||||
.points = {
|
||||
{ -520, 0, -270 },
|
||||
{ -420, 0, -270 },
|
||||
},
|
||||
.detectShape = SHAPE_CYLINDER,
|
||||
.detectPos = { -520, 0, -270 },
|
||||
.detectSize = { 100 },
|
||||
}
|
||||
},
|
||||
.animations = YOSHI_RED_ANIMS,
|
||||
.tattle = MSG_NpcTattle_EntranceYoshi,
|
||||
},
|
||||
{
|
||||
.id = NPC_Yoshi_02,
|
||||
.settings = &N(NpcSettings_Yoshi_Patrol),
|
||||
.pos = { 180.0f, 0.0f, -520.0f },
|
||||
.yaw = 270,
|
||||
.flags = ENEMY_FLAG_1 | ENEMY_FLAG_8 | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
|
||||
.init = &N(EVS_NpcInit_Yoshi_02),
|
||||
.drops = NPC_NO_DROPS,
|
||||
.territory = {
|
||||
.patrol = {
|
||||
.isFlying = TRUE,
|
||||
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||
.numPoints = 3,
|
||||
.points = {
|
||||
{ 180, 0, -520 },
|
||||
{ 10, 0, -520 },
|
||||
{ 100, 0, -600 },
|
||||
},
|
||||
.detectShape = SHAPE_CYLINDER,
|
||||
.detectPos = { 5, 0, -554 },
|
||||
.detectSize = { 100 },
|
||||
}
|
||||
},
|
||||
.animations = YOSHI_BLUE_ANIMS,
|
||||
.tattle = MSG_NpcTattle_BlueYoshi,
|
||||
},
|
||||
{
|
||||
.id = NPC_Yoshi_03,
|
||||
.settings = &N(NpcSettings_Yoshi_Patrol),
|
||||
.pos = { 600.0f, 0.0f, -150.0f },
|
||||
.yaw = 270,
|
||||
.flags = ENEMY_FLAG_1 | ENEMY_FLAG_8 | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
|
||||
.init = &N(EVS_NpcInit_Yoshi_03),
|
||||
.drops = NPC_NO_DROPS,
|
||||
.territory = {
|
||||
.patrol = {
|
||||
.isFlying = TRUE,
|
||||
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||
.numPoints = 2,
|
||||
.points = {
|
||||
{ 600, 0, -150 },
|
||||
{ 485, 0, -220 },
|
||||
},
|
||||
.detectShape = SHAPE_CYLINDER,
|
||||
.detectPos = { 600, 0, -150 },
|
||||
.detectSize = { 100 },
|
||||
}
|
||||
},
|
||||
.animations = YOSHI_PURPLE_ANIMS,
|
||||
.tattle = MSG_NpcTattle_LikeableYoshi,
|
||||
},
|
||||
};
|
||||
|
||||
StaticNpc N(NpcData_ChuckQuizmo) = {
|
||||
.id = NPC_ChuckQuizmo,
|
||||
.settings = &N(NpcSettings_ChuckQuizmo),
|
||||
.pos = { -150.0f, 15.0f, 300.0f },
|
||||
.yaw = 90,
|
||||
.flags = ENEMY_FLAG_1 | ENEMY_FLAG_8 | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_2000,
|
||||
.initVarCount = 1,
|
||||
.initVar = { .bytes = { 0, QUIZ_AREA_JAN, QUIZ_COUNT_JAN, QUIZ_MAP_JAN_02 }},
|
||||
.drops = NPC_NO_DROPS,
|
||||
.animations = QUIZMO_ANIMS,
|
||||
.tattle = MSG_NpcTattle_ChuckQuizmo,
|
||||
};
|
||||
|
||||
NpcGroupList N(DefaultNPCs) = {
|
||||
NPC_GROUP(N(NpcData_Townsfolk)),
|
||||
NPC_GROUP(N(NpcData_ChuckQuizmo)),
|
||||
{}
|
||||
};
|
9
src/world/area_jan/jan_02/jan_02_4_entity.c
Normal file
9
src/world/area_jan/jan_02/jan_02_4_entity.c
Normal file
@ -0,0 +1,9 @@
|
||||
#include "jan_02.h"
|
||||
#include "entity.h"
|
||||
|
||||
EvtScript N(EVS_MakeEntities) = {
|
||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_HiddenPanel), 25, 15, -60, 0, MODEL_o222, MAKE_ENTITY_END)
|
||||
EVT_CALL(AssignPanelFlag, GF_JAN02_HiddenPanel)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
101
src/world/area_jan/jan_02/jan_02_5_foliage.c
Normal file
101
src/world/area_jan/jan_02/jan_02_5_foliage.c
Normal file
@ -0,0 +1,101 @@
|
||||
#include "jan_02.h"
|
||||
|
||||
#include "common/foliage.inc.c"
|
||||
|
||||
FoliageModelList N(Tree1_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o240);
|
||||
FoliageModelList N(Tree1_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o239);
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree1) = {
|
||||
.leaves = &N(Tree1_LeafModels),
|
||||
.trunk = &N(Tree1_TrunkModels),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree1) = {
|
||||
.pos = { -220.0f, 15.0f, 292.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
FoliageModelList N(Tree2_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o260, MODEL_o261);
|
||||
FoliageModelList N(Tree2_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o259);
|
||||
|
||||
FoliageDropList N(Tree2_Drops) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_COCONUT,
|
||||
.pos = { -596, 75, -190 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||
.spawnFlag = AF_JAN02_TreeDrop2,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree2) = {
|
||||
.leaves = &N(Tree2_LeafModels),
|
||||
.trunk = &N(Tree2_TrunkModels),
|
||||
.drops = &N(Tree2_Drops),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree2) = {
|
||||
.pos = { -586.0f, 0.0f, -215.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
FoliageModelList N(Tree3_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o281, MODEL_o282);
|
||||
FoliageModelList N(Tree3_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o280);
|
||||
|
||||
|
||||
FoliageDropList N(Tree3_Drops) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_COCONUT,
|
||||
.pos = { 591, 75, -220 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||
.spawnFlag = AF_JAN02_TreeDrop3,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree3) = {
|
||||
.leaves = &N(Tree3_LeafModels),
|
||||
.trunk = &N(Tree3_TrunkModels),
|
||||
.drops = &N(Tree3_Drops),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree3) = {
|
||||
.pos = { 581.0f, 0.0f, -240.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
FoliageModelList N(Tree4_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o257);
|
||||
FoliageModelList N(Tree4_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o256);
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree4) = {
|
||||
.leaves = &N(Tree4_LeafModels),
|
||||
.trunk = &N(Tree4_TrunkModels),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree4) = {
|
||||
.pos = { -636.0f, 0.0f, -235.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
EvtScript N(EVS_SetupFoliage) = {
|
||||
EVT_SET(AF_JAN02_TreeDrop2, FALSE)
|
||||
EVT_SET(AF_JAN02_TreeDrop3, FALSE)
|
||||
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree1)))
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_WALL_HAMMER, COLLIDER_o239, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), 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)), TRIGGER_WALL_HAMMER, COLLIDER_o259, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), 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)), TRIGGER_WALL_HAMMER, COLLIDER_o343, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree3)), 1, 0)
|
||||
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree4)))
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_WALL_HAMMER, COLLIDER_o364, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree4)), 1, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
@ -1,116 +0,0 @@
|
||||
#include "jan_03.h"
|
||||
#include "effects.h"
|
||||
|
||||
static char* N(exit_str_0) = "jan_02";
|
||||
static char* N(exit_str_1) = "jan_05";
|
||||
static char* N(exit_str_2) = "jan_22";
|
||||
static char* N(exit_str_3) = "";
|
||||
|
||||
#define CHUCK_QUIZMO_NPC_ID 17
|
||||
|
||||
#include "world/common/entity/Pipe.inc.c"
|
||||
|
||||
#include "world/common/atomic/TexturePan.inc.c"
|
||||
|
||||
ApiStatus func_802405EC_B351BC(Evt* script, s32 isInitialCall) {
|
||||
fx_sun_undeclared(FX_SUN_FROM_LEFT, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
#include "world/common/enemy/ai/PatrolNoAttackAI.inc.c"
|
||||
|
||||
static char* N(exit_str_4) = "tik_08";
|
||||
|
||||
#include "world/common/atomic/ToadHouse.inc.c"
|
||||
|
||||
#include "world/common/todo/GetNpcCollisionHeight.inc.c"
|
||||
|
||||
#include "world/common/todo/AddPlayerHandsOffset.inc.c"
|
||||
|
||||
extern s32 N(ItemChoice_HasSelectedItem);
|
||||
extern s32 N(ItemChoice_SelectedItemID);
|
||||
#include "world/common/todo/ItemChoice_WaitForSelection.inc.c"
|
||||
|
||||
ApiStatus N(ItemChoice_SaveSelected)(Evt* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
|
||||
N(ItemChoice_SelectedItemID) = evt_get_variable(script, *args++);
|
||||
N(ItemChoice_HasSelectedItem) = TRUE;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
BSS s32 D_8024FBA0[114];
|
||||
BSS s32 D_8024FD68[92];
|
||||
BSS s32 D_8024FED8[2]; // Unused or padding
|
||||
BSS s32 D_8024FEE0;
|
||||
|
||||
ApiStatus func_80241A64_B36634(Evt* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
s32* ptr = (s32*) evt_get_variable(script, *args++);
|
||||
s32 i;
|
||||
|
||||
if (ptr != NULL) {
|
||||
for (i = 0; ptr[i] != 0; i++) {
|
||||
D_8024FBA0[i] = ptr[i];
|
||||
}
|
||||
D_8024FBA0[i] = 0;
|
||||
} else {
|
||||
for (i = 0; i < 112; i++) {
|
||||
D_8024FBA0[i] = i + 16;
|
||||
D_8024FBA0[112] = 0;
|
||||
}
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus func_80241B00_B366D0(Evt* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
s32* ptr = (s32*) evt_get_variable(script, *args++);
|
||||
s32 i;
|
||||
|
||||
if (ptr != NULL) {
|
||||
for (i = 0; ptr[i] != 0; i++) {
|
||||
D_8024FD68[i] = ptr[i];
|
||||
}
|
||||
D_8024FD68[i] = 0;
|
||||
} else {
|
||||
for (i = 0; i < 91; i++) {
|
||||
D_8024FD68[i] = i + 128;
|
||||
D_8024FD68[91] = 0;
|
||||
}
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
extern s32 N(Quizmo_Worker);
|
||||
extern s32 N(Quizmo_AnswerResult);
|
||||
extern EffectInstance* N(Quizmo_StageEffect);
|
||||
extern EffectInstance* N(Quizmo_AudienceEffect);
|
||||
extern EffectInstance* N(Quizmo_VannaTEffect);
|
||||
|
||||
#include "world/common/atomic/Quizmo.inc.c"
|
||||
|
||||
extern s32 N(LetterDelivery_SavedNpcAnim);
|
||||
#include "world/common/todo/LetterDelivery.inc.c"
|
||||
|
||||
extern s32 D_8024A5AC_B3F17C[];
|
||||
|
||||
ApiStatus func_80242F1C_B37AEC(Evt* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
PlayerData* playerData = &gPlayerData;
|
||||
s32 outVar = *args++;
|
||||
s32 outVal = 0;
|
||||
s32* it;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
|
||||
it = D_8024A5AC_B3F17C;
|
||||
while (*it != 0) {
|
||||
if (playerData->invItems[i] == *it++) {
|
||||
outVal++;
|
||||
}
|
||||
}
|
||||
}
|
||||
evt_set_variable(script, outVar, outVal);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
#include "jan_03.h"
|
||||
|
||||
ApiStatus func_80242FA0_B37B70(Evt* script, s32 isInitialCall) {
|
||||
f32 x = gPlayerStatus.currentSpeed * 5.0f * sin_deg(gPlayerStatus.targetYaw);
|
||||
f32 z = gPlayerStatus.currentSpeed * 5.0f * -cos_deg(gPlayerStatus.targetYaw);
|
||||
|
||||
script->varTable[0] = gPlayerStatus.position.x + x;
|
||||
script->varTable[1] = gPlayerStatus.position.z + z;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
#include "jan_03.h"
|
||||
|
||||
#include "common/foliage.inc.c"
|
||||
|
@ -2,8 +2,47 @@
|
||||
/// @brief Jade Jungle - Village Buildings
|
||||
|
||||
#include "common.h"
|
||||
#include "../jan.h"
|
||||
#include "message_ids.h"
|
||||
#include "map.h"
|
||||
|
||||
#include "../jan.h"
|
||||
#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,
|
||||
};
|
||||
|
||||
#define NAMESPACE jan_03
|
||||
|
||||
extern EvtScript N(EVS_Main);
|
||||
extern EvtScript N(EVS_SetupMusic);
|
||||
extern EvtScript N(EVS_PlayRestingSong);
|
||||
extern EvtScript N(EVS_SetupRooms);
|
||||
extern EvtScript N(EVS_SetupShop);
|
||||
extern EvtScript N(EVS_SetupFoliage);
|
||||
extern EvtScript N(EVS_MakeEntities);
|
||||
|
||||
extern NpcGroupList N(CrisisNPCs);
|
||||
extern NpcGroupList N(ChapterNPCs);
|
||||
extern NpcGroupList N(AfterNPCs);
|
||||
extern NpcGroupList N(DefaultNPCs);
|
||||
|
16
src/world/area_jan/jan_03/jan_03_0_header.c
Normal file
16
src/world/area_jan/jan_03/jan_03_0_header.c
Normal file
@ -0,0 +1,16 @@
|
||||
#include "jan_03.h"
|
||||
|
||||
EntryList N(Entrances) = {
|
||||
[jan_03_ENTRY_0] { -583.0, 0.0, 0.0, 90.0 },
|
||||
[jan_03_ENTRY_1] { -405.0, 0.0, -405.0, 135.0 },
|
||||
[jan_03_ENTRY_2] { 583.0, 0.0, 0.0, 270.0 },
|
||||
[jan_03_ENTRY_3] { -540.0, 35.0, 195.0, 180.0 },
|
||||
};
|
||||
|
||||
MapSettings N(settings) = {
|
||||
.main = &N(EVS_Main),
|
||||
.entryList = &N(Entrances),
|
||||
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||
.background = &gBackgroundImage,
|
||||
.tattle = { MSG_MapTattle_jan_03 },
|
||||
};
|
19
src/world/area_jan/jan_03/jan_03_1_music.c
Normal file
19
src/world/area_jan/jan_03/jan_03_1_music.c
Normal file
@ -0,0 +1,19 @@
|
||||
#include "jan_03.h"
|
||||
|
||||
EvtScript N(EVS_SetupMusic) = {
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_RANGE(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING, STORY_CH5_SUSHIE_JOINED_PARTY)
|
||||
EVT_CALL(SetMusicTrack, 0, SONG_YOSHIS_PANIC, 0, 8)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(SetMusicTrack, 0, SONG_YOSHIS_VILLAGE, 0, 8)
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(ClearAmbientSounds, 250)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_PlayRestingSong) = {
|
||||
EVT_CALL(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
115
src/world/area_jan/jan_03/jan_03_2_main.c
Normal file
115
src/world/area_jan/jan_03/jan_03_2_main.c
Normal file
@ -0,0 +1,115 @@
|
||||
#include "jan_03.h"
|
||||
#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"
|
||||
|
||||
API_CALLABLE(N(SpawnSunEffect)) {
|
||||
fx_sun_undeclared(FX_SUN_FROM_LEFT, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
EvtScript N(EVS_ExitWalk_jan_02_1) = EVT_EXIT_WALK(60, jan_03_ENTRY_0, "jan_02", jan_02_ENTRY_1);
|
||||
EvtScript N(EVS_ExitWalk_jan_05_0) = EVT_EXIT_WALK(60, jan_03_ENTRY_1, "jan_05", jan_05_ENTRY_0);
|
||||
EvtScript N(EVS_ExitWalk_jan_22_0) = EVT_EXIT_WALK(60, jan_03_ENTRY_2, "jan_22", jan_22_ENTRY_0);
|
||||
|
||||
MAP_RODATA_PAD(1, exits);
|
||||
|
||||
EvtScript N(EVS_BindExitTriggers) = {
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_02_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_05_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilinw, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_22_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_EnterMap) = {
|
||||
EVT_CALL(GetLoadType, LVar1)
|
||||
EVT_IF_EQ(LVar1, LOAD_FROM_FILE_SELECT)
|
||||
EVT_EXEC(EnterSavePoint)
|
||||
EVT_EXEC(N(EVS_BindExitTriggers))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetEntryID, LVar0)
|
||||
EVT_IF_NE(LVar0, jan_03_ENTRY_3)
|
||||
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||
EVT_EXEC(EnterWalk)
|
||||
EVT_ELSE
|
||||
EVT_IF_EQ(GF_JAN03_WarpPipe, FALSE)
|
||||
EVT_CALL(DisablePlayerInput, TRUE)
|
||||
EVT_CALL(DisablePlayerPhysics, TRUE)
|
||||
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetNpcPos, NPC_PARTNER, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPlayerPos, LVar0, NPC_DISPOSE_POS_Y, LVar2)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(PlaySound, SOUND_208E)
|
||||
EVT_SET(GF_JAN03_WarpPipe, TRUE)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(SetPlayerActionState, ACTION_STATE_IDLE)
|
||||
EVT_CALL(SetPlayerPos, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetNpcPos, NPC_PARTNER, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(DisablePlayerPhysics, FALSE)
|
||||
EVT_CALL(DisablePlayerInput, FALSE)
|
||||
EVT_END_IF
|
||||
EVT_SET(LVarA, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||
EVT_EXEC_WAIT(N(EVS_Pipe_EnterVertical))
|
||||
EVT_WAIT(1)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_Main) = {
|
||||
EVT_SET(GB_WorldLocation, LOCATION_YOSHIS_VILLAGE)
|
||||
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||
EVT_SETUP_CAMERA_NO_LEAD()
|
||||
EVT_SWITCH(GB_StoryProgress)
|
||||
EVT_CASE_LT(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING)
|
||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(CrisisNPCs)))
|
||||
EVT_CASE_LT(STORY_CH5_ZIP_LINE_READY)
|
||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(ChapterNPCs)))
|
||||
EVT_CASE_EQ(STORY_CH5_STAR_SPRIT_DEPARTED)
|
||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(ChapterNPCs)))
|
||||
EVT_CASE_GT(STORY_CH5_STAR_SPRIT_DEPARTED)
|
||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(AfterNPCs)))
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||
EVT_END_SWITCH
|
||||
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitw, COLLIDER_FLAGS_UPPER_MASK)
|
||||
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitnw, COLLIDER_FLAGS_UPPER_MASK)
|
||||
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilite, COLLIDER_FLAGS_UPPER_MASK)
|
||||
EVT_EXEC(N(EVS_EnterMap))
|
||||
EVT_WAIT(1)
|
||||
EVT_EXEC(N(EVS_SetupMusic))
|
||||
EVT_CALL(PlaySound, SOUND_80000017)
|
||||
EVT_EXEC(N(EVS_SetupRooms))
|
||||
EVT_EXEC(N(EVS_SetupFoliage))
|
||||
EVT_CALL(EnableTexPanning, MODEL_o121, TRUE)
|
||||
EVT_CALL(EnableTexPanning, MODEL_o371, TRUE)
|
||||
EVT_CALL(EnableTexPanning, MODEL_o119, TRUE)
|
||||
EVT_THREAD
|
||||
TEX_PAN_PARAMS_ID(TEX_PANNER_1)
|
||||
TEX_PAN_PARAMS_STEP( 0, 400, 0, 0)
|
||||
TEX_PAN_PARAMS_FREQ( 0, 1, 0, 0)
|
||||
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
|
||||
EVT_EXEC(N(EVS_UpdateTexturePan))
|
||||
EVT_END_THREAD
|
||||
EVT_THREAD
|
||||
TEX_PAN_PARAMS_ID(TEX_PANNER_2)
|
||||
TEX_PAN_PARAMS_STEP( -100, 200, 0, 0)
|
||||
TEX_PAN_PARAMS_FREQ( 1, 1, 0, 0)
|
||||
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
|
||||
EVT_EXEC(N(EVS_UpdateTexturePan))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetModelFlags, MODEL_o189, 256, TRUE)
|
||||
EVT_CALL(SetModelFlags, MODEL_o186, 256, TRUE)
|
||||
EVT_CALL(SetModelFlags, MODEL_o192, 256, TRUE)
|
||||
EVT_CALL(SetModelFlags, MODEL_o195, 256, TRUE)
|
||||
EVT_EXEC(N(EVS_SetupShop))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
83
src/world/area_jan/jan_03/jan_03_3_shop.c
Normal file
83
src/world/area_jan/jan_03/jan_03_3_shop.c
Normal file
@ -0,0 +1,83 @@
|
||||
#include "jan_03.h"
|
||||
#include "sprite/npc/Yoshi.h"
|
||||
|
||||
s32 N(ShopMessages)[] = {
|
||||
[SHOP_MSG_BUY_CONFIRM ] MSG_Shop_00_JAN03,
|
||||
[SHOP_MSG_NOT_ENOUGH_COINS ] MSG_Shop_01_JAN03,
|
||||
[SHOP_MSG_NOT_ENOUGH_ROOM ] MSG_Shop_02_JAN03,
|
||||
[SHOP_MSG_BUY_THANK_YOU ] MSG_Shop_03_JAN03,
|
||||
[SHOP_MSG_GREETING ] MSG_Shop_04_JAN03,
|
||||
[SHOP_MSG_INSTRUCTIONS ] MSG_Shop_05_JAN03,
|
||||
[SHOP_MSG_NOTHING_TO_SELL ] MSG_Shop_06_JAN03,
|
||||
[SHOP_MSG_SELL_WHICH ] MSG_Shop_07_JAN03,
|
||||
[SHOP_MSG_SELL_CONFIRM ] MSG_Shop_08_JAN03,
|
||||
[SHOP_MSG_SELL_CANCEL ] MSG_Shop_09_JAN03,
|
||||
[SHOP_MSG_SELL_MORE ] MSG_Shop_0A_JAN03,
|
||||
[SHOP_MSG_SELL_THANKS ] MSG_Shop_0B_JAN03,
|
||||
[SHOP_MSG_NOTHING_TO_CHECK ] MSG_Shop_0C_JAN03,
|
||||
[SHOP_MSG_NO_CHECK_ROOM ] MSG_Shop_0D_JAN03,
|
||||
[SHOP_MSG_CHECK_WHICH ] MSG_Shop_0E_JAN03,
|
||||
[SHOP_MSG_CHECK_ACCEPTED ] MSG_Shop_0F_JAN03,
|
||||
[SHOP_MSG_CHECK_MORE ] MSG_Shop_10_JAN03,
|
||||
[SHOP_MSG_NOTHING_TO_CLAIM ] MSG_Shop_11_JAN03,
|
||||
[SHOP_MSG_NO_CLAIM_ROOM ] MSG_Shop_12_JAN03,
|
||||
[SHOP_MSG_CLAIM_WHICH ] MSG_Shop_13_JAN03,
|
||||
[SHOP_MSG_CLAIM_ACCEPTED ] MSG_Shop_14_JAN03,
|
||||
[SHOP_MSG_CLAIM_MORE ] MSG_Shop_15_JAN03,
|
||||
[SHOP_MSG_FAREWELL ] MSG_Shop_16_JAN03,
|
||||
};
|
||||
|
||||
ShopItemData N(Inventory)[] = {
|
||||
{ .itemID = ITEM_SNOWMAN_DOLL, .price = 15, MSG_ItemShopDesc_SnowmanDoll },
|
||||
{ .itemID = ITEM_THUNDER_RAGE, .price = 15, MSG_ItemShopDesc_ThunderRage },
|
||||
{ .itemID = ITEM_FIRE_FLOWER, .price = 5, MSG_ItemShopDesc_FireFlower },
|
||||
{ .itemID = ITEM_TASTY_TONIC, .price = 2, MSG_ItemShopDesc_TastyTonic },
|
||||
{ .itemID = ITEM_HONEY_SYRUP, .price = 6, MSG_ItemShopDesc_HoneySyrup },
|
||||
{ .itemID = ITEM_SUPER_SHROOM, .price = 15, MSG_ItemShopDesc_SuperShroom },
|
||||
{}
|
||||
};
|
||||
|
||||
ShopSellPriceData N(PriceList)[] = {
|
||||
{ .itemID = ITEM_SNOWMAN_DOLL, .sellPrice = 10 },
|
||||
{ .itemID = ITEM_SUPER_SODA, .sellPrice = 7 },
|
||||
{ .itemID = ITEM_ICED_POTATO, .sellPrice = 10 },
|
||||
{ .itemID = ITEM_YOSHI_COOKIE, .sellPrice = 30 },
|
||||
{ .itemID = ITEM_BUBBLE_BERRY, .sellPrice = 5 },
|
||||
{}
|
||||
};
|
||||
|
||||
EvtScript N(EVS_OnBuy) = {
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(SHOP_BUY_RESULT_CANCEL)
|
||||
EVT_CASE_EQ(SHOP_BUY_RESULT_4)
|
||||
EVT_CASE_EQ(SHOP_BUY_RESULT_OK)
|
||||
EVT_CASE_EQ(SHOP_BUY_RESULT_2)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
ShopItemLocation N(ItemPositions)[] = {
|
||||
{ .posModelID = MODEL_o363, .triggerColliderID = COLLIDER_o391 },
|
||||
{ .posModelID = MODEL_o364, .triggerColliderID = COLLIDER_o392 },
|
||||
{ .posModelID = MODEL_o365, .triggerColliderID = COLLIDER_o393 },
|
||||
{ .posModelID = MODEL_o366, .triggerColliderID = COLLIDER_o394 },
|
||||
{ .posModelID = MODEL_o367, .triggerColliderID = COLLIDER_o395 },
|
||||
{ .posModelID = MODEL_o368, .triggerColliderID = COLLIDER_o396 },
|
||||
};
|
||||
|
||||
ShopOwner N(Owner) = {
|
||||
.npcID = NPC_Yoshi_01,
|
||||
.idleAnim = ANIM_Yoshi_Blue_Idle,
|
||||
.talkAnim = ANIM_Yoshi_Blue_Talk,
|
||||
.onBuyEvt = &N(EVS_OnBuy),
|
||||
.shopMsgIDs = N(ShopMessages),
|
||||
};
|
||||
|
||||
EvtScript N(EVS_SetupShop) = {
|
||||
EVT_CALL(EnableGroup, MODEL_g126, FALSE)
|
||||
EVT_CALL(MakeShop, EVT_PTR(N(ItemPositions)), EVT_PTR(N(Inventory)), EVT_PTR(N(PriceList)), ITEM_ENTITY_FLAG_10000)
|
||||
EVT_CALL(MakeShopOwner, EVT_PTR(N(Owner)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
1152
src/world/area_jan/jan_03/jan_03_4_npc.c
Normal file
1152
src/world/area_jan/jan_03/jan_03_4_npc.c
Normal file
File diff suppressed because it is too large
Load Diff
69
src/world/area_jan/jan_03/jan_03_5_entity.c
Normal file
69
src/world/area_jan/jan_03/jan_03_5_entity.c
Normal file
@ -0,0 +1,69 @@
|
||||
#include "jan_03.h"
|
||||
#include "entity.h"
|
||||
|
||||
EvtScript N(EVS_GotoMap_tik_08_4) = {
|
||||
EVT_CALL(GotoMap, EVT_PTR("tik_08"), tik_08_ENTRY_4)
|
||||
EVT_WAIT(100)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
|
||||
API_CALLABLE(N(GiveInitialSpringBoost)) {
|
||||
f32 x = gPlayerStatus.currentSpeed * 5.0f * sin_deg(gPlayerStatus.targetYaw);
|
||||
f32 z = gPlayerStatus.currentSpeed * 5.0f * -cos_deg(gPlayerStatus.targetYaw);
|
||||
|
||||
script->varTable[0] = gPlayerStatus.position.x + x;
|
||||
script->varTable[1] = gPlayerStatus.position.z + z;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
EvtScript N(EVS_TetherCamToPlayer) = {
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetCamTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_UseSpring) = {
|
||||
EVT_CALL(N(GiveInitialSpringBoost))
|
||||
EVT_CALL(DisablePlayerInput, TRUE)
|
||||
EVT_CALL(DisablePlayerPhysics, TRUE)
|
||||
EVT_CALL(SetPlayerActionState, ACTION_STATE_IDLE)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetPlayerActionState, ACTION_STATE_LAUNCH)
|
||||
EVT_WAIT(1)
|
||||
EVT_EXEC_GET_TID(N(EVS_TetherCamToPlayer), LVarA)
|
||||
EVT_CALL(SetPlayerJumpscale, EVT_FLOAT(0.1))
|
||||
EVT_CALL(PlayerJump, -556, 300, -195, 15)
|
||||
EVT_CALL(DisablePlayerPhysics, FALSE)
|
||||
EVT_CALL(func_802D2884, -630, -50, 0)
|
||||
EVT_CALL(SetPlayerAnimation, ANIM_Mario_AnimMidair)
|
||||
EVT_CALL(SetPlayerJumpscale, EVT_FLOAT(1.0))
|
||||
EVT_CALL(PlayerJump2, -601, 376, -105, 30)
|
||||
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
||||
EVT_KILL_THREAD(LVarA)
|
||||
EVT_CALL(DisablePlayerInput, FALSE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_MakeEntities) = {
|
||||
EVT_IF_EQ(GF_JAN03_WarpPipe, FALSE)
|
||||
EVT_IF_EQ(GF_TIK08_WarpPipe, TRUE)
|
||||
EVT_CALL(GetEntryID, LVar0)
|
||||
EVT_IF_NE(LVar0, jan_03_ENTRY_3)
|
||||
EVT_SET(GF_JAN03_WarpPipe, TRUE)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_BlueWarpPipe), -540, 0, 195, 30, jan_03_ENTRY_3, EVT_PTR(N(EVS_GotoMap_tik_08_4)), EVT_INDEX_OF_GAME_FLAG(GF_JAN03_WarpPipe), MAKE_ENTITY_END)
|
||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_SavePoint), 100, 60, -25, 0, MAKE_ENTITY_END)
|
||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_ScriptSpring), -556, 0, -195, 0, MAKE_ENTITY_END)
|
||||
EVT_CALL(AssignScript, EVT_PTR(N(EVS_UseSpring)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
94
src/world/area_jan/jan_03/jan_03_6_rooms.c
Normal file
94
src/world/area_jan/jan_03/jan_03_6_rooms.c
Normal file
@ -0,0 +1,94 @@
|
||||
#include "jan_03.h"
|
||||
|
||||
EvtScript N(EVS_SetDoorRot_Shop) = {
|
||||
EVT_CALL(RotateGroup, MODEL_g48, LVar0, 0, -1, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_MoveWalls_Shop) = {
|
||||
EVT_SET(LVar1, LVar0)
|
||||
EVT_MULF(LVar1, EVT_FLOAT(-1.328125))
|
||||
EVT_CALL(RotateGroup, MODEL_g109, LVar1, 0, 0, 1)
|
||||
EVT_SET(LVar1, LVar0)
|
||||
EVT_MULF(LVar1, EVT_FLOAT(1.0))
|
||||
EVT_CALL(RotateGroup, MODEL_g110, LVar1, 0, 0, 1)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_ToggleVis_Shop) = {
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CALL(EnableGroup, MODEL_g126, TRUE)
|
||||
EVT_CASE_EQ(3)
|
||||
EVT_CALL(EnableGroup, MODEL_g126, FALSE)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(InteriorNPCs_Shop)[] = {
|
||||
NPC_Yoshi_01,
|
||||
-1
|
||||
};
|
||||
|
||||
EvtScript N(EVS_SetDoorRot_ToadHouse) = {
|
||||
EVT_CALL(RotateGroup, MODEL_g111, LVar0, 0, 1, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_MoveWalls_ToadHouse) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(EVS_ToggleVis_ToadHouse) = {
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CALL(SetGroupEnabled, MODEL_g73, 0)
|
||||
EVT_CALL(SetGroupEnabled, MODEL_g97, 0)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_CASE_EQ(2)
|
||||
EVT_CASE_EQ(3)
|
||||
EVT_CALL(SetGroupEnabled, MODEL_g73, 1)
|
||||
EVT_CALL(SetGroupEnabled, MODEL_g97, 1)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(InteriorNPCs_ToadHouse)[] = {
|
||||
NPC_Toad,
|
||||
-1
|
||||
};
|
||||
|
||||
EvtScript N(EVS_SetupRooms) = {
|
||||
// shop
|
||||
EVT_CALL(MakeDoorAdvanced,
|
||||
VIS_GROUP_PAIR(VIS_GROUP_1, VIS_GROUP_6),
|
||||
EVT_PTR(N(EVS_SetDoorRot_Shop)),
|
||||
EVT_PTR(N(EVS_MoveWalls_Shop)),
|
||||
NULL,
|
||||
EVT_PTR(N(EVS_ToggleVis_Shop)),
|
||||
COLLIDER_o156,
|
||||
COLLIDER_o161,
|
||||
MODEL_g41,
|
||||
EVT_PTR(N(InteriorNPCs_Shop)))
|
||||
EVT_SET(LVar0, 3)
|
||||
EVT_EXEC(N(EVS_ToggleVis_Shop))
|
||||
// toad house
|
||||
EVT_CALL(MakeDoorAdvanced,
|
||||
VIS_GROUP_PAIR(VIS_GROUP_0, VIS_GROUP_5),
|
||||
EVT_PTR(N(EVS_SetDoorRot_ToadHouse)),
|
||||
EVT_PTR(N(EVS_MoveWalls_ToadHouse)),
|
||||
NULL,
|
||||
EVT_PTR(N(EVS_ToggleVis_ToadHouse)),
|
||||
COLLIDER_o199,
|
||||
COLLIDER_o200,
|
||||
MODEL_o2,
|
||||
EVT_PTR(N(InteriorNPCs_ToadHouse)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
39
src/world/area_jan/jan_03/jan_03_7_foliage.c
Normal file
39
src/world/area_jan/jan_03/jan_03_7_foliage.c
Normal file
@ -0,0 +1,39 @@
|
||||
#include "jan_03.h"
|
||||
|
||||
#include "common/foliage.inc.c"
|
||||
|
||||
FoliageModelList N(Tree1_LeafModels) = FOLIAGE_MODEL_LIST(MODEL_o351, MODEL_o352);
|
||||
FoliageModelList N(Tree1_TrunkModels) = FOLIAGE_MODEL_LIST(MODEL_o350);
|
||||
|
||||
FoliageDropList N(Tree1_Drops) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_COCONUT,
|
||||
.pos = { 586, 75, -115 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||
.spawnFlag = AF_JAN03_TreeDrop1,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(ShakeTree_Tree1) = {
|
||||
.leaves = &N(Tree1_LeafModels),
|
||||
.trunk = &N(Tree1_TrunkModels),
|
||||
.drops = &N(Tree1_Drops),
|
||||
};
|
||||
|
||||
BombTrigger N(BombPos_Tree1) = {
|
||||
.pos = { 576.0f, 0.0f, -135.0f },
|
||||
.radius = 0.0f
|
||||
};
|
||||
|
||||
EvtScript N(EVS_SetupFoliage) = {
|
||||
EVT_SET(AF_JAN_16, FALSE)
|
||||
EVT_SET(AF_JAN03_TreeDrop1, FALSE)
|
||||
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree1)))
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_WALL_HAMMER, COLLIDER_o440, 1, 0)
|
||||
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ShakeTree)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree1)), 1, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
@ -95,14 +95,14 @@ ApiStatus func_802404E0_AD63B0(Evt* script, s32 isInitialCall) {
|
||||
temp_f26 *= 0.1;
|
||||
temp_f24 += cos_deg(temp_f20 * 15.0f) * 5.0f;
|
||||
effect = fx_ice_shard(a0, a1, a2, -150.0f, ((i & 3) * 0.4) + 1.0, ((i & 3) * 4) + 30);
|
||||
effect->data.iceShard->unk_44 = 0;
|
||||
effect->data.iceShard->unk_48 = (rand_int(10) * 0.2) + 0.1;
|
||||
effect->data.iceShard->unk_3C = 35 * i;
|
||||
effect->data.iceShard->unk_40 = rand_int(10) - 5;
|
||||
effect->data.iceShard->unk_4C = temp_f24;
|
||||
effect->data.iceShard->unk_50 = temp_f26;
|
||||
effect->data.iceShard->unk_54 = 2.0f;
|
||||
effect->data.iceShard->unk_58 = -0.1f;
|
||||
effect->data.iceShard->animFrame = 0;
|
||||
effect->data.iceShard->animRate = (rand_int(10) * 0.2) + 0.1;
|
||||
effect->data.iceShard->rotation = 35 * i;
|
||||
effect->data.iceShard->angularVel = rand_int(10) - 5;
|
||||
effect->data.iceShard->vel.x = temp_f24;
|
||||
effect->data.iceShard->vel.y = temp_f26;
|
||||
effect->data.iceShard->vel.z = 2.0f;
|
||||
effect->data.iceShard->gravAccel = -0.1f;
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -2100,7 +2100,7 @@ EvtScript N(EVS_Goombaria_RunAround) = {
|
||||
EVT_END
|
||||
};
|
||||
|
||||
API_CALLABLE(N(ShrinkItemEntity)) {
|
||||
API_CALLABLE(N(SetInvitationLetterScale)) {
|
||||
get_item_entity(script->varTable[0])->scale = 0.6f;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
@ -2141,8 +2141,8 @@ EvtScript N(EVS_NpcIdle_Eldstar_Epilogue) = {
|
||||
EVT_CALL(SpeakToPlayer, NPC_Goombario, ANIM_WorldGoombario_Talk, ANIM_WorldGoombario_Idle, 5, MSG_Outro_0010)
|
||||
EVT_CALL(SpeakToPlayer, NPC_Parakarry, ANIM_WorldParakarry_Talk, ANIM_WorldParakarry_Idle, 5, MSG_Outro_0011)
|
||||
EVT_THREAD
|
||||
EVT_CALL(DropTinyItemEntity, ITEM_LETTER25, NPC_DISPOSE_LOCATION, ITEM_SPAWN_MODE_DECORATION, 0)
|
||||
EVT_CALL(N(ShrinkItemEntity))
|
||||
EVT_CALL(DropResizableItemEntity, ITEM_LETTER_TO_KOLORADO, NPC_DISPOSE_LOCATION, ITEM_SPAWN_MODE_DECORATION, 0)
|
||||
EVT_CALL(N(SetInvitationLetterScale))
|
||||
EVT_LOOP(20)
|
||||
EVT_CALL(GetNpcPos, NPC_Parakarry, LVar1, LVar2, LVar3)
|
||||
EVT_ADD(LVar1, -12)
|
||||
|
@ -20,7 +20,7 @@ enum {
|
||||
};
|
||||
|
||||
enum {
|
||||
MF_Unk_0A = MapFlag(10),
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
};
|
||||
|
||||
#define NAMESPACE kmr_03
|
||||
|
@ -31,7 +31,7 @@ EvtScript N(EVS_OnShakeTree1) = {
|
||||
EVT_IF_EQ(GF_KMR03_Tree1_Mushroom, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(MF_Unk_0A, TRUE)
|
||||
EVT_IF_EQ(AF_JAN01_TreeDrop_StarPiece, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_WAIT(10)
|
||||
@ -41,7 +41,7 @@ EvtScript N(EVS_OnShakeTree1) = {
|
||||
EVT_ELSE
|
||||
EVT_CALL(MakeItemEntity, ITEM_MUSHROOM, -85, 100, 16, ITEM_SPAWN_MODE_FALL_NEVER_VANISH, GF_KMR03_Tree1_Mushroom)
|
||||
EVT_END_IF
|
||||
EVT_SET(MF_Unk_0A, TRUE)
|
||||
EVT_SET(AF_JAN01_TreeDrop_StarPiece, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
@ -18,7 +18,7 @@ enum {
|
||||
};
|
||||
|
||||
enum {
|
||||
MF_Unk_0A = MapFlag(10),
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
MF_Unk_0B = MapFlag(11),
|
||||
MF_Unk_0C = MapFlag(12),
|
||||
MF_Unk_0D = MapFlag(13),
|
||||
|
@ -141,7 +141,7 @@ FoliageDropList N(Bush1_Drops) = {
|
||||
.pos = { 248, 17, 97 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_TOSS_SPAWN_ONCE,
|
||||
.pickupFlag = GF_KMR04_Bush1_Coin,
|
||||
.spawnFlag = MF_Unk_0A,
|
||||
.spawnFlag = AF_JAN01_TreeDrop_StarPiece,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
@ -23,7 +23,7 @@ enum {
|
||||
};
|
||||
|
||||
enum {
|
||||
MF_Unk_0A = MapFlag(10),
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
};
|
||||
|
||||
#define NAMESPACE kmr_05
|
||||
|
@ -37,7 +37,7 @@ EvtScript N(EVS_OnShakeTree1) = {
|
||||
EVT_IF_EQ(GF_KMR05_Tree1_Coin, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(MF_Unk_0A, TRUE)
|
||||
EVT_IF_EQ(AF_JAN01_TreeDrop_StarPiece, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_WAIT(10)
|
||||
@ -47,7 +47,7 @@ EvtScript N(EVS_OnShakeTree1) = {
|
||||
EVT_ELSE
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, 436, 300, -180, ITEM_SPAWN_MODE_FALL, GF_KMR05_Tree1_Coin)
|
||||
EVT_END_IF
|
||||
EVT_SET(MF_Unk_0A, TRUE)
|
||||
EVT_SET(AF_JAN01_TreeDrop_StarPiece, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
@ -18,7 +18,7 @@ enum {
|
||||
};
|
||||
|
||||
enum {
|
||||
MF_Unk_0A = MapFlag(10),
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -223,8 +223,8 @@ EvtScript N(EVS_OnInspect_StickerSign) = {
|
||||
EVT_CALL(DisablePlayerInput, TRUE)
|
||||
EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_Sign_EatMushroomsTip, 160, 40)
|
||||
EVT_IF_EQ(GF_KMR06_Item_Mushroom, FALSE)
|
||||
EVT_IF_EQ(MF_Unk_0A, FALSE)
|
||||
EVT_SET(MF_Unk_0A, TRUE)
|
||||
EVT_IF_EQ(AF_JAN01_TreeDrop_StarPiece, FALSE)
|
||||
EVT_SET(AF_JAN01_TreeDrop_StarPiece, TRUE)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(2)
|
||||
EVT_SETF(LVar0, EVT_FLOAT(0.0))
|
||||
|
@ -27,7 +27,7 @@ enum {
|
||||
};
|
||||
|
||||
enum {
|
||||
MF_Unk_0A = MapFlag(10),
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
MF_Unk_0B = MapFlag(11),
|
||||
};
|
||||
|
||||
|
@ -7,9 +7,9 @@ API_CALLABLE(N(func_80240010_907A40)) {
|
||||
}
|
||||
|
||||
EvtScript N(D_80241190_908BC0) = {
|
||||
EVT_SET(MF_Unk_0A, FALSE)
|
||||
EVT_SET(AF_JAN01_TreeDrop_StarPiece, FALSE)
|
||||
EVT_LOOP(0)
|
||||
EVT_IF_NE(MF_Unk_0A, FALSE)
|
||||
EVT_IF_NE(AF_JAN01_TreeDrop_StarPiece, FALSE)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
|
@ -511,7 +511,7 @@ EvtScript N(EVS_Scene_EndOfChapter) = {
|
||||
EVT_CALL(ShowMessageAtScreenPos, LVar1, 160, 40)
|
||||
EVT_CALL(N(ShowMessagesBehindCurtains))
|
||||
EVT_WAIT(15)
|
||||
EVT_SET(MF_Unk_0A, TRUE)
|
||||
EVT_SET(AF_JAN01_TreeDrop_StarPiece, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
@ -7,14 +7,14 @@
|
||||
#include "world/common/complete/LetterDelivery.inc.c"
|
||||
|
||||
s32 N(LetterList)[] = {
|
||||
ITEM_LETTER25,
|
||||
ITEM_LETTER_TO_KOLORADO,
|
||||
ITEM_NONE
|
||||
};
|
||||
|
||||
EVT_LETTER_PROMPT(Kolorado, NPC_Kolorado,
|
||||
ANIM_Kolorado_Talk, ANIM_Kolorado_Idle,
|
||||
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
||||
ITEM_LETTER25, N(LetterList));
|
||||
ITEM_LETTER_TO_KOLORADO, N(LetterList));
|
||||
|
||||
EVT_LETTER_REWARD(Kolorado);
|
||||
|
||||
|
@ -15,13 +15,13 @@ NpcSettings N(NpcSettings_ZiplineDummy) = {
|
||||
#include "world/common/complete/LetterDelivery.inc.c"
|
||||
|
||||
s32 N(LetterList)[] = {
|
||||
ITEM_LETTER25,
|
||||
ITEM_LETTER_TO_KOLORADO,
|
||||
ITEM_NONE
|
||||
};
|
||||
|
||||
EVT_LETTER_PROMPT(Kolorado, NPC_Kolorado, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle,
|
||||
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
||||
ITEM_LETTER25, N(LetterList));
|
||||
ITEM_LETTER_TO_KOLORADO, N(LetterList));
|
||||
|
||||
EVT_LETTER_REWARD(Kolorado);
|
||||
|
||||
|
@ -14,13 +14,13 @@ NpcSettings N(NpcSettings_Zipline) = {
|
||||
#include "world/common/complete/LetterDelivery.inc.c"
|
||||
|
||||
s32 N(LetterList)[] = {
|
||||
ITEM_LETTER25,
|
||||
ITEM_LETTER_TO_KOLORADO,
|
||||
ITEM_NONE
|
||||
};
|
||||
|
||||
EVT_LETTER_PROMPT(Kolorado, NPC_Kolorado, ANIM_Kolorado_Fallen, ANIM_Kolorado_Fallen,
|
||||
MSG_CH5_00E8, MSG_CH5_00E9, MSG_CH5_00EA, MSG_CH5_00EB,
|
||||
ITEM_LETTER25, N(LetterList));
|
||||
ITEM_LETTER_TO_KOLORADO, N(LetterList));
|
||||
|
||||
EVT_LETTER_REWARD(Kolorado);
|
||||
|
||||
|
@ -8,19 +8,19 @@
|
||||
#include "world/common/complete/LetterDelivery.inc.c"
|
||||
|
||||
s32 N(LetterList)[] = {
|
||||
ITEM_LETTER25,
|
||||
ITEM_LETTER_TO_KOLORADO,
|
||||
ITEM_NONE
|
||||
};
|
||||
|
||||
EVT_LETTER_PROMPT(Kolorado1, NPC_Kolorado,
|
||||
ANIM_Kolorado_Talk, ANIM_Kolorado_Idle,
|
||||
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
||||
ITEM_LETTER25, N(LetterList));
|
||||
ITEM_LETTER_TO_KOLORADO, N(LetterList));
|
||||
|
||||
EVT_LETTER_PROMPT(Kolorado2, NPC_Kolorado,
|
||||
ANIM_Kolorado_Talk, ANIM_Kolorado_Idle,
|
||||
MSG_CH5_00E8, MSG_CH5_00E9, MSG_CH5_00EA, MSG_CH5_00EB,
|
||||
ITEM_LETTER25, N(LetterList));
|
||||
ITEM_LETTER_TO_KOLORADO, N(LetterList));
|
||||
|
||||
EVT_LETTER_REWARD(Kolorado);
|
||||
|
||||
|
@ -16,13 +16,13 @@
|
||||
#include "world/common/complete/LetterDelivery.inc.c"
|
||||
|
||||
s32 N(LetterList)[] = {
|
||||
ITEM_LETTER25,
|
||||
ITEM_LETTER_TO_KOLORADO,
|
||||
ITEM_NONE
|
||||
};
|
||||
|
||||
EVT_LETTER_PROMPT(Kolorado, NPC_Kolorado, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle,
|
||||
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
||||
ITEM_LETTER25, N(LetterList));
|
||||
ITEM_LETTER_TO_KOLORADO, N(LetterList));
|
||||
|
||||
EVT_LETTER_REWARD(Kolorado);
|
||||
|
||||
|
@ -21,13 +21,13 @@ enum {
|
||||
#include "world/common/complete/LetterDelivery.inc.c"
|
||||
|
||||
s32 N(LetterList)[] = {
|
||||
ITEM_LETTER25,
|
||||
ITEM_LETTER_TO_KOLORADO,
|
||||
ITEM_NONE
|
||||
};
|
||||
|
||||
EVT_LETTER_PROMPT(Kolorado, NPC_Kolorado, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle,
|
||||
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
||||
ITEM_LETTER25, N(LetterList));
|
||||
ITEM_LETTER_TO_KOLORADO, N(LetterList));
|
||||
|
||||
EVT_LETTER_REWARD(Kolorado);
|
||||
|
||||
|
@ -37,13 +37,13 @@ ShopItemData N(Inventory)[] = {
|
||||
};
|
||||
|
||||
ShopSellPriceData N(PriceList)[] = {
|
||||
{ .itemID = ITEM_DRIED_SHROOM, .sellPrice = 3 },
|
||||
{ .itemID = ITEM_DRIED_PASTA, .sellPrice = 5 },
|
||||
{ .itemID = ITEM_DUSTY_HAMMER, .sellPrice = 3 },
|
||||
{ .itemID = ITEM_DRIED_SHROOM, .sellPrice = 3 },
|
||||
{ .itemID = ITEM_DRIED_PASTA, .sellPrice = 5 },
|
||||
{ .itemID = ITEM_DUSTY_HAMMER, .sellPrice = 3 },
|
||||
{ .itemID = ITEM_WHACKAS_BUMP, .sellPrice = 64 },
|
||||
{ .itemID = ITEM_DRIED_FRUIT, .sellPrice = 20 },
|
||||
{ .itemID = ITEM_LIME, .sellPrice = 4 },
|
||||
{ .itemID = ITEM_LEMON, .sellPrice = 4 },
|
||||
{ .itemID = ITEM_LIME, .sellPrice = 4 },
|
||||
{ .itemID = ITEM_LEMON, .sellPrice = 4 },
|
||||
{}
|
||||
};
|
||||
|
||||
|
@ -93,14 +93,14 @@ EvtScript N(EVS_LetterReward_MinhT) = {
|
||||
};
|
||||
|
||||
s32 N(LetterList_Kolorado)[] = {
|
||||
ITEM_LETTER25,
|
||||
ITEM_LETTER_TO_KOLORADO,
|
||||
ITEM_NONE
|
||||
};
|
||||
|
||||
EvtScript N(EVS_LetterPrompt_Kolorado) = {
|
||||
EVT_CALL(N(LetterDelivery_Init),
|
||||
NPC_Kolorado, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle,
|
||||
ITEM_LETTER25, ITEM_NONE,
|
||||
ITEM_LETTER_TO_KOLORADO, ITEM_NONE,
|
||||
MSG_MAC_Plaza_00E0, MSG_MAC_Plaza_00E1, MSG_MAC_Plaza_00E2, MSG_MAC_Plaza_00E3,
|
||||
EVT_PTR(N(LetterList_Kolorado)))
|
||||
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
|
||||
|
@ -12,25 +12,25 @@ typedef struct PostOfficeEntry {
|
||||
MSG_Document_Letter_##name##_Body
|
||||
|
||||
PostOfficeEntry N(PostOfficeLetters)[] = {
|
||||
{ PARTNER_GOOMBARIO, ITEM_LETTER25, LETTER_MESSAGES(Goombario2) },
|
||||
{ PARTNER_GOOMBARIO, ITEM_LETTER25, LETTER_MESSAGES(Goombario1) },
|
||||
{ PARTNER_GOOMBARIO, ITEM_LETTER25, LETTER_MESSAGES(Goombario3) },
|
||||
{ PARTNER_KOOPER, ITEM_LETTER25, LETTER_MESSAGES(Kooper3) },
|
||||
{ PARTNER_KOOPER, ITEM_LETTER25, LETTER_MESSAGES(Kooper2) },
|
||||
{ PARTNER_KOOPER, ITEM_LETTER25, LETTER_MESSAGES(Kooper1) },
|
||||
{ PARTNER_BOMBETTE, ITEM_LETTER25, LETTER_MESSAGES(Bombette2) },
|
||||
{ PARTNER_BOMBETTE, ITEM_LETTER25, LETTER_MESSAGES(Bombette3) },
|
||||
{ PARTNER_BOMBETTE, ITEM_LETTER25, LETTER_MESSAGES(Bombette1) },
|
||||
{ PARTNER_PARAKARRY, ITEM_LETTER25, LETTER_MESSAGES(Parakarry1) },
|
||||
{ PARTNER_PARAKARRY, ITEM_LETTER25, LETTER_MESSAGES(Parakarry2) },
|
||||
{ PARTNER_BOW, ITEM_LETTER25, LETTER_MESSAGES(Bow1) },
|
||||
{ PARTNER_BOW, ITEM_LETTER25, LETTER_MESSAGES(Bow2) },
|
||||
{ PARTNER_WATT, ITEM_LETTER25, LETTER_MESSAGES(Watt1) },
|
||||
{ PARTNER_WATT, ITEM_LETTER25, LETTER_MESSAGES(Watt2) },
|
||||
{ PARTNER_SUSHIE, ITEM_LETTER25, LETTER_MESSAGES(Sushie2) },
|
||||
{ PARTNER_SUSHIE, ITEM_LETTER25, LETTER_MESSAGES(Sushie1) },
|
||||
{ PARTNER_LAKILESTER, ITEM_LETTER25, LETTER_MESSAGES(Lakilester2) },
|
||||
{ PARTNER_LAKILESTER, ITEM_LETTER25, LETTER_MESSAGES(Lakilester1) },
|
||||
{ PARTNER_GOOMBARIO, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Goombario2) },
|
||||
{ PARTNER_GOOMBARIO, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Goombario1) },
|
||||
{ PARTNER_GOOMBARIO, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Goombario3) },
|
||||
{ PARTNER_KOOPER, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Kooper3) },
|
||||
{ PARTNER_KOOPER, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Kooper2) },
|
||||
{ PARTNER_KOOPER, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Kooper1) },
|
||||
{ PARTNER_BOMBETTE, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Bombette2) },
|
||||
{ PARTNER_BOMBETTE, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Bombette3) },
|
||||
{ PARTNER_BOMBETTE, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Bombette1) },
|
||||
{ PARTNER_PARAKARRY, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Parakarry1) },
|
||||
{ PARTNER_PARAKARRY, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Parakarry2) },
|
||||
{ PARTNER_BOW, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Bow1) },
|
||||
{ PARTNER_BOW, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Bow2) },
|
||||
{ PARTNER_WATT, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Watt1) },
|
||||
{ PARTNER_WATT, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Watt2) },
|
||||
{ PARTNER_SUSHIE, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Sushie2) },
|
||||
{ PARTNER_SUSHIE, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Sushie1) },
|
||||
{ PARTNER_LAKILESTER, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Lakilester2) },
|
||||
{ PARTNER_LAKILESTER, ITEM_LETTER_TO_KOLORADO, LETTER_MESSAGES(Lakilester1) },
|
||||
};
|
||||
|
||||
API_CALLABLE(N(func_80244E90_805710)) {
|
||||
|
@ -69,21 +69,21 @@ EvtScript N(EVS_LetterPrompt_ToadKid1A) = {
|
||||
EvtScript N(EVS_LetterReward_ToadKid1A) = {
|
||||
EVT_IF_EQ(LVarC, DELIVERY_ACCEPTED)
|
||||
EVT_CALL(SpeakToPlayer, NPC_ToadKid_02, ANIM_ToadKid_Yellow_Talk, ANIM_ToadKid_Yellow_Idle, 0, MSG_MAC_Station_004D)
|
||||
EVT_GIVE_KEY_REWARD(ITEM_LETTER21)
|
||||
EVT_GIVE_KEY_REWARD(ITEM_LETTER_TO_RED_YOSHI_KID)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(LetterList_B)[] = {
|
||||
ITEM_LETTER22,
|
||||
ITEM_LETTER_TO_DANE_T,
|
||||
ITEM_NONE
|
||||
};
|
||||
|
||||
EvtScript N(EVS_LetterPrompt_ToadKid1B) = {
|
||||
EVT_CALL(N(LetterDelivery_Init), NPC_ToadKid_01,
|
||||
ANIM_ToadKid_Red_Talk, ANIM_ToadKid_Red_Idle,
|
||||
ITEM_LETTER22, ITEM_NONE,
|
||||
ITEM_LETTER_TO_DANE_T, ITEM_NONE,
|
||||
MSG_MAC_Station_004E, MSG_MAC_Station_004F,
|
||||
MSG_MAC_Station_0050, MSG_MAC_Station_0051,
|
||||
EVT_PTR(N(LetterList_B)))
|
||||
@ -95,11 +95,11 @@ EvtScript N(EVS_LetterPrompt_ToadKid1B) = {
|
||||
EvtScript N(EVS_LetterReward_ToadKid1B) = {
|
||||
EVT_IF_EQ(LVarC, DELIVERY_ACCEPTED)
|
||||
EVT_CALL(SpeakToPlayer, NPC_ToadKid_02, ANIM_ToadKid_Yellow_Talk, ANIM_ToadKid_Yellow_Idle, 0, MSG_MAC_Station_0052)
|
||||
// EVT_GIVE_KEY_REWARD(ITEM_LETTER_TO_FROSTT), but LVar1/LVar0 are set in wrong order
|
||||
// EVT_GIVE_KEY_REWARD(ITEM_LETTER_TO_FROST_T), but LVar1/LVar0 are set in wrong order
|
||||
EVT_SET(LVar1, 1)
|
||||
EVT_SET(LVar0, ITEM_LETTER_TO_FROSTT)
|
||||
EVT_SET(LVar0, ITEM_LETTER_TO_FROST_T)
|
||||
EVT_EXEC_WAIT(N(GiveKeyReward))
|
||||
EVT_CALL(AddKeyItem, ITEM_LETTER_TO_FROSTT)
|
||||
EVT_CALL(AddKeyItem, ITEM_LETTER_TO_FROST_T)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
|
@ -46,7 +46,7 @@ enum {
|
||||
|
||||
enum {
|
||||
MF_Unk_01 = MapFlag(1),
|
||||
MF_Unk_0A = MapFlag(10),
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
};
|
||||
|
||||
#define NAMESPACE mac_05
|
||||
|
@ -50,13 +50,13 @@ EvtScript N(EVS_LetterPrompt_Fishmael) = {
|
||||
};
|
||||
|
||||
s32 N(Kolorado_LetterList)[] = {
|
||||
ITEM_LETTER25, ITEM_NONE
|
||||
ITEM_LETTER_TO_KOLORADO, ITEM_NONE
|
||||
};
|
||||
|
||||
EvtScript N(EVS_LetterPrompt_Kolorado) = {
|
||||
EVT_CALL(N(LetterDelivery_Init), NPC_Kolorado,
|
||||
ANIM_Kolorado_Talk, ANIM_Kolorado_Idle,
|
||||
ITEM_LETTER25, ITEM_NONE,
|
||||
ITEM_LETTER_TO_KOLORADO, ITEM_NONE,
|
||||
MSG_MAC_Port_0085, MSG_MAC_Port_0086,
|
||||
MSG_MAC_Port_0087, MSG_MAC_Port_0088,
|
||||
EVT_PTR(N(Kolorado_LetterList)))
|
||||
@ -1918,7 +1918,7 @@ API_CALLABLE(N(func_8024335C_8554CC)) {
|
||||
}
|
||||
|
||||
EvtScript N(D_8024E23C_8603AC) = {
|
||||
EVT_SET(MF_Unk_0A, TRUE)
|
||||
EVT_SET(AF_JAN01_TreeDrop_StarPiece, TRUE)
|
||||
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_400000 | ENEMY_FLAG_8000000, 1)
|
||||
EVT_CALL(InterpNpcYaw, NPC_Chanterelle, 270, 0)
|
||||
EVT_CALL(SetMusicTrack, 0, SONG_POP_DIVA_SONG, 1, 8)
|
||||
@ -1931,10 +1931,10 @@ EvtScript N(D_8024E23C_8603AC) = {
|
||||
EVT_CHILD_THREAD
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(N(func_8024335C_8554CC))
|
||||
EVT_SET(MF_Unk_0A, FALSE)
|
||||
EVT_SET(AF_JAN01_TreeDrop_StarPiece, FALSE)
|
||||
EVT_END_CHILD_THREAD
|
||||
EVT_LOOP(0)
|
||||
EVT_IF_EQ(MF_Unk_0A, FALSE)
|
||||
EVT_IF_EQ(AF_JAN01_TreeDrop_StarPiece, FALSE)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
|
@ -48,7 +48,7 @@ EvtScript N(D_802525B0_864720) = {
|
||||
EVT_CALL(EnableModel, MODEL_o139, FALSE)
|
||||
EVT_CALL(EnableModel, MODEL_o140, FALSE)
|
||||
EVT_CASE_EQ(3)
|
||||
EVT_SET(MF_Unk_0A, FALSE)
|
||||
EVT_SET(AF_JAN01_TreeDrop_StarPiece, FALSE)
|
||||
EVT_CALL(EnableGroup, MODEL_bar_inn, FALSE)
|
||||
EVT_CALL(EnableModel, MODEL_o139, TRUE)
|
||||
EVT_CALL(EnableModel, MODEL_o140, TRUE)
|
||||
|
@ -1012,13 +1012,7 @@ NpcSettings N(NpcSettings_Luigi) = {
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
NpcSettings N(NpcSettings_Fuzzy) = {
|
||||
.height = 20,
|
||||
.radius = 22,
|
||||
.level = 6,
|
||||
.onHit = &EnemyNpcHit,
|
||||
.onDefeat = &EnemyNpcDefeat,
|
||||
};
|
||||
#include "world/common/enemy/complete/Fuzzy.inc.c"
|
||||
|
||||
NpcSettings N(NpcSettings_Bobomb) = {
|
||||
.height = 23,
|
||||
|
@ -7,7 +7,7 @@ EvtScript N(EVS_Unused_DoNothing) = {
|
||||
|
||||
#include "world/common/npc/Oaklie.inc.c"
|
||||
|
||||
#include "world/common/enemy/complete/ForestFuzzy.inc.c"
|
||||
#include "world/common/enemy/complete/ForestFuzzy_Wander.inc.c"
|
||||
|
||||
s32 N(KeyList)[] = {
|
||||
ITEM_FOREST_PASS,
|
||||
@ -170,7 +170,7 @@ StaticNpc N(NpcData_Oaklie) = {
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy_01) = {
|
||||
.id = NPC_Fuzzy_01,
|
||||
.settings = &N(NpcSettings_ForestFuzzy),
|
||||
.settings = &N(NpcSettings_ForestFuzzy_Wander),
|
||||
.pos = { 300.0f, 0.0f, 130.0f },
|
||||
.yaw = 0,
|
||||
.flags = 0,
|
||||
@ -193,7 +193,7 @@ StaticNpc N(NpcData_Fuzzy_01) = {
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy_02) = {
|
||||
.id = NPC_Fuzzy_02,
|
||||
.settings = &N(NpcSettings_ForestFuzzy),
|
||||
.settings = &N(NpcSettings_ForestFuzzy_Wander),
|
||||
.pos = { -100.0f, 0.0f, -320.0f },
|
||||
.yaw = 0,
|
||||
.flags = 0,
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "mim_04.h"
|
||||
|
||||
#include "world/common/enemy/complete/ForestFuzzy.inc.c"
|
||||
#include "world/common/enemy/complete/ForestFuzzy_Wander.inc.c"
|
||||
|
||||
#include "world/common/npc/Bubulb.inc.c"
|
||||
|
||||
@ -56,7 +56,7 @@ EvtScript N(EVS_NpcInit_Bubulb) = {
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy) = {
|
||||
.id = NPC_Fuzzy,
|
||||
.settings = &N(NpcSettings_ForestFuzzy),
|
||||
.settings = &N(NpcSettings_ForestFuzzy_Wander),
|
||||
.pos = { 240.0f, 0.0f, -240.0f },
|
||||
.yaw = 0,
|
||||
.flags = ENEMY_FLAG_400 | ENEMY_FLAG_400000,
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "mim_06.h"
|
||||
|
||||
#include "world/common/enemy/complete/PiranhaPlant.inc.c"
|
||||
#include "world/common/enemy/complete/ForestFuzzy.inc.c"
|
||||
#include "world/common/enemy/complete/ForestFuzzy_Wander.inc.c"
|
||||
|
||||
StaticNpc N(NpcData_PiranhaPlant_01)[] = {
|
||||
{
|
||||
@ -57,7 +57,7 @@ StaticNpc N(NpcData_PiranhaPlant_02)[] = {
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy) = {
|
||||
.id = NPC_Fuzzy,
|
||||
.settings = &N(NpcSettings_ForestFuzzy),
|
||||
.settings = &N(NpcSettings_ForestFuzzy_Wander),
|
||||
.pos = { -140.0f, 0.0f, 300.0f },
|
||||
.yaw = 0,
|
||||
.flags = ENEMY_FLAG_400,
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "mim_07.h"
|
||||
|
||||
#include "world/common/enemy/complete/ForestFuzzy.inc.c"
|
||||
#include "world/common/enemy/complete/ForestFuzzy_Wander.inc.c"
|
||||
|
||||
NpcSettings N(NpcSettings_JrTroopa) = {
|
||||
.height = 32,
|
||||
@ -184,7 +184,7 @@ EvtScript N(EVS_NpcInit_Fuzzy) = {
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy_01) = {
|
||||
.id = NPC_Fuzzy_01,
|
||||
.settings = &N(NpcSettings_ForestFuzzy),
|
||||
.settings = &N(NpcSettings_ForestFuzzy_Wander),
|
||||
.pos = { -240.0f, 0.0f, -240.0f },
|
||||
.yaw = 0,
|
||||
.flags = 0,
|
||||
@ -208,7 +208,7 @@ StaticNpc N(NpcData_Fuzzy_01) = {
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy_02) = {
|
||||
.id = NPC_Fuzzy_02,
|
||||
.settings = &N(NpcSettings_ForestFuzzy),
|
||||
.settings = &N(NpcSettings_ForestFuzzy_Wander),
|
||||
.pos = { 270.0f, 0.0f, 200.0f },
|
||||
.yaw = 0,
|
||||
.flags = 0,
|
||||
|
@ -1,11 +1,11 @@
|
||||
#include "mim_09.h"
|
||||
|
||||
#include "world/common/npc/Oaklie.inc.c"
|
||||
#include "world/common/enemy/complete/ForestFuzzy.inc.c"
|
||||
#include "world/common/enemy/complete/ForestFuzzy_Wander.inc.c"
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy) = {
|
||||
.id = NPC_Fuzzy,
|
||||
.settings = &N(NpcSettings_ForestFuzzy),
|
||||
.settings = &N(NpcSettings_ForestFuzzy_Wander),
|
||||
.pos = { 270.0f, 0.0f, 200.0f },
|
||||
.yaw = 0,
|
||||
.flags = ENEMY_FLAG_400,
|
||||
|
@ -22,7 +22,7 @@ enum {
|
||||
};
|
||||
|
||||
enum {
|
||||
MF_Unk_0A = MapFlag(10),
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
};
|
||||
|
||||
#define NAMESPACE mim_11
|
||||
|
@ -11,7 +11,7 @@ FoliageDropList N(Bush1_Drops) = {
|
||||
.itemID = ITEM_STRANGE_LEAF,
|
||||
.pos = { 357, 16, 315 },
|
||||
.spawnMode = ITEM_SPAWN_MODE_TOSS_NEVER_VANISH,
|
||||
.spawnFlag = MF_Unk_0A,
|
||||
.spawnFlag = AF_JAN01_TreeDrop_StarPiece,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
@ -1,10 +1,10 @@
|
||||
#include "nok_13.h"
|
||||
|
||||
#include "world/common/enemy/complete/Fuzzy.inc.c"
|
||||
#include "world/common/enemy/complete/Fuzzy_Wander.inc.c"
|
||||
|
||||
StaticNpc N(NpcData_Fuzzy) = {
|
||||
.id = NPC_UnusedFuzzy,
|
||||
.settings = &N(NpcSettings_Fuzzy),
|
||||
.settings = &N(NpcSettings_Fuzzy_Wander),
|
||||
.pos = { 175.0f, 0.0f, -270.0f },
|
||||
.yaw = 180,
|
||||
.drops = FUZZY_DROPS,
|
||||
|
@ -26,7 +26,7 @@ EvtScript N(EVS_Scene_Epilogue) = {
|
||||
EVT_CALL(SetNpcAnimation, NPC_Bootler, ANIM_Bootler_Idle)
|
||||
EVT_WAIT(15)
|
||||
EVT_THREAD
|
||||
EVT_CALL(DropTinyItemEntity, ITEM_LETTER25, NPC_DISPOSE_LOCATION, ITEM_SPAWN_MODE_DECORATION, 0)
|
||||
EVT_CALL(DropResizableItemEntity, ITEM_LETTER_TO_KOLORADO, NPC_DISPOSE_LOCATION, ITEM_SPAWN_MODE_DECORATION, 0)
|
||||
EVT_CALL(N(SetInvitationLetterScale))
|
||||
EVT_LOOP(35)
|
||||
EVT_CALL(GetNpcPos, NPC_Bootler, LVar1, LVar2, LVar3)
|
||||
|
@ -168,7 +168,7 @@ EvtScript N(EVS_PressSwitch_Right) = {
|
||||
|
||||
EvtScript N(EVS_SetupSwitches) = {
|
||||
EVT_SET(MF_EitherSwitchPressed, FALSE)
|
||||
EVT_SET(MF_Unk_0A, FALSE)
|
||||
EVT_SET(AF_JAN01_TreeDrop_StarPiece, FALSE)
|
||||
EVT_EXEC(N(EVS_UpdateDirectionArrow))
|
||||
EVT_CALL(ParentColliderToModel, COLLIDER_o920, MODEL_y_b1)
|
||||
EVT_CALL(ParentColliderToModel, COLLIDER_o921, MODEL_y_b2)
|
||||
|
@ -38,7 +38,7 @@ enum {
|
||||
enum {
|
||||
MF_TrainUnk_00 = MapFlag(0),
|
||||
MF_EitherSwitchPressed = MapFlag(1),
|
||||
MF_Unk_0A = MapFlag(10),
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
};
|
||||
|
||||
#define NAMESPACE omo_03
|
||||
|
@ -218,7 +218,7 @@ NpcGroupList N(DefaultNPCs) = {
|
||||
|
||||
NpcGroupList N(EpilogueNPCs) = {
|
||||
//@bug? only loads the first NPC from the group, cannot use macro here
|
||||
{ .npcCount = 1, .npcs = &N(NpcData_TrainToads)[0], .battle = 0, .stage = 0 },
|
||||
{ .npcCount = 1, .npcs = &N(NpcData_TrainToads)[0] },
|
||||
NPC_GROUP(N(NpcData_Epilogue)),
|
||||
{}
|
||||
};
|
||||
|
@ -29,7 +29,7 @@ enum {
|
||||
enum {
|
||||
MF_TrainUnk_00 = MapFlag(0),
|
||||
MF_EitherSwitchPressed = MapFlag(1),
|
||||
MF_Unk_0A = MapFlag(10),
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
};
|
||||
|
||||
#define NAMESPACE omo_06
|
||||
|
@ -36,7 +36,7 @@ enum {
|
||||
enum {
|
||||
MF_TrainUnk_00 = MapFlag(0),
|
||||
MF_EitherSwitchPressed = MapFlag(1),
|
||||
MF_Unk_0A = MapFlag(10),
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
};
|
||||
|
||||
#define NAMESPACE omo_08
|
||||
|
@ -29,7 +29,7 @@ enum {
|
||||
enum {
|
||||
MF_TrainUnk_00 = MapFlag(0),
|
||||
MF_EitherSwitchPressed = MapFlag(1),
|
||||
MF_Unk_0A = MapFlag(10),
|
||||
AF_JAN01_TreeDrop_StarPiece = MapFlag(10),
|
||||
};
|
||||
|
||||
#define NAMESPACE omo_10
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user