@genocode/core 0.4.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 (56) hide show
  1. package/dist/ast.d.ts +2 -0
  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.js +2 -2
  9. package/dist/checker.js.map +1 -1
  10. package/dist/colour.d.ts +1 -1
  11. package/dist/colour.d.ts.map +1 -1
  12. package/dist/colour.js +8 -4
  13. package/dist/colour.js.map +1 -1
  14. package/dist/format.js +1 -1
  15. package/dist/format.js.map +1 -1
  16. package/dist/genetics.d.ts.map +1 -1
  17. package/dist/genetics.js +3 -1
  18. package/dist/genetics.js.map +1 -1
  19. package/dist/help.d.ts.map +1 -1
  20. package/dist/help.js +4 -0
  21. package/dist/help.js.map +1 -1
  22. package/dist/interpreter.js +1 -1
  23. package/dist/interpreter.js.map +1 -1
  24. package/dist/parser.js +7 -2
  25. package/dist/parser.js.map +1 -1
  26. package/dist/values.d.ts +2 -0
  27. package/dist/values.d.ts.map +1 -1
  28. package/dist/values.js +1 -1
  29. package/dist/values.js.map +1 -1
  30. package/package.json +1 -1
  31. package/reference/LANGUAGE.md +14 -4
  32. package/reference/creatures/Alien.genie +653 -0
  33. package/reference/creatures/Breeze.genie +386 -0
  34. package/reference/creatures/Cobra.genie +386 -0
  35. package/reference/creatures/Flowerball.genie +302 -39
  36. package/reference/creatures/FlyingFish.genie +786 -0
  37. package/reference/creatures/Genes.genie +470 -0
  38. package/reference/creatures/Genie.genie +548 -0
  39. package/reference/creatures/Greenbay.genie +786 -0
  40. package/reference/creatures/Jellyfish.genie +472 -0
  41. package/reference/creatures/Monster.genie +594 -0
  42. package/reference/creatures/Neuron.genie +649 -0
  43. package/reference/creatures/Octoplant.genie +334 -0
  44. package/reference/creatures/Parasite.genie +393 -0
  45. package/reference/creatures/Pesky.genie +473 -0
  46. package/reference/creatures/Phoenix.genie +294 -0
  47. package/reference/creatures/Picstix.genie +1788 -0
  48. package/reference/creatures/Psybat.genie +602 -0
  49. package/reference/creatures/Star.genie +339 -0
  50. package/reference/creatures/Starfish.genie +458 -0
  51. package/reference/creatures/Transformer.genie +297 -0
  52. package/reference/creatures/TwoByTwo.genie +547 -0
  53. package/reference/creatures/Flower.genie +0 -41
  54. package/reference/creatures/Flyer.genie +0 -142
  55. package/reference/creatures/StarBurstShell.genie +0 -102
  56. package/reference/creatures/StarBurstShell9.genie +0 -102
