fix(zomboid): re-sync the world settings from the live server
The vendored Sophie preset and the running debbzoid world had drifted, and the repo only held the preset. That is not a restore point: force-pushing it would have reverted the admins' in-game tuning rather than recovering it, which is exactly how a Sophie world quietly became an Apocalypse one once already -- 139 values reverted, loot from 0.35 back to 0.9, CharacterFreePoints 0 to 60. files/zomboid/sophie/SandboxVars.lua is now a snapshot of the live world taken 2026-08-31, not the preset as shipped. The modlist is untouched and still upstream, which is why zomboid_preset_version now names the two halves and their separate dates. server.ini.j2 carries the eight keys that had drifted: PlayerSafehouse false -> true SafehouseAllowNonResidential false -> true (the diner/gas-station case) SafehouseAllowRespawn false -> true SafehouseAllowLoot true -> false SafehouseAllowFire true -> false TrashDeleteAll false -> true MapRemotePlayerVisibility 1 -> 4 ResetID 6953472 -> 826046 ResetID is in that list on purpose, and matters most. It is the world's soft-reset token: a file value that differs from the one the live world was created with tells every connected client to roll a new character. Carrying the live value makes a deliberate force-push a no-op instead of a server-wide wipe prompt. Spawn config gets its own switch, zomboid_spawn_force. spawnregions.lua and spawnpoints.lua are the only config a running world re-reads -- at every server start, where SandboxVars is read once, when the world is created -- so a spawn edit is deployable on the live world without a wipe. Sharing zomboid_config_force between them would have meant force-pushing the whole preset to land a one-line spawn edit, rewriting the INI (hence the ResetID hazard above) and the world's SandboxVars along with it. config-template/ now tracks the repo unconditionally. Nothing on the host writes that directory and the server cannot see it, so it has no hand edits to protect; if it does not track the repo it is not a restore point, just an older world's settings. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016QdWYhwUtwM2NQGukiRh12
This commit is contained in:
co-authored by
Claude Opus 5
parent
9954d774e7
commit
ba9c4f2bfe
@@ -152,8 +152,12 @@
|
||||
mode: 0644
|
||||
notify: restorecon podman
|
||||
|
||||
# Server config is seeded from the vendored Sophie 42 preset *before* first
|
||||
# boot, so the server never generates a vanilla INI we then have to patch.
|
||||
# Server config is seeded *before* first boot, so the server never generates a
|
||||
# vanilla INI we then have to patch.
|
||||
#
|
||||
# The INI and SandboxVars started as the vendored Sophie 42 preset and were
|
||||
# re-synced from the running debbzoid world on 2026-08-31 -- see the header of
|
||||
# templates/zomboid/server.ini.j2 for the INI keys that moved and why.
|
||||
#
|
||||
# force is off by design: these files are a starting point, not a managed
|
||||
# state. Stop the server, hand-edit them, regenerate the world -- Ansible will
|
||||
@@ -170,7 +174,7 @@
|
||||
notify: restorecon podman
|
||||
tags: zomboid-conf
|
||||
|
||||
- name: seed zomboid server ini from sophie preset
|
||||
- name: seed zomboid server ini
|
||||
become: true
|
||||
ansible.builtin.template:
|
||||
src: zomboid/server.ini.j2
|
||||
@@ -183,17 +187,42 @@
|
||||
tags: zomboid-conf
|
||||
|
||||
# Copied, not templated: these are Lua and must not go through Jinja.
|
||||
- name: seed zomboid sandbox and spawn config from sophie preset
|
||||
- name: seed zomboid sandbox settings
|
||||
become: true
|
||||
ansible.builtin.copy:
|
||||
src: "zomboid/sophie/{{ item }}.lua"
|
||||
dest: "{{ zomboid_path }}/data/Server/{{ zomboid_server_name }}_{{ item }}.lua"
|
||||
src: zomboid/sophie/SandboxVars.lua
|
||||
dest: "{{ zomboid_path }}/data/Server/{{ zomboid_server_name }}_SandboxVars.lua"
|
||||
force: "{{ zomboid_config_force | bool }}"
|
||||
owner: "{{ podman_subuid.stdout }}"
|
||||
group: "{{ podman_user }}"
|
||||
mode: 0644
|
||||
notify: restorecon podman
|
||||
tags: zomboid-conf
|
||||
|
||||
# Spawn config gets its own force switch, and it is not pedantry: these two
|
||||
# files are the only part of the server config that a *running* world will pick
|
||||
# up. PZ reads <name>_spawnregions.lua (and any serverfile it names) at every
|
||||
# server start; SandboxVars is read once, when the world is created. So a spawn
|
||||
# change is deployable on the live world -- push, restart, done -- while a
|
||||
# SandboxVars change is not, and needs a wipe to mean anything.
|
||||
#
|
||||
# Sharing zomboid_config_force between them would mean force-pushing the whole
|
||||
# preset to land a one-line spawnregions edit, which also rewrites the INI (a
|
||||
# ResetID mismatch tells every client to reroll) and the world's SandboxVars.
|
||||
#
|
||||
# make deploy TAGS=zomboid-conf -e zomboid_spawn_force=true
|
||||
#
|
||||
# then restart the server -- with players offline -- for it to take effect.
|
||||
- name: seed zomboid spawn config
|
||||
become: true
|
||||
ansible.builtin.copy:
|
||||
src: "zomboid/sophie/{{ item }}.lua"
|
||||
dest: "{{ zomboid_path }}/data/Server/{{ zomboid_server_name }}_{{ item }}.lua"
|
||||
force: "{{ zomboid_spawn_force | bool }}"
|
||||
owner: "{{ podman_subuid.stdout }}"
|
||||
group: "{{ podman_user }}"
|
||||
mode: 0644
|
||||
loop:
|
||||
- SandboxVars
|
||||
- spawnregions
|
||||
- spawnpoints
|
||||
notify: restorecon podman
|
||||
@@ -231,7 +260,7 @@
|
||||
state: started
|
||||
daemon_reload: true
|
||||
|
||||
# A pristine copy of the Sophie preset, kept where the server cannot overwrite it.
|
||||
# The settings this repo would deploy, kept where the server cannot overwrite them.
|
||||
#
|
||||
# Reference only -- nothing applies this automatically. A wipe deliberately leaves
|
||||
# the live settings alone so hand tuning survives it.
|
||||
@@ -242,12 +271,21 @@
|
||||
# much as an input, and that is how a Sophie world quietly became an Apocalypse
|
||||
# one -- 139 values reverted, loot from 0.35 back to 0.9, CharacterFreePoints
|
||||
# from 0 to 60. When that happens again, this is what to copy back from.
|
||||
#
|
||||
# What it holds changed on 2026-08-31. It was the pristine Sophie preset; it is
|
||||
# now a snapshot of the live debbzoid world, because the admins' tuning had by
|
||||
# then diverged from the preset in the same 139 values and re-seeding from the
|
||||
# preset would have thrown that tuning away rather than restored it.
|
||||
#
|
||||
# force is on here, and only here. Nothing on the host writes this directory --
|
||||
# the server cannot see it -- so it has no hand edits to protect, and if it does
|
||||
# not track the repo it is not a restore point, just an older world's settings.
|
||||
- name: seed canonical zomboid world settings
|
||||
become: true
|
||||
ansible.builtin.copy:
|
||||
src: "zomboid/sophie/{{ item }}.lua"
|
||||
dest: "{{ zomboid_path }}/config-template/{{ item }}.lua"
|
||||
force: "{{ zomboid_config_force | bool }}"
|
||||
force: true
|
||||
owner: "{{ podman_user }}"
|
||||
group: "{{ podman_user }}"
|
||||
mode: 0644
|
||||
|
||||
Reference in New Issue
Block a user