Add mod development environment, docs, and example modlet

This commit is contained in:
2026-08-20 16:25:22 -04:00
parent 7abaeccac5
commit d47b0703ee
9 changed files with 475 additions and 0 deletions
+79
View File
@@ -0,0 +1,79 @@
# Lynda's 7D2D Mod Agent
## Project Context
This repository is for Lynda to build 7 Days to Die mods. The current target game version is **3.x**.
## Environment Summary
- **Username**: lynda
- **IDE**: VS Code (installed, with Kilo Code extension)
- **Git**: Installed and configured
- **Repo**: `lyndas_mod` with origin remote pointing to Gitea server
- **Game**: 7 Days to Die (Steam App ID: 251570)
- **Mod Launcher**: 7D2DModLauncherV5 v5.1.8.2
## Paths
| Component | Path |
|-----------|------|
| Repo root | `C:\Users\lynda\Git\lyndas_mod` |
| Steam install | `C:\Steam\steamapps\common\7 Days To Die` |
| Mod launcher install | `C:\Program Files (x86)\7D2DModLauncherV5` |
| Mod launcher config | `C:\Users\lynda\AppData\Roaming\7D2DModLauncher\ModLauncher.txt` |
| Mod staging root | `C:\7D2D` |
## Existing Mods in Mod Launcher
### v1 Mods (installed under `C:\7D2D\v1\`)
- Darkness Falls (v6.0.0.20) — `C:\7D2D\v1\Darkness_Falls\Darkness_Falls`
- War of the Walkers (v1.x.x.x Stable) — `C:\7D2D\v1\War_of_the_Walkers\War_of_the_Walkers_v1.x.x.x_Stable`
### v2 Mods (installed under `C:\7D2D\v2\`)
- Echoes from the Afterlife
- Forsaken Trail
- Greys Prophecy V1 Experimental
- NordArmy XMAS UPDATE
- Old West Migration (V1)
- Ravenhearst (v10.4.1b1)
- Tongo 2.0
- VIKINGSMOD
- War3zuk FarmLife 5.6
- Welcome to Purgatory
- Winterween
- 5thDay
- Asia Mod V1.1 Stable
- Experimental Recipes v1.0+
- The Wasteland
- The Wasteland(Testing)
### Custom Mod
- Asylum 2.5.4 — `C:\7D2D\Custom\Asylum_2.5.4`
## Available v3 Mods
The following v3 mods are available in the mod launcher (under `C:\7D2D\v3\`):
- 7DVR
- Aircraft Carrier Challenge High Seas V.3
- Area 7 Challenge
- Backpacker Challenge
- Black Forrest
- Destroyer of Dreams High Seas
- Dishong Tower 2.5
- District Zero
- EndZ Remastered
- NordArmy
- Old West Migration
- Outback Roadies
- Preppocalypse
- Project Praxis
- VIKINGSMOD
- Welcome to Purgatory
- Wild West Mod
## Notes
- v3 mods are now available in the mod launcher.
- The ModLauncher config has stale `SteamPaths` pointing to `e:\steam\steamapps\common\7 Days To Die\` but the actual Steam install is at `C:\Steam\steamapps\common\7 Days To Die`.
- Game saves are stored in `C:\Users\lynda\AppData\Roaming\7DaysToDie\Saves\` for vanilla and within each mod's directory for modded play.
- Mod backups are stored in `C:\7D2D\Saves\Backups\`.
+33
View File
@@ -0,0 +1,33 @@
# 7D2D Modding Commands
## Game Paths
- Steam install: `C:\Steam\steamapps\common\7 Days To Die`
- Mod staging: `C:\7D2D`
- Mod launcher: `C:\Program Files (x86)\7D2DModLauncherV5\ModLauncherV5.exe`
- Mod launcher config: `C:\Users\lynda\AppData\Roaming\7D2DModLauncher\ModLauncher.txt`
## Launching the Game
1. Open `7D2DModLauncherV5` from Start Menu or run `C:\Program Files (x86)\7D2DModLauncherV5\ModLauncherV5.exe`
2. Select desired mod/profile
3. Click Play
## Mod Development Workflow
### Simple Modlets (vanilla folder)
1. Create/update modlet files in `mods/` in this repo
2. Run `.kilo/scripts/modlet.ps1 -Action enable` to copy modlets to the Steam `Mods` folder
3. Launch the game and start a new save to test
4. Run `.kilo/scripts/modlet.ps1 -Action disable` to remove modlets when done
5. Run `.kilo/scripts/modlet.ps1 -Action sync` to update already-enabled modlets after making changes
### Full Mods (mod launcher)
1. Create/update mod files in this repo
2. Copy or sync modified files to the mod launcher's game copy under `C:\7D2D\v3\<mod_name>\`
3. Launch via Mod Launcher to test
## Current Installed Mods
See `ENVIRONMENT.md` for the full list of installed mods and their paths.
## Notes
- Current target version is 3.x
- v3 mods are available in the mod launcher under `C:\7D2D\v3\`
+111
View File
@@ -0,0 +1,111 @@
# Enable/disable modlets for vanilla 7 Days to Die testing
# Copies modlets to/from the Steam Mods folder
param(
[Parameter(Mandatory=$true)]
[ValidateSet("enable", "disable", "status", "sync")]
[string]$Action
)
$steamModsPath = "C:\Steam\steamapps\common\7 Days To Die\Mods"
$repoModsPath = "C:\Users\lynda\Git\lyndas_mod\mods"
if (-not (Test-Path $steamModsPath)) {
Write-Error "Steam Mods folder not found: $steamModsPath"
exit 1
}
if (-not (Test-Path $repoModsPath)) {
Write-Error "Repo mods folder not found: $repoModsPath"
exit 1
}
function Get-Modlets {
Get-ChildItem -Path $repoModsPath -Directory | Where-Object { $_.Name -ne "README.md" }
}
function Enable-Modlets {
$modlets = Get-Modlets
if ($modlets.Count -eq 0) {
Write-Host "No modlets found in $repoModsPath"
return
}
foreach ($modlet in $modlets) {
$targetPath = Join-Path $steamModsPath $modlet.Name
$sourcePath = $modlet.FullName
if (Test-Path $targetPath) {
Write-Warning "Already exists (skipping): $targetPath"
continue
}
Copy-Item -Path $sourcePath -Destination $targetPath -Recurse -Force
Write-Host "Enabled: $($modlet.Name)"
}
}
function Disable-Modlets {
$modlets = Get-Modlets
if ($modlets.Count -eq 0) {
Write-Host "No modlets found in $repoModsPath"
return
}
foreach ($modlet in $modlets) {
$targetPath = Join-Path $steamModsPath $modlet.Name
if (-not (Test-Path $targetPath)) {
Write-Warning "Not found (skipping): $targetPath"
continue
}
Remove-Item -LiteralPath $targetPath -Recurse -Force
Write-Host "Disabled: $($modlet.Name)"
}
}
function Sync-Modlets {
$modlets = Get-Modlets
if ($modlets.Count -eq 0) {
Write-Host "No modlets found in $repoModsPath"
return
}
foreach ($modlet in $modlets) {
$targetPath = Join-Path $steamModsPath $modlet.Name
$sourcePath = $modlet.FullName
if (-not (Test-Path $targetPath)) {
Write-Host "Not enabled, skipping: $($modlet.Name)"
continue
}
Copy-Item -Path $sourcePath -Destination $targetPath -Recurse -Force
Write-Host "Synced: $($modlet.Name)"
}
}
function Show-Status {
$modlets = Get-Modlets
if ($modlets.Count -eq 0) {
Write-Host "No modlets found in $repoModsPath"
return
}
Write-Host "`nModlet Status:"
Write-Host "--------------"
foreach ($modlet in $modlets) {
$targetPath = Join-Path $steamModsPath $modlet.Name
$status = if (Test-Path $targetPath) { "ENABLED" } else { "disabled" }
Write-Host "$($modlet.Name): $status"
}
Write-Host ""
}
switch ($Action) {
"enable" { Enable-Modlets }
"disable" { Disable-Modlets }
"status" { Show-Status }
"sync" { Sync-Modlets }
}