Allow script arrays to hold any value type, add script engine tests, archive old rpg code

Remove the per-array type category so arrays can mix types like structs.
Add 13 passing and 125 expected-failure duskscript test fixtures with a
table-driven runner. Also includes the in-progress entity/physics and
archive moves from the working tree.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This commit is contained in:
YourWishesandClaude Sonnet 5.5 committed 2026-10-14 23:25:26 -05:00
1 parent 5c259e46e2
commit f6b884bf7f
710 files changed
+6172 -27594

No files matched your search

+69
View File
@@ -0,0 +1,69 @@
// tostr
assert(tostr(5) == "5");
assert(tostr(-5) == "-5");
assert(tostr(0) == "0");
assert(tostr(1.5) == "1.5");
assert(tostr(0.25) == "0.25");
assert(tostr(100) == "100");
assert(tostr(true) == "true");
assert(tostr(false) == "false");
assert(tostr(null) == "null");
assert(tostr(undefined) == "undefined");
assert(tostr("same") == "same");
assert(tostr([1, "a", true]) == "[1, \"a\", true]");
assert(tostr([]) == "[]");
assert(tostr({}) == "{}");
assert(tostr({a: 1}) == "{\"a\": 1}");
assert(tostr({a: 1, b: "x"}) == "{\"a\": 1, \"b\": \"x\"}");
assert(tostr([[1], [2, 3]]) == "[[1], [2, 3]]");
assert(tostr([1, null, [true]]) == "[1, null, [true]]");
// tostr with decimals
assert(tostr(3.14159, 2) == "3.14");
assert(tostr(3, 2) == "3.00");
assert(tostr(2.5, 0) == "2" || tostr(2.5, 0) == "3");
assert(tostr(1.5, 1) == "1.5");
assert(tostr(0, 3) == "0.000");
assert(tostr(-1.25, 2) == "-1.25");
// tobase
assert(tobase(255, 16) == "FF");
assert(tobase(255, 2) == "11111111");
assert(tobase(8, 8) == "10");
assert(tobase(0, 2) == "0");
assert(tobase(-5, 2) == "-101");
assert(tobase(35, 36) == "Z");
assert(tobase(true, 2) == "1");
assert(tobase(false, 2) == "0");
assert(tobase(10, 10) == "10");
// tonum
assert(tonum("42") == 42);
assert(tonum("-42") == -42);
assert(tonum("3.5") == 3.5);
assert(tonum("-0.5") == -0.5);
assert(tonum("0") == 0);
assert(tonum("007") == 7);
assert(tonum(5) == 5);
assert(tonum("ff", 16) == 255);
assert(tonum("FF", 16) == 255);
assert(tonum("0xff", 16) == 255);
assert(tonum("101", 2) == 5);
assert(tonum("0b101", 2) == 5);
assert(tonum("z", 36) == 35);
assert(tonum("-10", 10) == -10);
assert(tonum(tostr(1234)) == 1234);
assert(tonum(tobase(77, 2), 2) == 77);
// tobool
assert(tobool(true) == true);
assert(tobool(false) == false);
assert(tobool(1) == true);
assert(tobool(0) == false);
assert(tobool(-3) == true);
assert(tobool("true") == true);
assert(tobool("false") == false);
// Round trips
assert(tonum(tostr(12.5)) == 12.5);
assert(tobool(tostr(true)) == true);