@genocode/core 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/ast.d.ts +17 -1
  2. package/dist/ast.d.ts.map +1 -1
  3. package/dist/ast.js.map +1 -1
  4. package/dist/builtins.d.ts +1 -1
  5. package/dist/builtins.d.ts.map +1 -1
  6. package/dist/builtins.js +5 -2
  7. package/dist/builtins.js.map +1 -1
  8. package/dist/checker.d.ts +10 -1
  9. package/dist/checker.d.ts.map +1 -1
  10. package/dist/checker.js +102 -2
  11. package/dist/checker.js.map +1 -1
  12. package/dist/colour.d.ts +1 -1
  13. package/dist/colour.d.ts.map +1 -1
  14. package/dist/colour.js +8 -4
  15. package/dist/colour.js.map +1 -1
  16. package/dist/format.d.ts.map +1 -1
  17. package/dist/format.js +37 -3
  18. package/dist/format.js.map +1 -1
  19. package/dist/genetics.d.ts.map +1 -1
  20. package/dist/genetics.js +3 -1
  21. package/dist/genetics.js.map +1 -1
  22. package/dist/help.d.ts.map +1 -1
  23. package/dist/help.js +30 -3
  24. package/dist/help.js.map +1 -1
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/interpreter.js +3 -1
  29. package/dist/interpreter.js.map +1 -1
  30. package/dist/lexer.d.ts.map +1 -1
  31. package/dist/lexer.js +1 -0
  32. package/dist/lexer.js.map +1 -1
  33. package/dist/parser.js +48 -2
  34. package/dist/parser.js.map +1 -1
  35. package/dist/values.d.ts +2 -0
  36. package/dist/values.d.ts.map +1 -1
  37. package/dist/values.js +1 -1
  38. package/dist/values.js.map +1 -1
  39. package/package.json +1 -1
  40. package/reference/LANGUAGE.md +61 -8
  41. package/reference/creatures/Alien.genie +653 -0
  42. package/reference/creatures/Breeze.genie +386 -0
  43. package/reference/creatures/Cobra.genie +386 -0
  44. package/reference/creatures/Flowerball.genie +302 -39
  45. package/reference/creatures/FlyingFish.genie +786 -0
  46. package/reference/creatures/Genes.genie +470 -0
  47. package/reference/creatures/Genie.genie +548 -0
  48. package/reference/creatures/Greenbay.genie +786 -0
  49. package/reference/creatures/Jellyfish.genie +472 -0
  50. package/reference/creatures/Monster.genie +594 -0
  51. package/reference/creatures/Neuron.genie +649 -0
  52. package/reference/creatures/Octoplant.genie +334 -0
  53. package/reference/creatures/Parasite.genie +393 -0
  54. package/reference/creatures/Pesky.genie +473 -0
  55. package/reference/creatures/Phoenix.genie +294 -0
  56. package/reference/creatures/Picstix.genie +1788 -0
  57. package/reference/creatures/Psybat.genie +602 -0
  58. package/reference/creatures/Star.genie +339 -0
  59. package/reference/creatures/Starfish.genie +458 -0
  60. package/reference/creatures/Transformer.genie +297 -0
  61. package/reference/creatures/TwoByTwo.genie +547 -0
  62. package/reference/creatures/Flower.genie +0 -41
  63. package/reference/creatures/Flyer.genie +0 -142
  64. package/reference/creatures/StarBurstShell.genie +0 -102
  65. package/reference/creatures/StarBurstShell9.genie +0 -102
