Compare commits

...
2 Commits
Author SHA1 Message Date
josh d15bc50b7d Update Discord HUD labels and bump both scripts to 1.1.2 2026-10-13 23:25:28 -04:00
josh 2123b8f4d5 Simplify bank balance messages in T5 and T6 2026-10-13 20:51:38 -04:00
10 changed files with 75 additions and 23 deletions
+52
View File
@@ -6,6 +6,58 @@ T5/T6 script and each native plugin. Current versions are recorded in
## 2026-10-13
### Shorter Discord URL
| Component | Version | Affected source |
| --- | --- | --- |
| `tws_t5_hud.gsc` | `1.1.2` | `t5/scripts/tws_t5_hud.gsc` |
| `tws_t6_hud.gsc` | `1.1.2` | `t6/scripts/tws_t6_hud.gsc` |
- Both games replace the displayed Discord URL with `https://discord.tws.lol`.
Keep the smaller font and muted gray introduced in the already-uploaded
`1.1.1` release.
- Compatibility: no new dependency requirement; matching common `1.1.0+`
remains required. Deployment: copy each updated HUD script and restart the
map. No plugin update or full server-process restart is required. No
deployment of `1.1.2` performed here; GSC compilation and live T5/T6 display
verification remain required.
### More subtle Discord label
| Component | Version | Affected source |
| --- | --- | --- |
| `tws_t5_hud.gsc` | `1.1.1` | `t5/scripts/tws_t5_hud.gsc` |
| `tws_t6_hud.gsc` | `1.1.1` | `t6/scripts/tws_t6_hud.gsc` |
- Both games reduce the top-left Discord URL font scale from `1.4` to `1.2`
and darken its neutral gray from `(0.85, 0.85, 0.85)` to `(0.65, 0.65, 0.65)`.
The label keeps its position and connection lifetime; other HUD text is
unaffected.
- Compatibility: no new dependency requirement; matching common `1.1.0+`
remains required. Deployment: copy each updated HUD script and restart the
map. No plugin update or full server-process restart is required. The user
reports `1.1.1` has been uploaded; GSC compilation and live T5/T6 appearance
verification have not been performed here.
### Simplified bank balance message
| Component | Version | Affected source |
| --- | --- | --- |
| `tws_t5_bank.gsc` | `2.0.3` | `t5/scripts/tws_t5_bank.gsc` |
| `tws_t6_bank.gsc` | `2.0.3` | `t6/scripts/tws_t6_bank.gsc` |
- Both games now display `.b` as `Bank: {balance} points`, retaining the
existing colors and omitting the available amount. Update startup version
reporting and the existing balance-message fixtures. API data and point
accounting are unchanged.
- Validation: all 42 portable bank script fixture groups passed with
`node tools/check_bank.mjs`, including exact balance text for both games.
- Compatibility: no new dependency requirement; matching TWS plugins `1.2.0+`
remain required. Deployment: copy each updated bank script and restart the
map. No plugin update or full server-process restart is required for this
change. No deployment performed; GSC compilation and live T5/T6 display
verification remain required.
### Bank failure diagnostics — TWS #14
| Component | Version | Affected source |
+1 -1
View File
@@ -269,7 +269,7 @@ startup. `bankVersion()` is a new linking requirement even when the bank is
disabled by dvar. No EC/agent change or new third-party dependency is required;
existing bank API, common/telemetry and endpoint-migration requirements still apply.
Verify deployed DLL and GSC SHA-256 hashes against the built release artifacts,
and confirm startup reports `script=2.0.2 plugin=1.2.0` before interpreting results.
and confirm startup reports `script=2.0.3 plugin=1.2.0` before interpreting results.
An old bank script checksum on Ascension was reported in issue #14; deploying
only the DLL does not update GSC. No deployment was performed here.
+3 -3
View File
@@ -56,12 +56,12 @@ invalid identities fail privately without changing points. Follow the shared
## Persistent Discord text
The HUD shows `https://discord.thewrightserver.net` in small light-gray text
The HUD shows `https://discord.tws.lol` in small muted-gray text
at the top-left, including for newcomers waiting in spectator mode. The label
is created once per connection and persists across death and respawn. The
gameplay HUD starts one line lower, keeping timers, help and records clear.
Install HUD and common `1.1.0` together, then restart the map; no plugin update
or full server-process restart is required.
Install HUD `1.1.2` with common `1.1.0` or later, then restart the map; no plugin
update or full server-process restart is required.
## Map record announcements
+2 -2
View File
@@ -15,7 +15,7 @@ init()
credentials = "valid";
if (level.bank_token.size < 40 || getSubStr(level.bank_token, 0, 8) != "ec_bank_")
credentials = "invalid";
print("[tws_bank] startup script=2.0.2 plugin=" + bankVersion() +
print("[tws_bank] startup script=2.0.3 plugin=" + bankVersion() +
" endpoint=" + level.bank_url + " server=" + bank_log_token(level.bank_server) +
" credentials=" + credentials);
// A private per-server cfg supplies this; never embed bank credentials.
@@ -179,7 +179,7 @@ bank_transfer(entry, args)
if (!isDefined(reply) || reply["state"] != "balance")
bank_say(entry, "^3Bank unavailable. Your points are unchanged.");
else
bank_say(entry, "^3Bank: ^7" + reply["balance"] + " ^3points; available: ^7" + reply["amount"]);
bank_say(entry, "^3Bank: ^7" + reply["balance"] + " ^3points");
return;
}
if (args.size != 2)
+2 -2
View File
@@ -23,8 +23,8 @@ hud_discord()
self endon("disconnect");
label = scripts\sp\tws_t5_common::make_text_elem(
self, 10, 10, "left", level.hud_font_small, level.hud_c_label);
label SetText("https://discord.thewrightserver.net");
self, 10, 10, "left", 1.2, (0.65, 0.65, 0.65));
label SetText("https://discord.tws.lol");
elems = [];
elems[elems.size] = label;
+3 -3
View File
@@ -69,12 +69,12 @@ populates that field before the `connected` notification. Follow the shared
## Persistent Discord text
The HUD shows `https://discord.thewrightserver.net` in small light-gray text
The HUD shows `https://discord.tws.lol` in small muted-gray text
at the top-left, including for newcomers waiting in spectator mode. The label
is created once per connection and persists across death and respawn. The
gameplay HUD starts one line lower, keeping timers, help and records clear.
Install HUD and common `1.1.0` together, then restart the map; no plugin update
or full server-process restart is required.
Install HUD `1.1.2` with common `1.1.0` or later, then restart the map; no plugin
update or full server-process restart is required.
## Map record announcements
+2 -2
View File
@@ -19,7 +19,7 @@ init()
credentials = "valid";
if (level.bank_token.size < 40 || getSubStr(level.bank_token, 0, 8) != "ec_bank_")
credentials = "invalid";
println("[tws_bank] startup script=2.0.2 plugin=" + bankVersion() +
println("[tws_bank] startup script=2.0.3 plugin=" + bankVersion() +
" endpoint=" + level.bank_url + " server=" + bank_log_token(level.bank_server) +
" credentials=" + credentials);
// A private per-server cfg supplies this; never embed bank credentials.
@@ -184,7 +184,7 @@ bank_transfer(entry, args)
if (!isDefined(reply) || reply["state"] != "balance")
bank_say(entry, "^3Bank unavailable. Your points are unchanged.");
else
bank_say(entry, "^3Bank: ^7" + reply["balance"] + " ^3points; available: ^7" + reply["amount"]);
bank_say(entry, "^3Bank: ^7" + reply["balance"] + " ^3points");
return;
}
if (args.size != 2)
+2 -2
View File
@@ -25,8 +25,8 @@ hud_discord()
self endon("disconnect");
label = scripts\zm\tws_t6_common::make_text_elem(
self, 10, 10, "left", level.hud_font_small, level.hud_c_label);
label SetText("https://discord.thewrightserver.net");
self, 10, 10, "left", 1.2, (0.65, 0.65, 0.65));
label SetText("https://discord.tws.lol");
elems = [];
elems[elems.size] = label;
+4 -4
View File
@@ -188,7 +188,7 @@ for (const game of ['t5','t6']) {
});
test('startup reports versions, scope, credential validation and journal count safely', () => {
const e = engine(game);
assert.match(e.logs.join('\n'), /script=2\.0\.2 plugin=1\.2\.0/);
assert.match(e.logs.join('\n'), /script=2\.0\.3 plugin=1\.2\.0/);
assert(e.logs.some(line => line.includes(`endpoint=${publicEndpoint} server=server credentials=valid`)));
assert(e.logs.some(line => line.includes('journal_load=success pending=0')));
const invalid = engine(game, {dvars:{tws_bank_token:'secret-invalid-token'}});
@@ -304,11 +304,11 @@ for (const game of ['t5','t6']) {
const e=engine(game); e.c.level.telemetry_match=undefined; e.run(['.d','all']); assert.equal(e.sent.length,0);
});
test('balance reads do not journal or alter points', () => {
const e=engine(game); e.run(['.b']); assert.equal(e.saved.length,0); assert.equal(e.player.score,3000); assert.match(e.messages[0],/5000/);
const e=engine(game); e.run(['.b']); assert.equal(e.saved.length,0); assert.equal(e.player.score,3000); assert.equal(e.messages[0], '^3Bank: ^75000 ^3points');
});
test('empty balance displays zero and withdrawing all reports insufficient balance', () => {
const e = engine(game, {amount:0, balance:0}); e.run(['.b']);
assert.equal(e.messages[0], '^3Bank: ^70 ^3points; available: ^70');
assert.equal(e.messages[0], '^3Bank: ^70 ^3points');
assert.equal(e.saved.length, 0); assert.equal(e.player.score, 3000);
const w = engine(game, {amount:0, balance:0, state:'rejected', code:'insufficient_balance'}); w.run(['.w','all']);
assert.match(w.messages[0], /Not enough bank balance/);
@@ -356,7 +356,7 @@ for (const game of ['t5','t6']) {
}
assert.equal(ec.requests().length, 0);
const e = engine(game, {guid, receiver:ec.request});
e.run(['.b']); assert.equal(e.messages[0], '^3Bank: ^70 ^3points; available: ^70');
e.run(['.b']); assert.equal(e.messages[0], '^3Bank: ^70 ^3points');
e.run(['.w','all']); assert.match(e.messages.at(-1), /Not enough bank balance/);
assert.equal(e.player.score, 3000); assert.equal(e.saved[0].decision, 'cancel');
e.c.bank_sender().next(); assert.equal(e.saved.length, 0);
+4 -4
View File
@@ -1,16 +1,16 @@
{
"tws_t5_afk.gsc": "1.0.0",
"tws_t5_bank.gsc": "2.0.2",
"tws_t5_bank.gsc": "2.0.3",
"tws_t5_common.gsc": "1.1.0",
"tws_t5_hud.gsc": "1.1.0",
"tws_t5_hud.gsc": "1.1.2",
"tws_t5_join.gsc": "1.0.0",
"tws_t5_leaderboard.gsc": "1.0.0",
"tws_t5_lock.gsc": "1.0.0",
"tws_t5_telemetry.gsc": "1.0.0",
"tws_t6_afk.gsc": "1.0.0",
"tws_t6_bank.gsc": "2.0.2",
"tws_t6_bank.gsc": "2.0.3",
"tws_t6_common.gsc": "1.1.0",
"tws_t6_hud.gsc": "1.1.0",
"tws_t6_hud.gsc": "1.1.2",
"tws_t6_join.gsc": "1.0.1",
"tws_t6_leaderboard.gsc": "1.0.0",
"tws_t6_lock.gsc": "1.0.0",