CORRUPTMIND is a Lovecraftian text-based multiplayer hardcore RPG played entirely over SSH. There is no client to install - your terminal is your only game client.
/help for
commands.
To create an account, use the signup form on the website. You will choose a username, provide an email address, and include a short note to prove that you are human. The note will be visible only to administrators reviewing your request.
New accounts start in a pending state. Depending on server configuration, activation is completed by clicking a verification link sent to your email, or by administrator approval. The verification link expires after 24 hours, after which the unverified account is removed.
Once activated, you can log in via SSH using the password generated during signup, or by registering an SSH key (see below).
SSH keys let you log in without typing a password every time. This is both more convenient and more secure than password authentication.
authorized_keys format (e.g., the contents of
~/.ssh/id_ed25519.pub).
ssh-ed25519, ssh-rsa,
ecdsa-sha2-nistp256/384/521.
Once registered, SSH will use your key automatically. See your
profile page for the connection command.
If your private key is not in a default location, specify it with
-i ~/.ssh/my_key.
Connect to the game via SSH using your approved account credentials. The connection command is on your profile page.
The game starts in Move mode. Use the following keys to navigate the world:
WASD follows conventional game movement. HJKL follows Vim conventions (h=left, j=down, k=up, l=right). Both key sets work identically.
Movement has a short cooldown (250ms). You cannot move while in combat.
The world is divided into biomes, each with its own terrain symbol on the map:
.) - Open, passable
terrain. The most common ground.
♣) - Dense
woodland. Grants doubled health regeneration.
~) - Dry, passable
terrain with no special effects.
^) - Impassable. These
peaks cannot be crossed.
The interface has two primary modes: Move mode (for navigation) and Command mode (for chat and slash commands).
/ pre-filled
On first login - and after every death - you choose a
class, then allocate
4 bonus points across six ability scores. All stats
start at 10, and the modifier for any stat is
(score − 10) / 2 (so 10 = +0, 12 = +1, 14 = +2).
These points are permanent for that character.
| Stat | Modifier Affects |
|---|---|
| STR (Strength) | Weapon damage with strength-scaled heavy weapons (greatswords, axes, clubs, etc.). |
| DEX (Dexterity) | Effective AC, initiative, and flee checks - plus weapon damage with dexterity-scaled light/ranged weapons (bows, daggers, thrown blades, etc.). |
| CON (Constitution) |
Idle HP regeneration per tick and HP gained on level-up -
higher CON means you heal faster and gain more HP each level.
Regen also scales with level (min(level÷5, floor(√level)) + CON modifier).
|
| INT (Intelligence) |
Defend action (/defend grants temporary AC bonus of 2 + INT modifier) -
plus weapon damage with intelligence-scaled magical weapons (staves, wands, focus rods, etc.).
|
| WIS (Wisdom) | Saving throws against tagged monster attacks - plus weapon damage with wisdom-scaled sacred weapons (psalms, litanies, relics, etc.). |
| CHA (Charisma) |
Bonus XP on kills - after standard XP is calculated,
CHA modifier × monster level is added as
bonus XP.
|
Navigate the allocation modal using W/K (up) and S/J (down). Press D/L to add a point and A/H to remove one. You must distribute all 4 points before entering the game. Stats cannot be changed after allocation - you must create a new character to reallocate them.
On first login - and after every death - you must choose a class before allocating stats. Your class determines which ability scores improve automatically as you level up. The choice is permanent for that character; you must create a new character to choose again.
| Class | Major Stat (+2 per 5 levels) | Minor Stat (+1 per 5 levels) | Role |
|---|---|---|---|
| Bulwark | STR | DEX | An unyielding presence against the tide of horrors. Strength fuels devastating strikes; dexterity improves evasion and initiative. |
| Voidweaver | INT | WIS | One who reaches into the emptiness and pulls out power. Intelligence enhances defensive insight; wisdom guards against supernatural attacks. |
| Stalker | DEX | STR | A swift hunter whose dexterity ensures evasion, while strength guarantees lethal damage. |
| Harbinger | WIS | INT | Wisdom and intelligence form a bulwark against the dangers of the outer reaches. |
Every 5 levels, your class grants +2 to your major stat and +1 to your minor stat. These bonuses are spread across individual level-ups (at most +1 per level-up) so that progression feels steady rather than burst. The cycle begins at level 2 and repeats every 5 levels.
| Level-Up | Bonus |
|---|---|
| 2, 7, 12, 17, 22, 27, 32, 37 | +1 Major stat |
| 3, 8, 13, 18, 23, 28, 33, 38 | +1 Minor stat |
| 4, 9, 14, 19, 24, 29, 34, 39 | No class bonus |
| 5, 10, 15, 20, 25, 30, 35, 40 | +1 Major stat |
| 6, 11, 16, 21, 26, 31, 36 | No class bonus |
By level 5, every class has gained exactly +2 major and +1 minor. This pattern repeats at levels 10, 15, 20, and so on, up to the level cap of 40. Class stat bonuses are applied automatically on level-up and are shown in the level-up notification.
When you are out of combat and below maximum HP, your body mends on a timed interval (every 10 seconds). The rate depends on your Constitution and your surroundings.
Base healing per tick is max(1, min(level÷5, floor(√level)) + CON modifier), then
multiplied by a location bonus. At low levels the level÷5 term
dominates; at higher levels the square-root term slows growth so that
combat damage remains impactful.
| Location | Multiplier | Effect |
|---|---|---|
| Rest Point (Campfire) | x3 | The campfire at the origin offers the highest recovery rate. |
| Forest | x2 | Forest biome grants doubled health regeneration. |
| Other Biomes | x1 | Plains, desert, and other terrain offer no recovery bonus. |
Bonuses do not stack - the campfire bonus takes priority over the forest bonus.
Defeating monsters awards XP, split evenly among active combat participants. When you accumulate enough, you level up automatically.
XP required per level follows a polynomial curve:
floor(100 × level1.5). Each level costs
more than the last.
| Level | XP Cost | Cumulative Total |
|---|---|---|
| 1 → 2 | 100 | 100 |
| 2 → 3 | 282 | 382 |
| 3 → 4 | 519 | 901 |
| 4 → 5 | 800 | 1,701 |
| 5 → 6 | 1,118 | 2,819 |
| 6 → 7 | 1,469 | 4,288 |
| 7 → 8 | 1,852 | 6,140 |
| 8 → 9 | 2,262 | 8,402 |
| 9 → 10 | 2,700 | 11,102 |
| 10 → 11 | 3,162 | 14,264 |
| 11 → 12 | 3,648 | 17,912 |
| 12 → 13 | 4,156 | 22,068 |
| 13 → 14 | 4,687 | 26,755 |
| 14 → 15 | 5,238 | 31,993 |
| 15 → 16 | 5,809 | 37,802 |
| 16 → 17 | 6,400 | 44,202 |
| 17 → 18 | 7,009 | 51,211 |
| 18 → 19 | 7,636 | 58,847 |
| 19 → 20 | 8,281 | 67,128 |
Each level-up grants:
max(1, 4d3 + CON modifier) added to MaxHP (and current
HP).
| Level Range | Weapon Dice |
|---|---|
| 1–4 | 1d8 |
| 5–8 | 1d10 |
| 9–12 | 1d12 |
| 13–16 | 2d6 |
| 17–20 | 2d8 |
| 21–24 | 2d10 |
| 25–28 | 3d8 |
| 29–32 | 3d10 |
| 33–36 | 4d8 |
| 37+ | 4d10 |
The maximum level is 40. XP continues accumulating at cap for leaderboard scoring purposes, but no further level-ups occur.
Monster XP is reduced when the monster is below your level: 10% less per level gap, reaching 0 XP at a gap of 10+ levels. Kills still count and loot still drops regardless.
After level-diff scaling is applied,
CHA modifier × monster level is added as bonus XP.
A character with 14 CHA (+2 modifier) killing a level 5 monster earns
+10 bonus XP. Low CHA does not penalize - it simply grants no
bonus.
Type commands in Command mode (press
i or / to
enter it). Commands start with /.
| Command | Aliases | Description |
|---|---|---|
/help |
Show available commands and their aliases | |
/me <message> |
/emote |
Send an emote to players on your tile |
/look |
Observe your surroundings, including corpses | |
/inspect |
Inspect current tile or a corpse for details | |
/attack |
/a |
Attack the monster in your current combat |
/autoattack |
/aa |
Toggle auto-attack: automatically attacks each turn after a 2-second countdown (Esc to cancel). Mutually exclusive with auto-defend. |
/autodefend |
/ad |
Toggle auto-defend: automatically defends each turn after a 2-second countdown (Esc to cancel). Mutually exclusive with auto-attack. |
/defend |
/d |
Take a defensive stance (+2 AC + INT modifier, minimum +1, until next turn) |
/flee |
/run |
Attempt to escape combat (DEX roll) |
/combat |
Show current combat status and turn order | |
/character |
/char |
Show your stats, HP, AC, level, XP, and kills |
/equipment |
/eq |
List all equipped items and their stat bonuses |
/loot |
Claim loot from a corpse at your location | |
/need |
Need roll d100 for pending loot (higher priority than greed) | |
/greed |
Greed roll d100 for pending loot (lower priority than need) | |
/pass |
Pass on pending loot | |
/scrap |
Scrap loot at your location for scrap currency | |
/reforge <slot> |
Re-roll stats on an equipped item (costs scrap) | |
/dice <NdS[+/-M]> |
Roll dice for roleplaying (e.g., /dice 2d6 or /dice 1d20+3) | |
/leaderboard |
/lb |
View death scores: top, recent, or
me
|
/sshkeys |
List your registered SSH keys |
Any text that does not start with / is sent as chat to
players on your tile.
Combat begins the moment you step onto a tile occupied by a monster, or when one spawns beneath your feet. While in combat, you cannot move - you fight, you flee, or you die.
/attack, /defend, or
/flee. Use /autoattack to attack
automatically each turn after a 2-second delay, or
/autodefend to defend automatically.
/defend grants a temporary AC bonus of
2 + INT modifier (minimum +1) until your next turn. A
character with high Intelligence reads the enemy's pattern and
positions more effectively.
/flee attempt provokes an opportunity attack
from the monster.
Some monsters possess supernatural capabilities beyond mere physical attack - mind-altering whispers, dimensional rifts, temporal distortions. When one of these tagged creatures (psychological, dimensional, or time) hits you, a WIS saving throw is triggered:
d20 + WIS modifier + proficiency bonus
8 + monster agility modifier + proficiency bonus
The save is rolled automatically when a tagged monster lands a hit. No action is required - your Wisdom stat and proficiency determine your resistance. Monsters without these special tags deal normal damage with no save.
Combat state is fully database-backed. If you disconnect mid-fight, you can reconnect and resume from where you left off.
When a monster is defeated, it may drop loot. Drops are probabilistic and vary by creature; not every kill yields loot.
/loot to claim it.
/need,
/greed, or /pass. Need rolls always
beat greed rolls. Among need rollers, the highest d100 wins. If
nobody needs the item, greed rollers compete by d100. Ties are
re-rolled automatically. Missing responses are treated as
/pass after a timeout.
/loot, including bystanders who didn't participate in
the fight.
Defeated monsters remain as visible corpses for five minutes. Use
/look to see nearby corpses and /inspect to
examine a corpse for remaining loot.
/loot on the corpse's tile to claim the item.
/scrap to destroy unclaimed loot on your tile
without equipping it, converting it directly into scrap.
/character output. It resets on death.
Not all items are created equal. When loot drops, it carries two layers of rarity: the item's fixture rarity (how powerful the base item is) and a randomly rolled drop rarity (how lucky the roll was). The rarer of the two determines the displayed rarity tag and color.
Every loot drop rolls a random drop rarity, which may upgrade the displayed tag above the item's base fixture rarity:
| Drop Rarity | Chance | Effect on Item Stats |
|---|---|---|
| Standard | 55% | Base fixture stats unchanged |
| Enhanced | 25% | +1 to one existing stat; displays at least Uncommon |
| Superior | 14% | +1 to one existing stat and +1 to one new stat, armor slots get +1 AC; displays at least Rare |
| Exalted | 6% | Budget of 3–4 bonus points across stats, armor slots get +1 AC; displays at least Epic |
Each item template has a base fixture rarity that determines its starting stats and how common it is in loot tables:
| Fixture Rarity | Description |
|---|---|
| Common | Baseline items found throughout the world |
| Uncommon | Slightly better base versions (also produced by Enhanced drops on Common items) |
| Rare | Stronger base items with more stat budget |
| Epic | Powerful items with significant stat bonuses |
| Legendary | The most powerful items in the game |
A drop's displayed rarity is always at least as high as the item's fixture rarity. A Standard roll on a Legendary item displays as Legendary. An Exalted roll on a Common item displays as Epic. Drop rarity can only upgrade the display, never downgrade it.
Weapons display two additional properties that are critical for comparing them: their scaling stat (STR, DEX, INT, or WIS) and their damage dice (e.g., 2d8). The scaling stat determines which of your ability modifiers is added to weapon damage, so a weapon that matches your class's major stat is far more effective for your build. The damage dice override replaces your level-based default dice when present.
Once you have scrap, you can spend it to re-roll an equipped item's
stat bonuses with /reforge <slot>. The cost in scrap
equals the item's current gear score. Reforging is blocked while you
are in combat.
Below are examples showing how rarity affects the same base item type. Stats are generated using the game's live rarity logic.
Armor-like slots (head, body, hands, feet) always have a base AC bonus. This AC is inherent to the slot type and does not consume a rarity bonus slot. Rare and Epic items on armor slots receive an additional +1 AC on top of their normal rarity bonuses.
Weapon and jewelry items never provide AC. Trinkets may have AC only when the item's lore is armor-like (e.g., a protective ward).
Item names are color-coded by effective rarity in the TUI and loot messages:
You carry seven equipment slots on your person - no more, no less. There is no backpack or stash. Only equipped items persist - upon death, everything is lost.
2d8). If absent, your level determines the dice instead.
Equipping a new item into an occupied slot destroys the old item permanently. The equip confirmation sidebar shows a side-by-side comparison before you decide - study it carefully. There is no unequip command; items are only removed by replacement or by death.
Permanent death strips all equipment. You return to the origin with no gear.
Every equipped item has a gear score based on its tier (higher-tier items from deeper regions score more), its displayed rarity (common through legendary), and the total of its stat bonuses. Your Gear Score is the sum of scores for all equipped items.
Gear score is shown on your character panel (GS), the
/character and /equipment commands, and when
other players inspect you. It also contributes to your total
leaderboard score on death - better gear means a higher final
score.
The world of CORRUPTMIND is procedurally generated and stretches without end in every direction. Biomes, creatures, and terrain are determined algorithmically from your coordinates - the same location always looks the same, no matter when you visit. Biomes and difficulty scale endlessly in every direction.
The world grows more hostile the further you travel from the origin
(0,0). Distance is measured by Manhattan distance (|x| + |y|), and creatures in the outer reaches scale accordingly.
| Zone | Distance | Monster Tiers |
|---|---|---|
| The Safe Zone | 0 – 14 | Level 1 only. No dangerous spawns. |
| The Stirring | 15 – 60 | Tier 1 (Levels 1–5) |
| The Creeping | 61 – 100 | Tier 2 (Levels 6–10) |
| The Manifesting | 101 – 150 | Tier 3 (Levels 11–15) |
| The Unraveling | 151+ | Tier 4 (Levels 16–20) |
Each base monster has a rare variant with boosted stats and better loot, identifiable by its distinct name. These These rare variants spawn less frequently but drop better loot.
Monster scaling mode (linear or exponential) is server-configured. The further you go, the harder things get - but the loot improves to match.
CORRUPTMIND is a shared world. Other players share the same world and are visible on the minimap.
/need, /greed, and /pass
system (Need-before-Greed) rather than
auto-assignment.
In Command mode, any text that does not begin with / is
sent as local chat, visible only to players on your tile.
Chat is local to your current tile.
/me <message> - Send an emote (e.g.,
/me peers into the darkness).
/ without
triggering a command, prefix it with // (e.g., typing
//shrug sends /shrug as chat).
Sanity is a secondary resource that tracks your mental resilience as you face the horrors of the abyss.
Your sanity is shown as a percentage bar in the sidebar. As it drops, your mind crosses four tiers:
max(1, monster level / 2).d6 + monster level), halved on a successful WIS save./meditate at certain landmarks restores 25% max sanity. Landmarks are marked in the world and have a per-location cooldown./mind (alias /sanity) shows your current sanity, threshold, and active boons/banes.As you delve deeper, you may acquire Boons (beneficial traits) and Banes (curses). These modify your combat, movement, and sanity.
When your HP reaches zero, your character dies permanently. There is no resurrection - you start over at level 1 with no equipment.
/leaderboard. Only your
best run is preserved - weaker deaths do not overwrite a
higher score.
The leaderboard tracks both alive and dead players. Alive players' scores update in real time as they gain XP, kill monsters, explore further, or equip better gear. Each entry is marked with a status icon:
A single merged top 10 list shows the highest scores regardless of alive/dead status.
Distance is the furthest Manhattan distance you reached during that life, not merely where you died. Gear Score is the sum of your equipped items' gear scores. The same formula applies to both alive and dead entries.
/leaderboard top - Top 10 all-time scores (alive
and dead)
/leaderboard recent - 10 most recent deaths
/leaderboard me - Your personal death history
To exit the game and close your SSH session, press Ctrl+C.
Your character's state is fully persisted in the database. You can safely reconnect later and resume from where you left off - your position, stats, equipment, and even mid-combat state are preserved.