#define OBJECT_FIELDS_INDEX_DIRECTLY #include "sm64.h" #include "object_constants.h" #include "game/object_list_processor.h" #include "game/interaction.h" #include "game/behavior_actions.h" #include "game/mario_actions_cutscene.h" #include "game/mario_misc.h" #include "game/object_helpers.h" #include "game/object_helpers2.h" #include "game/debug.h" #include "menu/file_select.h" #include "engine/surface_load.h" #include "actors/common0.h" #include "actors/common1.h" #include "actors/group1.h" #include "actors/group2.h" #include "actors/group3.h" #include "actors/group4.h" #include "actors/group5.h" #include "actors/group6.h" #include "actors/group7.h" #include "actors/group8.h" #include "actors/group9.h" #include "actors/group10.h" #include "actors/group11.h" #include "actors/group12.h" #include "actors/group13.h" #include "actors/group14.h" #include "actors/group15.h" #include "actors/group16.h" #include "actors/group17.h" #include "levels/bbh/header.h" #include "levels/castle_inside/header.h" #include "levels/hmc/header.h" #include "levels/ssl/header.h" #include "levels/bob/header.h" #include "levels/sl/header.h" #include "levels/wdw/header.h" #include "levels/jrb/header.h" #include "levels/thi/header.h" #include "levels/ttc/header.h" #include "levels/rr/header.h" #include "levels/castle_grounds/header.h" #include "levels/bitdw/header.h" #include "levels/lll/header.h" #include "levels/sa/header.h" #include "levels/bitfs/header.h" #include "levels/ddd/header.h" #include "levels/wf/header.h" #include "levels/bowser_2/header.h" #include "levels/ttm/header.h" #include "make_const_nonconst.h" #include "behavior_data.h" #define BC_B(a) _SHIFTL(a, 24, 8) #define BC_BB(a, b) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8)) #define BC_BBBB(a, b, c, d) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 8, 8) | _SHIFTL(d, 0, 8)) #define BC_BBH(a, b, c) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 0, 16)) #define BC_B0H(a, b) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 0, 16)) #define BC_H(a) _SHIFTL(a, 16, 16) #define BC_HH(a, b) (_SHIFTL(a, 16, 16) | _SHIFTL(b, 0, 16)) #define BC_W(a) ((uintptr_t)(u32)(a)) #define BC_PTR(a) ((uintptr_t)(a)) // TODO: Go through these and rename a bunch of them, some of these names are really bad. #define BEGIN(arg1) \ BC_BB(0x00, arg1) #define DELAY(frames) \ BC_B0H(0x01, frames) #define CALL(addr) \ BC_B(0x02), \ BC_PTR(addr) #define RETURN() \ BC_B(0x03) #define GOTO(addr) \ BC_B(0x04), \ BC_PTR(addr) #define BEGIN_REPEAT(times) \ BC_B0H(0x05, times) #define END_REPEAT() \ BC_B(0x06) #define END_REPEAT_NOBREAK() \ BC_B(0x07) #define BEGIN_LOOP() \ BC_B(0x08) #define END_LOOP() \ BC_B(0x09) #define BREAK() \ BC_B(0x0A) #define CALLNATIVE(addr) \ BC_B(0x0C), \ BC_PTR(addr) #define OBJ_ADD_FLOAT(field, value) \ BC_BBH(0x0D, field, value) #define OBJ_SET_FLOAT(field, value) \ BC_BBH(0x0E, field, value) #define OBJ_ADD_INT(field, value) \ BC_BBH(0x0F, field, value) #define OBJ_SET_INT(field, value) \ BC_BBH(0x10, field, value) #define OBJ_OR_INT(field, value) \ BC_BBH(0x11, field, value) #define OBJ_BIT_CLEAR_INT(field, value) \ BC_BBH(0x12, field, value) #define OBJ_SET_INT_RAND_RSHIFT(field, min, rshift) \ BC_BBH(0x13, field, min), \ BC_H(rshift) #define OBJ_SET_FLOAT_RAND(field, min, max) \ BC_BBH(0x14, field, min), \ BC_H(max) #define OBJ_SET_INT_RAND(field, min, max) \ BC_BBH(0x15, field, min), \ BC_H(max) #define OBJ_ADD_FLOAT_RAND(field, min, max) \ BC_BBH(0x16, field, min), \ BC_H(max) #define OBJ_ADD_INT_RAND_RSHIFT(field, min, rshift) \ BC_BBH(0x17, field, min), \ BC_H(rshift) #define GEO_LAYOUT(model_id) \ BC_B0H(0x1B, model_id) #define OBJ_CHILD(model_id, beh) \ BC_B(0x1C), \ BC_W(model_id), \ BC_PTR(beh) #define DEACTIVATE() \ BC_B(0x1D) #define DROP_FLOOR() \ BC_B(0x1E) #define OBJ_SUM_FLOAT(fieldDest, fieldSrc1, fieldSrc2) \ BC_BBBB(0x1F, fieldDest, fieldSrc1, fieldSrc2) #define OBJ_SUM_INT(fieldDest, fieldSrc1, fieldSrc2) \ BC_BBBB(0x20, fieldDest, fieldSrc1, fieldSrc2) #define BILLBOARD() \ BC_B(0x21) #define UNHIDE() \ BC_B(0x22) #define SET_HITBOX(radius, height) \ BC_B(0x23), \ BC_HH(radius, height) #define DELAY_VAR(field) \ BC_BB(0x25, field) #define OBJ_SET_ANIMS(field, value) \ BC_BB(0x27, field), \ BC_PTR(value) #define ANIMATE(animIndex) \ BC_BB(0x28, animIndex) #define OBJ_CHILD_PARAM(behParam, model_id, beh) \ BC_B0H(0x29, behParam), \ BC_W(model_id), \ BC_PTR(beh) #define COLLISION_DATA(addr) \ BC_B(0x2A), \ BC_PTR(addr) #define COLLISION_SPHERE(radius, height, arg3) \ BC_B(0x2B), \ BC_HH(radius, height), \ BC_H(arg3) #define OBJ_SPAWN(model_id, beh) \ BC_B(0x2C), \ BC_W(model_id), \ BC_PTR(beh) #define OBJ_SET_POS() \ BC_B(0x2D) #define OBJ_SET_FLOAT2(arg1, arg2) \ BC_B(0x2E), \ BC_HH(arg1, arg2) #define INTERACT_TYPE(type) \ BC_B(0x2F), \ BC_PTR(type) #define OBJ_PHYSICS(wallHitboxRadius, gravity, bounciness, drag, friction, buoyancy, unused1, unused2) \ BC_B(0x30), \ BC_HH(wallHitboxRadius, gravity), \ BC_HH(bounciness, drag), \ BC_HH(friction, buoyancy), \ BC_HH(unused1, unused2) #define SCALE(percent) \ BC_B0H(0x32, percent) #define OBJ_BIT_CLEAR_INT32(field, value) \ BC_BB(0x33, field), \ BC_W(value) #define TEXT_ANIM_RATE(field, arg2) \ BC_BBH(0x34, field, arg2) #define GRAPH_CLEAR() \ BC_B(0x35) #define SPAWN_ADDR(arg1) \ BC_B(0x37), \ BC_PTR(arg1) // 0000 const BehaviorScript bhvStarDoor[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_SET_INT(oInteractType, INTERACT_DOOR), COLLISION_DATA(inside_castle_seg7_collision_star_door), OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_STAR_DOOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), SET_HITBOX(80, 100), OBJ_SET_POS(), OBJ_SET_FLOAT(oDrawingDistance, 20000), CALLNATIVE(bhv_door_init), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_star_door_loop), CALLNATIVE(bhv_star_door_loop_2), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0054 const BehaviorScript bhvMrI[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_CHILD(MODEL_MR_I_IRIS, bhvMrIBody), GEO_LAYOUT(MODEL_MR_I), BILLBOARD(), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_mr_i_loop), END_LOOP(), }; // 008C const BehaviorScript bhvMrIBody[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_mr_i_body_loop), END_LOOP(), }; // 00AC const BehaviorScript bhvMrIParticle[] = { BEGIN(OBJ_LIST_LEVEL), BILLBOARD(), OBJ_OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_INT(oIntangibleTimer, 0), SET_HITBOX(50, 50), OBJ_SET_INT(oDamageOrCoinValue, 1), OBJ_SET_INT(oInteractType, INTERACT_DAMAGE), OBJ_PHYSICS(0x001E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_mr_i_particle_loop), END_LOOP(), }; // 00F8 const BehaviorScript bhvPurpleParticle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_REPEAT(10), CALLNATIVE(bhv_piranha_particle_loop), END_REPEAT(), DEACTIVATE(), }; // 0118 const BehaviorScript bhvGiantPole[] = { BEGIN(OBJ_LIST_POLELIKE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oInteractType, INTERACT_POLE), SET_HITBOX(0x0050, 0x0834), OBJ_SET_POS(), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_giant_pole_loop), END_LOOP(), }; // 0144 const BehaviorScript bhvPoleGrabbing[] = { BEGIN(OBJ_LIST_POLELIKE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oInteractType, INTERACT_POLE), SET_HITBOX(0x0050, 0x05DC), CALLNATIVE(bhv_pole_init), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(BehClimbDetectLoop), END_LOOP(), }; // 0174 const BehaviorScript bhvThiHugeIslandTop[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(thi_seg7_collision_top_trap), BEGIN_LOOP(), CALLNATIVE(bhv_thi_huge_island_top_loop), END_LOOP(), }; // 0194 const BehaviorScript bhvThiTinyIslandTop[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_thi_tiny_island_top_loop), END_LOOP(), }; // 01AC const BehaviorScript bhvCapSwitchBase[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(capswitch_collision_05003448), BEGIN_LOOP(), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 01CC const BehaviorScript bhvCapSwitch[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(capswitch_collision_050033D0), BEGIN_LOOP(), CALLNATIVE(bhv_cap_switch_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 01F4 const BehaviorScript bhvKingBobomb[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, king_bobomb_seg5_anims_0500FE30), OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE), SET_HITBOX(0x0064, 0x0064), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_INT(oIntangibleTimer, 0), DROP_FLOOR(), OBJ_SET_POS(), OBJ_SPAWN(MODEL_NONE, bhvBobombAnchorMario), OBJ_SET_INT(oHealth, 0x0003), OBJ_SET_INT(oDamageOrCoinValue, 1), BEGIN_LOOP(), CALLNATIVE(bhv_king_bobomb_loop), END_LOOP(), }; // 0254 const BehaviorScript bhvBobombAnchorMario[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_FLOAT(oParentRelativePosX, 0x0064), OBJ_SET_FLOAT(oParentRelativePosZ, 0x0096), BEGIN_LOOP(), CALLNATIVE(bhv_bobomb_anchor_mario_loop), END_LOOP(), }; // 0278 const BehaviorScript bhvBetaChestBottom[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), CALLNATIVE(bhv_beta_chest_bottom_init), BEGIN_LOOP(), CALLNATIVE(bhv_beta_chest_bottom_loop), END_LOOP(), }; // 029C const BehaviorScript bhvBetaChestLid[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_beta_chest_lid_loop), END_LOOP(), }; // 02B8 const BehaviorScript bhvBubbleMario[] = { BEGIN(OBJ_LIST_DEFAULT), GRAPH_CLEAR(), OBJ_SET_INT_RAND(oWaterObjUnkF4, 0x0002, 0x0009), DELAY_VAR(oWaterObjUnkF4), OBJ_CHILD(MODEL_BUBBLE, bhvSmallWaterWave), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00000020), DEACTIVATE(), }; // 02E4 const BehaviorScript bhvBubbleMaybe[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), CALLNATIVE(bhv_bubble_wave_init), OBJ_SET_FLOAT_RAND(oWaterObjUnkF4, 0xFFB5, 0x0096), OBJ_SET_FLOAT_RAND(oWaterObjUnkF8, 0xFFB5, 0x0096), OBJ_SET_FLOAT_RAND(oWaterObjUnkFC, 0xFFB5, 0x0096), OBJ_SUM_FLOAT(oPosX, oPosX, oWaterObjUnkF4), OBJ_SUM_FLOAT(oPosZ, oPosZ, oWaterObjUnkF8), OBJ_SUM_FLOAT(oPosY, oPosY, oWaterObjUnkFC), OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(60), OBJ_ADD_INT(oAnimState, 1), CALLNATIVE(bhv_bubble_maybe_loop), END_REPEAT(), DEACTIVATE(), }; // 0338 const BehaviorScript bhvSmallWaterWave[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), CALLNATIVE(bhv_bubble_wave_init), OBJ_SET_FLOAT_RAND(oWaterObjUnkF4, 0xFFCE, 0x0064), OBJ_SET_FLOAT_RAND(oWaterObjUnkF8, 0xFFCE, 0x0064), OBJ_SUM_FLOAT(oPosX, oPosX, oWaterObjUnkF4), OBJ_SUM_FLOAT(oPosZ, oPosZ, oWaterObjUnkF8), OBJ_SET_FLOAT_RAND(oWaterObjUnkFC, 0x0000, 0x0032), OBJ_SUM_FLOAT(oPosY, oPosY, oWaterObjUnkFC), OBJ_SET_INT(oAnimState, -1), CALL(bhvSmallWaterWave398), BEGIN_REPEAT(60), CALL(bhvSmallWaterWave398), CALLNATIVE(bhv_small_water_wave_loop), END_REPEAT(), DEACTIVATE(), }; // 0398 const BehaviorScript bhvSmallWaterWave398[] = { OBJ_ADD_INT(oAnimState, 1), OBJ_ADD_FLOAT(oPosY, 7), OBJ_SET_FLOAT_RAND(oWaterObjUnkF4, -2, 5), OBJ_SET_FLOAT_RAND(oWaterObjUnkF8, -2, 5), OBJ_SUM_FLOAT(oPosX, oPosX, oWaterObjUnkF4), OBJ_SUM_FLOAT(oPosZ, oPosZ, oWaterObjUnkF8), RETURN(), }; // 03BC const BehaviorScript bhvWaterAirBubble[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), COLLISION_SPHERE(0x0190, 0x0096, 0xFF6A), OBJ_SET_INT(oIntangibleTimer, 0), INTERACT_TYPE(INTERACT_WATER_RING), OBJ_SET_INT(oDamageOrCoinValue, 5), CALLNATIVE(bhv_water_air_bubble_init), OBJ_SET_INT(oAnimState, -1), BEGIN_LOOP(), CALLNATIVE(bhv_water_air_bubble_loop), END_LOOP(), }; // 0400 const BehaviorScript bhvSmallParticle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_particle_init), BEGIN_REPEAT(70), CALLNATIVE(bhv_particle_loop), END_REPEAT(), DEACTIVATE(), }; // 0428 const BehaviorScript bhvWaterWaves[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00000200), GRAPH_CLEAR(), CALLNATIVE(bhv_water_waves_init), DEACTIVATE(), }; // 0444 const BehaviorScript bhvSmallParticleSnow[] = { BEGIN(OBJ_LIST_UNIMPORTANT), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_particle_init), BEGIN_REPEAT(30), CALLNATIVE(bhv_particle_loop), END_REPEAT(), DEACTIVATE(), }; // 046C const BehaviorScript bhvSmallParticleBubbles[] = { BEGIN(OBJ_LIST_UNIMPORTANT), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_particle_init), BEGIN_REPEAT(70), CALLNATIVE(bhv_small_bubbles_loop), END_REPEAT(), DEACTIVATE(), }; // 0494 const BehaviorScript bhvFishGroup[] = { BEGIN(OBJ_LIST_DEFAULT), BEGIN_LOOP(), CALLNATIVE(bhv_fish_group_loop), END_LOOP(), }; // 04A8 const BehaviorScript bhvCannon[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_CHILD(MODEL_CANNON_BARREL, bhvCannonBarrel), OBJ_SET_INT(oInteractType, INTERACT_CANNON_BASE), OBJ_ADD_FLOAT(oPosY, -340), OBJ_SET_POS(), SET_HITBOX(0x0096, 0x0096), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_cannon_base_loop), END_LOOP(), }; // 04E4 const BehaviorScript bhvCannonBarrel[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), BEGIN_LOOP(), CALLNATIVE(bhv_cannon_barrel_loop), END_LOOP(), }; // 0500 const BehaviorScript bhvCannonBaseUnused[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(8), CALLNATIVE(bhv_cannon_base_unused_loop), OBJ_ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), }; // 0528 const BehaviorScript bhvChuckya[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, chuckya_seg8_anims_0800C070), ANIMATE(0x05), OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE), SET_HITBOX(0x0096, 0x0064), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SPAWN(MODEL_NONE, bhvChuckyaAnchorMario), OBJ_SET_INT(oNumLootCoins, 5), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_chuckya_loop), END_LOOP(), }; // 0584 const BehaviorScript bhvChuckyaAnchorMario[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_FLOAT(oParentRelativePosY, 0xFFC4), OBJ_SET_FLOAT(oParentRelativePosZ, 0x0096), BEGIN_LOOP(), CALLNATIVE(bhv_chuckya_anchor_mario_loop), END_LOOP(), }; // 05A8 const BehaviorScript bhvUnused05A8[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BREAK(), }; // 05B4 const BehaviorScript bhvRotatingPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_rotating_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 05D8 const BehaviorScript bhvTower[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(wf_seg7_collision_tower), OBJ_SET_FLOAT(oCollisionDistance, 0x0BB8), OBJ_SET_FLOAT(oDrawingDistance, 0x4E20), BEGIN_LOOP(), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0600 const BehaviorScript bhvBulletBillCannon[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(wf_seg7_collision_bullet_bill_cannon), OBJ_SET_FLOAT(oCollisionDistance, 0x012C), BEGIN_LOOP(), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0624 const BehaviorScript bhvWfBreakableWallRight[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(wf_seg7_collision_breakable_wall), GOTO(bhvWfBreakableWallLeft + 1 + 2), }; // 0638 const BehaviorScript bhvWfBreakableWallLeft[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(wf_seg7_collision_breakable_wall_2), // .L13000644: OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), SET_HITBOX(0x012C, 0x0190), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_wf_breakable_wall_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 066C const BehaviorScript bhvKickableBoard[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wf_seg7_collision_kickable_board), SET_HITBOX(0x0064, 0x04B0), OBJ_SET_FLOAT2(0x0001, 0x0001), OBJ_SET_FLOAT(oCollisionDistance, 0x05DC), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_kickable_board_loop), END_LOOP(), }; // 06A4 const BehaviorScript bhvTowerDoor[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wf_seg7_collision_tower_door), SET_HITBOX(0x0064, 0x0064), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_tower_door_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 06D8 const BehaviorScript bhvRotatingCounterClockwise[] = { BEGIN(OBJ_LIST_DEFAULT), BREAK(), }; // 06E0 const BehaviorScript bhvWfRotatingWoodenPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(wf_seg7_collision_clocklike_rotation), BEGIN_LOOP(), CALLNATIVE(bhv_wf_rotating_wooden_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0708 const BehaviorScript bhvKoopaShellUnderwater[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_koopa_shell_underwater_loop), END_LOOP(), }; // 0720 const BehaviorScript bhvExitPodiumWarp[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_INT(oInteractType, INTERACT_WARP), DROP_FLOOR(), OBJ_SET_FLOAT(oCollisionDistance, 0x1F40), COLLISION_DATA(ttm_seg7_collision_podium_warp), OBJ_SET_INT(oIntangibleTimer, 0), SET_HITBOX(0x0032, 0x0032), BEGIN_LOOP(), CALLNATIVE(load_object_collision_model), OBJ_SET_INT(oInteractStatus, 0), END_LOOP(), }; // 075C const BehaviorScript bhvFadingWarp[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_FADING_WARP), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_INT(oInteractType, INTERACT_WARP), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(BehFadingWarpLoop), END_LOOP(), }; // 0780 const BehaviorScript bhvWarp[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_INT(oInteractType, INTERACT_WARP), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_warp_loop), END_LOOP(), }; // 07A0 const BehaviorScript bhvWarpPipe[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_INT(oInteractType, INTERACT_WARP), COLLISION_DATA(warp_pipe_seg3_collision_03009AC8), OBJ_SET_FLOAT(oDrawingDistance, 0x3E80), OBJ_SET_INT(oIntangibleTimer, 0), SET_HITBOX(0x0046, 0x0032), BEGIN_LOOP(), CALLNATIVE(bhv_warp_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 07DC const BehaviorScript bhvWhitePuffExplosion[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_white_puff_exploding_loop), END_LOOP(), }; // 07F8 const BehaviorScript bhvSpawnedStar[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oBehParams2ndByte, 1), GOTO(bhvUnused080C + 1 + 1), }; // 080C const BehaviorScript bhvUnused080C[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), // .L13000814: OBJ_SET_POS(), CALLNATIVE(bhv_unused_080c_init), BEGIN_LOOP(), CALLNATIVE(bhv_unused_080c_loop), END_LOOP(), }; // 0830 const BehaviorScript bhvMrIBlueCoin[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_SET_INT(oInteractType, INTERACT_COIN), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_FLOAT(oMrIUnk110, 0x0014), OBJ_SET_INT(oAnimState, -1), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), CALLNATIVE(bhv_coin_init), OBJ_SET_INT(oDamageOrCoinValue, 0x0005), SET_HITBOX(0x0078, 0x0040), BEGIN_LOOP(), CALLNATIVE(bhv_coin_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 0888 const BehaviorScript bhvCoinInsideBoo[] = { BEGIN(OBJ_LIST_LEVEL), SET_HITBOX(0x0064, 0x0040), OBJ_SET_INT(oInteractType, INTERACT_COIN), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BILLBOARD(), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_coin_inside_boo_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 08D0 const BehaviorScript bhvCoinFormationSpawn[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_coin_formation_spawn_loop), END_LOOP(), }; // 08EC const BehaviorScript bhvCoinFormation[] = { BEGIN(OBJ_LIST_SPAWNER), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_coin_formation_init), BEGIN_LOOP(), CALLNATIVE(bhv_coin_formation_loop), END_LOOP(), }; // 090C const BehaviorScript bhvOneCoin[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_SET_INT(oBehParams2ndByte, 1), GOTO(bhvYellowCoin + 1), }; // 091C const BehaviorScript bhvYellowCoin[] = { BEGIN(OBJ_LIST_LEVEL), // .L13000920: BILLBOARD(), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_yellow_coin_init), BEGIN_LOOP(), CALLNATIVE(bhv_yellow_coin_loop), END_LOOP(), }; // 0940 const BehaviorScript bhvTemporaryYellowCoin[] = { BEGIN(OBJ_LIST_LEVEL), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_yellow_coin_init), BEGIN_LOOP(), CALLNATIVE(bhv_temp_coin_loop), END_LOOP(), }; // 0964 const BehaviorScript bhvThreeCoinsSpawn[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_REPEAT(3), OBJ_CHILD(MODEL_YELLOW_COIN, bhvSingleCoinGetsSpawned), END_REPEAT(), DEACTIVATE(), }; // 0984 const BehaviorScript bhvTenCoinsSpawn[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_REPEAT(10), OBJ_CHILD(MODEL_YELLOW_COIN, bhvSingleCoinGetsSpawned), END_REPEAT(), DEACTIVATE(), }; // 09A4 const BehaviorScript bhvSingleCoinGetsSpawned[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), CALLNATIVE(bhv_coin_init), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_coin_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 09E0 const BehaviorScript bhvCoinSparkles[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_FLOAT(oGraphYOffset, 25), OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(8), OBJ_ADD_INT(oAnimState, 1), END_REPEAT(), BEGIN_REPEAT(2), CALLNATIVE(bhv_coin_sparkles_loop), END_REPEAT(), DEACTIVATE(), }; // 0A14 const BehaviorScript bhvGoldenCoinSparkles[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), GRAPH_CLEAR(), BEGIN_REPEAT(3), CALLNATIVE(bhv_golden_coin_sparkles_loop), END_REPEAT(), DEACTIVATE(), }; // 0A34 const BehaviorScript bhvWallTinyStarParticle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_REPEAT(10), CALLNATIVE(bhv_wall_tiny_star_particle_loop), END_REPEAT(), DEACTIVATE(), }; // 0A54 const BehaviorScript bhvWallTinyStarParticleSpawn[] = { BEGIN(OBJ_LIST_DEFAULT), GRAPH_CLEAR(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00040000), CALLNATIVE(bhv_tiny_star_particles_init), DELAY(1), DEACTIVATE(), }; // 0A78 const BehaviorScript bhvPoundTinyStarParticle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_REPEAT(10), CALLNATIVE(bhv_pound_tiny_star_particle_loop), END_REPEAT(), DEACTIVATE(), }; // 0A98 const BehaviorScript bhvPoundTinyStarParticleSpawn[] = { BEGIN(OBJ_LIST_DEFAULT), GRAPH_CLEAR(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00000010), CALLNATIVE(bhv_pound_tiny_star_particle_init), DELAY(1), DEACTIVATE(), }; // 0ABC const BehaviorScript bhvPunchTinyTriangle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_punch_tiny_triangle_loop), END_LOOP(), }; // 0AD8 const BehaviorScript bhvPunchTinyTriangleSpawn[] = { BEGIN(OBJ_LIST_DEFAULT), GRAPH_CLEAR(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00080000), CALLNATIVE(bhv_punch_tiny_triangle_init), DELAY(1), DEACTIVATE(), }; // 0AFC const BehaviorScript bhvDoorWarp[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_SET_INT(oInteractType, INTERACT_WARP_DOOR), GOTO(bhvDoor + 1 + 1), }; // 0B0C const BehaviorScript bhvDoor[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_SET_INT(oInteractType, INTERACT_DOOR), // .L13000B14: OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, door_seg3_anims_030156C0), ANIMATE(0x00), COLLISION_DATA(door_seg3_collision_0301CE78), SET_HITBOX(0x0050, 0x0064), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_FLOAT(oCollisionDistance, 0x03E8), OBJ_SET_POS(), CALLNATIVE(bhv_door_init), BEGIN_LOOP(), CALLNATIVE(bhv_door_loop), END_LOOP(), }; // 0B58 const BehaviorScript bhvGrindel[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(ssl_seg7_collision_grindel), DROP_FLOOR(), OBJ_ADD_FLOAT(oPosY, 1), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_grindel_thwomp_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0B8C const BehaviorScript bhvThwomp2[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(thwomp_seg5_collision_0500B92C), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_ADD_FLOAT(oPosY, 1), OBJ_SET_POS(), SCALE(140), OBJ_SET_FLOAT(oDrawingDistance, 0x0FA0), BEGIN_LOOP(), CALLNATIVE(bhv_grindel_thwomp_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0BC8 const BehaviorScript bhvThwomp[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(thwomp_seg5_collision_0500B7D0), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_ADD_FLOAT(oPosY, 1), SCALE(140), OBJ_SET_POS(), OBJ_SET_FLOAT(oDrawingDistance, 0x0FA0), BEGIN_LOOP(), CALLNATIVE(bhv_grindel_thwomp_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0C04 const BehaviorScript bhvTumblingBridgePlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_FLOAT(oCollisionDistance, 0x012C), BEGIN_LOOP(), CALLNATIVE(bhv_tumbling_bridge_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0C28 const BehaviorScript bhvWfTumblingBridge[] = { BEGIN(OBJ_LIST_SPAWNER), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_tumbling_bridge_loop), END_LOOP(), }; // 0C44 const BehaviorScript bhvBbhTumblingBridge[] = { BEGIN(OBJ_LIST_SPAWNER), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_SET_INT(oBehParams2ndByte, 1), BEGIN_LOOP(), CALLNATIVE(bhv_tumbling_bridge_loop), END_LOOP(), }; // 0C64 const BehaviorScript bhvLllTumblingBridge[] = { BEGIN(OBJ_LIST_SPAWNER), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_SET_INT(oBehParams2ndByte, 2), BEGIN_LOOP(), CALLNATIVE(bhv_tumbling_bridge_loop), END_LOOP(), }; // 0C84 const BehaviorScript bhvFlame[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_POS(), SCALE(700), INTERACT_TYPE(INTERACT_FLAME), COLLISION_SPHERE(0x0032, 0x0019, 0x0019), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), OBJ_SET_INT(oInteractStatus, 0), TEXT_ANIM_RATE(oAnimState, 0x0002), END_LOOP(), }; // 0CC8 const BehaviorScript bhvAnotherElavator[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(hmc_seg7_collision_elevator), OBJ_SET_POS(), CALLNATIVE(bhv_elevator_init), BEGIN_LOOP(), CALLNATIVE(bhv_elevator_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0CFC const BehaviorScript bhvRrElevatorPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(rr_seg7_collision_elevator_platform), OBJ_SET_POS(), CALLNATIVE(bhv_elevator_init), BEGIN_LOOP(), CALLNATIVE(bhv_elevator_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0D30 const BehaviorScript bhvHmcElevatorPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(hmc_seg7_collision_elevator), OBJ_SET_POS(), CALLNATIVE(bhv_elevator_init), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_elevator_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0D6C const BehaviorScript bhvWaterMist[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_INT(oOpacity, 0xFE), OBJ_SET_FLOAT(oForwardVel, 0x0014), OBJ_SET_FLOAT(oVelY, 0xFFF8), OBJ_ADD_FLOAT(oPosY, 62), BEGIN_LOOP(), CALLNATIVE(bhv_water_mist_loop), END_LOOP(), }; // 0D98 const BehaviorScript bhvWaterMistSpawn[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_REPEAT(8), CALLNATIVE(bhv_water_mist_spawn_loop), END_REPEAT(), DEACTIVATE(), }; // 0DB4 const BehaviorScript bhvBreakBoxTriangle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_REPEAT(18), CALLNATIVE(obj_rotate_face_angle_using_vel), CALLNATIVE(obj_move_using_fvel_and_gravity), END_REPEAT(), DEACTIVATE(), }; // 0DD8 const BehaviorScript bhvWaterMist2[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_SET_INT(oFaceAnglePitch, 0xC000), SCALE(2100), BEGIN_LOOP(), CALLNATIVE(bhv_water_mist_2_loop), END_LOOP(), }; // 0DFC const BehaviorScript bhvUnused0DFC[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oAnimState, -1), OBJ_SET_FLOAT(oFaceAnglePitch, 0), OBJ_SET_FLOAT(oFaceAngleYaw, 0), OBJ_SET_FLOAT(oFaceAngleRoll, 0), BEGIN_REPEAT(6), OBJ_ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), }; // 0E24 const BehaviorScript bhvPoundWhitePuffs[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_pound_white_puffs_init), DELAY(1), DEACTIVATE(), }; // 0E3C const BehaviorScript bhvGroundSand[] = { BEGIN(OBJ_LIST_DEFAULT), BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_unused_0e40_init), DELAY(1), DEACTIVATE(), }; // 0E58 const BehaviorScript bhvGroundSnow[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_ground_snow_init), DELAY(1), DEACTIVATE(), }; // 0E70 const BehaviorScript bhvWind[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_wind_loop), END_LOOP(), }; // 0E88 const BehaviorScript bhvEndToad[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_ANIMS(oAnimations, toad_seg6_anims_0600FB58), ANIMATE(0x00), BEGIN_LOOP(), CALLNATIVE(BehEndToadLoop), END_LOOP(), }; // 0EAC const BehaviorScript bhvEndPeach[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_ANIMS(oAnimations, peach_seg5_anims_0501C41C), ANIMATE(0x00), BEGIN_LOOP(), CALLNATIVE(BehEndPeachLoop), END_LOOP(), }; // 0ED0 const BehaviorScript bhvUnusedParticleSpawn[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_INT(oIntangibleTimer, 0), SET_HITBOX(0x0028, 0x0028), BEGIN_LOOP(), CALLNATIVE(bhv_unused_particle_spawn_loop), END_LOOP(), }; // 0F08 const BehaviorScript bhvUkiki[] = { BEGIN(OBJ_LIST_GENACTOR), GOTO(bhvMacroUkiki + 1), }; // 0F14 const BehaviorScript bhvUkikiCageChild[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oPosX, 0x0A00), OBJ_SET_FLOAT(oPosY, 0x05B1), OBJ_SET_FLOAT(oPosZ, 0x076A), BREAK(), }; // 0F2C const BehaviorScript bhvUkikiCageStar[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_ukiki_cage_star_loop), END_LOOP(), }; // 0F48 const BehaviorScript bhvUkikiCage[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), COLLISION_DATA(ttm_seg7_collision_ukiki_cage), OBJ_CHILD(MODEL_STAR, bhvUkikiCageStar), OBJ_CHILD(MODEL_NONE, bhvUkikiCageChild), OBJ_SET_FLOAT(oCollisionDistance, 0x4E20), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_ukiki_cage_loop), END_LOOP(), }; // 0F9C const BehaviorScript bhvBitfsSinkingPlatforms[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(bitfs_seg7_collision_sinking_platform), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_bitfs_sinking_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 0FC8 const BehaviorScript bhvBitfsSinkingCagePlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(bitfs_seg7_collision_sinking_cage_platform), OBJ_SET_POS(), OBJ_CHILD(MODEL_BITFS_BLUE_POLE, bhvDddMovingPole), BEGIN_LOOP(), CALLNATIVE(bhv_bitfs_sinking_cage_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1000 const BehaviorScript bhvDddMovingPole[] = { BEGIN(OBJ_LIST_POLELIKE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oInteractType, INTERACT_POLE), SET_HITBOX(0x0050, 0x02C6), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_ddd_moving_pole_loop), CALLNATIVE(BehClimbDetectLoop), END_LOOP(), }; // 1030 const BehaviorScript bhvBitfsTiltingInvertedPyramid[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(bitfs_seg7_collision_inverted_pyramid), OBJ_SET_POS(), CALLNATIVE(bhv_platform_normals_init), BEGIN_LOOP(), CALLNATIVE(bhv_tilting_inverted_pyramid_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1064 const BehaviorScript bhvSquishablePlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(bitfs_seg7_collision_squishable_platform), OBJ_SET_FLOAT(oCollisionDistance, 0x2710), CALLNATIVE(bhv_platform_normals_init), BEGIN_LOOP(), CALLNATIVE(bhv_squishable_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1098 const BehaviorScript bhvCutOutObject[] = { BEGIN(OBJ_LIST_GENACTOR), GRAPH_CLEAR(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BREAK(), }; // 10A8 const BehaviorScript bhvBetaMovingFlamesSpawn[] = { BEGIN_LOOP(), CALLNATIVE(bhv_beta_moving_flames_spawn_loop), END_LOOP(), }; // 10B8 const BehaviorScript bhvBetaMovingFlames[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_beta_moving_flames_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 10D8 const BehaviorScript bhvRrRotatingBridgePlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(rr_seg7_collision_rotating_platform_with_fire), OBJ_SET_FLOAT(oCollisionDistance, 0x05DC), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_rr_rotating_bridge_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1108 const BehaviorScript bhvFlamethrower[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_flamethrower_loop), END_LOOP(), }; // 1124 const BehaviorScript bhvFlamethrowerFlame[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), INTERACT_TYPE(INTERACT_FLAME), COLLISION_SPHERE(0x0032, 0x0019, 0x0019), BILLBOARD(), OBJ_SET_POS(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_flamethrower_flame_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 1168 const BehaviorScript bhvBouncingFireball[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), GRAPH_CLEAR(), BEGIN_LOOP(), CALLNATIVE(bhv_bouncing_fireball_loop), END_LOOP(), }; // 1184 const BehaviorScript bhvBouncingFireballFlame[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), INTERACT_TYPE(INTERACT_FLAME), OBJ_SET_FLOAT(oGraphYOffset, 30), COLLISION_SPHERE(0x0032, 0x0019, 0x0019), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_bouncing_fireball_flame_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 11D0 const BehaviorScript bhvBowserShockWave[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_INT(oOpacity, 0x00FF), BEGIN_LOOP(), CALLNATIVE(bhv_bowser_shock_wave_loop), END_LOOP(), }; // 11EC const BehaviorScript bhvFlameMario[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_FLOAT(oGraphYOffset, 0x0046), OBJ_SET_INT(oAnimState, -1), BEGIN_LOOP(), OBJ_ADD_INT(oAnimState, 1), CALLNATIVE(bhv_flame_mario_loop), END_LOOP(), }; // 1214 const BehaviorScript bhvBlackSmokeMario[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_INT(oAnimState, 0x0004), OBJ_SET_FLOAT(oGraphYOffset, 0x0032), BEGIN_REPEAT(8), CALLNATIVE(bhv_black_smoke_mario_loop), DELAY(1), CALLNATIVE(bhv_black_smoke_mario_loop), DELAY(1), CALLNATIVE(bhv_black_smoke_mario_loop), END_REPEAT(), DEACTIVATE(), }; // 1254 const BehaviorScript bhvBlackSmokeBowser[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_FLOAT(oGraphYOffset, 0x0000), BEGIN_REPEAT(8), CALLNATIVE(bhv_black_smoke_bowser_loop), TEXT_ANIM_RATE(oAnimState, 0x0004), END_REPEAT(), DEACTIVATE(), }; // 127C const BehaviorScript bhvBlackSmokeUpward[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_REPEAT(4), CALLNATIVE(bhv_black_smoke_upward_loop), END_REPEAT(), DEACTIVATE(), }; // 1298 const BehaviorScript bhvBetaFishSplashSpawner[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), GRAPH_CLEAR(), BEGIN_LOOP(), CALLNATIVE(bhv_beta_fish_splash_spawner_loop), END_LOOP(), }; // 12B4 const BehaviorScript bhvSpindrift[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, spindrift_seg5_anims_05002D68), ANIMATE(0x00), OBJ_PHYSICS(0x001E, 0xFE70, 0x0000, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000), OBJ_SET_POS(), OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_TWIRL_BOUNCE), BEGIN_LOOP(), CALLNATIVE(bhv_spindrift_loop), END_LOOP(), }; // 12F4 const BehaviorScript bhvTowerPlatformGroup[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), GRAPH_CLEAR(), OBJ_ADD_FLOAT(oPosY, 300), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_tower_platform_group_loop), END_LOOP(), }; // 1318 const BehaviorScript bhvWfSlidingTowerPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wf_seg7_collision_platform), BEGIN_LOOP(), CALLNATIVE(bhv_wf_sliding_tower_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1340 const BehaviorScript bhvWfElevatorTowerPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wf_seg7_collision_platform), BEGIN_LOOP(), CALLNATIVE(bhv_wf_elevator_tower_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1368 const BehaviorScript bhvWfSolidTowerPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wf_seg7_collision_platform), BEGIN_LOOP(), CALLNATIVE(bhv_wf_solid_tower_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1390 const BehaviorScript bhvSnowLeafParticleSpawn[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_snow_leaf_particle_spawn_init), DELAY(1), DEACTIVATE(), }; // 13A8 const BehaviorScript bhvTreeSnow[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_tree_snow_or_leaf_loop), END_LOOP(), }; // 13C4 const BehaviorScript bhvTreeLeaf[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_tree_snow_or_leaf_loop), END_LOOP(), }; // 13DC const BehaviorScript bhvAnotherTiltingPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), CALLNATIVE(bhv_platform_normals_init), BEGIN_LOOP(), CALLNATIVE(bhv_tilting_inverted_pyramid_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1408 const BehaviorScript bhvSquarishPathMoving[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(bitdw_seg7_collision_moving_pyramid), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_squarish_path_moving_loop), END_LOOP(), }; // 142C const BehaviorScript bhvPiranhaPlantBubble[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_piranha_plant_bubble_loop), END_LOOP(), }; // 1448 const BehaviorScript bhvPiranhaPlantWakingBubbles[] = { BEGIN(OBJ_LIST_UNIMPORTANT), BILLBOARD(), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_REPEAT(10), CALLNATIVE(bhv_piranha_plant_waking_bubbles_loop), END_REPEAT(), DEACTIVATE(), }; // 1468 const BehaviorScript bhvFloorSwitchAnimatesObject[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_SET_INT(oBehParams2ndByte, 1), GOTO(bhvFloorSwitchHardcodedModel + 1), }; // 1478 const BehaviorScript bhvFloorSwitchGrills[] = { BEGIN(OBJ_LIST_SURFACE), GOTO(bhvFloorSwitchHardcodedModel + 1), }; // 1484 const BehaviorScript bhvFloorSwitchHardcodedModel[] = { BEGIN(OBJ_LIST_SURFACE), // .Lbeh_floor_switch_1488: # 1488 OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(purple_switch_seg8_collision_0800C7A8), BEGIN_LOOP(), CALLNATIVE(bhv_purple_switch_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 14AC const BehaviorScript bhvFloorSwitchHiddenObjects[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_SET_INT(oBehParams2ndByte, 2), GOTO(bhvFloorSwitchHardcodedModel + 1), }; // 14BC const BehaviorScript bhvHiddenObject[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(breakable_box_seg8_collision_08012D70), OBJ_SET_FLOAT(oCollisionDistance, 0x012C), BEGIN_LOOP(), CALLNATIVE(bhv_hidden_object_loop), END_LOOP(), }; // 14E0 const BehaviorScript bhvBreakableBox[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(breakable_box_seg8_collision_08012D70), OBJ_SET_FLOAT(oCollisionDistance, 0x01F4), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_breakable_box_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), BREAK(), }; // 1518 const BehaviorScript bhvPushableMetalBox[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(metal_box_seg8_collision_08024C28), OBJ_SET_FLOAT(oCollisionDistance, 0x01F4), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_pushable_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1548 const BehaviorScript bhvHeaveHo[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, heave_ho_seg5_anims_0501534C), ANIMATE(0x00), OBJ_PHYSICS(0x00C8, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0258, 0x0000, 0x0000), OBJ_SPAWN(MODEL_NONE, bhvHeaveHoThrowMario), OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE), OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_NOT_GRABBABLE | INT_SUBTYPE_GRABS_MARIO), SET_HITBOX(0x0078, 0x0064), OBJ_SET_POS(), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_heave_ho_loop), END_LOOP(), }; // 15A4 const BehaviorScript bhvHeaveHoThrowMario[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_heave_ho_throw_mario_loop), END_LOOP(), }; // 15C0 const BehaviorScript bhvCcmTouchedStarSpawn[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), SET_HITBOX(0x01F4, 0x01F4), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_ccm_touched_star_spawn_loop), END_LOOP(), }; // 15E4 const BehaviorScript bhvUnusedPoundablePlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(sl_seg7_collision_pound_explodes), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_unused_poundable_platform), END_LOOP(), }; // 1608 const BehaviorScript bhvBetaTrampolineTop[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(springboard_collision_05001A28), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_beta_trampoline_top_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1634 const BehaviorScript bhvBetaTrampolineSpring[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_beta_trampoline_spring_loop), END_LOOP(), }; // 1650 const BehaviorScript bhvJumpingBox[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0258, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_jumping_box_loop), END_LOOP(), }; // 167C const BehaviorScript bhvBooCage[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_FLOAT(oGraphYOffset, 0x000A), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_boo_cage_loop), END_LOOP(), }; // 16AC const BehaviorScript bhvStub[] = { BEGIN(OBJ_LIST_DEFAULT), GRAPH_CLEAR(), BREAK(), }; // 16B8 const BehaviorScript bhvIgloo[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), INTERACT_TYPE(INTERACT_IGLOO_BARRIER), SET_HITBOX(0x0064, 0x00C8), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_POS(), BEGIN_LOOP(), OBJ_SET_INT(oInteractStatus, 0), END_LOOP(), }; // 16E4 const BehaviorScript bhvBowserKey[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_POS(), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_bowser_key_loop), END_LOOP(), }; // 1714 const BehaviorScript bhvGrandStar[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), INTERACT_TYPE(INTERACT_STAR_OR_KEY), OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_GRAND_STAR), SET_HITBOX(0x00A0, 0x0064), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_grand_star_loop), END_LOOP(), }; // 1744 const BehaviorScript bhvBetaBooKey[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), SET_HITBOX(0x0020, 0x0040), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_beta_boo_key_loop), END_LOOP(), }; // 1778 const BehaviorScript bhvAlphaBooKey[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), SET_HITBOX(0x0020, 0x0040), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_alpha_boo_key_loop), END_LOOP(), }; // 179C const BehaviorScript bhvBulletBill[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), COLLISION_SPHERE(0x0032, 0x0032, 0x0032), INTERACT_TYPE(INTERACT_DAMAGE), OBJ_SET_INT(oDamageOrCoinValue, 3), SCALE(40), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_PHYSICS(0x001E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000), CALLNATIVE(bhv_bullet_bill_init), BEGIN_LOOP(), CALLNATIVE(bhv_bullet_bill_loop), END_LOOP(), }; // 17F4 const BehaviorScript bhvWhitePuffSmoke[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_ADD_FLOAT(oPosY, -100), CALLNATIVE(bhv_white_puff_smoke_init), OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(10), OBJ_ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), }; // 1820 const BehaviorScript bhvUnused1820[] = { BEGIN(OBJ_LIST_DEFAULT), BREAK(), }; // 1828 const BehaviorScript bhvBowserTailAnchor[] = { BEGIN(OBJ_LIST_GENACTOR), COLLISION_SPHERE(0x0064, 0x0032, 0xFFCE), OBJ_SET_INT(oIntangibleTimer, 0), GRAPH_CLEAR(), BEGIN_LOOP(), CALLNATIVE(bhv_bowser_tail_anchor_loop), END_LOOP(), }; // 1850 const BehaviorScript bhvBowser[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE), SET_HITBOX(0x0190, 0x0190), DROP_FLOOR(), OBJ_SET_POS(), OBJ_SET_ANIMS(oAnimations, bowser_seg6_anims_06057690), OBJ_CHILD(MODEL_NONE, bhvBowserBodyAnchor), OBJ_CHILD(MODEL_BOWSER_BOMB_CHILD_OBJ, bhvBowserFlameSpawn), OBJ_SPAWN(MODEL_NONE, bhvBowserTailAnchor), OBJ_SET_INT(oNumLootCoins, 0x0032), OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_POS(), CALLNATIVE(bhv_bowser_init), BEGIN_LOOP(), CALLNATIVE(bhv_bowser_loop), END_LOOP(), }; // 18CC const BehaviorScript bhvBowserBodyAnchor[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), SET_HITBOX(0x0064, 0x012C), INTERACT_TYPE(INTERACT_DAMAGE), OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_BIG_KNOCKBACK), GRAPH_CLEAR(), OBJ_SET_INT(oDamageOrCoinValue, 2), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_bowser_body_anchor_loop), END_LOOP(), }; // 1904 const BehaviorScript bhvBowserFlameSpawn[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), GEO_LAYOUT(MODEL_NONE), BEGIN_LOOP(), CALLNATIVE(bhv_bowser_flame_spawn_loop), END_LOOP(), }; // 1920 const BehaviorScript bhvTiltingBowserLavaPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(bowser_2_seg7_collision_tilting_platform), OBJ_SET_FLOAT(oDrawingDistance, 0x4E20), OBJ_SET_FLOAT(oCollisionDistance, 0x4E20), OBJ_SET_INT(oFaceAngleYaw, 0x0000), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(obj_rotate_face_angle_using_vel), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1958 const BehaviorScript bhvFallingBowserPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oDrawingDistance, 0x4E20), OBJ_SET_FLOAT(oCollisionDistance, 0x4E20), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_falling_bowser_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1984 const BehaviorScript bhvBlueBowserFlame[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), INTERACT_TYPE(INTERACT_FLAME), BILLBOARD(), OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), CALLNATIVE(bhv_blue_bowser_flame_init), BEGIN_LOOP(), CALLNATIVE(bhv_blue_bowser_flame_loop), TEXT_ANIM_RATE(oAnimState, 0x0002), END_LOOP(), }; // 19C8 const BehaviorScript bhvFlameFloatingLanding[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), INTERACT_TYPE(INTERACT_FLAME), BILLBOARD(), OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), CALLNATIVE(bhv_flame_floating_landing_init), BEGIN_LOOP(), CALLNATIVE(bhv_flame_floating_landing_loop), TEXT_ANIM_RATE(oAnimState, 0x0002), END_LOOP(), }; // 1A0C const BehaviorScript bhvBlueFlamesGroup[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), INTERACT_TYPE(INTERACT_FLAME), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_blue_flames_group_loop), END_LOOP(), }; // 1A30 const BehaviorScript bhvFlameBouncing[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), INTERACT_TYPE(INTERACT_FLAME), BILLBOARD(), CALLNATIVE(bhv_flame_bouncing_init), OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_flame_bouncing_loop), TEXT_ANIM_RATE(oAnimState, 0x0002), END_LOOP(), }; // 1A74 const BehaviorScript bhvFlameMovingForwardGrowing[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), INTERACT_TYPE(INTERACT_FLAME), BILLBOARD(), CALLNATIVE(bhv_flame_moving_forward_growing_init), BEGIN_LOOP(), CALLNATIVE(bhv_flame_moving_forward_growing_loop), TEXT_ANIM_RATE(oAnimState, 0x0002), END_LOOP(), }; // 1AA4 const BehaviorScript bhvFlameBowser[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), INTERACT_TYPE(INTERACT_FLAME), BILLBOARD(), CALLNATIVE(bhv_flame_bowser_init), OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_flame_bowser_loop), TEXT_ANIM_RATE(oAnimState, 0x0002), END_LOOP(), }; // 1AE8 const BehaviorScript bhvFlameLargeBurningOut[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), INTERACT_TYPE(INTERACT_FLAME), BILLBOARD(), CALLNATIVE(bhv_flame_large_burning_out_init), OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_flame_bowser_loop), TEXT_ANIM_RATE(oAnimState, 0x0002), END_LOOP(), }; // 1B2C const BehaviorScript bhvBlueFish[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_SET_ANIMS(oAnimations, blue_fish_seg3_anims_0301C2B0), ANIMATE(0x00), BEGIN_LOOP(), CALLNATIVE(bhv_blue_fish_loop), END_LOOP(), }; // 1B54 const BehaviorScript bhvTankFishGroup[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_tank_fish_group_loop), END_LOOP(), }; // 1B70 const BehaviorScript bhvCheckerboardElevatorGroup[] = { BEGIN(OBJ_LIST_SPAWNER), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_checkerboard_elevator_group_init), DELAY(1), DEACTIVATE(), }; // 1B88 const BehaviorScript bhvCheckerboardPlatformSub[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(checkerboard_platform_seg8_collision_0800D710), CALLNATIVE(bhv_checkerboard_platform_init), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_checkerboard_platform_loop), END_LOOP(), }; // 1BB4 const BehaviorScript bhvBowserKeyUnlockDoor[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_SET_ANIMS(oAnimations, bowser_key_seg3_anims_list), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_bowser_key_unlock_door_loop), END_LOOP(), }; // 1BD4 const BehaviorScript bhvBowserKeyCourseExit[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_SET_ANIMS(oAnimations, bowser_key_seg3_anims_list), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_bowser_key_course_exit_loop), END_LOOP(), }; // 1BF4 const BehaviorScript bhvInvisibleObjectsUnderBridge[] = { BEGIN(OBJ_LIST_DEFAULT), CALLNATIVE(bhv_invisible_objects_under_bridge_init), BREAK(), }; // 1C04 const BehaviorScript bhvWaterLevelPillar[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(inside_castle_seg7_collision_water_level_pillar), CALLNATIVE(bhv_water_level_pillar_init), BEGIN_LOOP(), CALLNATIVE(bhv_water_level_pillar_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1C34 const BehaviorScript bhvDddWarp[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oCollisionDistance, 0x7530), BEGIN_LOOP(), CALLNATIVE(bhv_ddd_warp_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1C58 const BehaviorScript bhvMoatGrills[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(castle_grounds_seg7_collision_moat_grills), OBJ_SET_FLOAT(oCollisionDistance, 0x7530), BEGIN_LOOP(), CALLNATIVE(bhv_moat_grills_loop), END_LOOP(), }; // 1C7C const BehaviorScript bhvClockMinuteHand[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_SET_INT(oAngleVelRoll, 0xFE80), GOTO(bhvClockHourHand + 1 + 1), }; // 1C8C const BehaviorScript bhvClockHourHand[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_SET_INT(oAngleVelRoll, 0xFFE0), //.L13001C94: OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_rotating_clock_arm_loop), END_LOOP(), }; // 1CB0 const BehaviorScript bhvMacroUkiki[] = { BEGIN(OBJ_LIST_GENACTOR), // ukikiData: OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE), OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_HOLDABLE_NPC), SET_HITBOX(0x0028, 0x0028), OBJ_SET_INT(oIntangibleTimer, 0), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, ukiki_seg5_anims_05015784), ANIMATE(0x00), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000), OBJ_SET_POS(), CALLNATIVE(bhv_ukiki_init), BEGIN_LOOP(), CALLNATIVE(bhv_ukiki_loop), END_LOOP(), }; // 1D0C const BehaviorScript bhvStub1D0C[] = { BEGIN(OBJ_LIST_DEFAULT), DEACTIVATE(), }; // 1D14 const BehaviorScript bhvLllRotatingHexagonalPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(lll_seg7_collision_hexagonal_platform), OBJ_SET_POS(), BEGIN_LOOP(), OBJ_SET_INT(oAngleVelYaw, 0x100), OBJ_ADD_INT(oMoveAngleYaw, 0x100), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1D40 const BehaviorScript bhvLllSinkingRockBlock[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(lll_seg7_collision_floating_block), OBJ_ADD_FLOAT(oPosY, -50), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_lll_sinking_rock_block_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1D70 const BehaviorScript bhvStub1D70[] = { BEGIN(OBJ_LIST_DEFAULT), BREAK(), }; // 1D78 const BehaviorScript bhvLllMovingOctagonalMeshPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_ADD_FLOAT(oPosY, -50), COLLISION_DATA(lll_seg7_collision_octagonal_moving_platform), BEGIN_LOOP(), CALLNATIVE(bhv_lll_moving_octagonal_mesh_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1DA4 const BehaviorScript bhvSnowBall[] = { BREAK(), }; // 1DA8 const BehaviorScript bhvLllRotatingBlockWithFireBars[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(lll_seg7_collision_rotating_fire_bars), OBJ_SET_FLOAT(oCollisionDistance, 0x0FA0), BEGIN_LOOP(), CALLNATIVE(bhv_lll_rotating_block_fire_bars_loop), END_LOOP(), }; // 1DCC const BehaviorScript bhvLllRotatingHexFlame[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), INTERACT_TYPE(INTERACT_FLAME), COLLISION_SPHERE(0x0032, 0x0064, 0x0032), OBJ_SET_INT(oIntangibleTimer, 0), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_lll_rotating_hex_flame_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 1E04 const BehaviorScript bhvLllWoodPiece[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(lll_seg7_collision_wood_piece), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_lll_wood_piece_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1E30 const BehaviorScript bhvLllFloatingWoodBridge[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), GEO_LAYOUT(MODEL_NONE), BEGIN_LOOP(), CALLNATIVE(bhv_lll_floating_wood_bridge_loop), END_LOOP(), }; // 1E4C const BehaviorScript bhvVolcanoFlames[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), BEGIN_LOOP(), OBJ_ADD_INT(oAnimState, 1), CALLNATIVE(bhv_volcano_flames_loop), END_LOOP(), }; // 1E6C const BehaviorScript bhvLllRotatingHexagonalRing[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(lll_seg7_collision_rotating_platform), BEGIN_LOOP(), CALLNATIVE(bhv_lll_rotating_hexagonal_ring_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1E94 const BehaviorScript bhvLllSinkingRectangularPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(lll_seg7_collision_slow_tilting_platform), OBJ_SET_FLOAT(oCollisionDistance, 0x07D0), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_lll_sinking_rectangular_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1EC4 const BehaviorScript bhvLllSinkingSquarePlatforms[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(lll_seg7_collision_sinking_pyramids), OBJ_ADD_FLOAT(oPosY, 5), OBJ_SET_FLOAT(oCollisionDistance, 0x07D0), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_lll_sinking_square_platforms_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1EF8 const BehaviorScript bhvLllTiltingInvertedPyramid[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(lll_seg7_collision_inverted_pyramid), OBJ_ADD_FLOAT(oPosY, 5), OBJ_SET_POS(), CALLNATIVE(bhv_platform_normals_init), BEGIN_LOOP(), CALLNATIVE(bhv_tilting_inverted_pyramid_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 1F30 const BehaviorScript bhvUnused1F30[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BREAK(), }; // 1F3C const BehaviorScript bhvKoopaShell[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_koopa_shell_loop), END_LOOP(), }; // 1F68 const BehaviorScript bhvKoopaShellFlame[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), INTERACT_TYPE(INTERACT_FLAME), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_koopa_shell_flame_loop), TEXT_ANIM_RATE(oAnimState, 0x0002), END_LOOP(), }; // 1F90 const BehaviorScript bhvToxBox[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(ssl_seg7_collision_tox_box), OBJ_ADD_FLOAT(oPosY, 256), OBJ_SET_FLOAT(oDrawingDistance, 0x1F40), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_tox_box_loop), END_LOOP(), }; // 1FBC const BehaviorScript bhvPiranhaPlant[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, piranha_plant_seg6_anims_0601C31C), ANIMATE(0x00), INTERACT_TYPE(INTERACT_DAMAGE), SET_HITBOX(0x0064, 0x00C8), OBJ_SET_FLOAT2(0x0032, 0x00C8), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_INT(oDamageOrCoinValue, 3), OBJ_SET_INT(oNumLootCoins, 5), OBJ_CHILD(MODEL_BUBBLE, bhvPiranhaPlantBubble), OBJ_SET_FLOAT(oDrawingDistance, 0x07D0), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_piranha_plant_loop), END_LOOP(), }; // 2018 const BehaviorScript bhvLllHexagonalMesh[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(lll_hexagonal_mesh_seg3_collision_0301CECC), BEGIN_LOOP(), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 2038 const BehaviorScript bhvLllBowserPuzzlePiece[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(lll_seg7_collision_puzzle_piece), OBJ_SET_POS(), OBJ_SET_FLOAT(oCollisionDistance, 0x0BB8), BEGIN_LOOP(), CALLNATIVE(bhv_lll_bowser_puzzle_piece_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 2068 const BehaviorScript bhvLllBowserPuzzle[] = { BEGIN(OBJ_LIST_SPAWNER), GRAPH_CLEAR(), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_ADD_FLOAT(oPosZ, -50), BEGIN_LOOP(), CALLNATIVE(bhv_lll_bowser_puzzle_loop), END_LOOP(), }; // 2088 const BehaviorScript bhvTuxiesMother[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, penguin_seg5_anims_05008B74), ANIMATE(0x03), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000), OBJ_SET_POS(), INTERACT_TYPE(INTERACT_TEXT), SET_HITBOX(0x00C8, 0x012C), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_tuxies_mother_loop), END_LOOP(), }; // 20D8 const BehaviorScript bhvPenguinBaby[] = { BEGIN(OBJ_LIST_GENACTOR), BREAK(), }; // 20E0 const BehaviorScript bhvUnused20E0[] = { BEGIN(OBJ_LIST_GENACTOR), BREAK(), }; // 20E8 const BehaviorScript bhvSmallPenguin[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, penguin_seg5_anims_05008B74), ANIMATE(0x00), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000), OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE), OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_HOLDABLE_NPC), OBJ_SET_INT(oIntangibleTimer, 0), SET_HITBOX(0x0028, 0x0028), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_small_penguin_loop), END_LOOP(), }; // 213C const BehaviorScript bhvFish2[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_SET_INT(oBehParams2ndByte, 0x0000), GOTO(bhvLargeFishGroup + 1), }; // 214C const BehaviorScript bhvFish3[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_SET_INT(oBehParams2ndByte, 1), GOTO(bhvLargeFishGroup + 1), }; // 215C const BehaviorScript bhvLargeFishGroup[] = { BEGIN(OBJ_LIST_DEFAULT), // bhvFishCommon: GRAPH_CLEAR(), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_fish_loop), END_LOOP(), }; // 2178 const BehaviorScript bhvFishGroup2[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_fish_group_2_loop), END_LOOP(), }; // 2194 const BehaviorScript bhvWdwExpressElevator[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wdw_seg7_collision_express_elevator_platform), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_wdw_express_elevator_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 21C0 const BehaviorScript bhvWdwExpressElevatorPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wdw_seg7_collision_express_elevator_platform), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 21E4 const BehaviorScript bhvChirpChirp[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_SET_INT(oBirdChirpChirpUnkF4, 1), GOTO(bhvChirpChirpUnused), }; // 21F4 const BehaviorScript bhvChirpChirpUnused[] = { GRAPH_CLEAR(), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_bird_chirp_chirp_loop), END_LOOP(), }; // 220C const BehaviorScript bhvBub[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, bub_seg6_anims_06012354), ANIMATE(0x00), COLLISION_SPHERE(0x0014, 0x000A, 0x000A), INTERACT_TYPE(INTERACT_DAMAGE), OBJ_SET_INT(oDamageOrCoinValue, 1), OBJ_SET_POS(), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_cheep_cheep_loop), END_LOOP(), }; // 2250 const BehaviorScript bhvExclamationBox[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(exclamation_box_outline_seg8_collision_08025F78), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oCollisionDistance, 0x012C), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_exclamation_box_loop), END_LOOP(), }; // 227C const BehaviorScript bhvRotatingExclamationMark[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), SCALE(200), BEGIN_LOOP(), CALLNATIVE(bhv_rotatin_exclamation_box_loop), OBJ_ADD_INT(oMoveAngleYaw, 0x800), END_LOOP(), }; // 229C const BehaviorScript bhvSoundSpawner[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), DELAY(3), CALLNATIVE(bhv_sound_spawner_init), DELAY(30), DEACTIVATE(), }; // 22B8 const BehaviorScript bhvRockSolid[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(jrb_seg7_collision_rock_solid), BEGIN_LOOP(), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 22D8 const BehaviorScript bhvBowserSubDoor[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(ddd_seg7_collision_bowser_sub_door), OBJ_SET_FLOAT(oDrawingDistance, 0x4E20), OBJ_SET_FLOAT(oCollisionDistance, 0x4E20), BEGIN_LOOP(), CALLNATIVE(bhv_bowsers_sub_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 2308 const BehaviorScript bhvBowsersSub[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_FLOAT(oDrawingDistance, 0x4E20), OBJ_SET_FLOAT(oCollisionDistance, 0x4E20), COLLISION_DATA(ddd_seg7_collision_submarine), BEGIN_LOOP(), CALLNATIVE(bhv_bowsers_sub_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 2338 const BehaviorScript bhvSushiShark[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, sushi_seg5_anims_0500AE54), OBJ_SPAWN(MODEL_NONE, bhvSushiSharkCollisionChild), COLLISION_SPHERE(0x0064, 0x0032, 0x0032), INTERACT_TYPE(INTERACT_DAMAGE), OBJ_SET_INT(oDamageOrCoinValue, 3), OBJ_SET_POS(), ANIMATE(0x00), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_sushi_shark_loop), END_LOOP(), }; // 2388 const BehaviorScript bhvSushiSharkCollisionChild[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), GRAPH_CLEAR(), BEGIN_LOOP(), CALLNATIVE(bhv_sushi_shark_collision_loop), END_LOOP(), }; // 23A4 const BehaviorScript bhvJrbSlidingBox[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(jrb_seg7_collision_floating_box), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_jrb_sliding_box_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 23D0 const BehaviorScript bhvShipPart3[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_ship_part_3_loop), END_LOOP(), }; // 23EC const BehaviorScript bhvInSunkenShip3[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(jrb_seg7_collision_in_sunken_ship_3), OBJ_SET_POS(), OBJ_SET_FLOAT(oCollisionDistance, 0x0FA0), BEGIN_LOOP(), CALLNATIVE(bhv_ship_part_3_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 241C const BehaviorScript bhvSunkenShipPart[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), SCALE(50), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_sunken_ship_part_loop), END_LOOP(), }; // 243C const BehaviorScript bhvUnused243C[] = { OBJ_SET_INT(oFaceAnglePitch, 0xE958), OBJ_SET_INT(oFaceAngleYaw, 0xEE6C), OBJ_SET_INT(oFaceAngleRoll, 0x0C80), RETURN(), }; // 244C const BehaviorScript bhvSunkenShipPart2[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), SCALE(100), OBJ_SET_FLOAT(oDrawingDistance, 0x1770), OBJ_SET_POS(), CALL(bhvUnused243C), BREAK(), }; // 246C const BehaviorScript bhvInSunkenShip[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(jrb_seg7_collision_in_sunken_ship), GOTO(bhvInSunkenShip2 + 1 + 2), }; // 2480 const BehaviorScript bhvInSunkenShip2[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(jrb_seg7_collision_in_sunken_ship_2), // .LbhvInSunkenShip248C: OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oCollisionDistance, 0x0FA0), CALL(bhvUnused243C), BEGIN_LOOP(), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 24AC const BehaviorScript bhvMarioDustGenerator[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00000001), GRAPH_CLEAR(), OBJ_CHILD(MODEL_MIST, bhvWhitePuff1), OBJ_CHILD(MODEL_SMOKE, bhvWhitePuff2), DELAY(1), DEACTIVATE(), }; // 24DC const BehaviorScript bhvWhitePuff1[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00000001), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_white_puff_1_loop), END_LOOP(), }; // 2500 const BehaviorScript bhvWhitePuff2[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(7), CALLNATIVE(bhv_white_puff_2_loop), OBJ_ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), }; // 2528 const BehaviorScript bhvWhitePuffSmoke2[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(7), CALLNATIVE(bhv_white_puff_2_loop), CALLNATIVE(obj_move_using_fvel_and_gravity), OBJ_ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), }; // 2558 const BehaviorScript bhvPurpleSwitchHiddenBoxes[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_SET_INT(oBehParams2ndByte, 2), GOTO(bhvFloorSwitchHardcodedModel + 1), }; // 2568 const BehaviorScript bhvBlueCoinSwitch[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(blue_coin_switch_seg8_collision_08000E98), BEGIN_LOOP(), CALLNATIVE(bhv_blue_coin_switch_loop), END_LOOP(), }; // 2588 const BehaviorScript bhvHiddenBlueCoin[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_SET_INT(oInteractType, INTERACT_COIN), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), SET_HITBOX(0x0064, 0x0040), OBJ_SET_INT(oDamageOrCoinValue, 0x0005), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_INT(oAnimState, -1), BEGIN_LOOP(), CALLNATIVE(bhv_hidden_blue_coin_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 25C0 const BehaviorScript bhvOpenableCageDoor[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_openable_cage_door_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 25E0 const BehaviorScript bhvOpenableGrill[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_openable_grill_loop), END_LOOP(), }; // 25F8 const BehaviorScript bhvWaterLevelDiamond[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), SET_HITBOX(0x0046, 0x001E), OBJ_SET_FLOAT(oCollisionDistance, 0x00C8), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_water_level_diamond_loop), END_LOOP(), }; // 2620 const BehaviorScript bhvInitializeChangingWaterLevel[] = { BEGIN(OBJ_LIST_DEFAULT), BEGIN_LOOP(), CALLNATIVE(bhv_init_changing_water_level_loop), END_LOOP(), }; // 2634 const BehaviorScript bhvTornadoSandParticle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_tweester_sand_particle_loop), END_LOOP(), }; // 2650 const BehaviorScript bhvTornado[] = { BEGIN(OBJ_LIST_POLELIKE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_PHYSICS(0x001E, 0xFE70, 0x0000, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000), DROP_FLOOR(), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_tweester_loop), END_LOOP(), }; // 2684 const BehaviorScript bhvMerryGoRoundBooManager[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_merry_go_round_boo_manager_loop), END_LOOP(), }; // 269C const BehaviorScript bhvAnimatedTexture[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_animated_texture_loop), OBJ_ADD_INT(oAnimState, 1), TEXT_ANIM_RATE(oAnimState, 0x0002), END_LOOP(), }; // 26D4 const BehaviorScript bhvBooInCastle[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_SET_FLOAT(oGraphYOffset, 0x003C), OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_boo_in_castle_loop), END_LOOP(), }; // 2710 const BehaviorScript bhvBooWithCage[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_SET_INT(oDamageOrCoinValue, 3), OBJ_SET_FLOAT2(0x0050, 0x0078), SET_HITBOX(0x00B4, 0x008C), OBJ_SET_FLOAT(oGraphYOffset, 0x003C), OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), CALLNATIVE(bhv_boo_with_cage_init), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_boo_with_cage_loop), END_LOOP(), }; // 2768 const BehaviorScript bhvBalconyBigBoo[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_SET_INT(oBehParams2ndByte, 2), OBJ_SET_INT(oBigBooNumMinionBoosKilled, 10), GOTO(bhvGhostHuntBigBoo + 1), }; // 277C const BehaviorScript bhvMerryGoRoundBigBoo[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_SET_INT(oBehParams2ndByte, 1), // Set number of minion boos killed to 10, which is greater than 5 so that the boo always loads without needing to kill any boos. OBJ_SET_INT(oBigBooNumMinionBoosKilled, 10), GOTO(bhvGhostHuntBigBoo + 1), }; // 2790 const BehaviorScript bhvGhostHuntBigBoo[] = { BEGIN(OBJ_LIST_GENACTOR), // common_big_boo_bhv: OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), CALLNATIVE(bhv_init_room), CALLNATIVE(bhv_boo_init), BEGIN_LOOP(), CALLNATIVE(bhv_big_boo_loop), END_LOOP(), }; // 27D0 const BehaviorScript bhvCourtyardBooTriplet[] = { BEGIN(OBJ_LIST_DEFAULT), GRAPH_CLEAR(), CALLNATIVE(bhv_courtyard_boo_triplet_init), DEACTIVATE(), }; // 27E4 const BehaviorScript bhvBoo[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_SET_INT(oBehParams2ndByte, 1), GOTO(bhvGhostHuntBoo + 1), }; // 27F4 const BehaviorScript bhvMerryGoRoundBoo[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_SET_INT(oBehParams2ndByte, 2), GOTO(bhvGhostHuntBoo + 1), }; // 2804 const BehaviorScript bhvGhostHuntBoo[] = { BEGIN(OBJ_LIST_GENACTOR), // common_boo_bhv: # 2808 OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_POS(), OBJ_SET_INT(oDamageOrCoinValue, 2), SET_HITBOX(0x008C, 0x0050), OBJ_SET_FLOAT2(0x0028, 0x003C), OBJ_SET_FLOAT(oGraphYOffset, 30), CALLNATIVE(bhv_init_room), OBJ_CHILD(MODEL_YELLOW_COIN, bhvCoinInsideBoo), OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), CALLNATIVE(bhv_boo_init), BEGIN_LOOP(), CALLNATIVE(bhv_boo_loop), END_LOOP(), }; // 286C const BehaviorScript bhvHiddenStaircaseStep[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(bbh_seg7_collision_staircase_step), OBJ_SET_INT(oRoom, 0x0001), OBJ_SET_FLOAT(oCollisionDistance, 0x03E8), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 2898 const BehaviorScript bhvBooBossSpawnedBridge[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(bbh_seg7_collision_staircase_step), OBJ_SET_INT(oRoom, 0x0001), OBJ_SET_FLOAT(oCollisionDistance, 0x03E8), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_boo_boss_spawned_bridge_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 28CC const BehaviorScript bhvBbhTiltingTrapPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(bbh_seg7_collision_tilt_floor_platform), OBJ_SET_POS(), OBJ_SET_INT(oRoom, 0x0002), BEGIN_LOOP(), CALLNATIVE(bhv_bbh_tilting_trap_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 28FC const BehaviorScript bhvHauntedBookshelf[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(bbh_seg7_collision_haunted_bookshelf), OBJ_SET_POS(), OBJ_SET_INT(oRoom, 0x0006), BEGIN_LOOP(), CALLNATIVE(bhv_haunted_bookshelf_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 292C const BehaviorScript bhvMeshElevator[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(bbh_seg7_collision_mesh_elevator), OBJ_SET_POS(), OBJ_SET_INT(oRoom, 0x000C), OBJ_SET_INT(oBehParams2ndByte, 0x0004), CALLNATIVE(bhv_elevator_init), BEGIN_LOOP(), CALLNATIVE(bhv_elevator_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 2968 const BehaviorScript bhvMerryGoRound[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(bbh_seg7_collision_merry_go_round), OBJ_SET_FLOAT(oCollisionDistance, 0x07D0), OBJ_SET_INT(oRoom, 0x000A), BEGIN_LOOP(), CALLNATIVE(bhv_merry_go_round_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; #ifndef VERSION_JP // 2998 const BehaviorScript bhvPlaysMusicTrackWhenTouched[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_play_music_track_when_touched_loop), END_LOOP(), }; #endif // 2998 const BehaviorScript bhvInsideCannon[] = { BREAK(), }; // 299C const BehaviorScript bhvBetaBowserAnchor[] = { BEGIN(OBJ_LIST_DESTRUCTIVE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_POS(), SET_HITBOX(0x0064, 0x012C), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), OBJ_ADD_INT(oAnimState, 1), CALLNATIVE(bhv_beta_bowser_anchor_loop), END_LOOP(), }; // 29CC const BehaviorScript bhvStaticCheckeredPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(checkerboard_platform_seg8_collision_0800D710), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_static_checkered_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 29F8 const BehaviorScript bhvUnused2A10[] = { BEGIN(OBJ_LIST_DEFAULT), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BREAK(), }; // 2A08 const BehaviorScript bhvUnusedFakeStar[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), OBJ_ADD_INT(oFaceAnglePitch, 256), OBJ_ADD_INT(oFaceAngleYaw, 256), END_LOOP(), }; // What is this? static const BehaviorScript unused_1[] = { BREAK(), BREAK(), BREAK(), BREAK(), }; // 2A30 const BehaviorScript bhvStaticObject[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BREAK(), }; // 2A3C const BehaviorScript bhvUnused2A54[] = { BEGIN(OBJ_LIST_DEFAULT), BREAK(), }; // 2A44 const BehaviorScript bhvCastleFloorTrap[] = { BEGIN(OBJ_LIST_DEFAULT), GRAPH_CLEAR(), CALLNATIVE(bhv_castle_floor_trap_init), BEGIN_LOOP(), CALLNATIVE(bhv_castle_floor_trap_loop), END_LOOP(), }; // 2A64 const BehaviorScript bhvFloorTrapInCastle[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(inside_castle_seg7_collision_floor_trap), BEGIN_LOOP(), CALLNATIVE(bhv_floor_trap_in_castle_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 2A8C const BehaviorScript bhvTree[] = { BEGIN(OBJ_LIST_POLELIKE), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oInteractType, INTERACT_POLE), SET_HITBOX(0x0050, 0x01F4), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(BehClimbDetectLoop), END_LOOP(), }; // 2AB8 const BehaviorScript bhvSparkle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(9), OBJ_ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), }; // 2AD8 const BehaviorScript bhvSparkleSpawn[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_sparkle_spawn_loop), END_LOOP(), }; // 2AF0 const BehaviorScript bhvSpecialTripleJumpSparkles[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00000008), BEGIN(OBJ_LIST_UNIMPORTANT), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oGraphYOffset, 25), OBJ_SET_FLOAT_RAND(oMarioParticleFlags, 0xFFCE, 0x0064), OBJ_SUM_FLOAT(oPosX, oPosX, oMarioParticleFlags), OBJ_SET_FLOAT_RAND(oMarioParticleFlags, 0xFFCE, 0x0064), OBJ_SUM_FLOAT(oPosZ, oPosZ, oMarioParticleFlags), OBJ_SET_FLOAT_RAND(oMarioParticleFlags, 0xFFCE, 0x0064), OBJ_SUM_FLOAT(oPosY, oPosY, oMarioParticleFlags), OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(12), OBJ_ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), }; // 2B44 const BehaviorScript bhvScuttlebug[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, scuttlebug_seg6_anims_06015064), ANIMATE(0x00), OBJ_PHYSICS(0x0050, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000), OBJ_SET_POS(), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_scuttlebug_loop), END_LOOP(), }; // 2B88 const BehaviorScript bhvScuttlebugSpawn[] = { BEGIN(OBJ_LIST_SPAWNER), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_scuttlebug_spawn_loop), END_LOOP(), }; // 2BA0 const BehaviorScript bhvWhompKingBoss[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_SET_INT(oBehParams2ndByte, 1), OBJ_SET_INT(oHealth, 0x0003), GOTO(bhvSmallWhomp + 1 + 1), }; // 2BB4 const BehaviorScript bhvSmallWhomp[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_SET_INT(oNumLootCoins, 5), // .Lbeh_whomp_2BD4: OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, whomp_seg6_anims_06020A04), COLLISION_DATA(whomp_seg6_collision_06020A0C), ANIMATE(0x00), OBJ_PHYSICS(0x0000, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_whomp_loop), END_LOOP(), }; // 2BFC const BehaviorScript bhvWaterSplash[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(3), OBJ_ADD_INT(oAnimState, 1), CALLNATIVE(bhv_water_splash_loop), DELAY(1), CALLNATIVE(bhv_water_splash_loop), END_REPEAT(), BEGIN_REPEAT(5), OBJ_ADD_INT(oAnimState, 1), DELAY(1), END_REPEAT(), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00000040), DEACTIVATE(), }; // 2C48 const BehaviorScript bhvWaterDrops[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_water_drops_loop), END_LOOP(), }; // 2C64 const BehaviorScript bhvWaterSurfaceWhiteWave[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), #ifndef VERSION_JP OBJ_SET_INT(oFaceAnglePitch, 0), OBJ_SET_INT(oFaceAngleYaw, 0), OBJ_SET_INT(oFaceAngleRoll, 0), #endif CALLNATIVE(bhv_water_surface_white_wave_init), OBJ_ADD_FLOAT(oPosY, 5), OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(6), OBJ_ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), }; // 2C8C const BehaviorScript bhvObjectBubbleRipples[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), #ifdef VERSION_JP OBJ_SET_FLOAT(oFaceAnglePitch, 0), OBJ_SET_FLOAT(oFaceAngleYaw, 0), OBJ_SET_FLOAT(oFaceAngleRoll, 0), #endif #ifndef VERSION_JP OBJ_SET_INT(oFaceAnglePitch, 0), OBJ_SET_INT(oFaceAngleYaw, 0), OBJ_SET_INT(oFaceAngleRoll, 0), #endif OBJ_SET_INT(oAnimState, -1), CALLNATIVE(bhv_object_bubble_ripples_init), BEGIN_REPEAT(6), OBJ_ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), }; // 2CBC const BehaviorScript bhvSurfaceWaves[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), #ifdef VERSION_JP OBJ_SET_FLOAT(oFaceAnglePitch, 0), OBJ_SET_FLOAT(oFaceAngleYaw, 0), OBJ_SET_FLOAT(oFaceAngleRoll, 0), #endif #ifndef VERSION_JP OBJ_SET_INT(oFaceAnglePitch, 0), OBJ_SET_INT(oFaceAngleYaw, 0), OBJ_SET_INT(oFaceAngleRoll, 0), #endif OBJ_SET_INT(oAnimState, -1), OBJ_ADD_INT(oAnimState, 1), BEGIN_LOOP(), CALLNATIVE(bhv_surface_waves_loop), OBJ_ADD_INT(oAnimState, 1), BEGIN_REPEAT(6), CALLNATIVE(bhv_surface_waves_loop), END_REPEAT(), CALLNATIVE(bhv_surface_waves_loop), END_LOOP(), }; // 2D04 const BehaviorScript bhvWaterSurfaceWhiteWave2[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), #ifdef VERSION_JP OBJ_SET_FLOAT(oFaceAnglePitch, 0), OBJ_SET_FLOAT(oFaceAngleYaw, 0), OBJ_SET_FLOAT(oFaceAngleRoll, 0), #endif #ifndef VERSION_JP OBJ_SET_INT(oFaceAnglePitch, 0), OBJ_SET_INT(oFaceAngleYaw, 0), OBJ_SET_INT(oFaceAngleRoll, 0), #endif OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(6), OBJ_ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), }; // 2D2C const BehaviorScript bhvWavesGenerator[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), GRAPH_CLEAR(), BEGIN_REPEAT(5), SPAWN_ADDR(&D_8032FE18), END_REPEAT_NOBREAK(), DELAY(1), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00000100), DEACTIVATE(), }; // 2D58 const BehaviorScript bhvSurfaceWaveShrinking[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), GRAPH_CLEAR(), BEGIN_REPEAT(18), SPAWN_ADDR(&D_8032FDD0), END_REPEAT_NOBREAK(), CALLNATIVE(bhv_surface_wave_shrinking_init), DELAY(1), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00001000), DEACTIVATE(), }; // 2D8C const BehaviorScript bhvWaterType[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), GOTO(bhvWaveTrailOnSurface + 1 + 1 + 2), }; // 2D9C const BehaviorScript bhvWaveTrailOnSurface[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_BIT_CLEAR_INT32(oActiveParticleFlags, 0x00000400), // .Lbeh_wave_trail_2DD0: # 2DAC OBJ_SET_FLOAT(oFaceAnglePitch, 0), OBJ_SET_FLOAT(oFaceAngleYaw, 0), OBJ_SET_FLOAT(oFaceAngleRoll, 0), OBJ_SET_INT(oAnimState, -1), BEGIN_REPEAT(8), OBJ_ADD_INT(oAnimState, 1), CALLNATIVE(bhv_wave_trail_loop), DELAY(1), CALLNATIVE(bhv_wave_trail_loop), END_REPEAT(), DEACTIVATE(), }; // 2DE0 const BehaviorScript bhvTinyWhiteWindParticle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_white_wind_particle_loop), END_LOOP(), }; // 2DFC const BehaviorScript bhvWindParticle[] = { BEGIN(OBJ_LIST_POLELIKE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_white_wind_particle_loop), END_LOOP(), }; // 2E18 const BehaviorScript bhvSnowmanWindBlowing[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_snowman_wind_blowing_loop), END_LOOP(), }; // 2E34 const BehaviorScript bhvWalkingPenguin[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(penguin_seg5_collision_05008B88), OBJ_SET_ANIMS(oAnimations, penguin_seg5_anims_05008B74), ANIMATE(0x00), OBJ_PHYSICS(0x0000, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000), SCALE(600), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_walking_penguin_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 2E84 const BehaviorScript bhvYellowBall[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BREAK(), }; UNUSED static const u64 behavior_data_unused_0 = 0; // 2EA0 const BehaviorScript bhvMario[] = { BEGIN(OBJ_LIST_PLAYER), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_OR_INT(oFlags, OBJ_FLAG_0100), OBJ_OR_INT(oUnk94, 0x0001), SET_HITBOX(0x0025, 0x00A0), BEGIN_LOOP(), CALLNATIVE(try_print_debug_mario_level_info), CALLNATIVE(bhv_mario_update), CALLNATIVE(try_do_mario_debug_object_spawn), END_LOOP(), }; // 2ED8 const BehaviorScript bhvToadMessage[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, toad_seg6_anims_0600FB58), ANIMATE(0x06), INTERACT_TYPE(INTERACT_TEXT), SET_HITBOX(0x0050, 0x0064), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_init_room), CALLNATIVE(bhvToadMessage_init), BEGIN_LOOP(), CALLNATIVE(bhvToadMessage_loop), END_LOOP(), }; // 2F20 const BehaviorScript bhvUnlockDoorStar[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhvUnlockDoorStar_init), BEGIN_LOOP(), CALLNATIVE(bhvUnlockDoorStar_loop), END_LOOP(), }; // 2F40 const BehaviorScript bhvWarps60[] = { BREAK(), }; // 2F44 const BehaviorScript bhvWarps64[] = { BREAK(), }; // 2F48 const BehaviorScript bhvWarps68[] = { BREAK(), }; // 2F4C const BehaviorScript bhvWarps6C[] = { BREAK(), }; // 2F50 const BehaviorScript bhvWarps70[] = { BREAK(), }; // 2F54 const BehaviorScript bhvWarps74[] = { BREAK(), }; // 2F58 const BehaviorScript bhvWarps78[] = { BREAK(), }; // 2F5C const BehaviorScript bhvWarps7C[] = { BREAK(), }; // 2F60 const BehaviorScript bhvWarps80[] = { BREAK(), }; // 2F64 const BehaviorScript bhvWarps84[] = { BREAK(), }; // 2F68 const BehaviorScript bhvWarps88[] = { BREAK(), }; // 2F6C const BehaviorScript bhvWarps8C[] = { BREAK(), }; // 2F70 const BehaviorScript bhvWarps90[] = { BREAK(), }; // 2F74 const BehaviorScript bhvWarps94[] = { BREAK(), }; UNUSED static const u64 behavior_data_unused_1 = 0; // 2F80 const BehaviorScript bhvRandomAnimatedTexture[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oGraphYOffset, 0xFFF0), BILLBOARD(), OBJ_SET_INT(oAnimState, -1), BEGIN_LOOP(), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 2FA0 const BehaviorScript bhvYellowBackgroundInMenu[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(beh_yellow_background_menu_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(beh_yellow_background_menu_loop), END_LOOP(), }; // 2FC4 const BehaviorScript bhvMenuButton[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_menu_button_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_menu_button_loop), END_LOOP(), }; // 2FE8 const BehaviorScript bhvMenuButtonManager[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_0800 | OBJ_FLAG_0020 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_menu_button_manager_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_menu_button_manager_loop), END_LOOP(), }; // 300C const BehaviorScript bhvActSelectorStarType[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_act_selector_star_type_loop), END_LOOP(), }; // 3028 const BehaviorScript bhvActSelector[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_act_selector_init), BEGIN_LOOP(), CALLNATIVE(bhv_act_selector_loop), END_LOOP(), }; // 3048 const BehaviorScript bhvMovingYellowCoin[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), SET_HITBOX(0x0064, 0x0040), OBJ_SET_INT(oInteractType, INTERACT_COIN), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_INT(oAnimState, -1), CALLNATIVE(bhv_moving_yellow_coin_init), BEGIN_LOOP(), CALLNATIVE(bhv_moving_yellow_coin_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 3084 const BehaviorScript bhvMovingBlueCoin[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_INT(oAnimState, -1), CALLNATIVE(bhv_moving_blue_coin_init), BEGIN_LOOP(), CALLNATIVE(bhv_moving_blue_coin_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 30B4 const BehaviorScript bhvBlueCoinSliding[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_INT(oAnimState, -1), CALLNATIVE(bhv_blue_coin_sliding_jumping_init), BEGIN_LOOP(), CALLNATIVE(bhv_blue_coin_sliding_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 30E4 const BehaviorScript bhvBlueCoinJumping[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_INT(oAnimState, -1), CALLNATIVE(bhv_blue_coin_sliding_jumping_init), BEGIN_LOOP(), CALLNATIVE(bhv_blue_coin_jumping_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 3114 const BehaviorScript bhvSeaweed[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_ANIMS(oAnimations, seaweed_seg6_anims_0600A4D4), ANIMATE(0x00), CALLNATIVE(bhv_seaweed_init), BEGIN_LOOP(), END_LOOP(), }; // 3138 const BehaviorScript bhvSeaweedBundle[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), DROP_FLOOR(), CALLNATIVE(bhv_seaweed_bundle_init), BEGIN_LOOP(), END_LOOP(), }; // 3154 const BehaviorScript bhvBobomb[] = { BEGIN(OBJ_LIST_DESTRUCTIVE), OBJ_OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, bobomb_seg8_anims_0802396C), DROP_FLOOR(), ANIMATE(0x00), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_POS(), CALLNATIVE(bhv_bobomb_init), BEGIN_LOOP(), CALLNATIVE(bhv_bobomb_loop), END_LOOP(), }; // 318C const BehaviorScript bhvBobombFuseSmoke[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_INT(oAnimState, -1), CALLNATIVE(bhv_bobomb_fuse_smoke_init), DELAY(1), BEGIN_LOOP(), CALLNATIVE(BehDustSmokeLoop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 31BC const BehaviorScript bhvBobombBuddy[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, bobomb_seg8_anims_0802396C), INTERACT_TYPE(INTERACT_TEXT), DROP_FLOOR(), SET_HITBOX(0x0064, 0x003C), ANIMATE(0x00), OBJ_SET_INT(oBobombBuddyRole, 0x0000), OBJ_SET_POS(), CALLNATIVE(bhv_bobomb_buddy_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_bobomb_buddy_loop), END_LOOP(), }; // The only difference between this and the previous behavior are what objFlags and objVarFC are set to, why didn't they just use a jump? // 3208 const BehaviorScript bhvBobombBuddyOpensCannon[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, bobomb_seg8_anims_0802396C), INTERACT_TYPE(INTERACT_TEXT), DROP_FLOOR(), SET_HITBOX(0x0064, 0x003C), ANIMATE(0x00), OBJ_SET_INT(oBobombBuddyRole, 0x0001), OBJ_SET_POS(), CALLNATIVE(bhv_bobomb_buddy_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_bobomb_buddy_loop), END_LOOP(), }; // 3254 const BehaviorScript bhvCannonClosed[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(cannon_lid_seg8_collision_08004950), OBJ_SET_POS(), CALLNATIVE(bhv_cannon_closed_init), BEGIN_LOOP(), CALLNATIVE(bhv_cannon_closed_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3288 const BehaviorScript bhvWhirlpool[] = { BEGIN(OBJ_LIST_POLELIKE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_whirlpool_init), BEGIN_LOOP(), CALLNATIVE(bhv_whirlpool_loop), END_LOOP(), }; // 32A8 const BehaviorScript bhvJetStream[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_jet_stream_loop), END_LOOP(), }; // 32C0 const BehaviorScript bhvMessagePanel[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(wooden_signpost_seg3_collision_0302DD80), INTERACT_TYPE(INTERACT_TEXT), OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_SIGN), DROP_FLOOR(), SET_HITBOX(0x0096, 0x0050), OBJ_SET_INT(oWoodenPostTotalMarioAngle, 0), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(load_object_collision_model), OBJ_SET_INT(oInteractStatus, 0), END_LOOP(), }; // 3304 const BehaviorScript bhvSignOnWall[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), INTERACT_TYPE(INTERACT_TEXT), OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_SIGN), SET_HITBOX(0x0096, 0x0050), OBJ_SET_INT(oWoodenPostTotalMarioAngle, 0), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_INT(oInteractStatus, 0), END_LOOP(), }; // 3334 const BehaviorScript bhvHomingAmp[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, amp_seg8_anims_08004034), ANIMATE(0x00), OBJ_SET_FLOAT(oGraphYOffset, 0x0028), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_homing_amp_init), BEGIN_LOOP(), CALLNATIVE(bhv_homing_amp_loop), END_LOOP(), }; // 3368 const BehaviorScript bhvCirclingAmp[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, amp_seg8_anims_08004034), ANIMATE(0x00), OBJ_SET_FLOAT(oGraphYOffset, 0x0028), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_circling_amp_init), BEGIN_LOOP(), CALLNATIVE(bhv_circling_amp_loop), END_LOOP(), }; // 339C const BehaviorScript bhvButterfly[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, butterfly_seg3_anims_030056B0), DROP_FLOOR(), OBJ_SET_FLOAT(oGraphYOffset, 0x0005), CALLNATIVE(bhv_butterfly_init), BEGIN_LOOP(), CALLNATIVE(bhv_butterfly_loop), END_LOOP(), }; // 33CC const BehaviorScript bhvHoot[] = { BEGIN(OBJ_LIST_POLELIKE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, hoot_seg5_anims_05005768), OBJ_SET_INT(oInteractType, INTERACT_HOOT), SET_HITBOX(0x004B, 0x004B), CALLNATIVE(bhv_hoot_init), BEGIN_LOOP(), CALLNATIVE(bhv_hoot_loop), END_LOOP(), }; // 3400 const BehaviorScript bhvBetaHoldableObject[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE), DROP_FLOOR(), SET_HITBOX(0x0028, 0x0032), CALLNATIVE(bhv_beta_holdable_object_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_beta_holdable_object_loop), END_LOOP(), }; // 3434 const BehaviorScript bhvCarrySomething1[] = { BEGIN(OBJ_LIST_DEFAULT), BREAK(), }; // 343C const BehaviorScript bhvCarrySomething2[] = { BEGIN(OBJ_LIST_DEFAULT), BREAK(), }; // 3444 const BehaviorScript bhvCarrySomething3[] = { BEGIN(OBJ_LIST_DEFAULT), BREAK(), }; // 344C const BehaviorScript bhvCarrySomething4[] = { BEGIN(OBJ_LIST_DEFAULT), BREAK(), }; // 3454 const BehaviorScript bhvCarrySomething5[] = { BEGIN(OBJ_LIST_DEFAULT), BREAK(), }; // 345C const BehaviorScript bhvCarrySomething6[] = { BEGIN(OBJ_LIST_DEFAULT), BREAK(), }; // 3464 const BehaviorScript bhvObjectBubble[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, (OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oAnimState, -1), CALLNATIVE(bhv_object_bubble_init), OBJ_SET_FLOAT_RAND(oVelY, 0x0003, 0x0006), OBJ_SET_INT_RAND_RSHIFT(oMoveAngleYaw, 0x0000, 0x0000), DELAY(1), BEGIN_LOOP(), CALLNATIVE(bhv_object_bubble_loop), END_LOOP(), }; // 34A4 const BehaviorScript bhvObjectWaterWave[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oFaceAnglePitch, 0), OBJ_SET_FLOAT(oFaceAngleYaw, 0), OBJ_SET_FLOAT(oFaceAngleRoll, 0), OBJ_SET_INT(oAnimState, -1), CALLNATIVE(bhv_object_water_wave_init), OBJ_ADD_INT(oAnimState, 1), DELAY(6), BEGIN_LOOP(), CALLNATIVE(bhv_object_water_wave_loop), OBJ_ADD_INT(oAnimState, 1), BEGIN_REPEAT(6), CALLNATIVE(bhv_object_water_wave_loop), END_REPEAT(), END_LOOP(), }; // 34F0 const BehaviorScript bhvExplosion[] = { BEGIN(OBJ_LIST_DESTRUCTIVE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), INTERACT_TYPE(INTERACT_DAMAGE), OBJ_SET_INT(oDamageOrCoinValue, 2), OBJ_SET_INT(oIntangibleTimer, 0), COLLISION_SPHERE(0x0096, 0x0096, 0x0096), OBJ_SET_INT(oAnimState, -1), CALLNATIVE(bhv_explosion_init), BEGIN_LOOP(), CALLNATIVE(bhv_explosion_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 3538 const BehaviorScript bhvBobombBullyDeathSmoke[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, (OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_INT(oAnimState, -1), CALLNATIVE(bhv_bobomb_bully_death_smoke_init), DELAY(1), BEGIN_LOOP(), CALLNATIVE(BehDustSmokeLoop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 3568 const BehaviorScript bhvSmoke[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, (OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_INT(oAnimState, -1), DELAY(1), BEGIN_LOOP(), CALLNATIVE(BehDustSmokeLoop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 3590 const BehaviorScript bhvBobombExplosionBubble[] = { BEGIN(OBJ_LIST_DEFAULT), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_bobomb_explosion_bubble_init), OBJ_ADD_FLOAT_RAND(oPosX, -50, 100), OBJ_ADD_FLOAT_RAND(oPosY, -50, 100), OBJ_ADD_FLOAT_RAND(oPosZ, -50, 100), CALL(bhvBobombExplosionBubble3600), DELAY(1), BEGIN_LOOP(), CALL(bhvBobombExplosionBubble3600), CALLNATIVE(bhv_bobomb_explosion_bubble_loop), END_LOOP(), }; // 35E0 const BehaviorScript bhvBobombExplosionBubble3600[] = { OBJ_ADD_FLOAT_RAND(oPosX, -2, 4), OBJ_ADD_FLOAT_RAND(oPosZ, -2, 4), RETURN(), }; // 35F4 const BehaviorScript bhvRespawner[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_respawner_loop), END_LOOP(), }; // 360C const BehaviorScript bhvSmallBully[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, bully_seg5_anims_0500470C), DROP_FLOOR(), OBJ_SET_POS(), CALLNATIVE(bhv_small_bully_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_bully_loop), END_LOOP(), }; // 3640 const BehaviorScript bhvBigBully[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, bully_seg5_anims_0500470C), DROP_FLOOR(), OBJ_SET_POS(), CALLNATIVE(bhv_big_bully_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_bully_loop), END_LOOP(), }; // 3674 const BehaviorScript bhvBigBullyWithMinions[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, bully_seg5_anims_0500470C), OBJ_SET_POS(), CALLNATIVE(bhv_big_bully_init), CALLNATIVE(bhv_big_bully_with_minions_init), BEGIN_LOOP(), CALLNATIVE(bhv_big_bully_with_minions_loop), END_LOOP(), }; // 36A8 const BehaviorScript bhvSmallChillBully[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, chilly_chief_seg6_anims_06003994), DROP_FLOOR(), OBJ_SET_POS(), OBJ_SET_INT(oBullySubtype, 0x0010), CALLNATIVE(bhv_small_bully_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_bully_loop), END_LOOP(), }; // 36E0 const BehaviorScript bhvBigChillBully[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, chilly_chief_seg6_anims_06003994), DROP_FLOOR(), OBJ_SET_POS(), OBJ_SET_INT(oBullySubtype, 0x0010), CALLNATIVE(bhv_big_bully_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_bully_loop), END_LOOP(), }; // 3718 const BehaviorScript bhvJetStreamRingSpawner[] = { BEGIN(OBJ_LIST_DEFAULT), UNHIDE(), BEGIN_LOOP(), CALLNATIVE(bhv_jet_stream_ring_spawner_loop), END_LOOP(), }; // 3730 const BehaviorScript bhvJetStreamWaterRing[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_ANIMS(oAnimations, water_ring_seg6_anims_06013F7C), COLLISION_SPHERE(0x004B, 0x0014, 0x0014), INTERACT_TYPE(INTERACT_WATER_RING), OBJ_SET_INT(oDamageOrCoinValue, 2), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_jet_stream_water_ring_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_jet_stream_water_ring_loop), END_LOOP(), }; // 3778 const BehaviorScript bhvMantaRayWaterRing[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_ANIMS(oAnimations, water_ring_seg6_anims_06013F7C), COLLISION_SPHERE(0x004B, 0x0014, 0x0014), INTERACT_TYPE(INTERACT_WATER_RING), OBJ_SET_INT(oDamageOrCoinValue, 2), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_manta_ray_water_ring_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_manta_ray_water_ring_loop), END_LOOP(), }; // 37C0 const BehaviorScript bhvMantaRayRingManager[] = { BEGIN(OBJ_LIST_DEFAULT), BEGIN_LOOP(), END_LOOP(), }; // 37CC const BehaviorScript bhvBowserBomb[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oIntangibleTimer, 0), COLLISION_SPHERE(0x0028, 0x0028, 0x0028), DELAY(1), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_bowser_bomb_loop), END_LOOP(), }; // 37FC const BehaviorScript bhvBowserBombExplosion[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_FLOAT(oGraphYOffset, 0xFEE0), OBJ_SET_INT(oAnimState, -1), BEGIN_LOOP(), CALLNATIVE(bhv_bowser_bomb_explosion_loop), END_LOOP(), }; // 3820 const BehaviorScript bhvBowserBombSmoke[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_FLOAT(oGraphYOffset, 0xFEE0), OBJ_SET_INT(oOpacity, 0x00FF), OBJ_SET_INT(oAnimState, -1), BEGIN_LOOP(), CALLNATIVE(bhv_bowser_bomb_smoke_loop), END_LOOP(), }; // 3848 const BehaviorScript bhvCelebrationStar[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_celebration_star_init), BEGIN_LOOP(), CALLNATIVE(bhv_celebration_star_loop), END_LOOP(), }; // 3868 const BehaviorScript bhvCelebrationStarSparkle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oGraphYOffset, 25), OBJ_SET_INT(oAnimState, -1), BEGIN_LOOP(), OBJ_ADD_INT(oAnimState, 1), CALLNATIVE(bhv_celebration_star_sparkle_loop), END_LOOP(), }; // 3890 const BehaviorScript bhvStarKeyCollectionPuffSpawner[] = { BEGIN(OBJ_LIST_DEFAULT), BILLBOARD(), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oAnimState, -1), BEGIN_LOOP(), CALLNATIVE(bhv_star_key_collection_puff_spawner_loop), END_LOOP(), }; // 38B0 const BehaviorScript bhvLllDrawbridgeSpawner[] = { BEGIN(OBJ_LIST_DEFAULT), UNHIDE(), BEGIN_LOOP(), CALLNATIVE(bhv_lll_drawbridge_spawner_loop), END_LOOP(), }; // 38C8 const BehaviorScript bhvLllDrawbridge[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(lll_seg7_collision_drawbridge), BEGIN_LOOP(), CALLNATIVE(bhv_lll_drawbridge_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 38F0 const BehaviorScript bhvSmallBomp[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wf_seg7_collision_small_bomp), CALLNATIVE(bhv_small_bomp_init), BEGIN_LOOP(), CALLNATIVE(bhv_small_bomp_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3920 const BehaviorScript bhvLargeBomp[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wf_seg7_collision_large_bomp), CALLNATIVE(bhv_large_bomp_init), BEGIN_LOOP(), CALLNATIVE(bhv_large_bomp_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3950 const BehaviorScript bhvWfSlidingPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wf_seg7_collision_sliding_brick_platform), CALLNATIVE(bhv_wf_sliding_platform_init), BEGIN_LOOP(), CALLNATIVE(bhv_wf_sliding_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3980 const BehaviorScript bhvMoneybag[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, moneybag_seg6_anims_06005E5C), DROP_FLOOR(), OBJ_SET_POS(), OBJ_SET_INT(oIntangibleTimer, -1), CALLNATIVE(bhv_moneybag_init), BEGIN_LOOP(), CALLNATIVE(bhv_moneybag_loop), END_LOOP(), }; // 39B4 const BehaviorScript bhvMoneybagHidden[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oGraphYOffset, 0x001B), BILLBOARD(), SET_HITBOX(0x006E, 0x0064), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_INT(oAnimState, -1), BEGIN_LOOP(), OBJ_ADD_INT(oAnimState, 1), CALLNATIVE(bhv_moneybag_hidden_loop), END_LOOP(), }; // 39E8 const BehaviorScript bhvPitBowlingBall[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_FLOAT(oGraphYOffset, 130), CALLNATIVE(bhv_bob_pit_bowling_ball_init), BEGIN_LOOP(), CALLNATIVE(bhv_bob_pit_bowling_ball_loop), END_LOOP(), }; // 3A10 const BehaviorScript bhvFreeBowlingBall[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_FLOAT(oGraphYOffset, 130), CALLNATIVE(bhv_free_bowling_ball_init), BEGIN_LOOP(), CALLNATIVE(bhv_free_bowling_ball_loop), END_LOOP(), }; // 3A38 const BehaviorScript bhvBowlingBall[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_FLOAT(oGraphYOffset, 130), CALLNATIVE(bhv_bowling_ball_init), BEGIN_LOOP(), CALLNATIVE(bhv_bowling_ball_loop), END_LOOP(), }; // 3A60 const BehaviorScript bhvTtmBowlingBallSpawner[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oBBallSpawnerPeriodMinus1, 0x003F), CALLNATIVE(bhv_generic_bowling_ball_spawner_init), BEGIN_LOOP(), CALLNATIVE(bhv_generic_bowling_ball_spawner_loop), END_LOOP(), }; // 3A84 const BehaviorScript bhvBobBowlingBallSpawner[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oBBallSpawnerPeriodMinus1, 0x007F), CALLNATIVE(bhv_generic_bowling_ball_spawner_init), BEGIN_LOOP(), CALLNATIVE(bhv_generic_bowling_ball_spawner_loop), END_LOOP(), }; // 3AA8 const BehaviorScript bhvThiBowlingBallSpawner[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_thi_bowling_ball_spawner_loop), END_LOOP(), }; // 3AC0 const BehaviorScript bhvRrCruiserWing[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_rr_cruiser_wing_init), BEGIN_LOOP(), CALLNATIVE(bhv_rr_cruiser_wing_loop), END_LOOP(), }; // 3AE0 const BehaviorScript bhvSpindel[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_0010 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(ssl_seg7_collision_spindel), CALLNATIVE(bhv_spindel_init), BEGIN_LOOP(), CALLNATIVE(bhv_spindel_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3B10 const BehaviorScript bhvSslMovingPyramidWall[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_0010 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(ssl_seg7_collision_0702808C), CALLNATIVE(bhv_ssl_moving_pyramid_wall_init), BEGIN_LOOP(), CALLNATIVE(bhv_ssl_moving_pyramid_wall_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3B40 const BehaviorScript bhvPyramidElevator[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(ssl_seg7_collision_pyramid_elevator), OBJ_SET_POS(), OBJ_SET_FLOAT(oCollisionDistance, 0x4E20), CALLNATIVE(bhv_pyramid_elevator_init), BEGIN_LOOP(), CALLNATIVE(bhv_pyramid_elevator_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3B78 const BehaviorScript bhvPyramidElevatorTrajectoryMarkerBall[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_pyramid_elevator_trajectory_marker_ball_loop), END_LOOP(), }; // 3B94 const BehaviorScript bhvPyramidTop[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(ssl_seg7_collision_pyramid_top), OBJ_SET_POS(), OBJ_SET_FLOAT(oCollisionDistance, 0x4E20), CALLNATIVE(bhv_pyramid_top_init), BEGIN_LOOP(), CALLNATIVE(bhv_pyramid_top_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3BCC const BehaviorScript bhvPyramidTopFragment[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_pyramid_top_fragment_init), BEGIN_LOOP(), CALLNATIVE(bhv_pyramid_top_fragment_loop), END_LOOP(), }; // 3BEC const BehaviorScript bhvPyramidPillarTouchDetector[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), SET_HITBOX(0x0032, 0x0032), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_pyramid_pillar_touch_detector_loop), END_LOOP(), }; // 3C10 const BehaviorScript bhvWaterfallSoundLoop[] = { BEGIN(OBJ_LIST_DEFAULT), BEGIN_LOOP(), CALLNATIVE(bhv_waterfall_sound_loop), END_LOOP(), }; // 3C24 const BehaviorScript bhvVolcanoSoundLoop[] = { BEGIN(OBJ_LIST_DEFAULT), BEGIN_LOOP(), CALLNATIVE(bhv_volcano_sound_loop), END_LOOP(), }; // 3C38 const BehaviorScript bhvCastleFlagWaving[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_ANIMS(oAnimations, castle_grounds_seg7_anims_flags), ANIMATE(0x00), CALLNATIVE(bhv_castle_flag_init), BEGIN_LOOP(), END_LOOP(), }; // 3C5C const BehaviorScript bhvBirdsSoundLoop[] = { BEGIN(OBJ_LIST_DEFAULT), BEGIN_LOOP(), CALLNATIVE(bhv_birds_sound_loop), END_LOOP(), }; // 3C70 const BehaviorScript bhvAmbientSounds[] = { BEGIN(OBJ_LIST_DEFAULT), CALLNATIVE(bhv_ambient_sounds_init), BEGIN_LOOP(), END_LOOP(), }; // 3C84 const BehaviorScript bhvSandSoundLoop[] = { BEGIN(OBJ_LIST_DEFAULT), BEGIN_LOOP(), CALLNATIVE(bhv_sand_sound_loop), END_LOOP(), }; // 3C98 const BehaviorScript bhvHiddenAt120Stars[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(castle_grounds_seg7_collision_cannon_grill), OBJ_SET_FLOAT(oCollisionDistance, 0x0FA0), CALLNATIVE(bhv_castle_cannon_grate_init), BEGIN_LOOP(), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3CC4 const BehaviorScript bhvSnowmansBottom[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_snowmans_bottom_init), BEGIN_LOOP(), CALLNATIVE(bhv_snowmans_bottom_loop), END_LOOP(), }; // 3CEC const BehaviorScript bhvSnowmansHead[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_FLOAT(oGraphYOffset, 0x006E), CALLNATIVE(bhv_snowmans_head_init), BEGIN_LOOP(), CALLNATIVE(bhv_snowmans_head_loop), END_LOOP(), }; // 3D14 const BehaviorScript bhvSnowmansBodyCheckpoint[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_snowmans_body_checkpoint_loop), END_LOOP(), }; // 3D2C const BehaviorScript bhvBigSnowmanWhole[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oGraphYOffset, 0x00B4), INTERACT_TYPE(INTERACT_TEXT), SET_HITBOX(0x00D2, 0x0226), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), END_LOOP(), }; // 3D54 const BehaviorScript bhvBigBoulder[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_FLOAT(oGraphYOffset, 0x00B4), CALLNATIVE(bhv_big_boulder_init), OBJ_SET_FLOAT(oCollisionDistance, 0x4E20), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_big_boulder_loop), END_LOOP(), }; // 3D80 const BehaviorScript bhvBigBoulderGenerator[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_big_boulder_generator_loop), END_LOOP(), }; // 3D98 const BehaviorScript bhvWingCap[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_wing_cap_init), BEGIN_LOOP(), CALLNATIVE(bhv_wing_vanish_cap_loop), END_LOOP(), }; // 3DB8 const BehaviorScript bhvMetalCap[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_metal_cap_init), BEGIN_LOOP(), CALLNATIVE(bhv_metal_cap_loop), END_LOOP(), }; // 3DD8 const BehaviorScript bhvNormalCap[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_normal_cap_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_normal_cap_loop), END_LOOP(), }; // 3DFC const BehaviorScript bhvVanishCap[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_vanish_cap_init), BEGIN_LOOP(), CALLNATIVE(bhv_wing_vanish_cap_loop), END_LOOP(), }; // 3E1C const BehaviorScript bhvStar[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_init_room), CALLNATIVE(bhv_collect_star_init), BEGIN_LOOP(), CALLNATIVE(bhv_collect_star_loop), END_LOOP(), }; // 3E44 const BehaviorScript bhvStarSpawnCoordinates[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_collect_star_init), CALLNATIVE(bhv_star_spawn_init), BEGIN_LOOP(), CALLNATIVE(bhv_star_spawn_loop), END_LOOP(), }; // 3E6C const BehaviorScript bhvHiddenRedCoinStar[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_hidden_red_coin_star_init), BEGIN_LOOP(), CALLNATIVE(bhv_hidden_red_coin_star_loop), END_LOOP(), }; // 3E8C const BehaviorScript bhvRedCoin[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_SET_INT(oAnimState, -1), CALLNATIVE(bhv_init_room), CALLNATIVE(bhv_red_coin_init), BEGIN_LOOP(), CALLNATIVE(bhv_red_coin_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 3EC4 const BehaviorScript bhvBowserCourseRedCoinStar[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_bowser_course_red_coin_star_loop), END_LOOP(), }; // 3EDC const BehaviorScript bhvHiddenStar[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_hidden_star_init), BEGIN_LOOP(), CALLNATIVE(bhv_hidden_star_loop), END_LOOP(), }; // 3EFC const BehaviorScript bhvHiddenStarTrigger[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), SET_HITBOX(0x0064, 0x0064), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_hidden_star_trigger_loop), END_LOOP(), }; // 3F20 const BehaviorScript bhvTtmRollingLog[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(ttm_seg7_collision_pitoune_2), OBJ_SET_POS(), OBJ_SET_FLOAT(oCollisionDistance, 0x07D0), CALLNATIVE(bhv_ttm_rolling_log_init), BEGIN_LOOP(), CALLNATIVE(bhv_rolling_log_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3F58 const BehaviorScript bhvLllVolcanoFallingTrap[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(lll_seg7_collision_falling_wall), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhvLllVolcanoFallingTrap_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3F84 const BehaviorScript bhvLllRollingLog[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(lll_seg7_collision_pitoune), OBJ_SET_POS(), OBJ_SET_FLOAT(oCollisionDistance, 0x07D0), CALLNATIVE(bhv_lll_rolling_log_init), BEGIN_LOOP(), CALLNATIVE(bhv_rolling_log_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 3FBC const BehaviorScript bhv1upWalking[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), COLLISION_SPHERE(0x001E, 0x001E, 0x0000), OBJ_SET_FLOAT(oGraphYOffset, 30), CALLNATIVE(bhv_1up_common_init), BEGIN_LOOP(), CALLNATIVE(bhv_1up_walking_loop), END_LOOP(), }; // 3FF0 const BehaviorScript bhv1upRunningAway[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), COLLISION_SPHERE(0x001E, 0x001E, 0x0000), OBJ_SET_FLOAT(oGraphYOffset, 30), CALLNATIVE(bhv_1up_common_init), BEGIN_LOOP(), CALLNATIVE(bhv_1up_running_away_loop), END_LOOP(), }; // 4024 const BehaviorScript bhv1upSliding[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), COLLISION_SPHERE(0x001E, 0x001E, 0x0000), OBJ_SET_FLOAT(oGraphYOffset, 30), CALLNATIVE(bhv_1up_common_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_1up_sliding_loop), END_LOOP(), }; // 405C const BehaviorScript bhv1Up[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), COLLISION_SPHERE(0x001E, 0x001E, 0x0000), OBJ_SET_FLOAT(oGraphYOffset, 30), CALLNATIVE(bhv_1up_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_1up_loop), END_LOOP(), }; // 4094 const BehaviorScript bhv1upJumpOnApproach[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), COLLISION_SPHERE(0x001E, 0x001E, 0x0000), OBJ_SET_FLOAT(oGraphYOffset, 30), CALLNATIVE(bhv_1up_common_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_1up_jump_on_approach_loop), END_LOOP(), }; // 40CC const BehaviorScript bhvHidden1up[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), COLLISION_SPHERE(0x001E, 0x001E, 0x0000), OBJ_SET_FLOAT(oGraphYOffset, 30), CALLNATIVE(bhv_1up_common_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_1up_hidden_loop), END_LOOP(), }; // 4104 const BehaviorScript bhvHidden1upTrigger[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), SET_HITBOX(0x0064, 0x0064), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_1up_hidden_trigger_loop), END_LOOP(), }; // 4128 const BehaviorScript bhvHidden1upInPole[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), COLLISION_SPHERE(0x001E, 0x001E, 0x0000), OBJ_SET_FLOAT(oGraphYOffset, 30), CALLNATIVE(bhv_1up_common_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_1up_hidden_in_pole_loop), END_LOOP(), }; // 4160 const BehaviorScript bhvHidden1upInPoleTrigger[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), SET_HITBOX(0x0064, 0x0064), OBJ_SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALLNATIVE(bhv_1up_hidden_in_pole_trigger_loop), END_LOOP(), }; // 4184 const BehaviorScript bhvHidden1upInPoleSpawner[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_1up_hidden_in_pole_spawner_loop), END_LOOP(), }; // 419C const BehaviorScript bhvControllablePlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_0800 | OBJ_FLAG_0020 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(hmc_seg7_collision_controllable_platform), OBJ_SET_POS(), CALLNATIVE(bhv_controllable_platform_init), BEGIN_LOOP(), CALLNATIVE(bhv_controllable_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 41D0 const BehaviorScript bhvControllablePlatformSub[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(hmc_seg7_collision_controllable_platform_sub), BEGIN_LOOP(), CALLNATIVE(bhv_controllable_platform_sub_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 41F8 const BehaviorScript bhvBreakableBoxSmall[] = { BEGIN(OBJ_LIST_DESTRUCTIVE), OBJ_OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_POS(), CALLNATIVE(bhv_breakable_box_small_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_breakable_box_small_loop), END_LOOP(), }; // 4224 const BehaviorScript bhvSlidingSnowMound[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(sl_seg7_collision_sliding_snow_mound), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_sliding_snow_mound_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4250 const BehaviorScript bhvSnowMoundSpawn[] = { BEGIN(OBJ_LIST_DEFAULT), BEGIN_LOOP(), CALLNATIVE(bhv_snow_mound_spawn_loop), END_LOOP(), }; // 4264 const BehaviorScript bhvWdwSquareFloatingPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wdw_seg7_collision_square_floating_platform), OBJ_SET_FLOAT(oFloatingPlatformUnkFC, 0x0040), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_floating_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4294 const BehaviorScript bhvWdwRectangularFloatingPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(wdw_seg7_collision_rect_floating_platform), OBJ_SET_FLOAT(oFloatingPlatformUnkFC, 0x0040), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_floating_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 42C4 const BehaviorScript bhvJrbFloatingPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), COLLISION_DATA(jrb_seg7_collision_floating_platform), OBJ_SET_FLOAT(oFloatingPlatformUnkFC, 0x0040), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_floating_platform_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 42F4 const BehaviorScript bhvArrowLift[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(wdw_seg7_collision_arrow_lift), OBJ_SET_INT_RAND_RSHIFT(oArrowLiftUnk100, 0x0001, 0x0020), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_arrow_lift_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4328 const BehaviorScript bhvOrangeNumber[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_SET_POS(), CALLNATIVE(bhv_orange_number_init), BEGIN_LOOP(), CALLNATIVE(bhv_orange_number_loop), END_LOOP(), }; // 4350 const BehaviorScript bhvMantaRay[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_0010 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, manta_seg5_anims_05008EB4), ANIMATE(0x00), CALLNATIVE(bhv_manta_ray_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_manta_ray_loop), END_LOOP(), }; // 4380 const BehaviorScript bhvFallingPillar[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), CALLNATIVE(bhv_falling_pillar_init), BEGIN_LOOP(), CALLNATIVE(bhv_falling_pillar_loop), END_LOOP(), }; // 43A4 const BehaviorScript bhvFallingPillarHitbox[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_falling_pillar_hitbox_loop), END_LOOP(), }; // 43C0 const BehaviorScript bhvPillarBase[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(jrb_seg7_collision_pillar_base), BEGIN_LOOP(), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 43E0 const BehaviorScript bhvJrbFloatingBox[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), COLLISION_DATA(jrb_seg7_collision_floating_box), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_jrb_floating_box_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 440C const BehaviorScript bhvDecorativePendulum[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_decorative_pendulum_init), BEGIN_LOOP(), CALLNATIVE(bhv_decorative_pendulum_loop), END_LOOP(), }; // 442C const BehaviorScript bhvTreasureChestsShip[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), DROP_FLOOR(), CALLNATIVE(bhv_treasure_chest_ship_init), BEGIN_LOOP(), CALLNATIVE(bhv_treasure_chest_ship_loop), END_LOOP(), }; // 4450 const BehaviorScript bhvTreasureChestsJrb[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), DROP_FLOOR(), CALLNATIVE(bhv_treasure_chest_jrb_init), BEGIN_LOOP(), CALLNATIVE(bhv_treasure_chest_jrb_loop), END_LOOP(), }; // 4474 const BehaviorScript bhvTreasureChests[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), DROP_FLOOR(), CALLNATIVE(bhv_treasure_chest_init), BEGIN_LOOP(), CALLNATIVE(bhv_treasure_chest_loop), END_LOOP(), }; // 4498 const BehaviorScript bhvTreasureChestBottom[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), DROP_FLOOR(), CALLNATIVE(bhv_treasure_chest_bottom_init), OBJ_SET_INT(oIntangibleTimer, -1), BEGIN_LOOP(), CALLNATIVE(bhv_treasure_chest_bottom_loop), END_LOOP(), }; // 44C0 const BehaviorScript bhvTreasureChestTop[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_treasure_chest_top_loop), END_LOOP(), }; // 44DC const BehaviorScript bhvMips[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, mips_seg6_anims_06015634), OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE), DROP_FLOOR(), SET_HITBOX(0x0032, 0x004B), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(bhv_mips_init), BEGIN_LOOP(), CALLNATIVE(bhv_mips_loop), END_LOOP(), }; // 4518 const BehaviorScript bhvYoshi[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, yoshi_seg5_anims_05024100), INTERACT_TYPE(INTERACT_TEXT), DROP_FLOOR(), SET_HITBOX(0x00A0, 0x0096), ANIMATE(0x00), OBJ_SET_POS(), CALLNATIVE(bhv_yoshi_init), BEGIN_LOOP(), OBJ_SET_INT(oIntangibleTimer, 0), CALLNATIVE(BehYoshiLoop), END_LOOP(), }; // 4560 const BehaviorScript bhvKoopa[] = { BEGIN(OBJ_LIST_PUSHABLE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, koopa_seg6_anims_06011364), ANIMATE(0x09), OBJ_SET_POS(), OBJ_PHYSICS(0x0032, 0xFE70, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000), SCALE(150), OBJ_SET_FLOAT(oKoopaAgility, 1), CALLNATIVE(bhv_koopa_init), BEGIN_LOOP(), CALLNATIVE(bhv_koopa_update), END_LOOP(), }; // 45B0 const BehaviorScript bhvKoopaRaceEndpoint[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_CHILD_PARAM(0x0000, MODEL_KOOPA_FLAG, bhvKoopaFlag), BEGIN_LOOP(), CALLNATIVE(bhv_koopa_race_endpoint_update), END_LOOP(), }; // 45D8 const BehaviorScript bhvKoopaFlag[] = { BEGIN(OBJ_LIST_POLELIKE), INTERACT_TYPE(INTERACT_POLE), SET_HITBOX(0x0050, 0x02BC), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, koopa_flag_seg6_anims_06001028), ANIMATE(0x00), BEGIN_LOOP(), CALLNATIVE(BehClimbDetectLoop), END_LOOP(), }; // 4614 const BehaviorScript bhvPokey[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_POS(), OBJ_PHYSICS(0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_pokey_update), END_LOOP(), }; // 4648 const BehaviorScript bhvPokeyBodyPart[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_PHYSICS(0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BILLBOARD(), BEGIN_LOOP(), CALLNATIVE(bhv_pokey_body_part_update), END_LOOP(), }; // 4678 const BehaviorScript bhvSwoop[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, swoop_seg6_anims_060070D0), OBJ_SET_POS(), OBJ_PHYSICS(0x0032, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000), CALLNATIVE(bhv_init_room), SCALE(0), BEGIN_LOOP(), CALLNATIVE(bhv_swoop_update), END_LOOP(), }; // 46BC const BehaviorScript bhvFlyGuy[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, flyguy_seg8_anims_08011A64), ANIMATE(0x00), OBJ_SET_POS(), OBJ_PHYSICS(0x0032, 0x0000, 0x0000, 0x0000, 0x03E8, 0x0258, 0x0000, 0x0000), CALLNATIVE(bhv_init_room), OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_TWIRL_BOUNCE), OBJ_SET_FLOAT(oGraphYOffset, 30), SCALE(150), BEGIN_LOOP(), CALLNATIVE(bhv_fly_guy_update), END_LOOP(), }; // 470C const BehaviorScript bhvGoomba[] = { BEGIN(OBJ_LIST_PUSHABLE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, goomba_seg8_anims_0801DA4C), OBJ_SET_POS(), OBJ_PHYSICS(0x0028, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0000, 0x0000, 0x0000), CALLNATIVE(bhv_goomba_init), BEGIN_LOOP(), CALLNATIVE(bhv_goomba_update), END_LOOP(), }; // 4750 const BehaviorScript bhvGoombaTripletSpawner[] = { BEGIN(OBJ_LIST_PUSHABLE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), BEGIN_LOOP(), CALLNATIVE(bhv_goomba_triplet_spawner_update), END_LOOP(), }; // 476C const BehaviorScript bhvChainChomp[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, chain_chomp_seg6_anims_06025178), ANIMATE(0x00), OBJ_PHYSICS(0x0000, 0xFE70, 0xFFCE, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000), UNHIDE(), OBJ_SET_POS(), OBJ_SET_FLOAT(oGraphYOffset, 0x00F0), SCALE(200), OBJ_CHILD_PARAM(0x0000, MODEL_WOODEN_POST, bhvWoodenPost), BEGIN_LOOP(), CALLNATIVE(bhv_chain_chomp_update), END_LOOP(), }; // 47C4 const BehaviorScript bhvChainChompChainPart[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_PHYSICS(0x0000, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_FLOAT(oGraphYOffset, 0x0028), SCALE(200), BEGIN_LOOP(), CALLNATIVE(bhv_chain_chomp_chain_part_update), END_LOOP(), }; // 47FC const BehaviorScript bhvWoodenPost[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(poundable_pole_collision_06002490), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_PHYSICS(0x0000, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_INT(oNumLootCoins, 5), DROP_FLOOR(), OBJ_SET_POS(), SCALE(50), BEGIN_LOOP(), CALLNATIVE(bhv_wooden_post_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4848 const BehaviorScript bhvChainChompGate[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(bob_seg7_collision_chain_chomp_gate), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_chain_chomp_gate_init), BEGIN_LOOP(), CALLNATIVE(bhv_chain_chomp_gate_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4878 const BehaviorScript bhvWigglerHead[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, wiggler_seg5_anims_0500EC8C), OBJ_SET_POS(), OBJ_PHYSICS(0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), UNHIDE(), SCALE(400), OBJ_SET_FLOAT(oWigglerFallThroughFloorsHeight, 5000), BEGIN_LOOP(), CALLNATIVE(bhv_wiggler_update), END_LOOP(), }; // 48C0 const BehaviorScript bhvWigglerBody[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_ANIMS(oAnimations, wiggler_seg5_anims_0500C874), OBJ_PHYSICS(0x0000, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), SCALE(400), BEGIN_LOOP(), CALLNATIVE(bhv_wiggler_body_part_update), END_LOOP(), }; // 48F8 const BehaviorScript bhvEnemyLakitu[] = { BEGIN(OBJ_LIST_PUSHABLE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, lakitu_enemy_seg5_anims_050144D4), ANIMATE(0x00), OBJ_SET_POS(), OBJ_PHYSICS(0x0028, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_enemy_lakitu_update), END_LOOP(), }; // 4934 const BehaviorScript bhvCameraLakitu[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, lakitu_seg6_anims_060058F8), ANIMATE(0x00), CALLNATIVE(bhv_init_room), CALLNATIVE(bhv_camera_lakitu_init), BEGIN_LOOP(), CALLNATIVE(bhv_camera_lakitu_update), END_LOOP(), }; // 4968 const BehaviorScript bhvCloud[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_SET_POS(), OBJ_SET_INT(oOpacity, 0x00F0), BEGIN_LOOP(), CALLNATIVE(bhv_cloud_update), END_LOOP(), }; // 498C const BehaviorScript bhvCloudPart[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_INT(oOpacity, 0x00F0), BEGIN_LOOP(), CALLNATIVE(bhv_cloud_part_update), END_LOOP(), }; // 49A8 const BehaviorScript bhvSpiny[] = { BEGIN(OBJ_LIST_PUSHABLE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, spiny_seg5_anims_05016EAC), ANIMATE(0x00), OBJ_PHYSICS(0x0028, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_spiny_update), END_LOOP(), }; // 49E0 const BehaviorScript bhvMontyMole[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, monty_mole_seg5_anims_05007248), ANIMATE(0x03), OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), UNHIDE(), OBJ_SET_INT(oIntangibleTimer, -1), OBJ_SET_FLOAT(oGraphYOffset, 0xFFC4), SCALE(150), DELAY(1), CALLNATIVE(bhv_monty_mole_init), BEGIN_LOOP(), CALLNATIVE(bhv_monty_mole_update), END_LOOP(), }; // 4A38 const BehaviorScript bhvMontyMoleHole[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), SCALE(150), BEGIN_LOOP(), CALLNATIVE(bhv_monty_mole_hole_update), END_LOOP(), }; // 4A58 const BehaviorScript bhvMontyMoleRock[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_FLOAT(oGraphYOffset, 0x000A), SCALE(200), BEGIN_LOOP(), CALLNATIVE(bhv_monty_mole_rock_update), END_LOOP(), }; // 4A90 const BehaviorScript bhvPlatformOnTrack[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_PHYSICS(0x0032, 0xFF9C, 0xFFCE, 0x0064, 0x03E8, 0x00C8, 0x0000, 0x0000), CALLNATIVE(bhv_init_room), CALLNATIVE(bhv_platform_on_track_init), BEGIN_LOOP(), CALLNATIVE(bhv_platform_on_track_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4AD4 const BehaviorScript bhvTrackBall[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), CALLNATIVE(bhv_init_room), SCALE(15), BEGIN_LOOP(), CALLNATIVE(bhv_track_ball_update), END_LOOP(), }; // 4AFC const BehaviorScript bhvSeesawPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_seesaw_platform_init), BEGIN_LOOP(), CALLNATIVE(bhv_seesaw_platform_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4B24 const BehaviorScript bhvFerrisWheelAxle[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_ADD_INT(oMoveAngleYaw, 0x4000), CALLNATIVE(bhv_ferris_wheel_axle_init), BEGIN_LOOP(), OBJ_ADD_INT(oFaceAngleRoll, 400), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4B4C const BehaviorScript bhvFerrisWheelPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_ferris_wheel_platform_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4B6C const BehaviorScript bhvWaterBombSpawner[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), BEGIN_LOOP(), CALLNATIVE(bhv_water_bomb_spawner_update), END_LOOP(), }; // 4B88 const BehaviorScript bhvWaterBomb[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_PHYSICS(0x0078, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_water_bomb_update), END_LOOP(), }; // 4BB4 const BehaviorScript bhvWaterBombShadow[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), SCALE(150), BEGIN_LOOP(), CALLNATIVE(bhv_water_bomb_shadow_update), END_LOOP(), }; // 4BD0 const BehaviorScript bhvTTCRotatingSolid[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_SET_FLOAT(oCollisionDistance, 0x01C2), CALLNATIVE(bhv_ttc_rotating_solid_init), OBJ_SET_INT(oTTCRotatingSolidNumTurns, 1), BEGIN_LOOP(), CALLNATIVE(bhv_ttc_rotating_solid_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4C04 const BehaviorScript bhvTTCPendulum[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(ttc_seg7_collision_clock_pendulum), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_FLOAT(oCollisionDistance, 0x05DC), CALLNATIVE(bhv_ttc_pendulum_init), OBJ_SET_FLOAT(oTTCPendulumAccelDir, 1), BEGIN_LOOP(), CALLNATIVE(bhv_ttc_pendulum_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4C3C const BehaviorScript bhvTTCTreadmill[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_FLOAT(oCollisionDistance, 0x02EE), CALLNATIVE(bhv_ttc_treadmill_init), DELAY(1), BEGIN_LOOP(), CALLNATIVE(bhv_ttc_treadmill_update), CALLNATIVE(obj_compute_vel_xz), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4C74 const BehaviorScript bhvTTCMovingBar[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(ttc_seg7_collision_sliding_surface), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_SET_FLOAT(oCollisionDistance, 0x0226), CALLNATIVE(bhv_ttc_moving_bar_init), BEGIN_LOOP(), CALLNATIVE(bhv_ttc_moving_bar_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4CAC const BehaviorScript bhvTTCCog[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_FLOAT(oCollisionDistance, 0x0190), CALLNATIVE(bhv_ttc_cog_init), BEGIN_LOOP(), CALLNATIVE(bhv_ttc_cog_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4CD8 const BehaviorScript bhvTTCPitBlock[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_SET_FLOAT(oCollisionDistance, 0x015E), CALLNATIVE(bhv_ttc_pit_block_init), BEGIN_LOOP(), CALLNATIVE(bhv_ttc_pit_block_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4D08 const BehaviorScript bhvTTCElevator[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(ttc_seg7_collision_clock_platform), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_SET_FLOAT(oCollisionDistance, 0x0190), CALLNATIVE(bhv_ttc_elevator_init), OBJ_SET_FLOAT(oTTCElevatorDir, 1), BEGIN_LOOP(), CALLNATIVE(bhv_ttc_elevator_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4D44 const BehaviorScript bhvTTC2DRotator[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(ttc_seg7_collision_clock_main_rotation), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oCollisionDistance, 0x0708), CALLNATIVE(bhv_ttc_2d_rotator_init), BEGIN_LOOP(), CALLNATIVE(bhv_ttc_2d_rotator_update), END_LOOP(), }; // 4D70 const BehaviorScript bhvTTCSpinner[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(ttc_seg7_collision_rotating_clock_platform2), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oCollisionDistance, 0x01C2), BEGIN_LOOP(), CALLNATIVE(bhv_ttc_spinner_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4D9C const BehaviorScript bhvMrBlizzard[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, snowman_seg5_anims_0500D118), ANIMATE(0x00), OBJ_SET_POS(), OBJ_PHYSICS(0x001E, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), CALLNATIVE(bhv_mr_blizzard_init), OBJ_SET_FLOAT(oMrBlizzardUnkF4, 1), BEGIN_LOOP(), CALLNATIVE(bhv_mr_blizzard_update), END_LOOP(), }; // 4DE8 const BehaviorScript bhvMrBlizzardSnowball[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_PHYSICS(0x001E, 0xFED4, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), SCALE(200), OBJ_ADD_INT(oMoveAngleYaw, -0x5B58), OBJ_SET_FLOAT(oForwardVel, 5), OBJ_SET_FLOAT(oVelY, -1), OBJ_SET_FLOAT(oGraphYOffset, 10), BEGIN_LOOP(), CALLNATIVE(bhv_mr_blizzard_snowball), END_LOOP(), }; // 4E2C const BehaviorScript bhvSlidingPlatform2[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), CALLNATIVE(bhv_sliding_plat_2_init), BEGIN_LOOP(), CALLNATIVE(bhv_sliding_plat_2_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4E58 const BehaviorScript bhvOctagonalPlatformRotating[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), CALLNATIVE(bhv_rotating_octagonal_plat_init), BEGIN_LOOP(), CALLNATIVE(bhv_rotating_octagonal_plat_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4E80 const BehaviorScript bhvAnimatesOnFloorSwitchPress[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_FLOAT(oCollisionDistance, 0x1F40), CALLNATIVE(bhv_animates_on_floor_switch_press_init), BEGIN_LOOP(), CALLNATIVE(bhv_animates_on_floor_switch_press_loop), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4EAC const BehaviorScript bhvActivatedBackAndForthPlatform[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), CALLNATIVE(bhv_activated_back_and_forth_platform_init), BEGIN_LOOP(), CALLNATIVE(bhv_activated_back_and_forth_platform_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4ED8 const BehaviorScript bhvRecoveryHeart[] = { BEGIN(OBJ_LIST_LEVEL), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_recovery_heart_loop), END_LOOP(), }; // 4EF0 const BehaviorScript bhvWaterBombCannon[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_water_bomb_cannon_loop), END_LOOP(), }; // 4F08 const BehaviorScript bhvCannonBarrelBubbles[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_bubble_cannon_barrel_loop), END_LOOP(), }; // 4F20 const BehaviorScript bhvUnagi[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, unagi_seg5_anims_05012824), ANIMATE(0x06), OBJ_SET_POS(), SCALE(300), OBJ_SET_FLOAT(oDrawingDistance, 0x1770), CALLNATIVE(bhv_unagi_init), BEGIN_LOOP(), CALLNATIVE(bhv_unagi_loop), END_LOOP(), }; // 4F58 const BehaviorScript bhvUnagiSubobject[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_unagi_subobject_loop), END_LOOP(), }; // 4F70 const BehaviorScript bhvDorrie[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(dorrie_seg6_collision_0600F644), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, dorrie_seg6_anims_0600F638), OBJ_SET_POS(), OBJ_SET_FLOAT(oCollisionDistance, 0x7530), OBJ_ADD_FLOAT(oPosX, 2000), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_dorrie_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 4FB4 const BehaviorScript bhvHauntedChair[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, chair_seg5_anims_05005784), ANIMATE(0x00), OBJ_PHYSICS(0x0028, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_POS(), CALLNATIVE(bhv_init_room), CALLNATIVE(bhv_haunted_chair_init), BEGIN_LOOP(), CALLNATIVE(bhv_haunted_chair_loop), END_LOOP(), }; // 5004 const BehaviorScript bhvMadPiano[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, mad_piano_seg5_anims_05009B14), OBJ_PHYSICS(0x0028, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_POS(), OBJ_ADD_INT(oMoveAngleYaw, 0x4000), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_mad_piano_update), END_LOOP(), }; // 504C const BehaviorScript bhvFlyingBookend[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, bookend_seg5_anims_05002540), ANIMATE(0x00), OBJ_PHYSICS(0x003C, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_INT(oMoveFlags, 0), SCALE(70), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_flying_bookend_loop), END_LOOP(), }; // 5094 const BehaviorScript bhvBookendSpawn[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_bookend_spawn_loop), END_LOOP(), }; // 50B4 const BehaviorScript bhvHauntedBookshelfManager[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_haunted_bookshelf_manager_loop), END_LOOP(), }; // 50D4 const BehaviorScript bhvBookSwitch[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_SET_FLOAT(oGraphYOffset, 30), OBJ_ADD_INT(oMoveAngleYaw, 0x4000), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_book_switch_loop), END_LOOP(), }; // 5100 const BehaviorScript bhvFirePiranhaPlant[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, piranha_plant_seg6_anims_0601C31C), ANIMATE(0x00), OBJ_SET_POS(), UNHIDE(), CALLNATIVE(bhv_fire_piranha_plant_init), BEGIN_LOOP(), CALLNATIVE(bhv_fire_piranha_plant_update), END_LOOP(), }; // 5138 const BehaviorScript bhvSmallPiranhaFlame[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_small_piranha_flame_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 516C const BehaviorScript bhvFireSpitter[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), SCALE(40), BEGIN_LOOP(), CALLNATIVE(bhv_fire_spitter_update), END_LOOP(), }; // 518C const BehaviorScript bhvFlyguyFlame[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), OBJ_PHYSICS(0x0000, 0x00C8, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_fly_guy_flame_loop), OBJ_ADD_INT(oAnimState, 1), END_LOOP(), }; // 51C0 const BehaviorScript bhvSnufit[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), OBJ_SET_INT(oSnufitUnkF4, 0), CALLNATIVE(bhv_snufit_loop), END_LOOP(), }; // 51FC const BehaviorScript bhvSnufitBalls[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), OBJ_PHYSICS(0x000A, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), CALLNATIVE(bhv_init_room), OBJ_SET_FLOAT(oGraphYOffset, 0x000A), SCALE(10), BEGIN_LOOP(), CALLNATIVE(bhv_snufit_balls_loop), END_LOOP(), }; // 523C const BehaviorScript bhvHorizontalGrindel[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(ssl_seg7_collision_grindel), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), DROP_FLOOR(), OBJ_SET_POS(), OBJ_PHYSICS(0x0028, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), SCALE(90), CALLNATIVE(bhv_horizontal_grindel_init), BEGIN_LOOP(), CALLNATIVE(obj_update_floor_and_walls), CALLNATIVE(bhv_horizontal_grindel_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 5294 const BehaviorScript bhvEyerokBoss[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_eyerok_boss_loop), END_LOOP(), }; // 52B0 const BehaviorScript bhvEyerokHand[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, eyerok_seg5_anims_050116E4), ANIMATE(0x06), OBJ_PHYSICS(0x0096, 0x0000, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_POS(), OBJ_SET_INT(oAnimState, 3), BEGIN_LOOP(), CALLNATIVE(bhv_eyerok_hand_loop), END_LOOP(), }; // 52F0 const BehaviorScript bhvKlepto[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, klepto_seg5_anims_05008CFC), ANIMATE(0x00), OBJ_PHYSICS(0x0064, 0x0000, 0xFFEC, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_POS(), CALLNATIVE(bhv_klepto_init), BEGIN_LOOP(), CALLNATIVE(bhv_klepto_update), END_LOOP(), }; // 5334 const BehaviorScript bhvBird[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, birds_seg5_anims_050009E8), ANIMATE(0x00), UNHIDE(), SCALE(70), BEGIN_LOOP(), CALLNATIVE(bhv_bird_update), END_LOOP(), }; // 5360 const BehaviorScript bhvRacingPenguin[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, penguin_seg5_anims_05008B74), ANIMATE(0x03), OBJ_PHYSICS(0x012C, 0xFCE0, 0xFFFB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000), SCALE(400), CALLNATIVE(bhv_racing_penguin_init), BEGIN_LOOP(), CALLNATIVE(bhv_racing_penguin_update), END_LOOP(), }; // 53A4 const BehaviorScript bhvPenguinRaceFinishLine[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_penguin_race_finish_line_update), END_LOOP(), }; // 53BC const BehaviorScript bhvPenguinRaceShortcutCheck[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), CALLNATIVE(bhv_penguin_race_shortcut_check_update), END_LOOP(), }; // 53D4 const BehaviorScript bhvCoffinManager[] = { BEGIN(OBJ_LIST_SURFACE), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_coffin_manager_loop), END_LOOP(), }; // 53F4 const BehaviorScript bhvCoffin[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(bbh_seg7_collision_coffin), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), CALLNATIVE(bhv_init_room), BEGIN_LOOP(), CALLNATIVE(bhv_coffin_loop), END_LOOP(), }; // 5420 const BehaviorScript bhvClamShell[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), DROP_FLOOR(), OBJ_SET_ANIMS(oAnimations, clam_shell_seg5_anims_05001744), OBJ_SET_FLOAT(oGraphYOffset, 0x000A), BEGIN_LOOP(), CALLNATIVE(bhv_clam_loop), END_LOOP(), }; // 5448 const BehaviorScript bhvSkeeter[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, skeeter_seg6_anims_06007DE0), OBJ_SET_POS(), OBJ_PHYSICS(0x00B4, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x04B0, 0x0000, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_skeeter_update), END_LOOP(), }; // 5480 const BehaviorScript bhvSkeeterWave[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_skeeter_wave_update), END_LOOP(), }; // 5498 const BehaviorScript bhvSwingPlatform[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(rr_seg7_collision_pendulum), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_FLOAT(oCollisionDistance, 0x07D0), CALLNATIVE(bhv_swing_platform_init), BEGIN_LOOP(), CALLNATIVE(bhv_swing_platform_update), CALLNATIVE(load_object_collision_model), END_LOOP(), }; // 54CC const BehaviorScript bhvDonutPlatformSpawner[] = { BEGIN(OBJ_LIST_SPAWNER), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_donut_platform_spawner_update), END_LOOP(), }; // 54E4 const BehaviorScript bhvDonutPlatform[] = { BEGIN(OBJ_LIST_SURFACE), COLLISION_DATA(rr_seg7_collision_donut_platform), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), BEGIN_LOOP(), CALLNATIVE(bhv_donut_platform_update), END_LOOP(), }; // 5508 const BehaviorScript bhvDDDPole[] = { BEGIN(OBJ_LIST_POLELIKE), INTERACT_TYPE(INTERACT_POLE), SET_HITBOX(0x0050, 0x0320), OBJ_SET_INT(oIntangibleTimer, 0), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_POS(), CALLNATIVE(bhv_ddd_pole_init), OBJ_SET_FLOAT(oDDDPoleVel, 10), BEGIN_LOOP(), CALLNATIVE(bhv_ddd_pole_update), CALLNATIVE(BehClimbDetectLoop), END_LOOP(), }; // 554C const BehaviorScript bhvRedCoinStarMarker[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), DROP_FLOOR(), SCALE(150), OBJ_SET_INT(oFaceAnglePitch, 0x4000), OBJ_ADD_FLOAT(oPosY, 60), CALLNATIVE(bhv_red_coin_star_marker_init), BEGIN_LOOP(), OBJ_ADD_INT(oFaceAngleYaw, 0x100), END_LOOP(), }; // 5578 const BehaviorScript bhvTripletButterfly[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, butterfly_seg3_anims_030056B0), ANIMATE(0x00), UNHIDE(), OBJ_SET_POS(), OBJ_PHYSICS(0x0000, 0x0000, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000), OBJ_SET_FLOAT(oTripletButterflyScale, 1), BEGIN_LOOP(), CALLNATIVE(bhv_triplet_butterfly_update), END_LOOP(), }; // 55BC const BehaviorScript bhvBubba[] = { BEGIN(OBJ_LIST_GENACTOR), OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_POS(), OBJ_PHYSICS(0x00C8, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0000, 0x0000, 0x0000), SCALE(50), BEGIN_LOOP(), CALLNATIVE(bhv_bubba_loop), END_LOOP(), }; // 55F0 const BehaviorScript bhvBeginningLakitu[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_ANIMS(oAnimations, lakitu_seg6_anims_060058F8), ANIMATE(0x00), OBJ_SET_FLOAT(oOpacity, 0x0000), BEGIN_LOOP(), CALLNATIVE(bhv_intro_lakitu_loop), END_LOOP(), }; // 5618 const BehaviorScript bhvBeginningPeach[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), OBJ_SET_ANIMS(oAnimations, peach_seg5_anims_0501C41C), ANIMATE(0x00), BEGIN_LOOP(), CALLNATIVE(bhv_intro_peach_loop), END_LOOP(), }; // 563C const BehaviorScript bhvEndBirds1[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_0010 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, birds_seg5_anims_050009E8), ANIMATE(0x00), BEGIN_LOOP(), CALLNATIVE(bhv_end_birds_1_loop), END_LOOP(), }; // 5660 const BehaviorScript bhvEndBirds2[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, (OBJ_FLAG_0010 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), OBJ_SET_ANIMS(oAnimations, birds_seg5_anims_050009E8), ANIMATE(0x00), BEGIN_LOOP(), CALLNATIVE(bhv_end_birds_2_loop), END_LOOP(), }; // 5684 const BehaviorScript bhvIntroScene[] = { BEGIN(OBJ_LIST_DEFAULT), OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_LOOP(), CALLNATIVE(bhv_intro_scene_loop), END_LOOP(), };