acdream/tools/ace-mods/SetTime/README.md
Erik 13f685ee94 tools(ace-mods): add @settime ACE mod for same-clock retail/acdream sky comparisons
Sky and weather gates need retail and acdream looking at the SAME Dereth
hour and the SAME authored day group; until now the only lever was
acdream's ACDREAM_WORLD_TIME/ACDREAM_DAY_GROUP pins, which retail cannot
follow, so the user could never judge night-sky differences (aurora,
dome edge) side by side.

@settime <hour|fraction> [Sunny|Rainy|Clear|Cloudy|<index>] jumps ACE's
Timers.PortalYearTicks FORWARD to the next matching instant. Every
TimeSync header carries that value, so both clients re-sync within
seconds. Forward-only because DelayActions compare against the same
clock (a backward jump would stall them). The calendar and day-group
roll duplicate acdream's retail ports (DerethCalendar shift 3600,
SkyDayGroupSelector LCG from SkyDesc::CalcPresentDayGroup @0x00500E10)
and the 20-entry name table was dumped from the installed Region DAT.

Install: copy SetTime.dll + Meta.json to C:\ACE\Mods\SetTime and run
@mod find (or restart ACE). Dev servers only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 14:34:37 +02:00

1.3 KiB

SetTime — ACE mod for side-by-side sky/weather comparisons

@settime <hour|fraction> [Sunny|Rainy|Clear|Cloudy|<dayGroupIndex>]

Jumps the server's Dereth clock forward (never back) so retail and acdream — both driven by ACE's TimeSync — show the same hour and the same authored day group:

  • @settime 3 → the next 3 o'clock (day fraction 0.125);
  • @settime 0.125 Rainy → 3 o'clock on the next day whose roll is a Rainy group;
  • @settime 12 16 → noon on the next day that rolls day group 16.

Dev servers only: a forward jump fires every pending DelayAction early. The command needs AccessLevel.Admin.

Build and install

dotnet build tools/ace-mods/SetTime -c Release
New-Item -ItemType Directory -Force C:\ACE\Mods\SetTime | Out-Null
Copy-Item tools/ace-mods/SetTime/bin/Release/net10.0/SetTime.dll, tools/ace-mods/SetTime/Meta.json C:\ACE\Mods\SetTime\

Then restart ACE (the mod loader also hot-reloads when HotReload is true). AceServerDir (default C:\ACE\Server) can be overridden with -p:AceServerDir=... if the server lives elsewhere.

The calendar and day-group roll are the same retail ports acdream uses (DerethDateTime, SkyDayGroupSelector; retail SkyDesc::CalcPresentDayGroup @0x00500E10), so the group the command predicts is the group both clients will render.