@almadar/std 16.189.0 → 16.191.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.
@@ -482,6 +482,13 @@
482
482
  "tier": "domain",
483
483
  "type": "[PlatformerCurveSample]"
484
484
  },
485
+ "skateMaxGap": {
486
+ "default": 0.0,
487
+ "description": "Largest x-gap between consecutive skateCurve samples that still counts as surface. 0 = unlimited (sparse two-sample lines skate fine). Dense resampled curves with real gaps between segments (stitched worlds) MUST set this — otherwise the sampler invents a skatable chord across every gap (an invisible line above the bridge/terrain that the body snaps to and glides along).",
488
+ "label": "Skate Max Gap",
489
+ "tier": "domain",
490
+ "type": "number"
491
+ },
485
492
  "skateSnap": {
486
493
  "default": 0.75,
487
494
  "description": "Max vertical gap (world units) between the body's min corner and the curve surface for skating to engage or stay engaged; larger values grab earlier on landing, smaller values release sooner on bumps",
@@ -1897,44 +1904,31 @@
1897
1904
  "let",
1898
1905
  [
1899
1906
  [
1900
- "curveMod",
1907
+ "gapBreak",
1901
1908
  [
1902
- "if",
1909
+ "and",
1903
1910
  [
1904
- "and",
1905
- "@config.curveModsEnabled",
1906
- "@inRange"
1911
+ ">",
1912
+ "@config.skateMaxGap",
1913
+ 0.0
1907
1914
  ],
1908
1915
  [
1909
- "array/find",
1910
- "@entity.curveMods",
1916
+ ">",
1911
1917
  [
1912
- "fn",
1913
- "m",
1918
+ "-",
1914
1919
  [
1915
- "and",
1916
- [
1917
- ">=",
1918
- "@cx",
1919
- [
1920
- "object/get",
1921
- "@m",
1922
- "x0"
1923
- ]
1924
- ],
1925
- [
1926
- "<=",
1927
- "@cx",
1928
- [
1929
- "object/get",
1930
- "@m",
1931
- "x1"
1932
- ]
1933
- ]
1920
+ "object/get",
1921
+ "@rightSamp",
1922
+ "x"
1923
+ ],
1924
+ [
1925
+ "object/get",
1926
+ "@leftSamp",
1927
+ "x"
1934
1928
  ]
1935
- ]
1936
- ],
1937
- null
1929
+ ],
1930
+ "@config.skateMaxGap"
1931
+ ]
1938
1932
  ]
1939
1933
  ]
1940
1934
  ],
@@ -1942,24 +1936,44 @@
1942
1936
  "let",
1943
1937
  [
1944
1938
  [
1945
- "modX",
1939
+ "curveMod",
1946
1940
  [
1947
1941
  "if",
1948
1942
  [
1949
- "==",
1950
- "@curveMod",
1951
- null
1943
+ "and",
1944
+ "@config.curveModsEnabled",
1945
+ "@inRange"
1952
1946
  ],
1953
- "@cx",
1954
1947
  [
1955
- "-",
1956
- "@cx",
1948
+ "array/find",
1949
+ "@entity.curveMods",
1957
1950
  [
1958
- "object/get",
1959
- "@curveMod",
1960
- "h"
1951
+ "fn",
1952
+ "m",
1953
+ [
1954
+ "and",
1955
+ [
1956
+ ">=",
1957
+ "@cx",
1958
+ [
1959
+ "object/get",
1960
+ "@m",
1961
+ "x0"
1962
+ ]
1963
+ ],
1964
+ [
1965
+ "<=",
1966
+ "@cx",
1967
+ [
1968
+ "object/get",
1969
+ "@m",
1970
+ "x1"
1971
+ ]
1972
+ ]
1973
+ ]
1961
1974
  ]
1962
- ]
1975
+ ],
1976
+ null
1963
1977
  ]
1964
1978
  ]
1965
1979
  ],
@@ -1967,39 +1981,22 @@
1967
1981
  "let",
