A Project Zomboid mod that adds a native Psychology skill: survivors gradually build mental resilience against stress, panic and unhappiness, and can develop — and recover from — nicotine and alcohol dependency.
| Mod ID | psychology_skill |
| Workshop ID | 3561213456 |
| Steam Workshop | https://steamcommunity.com/sharedfiles/filedetails/?id=3561213456 |
| Current version | 1.0.2 |
| Supported builds | Build 41 · Build 42.20.2 |
| Modes | Singleplayer · Multiplayer · Dedicated server (see caveat below) |
| Languages | English · Português · Português (Brasil) |
Vanilla treats stress, panic and unhappiness as passive moodles you mostly wait out. This mod turns them into something you can train against.
- A real skill.
Psychologyappears in the Skills tab under its own category, levels 1–10, with its own XP curve and its own line of skill books. - Exposure trains you. Being around visible zombies grants Psychology XP on a cooldown — the survivor who has seen the most is the hardest to rattle.
- Higher level = softer hits. Each level multiplies incoming stress, panic and unhappiness down, and adds a small passive stress decay bonus.
- Gore desensitisation. Nearby corpses and blood add extra stress decay that scales with your Psychology level — veterans stop flinching at the things that used to break them.
- Therapeutic activities. Practice breathing anywhere, work through a CBT workbook, or read specialised literature.
- Addiction and recovery. Nicotine and alcohol dependency build with use, cause withdrawal when you go without, decay naturally over time, and can be cut down faster with recovery guides. A higher Psychology level softens withdrawal.
- On Build 42, nicotine defers to the base game. Build 42 has its own nicotine withdrawal system, so this mod does not add a second one on top of it — it steers the vanilla one from your dependency instead. Your dependency itself works identically on both builds.
- A dedicated panel. The character info window gains a Psychology tab showing level, XP, stress/panic/depression bars, an overall status readout, and both dependency levels.
Everything is configurable through Sandbox Options.
| Item | Type | What it does |
|---|---|---|
| Psychology Textbook | Literature | One-time XP award on finishing the book |
| CBT Therapeutic Workbook | Drainable | "Do Therapeutic Exercise" — XP per use, 10 uses |
| Quit Smoking Guide | Literature | Reduces nicotine dependency at 50% and 100% read |
| Alcohol Sobriety Guide | Literature | Reduces alcohol dependency at 50% and 100% read |
| Psychology for Beginners | Skill book | Levels 1–2 XP multiplier |
| Psychology Intermediate | Skill book | Levels 3–4 XP multiplier |
| Psychology Advanced | Skill book | Levels 5–6 XP multiplier |
| Psychology Expert | Skill book | Levels 7–8 XP multiplier |
| Psychology Mastery | Skill book | Levels 9–10 XP multiplier |
All of them spawn through vanilla procedural loot lists — bookstores, libraries, classrooms, school lockers, living-room shelves, office desks and medical storage. Nothing is force-spawned and no vanilla distribution file is overwritten.
Build 42 also adds a trait: Psychologically Resilient (4 points) — start at Psychology level 1.
Subscribe on the Workshop, then enable Psychology — Mental Resilience Skill in the mod list.
For a dedicated server, add to your server config:
WorkshopItems=3561213456
Mods=psychology_skillCopy Contents/mods/Psychology_Skill into your Zomboid/mods/ folder, then enable it in-game.
The mod ships Build 41 and Build 42 support in a single package — the game automatically loads the correct set of files for whichever build you are running. See AGENTS.md for how that works.
All options live on the Psychology page in Sandbox Options (singleplayer or while hosting).
| Option | Default | Range | Meaning |
|---|---|---|---|
StressGainMultByLevel |
0.98 | 0.80 – 1.00 | Incoming stress multiplier per level |
PanicGainMultByLevel |
0.985 | 0.80 – 1.00 | Incoming panic multiplier per level |
UnhappyGainMultByLevel |
0.985 | 0.80 – 1.00 | Incoming unhappiness multiplier per level |
StressDecayBonusPerLvl |
0.0015 | 0 – 0.01 | Flat extra stress decay per level, per in-game hour |
Multipliers are applied as factor ^ level, so lower values mean a stronger reduction.
| Option | Default | Range | Meaning |
|---|---|---|---|
NicoGain |
0.5 | 0 – 5 | Dependency gained per cigarette |
NicoDecay |
1 | 0 – 10 | Natural dependency lost per day |
NicoMinInt |
120 | 10 – 1440 | Minutes without a cigarette before withdrawal starts |
NicoStrMin |
0.002 | 0 – 0.02 | Stress added per minute of withdrawal. Build 41 only — see below |
NicoUnhMin |
0.2 | 0 – 5 | Unhappiness added per minute of withdrawal |
NicoGuide |
20 | 0 – 100 | Dependency removed per Quit Smoking Guide milestone |
On Build 42 the base game already delivers nicotine withdrawal stress, so this mod adds
none of its own and NicoStrMin has no effect there. The remaining options all work on both
builds: dependency still builds, decays and drives how hard withdrawal hits, and NicoUnhMin
still applies, because the vanilla system does not touch unhappiness.
| Option | Default | Range | Meaning |
|---|---|---|---|
AlcGain |
5 | 0 – 30 | Dependency gained per drink |
AlcDecay |
1 | 0 – 10 | Natural dependency lost per day |
AlcMinInt |
360 | 10 – 2880 | Minutes without a drink before withdrawal starts |
AlcStrMin |
0.003 | 0 – 0.03 | Stress added per minute of withdrawal |
AlcUnhMin |
0.3 | 0 – 5 | Unhappiness added per minute of withdrawal |
AlcGuide |
20 | 0 – 100 | Dependency removed per Sobriety Guide milestone |
Dedicated servers have no Sandbox Options UI. Set the values directly in your sandbox vars file:
SandboxVars.PSY = {
StressGainMultByLevel = 0.98,
PanicGainMultByLevel = 0.985,
UnhappyGainMultByLevel = 0.985,
StressDecayBonusPerLvl = 0.0015,
NicoGain = 0.5,
NicoDecay = 1,
NicoMinInt = 120,
NicoStrMin = 0.002,
NicoUnhMin = 0.2,
NicoGuide = 20,
AlcGain = 5,
AlcDecay = 1,
AlcMinInt = 360,
AlcStrMin = 0.003,
AlcUnhMin = 0.3,
AlcGuide = 20,
}Dependency values are on a 0–100 scale. Withdrawal only begins once a dependency is at 10 or above.
- No vanilla file is overwritten. The mod only appends to procedural distribution lists and wraps vanilla timed actions, so it coexists with other mods rather than replacing anything.
- Safe to add to an existing save. Newly added items need unexplored containers to spawn naturally, so expect to travel a bit before finding the books.
- Build 41 and Build 42 are fully separated. They never share Lua files, so a change to one cannot break the other.
- Multiplayer aware. Progression and dependency state are authoritative on the server and synced to clients.
Version 1.0.2 was tested in singleplayer, including saving and reloading. Dependency syncing on a dedicated server with multiple connected clients has not been verified. The command path is server-authoritative by construction and works in singleplayer, but nobody has yet watched it work across a real connection.
It is expected to work. If you run a server and see dependency values drift between players or reset on reconnect, please open an issue — that is the fastest way to get it fixed.
This project follows Semantic Versioning — see CHANGELOG.md for the full history.
- MAJOR — save-breaking changes, or dropping support for a game build.
- MINOR — new features, items, sandbox options or languages.
- PATCH — bug fixes, balance tweaks, translation corrections.
The version in every mod.info matches the git tag for that release (v1.0.2 ↔ version=1.0.2).
This repository is the mod's Steam Workshop folder. Only Contents/ is uploaded to Steam —
everything else (this README, AGENTS.md, CHANGELOG.md, .git/) stays local and is ignored by
both the game and the uploader.
Psychology_Skill/ <- repository root, never uploaded
├── Contents/ <- the only folder Steam receives
│ └── mods/Psychology_Skill/
│ ├── media/ <- Build 41 implementation
│ ├── common/ <- Build 42 shared assets (translations)
│ ├── 42/ <- Build 42 implementation
│ └── mod.info
├── qa/ <- debug-only test harness, never shipped
├── scripts/ <- verification and formatting tooling
├── workshop.txt <- Workshop listing metadata
├── preview.png <- 256x256 Workshop thumbnail
├── README.md
├── AGENTS.md <- read this before changing any code
└── CHANGELOG.md
Only Contents/ is uploaded. Everything else — including the QA harness and all tooling —
stays local, and scripts/verify.ps1 fails the build if a debug file ever appears inside
Contents/.
A full breakdown of every file, the dual-build loading rules and the Build 42.20 requirements lives in AGENTS.md.
Everything below stays local — none of it is uploaded to the Workshop.
npm install # pinned StyLua + luaparse, no admin needed
pwsh -File scripts/verify.ps1 # read-only: reports, never rewritesverify.ps1 runs thirteen checks before a release: Lua 5.1 syntax, translation JSON and UTF-8
validity, the Build 42.20 %% escaping rule, mod.info version agreement, Build 41 / Build 42
parity, merge-conflict markers, stray control characters, config-file sanity, Steam's 8000-byte
description limit, and guards that no documentation or debug file has leaked into Contents/.
qa/PsychologySkill_QA is a debug-only harness for the in-game acceptance tests — it sets
dependency values, abstinence state and Psychology level directly, and displays the raw engine
stats. It lives outside Contents/ so it cannot ship. See qa/README.md.
Read AGENTS.md before changing any code. It documents the dual-build layout, the Build 42 API facts verified against the game jar, the multiplayer model, and the acceptance tests that gate a release.
Please include:
- Your game build (e.g.
42.20.2) and whether you are in SP, MP or on a dedicated server. - The relevant section of
console.txtfrom yourZomboid/folder. - Whether the issue still reproduces with only this mod enabled.
Report on the Steam Workshop page or as a GitHub issue.
Created by WindLother.
If you enjoy the mod and want to support future updates: Support me on Ko-fi.