- Python 99.7%
- Shell 0.1%
- Dockerfile 0.1%
- Makefile 0.1%
Dockerfile, docker-compose.yml, and entrypoint.sh to run The Hollow in a container. Exposes telnet (4000), web (4001), and WebSocket (4002). Bind-mounts ./game so the SQLite DB persists on the host. Picks up ANTHROPIC_API_KEY from .env via env_file. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| game | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| entrypoint.sh | ||
| Makefile | ||
| README.md | ||
| requirements.txt | ||
The Hollow
A cyberpunk MUD set in the cracks of a surveillance state. You are an off-grid operative surviving on the margins — taking jobs, building contacts, staying below the radar, and deciding how far you'll go.
Built on Evennia.
Connecting
MUD client (recommended): connect to localhost, port 4000
Web client: open http://localhost:4001 in a browser
At the login screen:
create <username> <password> — new account
connect <username> <password> — existing account
Character Creation
On first login you'll be walked through character creation. You choose a background and a role. These are permanent.
Backgrounds
| Background | Bonus Attributes | Starting Focus |
|---|---|---|
| Corporate Defector | INT, PRE | Research, deception, electronics |
| Agency Burnout | PER, WIL | Firearms, surveillance, composure |
| Syndicate Exile | CUN, AGI | Streetwise, deception, melee |
| Underground Native | AGI, END | Stealth, streetwise, evasion |
| Escaped Experiment | STR, END | Athletics, toughness; mandatory augmentation |
| Idealist | PRE, INT | Persuasion, research, read person |
Roles
Your role defines your edge — a passive ability that operates without a roll.
| Role | Edge | Effect |
|---|---|---|
| Ghost | Vanish | Once per scene, disengage from pursuit without a check if any cover exists |
| Operator | Combat Composure | Never suffer injury penalties at the Hurt tier; Wounded gives only -1 |
| Netrunner | Cold Entry | Hack unsecured or lightly secured networks with no special equipment |
| Fixer | The Network | Start with one extra contact beyond your background contact |
| Tech | Field Strip | Repair or jury-rig equipment with improvised materials |
| Medic | Stabilize | Bring a downed character back to functional in 60 seconds, no equipment needed |
Core Mechanic
All checks use the same system:
2d10 + Attribute + Skill Rank vs Difficulty
| Margin | Result |
|---|---|
| +6 or more | Critical Success — exceptional outcome, possible bonus effect |
| +3 to +5 | Clean Success |
| 0 to +2 | Marginal Success — you succeed, but with a complication or cost |
| -1 to -4 | Failure |
| -5 or worse | Critical Failure — something goes wrong beyond just failing |
Difficulty Levels
| Name | Target |
|---|---|
| Routine | 10 |
| Challenging | 14 |
| Hard | 18 |
| Severe | 22 |
| Extreme | 26 |
| Legendary | 30 |
To roll a check manually: check <skill> or check <skill> <difficulty>
Attributes
Nine base attributes, rated 1–8 (default 3, augmented cap varies).
| Attr | Governs |
|---|---|
| STR | Melee combat, raw physical force |
| AGI | Speed, evasion, stealth, fine motor skills |
| END | Endurance, HP, toxin resistance |
| INT | Hacking, research, languages |
| PER | Firearms, surveillance, streetwise |
| WIL | Composure, mental resistance |
| PRE | Persuasion, command, intimidation |
| CUN | Deception, negotiation, reading people |
| TEC | Hardware, electronics, weapons modding, fabrication, medicine |
| AUG | Set by augmentations, not training |
HP = END × 5. Raise an attribute with train attr <ATTR> (costs 15 XP; cap 8 unaugmented).
Skills
Skills are ranked 0–4: Untrained → Novice → Trained → Expert → Master.
Each skill is governed by an attribute. You roll 2d10 + governing attribute + skill rank.
| Skill | Attr | Use |
|---|---|---|
| Melee | STR | Unarmed and blade attacks |
| Athletics | AGI | Running, climbing, physical feats |
| Stealth | AGI | Moving unseen, hiding |
| Evasion | AGI | Passive defense against attacks |
| Sleight of Hand | AGI | Picking pockets, concealment |
| Piloting | AGI | Vehicles |
| Toughness | END | Shrug off fatigue and minor wounds |
| Detox | END | Resist toxins and chemicals |
| Hacking | INT | Breaching digital systems |
| Research | INT | Finding information |
| Languages | INT | Communication across language barriers |
| Firearms | PER | Ranged combat |
| Surveillance | PER | Observing and tracking |
| Streetwise | PER | Reading the street, knowing who's who |
| Composure | WIL | Keeping it together under pressure |
| Resist | WIL | Withstand coercion and manipulation |
| Persuasion | PRE | Charm and reasoned argument |
| Command | PRE | Directing others, taking charge |
| Intimidation | PRE | Fear-based compliance |
| Deception | CUN | Lying, misdirection, bluffing |
| Read Person | CUN | Reading intent and emotional state |
| Negotiation | CUN | Deal-making |
| Hardware | TEC | Physical device construction and repair |
| Electronics | TEC | Circuit-level work |
| Weapons Mod | TEC | Modifying and upgrading weapons |
| Fabrication | TEC | Building things from parts |
| Medtech | TEC | Medical treatment |
Raise a skill with train <skill> (XP cost scales with current rank).
XP Costs
| Rank Increase | Cost |
|---|---|
| Untrained → Novice | 2 XP |
| Novice → Trained | 4 XP |
| Trained → Expert | 6 XP |
| Expert → Master | 10 XP |
| Attribute +1 | 15 XP |
Injury
HP loss moves you through injury states. Injury penalizes all checks.
| State | HP % | Check Penalty |
|---|---|---|
| Full | 100% | — |
| Hurt | 76–99% | −1 |
| Wounded | 51–75% | −2 |
| Critical | 26–50% | −3 |
| Down | 1–25% | Cannot act |
| Dead | 0% | — |
Operators ignore the Hurt penalty and take only -1 at Wounded.
Recover HP by finding a medtech NPC (heal) or treating yourself if you have the medtech skill (heal self).
Combat
attack <target> — one combat round: you strike, then target counter-strikes
hit <target> — alias
fight <target> — alias
flee — escape to a random exit (Athletics or Stealth check, difficulty 14)
flee <direction> — flee toward a specific exit
How attacks work: Roll 2d10 + STR + melee rank (melee) or PER + firearms rank (ranged) vs the target's passive defense (AGI + evasion). Hitting deals weapon damage + STR bonus (melee). A margin of 6+ is a critical hit (+3 damage).
Weapon condition matters: worn weapons give -1 to attack rolls; damaged give -2.
Fighting in surveilled areas raises your profile.
Hacking
terminals — list hackable systems in the current room
jacks / devices — aliases
hack <target> — attempt to breach a system (INT + hacking)
hack <target> quietly — stealth breach (adds half your stealth rank as bonus)
breach / jack — aliases
Success extracts data, scrip, or access. Failure raises your profile and logs the intrusion. Two failed attempts locks the system.
Social
talk <npc> — open conversation
talk <npc> about <topic> — directed conversation
talk <npc> = <what you say> — say something specific
persuade <npc> — PRE + persuasion vs NPC WIL + 10
persuade <npc> = <words>
intimidate <npc> — PRE + intimidation vs NPC END + 10
deceive <npc> — CUN + deception vs NPC PER + 10
Social checks shift NPC disposition (hostile → suspicious → neutral → friendly → loyal). Failure shifts disposition in the wrong direction — they noticed you trying. Strong successes also improve the contact relationship level.
Inventory & Economy
inventory / i / inv — list what you're carrying
equip <weapon> — equip a weapon from inventory
equip none — go unarmed
buy — browse vendor stock in the current room
buy <item> — purchase an item
sell <item> — sell to a vendor (40–60% of item value, condition-adjusted)
use <consumable> — use a stim, medpack, etc.
read <document> — read a document or data shard
Currency is scrip. Item condition (pristine / good / worn / damaged / broken) affects performance and resale value.
Quests & Jobs
quests / quest / jobs — view active and completed jobs
quests <number> — detail on a specific active job
quests generate — ask the AI for a new job based on your situation
complete <number> — turn in a completed job and collect reward
abandon <number> — drop an active job
board — anonymous job board (lower pay, no introduction needed)
board refresh — pull a new board posting
Completing jobs earns XP and scrip, and improves your Underground faction standing.
Profile
Profile tracks how visible you are to the surveillance apparatus. It ranges 0–5.
| Level | Label |
|---|---|
| 0 | Ghost |
| 1 | Blip |
| 2 | Pattern |
| 3 | Target |
| 4 | Priority |
| 5 | Burned |
Profile rises from violence and hacking in surveilled areas. It decays naturally over time offline — roughly 1 step per 48 hours disconnected. Stay below the radar.
Factions
Your actions accumulate standing with five factions (-2 Hostile to +2 Allied).
| Faction | Description | Default |
|---|---|---|
| The Underground | Safe houses, docs, fixers, off-grid vendors | Neutral |
| City Authority | State enforcement, surveillance apparatus | Suspicious |
| The Syndicate | Organized crime, black market upper tier | Neutral |
| Corporate Interests | Megacorp security and information assets | Suspicious |
| Free Agents | Informal collective of grid-exit people | Friendly |
View faction standings via status or journal notes.
Information Commands
status / sheet / stats — your character sheet
check <skill> [difficulty] — roll a skill check
roll <skill> — alias
journal — active jobs, contacts, recent events
journal events — full event log
journal notes — completed jobs and faction standings
contacts — your tracked NPC relationships
contact <name> — detail on a specific contact
who — currently connected players
Augmentations
Augmentations are chosen during character creation (Escaped Experiment backgrounds get one free). They provide passive attribute bonuses or special capabilities:
| Augmentation | Type | Effect |
|---|---|---|
| Neural Interface | Cybernetic | +1 INT; improved hacking |
| Reflex Booster | Cybernetic | +1 AGI; evasion and initiative |
| Subdermal Plating | Cybernetic | Reduce all physical damage by 1 |
| Enhanced Optics | Cybernetic | +1 PER; low-light vision, zoom |
| Hidden Compartment | Cybernetic | Concealed storage (bypasses standard scans) |
| Comms Implant | Cybernetic | Internal encrypted communicator |
| Enhanced Senses | Genetic | +1 PER; extended scent and hearing range |
| Adrenaline Regulation | Genetic | Manual control of adrenaline response |
| Pheromone Glands | Genetic | +1 PRE in close proximity |
| Toxin Immunity | Genetic | +2 END vs a chosen toxin class |
Quick Reference
look — describe current location
north / south / east / west / up / down — move
go <exit> — use a named exit
say <message> — speak aloud
pose <action> — emote
help — general help
help <command> — help for a specific command