1968
1982
  [
1969
1983
  [
1970
- "modInRange",
1984
+ "modX",
1971
1985
  [
1972
- "and",
1986
+ "if",
1973
1987
  [
1974
- "!=",
1988
+ "==",
1975
1989
  "@curveMod",
1976
1990
  null
1977
1991
  ],
1992
+ "@cx",
1978
1993
  [
1979
- "and",
1980
- [
1981
- ">=",
1982
- "@modX",
1983
- [
1984
- "object/get",
1985
- [
1986
- "array/first",
1987
- "@config.skateCurve"
1988
- ],
1989
- "x"
1990
- ]
1991
- ],
1994
+ "-",
1995
+ "@cx",
1992
1996
  [
1993
- "<",
1994
- "@modX",
1995
- [
1996
- "object/get",
1997
- [
1998
- "array/last",
1999
- "@config.skateCurve"
2000
- ],
2001
- "x"
2002
- ]
1997
+ "object/get",
1998
+ "@curveMod",
1999
+ "h"
2003
2000
  ]
2004
2001
  ]
2005
2002
  ]
@@ -2009,31 +2006,41 @@
2009
2006
  "let",
2010
2007
  [
2011
2008
  [
2012
- "modLeft",
2009
+ "modInRange",
2013
2010
  [
2014
- "if",
2015
- "@modInRange",
2011
+ "and",
2012
+ [
2013
+ "!=",
2014
+ "@curveMod",
2015
+ null
2016
+ ],
2016
2017
  [
2017
- "array/last",
2018
+ "and",
2018
2019
  [
2019
- "array/filter",
2020
- "@config.skateCurve",
2020
+ ">=",
2021
+ "@modX",
2021
2022
  [
2022
- "fn",
2023
- "s",
2023
+ "object/get",
2024
2024
  [
2025
- "<=",
2026
- [
2027
- "object/get",
2028
- "@s",
2029
- "x"
2030
- ],
2031
- "@modX"
2032
- ]
2025
+ "array/first",
2026
+ "@config.skateCurve"
2027
+ ],
2028
+ "x"
2029
+ ]
2030
+ ],
2031
+ [
2032
+ "<",
2033
+ "@modX",
2034
+ [
2035
+ "object/get",
2036
+ [
2037
+ "array/last",
2038
+ "@config.skateCurve"
2039
+ ],
2040
+ "x"
2033
2041
  ]
2034
2042
  ]
2035
- ],
2036
- "@leftSamp"
2043
+ ]
2037
2044
  ]
2038
2045
  ]
2039
2046
  ],
@@ -2041,12 +2048,12 @@
2041
2048
  "let",
