You've already forked HackerSM64
mirror of
https://github.com/HackerN64/HackerSM64.git
synced 2026-01-21 10:35:32 -08:00
* Move level script to bank 0x1A * Decouple vanilla objects in a separate bank * Rollback group level scripts move, fixed nits * Move actors_vanilla to actors/vanilla_actors * Make EU translation segment last, remove vanilla objects segments copypaste * Added LOAD_VANILLA_OBJECTS segment id stub
212 lines
21 KiB
C
212 lines
21 KiB
C
#include <ultra64.h>
|
|
#include "sm64.h"
|
|
#include "behavior_data.h"
|
|
#include "model_ids.h"
|
|
#include "seq_ids.h"
|
|
#include "dialog_ids.h"
|
|
#include "segment_symbols.h"
|
|
#include "level_commands.h"
|
|
|
|
#include "game/level_update.h"
|
|
|
|
#include "levels/scripts.h"
|
|
|
|
#include "actors/common1.h"
|
|
|
|
#include "make_const_nonconst.h"
|
|
#include "levels/ccm/header.h"
|
|
|
|
|
|
static const LevelScript script_ccm_area_1_macro_objects[] = {
|
|
// Macro objects
|
|
OBJECT(/*model*/ MODEL_WOODEN_SIGNPOST, /*pos*/ -2412, 2912, -878, /*angle*/ 0, 180, 0, /*behParam*/ (DIALOG_040 << 16), /*beh*/ bhvMessagePanel),
|
|
OBJECT(/*model*/ MODEL_MR_BLIZZARD_HIDDEN, /*pos*/ 3054, -2674, 2072, /*angle*/ 0, 0, 0, /*behParam*/ (MR_BLIZZARD_STYPE_NO_CAP << 16), /*beh*/ bhvMrBlizzard),
|
|
OBJECT(/*model*/ MODEL_SPINDRIFT, /*pos*/ 2542, 2622, -1714, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSpindrift),
|
|
OBJECT(/*model*/ MODEL_SPINDRIFT, /*pos*/ -6090, -1740, 1936, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSpindrift),
|
|
OBJECT(/*model*/ MODEL_SPINDRIFT, /*pos*/ 4346, -3068, 400, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSpindrift),
|
|
OBJECT(/*model*/ MODEL_SPINDRIFT, /*pos*/ -5054, -4659, -1054, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSpindrift),
|
|
OBJECT(/*model*/ MODEL_SPINDRIFT, /*pos*/ -5033, -4740, -2666, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSpindrift),
|
|
OBJECT(/*model*/ MODEL_BOBOMB_BUDDY, /*pos*/ -1220, -3583, 5969, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBobombBuddyOpensCannon),
|
|
OBJECT(/*model*/ MODEL_DL_CANNON_LID, /*pos*/ -3615, -4607, 4790, /*angle*/ 0, 0, 0, /*behParam*/ (0x00 << 16), /*beh*/ bhvCannonClosed),
|
|
OBJECT(/*model*/ MODEL_DL_CANNON_LID, /*pos*/ -5045, -1740, 4615, /*angle*/ 0, 0, 0, /*behParam*/ (0x00 << 16), /*beh*/ bhvCannonClosed),
|
|
OBJECT(/*model*/ MODEL_DL_CANNON_LID, /*pos*/ 1090, -4607, 5729, /*angle*/ 0, 0, 0, /*behParam*/ (0x80 << 16), /*beh*/ bhvCannonClosed),
|
|
OBJECT(/*model*/ MODEL_WOODEN_SIGNPOST, /*pos*/ -1060, 2560, -1840, /*angle*/ 0, 270, 0, /*behParam*/ (DIALOG_087 << 16), /*beh*/ bhvMessagePanel),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -180, 3100, -1480, /*angle*/ 0, 0, 0, /*behParam*/ ((COIN_FORMATION_FLAG_FLYING | COIN_FORMATION_FLAG_VERTICAL) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3560, 2100, -280, /*angle*/ 0, 0, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE ) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1942, 1334, 1678, /*angle*/ 0, 77, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE ) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1020, 646, -2706, /*angle*/ 0, 90, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE ) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1460, -888, -3933, /*angle*/ 0, 93, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE ) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2586, -4889, -4093, /*angle*/ 0, 75, 0, /*behParam*/ ((COIN_FORMATION_FLAG_ARROW ) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_WOODEN_SIGNPOST, /*pos*/ -4350, -4864, -4813, /*angle*/ 0, 270, 0, /*behParam*/ (DIALOG_094 << 16), /*beh*/ bhvMessagePanel),
|
|
OBJECT(/*model*/ MODEL_WOODEN_SIGNPOST, /*pos*/ -1037, -3583, 5872, /*angle*/ 0, 0, 0, /*behParam*/ (DIALOG_091 << 16), /*beh*/ bhvMessagePanel),
|
|
OBJECT(/*model*/ MODEL_WOODEN_SIGNPOST, /*pos*/ -309, -4889, -3690, /*angle*/ 0, 180, 0, /*behParam*/ (DIALOG_049 << 16), /*beh*/ bhvMessagePanel),
|
|
OBJECT(/*model*/ MODEL_WOODEN_SIGNPOST, /*pos*/ 1900, -1535, 3500, /*angle*/ 0, 0, 0, /*behParam*/ (DIALOG_040 << 16), /*beh*/ bhvMessagePanel),
|
|
OBJECT(/*model*/ MODEL_RED_COIN, /*pos*/ -488, 3100, -2305, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvRedCoin),
|
|
OBJECT(/*model*/ MODEL_RED_COIN, /*pos*/ -3120, -1200, -2080, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvRedCoin),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5200, -1345, 2995, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvHidden1upInPoleSpawner),
|
|
OBJECT(/*model*/ MODEL_RED_COIN, /*pos*/ 2940, -1400, 2630, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvRedCoin),
|
|
OBJECT(/*model*/ MODEL_RED_COIN, /*pos*/ -600, -505, 1940, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvRedCoin),
|
|
OBJECT(/*model*/ MODEL_RED_COIN, /*pos*/ -3814, -2112, 6427, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvRedCoin),
|
|
OBJECT(/*model*/ MODEL_RED_COIN, /*pos*/ 2700, -4600, 1230, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvRedCoin),
|
|
OBJECT(/*model*/ MODEL_RED_COIN, /*pos*/ 1990, -4040, 4950, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvRedCoin),
|
|
OBJECT(/*model*/ MODEL_BLUE_COIN_SWITCH, /*pos*/ 3400, -820, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBlueCoinSwitch),
|
|
OBJECT(/*model*/ MODEL_BLUE_COIN, /*pos*/ 3400, -640, -740, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvHiddenBlueCoin),
|
|
OBJECT(/*model*/ MODEL_BLUE_COIN, /*pos*/ 3400, -320, -1740, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvHiddenBlueCoin),
|
|
OBJECT(/*model*/ MODEL_HEART, /*pos*/ -270, -4650, -3100, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvRecoveryHeart),
|
|
OBJECT(/*model*/ MODEL_RED_COIN, /*pos*/ 4408, -4550, -1534, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvRedCoin),
|
|
OBJECT(/*model*/ MODEL_EXCLAMATION_BOX, /*pos*/ -4887, -1300, -4003, /*angle*/ 0, 0, 0, /*behParam*/ (EXCLAMATION_BOX_BP_1UP_RUNNING_AWAY << 16), /*beh*/ bhvExclamationBox),
|
|
OBJECT(/*model*/ MODEL_EXCLAMATION_BOX, /*pos*/ -1557, -205, 1794, /*angle*/ 0, 0, 0, /*behParam*/ (EXCLAMATION_BOX_BP_1UP_RUNNING_AWAY << 16), /*beh*/ bhvExclamationBox),
|
|
// Special objects
|
|
OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_03, /*pos*/ -409, 2765, -1637, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvStaticObject),
|
|
OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_04, /*pos*/ 2355, -4095, 4096, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvStaticObject),
|
|
OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_05, /*pos*/ -4210, -1446, 1874, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvStaticObject),
|
|
OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_05, /*pos*/ 2560, 2560, -1023, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvStaticObject),
|
|
OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_06, /*pos*/ -818, 102, 2048, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvStaticObject),
|
|
OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_07, /*pos*/ -511, -3071, -3583, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvStaticObject),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ -5201, -1740, 2994, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ 1989, -4607, 4949, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ 1248, -4607, 5474, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ -5508, -1740, 4148, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ -4576, -1740, 4814, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ -488, 2560, -2305, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ -5892, -1740, 811, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ -3748, -4607, 4464, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ 2237, 2560, -1630, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ 2885, 2560, -1638, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ -1146, -3583, 5919, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ -1768, 2560, -1793, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CCM_SNOW_TREE, /*pos*/ -3443, 807, -2713, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTree),
|
|
OBJECT(/*model*/ MODEL_CASTLE_WOODEN_DOOR, /*pos*/ 2464, -4607, 4302, /*angle*/ 0, 222, 0, /*behParam*/ (20 << 16), /*beh*/ bhvDoorWarp),
|
|
RETURN(),
|
|
};
|
|
|
|
static const LevelScript script_ccm_area_2_macro_objects[] = {
|
|
// Macro objects
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 2255, 4091, -536, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 2055, 4352, -497, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvYellowCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 1843, 4486, -433, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvYellowCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 1603, 4567, -347, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvYellowCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 1397, 4530, -287, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvYellowCoin),
|
|
OBJECT(/*model*/ MODEL_WOODEN_SIGNPOST, /*pos*/ -5320, 6656, -6540, /*angle*/ 0, 0, 0, /*behParam*/ (DIALOG_054 << 16), /*beh*/ bhvMessagePanel),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4980, 2180, -1980, /*angle*/ 0, 0, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 6640, -60, -800, /*angle*/ 0, 0, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 6640, -1020, 440, /*angle*/ 0, 0, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 6640, -1820, 1760, /*angle*/ 0, 0, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 6640, -2260, 2620, /*angle*/ 0, 0, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6460, -5000, -3200, /*angle*/ 0, 0, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6460, -5540, -4100, /*angle*/ 0, 0, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6460, -5200, -5000, /*angle*/ 0, 0, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_EXCLAMATION_BOX, /*pos*/ -5600, -4500, -6644, /*angle*/ 0, 0, 0, /*behParam*/ (EXCLAMATION_BOX_BP_1UP_WALKING << 16), /*beh*/ bhvExclamationBox),
|
|
OBJECT(/*model*/ MODEL_BLUE_COIN, /*pos*/ -3160, 6267, -6120, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvMovingBlueCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -700, 5923, -6240, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 2260, 5342, -6440, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2960, 4280, -880, /*angle*/ 0, 120, 0, /*behParam*/ ((COIN_FORMATION_FLAG_NONE) << 16), /*beh*/ bhvCoinFormation),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 1900, 659, -2340, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 1720, 690, -2220, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 3400, 302, -5240, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 3600, 297, -5420, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 6120, 4435, -5020, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 6140, -152, -5540, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 6320, -200, -5320, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 3960, -3297, 6440, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ 1400, -3560, 5840, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -220, -3780, 4960, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -520, -3890, 4360, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -740, -4008, 3540, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -920, -4094, 2760, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -960, -4101, 2080, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -860, 3391, -760, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -1120, 3293, -1140, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -1560, 2989, -3280, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -1740, 2926, -3780, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -2849, 2677, -4608, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_YELLOW_COIN, /*pos*/ -4620, 2353, -4120, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOneCoin),
|
|
OBJECT(/*model*/ MODEL_1UP, /*pos*/ -4890, 1452, 552, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhv1upSliding),
|
|
OBJECT(/*model*/ MODEL_1UP, /*pos*/ -6369, -1538, 3726, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhv1upSliding),
|
|
// Special objects
|
|
OBJECT(/*model*/ MODEL_CASTLE_WOODEN_DOOR, /*pos*/ -7628, -5836, -6988, /*angle*/ 0, 90, 0, /*behParam*/ (20 << 16), /*beh*/ bhvDoorWarp),
|
|
RETURN(),
|
|
};
|
|
|
|
static const LevelScript script_ccm_area_1_objects_1[] = {
|
|
OBJECT(/*model*/ MODEL_CCM_ROPEWAY_LIFT, /*pos*/ 531, -4430, 6426, /*angle*/ 0, 0, 0, /*behParam*/ 0x07120000, /*beh*/ bhvPlatformOnTrack),
|
|
RETURN(),
|
|
};
|
|
|
|
static const LevelScript script_ccm_area_1_objects_2[] = {
|
|
OBJECT(/*model*/ MODEL_PENGUIN, /*pos*/ 2650, -3735, 3970, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvSmallPenguin),
|
|
OBJECT(/*model*/ MODEL_PENGUIN, /*pos*/ -555, 3470, -1000, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSmallPenguin),
|
|
OBJECT(/*model*/ MODEL_MR_BLIZZARD, /*pos*/ -2376, -1589, 4256, /*angle*/ 0, 252, 0, /*behParam*/ 0x00010000, /*beh*/ bhvMrBlizzard),
|
|
OBJECT(/*model*/ MODEL_MR_BLIZZARD, /*pos*/ -394, -1589, 4878, /*angle*/ 0, 74, 0, /*behParam*/ 0x00010000, /*beh*/ bhvMrBlizzard),
|
|
OBJECT_WITH_ACTS(/*model*/ MODEL_CCM_SNOWMAN_BASE, /*pos*/ 2560, 2662, -1122, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSnowmansBottom, /*acts*/ ACT_5),
|
|
RETURN(),
|
|
};
|
|
|
|
static const LevelScript script_ccm_area_1_objects_3[] = {
|
|
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 2665, -4607, 4525, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCcmTouchedStarSpawn, /*acts*/ ALL_ACTS),
|
|
OBJECT_WITH_ACTS(/*model*/ MODEL_PENGUIN, /*pos*/ 3450, -4700, 4550, /*angle*/ 0, 0, 0, /*behParam*/ 0x01000000, /*beh*/ bhvTuxiesMother, /*acts*/ ALL_ACTS),
|
|
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 4200, -927, 400, /*angle*/ 0, 0, 0, /*behParam*/ 0x03000000, /*beh*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),
|
|
OBJECT_WITH_ACTS(/*model*/ MODEL_CCM_SNOWMAN_HEAD, /*pos*/ -4230, -1169, 1813, /*angle*/ 0, 270, 0, /*behParam*/ 0x04000000, /*beh*/ bhvSnowmansHead, /*acts*/ ALL_ACTS),
|
|
OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ -2000, -2200, -3000, /*angle*/ 0, 0, 0, /*behParam*/ 0x05000000, /*beh*/ bhvStar, /*acts*/ ALL_ACTS),
|
|
RETURN(),
|
|
};
|
|
|
|
static const LevelScript script_ccm_area_2_objects_1[] = {
|
|
OBJECT_WITH_ACTS(/*model*/ MODEL_PENGUIN, /*pos*/ -4952, 6656, -6075, /*angle*/ 0, 270, 0, /*behParam*/ 0x02000000, /*beh*/ bhvRacingPenguin, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6500, -5836, -6400, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvPenguinRaceFinishLine),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6393, -716, 7503, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvPenguinRaceShortcutCheck),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4943, 1321, 667, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvPlaysMusicTrackWhenTouched),
|
|
RETURN(),
|
|
};
|
|
|
|
const LevelScript level_ccm_entry[] = {
|
|
INIT_LEVEL(),
|
|
#include "levels/ccm/areas/script_vanilla_load.inc.c"
|
|
ALLOC_LEVEL_POOL(),
|
|
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
|
|
#include "levels/ccm/areas/script_vanilla.inc.c"
|
|
|
|
AREA(/*index*/ 1, ccm_geo_00051C),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1512, 3560, -2305, /*angle*/ 0, 140, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvSpinAirborneWarp),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -181, 2918, -1486, /*angle*/ 0, 0, 0, /*behParam*/ 0x0F1E0000, /*beh*/ bhvWarp),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1847, 2815, -321, /*angle*/ 0, -158, 0, /*behParam*/ 0x001F0000, /*beh*/ bhvFadingWarp),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3349, -4694, -183, /*angle*/ 0, -34, 0, /*behParam*/ 0x00200000, /*beh*/ bhvFadingWarp),
|
|
WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
|
|
WARP_NODE(/*id*/ 0x14, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x02, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
|
|
WARP_NODE(/*id*/ 0x1E, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
|
|
WARP_NODE(/*id*/ 0x1F, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x01, /*destNode*/ 0x20, /*flags*/ WARP_NO_CHECKPOINT),
|
|
WARP_NODE(/*id*/ 0x20, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x01, /*destNode*/ 0x1F, /*flags*/ WARP_NO_CHECKPOINT),
|
|
WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
|
|
WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
|
|
JUMP_LINK(script_ccm_area_1_objects_1),
|
|
JUMP_LINK(script_ccm_area_1_objects_2),
|
|
JUMP_LINK(script_ccm_area_1_objects_3),
|
|
TERRAIN(/*terrainData*/ ccm_seg7_area_1_collision),
|
|
JUMP_LINK(script_ccm_area_1_macro_objects),
|
|
SHOW_DIALOG(/*index*/ 0x00, DIALOG_048),
|
|
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_SNOW),
|
|
TERRAIN_TYPE(/*terrainType*/ TERRAIN_SNOW),
|
|
END_AREA(),
|
|
|
|
AREA(/*index*/ 2, ccm_geo_0005E8),
|
|
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5836, 7465, -6143, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvAirborneWarp),
|
|
WARP_NODE(/*id*/ 0x14, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x01, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
|
|
WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
|
|
WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
|
|
WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
|
|
JUMP_LINK(script_ccm_area_2_objects_1),
|
|
TERRAIN(/*terrainData*/ ccm_seg7_area_2_collision),
|
|
JUMP_LINK(script_ccm_area_2_macro_objects),
|
|
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0001, /*seq*/ SEQ_LEVEL_SLIDE),
|
|
TERRAIN_TYPE(/*terrainType*/ TERRAIN_SLIDE),
|
|
END_AREA(),
|
|
|
|
FREE_LEVEL_POOL(),
|
|
MARIO_POS(/*area*/ 1, /*yaw*/ 140, /*pos*/ -1512, 2560, -2305),
|
|
CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),
|
|
CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),
|
|
CLEAR_LEVEL(),
|
|
SLEEP_BEFORE_EXIT(/*frames*/ 1),
|
|
EXIT(),
|
|
};
|