@@ -0,0 +1,393 @@
1
+ creature Parasite
2
+ // A segmented worm with a pair of legs on every segment, which can curl up into a ring with its
3
+ // legs splayed out.
4
+ // Inspired by Parasite, a DancerDNA creature.
5
+
6
+ gene legs_away = -3.683 in -5..1 // how far the legs stand off from the body; at 0 or below they're attached
7
+ gene curl_up = -1.923 in -5..2 // how far the body curls into a ring: 0 not at all, 1 all the way
8
+ gene leg_reach = 4.18 in 1..30 // how far off the legs are when they stand off
9
+
10
+ gene stride = 0.9559 in 0.8..1.05 // how long the body's segments are
11
+ gene wiggle = (-2.755, 10.34, -1.77) in (-17.19, -17.19, -17.19)..(17.19, 17.85, 17.19) // how far the body wiggles: up, sideways and round
12
+ gene wiggle_waves = (2.65, 2.298, 2.554) in (1, 1, 1)..(3, 3, 3) // how many half-waves the wiggles make along it
13
+ gene swell = 0.02704 in -0.15..0.15 // how much the segments grow and shrink
14
+ gene swell_waves = 0.7213 in 0.1..4
15
+
16
+ gene leg_length = 11.54 in 0..15 // how many beads the longest legs have
17
+ gene leg_waves = 1.912 in 0.5..10 // how many times the legs grow and shrink along the body
18
+ gene leg_start = 0.668 in 0..1
19
+ gene leg_turn = -0.1754 in -57.3..57.3 // how far the legs turn as the body curls up
20
+ gene leg_spread = 0.9165 in 0..3 // how far apart the beads of the inner legs are as it curls up
21
+ gene bead_length = 1.829 in 0.2..3
22
+ gene bead_taper = 0.9351 in 0.8..1.1 // how much bigger each bead is than the last
23
+ gene leg_curl = 1.092 in -1.5..1.5
24
+ gene leg_curl_waves = 1.349 in 0.5..4
25
+
26
+ // The body's colours, from head to tail, and the gaps between them; and the legs' tips.
27
+ gene body_1 = hsv(72.7, 0.83, 1) in hsv(0, 0.4, 1)..hsv(360, 1, 1)
28
+ gene body_2 = hsv(70.9, 0.89, 1) in hsv(0, 0.4, 1)..hsv(360, 1, 1)
29
+ gene body_3 = hsv(49.8, 0.81, 1) in hsv(0, 0.4, 1)..hsv(360, 1, 1)
30
+ gene body_4 = hsv(79.9, 0.65, 1) in hsv(0, 0.4, 1)..hsv(360, 1, 1)
31
+ gene body_gaps = (0.5113, 0.4083, 0.5948) in (0.25, 0.25, 0.25)..(1, 1, 1)
32
+ gene leg_tip = hsv(219.4, 0.51, 1) in hsv(0, 0.4, 1)..hsv(360, 1, 1)
33
+
34
+ let body = spectrum(body_1, body_2 at body_gaps.x, body_3 at body_gaps.x + body_gaps.y, body_4 at body_gaps.x + body_gaps.y + body_gaps.z)
35
+
36
+ let away = max(legs_away, 0)
37
+ let attached = 1 - away
38
+ let circle = clamp(curl_up, 0, 1)
39
+ let loose = (1 - circle) * attached
40
+
41
+ yaw 90
42
+ sharpness 1
43
+ shine 1
44
+ worm
45
+
46
+ part worm {
47
+ branch {
48
+ shape donut
49
+ colour body(0)
50
+ lay
51
+ forward -0.3
52
+ shape tube
53
+ repeat 30 as k {
54
+ let along = k / 30
55
+ forward stride / 2
56
+ yaw loose * wiggle.y * sin(180 * wiggle_waves.y * along)
57
+ pitch 12 * circle + loose * wiggle.x * sin(180 * wiggle_waves.x * along)
58
+ roll loose * wiggle.z * sin(180 * wiggle_waves.z * (along - 1))
59
+ grow 1 + loose * swell * sin(180 * swell_waves * along)
60
+ forward stride / 2
61
+ colour body(along)
62
+ lay
63
+ branch {
64
+ let beads = leg_length * sin(180 * leg_waves * (along + leg_start))
65
+ leg(beads, body(along), stride_out(true))
66
+ mirror y
67
+ leg(beads, body(along), stride_out(false))
68
+ }
69
+ }
70
+ forward stride - 0.4
71
+ shape donut
72
+ lay
73
+ }
74
+ }
75
+
76
+ // How far apart a leg's beads are: the inner legs spread as the body curls up.
77
+ function stride_out(inner) {
78
+ if inner {
79
+ return 0.4 + circle * leg_spread
80
+ }
81
+ return 0.4
82
+ }
83
+
84
+ part leg(beads, base, spacing) {
85
+ branch {
86
+ pitch 90
87
+ yaw circle * attached * leg_turn
88
+ forward away * leg_reach
89
+ shape ball
90
+ grow (0.5, 0.5, bead_length)
91
+ forward -0.2
92
+ let size = bead_taper
93
+ repeat ceil(beads) as k {
94
+ forward spacing
95
+ let along = k / beads
96
+ colour spectrum(base, leg_tip)(along)
97
+ // The last bead is cut short by what's left of the count.
98
+ if k + 1 > beads {
99
+ size *= beads % 1
100
+ }
101
+ grow size
102
+ yaw degrees(attached * (leg_curl * sin(180 * leg_curl_waves * along)) ^ 3)
103
+ forward spacing
104
+ lay
105
+ }
106
+ }
107
+ }
108
+
109
+ variant member_2 {
110
+ legs_away = -4.382
111
+ curl_up = -2.532
112
+ leg_reach = 4.889
113
+ stride = 0.977
114
+ wiggle = (-7.057, 17.85, 1.837)
115
+ wiggle_waves = (2.832, 2.438, 2.983)
116
+ swell = 0.05078
117
+ swell_waves = 0.6305
118
+ leg_length = 13.56
119
+ leg_waves = 1.798
120
+ leg_start = 0.8668
121
+ leg_turn = -0.6955
122
+ leg_spread = 1.052
123
+ bead_length = 1.498
124
+ bead_taper = 0.9466
125
+ leg_curl = 1.045
126
+ leg_curl_waves = 0.8635
127
+ body_1 = hsv(88.9, 0.83, 1)
128
+ body_2 = hsv(12, 0.88, 1)
129
+ body_3 = hsv(62.9, 0.77, 1)
130
+ body_4 = hsv(60.4, 0.65, 1)
131
+ body_gaps = (0.4423, 0.3939, 0.5718)
132
+ leg_tip = hsv(218.5, 0.5, 1)
133
+ }
134
+
135
+ variant member_3 {
136
+ legs_away = -3.753
137
+ curl_up = -1.534
138
+ leg_reach = 12.92
139
+ stride = 0.9741
140
+ wiggle = (-16.93, 10.06, -11.67)
141
+ wiggle_waves = (2.975, 2.704, 1.633)
142
+ swell = 0.02304
143
+ swell_waves = 1.723
144
+ leg_length = 3.845
145
+ leg_waves = 0.6921
146
+ leg_start = 0.3731
147
+ leg_turn = 7.014
148
+ leg_spread = 1.938
149
+ bead_length = 2.173
150
+ bead_taper = 0.8282
151
+ leg_curl = -1.165
152
+ leg_curl_waves = 1.736
153
+ body_1 = hsv(312.3, 0.49, 1)
154
+ body_2 = hsv(189.4, 0.59, 1)
155
+ body_3 = hsv(260.5, 0.77, 1)
156
+ body_4 = hsv(52.3, 0.99, 1)
157
+ body_gaps = (0.2819, 0.488, 0.9365)
158
+ leg_tip = hsv(112.6, 0.93, 1)
159
+ }
160
+
161
+ variant member_4 {
162
+ legs_away = 0.6745
163
+ curl_up = -1.247
164
+ leg_reach = 5.742
165
+ stride = 0.8983
166
+ wiggle = (2.312, 1.527, -16.95)
167
+ wiggle_waves = (2.677, 1.789, 1.53)
168
+ swell = -0.08456
169
+ swell_waves = 1.012
170
+ leg_length = 7.466
171
+ leg_waves = 1
172
+ leg_start = 0.006293
173
+ leg_turn = 1.897
174
+ leg_spread = 1.95
175
+ bead_length = 1.68
176
+ bead_taper = 0.8679
177
+ leg_curl = 1.251
178
+ leg_curl_waves = 1.724
179
+ body_1 = hsv(36.5, 0.89, 1)
180
+ body_2 = hsv(88.9, 0.6, 1)
181
+ body_3 = hsv(199.1, 0.97, 1)
182
+ body_4 = hsv(307.8, 0.78, 1)
183
+ body_gaps = (0.9105, 0.8472, 0.7169)
184
+ leg_tip = hsv(77.8, 0.69, 1)
185
+ }
186
+
187
+ variant member_5 {
188
+ legs_away = -0.141
189
+ curl_up = -0.07943
190
+ leg_reach = 4.174
191
+ stride = 0.8064
192
+ wiggle = (0.7381, -17.14, 4.941)
193
+ wiggle_waves = (1.802, 1.923, 1.328)
194
+ swell = 0.04841
195
+ swell_waves = 1.647
196
+ leg_length = 9.225
197
+ leg_waves = 1.336
198
+ leg_start = 0.006293
199
+ leg_turn = 1.955
200
+ leg_spread = 2.257
201
+ bead_length = 1.397
202
+ bead_taper = 0.9783
203
+ leg_curl = 1.086
204
+ leg_curl_waves = 1.97
205
+ body_1 = hsv(179.4, 0.9, 1)
206
+ body_2 = hsv(210.8, 0.63, 1)
207
+ body_3 = hsv(224, 0.91, 1)
208
+ body_4 = hsv(304.9, 0.78, 1)
209
+ body_gaps = (0.8318, 0.4984, 0.4518)
210
+ leg_tip = hsv(346.1, 0.87, 1)
211
+ }
212
+
213
+ variant member_6 {
214
+ legs_away = -0.09681
215
+ curl_up = 0.3121
216
+ leg_reach = 7.436
217
+ stride = 0.8134
218
+ wiggle = (-1.911, -0.7886, -6.438)
219
+ wiggle_waves = (1.294, 2.244, 1.765)
220
+ swell = -0.01532
221
+ swell_waves = 1.158
222
+ leg_length = 6.078
223
+ leg_waves = 0.9258
224
+ leg_start = 0.1634
225
+ leg_turn = -12.14
226
+ leg_spread = 1.316
227
+ bead_length = 2.518
228
+ bead_taper = 0.8511
229
+ leg_curl = 0.6355
230
+ leg_curl_waves = 2.083
231
+ body_1 = hsv(300.7, 0.95, 1)
232
+ body_2 = hsv(256.2, 0.76, 1)
233
+ body_3 = hsv(240.1, 0.9, 1)
234
+ body_4 = hsv(322.5, 0.64, 1)
235
+ body_gaps = (0.9713, 0.9284, 0.5469)
236
+ leg_tip = hsv(139.6, 0.67, 1)
237
+ }
238
+
239
+ variant member_7 {
240
+ legs_away = 0.5801
241
+ curl_up = 0.7719
242
+ leg_reach = 17.18
243
+ stride = 0.9407
244
+ wiggle = (0.8597, 10.02, 4.283)
245
+ wiggle_waves = (1.464, 1.345, 1.394)
246
+ swell = 0.05637
247
+ swell_waves = 1.677
248
+ leg_length = 5.746
249
+ leg_waves = 0.5307
250
+ leg_start = 0.6712
251
+ leg_turn = -35.63
252
+ leg_spread = 1.765
253
+ bead_length = 0.7007
254
+ bead_taper = 0.9745
255
+ leg_curl = -1.334
256
+ leg_curl_waves = 2.248
257
+ body_1 = hsv(46.4, 0.5, 1)
258
+ body_2 = hsv(129.2, 0.5, 1)
259
+ body_3 = hsv(336, 0.56, 1)
260
+ body_4 = hsv(156.7, 0.99, 1)
261
+ body_gaps = (0.4612, 0.8361, 0.7589)
262
+ leg_tip = hsv(291, 0.42, 1)
263
+ }
264
+
265
+ variant member_8 {
266
+ legs_away = -1.676
267
+ curl_up = 0.9599
268
+ leg_reach = 2.142
269
+ stride = 0.8953
270
+ wiggle = (9.607, -11.23, -12.13)
271
+ wiggle_waves = (2.126, 1.572, 1.698)
272
+ swell = 0.04742
273
+ swell_waves = 0.2133
274
+ leg_length = 5.752
275
+ leg_waves = 0.9077
276
+ leg_start = 0.09175
277
+ leg_turn = 1.319
278
+ leg_spread = 0.4972
279
+ bead_length = 2.322
280
+ bead_taper = 0.9142
281
+ leg_curl = 0.7406
282
+ leg_curl_waves = 2.745
283
+ body_1 = hsv(81.5, 0.77, 1)
284
+ body_2 = hsv(240.2, 0.94, 1)
285
+ body_3 = hsv(12.2, 0.93, 1)
286
+ body_4 = hsv(135.9, 0.66, 1)
287
+ body_gaps = (0.5767, 0.4498, 0.6609)
288
+ leg_tip = hsv(160.2, 0.48, 1)
289
+ }
290
+
291
+ variant member_9 {
292
+ legs_away = -1.676
293
+ curl_up = -0.1719
294
+ leg_reach = 9.848
295
+ stride = 0.8953
296
+ wiggle = (9.607, -11.23, -12.13)
297
+ wiggle_waves = (2.126, 1.847, 1.319)
298
+ swell = -0.07622
299
+ swell_waves = 1.975
300
+ leg_length = 5.752
301
+ leg_waves = 4.549
302
+ leg_start = 0.09681
303
+ leg_turn = 1.319
304
+ leg_spread = 0.5285
305
+ bead_length = 2.782
306
+ bead_taper = 0.832
307
+ leg_curl = 1.227
308
+ leg_curl_waves = 2.745
309
+ body_1 = hsv(6.7, 0.93, 1)
310
+ body_2 = hsv(173.8, 0.88, 1)
311
+ body_3 = hsv(119.2, 0.89, 1)
312
+ body_4 = hsv(98.7, 0.56, 1)
313
+ body_gaps = (0.8976, 0.4498, 0.6609)
314
+ leg_tip = hsv(306.3, 0.62, 1)
315
+ }
316
+
317
+ variant member_10 {
318
+ legs_away = -0.141
319
+ curl_up = -3.471
320
+ leg_reach = 10.78
321
+ stride = 0.84
322
+ wiggle = (5.01, -16.76, 4.941)
323
+ wiggle_waves = (2.719, 1.294, 1.328)
324
+ swell = 0.04841
325
+ swell_waves = 1.647
326
+ leg_length = 13.66
327
+ leg_waves = 0.8843
328
+ leg_start = 0.1326
329
+ leg_turn = 42.68
330
+ leg_spread = 2.257
331
+ bead_length = 1.575
332
+ bead_taper = 1.019
333
+ leg_curl = 1.34
334
+ leg_curl_waves = 0.5153
335
+ body_1 = hsv(43, 0.84, 1)
336
+ body_2 = hsv(208.6, 0.77, 1)
337
+ body_3 = hsv(224, 0.91, 1)
338
+ body_4 = hsv(127.1, 0.82, 1)
339
+ body_gaps = (0.543, 0.4755, 0.4391)
340
+ leg_tip = hsv(346.1, 0.87, 1)
341
+ }
342
+
343
+ variant member_11 {
344
+ legs_away = -0.141
345
+ curl_up = -1.937
346
+ leg_reach = 8.821
347
+ stride = 0.824
348
+ wiggle = (-1.015, -17.14, 4.941)
349
+ wiggle_waves = (2.571, 1.294, 1.494)
350
+ swell = 0.04841
351
+ swell_waves = 1.924
352
+ leg_length = 13.66
353
+ leg_waves = 2.535
354
+ leg_start = 0.1905
355
+ leg_turn = 46.48
356
+ leg_spread = 2.257
357
+ bead_length = 1.527
358
+ bead_taper = 0.9783
359
+ leg_curl = 1.384
360
+ leg_curl_waves = 0.5153
361
+ body_1 = hsv(43, 0.84, 1)
362
+ body_2 = hsv(208.6, 0.77, 1)
363
+ body_3 = hsv(242.6, 0.98, 1)
364
+ body_4 = hsv(127.1, 0.82, 1)
365
+ body_gaps = (0.543, 0.4755, 0.4518)
366
+ leg_tip = hsv(346.1, 0.87, 1)
367
+ }
368
+
369
+ variant member_12 {
370
+ legs_away = -4.382
371
+ curl_up = -3.903
372
+ leg_reach = 4.889
373
+ stride = 1.046
374
+ wiggle = (-7.057, 17.85, -5.462)
375
+ wiggle_waves = (2.832, 2.438, 2.983)
376
+ swell = 0.1402
377
+ swell_waves = 0.7648
378
+ leg_length = 11.86
379
+ leg_waves = 1.798
380
+ leg_start = 0.8668
381
+ leg_turn = -16.87
382
+ leg_spread = 1.052
383
+ bead_length = 1.886
384
+ bead_taper = 0.9517
385
+ leg_curl = 1.045
386
+ leg_curl_waves = 1.81
387
+ body_1 = hsv(179.1, 0.68, 1)
388
+ body_2 = hsv(12, 0.88, 1)
389
+ body_3 = hsv(3.5, 0.88, 1)
390
+ body_4 = hsv(81.8, 0.78, 1)
391
+ body_gaps = (0.4423, 0.3939, 0.7437)
392
+ leg_tip = hsv(134.1, 0.45, 1)
393
+ }