2042
2049
  [
2043
2050
  [
2044
- "modRight",
2051
+ "modLeft",
2045
2052
  [
2046
2053
  "if",
2047
2054
  "@modInRange",
2048
2055
  [
2049
- "array/first",
2056
+ "array/last",
2050
2057
  [
2051
2058
  "array/filter",
2052
2059
  "@config.skateCurve",
@@ -2054,7 +2061,7 @@
2054
2061
  "fn",
2055
2062
  "s",
2056
2063
  [
2057
- ">",
2064
+ "<=",
2058
2065
  [
2059
2066
  "object/get",
2060
2067
  "@s",
@@ -2065,7 +2072,7 @@
2065
2072
  ]
2066
2073
  ]
2067
2074
  ],
2068
- "@rightSamp"
2075
+ "@leftSamp"
2069
2076
  ]
2070
2077
  ]
2071
2078
  ],
@@ -2073,40 +2080,31 @@
2073
2080
  "let",
2074
2081
  [
2075
2082
  [
2076
- "modSlope",
2083
+ "modRight",
2077
2084
  [
2078
2085
  "if",
2079
2086
  "@modInRange",
2080
2087
  [
2081
- "/",
2082
- [
2083
- "-",
2084
- [
2085
- "object/get",
2086
- "@modRight",
2087
- "y"
2088
- ],
2089
- [
2090
- "object/get",
2091
- "@modLeft",
2092
- "y"
2093
- ]
2094
- ],
2088
+ "array/first",
2095
2089
  [
2096
- "-",
2090
+ "array/filter",
2091
+ "@config.skateCurve",
2097
2092
  [
2098
- "object/get",
2099
- "@modRight",
2100
- "x"
2101
- ],
2102
- [
2103
- "object/get",
2104
- "@modLeft",
2105
- "x"
2093
+ "fn",
2094
+ "s",
2095
+ [
2096
+ ">",
2097
+ [
2098
+ "object/get",
2099
+ "@s",
2100
+ "x"
2101
+ ],
2102
+ "@modX"
2103
+ ]
2106
2104
  ]
2107
2105
  ]
2108
2106
  ],
2109
- "@slope"
2107
+ "@rightSamp"
2110
2108
  ]
2111
2109
  ]
2112
2110
  ],
@@ -2114,32 +2112,40 @@
2114
2112
  "let",
2115
2113
  [
2116
2114
  [
2117
- "modCurveY",
2115
+ "modSlope",
2118
2116
  [
2119
2117
  "if",
2120
2118
  "@modInRange",
2121
2119
  [
2122
- "+",
2120
+ "/",
2123
2121
  [
2124
- "object/get",
2125
- "@modLeft",
2126
- "y"
2122
+ "-",
2123
+ [
2124
+ "object/get",
2125
+ "@modRight",
2126
+ "y"
2127
+ ],
2128
+ [
2129
+ "object/get",
2130
+ "@modLeft",
2131
+ "y"
2132
+ ]
2127
2133
  ],
2128
2134
  [
2129
- "*",
2130
- "@modSlope",
2135
+ "-",
2131
2136
  [
2132
- "-",
2133
- "@modX",
2134
- [
2135
- "object/get",
2136
- "@modLeft",
2137
- "x"
2138
- ]
2137
+ "object/get",
2138
+ "@modRight",
2139
+ "x"
2140
+ ],
2141
+ [
2142
+ "object/get",
2143
+ "@modLeft",
2144
+ "x"
2139
2145
  ]
2140
2146
  ]
2141
2147
  ],
2142
- "@curveY"
2148
+ "@slope"
2143
2149
  ]
2144
2150
  ]
2145
2151
  ],
@@ -2147,24 +2153,32 @@
2147
2153
  "let",
2148
2154
  [
2149
2155
  [
2150
- "slope",
2156
+ "modCurveY",
2151
2157
  [
2152
2158
  "if",
2159
+ "@modInRange",
2153
2160
  [
2154
- "==",
2155
- "@curveMod",
2156
- null
2157
- ],
2158
- "@slope",
2159
- [
2160
- "*",
2161
+ "+",
2161
2162
  [
2162
2163
  "object/get",
2163
- "@curveMod",
2164
- "a"
2164
+ "@modLeft",
2165
+ "y"
2165
2166
  ],
2166
- "@modSlope"
2167
- ]
2167
+ [
2168
+ "*",
2169
+ "@modSlope",
2170
+ [
2171
+ "-",
2172
+ "@modX",
2173
+ [
2174
+ "object/get",
2175
+ "@modLeft",
2176
+ "x"
2177
+ ]
2178
+ ]
2179
+ ]
2180
+ ],
2181
+ "@curveY"
2168
2182
  ]
2169
2183
  ]
2170
2184
  ],
@@ -2172,7 +2186,7 @@
2172
2186
  "let",
2173
2187
  [
2174
2188
  [
2175
- "curveY",
2189
+ "slope",
2176
2190
  [
2177
2191
  "if",
2178
2192
  [
@@ -2180,23 +2194,15 @@
2180
2194
  "@curveMod",
2181
2195
  null
2182
2196
  ],
2183
- "@curveY",
2197
+ "@slope",
2184
2198
  [
2185
- "+",
2186
- [
2187
- "*",
2188
- [
2189
- "object/get",
2190
- "@curveMod",
2191
- "a"
2192
- ],
2193
- "@modCurveY"
2194
- ],
2199
+ "*",
2195
2200
  [
2196
2201
  "object/get",
2197
2202
  "@curveMod",
2198
- "k"
2199
- ]
2203
+ "a"
2204
+ ],
2205
+ "@modSlope"
2200
2206
  ]
2201
2207
  ]
2202
2208
  ]
@@ -2205,15 +2211,32 @@
2205
2211
  "let",
2206
2212
  [
2207
2213
  [
2208
- "movingUp",
2214
+ "curveY",
2209
2215
  [
2210
- "<",
2216
+ "if",
2211
2217
  [
2212
- "*",
2213
- "@vy1",
2214
- "@gdir"
2218
+ "==",
2219
+ "@curveMod",
2220
+ null
2215
2221
  ],
2216
- -0.01
2222
+ "@curveY",
2223
+ [
2224
+ "+",
2225
+ [
2226
+ "*",
2227
+ [
2228
+ "object/get",
2229
+ "@curveMod",
2230
+ "a"
2231
+ ],
2232
+ "@modCurveY"
2233
+ ],
2234
+ [
2235
+ "object/get",
2236
+ "@curveMod",
2237
+ "k"
2238
+ ]
2239
+ ]
2217
2240
  ]
2218
2241
  ]
2219
2242
  ],
