add 3-4x wildlife modlet for 7dtd, re-enable mod deploy, strip dead v3.x serverconfig props
This commit is contained in:
BIN
roles/7dtd/files/mods/MoreAnimals.zip
Normal file
BIN
roles/7dtd/files/mods/MoreAnimals.zip
Normal file
Binary file not shown.
33
roles/7dtd/files/mods/MoreAnimals/Config/spawning.xml
Normal file
33
roles/7dtd/files/mods/MoreAnimals/Config/spawning.xml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<configs>
|
||||||
|
<!--
|
||||||
|
More Animals per Area - v3.x spawn-density patch for the dedicated server.
|
||||||
|
|
||||||
|
Written for the v3.0+ spawning.xml schema (validated against the v3.0 shipped file):
|
||||||
|
- maxcount is now per 80x80m "biome chunk" (vanilla = 1 for every animal group).
|
||||||
|
Friendly groups: WildGameForest (day/Any, all biomes), WildGameForestNight
|
||||||
|
(pine/burnt), WildGameStagNight (snow/wasteland). Predators: EnemyAnimalsForest,
|
||||||
|
EnemyAnimalsBurntForestAny/Night, EnemyAnimalsDesert/Night, EnemyAnimalsSnow/Night,
|
||||||
|
EnemyAnimalsWasteland/Night. The starts-with() selectors cover ALL current and future
|
||||||
|
variants and cannot hit non-animal spawns (EnemyVulture*, ZombiesAll do not match).
|
||||||
|
- respawndelay is SIX comma-separated game-day values, one per sandbox Respawn speed:
|
||||||
|
Default,VerySlow,Slow,Normal,Fast,VeryFast (multipliers 1.75,1.35,1,0.65,0.35).
|
||||||
|
A single scalar corrupts the entry on v3.x. Base values: 0.25 for friendly game
|
||||||
|
(~6x faster than the 1.5 vanilla), 0.6 for night/predator groups.
|
||||||
|
- GATE: XML mods are only honored while the sandbox "Density" options (Day/Night Animal
|
||||||
|
+ Enemy) are set to Default. If a SandboxCode sets any density != Default, THIS PATCH
|
||||||
|
IS IGNORED and the sandbox value wins - use SandboxCode density in that case.
|
||||||
|
- EnemyAnimalsSnowNight / EnemyAnimalsWasteland* are zombie animals (undead), included
|
||||||
|
by the selector but worth knowing about.
|
||||||
|
|
||||||
|
Effect vs vanilla (pine forest): WildGameForest 1->4 alive per 80x80m chunk, respawn
|
||||||
|
1.5d->0.25d; predators 1->3, respawn 2.9d->0.6d - roughly a 3-4x wildlife increase.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Friendly animals (day + night, all biomes): 4 alive per chunk, base respawn 0.25d -->
|
||||||
|
<set xpath="/spawning/biome/spawn[starts-with(@entitygroup,'WildGame')]/@maxcount">4</set>
|
||||||
|
<set xpath="/spawning/biome/spawn[starts-with(@entitygroup,'WildGame')]/@respawndelay">0.25,0.438,0.338,0.25,0.163,0.088</set>
|
||||||
|
|
||||||
|
<!-- Hostile animals (all biome variants incl. zombie-animal night groups): 3 alive per chunk, base respawn 0.6d -->
|
||||||
|
<set xpath="/spawning/biome/spawn[starts-with(@entitygroup,'EnemyAnimals')]/@maxcount">3</set>
|
||||||
|
<set xpath="/spawning/biome/spawn[starts-with(@entitygroup,'EnemyAnimals')]/@respawndelay">0.6,1.05,0.81,0.6,0.39,0.21</set>
|
||||||
|
</configs>
|
||||||
7
roles/7dtd/files/mods/MoreAnimals/ModInfo.xml
Normal file
7
roles/7dtd/files/mods/MoreAnimals/ModInfo.xml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<xml>
|
||||||
|
<Name value="MoreAnimals"/>
|
||||||
|
<DisplayName value="More Animals per Area"/>
|
||||||
|
<Version value="1.1"/>
|
||||||
|
<Description value="Raises wild-game and predator spawn density (maxcount) and respawn rate in every biome. Pure XML data patch - no DLLs, no client install, EAC-safe."/>
|
||||||
|
<Author value="boxswapper"/>
|
||||||
|
</xml>
|
||||||
@@ -36,33 +36,39 @@
|
|||||||
# Mods live in the bind-mounted serverfiles; the container loads them on its next start
|
# Mods live in the bind-mounted serverfiles; the container loads them on its next start
|
||||||
# (recreate on every deploy re-reads them). zips come from roles/7dtd/files/mods (sdtd_mods
|
# (recreate on every deploy re-reads them). zips come from roles/7dtd/files/mods (sdtd_mods
|
||||||
# in vars.yml), extracted one level deep (each zip carries its own mod subfolder; prefix
|
# in vars.yml), extracted one level deep (each zip carries its own mod subfolder; prefix
|
||||||
# folders with z- if they must sort LAST for load order). unarchive only ADDS — it never
|
# folders with z- if they must sort LAST for load order).
|
||||||
# removes, so a mod dropped from sdtd_mods would keep loading: with an empty list we wipe
|
# Deployed now: MoreAnimals — a PURE XML data patch (no DLL/Harmony) raising wild-game/predator
|
||||||
# the whole dir and the create-task below rebuilds it empty. Partial mod swaps are not
|
# spawn density (v3.x schema: maxcount per 80x80m chunk + 6-value respawndelay tuples). Works
|
||||||
# auto-cleaned (the role only knows zip names, not the folders zips unpack into) — remove
|
# with EAC ON, needs NO client install (spawning is server-authoritative; the server pushes its
|
||||||
# those retired folders from the box by hand.
|
# XML state to clients on connect). GATE: XML values apply only while the sandbox Density options
|
||||||
|
# are Default — once sdtd_sandbox_code sets any density != Default, the sandbox value wins and
|
||||||
|
# this patch is inert; use SandboxCode Day/Night Animal Density + Respawn instead.
|
||||||
|
# unarchive only ADDS — it never removes, so a mod dropped from sdtd_mods would keep loading:
|
||||||
|
# with an empty list we wipe the whole dir and the create-task below rebuilds it empty.
|
||||||
|
# Partial mod swaps are not auto-cleaned (the role only knows zip names, not the folders zips
|
||||||
|
# unpack into) — remove those retired folders from the box by hand.
|
||||||
- name: Remove 7 Days to Die Mods directory when no mods are deployed
|
- name: Remove 7 Days to Die Mods directory when no mods are deployed
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: /opt/apps/7dtd/serverfiles/Mods
|
path: /opt/apps/7dtd/serverfiles/Mods
|
||||||
state: absent
|
state: absent
|
||||||
when: sdtd_mods | length == 0
|
when: sdtd_mods | length == 0
|
||||||
|
|
||||||
# - name: Create 7 Days to Die Mods directory (container user)
|
- name: Create 7 Days to Die Mods directory (container user)
|
||||||
# ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
# path: /opt/apps/7dtd/serverfiles/Mods
|
path: /opt/apps/7dtd/serverfiles/Mods
|
||||||
# state: directory
|
state: directory
|
||||||
# owner: '1000'
|
owner: '1000'
|
||||||
# group: '1000'
|
group: '1000'
|
||||||
# mode: '0755'
|
mode: '0755'
|
||||||
|
|
||||||
# - name: Deploy 7 Days to Die mods from vendored zips
|
- name: Deploy 7 Days to Die mods from vendored zips
|
||||||
# ansible.builtin.unarchive:
|
ansible.builtin.unarchive:
|
||||||
# src: "mods/{{ item }}"
|
src: "mods/{{ item }}"
|
||||||
# dest: /opt/apps/7dtd/serverfiles/Mods
|
dest: /opt/apps/7dtd/serverfiles/Mods
|
||||||
# owner: '1000'
|
owner: '1000'
|
||||||
# group: '1000'
|
group: '1000'
|
||||||
# mode: '0755'
|
mode: '0755'
|
||||||
# loop: "{{ sdtd_mods }}"
|
loop: "{{ sdtd_mods }}"
|
||||||
|
|
||||||
- name: Template 7 Days to Die serverconfig from vars.yml
|
- name: Template 7 Days to Die serverconfig from vars.yml
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
|
|||||||
@@ -62,52 +62,35 @@
|
|||||||
<property name="GameName" value="{{ sdtd_game_name }}" />
|
<property name="GameName" value="{{ sdtd_game_name }}" />
|
||||||
<property name="GameMode" value="{{ sdtd_game_mode }}" />
|
<property name="GameMode" value="{{ sdtd_game_mode }}" />
|
||||||
|
|
||||||
<!-- Difficulty: 0 = Scavenger, 1 = Adventurer, 2 = Nomad, 3 = Warrior, 4 = Survivalist, 5 = Insane -->
|
<!-- v3.x GAMEPLAY TUNING MOVED TO SANDBOXCODE: GameDifficulty, XPMultiplier, DayNightLength,
|
||||||
<property name="GameDifficulty" value="{{ sdtd_difficulty }}" />
|
DayLightLength, DeathPenalty, DropOnDeath/DropOnQuit, zombie speeds (ZombieMove etc.),
|
||||||
<property name="BlockDamagePlayer" value="100" />
|
BloodMoon*, LootAbundance, LootRespawnDays, AirDropFrequency, BlockDamage*, EnemySpawnMode
|
||||||
<property name="BlockDamageAI" value="100" />
|
were REMOVED from serverconfig.xml in v3.0 and are silently IGNORED - the game reads only
|
||||||
<property name="BlockDamageAIBM" value="100" />
|
the SandboxCode. Empty code = Adventurer defaults. To restore the server's intended tuning:
|
||||||
<property name="XPMultiplier" value="{{ sdtd_xp_multiplier }}" />
|
client -> New Game -> Sandbox Options -> mirror the sdtd_* reference vars in vars.yml ->
|
||||||
|
copy code -> set sdtd_sandbox_code in vars.yml. MaxSpawnedZombies/MaxSpawnedAnimals remain
|
||||||
|
live serverconfig properties (see below). -->
|
||||||
|
{% if sdtd_sandbox_code %}
|
||||||
|
<property name="SandboxCode" value="{{ sdtd_sandbox_code }}" />
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- Still-live v3.x gameplay properties (not moved to sandbox) -->
|
||||||
<property name="PlayerSafeZoneLevel" value="5" />
|
<property name="PlayerSafeZoneLevel" value="5" />
|
||||||
<property name="PlayerSafeZoneHours" value="5" />
|
<property name="PlayerSafeZoneHours" value="5" />
|
||||||
|
|
||||||
<!-- Day/night: DayNightLength = real minutes per in-game day, DayLightLength = in-game hours of daylight -->
|
|
||||||
<property name="BuildCreate" value="false" />
|
<property name="BuildCreate" value="false" />
|
||||||
<property name="DayNightLength" value="{{ sdtd_day_night_length }}" />
|
|
||||||
<property name="DayLightLength" value="{{ sdtd_day_light_length }}" />
|
|
||||||
<property name="DeathPenalty" value="1" />
|
|
||||||
<!-- DropOnDeath: 0 = nothing, 1 = everything, 2 = toolbelt only, 3 = backpack only, 4 = delete all -->
|
|
||||||
<property name="DropOnDeath" value="{{ sdtd_drop_on_death }}" />
|
|
||||||
<property name="DropOnQuit" value="0" />
|
|
||||||
<property name="BedrollDeadZoneSize" value="15" />
|
<property name="BedrollDeadZoneSize" value="15" />
|
||||||
<property name="BedrollExpiryTime" value="45" />
|
<property name="BedrollExpiryTime" value="45" />
|
||||||
|
|
||||||
<!-- Performance related -->
|
<!-- Performance / spawn caps (live properties; animal density itself is patched by the
|
||||||
|
MoreAnimals modlet on Data/Config/spawning.xml - XML values apply only while the sandbox
|
||||||
|
Density options are Default) -->
|
||||||
<property name="MaxSpawnedZombies" value="{{ sdtd_max_spawned_zombies }}" />
|
<property name="MaxSpawnedZombies" value="{{ sdtd_max_spawned_zombies }}" />
|
||||||
<property name="MaxSpawnedAnimals" value="{{ sdtd_max_spawn_animals }}" />
|
<property name="MaxSpawnedAnimals" value="{{ sdtd_max_spawn_animals }}" />
|
||||||
<property name="ServerMaxAllowedViewDistance" value="12" />
|
<property name="ServerMaxAllowedViewDistance" value="12" />
|
||||||
<property name="MaxQueuedMeshLayers" value="1000" />
|
<property name="MaxQueuedMeshLayers" value="1000" />
|
||||||
|
|
||||||
<!-- Zombie settings. ZombieMove: 0 = walk, 1 = jog, 2 = run, 3 = sprint, 4 = nightmare -->
|
|
||||||
<property name="EnemySpawnMode" value="true" />
|
|
||||||
<property name="EnemyDifficulty" value="0" />
|
|
||||||
<property name="ZombieFeralSense" value="0" />
|
|
||||||
<property name="ZombieMove" value="{{ sdtd_zombie_move }}" />
|
|
||||||
<property name="ZombieMoveNight" value="{{ sdtd_zombie_move_night }}" />
|
|
||||||
<property name="ZombieFeralMove" value="3" />
|
|
||||||
<property name="ZombieBMMove" value="3" />
|
|
||||||
<property name="BloodMoonFrequency" value="{{ sdtd_bloodmoon_frequency }}" />
|
|
||||||
<property name="BloodMoonRange" value="0" />
|
|
||||||
<property name="BloodMoonWarning" value="8" />
|
|
||||||
<property name="BloodMoonEnemyCount" value="{{ sdtd_bloodmoon_enemy_count }}" />
|
|
||||||
|
|
||||||
<!-- Loot -->
|
|
||||||
<property name="LootAbundance" value="{{ sdtd_loot_abundance }}" />
|
|
||||||
<property name="LootRespawnDays" value="7" />
|
|
||||||
<property name="AirDropFrequency" value="{{ sdtd_airdrop_frequency }}" />
|
|
||||||
<property name="AirDropMarker" value="true" />
|
|
||||||
|
|
||||||
<!-- Multiplayer. PlayerKillingMode: 0 = no killing, 1 = kill allies only, 2 = kill strangers only, 3 = kill everyone -->
|
<!-- Multiplayer. PlayerKillingMode: 0 = no killing, 1 = kill allies only, 2 = kill strangers only, 3 = kill everyone -->
|
||||||
|
<property name="AirDropMarker" value="true" />
|
||||||
<property name="PartySharedKillRange" value="100" />
|
<property name="PartySharedKillRange" value="100" />
|
||||||
<property name="PlayerKillingMode" value="{{ sdtd_player_killing_mode }}" />
|
<property name="PlayerKillingMode" value="{{ sdtd_player_killing_mode }}" />
|
||||||
|
|
||||||
|
|||||||
30
vars.yml
30
vars.yml
@@ -184,6 +184,18 @@ sdtd_game_world: RWG
|
|||||||
sdtd_worldgen_seed: boxswapper
|
sdtd_worldgen_seed: boxswapper
|
||||||
sdtd_worldgen_size: 10240
|
sdtd_worldgen_size: 10240
|
||||||
sdtd_game_name: Boxswapper
|
sdtd_game_name: Boxswapper
|
||||||
|
## v3.0+ SandboxCode — the ONLY gameplay tuning v3.x reads. The vars below this block
|
||||||
|
## (sdtd_difficulty .. sdtd_airdrop_frequency) are REFERENCE-ONLY: v3.0 removed them from
|
||||||
|
## serverconfig.xml, the template no longer renders them, and the game IGNORES them. Empty
|
||||||
|
## code = Adventurer defaults. To restore the server's intended tuning generate a code:
|
||||||
|
## client -> New Game -> Sandbox Options -> set options to match the vars below
|
||||||
|
## (Difficulty Nomad, XP 250, DayNight 60, DayLight 18, Blood Moon 20 days, DropOnDeath
|
||||||
|
## Everything, Loot 150, AirDrop 24h) PLUS Day Animal Density = High and
|
||||||
|
## Day Animal Respawn = Fast (Night similar if you want night wildlife) -> copy -> paste here.
|
||||||
|
## While the code is empty, the MoreAnimals modlet controls wildlife density (it applies only
|
||||||
|
## while the sandbox Density options are Default).
|
||||||
|
sdtd_sandbox_code: ""
|
||||||
|
## ── REFERENCE VARS FOR SANDBOXCODE GENERATION (not rendered to serverconfig.xml on v3.x) ──
|
||||||
## Difficulty: 0 = Scavenger, 1 = Adventurer, 2 = Nomad, 3 = Warrior, 4 = Survivalist, 5 = Insane
|
## Difficulty: 0 = Scavenger, 1 = Adventurer, 2 = Nomad, 3 = Warrior, 4 = Survivalist, 5 = Insane
|
||||||
sdtd_difficulty: "2"
|
sdtd_difficulty: "2"
|
||||||
sdtd_day_night_length: 60
|
sdtd_day_night_length: 60
|
||||||
@@ -200,15 +212,17 @@ sdtd_airdrop_frequency: 24
|
|||||||
## PlayerKillingMode: 0 = no killing, 1 = kill allies only, 2 = kill strangers only, 3 = kill everyone
|
## PlayerKillingMode: 0 = no killing, 1 = kill allies only, 2 = kill strangers only, 3 = kill everyone
|
||||||
sdtd_player_killing_mode: "3"
|
sdtd_player_killing_mode: "3"
|
||||||
sdtd_max_spawned_zombies: 64
|
sdtd_max_spawned_zombies: 64
|
||||||
## EAC is ON (default protection). It was OFF while code mods were deployed — EAC blocks
|
## EAC is ON (default protection). EAC blocks CODE mods (Harmony DLL hooks) — that is why it was
|
||||||
## their Harmony hooks, so keep "false" if mods are ever reinstalled.
|
## OFF while code mods were deployed. PURE XML data modlets (like MoreAnimals below) carry no DLL
|
||||||
|
## and work fine with EAC ON; keep "false" only if code mods are ever reinstalled.
|
||||||
sdtd_eac_enabled: "true"
|
sdtd_eac_enabled: "true"
|
||||||
## Game mods: NONE deployed (Singularity 4.1.3 + No Respawn Near Backpack 2.0.0.0 were
|
## Game mods deployed: MoreAnimals.zip — pure XML spawn-density patch (roles/7dtd/files/mods).
|
||||||
## removed; EAC was flipped back on as part of that change). To re-add a mod: drop the zip
|
## Server-side only: clients join vanilla with EAC ON, nothing to install. To re-add/swap a mod:
|
||||||
## into roles/7dtd/files/mods/ and list its name here. NOTE: the role's unarchive task only
|
## drop the zip into roles/7dtd/files/mods/ and list its name here. unarchive only ADDS — it
|
||||||
## ADDS mods — retiring to an EMPTY list wipes the whole server Mods dir; swapping one mod
|
## never removes, so a mod dropped from this list would keep loading: with an EMPTY list we wipe
|
||||||
## for another (non-empty list) requires removing the retired folder from the box by hand.
|
## the whole server Mods dir; swapping one mod for another (non-empty list) requires removing the
|
||||||
sdtd_mods: []
|
## retired folder from the box by hand.
|
||||||
|
sdtd_mods: [MoreAnimals.zip]
|
||||||
sdtd_xp_multiplier: 250
|
sdtd_xp_multiplier: 250
|
||||||
sdtd_telnet_enabled: "true"
|
sdtd_telnet_enabled: "true"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user