@@ -0,0 +1,386 @@
1
+ creature Cobra
2
+ // Two snakes, mirror images of each other, swaying and twisting as they grow, with fins along
3
+ // their sides and a pearl in a ring between them.
4
+ // Inspired by Cobra, a DancerDNA creature.
5
+
6
+ gene sway = 28.09 in -28.65..28.65 // how far the body sways from side to side
7
+ gene sway_waves = 2.659 in 1..3 // how many half-waves the sway makes along the body
8
+ gene rise = -3.236 in -28.65..28.65 // how far the body rises and falls
9
+ gene rise_waves = 1.111 in 1..3
10
+ gene twist = 3.975 in -28.65..28.65 // how far the body twists
11
+ gene twist_waves = 1 in 1..3
12
+ gene taper = 1.083 in 0.9..1.1 // how much bigger each segment is than the last
13
+
14
+ gene fin = (1.387, 1.316, 0.5628) in (-2, -2, -2)..(2, 2, 2) // how far the fins reach: sideways, up and back
15
+ gene fin_waves = (2.396, 1.035, 1) in (1, 1, 1)..(3, 3, 3) // how many half-waves the fins make along the body
16
+
17
+ // The snakes' colours, from the ends to the middle, and the gaps between them.
18
+ gene skin_1 = hsv(89.9, 0.49, 1) in hsv(0, 0.4, 1)..hsv(356.4, 0.6, 1)
19
+ gene skin_2 = hsv(112, 0.45, 1) in hsv(0, 0.4, 1)..hsv(356.4, 0.6, 1)
20
+ gene skin_3 = hsv(96, 0.59, 1) in hsv(0, 0.4, 1)..hsv(356.4, 0.6, 1)
21
+ gene skin_4 = hsv(152.7, 0.45, 1) in hsv(0, 0.4, 1)..hsv(356.4, 0.6, 1)
22
+ gene skin_gaps = (0.5861, 0.3406, 0.25) in (0.25, 0.25, 0.25)..(1, 1, 1)
23
+
24
+ // The fins' colours, in the same way.
25
+ gene fin_1 = hsv(54, 1, 1) in hsv(0, 0.8, 0.6)..hsv(237.6, 1, 1)
26
+ gene fin_2 = hsv(228.9, 0.98, 0.94) in hsv(0, 0.8, 0.6)..hsv(237.6, 1, 1)
27
+ gene fin_3 = hsv(103.2, 0.96, 0.74) in hsv(0, 0.8, 0.6)..hsv(237.6, 1, 1)
28
+ gene fin_4 = hsv(82.4, 0.87, 0.65) in hsv(0, 0.8, 0.6)..hsv(237.6, 1, 1)
29
+ gene fin_gaps = (0.5613, 0.8866, 0.25) in (0.25, 0.25, 0.25)..(1, 1, 1)
30
+
31
+ gene pearl_colour = hsv(40.1, 0.65, 0.95) in hsv(18, 0, 0.4)..hsv(54, 1, 1)
32
+ gene ring_colour = hsv(41.3, 0.92, 0.97) in hsv(21.6, 0, 0.4)..hsv(54, 1, 1)
33
+ gene pearl_size = 2.978 in 1.2..3
34
+ gene ring_size = 1.787 in 1.5..2.5
35
+ gene ring_tilt = (207.7, 52.8, 0) in (-343.8, -343.8, -343.8)..(343.8, 343.8, 343.8) // how the ring turns: up, sideways and round
36
+
37
+ let skin = spectrum(skin_1, skin_2 at skin_gaps.x, skin_3 at skin_gaps.x + skin_gaps.y, skin_4 at skin_gaps.x + skin_gaps.y + skin_gaps.z)
38
+ let fins = spectrum(fin_1, fin_2 at fin_gaps.x, fin_3 at fin_gaps.x + fin_gaps.y, fin_4 at fin_gaps.x + fin_gaps.y + fin_gaps.z)
39
+
40
+ // Where the pearl goes: the middle of the first snake, measured as it's drawn.
41
+ let middle_y = 0
42
+ let middle_z = 0
43
+
44
+ shine 1
45
+ sharpness 1
46
+ symmetric x {
47
+ snake(side)
48
+ }
49
+ pearl
50
+
51
+ part snake(side) {
52
+ let total_y = 0
53
+ let total_z = 0
54
+ shape ball
55
+ repeat 29 as k {
56
+ let along = (k + 1) / 30
57
+ forward 0.45
58
+ yaw sway * sin(180 * sway_waves * along)
59
+ pitch rise * sin(180 * rise_waves * along)
60
+ roll twist * sin(180 * twist_waves * (along - 1))
61
+ grow taper
62
+ forward 0.45
63
+ colour skin(bump(along))
64
+ total_y += turtle.position.y
65
+ total_z += turtle.position.z
66
+ lay
67
+ branch {
68
+ pitch 90
69
+ let reach = (fin.x * sin(180 * fin_waves.x * along), fin.y * sin(180 * fin_waves.y * along), fin.z * sin(180 * fin_waves.z * (along - 1)))
70
+ move reach
71
+ colour fins(bump(along))
72
+ lay { grow reach * 3 }
73
+ }
74
+ }
75
+ if side > 0 {
76
+ middle_y = total_y / 30
77
+ middle_z = total_z / 30
78
+ }
79
+ }
80
+
81
+ part pearl {
82
+ move (0, middle_y, middle_z)
83
+ shape ball
84
+ colour pearl_colour
85
+ grow pearl_size
86
+ lay
87
+ pitch ring_tilt.x
88
+ yaw ring_tilt.y
89
+ roll ring_tilt.z
90
+ grow ring_size
91
+ shape ring
92
+ colour ring_colour
93
+ lay
94
+ }
95
+
96
+ variant member_2 {
97
+ sway = 28.08
98
+ sway_waves = 1.739
99
+ rise = 10.86
100
+ rise_waves = 2.813
101
+ twist = 16.53
102
+ twist_waves = 2.456
103
+ taper = 1.029
104
+ fin = (-1.916, -0.03022, 1.676)
105
+ fin_waves = (1.513, 1.383, 2.326)
106
+ skin_1 = hsv(97.2, 0.54, 1)
107
+ skin_2 = hsv(148.4, 0.52, 1)
108
+ skin_3 = hsv(336.8, 0.53, 1)
109
+ skin_4 = hsv(273, 0.54, 1)
110
+ skin_gaps = (0.7273, 0.9973, 0.5318)
111
+ fin_1 = hsv(27.4, 0.81, 0.66)
112
+ fin_2 = hsv(12.1, 0.93, 0.68)
113
+ fin_3 = hsv(193.5, 0.9, 0.62)
114
+ fin_4 = hsv(135.5, 0.85, 0.69)
115
+ fin_gaps = (0.725, 0.8858, 0.4811)
116
+ pearl_colour = hsv(33, 0.86, 0.59)
117
+ ring_colour = hsv(35.8, 0.92, 0.77)
118
+ pearl_size = 2.462
119
+ ring_size = 2.455
120
+ ring_tilt = (-29.95, 106.2, 331.7)
121
+ }
122
+
123
+ variant member_3 {
124
+ sway = 11.04
125
+ sway_waves = 1.798
126
+ rise = 15.61
127
+ rise_waves = 1
128
+ twist = -28.37
129
+ taper = 0.9028
130
+ fin = (1.415, 1, 1.501)
131
+ fin_waves = (2.225, 1.035, 1.22)
132
+ skin_1 = hsv(248, 0.58, 1)
133
+ skin_2 = hsv(112.5, 0.59, 1)
134
+ skin_3 = hsv(125.5, 0.47, 1)
135
+ skin_4 = hsv(85.7, 0.44, 1)
136
+ skin_gaps = (0.6383, 0.8783, 0.25)
137
+ fin_2 = hsv(54, 1, 1)
138
+ fin_3 = hsv(33.2, 0.99, 0.97)
139
+ fin_4 = hsv(146.4, 0.9, 0.74)
140
+ fin_gaps = (0.25, 0.25, 0.5209)
141
+ pearl_colour = hsv(18, 1, 1)
142
+ ring_colour = hsv(51.1, 0.3, 0.68)
143
+ pearl_size = 1.2
144
+ ring_size = 1.5
145
+ ring_tilt = (-65.44, 52.8, 0)
146
+ }
147
+
148
+ variant member_4 {
149
+ sway = -15.35
150
+ sway_waves = 1.777
151
+ rise = -9.783
152
+ rise_waves = 1.552
153
+ twist = -22.68
154
+ taper = 0.9146
155
+ fin = (0.6473, -0.9955, 1.947)
156
+ fin_waves = (1.244, 1.714, 1.091)
157
+ skin_1 = hsv(189.5, 0.44, 1)
158
+ skin_2 = hsv(17, 0.53, 1)
159
+ skin_3 = hsv(106, 0.6, 1)
160
+ skin_4 = hsv(199.9, 0.45, 1)
161
+ skin_gaps = (0.5861, 0.3406, 0.6599)
162
+ fin_1 = hsv(214.2, 0.91, 0.69)
163
+ fin_2 = hsv(68.5, 0.94, 0.73)
164
+ fin_4 = hsv(44.5, 0.84, 0.79)
165
+ fin_gaps = (0.5656, 0.4626, 0.6632)
166
+ pearl_colour = hsv(49.1, 0.76, 0.92)
167
+ ring_colour = hsv(50.6, 0.46, 0.8)
168
+ pearl_size = 2.025
169
+ ring_size = 2.074
170
+ ring_tilt = (-329.9, -327, 271.2)
171
+ }
172
+
173
+ variant member_5 {
174
+ sway = -10.2
175
+ sway_waves = 1.717
176
+ rise = 10.86
177
+ rise_waves = 1.558
178
+ twist = -10.85
179
+ twist_waves = 1.09
180
+ taper = 0.9026
181
+ fin = (1.707, -1.324, -0.1833)
182
+ fin_waves = (2.265, 2.117, 2.874)
183
+ skin_1 = hsv(36.9, 0.48, 1)
184
+ skin_2 = hsv(307.3, 0.49, 1)
185
+ skin_3 = hsv(336.8, 0.53, 1)
186
+ skin_4 = hsv(23.9, 0.58, 1)
187
+ skin_gaps = (0.4188, 0.8804, 0.3988)
188
+ fin_1 = hsv(158.8, 0.94, 0.88)
189
+ fin_2 = hsv(100.1, 0.94, 0.84)
190
+ fin_3 = hsv(69, 0.97, 0.72)
191
+ fin_4 = hsv(8.4, 0.86, 0.75)
192
+ fin_gaps = (0.8984, 0.5857, 0.92)
193
+ pearl_colour = hsv(21.8, 0.02, 0.74)
194
+ ring_colour = hsv(29.7, 0.58, 0.66)
195
+ pearl_size = 1.573
196
+ ring_size = 2.385
197
+ ring_tilt = (-283, 91.47, 149.5)
198
+ }
199
+
200
+ variant member_6 {
201
+ sway = -17.1
202
+ sway_waves = 1
203
+ rise = 7.915
204
+ rise_waves = 1.552
205
+ twist = 5.808
206
+ twist_waves = 1.516
207
+ taper = 0.954
208
+ fin = (0.6715, -1.744, -1.961)
209
+ fin_waves = (2.351, 1.714, 2.251)
210
+ skin_1 = hsv(324, 0.58, 1)
211
+ skin_2 = hsv(230.5, 0.45, 1)
212
+ skin_3 = hsv(25, 0.45, 1)
213
+ skin_4 = hsv(175.5, 0.5, 1)
214
+ skin_gaps = (0.54, 0.9157, 0.5872)
215
+ fin_1 = hsv(15.4, 0.9, 0.66)
216
+ fin_2 = hsv(136.3, 0.84, 0.6)
217
+ fin_3 = hsv(42.1, 0.91, 0.79)
218
+ fin_4 = hsv(185.9, 0.86, 0.64)
219
+ fin_gaps = (0.9168, 0.794, 0.6632)
220
+ pearl_colour = hsv(41.2, 0.13, 0.5)
221
+ ring_colour = hsv(44.6, 0.4, 0.78)
222
+ pearl_size = 2.08
223
+ ring_size = 2.163
224
+ ring_tilt = (-219.4, 106.2, 0)
225
+ }
226
+
227
+ variant member_7 {
228
+ sway = -16.94
229
+ sway_waves = 1.765
230
+ rise = 14.89
231
+ rise_waves = 1.552
232
+ twist = -27.04
233
+ taper = 0.9146
234
+ fin = (-1.982, -0.3833, -0.8202)
235
+ fin_waves = (2.959, 1.106, 1.197)
236
+ skin_1 = hsv(125.7, 0.47, 1)
237
+ skin_2 = hsv(103.3, 0.44, 1)
238
+ skin_3 = hsv(328.4, 0.59, 1)
239
+ skin_4 = hsv(134.1, 0.47, 1)
240
+ skin_gaps = (0.54, 0.5239, 0.9948)
241
+ fin_1 = hsv(17.1, 0.88, 0.82)
242
+ fin_2 = hsv(136.3, 0.84, 0.6)
243
+ fin_3 = hsv(184.8, 0.89, 0.64)
244
+ fin_4 = hsv(185.9, 0.86, 0.64)
245
+ fin_gaps = (0.5656, 0.9155, 0.7515)
246
+ pearl_colour = hsv(48.5, 0.33, 0.48)
247
+ ring_colour = hsv(42.4, 0.29, 0.79)
248
+ pearl_size = 1.815
249
+ ring_size = 2.3
250
+ ring_tilt = (231.6, -4.957, 102.7)
251
+ }
252
+
253
+ variant member_8 {
254
+ sway = 25.55
255
+ sway_waves = 1.107
256
+ rise = 16.99
257
+ rise_waves = 1.552
258
+ twist = 15.8
259
+ twist_waves = 2.512
260
+ taper = 0.9175
261
+ fin = (-0.1563, -1.138, 1.464)
262
+ fin_waves = (2.488, 1.714, 2.387)
263
+ skin_1 = hsv(36.9, 0.48, 1)
264
+ skin_2 = hsv(44.9, 0.4, 1)
265
+ skin_3 = hsv(343.3, 0.56, 1)
266
+ skin_4 = hsv(134.1, 0.47, 1)
267
+ skin_gaps = (0.6919, 0.6565, 0.8628)
268
+ fin_1 = hsv(101.9, 0.82, 0.87)
269
+ fin_2 = hsv(83.9, 0.86, 0.7)
270
+ fin_3 = hsv(12, 0.84, 0.6)
271
+ fin_4 = hsv(158.3, 0.85, 0.64)
272
+ fin_gaps = (0.3448, 0.8581, 0.3088)
273
+ pearl_colour = hsv(32.7, 0.94, 0.97)
274
+ ring_colour = hsv(50, 0.49, 0.74)
275
+ pearl_size = 2.08
276
+ ring_size = 2.299
277
+ ring_tilt = (-29.95, -15.93, 6.956)
278
+ }
279
+
280
+ variant member_9 {
281
+ sway = 23.13
282
+ sway_waves = 1.031
283
+ rise = -8.053
284
+ rise_waves = 2.344
285
+ twist = -10.85
286
+ twist_waves = 2.83
287
+ taper = 0.955
288
+ fin = (0.5994, 1.917, -1.896)
289
+ fin_waves = (1.916, 2.229, 1.947)
290
+ skin_1 = hsv(36.9, 0.48, 1)
291
+ skin_2 = hsv(307.3, 0.49, 1)
292
+ skin_3 = hsv(247.7, 0.58, 1)
293
+ skin_4 = hsv(312.2, 0.49, 1)
294
+ skin_gaps = (0.5323, 0.4826, 0.9444)
295
+ fin_1 = hsv(27.4, 0.81, 0.66)
296
+ fin_2 = hsv(214.3, 0.93, 0.64)
297
+ fin_3 = hsv(3.4, 0.89, 0.89)
298
+ fin_4 = hsv(113.4, 0.83, 0.77)
299
+ fin_gaps = (0.3322, 0.407, 0.8198)
300
+ pearl_colour = hsv(45.8, 0.46, 0.48)
301
+ ring_colour = hsv(33.4, 0.93, 0.94)
302
+ pearl_size = 1.705
303
+ ring_size = 2.394
304
+ ring_tilt = (-254.6, -158.2, 104.1)
305
+ }
306
+
307
+ variant member_10 {
308
+ sway = 9.906
309
+ sway_waves = 2.299
310
+ rise = 10.86
311
+ rise_waves = 1.948
312
+ twist = -10.85
313
+ twist_waves = 1.254
314
+ taper = 0.955
315
+ fin = (1.256, 1.917, -1.896)
316
+ fin_waves = (2.255, 2.117, 2.393)
317
+ skin_1 = hsv(36.9, 0.48, 1)
318
+ skin_2 = hsv(307.3, 0.49, 1)
319
+ skin_3 = hsv(286.4, 0.49, 1)
320
+ skin_4 = hsv(300.2, 0.54, 1)
321
+ skin_gaps = (0.5323, 0.8591, 0.438)
322
+ fin_1 = hsv(78.6, 0.9, 0.83)
323
+ fin_2 = hsv(169.4, 0.94, 0.6)
324
+ fin_3 = hsv(178.6, 0.94, 0.83)
325
+ fin_4 = hsv(113.4, 0.83, 0.77)
326
+ fin_gaps = (0.3684, 0.407, 0.8198)
327
+ pearl_colour = hsv(32.6, 0.1, 0.42)
328
+ ring_colour = hsv(24.3, 0.29, 0.66)
329
+ pearl_size = 1.351
330
+ ring_size = 1.996
331
+ ring_tilt = (-314.4, 165.8, 104.1)
332
+ }
333
+
334
+ variant member_11 {
335
+ sway = -19.08
336
+ sway_waves = 2.375
337
+ rise = 10.86
338
+ rise_waves = 2.187
339
+ twist = 12.57
340
+ twist_waves = 1.254
341
+ taper = 0.955
342
+ fin = (0.337, -0.293, -1.142)
343
+ fin_waves = (2.447, 2.117, 1.814)
344
+ skin_1 = hsv(17.3, 0.49, 1)
345
+ skin_2 = hsv(307.3, 0.49, 1)
346
+ skin_3 = hsv(160.1, 0.43, 1)
347
+ skin_4 = hsv(334, 0.58, 1)
348
+ skin_gaps = (0.8014, 0.7994, 0.3908)
349
+ fin_1 = hsv(154.7, 0.82, 0.73)
350
+ fin_2 = hsv(38.8, 0.92, 0.75)
351
+ fin_3 = hsv(18.1, 0.93, 0.97)
352
+ fin_4 = hsv(192, 1, 0.92)
353
+ fin_gaps = (0.7173, 0.2909, 0.2917)
354
+ pearl_colour = hsv(39.2, 0.74, 0.67)
355
+ ring_colour = hsv(33.4, 0.93, 0.94)
356
+ pearl_size = 2.824
357
+ ring_size = 2.434
358
+ ring_tilt = (-104.1, -120.1, 219.2)
359
+ }
360
+
361
+ variant member_12 {
362
+ sway = 10.06
363
+ sway_waves = 1.956
364
+ rise = 3.727
365
+ rise_waves = 1.055
366
+ twist = -16.55
367
+ twist_waves = 1.371
368
+ taper = 0.9416
369
+ fin = (0.4251, -0.293, -0.1528)
370
+ fin_waves = (2.148, 2.789, 1.987)
371
+ skin_1 = hsv(267.9, 0.49, 1)
372
+ skin_2 = hsv(5.4, 0.51, 1)
373
+ skin_3 = hsv(73.6, 0.53, 1)
374
+ skin_4 = hsv(334, 0.58, 1)
375
+ skin_gaps = (0.5596, 0.9194, 0.7834)
376
+ fin_1 = hsv(158.9, 0.96, 1)
377
+ fin_2 = hsv(2.6, 0.94, 0.91)
378
+ fin_3 = hsv(207.2, 0.92, 0.9)
379
+ fin_4 = hsv(182.3, 0.96, 0.68)
380
+ fin_gaps = (0.528, 0.2598, 0.7941)
381
+ pearl_colour = hsv(38.3, 0.44, 0.8)
382
+ ring_colour = hsv(48, 0.37, 0.87)
383
+ pearl_size = 1.526
384
+ ring_size = 1.826
385
+ ring_tilt = (-0.7805, -101, -184.1)
386
+ }