@@ -2221,41 +2244,15 @@
2221
2244
  "let",
2222
2245
  [
2223
2246
  [
2224
- "skateNow",
2247
+ "movingUp",
2225
2248
  [
2226
- "and",
2227
- "@inRange",
2249
+ "<",
2228
2250
  [
2229
- "and",
2230
- [
2231
- "<=",
2232
- [
2233
- "math/abs",
2234
- [
2235
- "-",
2236
- "@ny2",
2237
- "@curveY"
2238
- ]
2239
- ],
2240
- "@config.skateSnap"
2241
- ],
2242
- [
2243
- "and",
2244
- [
2245
- "or",
2246
- "@landed",
2247
- "@entity.skating"
2248
- ],
2249
- [
2250
- "or",
2251
- "@entity.body.grounded",
2252
- [
2253
- "not",
2254
- "@movingUp"
2255
- ]
2256
- ]
2257
- ]
2258
- ]
2251
+ "*",
2252
+ "@vy1",
2253
+ "@gdir"
2254
+ ],
2255
+ -0.01
2259
2256
  ]
2260
2257
  ]
2261
2258
  ],
@@ -2263,45 +2260,48 @@
2263
2260
  "let",
2264
2261
  [
2265
2262
  [
2266
- "vx2",
2263
+ "skateNow",
2267
2264
  [
2268
- "if",
2269
- "@skateNow",
2265
+ "and",
2266
+ "@inRange",
2270
2267
  [
2271
- "math/clamp",
2268
+ "and",
2269
+ [
2270
+ "not",
2271
+ "@gapBreak"
2272
+ ],
2272
2273
  [
2273
- "+",
2274
- "@entity.body.vx",
2274
+ "and",
2275
2275
  [
2276
- "*",
2276
+ "<=",
2277
2277
  [
2278
- "/",
2278
+ "math/abs",
2279
2279
  [
2280
- "*",
2281
- "@config.gravity",
2282
- "@slope"
2283
- ],
2284
- [
2285
- "+",
2286
- 1.0,
2287
- [
2288
- "*",
2289
- "@slope",
2290
- "@slope"
2291
- ]
2280
+ "-",
2281
+ "@ny2",
2282
+ "@curveY"
2292
2283
  ]
2293
2284
  ],
2294
- 0.033
2285
+ "@config.skateSnap"
2286
+ ],
2287
+ [
2288
+ "and",
2289
+ [
2290
+ "or",
2291
+ "@landed",
2292
+ "@entity.skating"
2293
+ ],
2294
+ [
2295
+ "or",
2296
+ "@entity.body.grounded",
2297
+ [
2298
+ "not",
2299
+ "@movingUp"
2300
+ ]
2301
+ ]
2295
2302
  ]
2296
- ],
2297
- [
2298
- "-",
2299
- 0.0,
2300
- "@config.maxFallSpeed"
2301
- ],
2302
- "@config.maxFallSpeed"
2303
- ],
2304
- "@entity.body.vx"
2303
+ ]
2304
+ ]
2305
2305
  ]
2306
2306
  ]
2307
2307
  ],
@@ -2309,23 +2309,34 @@
2309
2309
  "let",
2310
2310
  [
2311
2311
  [
2312
- "vx3",
2312
+ "vx2",
2313
2313
  [
2314
2314
  "if",
2315
- [
2316
- "==",
2317
- "@drift",
2318
- null
2319
- ],
2320
- "@vx2",
2315
+ "@skateNow",
2321
2316
  [
2322
2317
  "math/clamp",
2323
2318
  [
2324
2319
  "+",
2325
- "@vx2",
2320
+ "@entity.body.vx",
2326
2321
  [
2327
2322
  "*",
2328
- "@dax",
2323
+ [
2324
+ "/",
2325
+ [
2326
+ "*",
2327
+ "@config.gravity",
2328
+ "@slope"
2329
+ ],
2330
+ [
2331
+ "+",
2332
+ 1.0,
2333
+ [
2334
+ "*",
2335
+ "@slope",
2336
+ "@slope"
2337
+ ]
2338
+ ]
2339
+ ],
2329
2340
  0.033
2330
2341
  ]
2331
2342
  ],
@@ -2335,7 +2346,8 @@
2335
2346
  "@config.maxFallSpeed"
2336
2347
  ],
2337
2348
  "@config.maxFallSpeed"
2338
- ]
2349
+ ],
2350
+ "@entity.body.vx"
2339
2351
  ]
