forked from djoslin0/sm64ex-coop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspawn-stuff.lua
136 lines (116 loc) · 3.61 KB
/
spawn-stuff.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
-- name: Spawn Stuff
-- description: Press DPAD, or L+DPAD to spawn things
function non_l_spawning(m)
if (m.controller.buttonPressed & U_JPAD) ~= 0 then
-- spawn TTC cube
spawn_sync_object(
id_bhvTTCRotatingSolid,
E_MODEL_TTC_ROTATING_CUBE,
m.pos.x, m.pos.y, m.pos.z,
function(obj)
obj.oBehParams2ndByte = 0
obj.oOpacity = 255
end)
end
if (m.controller.buttonPressed & D_JPAD) ~= 0 then
-- spawn breakable box
spawn_sync_object(
id_bhvBreakableBox,
E_MODEL_BREAKABLE_BOX,
m.pos.x, m.pos.y, m.pos.z,
nil)
end
if (m.controller.buttonPressed & L_JPAD) ~= 0 then
-- spawn bobomb in hand
local obj = spawn_sync_object(
id_bhvBobomb,
E_MODEL_BOBOMB_BUDDY,
m.pos.x, m.pos.y, m.pos.z,
function(obj)
obj.oBehParams2ndByte = 0
obj.oOpacity = 255
obj.oFlags = OBJ_FLAG_HOLDABLE
obj.oInteractType = obj.oInteractType | INTERACT_GRABBABLE
end)
if obj ~= nil then
m.usedObj = obj
mario_grab_used_object(m)
m.marioBodyState.grabPos = GRAB_POS_LIGHT_OBJ
set_mario_action(m, ACT_HOLD_IDLE, 0)
end
end
if (m.controller.buttonPressed & R_JPAD) ~= 0 then
-- spawn goomba
spawn_sync_object(
id_bhvGoomba,
E_MODEL_GOOMBA,
m.pos.x + 150, m.pos.y, m.pos.z,
nil)
end
end
function l_spawning(m)
if (m.controller.buttonPressed & U_JPAD) ~= 0 then
-- spawn TTC prism
spawn_sync_object(
id_bhvTTCRotatingSolid,
E_MODEL_TTC_ROTATING_PRISM,
m.pos.x, m.pos.y, m.pos.z,
function(obj)
obj.oBehParams2ndByte = 1
obj.oOpacity = 255
end)
end
if (m.controller.buttonPressed & D_JPAD) ~= 0 then
-- spawn small breakable box in hand
local obj = spawn_sync_object(
id_bhvBreakableBoxSmall,
E_MODEL_BREAKABLE_BOX_SMALL,
m.pos.x, m.pos.y, m.pos.z,
function(obj)
obj.oBehParams2ndByte = 0
obj.oOpacity = 255
obj.oFlags = OBJ_FLAG_HOLDABLE
obj.oInteractType = obj.oInteractType | INTERACT_GRABBABLE
end)
if obj ~= nil then
m.usedObj = obj
mario_grab_used_object(m)
m.marioBodyState.grabPos = GRAB_POS_LIGHT_OBJ
set_mario_action(m, ACT_HOLD_IDLE, 0)
end
end
if (m.controller.buttonPressed & L_JPAD) ~= 0 then
-- spawn boulder
spawn_sync_object(
id_bhvBigBoulder,
E_MODEL_HMC_ROLLING_ROCK,
m.pos.x, m.pos.y, m.pos.z,
function(obj)
obj.oBehParams2ndByte = 2
obj.oMoveAngleYaw = m.marioObj.oMoveAngleYaw
end)
m.invincTimer = 5
end
if (m.controller.buttonPressed & R_JPAD) ~= 0 then
-- spawn boulder
spawn_sync_object(
id_bhvKoopaShell,
E_MODEL_KOOPA_SHELL,
m.pos.x + 150, m.pos.y, m.pos.z,
nil)
m.invincTimer = 5
end
end
function mario_update_local(m)
if (m.controller.buttonDown & L_TRIG) ~= 0 then
l_spawning(m)
else
non_l_spawning(m)
end
end
function mario_update(m)
if m.playerIndex == 0 then
mario_update_local(m)
end
end
hook_event(HOOK_MARIO_UPDATE, mario_update)