-
Notifications
You must be signed in to change notification settings - Fork 3
/
21802_hairalgae.cos
337 lines (292 loc) · 5.12 KB
/
21802_hairalgae.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
**
** Hair algae script
**
** Sprites by Jesseth, coding by Pilla.
**
**
** Feel free to use this code however you want.
**
**
**
** Caos2pray chunk
**
** Compiles the agent.
**
* CAOS2PRAY CHUNK
*# Pray-File "gp_hair_algae_JESS.agents"
*# DS-Name "Hair Algae (Jesseth)"
*# attach gp_hair_algae_JESS.c16 GrenP_HairAlgae.catalogue
*# desc = "Some pretty hair algae to decorate your underwater areas.by Jesseth"
*# Agent Animation File = "gp_hair_algae_JESS.c16"
*# Agent Sprite First Image = 6
*# Agent Animation Gallery = "gp_hair_algae_JESS"
*
*
*
** Injection script
**
**
** The vendor!
**
*new: comp 2 23 21802 "gp_hair_algae_JESS" 5 9 rand 800 900
*mesg wrt+ targ 1000 game "CreatorX" game "CreatorY" 0
**
** Scripts
**
**
**
** Creator script
**
scrp 2 23 21802 1000
** Attributes: mouseable 2 + collide 64 + physics 128 = 194
attr 194
** bhvr: act1 + hit 8 = 9
bhvr 9
perm 100
accg 2
aero 1
fric 80
elas 20
bhvr 0
** Create the button
pat: butt 1 "gp_hair_algae_JESS" 14 2 15 53 1 [] 0 1
** Animate the algae
part 0
frat 16
anim [ 0 1 2 3 4 3 2 1 255]
mvsf _p1_ _p2_
tick 0
endm
**
** Population controller scripts
**
scrp 1 1 21802 9
rnge rand 500 900
tick rand 500 900
setv va00 0
esee 2 4 21802
addv va00 1
next
doif va00 lt 2
targ ownr
setv va00 posx
setv va01 posy
new: simp 2 3 21802 "gp_hair_algae_JESS" 1 0 rand 1000 3000
** attr: mouseable 2 + collide 64 + physics 128 = 194
attr 194
** bhvr: eat 16 + pickup 32 = 48
bhvr 48
** Will go through most walls
perm 30
** Physics
accg 0.2
aero 10
fric 50
elas 40
velo rand -20 20 -5
tick 300
setv ov00 0
mvsf va00 va01
endi
endm
**
** Vendor scripts
**
*
** Timer
scrp 2 23 21802 9
tick rand 100 4000
mesg writ ownr 0
endm
*
** Hit
scrp 2 23 21802 3
stim writ from 92 1
endm
*
** Activate
scrp 2 23 21802 1
doif from eq pntr
mesg writ pntr 101
else
** stim activate machinery
stim writ from 90 1
endi
part 1
anim [1 0]
setv va00 posx
addv va00 rand -5 5
setv va01 posy
addv va01 rand -5 5
new: simp 2 3 21802 "gp_hair_algae_JESS" 1 0 rand 1000 3000
** attr: mouseable 2 + collide 64 + physics 128 = 194
attr 194
** bhvr: eat 16 + pickup 32 = 48
bhvr 48
** Will go through most walls
perm 30
** Physics
accg 0.2
aero 10
fric 50
elas 40
velo rand -20 20 -5
tick 300
setv ov00 0
mvsf va00 va01
endm
*
** Algae growing/seeding script
*
** TIMER
scrp 2 4 21802 9
** Check if the algae is about to start growing: if yes, check if there aren't too many other algae around.
doif tick eq 2
** Check if there's enough space to grow: if not, kill the algae placeholder
inst
setv va00 0
rnge 100
esee 2 4 21802
addv va00 1
next
doif va00 ge 1
kill ownr
stop
endi
** Set the algae growing timer
tick rand 70 100
slow
endi
** Check if the algae is fully grown. If not, grooww
doif pose lt 3
setv va00 pose
addv va00 1
pose va00
** If the algae is fully grown, animate the 'life' stage
elif pose eq 3
frat 12
anim [4 5 6 5 255]
tick rand 3000 3800
** If the algae has lived a happy and long life... set seed and die. Goodbye algae.
elif pose ge 4
** Make 3 seed
reps 3
targ ownr
inst
setv va00 posl
addv va00 rand 8 47
setv va01 posb
subv va01 rand 26 61
new: simp 2 3 21802 "gp_hair_algae_JESS" 1 0 rand 1000 3000
** attr: mouseable 2 + collide 64 + physics 128 = 194
attr 194
** bhvr: eat 16 + pickup 32 = 48
bhvr 48
** Will go through most walls
perm 30
** Physics
accg 0.2
aero 10
fric 50
elas 40
velo rand -30 30 -5
tick rand 300 800
setv ov00 0
mvsf va00 va01
slow
repe
** Retarget the algae plant
targ ownr
** Kill it ;u;
tick 0
lock
frat 70
anim [7 7]
over
kill ownr
unlk
endi
endm
*
** Seed timer script
*
*
** Seed script
*
*
** EAT
scrp 2 3 21802 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 5
** Stim the eating creature with "eaten plant"
stim writ from 77 1
** Wait a little more :p
wait 5
** Kill the seed
kill ownr
endm
*
** TIMER
scrp 2 3 21802 9
** Get the room type of the seed
setv va00 posl
subv va00 34
setv va01 posb
subv va01 69
setv va02 grap posx posy
setv va03 rtyp va02
** only survive in freshwater or saltwater areas
doif carr eq null
doif va03 ne 8 and va03 ne 9
kill ownr
stop
endi
endi
** Check if the seed has settled
doif carr eq null and fall eq 0
inst
** Grow algae!
new: simp 2 4 21802 "gp_hair_algae_JESS" 8 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
setv va04 0
loop
addv va04 1
subv va01 1
doif tmvt va00 va01 ne 0
** If it can grow here, grow!
mvto va00 va01
endi
untl tmvt va00 va01 ne 0 or va04 gt 7
endi
** test-move it into the space: if it can't grow there, kill it
doif va04 gt 7
kill targ
endi
slow
targ ownr
kill ownr
endm
*
** Removal script
*
rscr
enum 2 23 21802
kill targ
next
enum 2 3 21802
kill targ
next
enum 2 4 21802
kill targ
next
scrx 2 23 21802 1
scrx 2 23 21802 3
scrx 2 3 21802 9
scrx 2 3 21802 12
scrx 2 4 21802 9