2340
2352
  ]
2341
2353
  ],
@@ -2343,49 +2355,33 @@
2343
2355
  "let",
2344
2356
  [
2345
2357
  [
2346
- "fy",
2358
+ "vx3",
2347
2359
  [
2348
2360
  "if",
2349
- "@skateNow",
2350
- "@curveY",
2351
- "@ny2"
2352
- ]
2353
- ],
2354
- [
2355
- "fvy",
2356
- [
2357
- "if",
2358
- "@skateNow",
2359
2361
  [
2360
- "*",
2362
+ "==",
2363
+ "@drift",
2364
+ null
2365
+ ],
2366
+ "@vx2",
2367
+ [
2368
+ "math/clamp",
2361
2369
  [
2362
- "*",
2370
+ "+",
2363
2371
  "@vx2",
2364
2372
  [
2365
- "math/cos",
2366
- [
2367
- "math/atan",
2368
- "@slope"
2369
- ]
2373
+ "*",
2374
+ "@dax",
2375
+ 0.033
2370
2376
  ]
2371
2377
  ],
2372
2378
  [
2373
- "math/sin",
2374
- [
2375
- "math/atan",
2376
- "@slope"
2377
- ]
2378
- ]
2379
- ],
2380
- "@vy2"
2381
- ]
2382
- ],
2383
- [
2384
- "fgrounded",
2385
- [
2386
- "or",
2387
- "@landed",
2388
- "@skateNow"
2379
+ "-",
2380
+ 0.0,
2381
+ "@config.maxFallSpeed"
2382
+ ],
2383
+ "@config.maxFallSpeed"
2384
+ ]
2389
2385
  ]
2390
2386
  ]
2391
2387
  ],
@@ -2393,36 +2389,49 @@
2393
2389
  "let",
2394
2390
  [
2395
2391
  [
2396
- "hazardHit",
2392
+ "fy",
2393
+ [
2394
+ "if",
2395
+ "@skateNow",
2396
+ "@curveY",
2397
+ "@ny2"
2398
+ ]
2399
+ ],
2400
+ [
2401
+ "fvy",
2397
2402
  [
2398
- "array/find",
2399
- "@config.platforms",
2403
+ "if",
2404
+ "@skateNow",
2400
2405
  [
2401
- "fn",
2402
- "p",
2406
+ "*",
2403
2407
  [
2404
- "and",
2408
+ "*",
2409
+ "@vx2",
2405
2410
  [
2406
- "==",
2411
+ "math/cos",
2407
2412
  [
2408
- "object/get",
2409
- "@p",
2410
- "type"
2411
- ],
2412
- "hazard"
2413
- ],
2413
+ "math/atan",
2414
+ "@slope"
2415
+ ]
2416
+ ]
2417
+ ],
2418
+ [
2419
+ "math/sin",
2414
2420
  [
2415
- "geo/aabb-overlap",
2416
- "@rect",
2417
- {
2418
- "h": "@p.height",
2419
- "w": "@p.width",
2420
- "x": "@p.x",
2421
- "y": "@p.y"
2422
- }
2421
+ "math/atan",
2422
+ "@slope"
2423
2423
  ]
2424
2424
  ]
2425
- ]
2425
+ ],
2426
+ "@vy2"
2427
+ ]
2428
+ ],
2429
+ [
2430
+ "fgrounded",
2431
+ [
2432
+ "or",
2433
+ "@landed",
2434
+ "@skateNow"
2426
2435
  ]
2427
2436
  ]
2428
2437
  ],
@@ -2430,7 +2439,7 @@
2430
2439
  "let",
