broad 0.5.5 update
parent
8bb70f04dd
commit
4c4aea4663
4
ARES/a
4
ARES/a
|
|
@ -3,7 +3,7 @@
|
||||||
*
|
*
|
||||||
* Nanite Systems Advanced Research Encapsulation System
|
* Nanite Systems Advanced Research Encapsulation System
|
||||||
*
|
*
|
||||||
* Copyright (c) 2022–2023 Nanite Systems Corporation
|
* Copyright (c) 2022–2025 Nanite Systems Corporation
|
||||||
*
|
*
|
||||||
* =========================================================================
|
* =========================================================================
|
||||||
*
|
*
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
#define ARES
|
#define ARES
|
||||||
|
|
||||||
// version that OS components will report:
|
// version that OS components will report:
|
||||||
#define ARES_VERSION "0.5.3"
|
#define ARES_VERSION "0.5.5"
|
||||||
#define ARES_VERSION_TAGS "beta 3"
|
#define ARES_VERSION_TAGS "beta 3"
|
||||||
|
|
||||||
// copyright year for the OS:
|
// copyright year for the OS:
|
||||||
|
|
|
||||||
|
|
@ -46,13 +46,13 @@
|
||||||
#define http_get(_url, _outs, _user) notify_program("proc fetch " + _url, _outs, NULL_KEY, _user)
|
#define http_get(_url, _outs, _user) notify_program("proc fetch " + _url, _outs, NULL_KEY, _user)
|
||||||
|
|
||||||
// http_get but with headers (use llHTTPRequest() format):
|
// http_get but with headers (use llHTTPRequest() format):
|
||||||
#define http_get_extended(_url, _outs, _user, ...) notify_program("proc fetch " + _url + " " + jsarray((list)(__VA_ARGS__)), _outs, NULL_KEY, _user)
|
#define http_get_extended(_url, _outs, _user, ...) notify_program("proc fetch " + _url + " " + jsarray(__VA_ARGS__), _outs, NULL_KEY, _user)
|
||||||
|
|
||||||
// http_post(): POSTs the input stream to a web address - use pipe_write() with a generated key to populate the input stream
|
// http_post(): POSTs the input stream to a web address - use pipe_write() with a generated key to populate the input stream
|
||||||
#define http_post(_url, _outs, _ins, _user) notify_program("proc fetch " + _url, _outs, _ins, _user)
|
#define http_post(_url, _outs, _ins, _user) notify_program("proc fetch " + _url, _outs, _ins, _user)
|
||||||
|
|
||||||
// http_post() but with headers (use llHTTPRequest() format):
|
// http_post() but with headers (use llHTTPRequest() format):
|
||||||
#define http_post_extended(_url, _outs, _ins, _user, ...) notify_program("proc fetch " + _url + " " + jsarray((list)(__VA_ARGS__)), _outs, _ins, _user)
|
#define http_post_extended(_url, _outs, _ins, _user, ...) notify_program("proc fetch " + _url + " " + jsarray(__VA_ARGS__), _outs, _ins, _user)
|
||||||
|
|
||||||
// request_uuid(): returns agent key
|
// request_uuid(): returns agent key
|
||||||
#define request_uuid(_agent, _outs, _user) notify_program("proc uuid " + _agent, _outs, NULL_KEY, _user)
|
#define request_uuid(_agent, _outs, _user) notify_program("proc uuid " + _agent, _outs, NULL_KEY, _user)
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ string tasks_queue = "{}";
|
||||||
// [DEPRECATED] send a receipt for a completed task, without shutting down:
|
// [DEPRECATED] send a receipt for a completed task, without shutting down:
|
||||||
#define resolve(_R) if(_R) system(SIGNAL_DONE, ares_encode(_R) + NULL_KEY + " " + PROGRAM_NAME)
|
#define resolve(_R) if(_R) system(SIGNAL_DONE, ares_encode(_R) + NULL_KEY + " " + PROGRAM_NAME)
|
||||||
|
|
||||||
// [DEPRECATED] send a receipt for a completed task (with callback), without shutting down - deprecated:
|
// send a receipt for a completed task (with callback), without shutting down - suitable for modern NV jobs:
|
||||||
#define resolvec(_R, _ins) if(_R) system(SIGNAL_DONE, ares_encode(_R) + (string)(_ins) + " " + PROGRAM_NAME)
|
#define resolvec(_R, _ins) if(_R) system(SIGNAL_DONE, ares_encode(_R) + (string)(_ins) + " " + PROGRAM_NAME)
|
||||||
|
|
||||||
// [QUESTIONABLE] send a receipt for a completed task, including callback, and close streams (if they are volatile invoke pipes):
|
// [QUESTIONABLE] send a receipt for a completed task, including callback, and close streams (if they are volatile invoke pipes):
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ARES/a>
|
#include <ARES/a>
|
||||||
#define CLIENT_VERSION "1.1.1"
|
#define CLIENT_VERSION "1.1.2"
|
||||||
#define CLIENT_VERSION_TAGS "release"
|
#define CLIENT_VERSION_TAGS "release"
|
||||||
|
|
||||||
string DEFAULT_DOMAIN = "en.wikipedia.org";
|
string DEFAULT_DOMAIN = "en.wikipedia.org";
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ARES/a>
|
#include <ARES/a>
|
||||||
#define CLIENT_VERSION "0.2.1"
|
#define CLIENT_VERSION "0.2.2"
|
||||||
#define CLIENT_VERSION_TAGS "alpha"
|
#define CLIENT_VERSION_TAGS "alpha"
|
||||||
|
|
||||||
main(integer src, integer n, string m, key outs, key ins, key user) {
|
main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
|
|
||||||
#include <ARES/a>
|
#include <ARES/a>
|
||||||
#include <lslisp.lsl>
|
#include <lslisp.lsl>
|
||||||
#define CLIENT_VERSION "0.2.5"
|
#define CLIENT_VERSION "0.2.6"
|
||||||
#define CLIENT_VERSION_TAGS "lang " + INTERPRETER_VERSION
|
#define CLIENT_VERSION_TAGS "lang " + INTERPRETER_VERSION
|
||||||
|
|
||||||
integer file_offset;
|
integer file_offset;
|
||||||
|
|
|
||||||
|
|
@ -817,7 +817,7 @@ integer UThread;
|
||||||
key IsRestoring;
|
key IsRestoring;
|
||||||
key Library;
|
key Library;
|
||||||
key IsSaveDue;
|
key IsSaveDue;
|
||||||
integer G;
|
integer G = 2;
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
|
|
@ -828,12 +828,20 @@ default
|
||||||
K = llGetLinkKey(3);
|
K = llGetLinkKey(3);
|
||||||
LslUserScript = llGetScriptName();
|
LslUserScript = llGetScriptName();
|
||||||
edefaultrez = llListen(2046820352, "", E, "");
|
edefaultrez = llListen(2046820352, "", E, "");
|
||||||
llMessageLinked(1, 3840, LslUserScript + "\n" + "0.2.5" + " " + "lang " + "0.2.3", "");
|
llMessageLinked(1, 3840, LslUserScript + "\n" + "0.2.6" + " " + "lang " + "0.2.3", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer llJsonValueType)
|
on_rez(integer llJsonValueType)
|
||||||
{
|
{
|
||||||
llResetScript();
|
E = llGetLinkKey(1);
|
||||||
|
gC = llGetLinkKey(2);
|
||||||
|
K = llGetLinkKey(3);
|
||||||
|
LslUserScript = llGetScriptName();
|
||||||
|
llListenRemove(edefaultrez);
|
||||||
|
edefaultrez = llListen(2046820352, "", E, "");
|
||||||
|
g_ = 0;
|
||||||
|
H = "";
|
||||||
|
llMessageLinked(1, 3840, LslUserScript + "\n" + "0.5.4" + " " + "beta 3", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer llListen, string llFrand, key llGetListEntryType, string llJsonValueType)
|
listen(integer llListen, string llFrand, key llGetListEntryType, string llJsonValueType)
|
||||||
|
|
@ -857,22 +865,8 @@ default
|
||||||
}
|
}
|
||||||
if (UThread & -(llJsonGetValue(System, (list)((string)IsRestoring)) == ""))
|
if (UThread & -(llJsonGetValue(System, (list)((string)IsRestoring)) == ""))
|
||||||
llRegionSayTo(gC, 2046828547, "%3" + H + "V" + llList2Json("", (list)IsRestoring));
|
llRegionSayTo(gC, 2046828547, "%3" + H + "V" + llList2Json("", (list)IsRestoring));
|
||||||
if (llList2ListStrided(llJson2List(System), 0, ((integer)-1), 2) == [])
|
if (UThread)
|
||||||
{
|
llMessageLinked(1, 4, llChar(33 + ((UThread & 4032) >> 6)) + llChar(33 + (UThread & 63)) + (string)IsRestoring + " " + LslUserScript, "");
|
||||||
{
|
|
||||||
if (UThread)
|
|
||||||
llMessageLinked(1, 4, llChar(33 + ((UThread & 4032) >> 6)) + llChar(33 + (UThread & 63)) + (string)IsRestoring + " " + LslUserScript, "");
|
|
||||||
llMessageLinked(1, 3849, LslUserScript, "");
|
|
||||||
G = G & ((integer)-2);
|
|
||||||
llSetScriptState(LslUserScript, 0);
|
|
||||||
llSleep(0.022);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (UThread)
|
|
||||||
llMessageLinked(1, 4, llChar(33 + ((UThread & 4032) >> 6)) + llChar(33 + (UThread & 63)) + (string)IsRestoring + " " + LslUserScript, "");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Nanite Systems Advanced Research Encapsulation System
|
* Nanite Systems Advanced Research Encapsulation System
|
||||||
*
|
*
|
||||||
* Copyright (c) 2022–2024 Nanite Systems Corporation
|
* Copyright (c) 2022–2025 Nanite Systems Corporation
|
||||||
*
|
*
|
||||||
* =========================================================================
|
* =========================================================================
|
||||||
*
|
*
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ARES/a>
|
#include <ARES/a>
|
||||||
#include <ARES/api/interface.consts.h.lsl>
|
#include <ARES/api/interface.consts.h.lsl>
|
||||||
|
|
||||||
#define CLIENT_VERSION "1.0.1"
|
#define CLIENT_VERSION "1.0.2"
|
||||||
#define CLIENT_VERSION_TAGS "release"
|
#define CLIENT_VERSION_TAGS "release"
|
||||||
|
|
||||||
string fg_image = "947c7a17-4e88-2f96-b419-dc37b647127d";
|
string fg_image = "947c7a17-4e88-2f96-b419-dc37b647127d";
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Nanite Systems Advanced Research Encapsulation System
|
* Nanite Systems Advanced Research Encapsulation System
|
||||||
*
|
*
|
||||||
* Copyright (c) 2022–2024 Nanite Systems Corporation
|
* Copyright (c) 2022–2025 Nanite Systems Corporation
|
||||||
*
|
*
|
||||||
* =========================================================================
|
* =========================================================================
|
||||||
*
|
*
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ARES/a>
|
#include <ARES/a>
|
||||||
#define CLIENT_VERSION "0.2.2"
|
#define CLIENT_VERSION "0.2.3"
|
||||||
#define CLIENT_VERSION_TAGS "alpha"
|
#define CLIENT_VERSION_TAGS "alpha"
|
||||||
|
|
||||||
list feeds;
|
list feeds;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Nanite Systems Advanced Research Encapsulation System
|
* Nanite Systems Advanced Research Encapsulation System
|
||||||
*
|
*
|
||||||
* Copyright (c) 2022–2024 Nanite Systems Corporation
|
* Copyright (c) 2022–2025 Nanite Systems Corporation
|
||||||
*
|
*
|
||||||
* =========================================================================
|
* =========================================================================
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Nanite Systems Advanced Research Encapsulation System
|
* Nanite Systems Advanced Research Encapsulation System
|
||||||
*
|
*
|
||||||
* Copyright (c) 2022–2024 Nanite Systems Corporation
|
* Copyright (c) 2022–2025 Nanite Systems Corporation
|
||||||
*
|
*
|
||||||
* =========================================================================
|
* =========================================================================
|
||||||
*
|
*
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ARES/a>
|
#include <ARES/a>
|
||||||
#include <ARES/api/interface.consts.h.lsl>
|
#include <ARES/api/interface.consts.h.lsl>
|
||||||
|
|
||||||
#define CLIENT_VERSION "1.0.1"
|
#define CLIENT_VERSION "1.0.2"
|
||||||
#define CLIENT_VERSION_TAGS "release"
|
#define CLIENT_VERSION_TAGS "release"
|
||||||
|
|
||||||
#define call_interface(_outs, _user, _msg) \
|
#define call_interface(_outs, _user, _msg) \
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Nanite Systems Advanced Research Encapsulation System
|
* Nanite Systems Advanced Research Encapsulation System
|
||||||
*
|
*
|
||||||
* Copyright (c) 2022–2024 Nanite Systems Corporation
|
* Copyright (c) 2022–2025 Nanite Systems Corporation
|
||||||
*
|
*
|
||||||
* =========================================================================
|
* =========================================================================
|
||||||
*
|
*
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ARES/a>
|
#include <ARES/a>
|
||||||
#define CLIENT_VERSION "0.2.1"
|
#define CLIENT_VERSION "0.2.2"
|
||||||
#define CLIENT_VERSION_TAGS "alpha"
|
#define CLIENT_VERSION_TAGS "alpha"
|
||||||
|
|
||||||
string DEFAULT_DOMAIN = "eutils.ncbi.nlm.nih.gov";
|
string DEFAULT_DOMAIN = "eutils.ncbi.nlm.nih.gov";
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,12 @@
|
||||||
|
|
||||||
// most of the above are untested; feel free to experiment and file bug reports or submit fixes
|
// most of the above are untested; feel free to experiment and file bug reports or submit fixes
|
||||||
|
|
||||||
|
// #define GAUGE_TEX_SCALE 1
|
||||||
|
// resize the gauge texture (added for Federator)
|
||||||
|
|
||||||
|
// #define GAUGE_TEX_ROT 0
|
||||||
|
// rotate the gauge texture (added for Federator)
|
||||||
|
|
||||||
// #define FAN_AXIS
|
// #define FAN_AXIS
|
||||||
// set the direction that the fan prim should spin around (default: <0, 0, 1>) - can also be calculated during extra_startup() by setting fan_axis variable
|
// set the direction that the fan prim should spin around (default: <0, 0, 1>) - can also be calculated during extra_startup() by setting fan_axis variable
|
||||||
// #define MAX_FAN_SPEED
|
// #define MAX_FAN_SPEED
|
||||||
|
|
@ -304,6 +310,12 @@ vector fan_axis;
|
||||||
#ifndef METER_TEX
|
#ifndef METER_TEX
|
||||||
#define METER_TEX "e8d9ff28-cd08-f792-cdc6-95533ee8d360"
|
#define METER_TEX "e8d9ff28-cd08-f792-cdc6-95533ee8d360"
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef GAUGE_TEX_SCALE
|
||||||
|
#define GAUGE_TEX_SCALE 1.0
|
||||||
|
#endif
|
||||||
|
#ifndef GAUGE_TEX_ROT
|
||||||
|
#define GAUGE_TEX_ROT 0
|
||||||
|
#endif
|
||||||
#ifndef IMPACT_SOUNDS
|
#ifndef IMPACT_SOUNDS
|
||||||
#define IMPACT_SOUNDS ["f5fd6f18-ef7d-85e3-4d5c-e56bd8e0e16a", "1b534a6e-e89b-3e11-ec5a-2da94f845b89", "b687ed67-61fc-bf07-8382-b07aba752df6"]
|
#define IMPACT_SOUNDS ["f5fd6f18-ef7d-85e3-4d5c-e56bd8e0e16a", "1b534a6e-e89b-3e11-ec5a-2da94f845b89", "b687ed67-61fc-bf07-8382-b07aba752df6"]
|
||||||
#define IMPACT_SOUND_COUNT 3
|
#define IMPACT_SOUND_COUNT 3
|
||||||
|
|
@ -445,7 +457,7 @@ lights() {
|
||||||
|
|
||||||
actions += [
|
actions += [
|
||||||
PRIM_LINK_TARGET, POWER_GAUGE,
|
PRIM_LINK_TARGET, POWER_GAUGE,
|
||||||
PRIM_TEXTURE, ALL_SIDES, METER_TEX, <0.25, 1.0, 0>, <power * -0.25 + 0.125, 0.125, 0>, 0,
|
PRIM_TEXTURE, ALL_SIDES, METER_TEX, <0.25, 1.0, 0> / GAUGE_TEX_SCALE, <power * -0.25 + 0.125, 0.125, 0>, GAUGE_TEX_ROT,
|
||||||
PRIM_COLOR, ALL_SIDES, pc * power_factor, 1
|
PRIM_COLOR, ALL_SIDES, pc * power_factor, 1
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
@ -466,7 +478,7 @@ lights() {
|
||||||
}
|
}
|
||||||
actions += [
|
actions += [
|
||||||
PRIM_LINK_TARGET, RATE_GAUGE,
|
PRIM_LINK_TARGET, RATE_GAUGE,
|
||||||
PRIM_TEXTURE, ALL_SIDES, METER_TEX, <0.25, 1.0, 0>, <p_rate * -0.25 + 0.125, 0.375, 0>, 0,
|
PRIM_TEXTURE, ALL_SIDES, METER_TEX, <0.25, 1.0, 0> / GAUGE_TEX_SCALE, <p_rate * -0.25 + 0.125, 0.375, 0>, GAUGE_TEX_ROT,
|
||||||
PRIM_COLOR, ALL_SIDES, rc * power_factor, 1
|
PRIM_COLOR, ALL_SIDES, rc * power_factor, 1
|
||||||
];
|
];
|
||||||
// echo("Rate now: " + (string)rate);
|
// echo("Rate now: " + (string)rate);
|
||||||
|
|
@ -901,7 +913,9 @@ default {
|
||||||
tell(system, c, "color-q");
|
tell(system, c, "color-q");
|
||||||
llSleep(0.1);
|
llSleep(0.1);
|
||||||
tell(system, c, "conf-get id.callsign");
|
tell(system, c, "conf-get id.callsign");
|
||||||
|
llSleep(0.2);
|
||||||
tell(system, c, "conf-get interface.sound");
|
tell(system, c, "conf-get interface.sound");
|
||||||
|
llSleep(0.2);
|
||||||
tell(system, c, "conf-get hardware.controller");
|
tell(system, c, "conf-get hardware.controller");
|
||||||
#ifndef OVERRIDE_TOUCH
|
#ifndef OVERRIDE_TOUCH
|
||||||
#if SCREEN_TYPE != SCREEN_NONE && SCREEN_TYPE != SCREEN_DAYBREAK
|
#if SCREEN_TYPE != SCREEN_NONE && SCREEN_TYPE != SCREEN_DAYBREAK
|
||||||
|
|
@ -1225,15 +1239,20 @@ default {
|
||||||
} else if(cmd == "temperature") {
|
} else if(cmd == "temperature") {
|
||||||
temperature = (float)gets(argv, 1);
|
temperature = (float)gets(argv, 1);
|
||||||
} else if(cmd == "conf") {
|
} else if(cmd == "conf") {
|
||||||
string a1 = gets(argv, 1);
|
/*list lines = split(delstring(m, 0, 4), "\n"); // remove 'conf '
|
||||||
string p = concat(delrange(argv, 0, 1), " ");
|
integer i = count(lines);
|
||||||
if(a1 == "hardware.controller") {
|
while(i--) {
|
||||||
soothe = (integer)getjs(p, ["soothe"]);
|
argv = split(gets(lines, i), " ");*/
|
||||||
} else if(a1 == "id.callsign") {
|
string a1 = gets(argv, 1);
|
||||||
llSetObjectName(p + " (controller)");
|
string p = concat(delrange(argv, 0, 1), " ");
|
||||||
} else if(a1 == "interface.sound") {
|
if(a1 == "hardware.controller") {
|
||||||
sounds = p;
|
soothe = (integer)getjs(p, ["soothe"]);
|
||||||
}
|
} else if(a1 == "id.callsign") {
|
||||||
|
llSetObjectName(p + " (controller)");
|
||||||
|
} else if(a1 == "interface.sound") {
|
||||||
|
sounds = p;
|
||||||
|
}
|
||||||
|
// }
|
||||||
#if SCREEN_TYPE != SCREEN_NONE
|
#if SCREEN_TYPE != SCREEN_NONE
|
||||||
} else if(cmd == "menu" && power_on) {
|
} else if(cmd == "menu" && power_on) {
|
||||||
current_menu = m;
|
current_menu = m;
|
||||||
|
|
@ -1509,8 +1528,10 @@ default {
|
||||||
LID_LEFT = pi;
|
LID_LEFT = pi;
|
||||||
else if(pn == "lidr")
|
else if(pn == "lidr")
|
||||||
LID_RIGHT = pi;
|
LID_RIGHT = pi;
|
||||||
/*else
|
|
||||||
echo("part " + (string)pi + ": " + pn);*/
|
#ifdef DEBUG_LINKS
|
||||||
|
echo("found " + pn + " at link address :" + (string)pi);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
integer pc;
|
integer pc;
|
||||||
|
|
|
||||||
34
ARES/program
34
ARES/program
|
|
@ -54,6 +54,20 @@ key _input_s;
|
||||||
key _output_s;
|
key _output_s;
|
||||||
key _user;
|
key _user;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FORCE NON-VOLATILE (0.5.4)
|
||||||
|
*
|
||||||
|
* A new development experiment to ensure all jobs are NV.
|
||||||
|
* Jobs that (for some reason) can't be converted to NV can use #define VOLATILE
|
||||||
|
* to force the old behavior.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VOLATILE
|
||||||
|
#ifndef NON_VOLATILE
|
||||||
|
#define NON_VOLATILE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CURRENT JOB MODE
|
* CURRENT JOB MODE
|
||||||
*
|
*
|
||||||
|
|
@ -258,7 +272,6 @@ default {
|
||||||
main(_resolved = 0, n, remainder, NULL_KEY, NULL_KEY, NULL_KEY);
|
main(_resolved = 0, n, remainder, NULL_KEY, NULL_KEY, NULL_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NON_VOLATILE
|
|
||||||
/*
|
/*
|
||||||
PROBLEM: unlike linked messages, listeners can accumulate requests
|
PROBLEM: unlike linked messages, listeners can accumulate requests
|
||||||
while the program is hibernating, causing it to sleep while there
|
while the program is hibernating, causing it to sleep while there
|
||||||
|
|
@ -271,14 +284,19 @@ default {
|
||||||
if(_resolved && getjs(tasks_queue, [(string)_input_s]) == JSON_INVALID)
|
if(_resolved && getjs(tasks_queue, [(string)_input_s]) == JSON_INVALID)
|
||||||
pipe_close_volatile([_input_s]);
|
pipe_close_volatile([_input_s]);
|
||||||
|
|
||||||
if(!task_count()) {
|
#ifdef NON_VOLATILE
|
||||||
#ifdef DEBUG
|
#ifndef LEGACY_NON_VOLATILE
|
||||||
echo("[" + PROGRAM_NAME + "] finished " + (string)n + ": " + remainder);
|
|
||||||
#endif
|
|
||||||
exitc(_input_s); // also performs resolve(_resolved)
|
|
||||||
} else {
|
|
||||||
resolvec(_resolved, _input_s);
|
resolvec(_resolved, _input_s);
|
||||||
}
|
#endif
|
||||||
|
#else
|
||||||
|
if(!task_count()) {
|
||||||
|
#ifdef DEBUG
|
||||||
|
echo("[" + PROGRAM_NAME + "] finished " + (string)n + ": " + remainder);
|
||||||
|
#endif
|
||||||
|
exitc(_input_s); // also performs resolve(_resolved)
|
||||||
|
} else {
|
||||||
|
resolvec(_resolved, _input_s);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,14 @@ string config_parameter = "(uninitialized)";
|
||||||
vector config_value;
|
vector config_value;
|
||||||
vector config_backup;
|
vector config_backup;
|
||||||
|
|
||||||
|
integer weapon_active;
|
||||||
|
key weapon;
|
||||||
|
float weapon_charge;
|
||||||
|
float weapon_capacity;
|
||||||
|
float weapon_shot_cost;
|
||||||
|
|
||||||
|
string BIGNUM_TEX;
|
||||||
|
|
||||||
position_all(integer only_devices) {
|
position_all(integer only_devices) {
|
||||||
in_mlook = TRUE && (llGetAgentInfo(avatar) & AGENT_MOUSELOOK);
|
in_mlook = TRUE && (llGetAgentInfo(avatar) & AGENT_MOUSELOOK);
|
||||||
if(in_mlook) {
|
if(in_mlook) {
|
||||||
|
|
@ -543,6 +551,90 @@ main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||||
if(!heat_alarm)
|
if(!heat_alarm)
|
||||||
llLinkStopSound(HEAT_GAUGE);
|
llLinkStopSound(HEAT_GAUGE);
|
||||||
}
|
}
|
||||||
|
} else if(n == SIGNAL_NOTIFY) {
|
||||||
|
list argv = splitnulls(m, " ");
|
||||||
|
string action = gets(argv, 1);
|
||||||
|
|
||||||
|
if(action == "weapon") {
|
||||||
|
integer update_display;
|
||||||
|
|
||||||
|
// echo("weapon: " + m);
|
||||||
|
|
||||||
|
weapon = outs;
|
||||||
|
string subaction = gets(argv, 2);
|
||||||
|
if(subaction == "active") {
|
||||||
|
weapon_active = 1;
|
||||||
|
update_display = 1;
|
||||||
|
weapon_shot_cost = (float)gets(argv, 3);
|
||||||
|
weapon_capacity = (float)gets(argv, 4);
|
||||||
|
weapon_charge = (float)gets(argv, 5);
|
||||||
|
} else if(subaction == "inactive") {
|
||||||
|
weapon_active = 0;
|
||||||
|
update_display = 1;
|
||||||
|
} else if(subaction == "info") {
|
||||||
|
float new_weapon_charge = (float)gets(argv, 5);
|
||||||
|
float new_weapon_capacity = (float)gets(argv, 4);
|
||||||
|
float new_weapon_shot_cost = (float)gets(argv, 3);
|
||||||
|
if(new_weapon_charge != weapon_charge
|
||||||
|
|| new_weapon_shot_cost != weapon_shot_cost
|
||||||
|
|| new_weapon_capacity != weapon_capacity) {
|
||||||
|
weapon_capacity = new_weapon_capacity;
|
||||||
|
weapon_shot_cost = new_weapon_shot_cost;
|
||||||
|
weapon_charge = new_weapon_charge;
|
||||||
|
update_display = 1;
|
||||||
|
}
|
||||||
|
} else if(subaction == "fire") {
|
||||||
|
weapon_charge -= weapon_shot_cost;
|
||||||
|
if(weapon_charge < 0)
|
||||||
|
weapon_charge = 0;
|
||||||
|
update_display = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(update_display) {
|
||||||
|
if(weapon != "" && weapon != NULL_KEY && llGetOwnerKey(weapon) != weapon) {
|
||||||
|
if(weapon_shot_cost == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
integer total_ammo = (integer)(weapon_charge / weapon_shot_cost);
|
||||||
|
integer total_ammo_max = (integer)(weapon_capacity / weapon_shot_cost);
|
||||||
|
|
||||||
|
string ammo_string = (string)total_ammo + ":" + (string)total_ammo_max;
|
||||||
|
ammo_string = delstring(";;;;;;;;", 8 - strlen(ammo_string), LAST) + ammo_string;
|
||||||
|
|
||||||
|
#define BIGNUM(_face, _index, _color) PRIM_TEXTURE, _face, BIGNUM_TEX, <0.0625, 1, 0>, <-0.46875 + 0.0625 * (float)(_index), 0, 0>, 0, PRIM_COLOR, _face, _color, 1
|
||||||
|
|
||||||
|
vector ammo_color = color;
|
||||||
|
if(weapon_charge < weapon_shot_cost)
|
||||||
|
ammo_color = color_bad;
|
||||||
|
else if(weapon_charge <= 0.25 * weapon_capacity)
|
||||||
|
ammo_color = color_bad * 0.5 + color * 0.5;
|
||||||
|
|
||||||
|
integer i = 8;
|
||||||
|
while(i--)
|
||||||
|
setp(AMMO, [BIGNUM(i, llOrd(ammo_string, i) - 0x30, ammo_color)]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(in_mlook && weapon_active && (weapon != "" && weapon != NULL_KEY && llGetOwnerKey(weapon) != weapon)) {
|
||||||
|
setp(AMMO, [
|
||||||
|
PRIM_ROTATION, VISIBLE,
|
||||||
|
PRIM_LINK_TARGET, AMMO_LABEL,
|
||||||
|
PRIM_ROTATION, VISIBLE
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
setp(AMMO, [
|
||||||
|
PRIM_ROTATION, INVISIBLE,
|
||||||
|
PRIM_TEXT, "", ZV, 0,
|
||||||
|
PRIM_LINK_TARGET, AMMO_LABEL,
|
||||||
|
PRIM_ROTATION, INVISIBLE
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
echo("? " + m);
|
||||||
|
}
|
||||||
|
|
||||||
} else if(n == SIGNAL_INIT) {
|
} else if(n == SIGNAL_INIT) {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
echo("[" + PROGRAM_NAME + "] init event");
|
echo("[" + PROGRAM_NAME + "] init event");
|
||||||
|
|
@ -561,6 +653,8 @@ main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||||
{
|
{
|
||||||
string s_interface = llLinksetDataRead("interface");
|
string s_interface = llLinksetDataRead("interface");
|
||||||
|
|
||||||
|
BIGNUM_TEX = getjs(s_interface, ["combat", "nums"]);
|
||||||
|
|
||||||
screen_height = (integer)getjs(s_interface, ["height"]);
|
screen_height = (integer)getjs(s_interface, ["height"]);
|
||||||
if(!screen_height) screen_height = 1008;
|
if(!screen_height) screen_height = 1008;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@
|
||||||
|
|
||||||
// it's good enough for real computers:
|
// it's good enough for real computers:
|
||||||
#define NON_VOLATILE
|
#define NON_VOLATILE
|
||||||
|
#define LEGACY_NON_VOLATILE
|
||||||
#define DAEMON_LISTEN
|
#define DAEMON_LISTEN
|
||||||
|
|
||||||
#ifdef TRACE
|
#ifdef TRACE
|
||||||
|
|
@ -358,6 +359,16 @@ integer process_input(key outs, key handle, key user, string cml, integer in_scr
|
||||||
script_trigger_resolve = _resolved;
|
script_trigger_resolve = _resolved;
|
||||||
|
|
||||||
return TRUE; // do not continue_script();
|
return TRUE; // do not continue_script();
|
||||||
|
} else if(prog == "nudge") {
|
||||||
|
string msg;
|
||||||
|
if(!count(script_lines)) {
|
||||||
|
msg = "exec: not in a script";
|
||||||
|
} else {
|
||||||
|
msg = "exec: bypassing line " + gets(script_lines, script_li);
|
||||||
|
llSetTimerEvent(0.1);
|
||||||
|
}
|
||||||
|
print(outs, user, msg);
|
||||||
|
|
||||||
} else if(prog == "exit") {
|
} else if(prog == "exit") {
|
||||||
// not checking in_script; allow manual interruption
|
// not checking in_script; allow manual interruption
|
||||||
if(script_lines != []) {
|
if(script_lines != []) {
|
||||||
|
|
@ -624,7 +635,7 @@ main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||||
if(_mode & MODE_ACCEPT_DONE && ins == script_handle) {
|
if(_mode & MODE_ACCEPT_DONE && ins == script_handle) {
|
||||||
continue_script();
|
continue_script();
|
||||||
} else {
|
} else {
|
||||||
echo("[_exec] script '" + file_name + "' still running; use 'exit' to abort");
|
echo("[_exec] script '" + file_name + "' still running; type '@exit' to abort");
|
||||||
// echo("(got " + (string)ins + " instead of " + (string)script_handle);
|
// echo("(got " + (string)ins + " instead of " + (string)script_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,14 @@ integer initialized = FALSE;
|
||||||
set_radio_policy() {
|
set_radio_policy() {
|
||||||
string policy_radio = getdbl("policy", ["radio"]);
|
string policy_radio = getdbl("policy", ["radio"]);
|
||||||
integer pri = llListFindList(["open", "closed", "receive", "transmit"], [policy_radio]);
|
integer pri = llListFindList(["open", "closed", "receive", "transmit"], [policy_radio]);
|
||||||
|
if(!~pri)
|
||||||
|
pri = 0;
|
||||||
|
|
||||||
|
effector_release("policy_radio");
|
||||||
|
if(pri) {
|
||||||
|
string users = getdbl("security", ["user"]);
|
||||||
|
list user_keys = jskeys(users);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
main(integer src, integer n, string m, key outs, key ins, key user) {
|
main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||||
|
|
@ -412,7 +419,7 @@ main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||||
integer argi = ((count(argv) - 1) >> 1);
|
integer argi = ((count(argv) - 1) >> 1);
|
||||||
while(argi--) {
|
while(argi--) {
|
||||||
topic = gets(argv, (argi << 1) + 1);
|
topic = gets(argv, (argi << 1) + 1);
|
||||||
value = gets(argv, (argi << 1) + 2);
|
string value = gets(argv, (argi << 1) + 2);
|
||||||
|
|
||||||
if(topic == "receive") {
|
if(topic == "receive") {
|
||||||
// obsolete
|
// obsolete
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Nanite Systems Advanced Research Encapsulation System
|
* Nanite Systems Advanced Research Encapsulation System
|
||||||
*
|
*
|
||||||
* Copyright (c) 2022–2024 Nanite Systems Corporation
|
* Copyright (c) 2022–2025 Nanite Systems Corporation
|
||||||
*
|
*
|
||||||
* =========================================================================
|
* =========================================================================
|
||||||
*
|
*
|
||||||
|
|
@ -42,6 +42,7 @@ integer EPS_active = 0;
|
||||||
integer power_on = 1;
|
integer power_on = 1;
|
||||||
integer max_state;
|
integer max_state;
|
||||||
integer power_state;
|
integer power_state;
|
||||||
|
integer forbidden_state;
|
||||||
string power_systems;
|
string power_systems;
|
||||||
string power_system_names = "{}";
|
string power_system_names = "{}";
|
||||||
float power_draw = 0;
|
float power_draw = 0;
|
||||||
|
|
@ -62,25 +63,44 @@ apply_state(integer update, integer report_state) {
|
||||||
list enabled_systems;
|
list enabled_systems;
|
||||||
list masked_systems;
|
list masked_systems;
|
||||||
list disabled_systems;
|
list disabled_systems;
|
||||||
|
list forbidden_systems;
|
||||||
|
|
||||||
notify_cmds = "{}";
|
notify_cmds = "{}";
|
||||||
|
|
||||||
while((ps = getjs(power_systems, [(string)psi])) != JSON_INVALID) {
|
while((ps = getjs(power_systems, [(string)psi])) != JSON_INVALID) {
|
||||||
integer system_enabled = ((power_state & (1 << psi)) != FALSE) && power_on;
|
integer system_forbidden = (forbidden_state & (1 << psi)) != FALSE;
|
||||||
|
integer system_enabled = (((power_state & (1 << psi)) != FALSE) && power_on);
|
||||||
integer raw_se = system_enabled;
|
integer raw_se = system_enabled;
|
||||||
|
|
||||||
string psname = getjs(ps, ["name"]);
|
string psname = getjs(ps, ["name"]);
|
||||||
|
|
||||||
if(system_enabled) {
|
// echo("system #" + (string)psi + " (" + (string)(1 << psi) + ") '" + psname + "'");
|
||||||
|
|
||||||
|
if(system_forbidden) {
|
||||||
|
system_enabled = FALSE;
|
||||||
|
// echo("...is forbidden");
|
||||||
|
} else if(system_enabled) {
|
||||||
|
// echo("...is enabled");
|
||||||
|
|
||||||
list psreqs = js2list(getjs(ps, ["req"]));
|
list psreqs = js2list(getjs(ps, ["req"]));
|
||||||
integer psri = count(psreqs);
|
integer psri = count(psreqs);
|
||||||
while(psri--) {
|
while(psri--) {
|
||||||
integer psreq = geti(psreqs, psri);
|
integer psreq = geti(psreqs, psri);
|
||||||
system_enabled = (system_enabled && (power_state & (1 << psreq)));
|
system_enabled = (system_enabled && (power_state & (1 << psreq)) && !(forbidden_state & (1 << psreq)));
|
||||||
|
if(!system_enabled) {
|
||||||
|
// echo("...but inhibited due to inavailability of system " + (string)psreq);
|
||||||
|
jump brk;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
@brk;
|
||||||
|
} /*else {
|
||||||
|
echo("...is disabled");
|
||||||
|
}*/
|
||||||
|
|
||||||
if(report_state) {
|
if(report_state) {
|
||||||
if(system_enabled)
|
if(system_forbidden)
|
||||||
|
forbidden_systems += psname;
|
||||||
|
else if(system_enabled)
|
||||||
enabled_systems += psname;
|
enabled_systems += psname;
|
||||||
else if(raw_se)
|
else if(raw_se)
|
||||||
masked_systems += psname;
|
masked_systems += psname;
|
||||||
|
|
@ -143,6 +163,7 @@ apply_state(integer update, integer report_state) {
|
||||||
string e = concat(enabled_systems, ", ");
|
string e = concat(enabled_systems, ", ");
|
||||||
string m = concat(masked_systems, ", ");
|
string m = concat(masked_systems, ", ");
|
||||||
string d = concat(disabled_systems, ", ");
|
string d = concat(disabled_systems, ", ");
|
||||||
|
string f = concat(forbidden_systems, ", ");
|
||||||
|
|
||||||
integer sl = strlen(s);
|
integer sl = strlen(s);
|
||||||
|
|
||||||
|
|
@ -156,15 +177,17 @@ apply_state(integer update, integer report_state) {
|
||||||
|
|
||||||
print(cmd_outs, cmd_user, "[" + PROGRAM_NAME + "] system status\n"
|
print(cmd_outs, cmd_user, "[" + PROGRAM_NAME + "] system status\n"
|
||||||
+ "\nsupported subsystems: " + s
|
+ "\nsupported subsystems: " + s
|
||||||
+ "\nfunctioning subsystems: " + e
|
+ "\nonline: " + e
|
||||||
+ "\nblocked subsystems: " + m
|
+ "\ndisabled explicitly: " + d
|
||||||
+ "\ndisabled subsystems: " + d
|
+ "\ndisabled due to policy or hardware limitations: " + f
|
||||||
|
+ "\ndisabled due to unmet dependencies: " + m
|
||||||
+ "\n\nsubsystem draw: " + (string)((integer)power_draw) + " W");
|
+ "\n\nsubsystem draw: " + (string)((integer)power_draw) + " W");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(update) {
|
if(update) {
|
||||||
s_status = setjs(setjs(setjs(s_status,
|
s_status = setjs(setjs(setjs(setjs(s_status,
|
||||||
["state"], (string)power_state),
|
["state"], (string)power_state),
|
||||||
|
["forbidden"], (string)forbidden_state),
|
||||||
["draw"], (string)power_draw),
|
["draw"], (string)power_draw),
|
||||||
["on"], (string)power_on);
|
["on"], (string)power_on);
|
||||||
llLinksetDataWrite("status", s_status);
|
llLinksetDataWrite("status", s_status);
|
||||||
|
|
@ -459,8 +482,11 @@ main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||||
|
|
||||||
apply_state(1, 0);
|
apply_state(1, 0);
|
||||||
} else if((pss = getjs(power_system_names, [sys])) != JSON_INVALID) {
|
} else if((pss = getjs(power_system_names, [sys])) != JSON_INVALID) {
|
||||||
|
integer system_forbidden = (forbidden_state & (1 << (integer)pss)) != FALSE;
|
||||||
|
|
||||||
integer mask = 1 << (integer)pss;
|
integer mask = 1 << (integer)pss;
|
||||||
// echo("Power state starts at " + (string)power_state);
|
// echo("Power state starts at " + (string)power_state);
|
||||||
|
|
||||||
if(act == "toggle" || act == "") {
|
if(act == "toggle" || act == "") {
|
||||||
integer new_power_state = power_state ^ mask;
|
integer new_power_state = power_state ^ mask;
|
||||||
if(new_power_state > power_state)
|
if(new_power_state > power_state)
|
||||||
|
|
@ -477,6 +503,11 @@ main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||||
ann = "subsystem-0";
|
ann = "subsystem-0";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(system_forbidden) {
|
||||||
|
ann = "critical-error";
|
||||||
|
msg = "power operation failed: " + sys + " is unavailable due to hardware or policy limitations";
|
||||||
|
}
|
||||||
|
|
||||||
// echo("Changing " + pss + " #?# " + (string)mask + " -> " + (string)power_state);
|
// echo("Changing " + pss + " #?# " + (string)mask + " -> " + (string)power_state);
|
||||||
|
|
||||||
apply_state(1, 0);
|
apply_state(1, 0);
|
||||||
|
|
@ -506,7 +537,11 @@ main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||||
string status = gets(argv, ci + 1);
|
string status = gets(argv, ci + 1);
|
||||||
// echo("POWER notify: " + cmd + " " + status);
|
// echo("POWER notify: " + cmd + " " + status);
|
||||||
|
|
||||||
if(cmd == "charged") {
|
if(cmd == "forbidden") {
|
||||||
|
// change in forbidden rules
|
||||||
|
forbidden_state = (integer)getdbl("status", ["forbidden"]);
|
||||||
|
apply_state(1, 0);
|
||||||
|
} else if(cmd == "charged") {
|
||||||
// integer charge_bootable = (status == "y");
|
// integer charge_bootable = (status == "y");
|
||||||
// no code required here - will occur automatically
|
// no code required here - will occur automatically
|
||||||
|
|
||||||
|
|
@ -744,6 +779,7 @@ main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||||
string s_status = llLinksetDataRead("status");
|
string s_status = llLinksetDataRead("status");
|
||||||
string s_power = llLinksetDataRead("power");
|
string s_power = llLinksetDataRead("power");
|
||||||
power_on = (integer)getjs(s_status, ["on"]);
|
power_on = (integer)getjs(s_status, ["on"]);
|
||||||
|
forbidden_state = (integer)getjs(s_status, ["forbidden"]);
|
||||||
power_state = (integer)getjs(s_status, ["state"]);
|
power_state = (integer)getjs(s_status, ["state"]);
|
||||||
power_draw = (float)getjs(s_status, ["draw"]);
|
power_draw = (float)getjs(s_status, ["draw"]);
|
||||||
power_systems = getjs(s_power, ["system"]);
|
power_systems = getjs(s_power, ["system"]);
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -117,7 +117,7 @@
|
||||||
#define js2list llJson2List
|
#define js2list llJson2List
|
||||||
|
|
||||||
// string jsarray(list x): returns a JSON string containing the elements of list x. All types other than integers and floats will be converted into quoted strings, but strings that resemble JSON (due to starting and ending with [] or {}) will be interpreted as JSON.
|
// string jsarray(list x): returns a JSON string containing the elements of list x. All types other than integers and floats will be converted into quoted strings, but strings that resemble JSON (due to starting and ending with [] or {}) will be interpreted as JSON.
|
||||||
#define jsarray(...) llList2Json(JSON_ARRAY, (list)__VA_ARGS__)
|
#define jsarray(...) llList2Json(JSON_ARRAY, (list)(__VA_ARGS__))
|
||||||
|
|
||||||
// string jsobject(list x): eturns a string that is a representation of the values in list x encoded into a JSON object. The source list will be interpreted as having a stride of 2, with even-numbered elements becoming the keys of the new object, and odd-numbered elements becoming values. For values, all types other than integers and floats will be converted into quoted strings, but strings that resemble JSON (due to starting and ending with [] or {}) will be interpreted as JSON.
|
// string jsobject(list x): eturns a string that is a representation of the values in list x encoded into a JSON object. The source list will be interpreted as having a stride of 2, with even-numbered elements becoming the keys of the new object, and odd-numbered elements becoming values. For values, all types other than integers and floats will be converted into quoted strings, but strings that resemble JSON (due to starting and ending with [] or {}) will be interpreted as JSON.
|
||||||
#define jsobject(...) llList2Json(JSON_OBJECT, (list)(__VA_ARGS__))
|
#define jsobject(...) llList2Json(JSON_OBJECT, (list)(__VA_ARGS__))
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ float pixel_scale;
|
||||||
#define IGNEOUS_EXTRUSIVE 2
|
#define IGNEOUS_EXTRUSIVE 2
|
||||||
#define MURKY_TRUTH 3
|
#define MURKY_TRUTH 3
|
||||||
#define CLOCK_SKEW 4
|
#define CLOCK_SKEW 4
|
||||||
|
#define CHICANERY 5
|
||||||
|
|
||||||
#if VT_FONT == PSYCHIC_INSTABILITY
|
#if VT_FONT == PSYCHIC_INSTABILITY
|
||||||
// Psychic Instability
|
// Psychic Instability
|
||||||
|
|
@ -75,6 +76,14 @@ list FONT = [TEXTURE_TRANSPARENT, "b17c85ad-dbb4-5e08-0bcd-f9bcc911958d", "63d0b
|
||||||
// Murky Truth uses a different character width table from PI and IX. The capital N is only 2 cells wide instead of 3.
|
// Murky Truth uses a different character width table from PI and IX. The capital N is only 2 cells wide instead of 3.
|
||||||
#define FONT_charwidths "21111111111111111111111111111111111222211122121122222222221122222222222221222322222222232221112212222212211213222212122322211121"
|
#define FONT_charwidths "21111111111111111111111111111111111222211122121122222222221122222222222221222322222222232221112212222212211213222212122322211121"
|
||||||
|
|
||||||
|
#elif VT_FONT == CHICANERY
|
||||||
|
|
||||||
|
list FONT = [TEXTURE_TRANSPARENT, "aa087ee9-ede1-5bdc-4196-5a8f7122ca34",
|
||||||
|
"74b13ca9-8b7f-1cf8-41b8-5d562a902dc0", "d916241c-454b-e3f3-7442-43d1e78a522d",
|
||||||
|
TEXTURE_TRANSPARENT, "25b236b4-6df8-a01f-9b17-a42e2cf05650",
|
||||||
|
"57e6d2a4-2a8a-65b4-d98f-be103b43268e", "37d32009-0445-bd48-5a8c-33d798376212"];
|
||||||
|
#define FONT_charwidths "21111111111111111111111111111111111222211122121122222222221122222222222221222322222222232221112212222212211213222222222322211121"
|
||||||
|
|
||||||
#elif VT_FONT == CLOCK_SKEW || !defined(VT_FONT)
|
#elif VT_FONT == CLOCK_SKEW || !defined(VT_FONT)
|
||||||
// Clock Skew
|
// Clock Skew
|
||||||
list FONT = ["8dcd4a48-2d37-4909-9f78-f7a9eb4ef903", "66f0c644-a340-9772-f870-9b30051db9d9", "57b9b8a5-ccb1-72e0-2429-916d25ace382", "d8903765-b390-4707-0397-18d558fcdfa5",
|
list FONT = ["8dcd4a48-2d37-4909-9f78-f7a9eb4ef903", "66f0c644-a340-9772-f870-9b30051db9d9", "57b9b8a5-ccb1-72e0-2429-916d25ace382", "d8903765-b390-4707-0397-18d558fcdfa5",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue