Allow solo and last-active-player AFK
This commit is contained in:
+19
-12
@@ -30,18 +30,19 @@ immediately, including in the damage callback; the script restores its own contr
|
||||
weapons and zombie-targeting state. Expiration has no spectator transition, purchase
|
||||
or extra grace. Repeating `.afk` does not restart the timer or reserve twice.
|
||||
|
||||
Entry rejects downed/dead/spectating players, stock protection/control restrictions,
|
||||
and the last active player. A default 15-second reentry cooldown prevents repeated
|
||||
AFK `2.1.0` allows solo players and the last active player to enter; all players
|
||||
may be AFK at the same time. Entry still rejects downed/dead/spectating players
|
||||
and stock protection/control restrictions. A default 15-second reentry cooldown prevents repeated
|
||||
combat toggles. Manual `.back` retains a separate two-second grace. The AFK damage
|
||||
callback passes through when it does not own protection, preserving stock game
|
||||
invulnerability. Other mods that restrict controls should set
|
||||
`player.tws_afk_external_controls` while their restriction applies.
|
||||
|
||||
AFK leaves player session state unchanged, so stock player-count zombie scaling
|
||||
continues to include AFK players. If the last non-AFK active player dies or leaves,
|
||||
the scripts release AFK sessions and send the stock end-game signal. Stock afterlife,
|
||||
`no_end_game_check` and Grief reset recovery defer this behavior. A lobby with no
|
||||
AFK player is unaffected. Verify these rules on each deployed map/mode.
|
||||
continues to include AFK players. Losing the last non-AFK teammate does not end
|
||||
protected breaks or force a match end. Authorized time continues to count down;
|
||||
normal expiration and stock match-end cleanup still apply. Verify these rules
|
||||
on each deployed map/mode.
|
||||
|
||||
## Rewards
|
||||
|
||||
@@ -90,13 +91,17 @@ Recheck callback contracts if the stock runtime changes.
|
||||
2. Update all EC host agents to **1.12.0+** before enabling these scripts. This
|
||||
adds AFK settlement before deleting/rebuilding stopped runtime storage.
|
||||
3. Build and install TWS `t5-plugin` and `t6-plugin` **1.4.0+** and matching AFK
|
||||
**2.0.0** scripts. Require common **1.4.0+**, telemetry **1.0.0+**, and
|
||||
**2.1.0** scripts. Require common **1.4.0+**, telemetry **1.0.0+**, and
|
||||
Plutonium **r5334+** for `SetTextUnlimited`. Fully restart game-server processes.
|
||||
4. Retain EC's private `tws_bank_token` and exact `tws_server_id`; telemetry must
|
||||
establish the current match before AFK commands can be authorized.
|
||||
5. Keep `tws-afk/t5/` and `tws-afk/t6/`, relative to the process working directory,
|
||||
on persistent writable storage with one process per server/endpoint scope.
|
||||
|
||||
Upgrading AFK scripts from `2.0.0` to `2.1.0` adds no dependency requirement:
|
||||
copy the matching script for each game and restart the map. No full server-process
|
||||
restart is required for this script-only update.
|
||||
|
||||
| Game dvar | Default | Meaning |
|
||||
| --- | --- | --- |
|
||||
| `tws_afk_enabled` | enabled | `0` disables new AFK service startup |
|
||||
@@ -127,7 +132,7 @@ process crash can lose progress that had not yet reached the local journal.
|
||||
Already accepted rewards and journaled snapshots persist.
|
||||
|
||||
Protection starts only after reservation and start acknowledgments, a final
|
||||
player/lobby recheck, and a durable native clock start. Once authorized, an EC
|
||||
player-state recheck, and a durable native clock start. Once authorized, an EC
|
||||
outage cannot shorten protection; a local monotonic deadline still ends it at zero.
|
||||
Manual return, disconnect, death and match end stop accounting immediately. A
|
||||
failed stop-journal write freezes the original stop time for retry rather than
|
||||
@@ -182,14 +187,16 @@ Before production activation, validate **both engines**:
|
||||
Drop reserve/start/stop replies, reorder delivery, fill/fail journal storage, and
|
||||
restart. Verify never-started refunds, durable exact stops and unconfirmed crash
|
||||
holds. Correct only a proven stopped session and confirm the ledger audit.
|
||||
- Reject the last active player's entry. Kill/disconnect the last active teammate
|
||||
while another is AFK; validate normal end reporting and all AFK settlement.
|
||||
Exercise stock recovery exceptions and confirm expected zombie scaling.
|
||||
- Enter as the only connected player and as the last active player with downed,
|
||||
dead, spectating or AFK teammates. Put every player in AFK. Kill/disconnect the
|
||||
last active teammate, including while reserve/start replies are pending; verify
|
||||
protection continues without a forced match end. Check solo return/expiration,
|
||||
normal stock match-end settlement, afterlife/Grief recovery and zombie scaling.
|
||||
- Rebuild/remove with journals from both games, retire the instance credential,
|
||||
interrupt the agent after a lost reply, and retry. Runtime deletion must wait for
|
||||
acknowledged recovery and cannot authorize a new purchase.
|
||||
|
||||
Validation performed for this change: 39 AFK behavior checks, 14 core HUD and
|
||||
Validation performed for the initial `2.0.0` change: 39 AFK behavior checks, 14 core HUD and
|
||||
56 service HUD checks passed. All nine T6 scripts compiled and assembled with
|
||||
the upstream [gsc-tool compiler 8f1d6bd](https://github.com/xensik/gsc-tool/tree/8f1d6bd4d51efdc619629b9254fb439427a6d306)
|
||||
using its T6 PC compiler/assembler library in a temporary local driver. No Windows
|
||||
|
||||
Reference in New Issue
Block a user