2431
2440
  [
2432
2441
  [
2433
- "goalHit",
2442
+ "hazardHit",
2434
2443
  [
2435
2444
  "array/find",
2436
2445
  "@config.platforms",
@@ -2446,7 +2455,7 @@
2446
2455
  "@p",
2447
2456
  "type"
2448
2457
  ],
2449
- "goal"
2458
+ "hazard"
2450
2459
  ],
2451
2460
  [
2452
2461
  "geo/aabb-overlap",
@@ -2467,162 +2476,187 @@
2467
2476
  "let",
2468
2477
  [
2469
2478
  [
2470
- "fellNow",
2479
+ "goalHit",
2471
2480
  [
2472
- "if",
2473
- [
2474
- ">",
2475
- "@gdir",
2476
- 0.0
2477
- ],
2481
+ "array/find",
2482
+ "@config.platforms",
2478
2483
  [
2479
- ">",
2480
- "@fy",
2481
- "@config.killY"
2482
- ],
2483
- [
2484
- "<",
2485
- "@fy",
2486
- "@config.killY"
2484
+ "fn",
2485
+ "p",
2486
+ [
2487
+ "and",
2488
+ [
2489
+ "==",
2490
+ [
2491
+ "object/get",
2492
+ "@p",
2493
+ "type"
2494
+ ],
2495
+ "goal"
2496
+ ],
2497
+ [
2498
+ "geo/aabb-overlap",
2499
+ "@rect",
2500
+ {
2501
+ "h": "@p.height",
2502
+ "w": "@p.width",
2503
+ "x": "@p.x",
2504
+ "y": "@p.y"
2505
+ }
2506
+ ]
2507
+ ]
2487
2508
  ]
2488
2509
  ]
2489
2510
  ]
2490
2511
  ],
2491
2512
  [
2492
- "do",
2513
+ "let",
2493
2514
  [
2494
- "set",
2495
- "@entity.body",
2496
2515
  [
2497
- "object/merge",
2498
- "@entity.body",
2499
- {
2500
- "grounded": "@fgrounded",
2501
- "vx": [
2502
- "if",
2503
- [
2504
- "or",
2505
- [
2506
- "==",
2507
- "@nx",
2508
- "@config.xMin"
2509
- ],
2510
- [
2511
- "==",
2512
- "@nx",
2513
- "@config.xMax"
2514
- ]
2515
- ],
2516
- 0.0,
2517
- "@vx3"
2516
+ "fellNow",
2517
+ [
2518
+ "if",
2519
+ [
2520
+ ">",
2521
+ "@gdir",
2522
+ 0.0
2518
2523
  ],
2519
- "vy": "@fvy",
2520
- "x": "@nx",
2521
- "y": "@fy"
2522
- }
2524
+ [
2525
+ ">",
2526
+ "@fy",
2527
+ "@config.killY"
2528
+ ],
2529
+ [
2530
+ "<",
2531
+ "@fy",
2532
+ "@config.killY"
2533
+ ]
2534
+ ]
2523
2535
  ]
2524
2536
  ],
2525
2537
  [
2526
- "set",
2527
- "@entity.skating",
2528
- "@skateNow"
2529
- ],
2530
- [
2531
- "if",
2538
+ "do",
2532
2539
  [
2533
- "and",
2534
- "@skateNow",
2540
+ "set",
2541
+ "@entity.body",
2535
2542
  [
2536
- "==",
2537
- "@entity.skating",
2538
- false
2543
+ "object/merge",
2544
+ "@entity.body",
2545
+ {
2546
+ "grounded": "@fgrounded",
2547
+ "vx": [
2548
+ "if",
2549
+ [
2550
+ "or",
2551
+ [
2552
+ "==",
2553
+ "@nx",
2554
+ "@config.xMin"
2555
+ ],
2556
+ [
2557
+ "==",
2558
+ "@nx",
2559
+ "@config.xMax"
2560
+ ]
2561
+ ],
2562
+ 0.0,
2563
+ "@vx3"
2564
+ ],
2565
+ "vy": "@fvy",
2566
+ "x": "@nx",
2567
+ "y": "@fy"
2568
+ }
2539
2569
  ]
2540
2570
  ],
2541
2571
  [
2542
- "emit",
2543
- "BODY_SKATE_START",
2544
- {
2545
- "slope": "@slope",
2546
- "x": "@nx",
2547
- "y": "@fy"
2548
- }
2572
+ "set",
2573
+ "@entity.skating",
2574
+ "@skateNow"
2549
2575
  ],
2550
- null
2551
- ],
2552
- [
2553
- "if",
2554
2576
  [
2555
- "and",
2577
+ "if",
2556
2578
  [
2557
- "==",
2579
+ "and",
2558
2580
  "@skateNow",
2559
- false
2581
+ [
2582
+ "==",
2583
+ "@entity.skating",
2584
+ false
2585
+ ]
2560
2586
  ],
2561
2587
  [
2562
- "==",
2563
- "@entity.skating",
2564
- true
2565
- ]
2588
+ "emit",
2589
+ "BODY_SKATE_START",
2590
+ {
2591
+ "slope": "@slope",
2592
+ "x": "@nx",
2593
+ "y": "@fy"
2594
+ }
2595
+ ],
2596
+ null
2566
2597
  ],
2567
2598
  [
2568
- "emit",
2569
- "BODY_SKATE_END",
2570
- {
2571
- "x": "@nx",
2572
- "y": "@fy"
2573
- }
2574
- ],
2575
- null
2576
- ],
2577
- [
2578
- "if",
2579
- [
2580
- "and",
2581
- "@landed",
2599
+ "if",
2582
2600
  [
2583
- "==",
2584
- "@entity.body.grounded",
2585
- false
2586
- ]
2587
- ],
2588
- [
2589
- "emit",
2590
- "BODY_LANDED",
2591
- {
2592
- "impact": [
2593
- "*",
2594
- "@vy1",
2595
- "@gdir"
2601
+ "and",
2602
+ [
2603
+ "==",
2604
+ "@skateNow",
2605
+ false
2596
2606
  ],
2597
- "x": "@nx",
2598
- "y": "@fy"
2599
- }
2607
+ [
2608
+ "==",
2609
+ "@entity.skating",
2610
+ true
2611
+ ]
2612
+ ],
2613
+ [
2614
+ "emit",
2615
+ "BODY_SKATE_END",
2616
+ {
2617
+ "x": "@nx",
2618
+ "y": "@fy"
2619
+ }
2620
+ ],
2621
+ null
2600
2622
  ],
2601
- null
2602
- ],
2603
- [
2604
- "if",
2605
2623
  [
2606
- "!=",
2607
- "@hazardHit",
2624
+ "if",
2625
+ [
2626
+ "and",
2627
+ "@landed",
2628
+ [
2629
+ "==",
2630
+ "@entity.body.grounded",
2631
+ false
2632
+ ]
2633
+ ],
2634
+ [
2635
+ "emit",
2636
+ "BODY_LANDED",
2637
+ {
2638
+ "impact": [
2639
+ "*",
2640
+ "@vy1",
2641
+ "@gdir"
2642
+ ],
2643
+ "x": "@nx",
2644
+ "y": "@fy"
2645
+ }
2646
+ ],
2608
2647
  null
2609
2648
  ],
2610
2649
  [
2611
2650
  "if",
2612
2651
  [
2613
2652
  "!=",
2614
- "@entity.hazardId",
2615
- [
2616
- "object/get",
2617
- "@hazardHit",
2618
- "id",
2619
- ""
2620
- ]
2653
+ "@hazardHit",
2654
+ null
2621
2655
  ],
2622
2656
  [
2623
- "do",
2657
+ "if",
2624
2658
  [
2625
- "set",
2659
+ "!=",
2626
2660
  "@entity.hazardId",
2627
2661
  [
2628
2662
  "object/get",
@@ -2632,51 +2666,51 @@
2632
2666
  ]
2633
2667
  ],
2634
2668
  [
2635
- "emit",
2636
- "BODY_HAZARD",
2637
- {
2638
- "id": [
2669
+ "do",
2670
+ [
2671
+ "set",
2672
+ "@entity.hazardId",
2673
+ [
2639
2674
  "object/get",
2640
2675
  "@hazardHit",
2641
2676
  "id",
2642
2677
  ""
2643
- ],
2644
- "x": "@nx",
2645
- "y": "@fy"
2646
- }
2647
- ]
2678
+ ]
2679
+ ],
2680
+ [
2681
+ "emit",
2682
+ "BODY_HAZARD",
2683
+ {
2684
+ "id": [
2685
+ "object/get",
2686
+ "@hazardHit",
2687
+ "id",
2688
+ ""
2689
+ ],
2690
+ "x": "@nx",
2691
+ "y": "@fy"
2692
+ }
2693
+ ]
2694
+ ],
2695
+ null
2648
2696
  ],
2649
- null
2650
- ],
2651
- [
2652
- "set",
2653
- "@entity.hazardId",
2654
- ""
2655
- ]
2656
- ],
2657
- [
2658
- "if",
2659
- [
2660
- "!=",
2661
- "@goalHit",
2662
- null
2697
+ [
2698
+ "set",
2699
+ "@entity.hazardId",
2700
+ ""
2701
+ ]
2663
2702
  ],
2664
2703
  [
2665
2704
  "if",
2666
2705
  [
2667
2706
  "!=",
2668
- "@entity.goalId",
2669
- [
2670
- "object/get",
2671
- "@goalHit",
2672
- "id",
2673
- ""
2674
- ]
2707
+ "@goalHit",
2708
+ null
2675
2709
  ],
2676
2710
  [
2677
- "do",
2711
+ "if",
2678
2712
  [
2679
- "set",
2713
+ "!=",
2680
2714
  "@entity.goalId",
2681
2715
  [
2682
2716
  "object/get",
@@ -2686,73 +2720,86 @@
2686
2720
  ]
2687
2721
  ],
2688
2722
  [
2689
- "emit",
2690
- "BODY_GOAL",
2691
- {
2692
- "id": [
2723
+ "do",
2724
+ [
2725
+ "set",
2726
+ "@entity.goalId",
2727
+ [
2693
2728
  "object/get",
2694
2729
  "@goalHit",
2695
2730
  "id",
2696
2731
  ""
2697
- ],
2698
- "x": "@nx",
2699
- "y": "@fy"
2700
- }
2701
- ]
2732
+ ]
2733
+ ],
2734
+ [
2735
+ "emit",
2736
+ "BODY_GOAL",
2737
+ {
2738
+ "id": [
2739
+ "object/get",
2740
+ "@goalHit",
2741
+ "id",
2742
+ ""
2743
+ ],
2744
+ "x": "@nx",
2745
+ "y": "@fy"
2746
+ }
2747
+ ]
2748
+ ],
2749
+ null
2702
2750
  ],
2703
- null
2704
- ],
2705
- [
2706
- "set",
2707
- "@entity.goalId",
2708
- ""
2709
- ]
2710
- ],
2711
- [
2712
- "if",
2713
- [
2714
- "and",
2715
- "@fellNow",
2716
2751
  [
2717
- "==",
2718
- "@entity.fell",
2719
- false
2752
+ "set",
2753
+ "@entity.goalId",
2754
+ ""
2720
2755
  ]
2721
2756
  ],
2722
2757
  [
2723
- "do",
2758
+ "if",
2724
2759
  [
2725
- "set",
2726
- "@entity.fell",
2727
- true
2760
+ "and",
2761
+ "@fellNow",
2762
+ [
2763
+ "==",
2764
+ "@entity.fell",
2765
+ false
2766
+ ]
2728
2767
  ],
2729
2768
  [
2730
- "emit",
2731
- "BODY_FELL",
2732
- {
2733
- "x": "@nx",
2734
- "y": "@fy"
2735
- }
2736
- ]
2737
- ],
2738
- null
2739
- ],
2740
- [
2741
- "emit",
2742
- "BODY_MOVED",
2743
- {
2744
- "grounded": "@fgrounded",
2745
- "skating": "@skateNow",
2746
- "speed": [
2747
- "math/hypot",
2748
- "@entity.body.vx",
2749
- "@fvy"
2769
+ "do",
2770
+ [
2771
+ "set",
2772
+ "@entity.fell",
2773
+ true
2774
+ ],
2775
+ [
2776
+ "emit",
2777
+ "BODY_FELL",
2778
+ {
2779
+ "x": "@nx",
2780
+ "y": "@fy"
2781
+ }
2782
+ ]
2750
2783
  ],
2751
- "vx": "@entity.body.vx",
2752
- "vy": "@fvy",
2753
- "x": "@nx",
2754
- "y": "@fy"
2755
- }
2784
+ null
2785
+ ],
2786
+ [
2787
+ "emit",
2788
+ "BODY_MOVED",
2789
+ {
2790
+ "grounded": "@fgrounded",
2791
+ "skating": "@skateNow",
2792
+ "speed": [
2793
+ "math/hypot",
2794
+ "@entity.body.vx",
2795
+ "@fvy"
2796
+ ],
2797
+ "vx": "@entity.body.vx",
2798
+ "vy": "@fvy",
2799
+ "x": "@nx",
2800
+ "y": "@fy"
2801
+ }
2802
+ ]
2756
2803
  ]
2757
2804
  ]
2758
2805
  ]