"Non-violent" roguelike instructions

This describes a method for making roguelikes "non-violent". In reality, it is sometimes necessary or even appropriate to kill monsters. So these roguelikes are not purely non-violent, but instead give a value to the life of monsters.

I use as my example Angband, which is the roguelike I've played most, and also as it is based in the writings of Tolkien.

The Basic Hack

This is something even I could do, on my own. I think it could be done with any roguelike, fairly quickly, with just a little bit of programming skill.

1. Monsters no longer give XP when killed (find where that happens in the code and disable it).

2. Spending time in the dungeon does, greater at greater depths. There should be some kind of code for taking a turn. Every turn, have a chance to gain an XP point. Say something like
if(rand_int(avg_xp_wait) == 0)
  xp = xp + (xp_of(depth));

3. Not sure how to define xp_of(). One way is to go through Angband's monster description file and find the average XP yield of all killed monsters at a depth and use that. Call that avg_xp_at_depth[] and do something like
  /* read a file with the data derived previously */

4. Less sure how to define avg_xp_wait. Would take play-testing to find best game. For now (or forever?) let players set it at character creation time, and have it print in character dumps and high scores.


This is something that maybe I could do but which would take more work. It could be in addition to the basic hack above, or it could stand on its own, so that killing still gave experience, but with a cost... It does seem odd if killing doesn't give any experience. Perhaps keeping the avg_xp_wait part still makes sense from a realism point of view, in addition to getting XP from kills, because you are constantly practicing your weapons forms and thinking about how to evade, cast spells, pray, etc., and develop your physical stamina (HP) with exercise and rest in a challenging environment.

1. If a player kills a monster, they accumulate sorrow. There are two sorrow variables, apparent sorrow, and hidden sorrow. Apparent sorrow is what the player sees, both as a number and as messages ("You feel sad." "You wonder why you had to do that." "You feel grief." etc, depending on the level of sorrow incurred.)

2. If you don't process apparent sorrow, it turns into hidden sorrow. So if you have sorrow over a certain level for long enough (even a very low level, but more so at a high level), it produces a point (or more) of hidden sorrow. There is no visible stat for this, but very occasionally a message might show up hinting at what lies beneath. If hidden sorrow gets high enough, it increases the risk of a shutdown.

3. A "shutdown" takes the form of the player character losing it and immediately reading a scroll of Word of Recall or running up the stairs, refusing to leave town, and then turning into a town monster. Appropriate town monsters for this might be the town drunk or battle-scarred veteran, but new ones could be made up for this role. The @ that has now become a t will never go into the dungeon again and can never die, but the player has the option of ending the character by quitting. With some creativity, after that, one of the town monsters found in the monster description file could be the new unique "Rincewind the Glorious, town drunk" or "Elvaleth, haunted survivor" or "Moldwyrm, battle-scarred veteran"

4. Processing takes the form of passing time in the dungeon or town without being in line of sight of a monster. Time passes for the player as well as the character, so Resting and Running are disabled. (This is where having an adjustable avg_xp_wait is nice. Resting and Running reduce tedium, but so does having a lower average wait time for XP gains.) As time passes, apparent sorrow diminishes to nothing. Every turn apparent sorrow is 0, there's a certain chance hidden sorrow decrements. To get these rates and chances right requires tuning.

5. Each monster has a base XP reward given in the monster description file. The amount of sorrow delivered by killing a monster is determined by something like
((Morgoth's base XP) / (monster's base XP)) * coefficient
The coefficient is something like
(base coefficient) * (monster type coefficients)
The base coefficient is something to be tuned. The monster type coefficients are such that killing animals makes you have more sorrow, killing monsters that can't hurt you gives you more sorrow, killing evil monsters gives you less, and so on.

6. You can see from this that it is hugely punitive to kill monsters at low levels, and also that giant lice and rats become a special problem (probably you have to abandon some levels because of them). Breeding animals might have to be retuned.

7. You still get a little sorrow for killing Morgoth, but the message you get is that "You are at peace". And after you kill Morgoth, all the monsters don't attack anymore, except for molds, mushrooms, animals (I guess maybe including Xorns and Zephyr hounds, things like that) (which wouldn't get the memo that the Dark Lord was dead). You can no longer incur apparent sorrow, and can only kill monsters that would have incurred sorrow below a certain threshold. (May need tuning.) You can't attack monsters that can't attack you.

8. There's a third sorrow, deepest sorrow. Deepest sorrow is hidden and cumulative and increments proportional to both apparent sorrow and hidden sorrow. It only starts decrementing after Morgoth dies. Deepest sorrow doesn't shut you down, but the player has to process their deepest sorrow until it's all gone before they can complete the game. Once they are done, they can continue to explore, or retire.