-
Notifications
You must be signed in to change notification settings - Fork 3
/
21803_dawnplant.cos
345 lines (295 loc) · 5.39 KB
/
21803_dawnplant.cos
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
**
** Dawn Plant script
**
** Sprites by CosmiSynth, coding by Pilla.
**
**
** Feel free to use this code however you want.
**
**
**
** Caos2pray chunk
**
** Compiles the agent.
**
* CAOS2PRAY CHUNK
*# Pray-File "gp_dawnplant_CS.agents"
*# DS-Name "GP - Dawn Plant"
*# attach gp_dawn_plant_CS.c16 GrenP_DawnPlant.catalogue
*# desc = "This is a dawn plant. When dispensed, a cute seed packet will appear.\n\nSprites by CosmiSynth"
*# Agent Animation File = "gp_dawn_plant_CS.c16"
*# Agent Sprite First Image = 6
*# Agent Animation Gallery = "gp_dawn_plant_CS"
*
*
*
** Injection script
**
**
** Vend a seed packet
**
*new: simp 2 23 21803 "gp_dawn_plant_CS" 1 16 rand 1000 1500
*mesg wrt+ targ 1000 game "CreatorX" game "CreatorY" 0
**
** SCRIPTS
**
**
**
** Creator script
**
scrp 2 23 21803 1000
new: simp 2 23 21803 "gp_dawn_plant_CS" 1 16 rand 1000 1500
** attr: mouseable 2 + activateable 4 + invisible 16 + collide 64 + physics 128 = 214
attr 214
** Will go through some walls
perm 60
** Physics
accg 1
aero 1
fric 70
elas 20
** launch seed
mvsf _p1_ _p2_
targ ownr
kill ownr
endm
**
** Population control
**
*
** Dawn plant population control
scrp 1 1 21803 9
tick rand 1500 8000
setv va00 0
esee 2 4 21803
addv va00 1
next
doif va00 le 2
setv va02 posx
setv va03 posy
reps 3
inst
new: simp 2 3 21803 "gp_dawn_plant_CS" 1 0 rand 1000 1500
** attr: mouseable 2 + collide 64 + physics 128 = 194, bhvr eat 16 + pickup 32 = 48
attr 194
bhvr 48
accg 1
fric 60
elas 20
** bhvr: pickup 32 & eat 16 = 48
bhvr 48
** Emit starchy smell
emit 7 0.8
** launch seed
velo rand -10 10 -5
tick rand 1 300
mvto va02 va03
slow
repe
endi
endm
*
** Seed packet push script
*
scrp 2 23 21803 1
doif from eq pntr
mesg writ pntr 101
endi
setv va01 posx
setv va02 posy
inst
reps 8
new: simp 2 3 21803 "gp_dawn_plant_CS" 1 0 rand 1000 1500
** attr: mouseable 2 + collide 64 + physics 128 = 194
attr 194
** Will go through some walls
perm 60
** Physics
accg 0.1
aero 1
fric 60
elas 20
** bhvr: pickup 32 & eat 16 = 48
bhvr 48
** Emit starchy smell
emit 7 0.8
** launch seed
velo rand -10 10 -5
tick rand 300 700
mvto va01 va02
repe
targ ownr
kill ownr
endm
*
** Plant growing/seeding script
*
** TIMER
scrp 2 4 21803 9
** Check if the dawn plant is about to start growing: if yes, check if there aren't any other plants in this spot.
doif tick eq 2
** Check if there's enough space to grow: if not, kill the plant placeholder
inst
setv va00 0
rnge 200
esee 2 4 21803
addv va00 1
next
doif va00 ge 5
kill ownr
stop
endi
** Check if you're not touching another dawn plant
setv va00 0
etch 2 4 21803
addv va00 1
next
doif va00 ge 2
kill ownr
stop
endi
** Set the plant growing timer
tick rand 40 80
slow
endi
** Check if the plant is fully grown. If not, grooww
doif pose lt 5
setv va00 pose
addv va00 1
pose va00
** If the plant is fully grown, animate the 'life' stage
elif pose eq 5
frat 20
anim [6 7 255]
tick 500
** If the plant has lived a happy and long life... set seed and die. Goodbye plant.
elif pose gt 5
setv va01 posl
addv va01 1
setv va02 post
addv va02 6
inst
reps 2
new: simp 2 3 21803 "gp_dawn_plant_CS" 1 0 rand 1000 1500
** attr: mouseable 2 + collide 64 + physics 128 = 194
attr 194
** Will go through some walls
perm 60
** Physics
accg 0.1
aero 1
fric 90
elas 20
** bhvr: pickup 32 & eat 16 = 48
bhvr 48
** Emit starchy smell
emit 7 0.8
** launch seed
velo rand -8 8 -7
tick rand 50 200
mvto va01 va02
repe
addv va01 12
new: simp 2 3 21803 "gp_dawn_plant_CS" 1 0 rand 1000 1500
** attr: mouseable 2 + invisible 16 + collide 64 + physics 128 = 210
attr 210
** Will go through some walls
perm 60
** Physics
accg 0.1
aero 1
fric 90
elas 20
** launch seed
velo rand -8 8 -7
tick rand 50 200
mvto va01 va02
slow
** Retarget the plant
targ ownr
** Kill it ;u;
tick 0
lock
frat 40
anim [8 9 10 11 12 13 14]
over
kill ownr
unlk
endi
endm
*
** Seed timer & eat script
*
*
** EAT
scrp 2 3 21803 12
** Lock the script, so once someone's eating the seed, it can't be interrupted.
lock
** Wait, so the creatures can't overeat :p
wait 25
** Stim the eating creature with "eaten plant"
stim writ from 77 1
** Wait a little more :p
wait 25
** Kill the seed
kill ownr
endm
*
** TIMER
scrp 2 3 21803 9
** Get the room type of the seed
setv va00 posl
setv va01 post
setv va02 grap va00 va01
setv va03 rtyp va02
** only survive: drained soil 7, normal soil 5, atmosphere 1
doif carr eq null
doif va03 ne 7 and va03 ne 5 and va03 ne 1
kill ownr
stop
endi
endi
** Check if the seed has settled
doif carr eq null and fall eq 0
doif va03 eq 7 or va03 eq 5
subv va00 7
subv va01 15
inst
** Grow plant!
new: simp 2 4 21803 "gp_dawn_plant_CS" 15 1 rand 1000 3000
** attr: invisible 16, bhvr: 0
attr 16
bhvr 0
** Set the tick to 2 to trigger the 'do I have enough space to grow' check script
tick 2
** test-move it into the space: if it can't grow there, kill it
doif tmvt va00 va01 eq 0
kill targ
else
** If it can grow here, grow!
mvto va00 va01
endi
endi
slow
targ ownr
kill ownr
endi
endm
*
*
** Removal script
*
*
rscr
enum 2 23 21803
kill targ
next
enum 2 3 21803
kill targ
next
enum 2 4 21803
kill targ
next
scrx 2 23 21803 1
scrx 2 3 21803 9
scrx 2 4 21803 9