Moria Release Highlights: 1981-Present
February 2017 marks 30 years of Umoria development, and more than 35 years since the Moria development started, and to celebrate I've spent a little time doing some Moria archeology!
Releases Timeline
This timeline consists of a list for when the different versions of Moria/Umoria were released. For those where we still have the source code you'll find a link to the archive -- unfortunately in the intervening years the source code for most of the Moria releases has been lost.
Moria (VMS BASIC)
Unreleased Moria BETA 0.x versions of the game
- 1981 (end of year) — Robert A. Koeneke begins work on the Moria game
- 1983-03-25 - possibly the last VMS BASIC version
Moria (VMS Pascal)
- 1983 (Summer) - Koeneke starts work on the VMS Pascal rewrite
- 1984-05-01 -
v1.0
- 1984-07-10 -
v2.0
- 1984-11-20 -
v3.0
- 1985-01-20 -
v4.0
- 1985-03-xx -
v4.43
(no earlier than this date) - 1986 (Spring) -
v4.5
- Possibly the last version released by Koeneke - 1986-11-06 -
v4.8
(date needs confirming)
Information about VMS Moria is sparse, and what we do have is a somewhat contradictory, so the above dates may not be completely correct. Please see the history page for more information.
Umoria
- 1987-02 — James E. Wilson starts work on Umoria.
- 1987-04-30 —
v4.81
- 1987-05-03 —
v4.82
- 1987-05-14 —
v4.83
- 1987-09-16 —
v4.84
- 1987-10-26 —
v4.85
- 1987-11-05 —
v4.85
source code posted to the comp.sources.games Usernet group. - 1988-05-04 —
v4.86
- 1988-05-26 —
v4.87
- 1989-02-26 —
v5.0.0
- 1990-01-12 —
v5.0.10
- 1990-01-15 —
v5.0.11
- 1990-01-20 —
v5.0.12
- 1990-01-24 —
v5.0.13
- 1990-02-10 —
v5.0.14
- 1990-02-11 —
v5.0.15
- 1990-02-14 —
v5.0.16
- 1990-02-22 —
v5.0.17
- 1990-02-27 —
v5.1.0
(on rec.games.moria J.E.W said this is Alpha source code) - 1990-03-04 —
v5.1.1
(J.E.W said he considers this as "alpha-level" source code) - 1990-03-25 —
v5.1.2
- 1990-03-28 —
v5.1.3
- 1990-04-20 —
v5.1.4
- 1990-05-07 —
v5.1.5
- 1990-05-09 —
v5.2.0
- 1990-05-21 —
v5.2.1
- 1990-06-10 —
v5.2.2
- 1991-03-25 —
v5.3.0
- 1991-03-30 —
v5.3.1
- 1991-10-12 —
v5.4.0
- 1992-08-09 —
v5.4.1
- 1992-08-13 —
v5.5.0
- 1994-06-25 —
v5.5.1
- 1994-07-21 —
v5.5.2
- 2000-05-28 —
v5.5.2-1
- 2000-10-14 —
v5.5.2-2
- 2001-01-06 —
v5.5.2-3
- 2001-07-09 —
v5.5.2-4
- 2001-10-24 —
v5.5.2-5
- 2008-10-13 —
v5.6.0
(GPL-3.0 re-license) - 2016-11-27 —
v5.7.0
(Restoration Project) - 2021-02-27 —
Latest Release
Development Highlights
The original CHANGELOG contains a great deal of interesting information about the game's development, however, at over 4000 lines it can make for very dry reading. Therefore I've created this highlights section covering all the changes from over the last thirty years of Umoria development up until the present day, which covers v4.81 through v5.7
The following highlights contain what I consider to be the more interesting changes and updates to the game. It omits all bug fixes, UI tweaks, compiler information, and any other non-gameplay changes.
4.81 (1987-4-30)
- Enchant Armor Scroll
- Recharge Spell
- rogue_like key binding option
- Monster 'o' Ogre Magi casting unknown spells
4.83 (1987-5-14)
- Added 'drools' and 'insults' messages.
4.85 (1987-10-26)
First public release of Umoria!
- Changed version number to 4.85 for distribution purposes.
- Started mailing to
comp.sources.games
4.85 (1988-2-19)
- Add re-rolling of characters
- Can now enchant Boots with Enchant Armor scroll
4.86 (1988-5-4)
- Bashing effects (stunned) not cumulative
- When player overeats, he is temporarily slowed
- Turn over store contents every 1000 turns, if player not on town level
4.87 (1988-5-26)
- When spell casters lose EXP, they lose spells too quickly. Lose spell when:
- not high enough level
- num spells more than INT allows
- Should lose spells when lose INT/WIS
5.0.0 (1989-2-26)
(The following changes were made over the whole year. Order has been maintained.)
- Merged the umoria and PC-Moria sources
- Grey Snakes, renamed one to Green
- Give monsters a chance to recover from Bash, depends on square of monster level
- Give monsters a chance to ignore bash, function of hitpoints and level
- Giant Red Ant Lion, not hurt by fire, move and attack normally
- Restore mana potion made more valuable (35 -> 350)
- Staff of speed value increased (800 -> 1000)
- Ring of sustain charisma level changed (7 -> 44)
- Ring of stupidity level decreased (20 -> 7)
- Potion of gain strength value increased (200 -> 300)
- Halfling Clan Elder had 0% chance, gave warrior higher base to hit chance than paladin
- Crown of The Magi, now has RL instead of See Invisible
- Allow searching while blind, decrease chance of success if blind or have no light
- creature.c: in get_moves, change 1.732 to 2, makes it faster
- Can no longer circle monsters by moving in a diamond shape
- Bugfixes from CJS (Bruce Moria)
- Merging changes from Christopher J Stuart...zillions of changes
- Door bashing different and noisy too!
- Creatures only eat lower level creatures
- Crowns higher chance of magic
- Monster dist changed to increase chance of higher level monsters
- Damage added to bows
- Use up mana if prayer fails.
- Double regen if searching
- Damage if really hungry
- Increase treasure in streamers
- Add todam for using bow/arrow
- Jamdoor p1 values changed successive spikes have smaller effect
- Add Bruce Moria comment, new options, read environment variables, etc.
- Merged Xenix diffs and Atari ST diffs
- Potion of Sleep no longer cures blindness
- Food/potion/scroll/staff/wand objects do not give experience when used
- Replaced LOS code with an integer arithmetic version by JNH (Joseph Hall)
- Moria no longer users floating point numbers!
- Make flasks of oil vulnerable to frost and fire, like potions
- New "look" code from Bruce Moria, look in arcs so that can see anything on the screen
- Increased store turn around from 4 (avg 2.5) to 9 (avg 5)
- Made Spirit Troll into 'G', made invisible, pickup/carry's obj, added drain wisdom attack, added drain intelligence attack to green glutton ghost
- Make Priests harder, gave negative str adjust, inc expfact from 10% to 20%
- All wands now have limits on range
- Doubled Balrog eye sight from 20->40, evil iggy from 20->30
- Change Corrosive Gases to Poison Gases
- Green Glutton Ghost no longer drains INT
- Made Ring of WOE decrease wisdom, to balance ring of stupidity
- Add storenice feature by Dan Berstein: if (good bargain > 3 * bad bagains + 20) then always get final price in that store
- Decrease search chances if hallucinating, decrease disarm chances if hallucinating, look fails completely
- Decrease Priestly HP bonus from 3 to 2
- Allow Sling Ammo to be enchanted
- For "type 2" rooms, make them dark below level 25, not 30
- When close a door, print "Something" instead of monster name if the monster blocking the door is invisible
- Make the digging chance for non digging weapons equal to their max damage + tohit bonus instead of proportional to weight, the old code made lances better for digging than shovels
- Spirit Troll too hard to hit when can't be seen, lower AC 56->40
- Change stealth code, instead of randint(10) < stl, it now cubes randint(64) and compares against 1 << (17 - stl), the result is that a change of one in stl always decreases monster notice chance by 80%, and perfect stealth is impossible
5.0.8 (1989-12-5)
- Changed stealth code, amount monster woken by from 100 to 125 (used to be 75 before 12/4)
- More monster fixes from DJG:
- Change (SM) to (SA), slay monster to slay animal
- Change 'unnatural creature' to 'natural creature'
- Changed stealth code again, if resting/paralyzed monster has a chance of noticing once every 50 turns instead of never like before, change 64 to 1024, and 17 to 29 for a better distribution
- Do not put character off balance if bash is successful
- In dispel_creature() set EVIL/UNDEAD flag if creature hurt
- In turn_undead() set UNDEAD if creature hurt
- In drain_life() set CD_UNDEAD if creature not hurt
- Stealth value changed again from 125 to 100
- Change Rogue base stealth from 4 to 5, let wizard set stealth to 18
- White Worm Mass sleep value from 10 to 1
- Crystal Ooze 60 -> 1
- Change ghe way spell learning works
- New command 'G'ain magic spells
- New field py.flags.new_spells number of spells can learn
- Remove Potion of Learning as it is no longer useful
5.0.9 (1990-1-1)
- In mon_cast_spell(), must update_mon() to light monsters before they cast a spell
- If no shovel/pick, divide total tabil chance by two
- Change eye-sight and sleep values for consistency, as noted by David Grabiner
- When monster bashes down a door, call disturb() to halt resting
- Change chance for ego weapons/missiles to 3*special/2 instead of just special, needed because treasure distribution change has made ego weapons not as common as before
- Let nether wraith phase
- Set Black/Red/Multi ancient dragons to a sleep value of 700
- When step back after setting off a falling rock trap, check to see if have stepped back onto another trap
5.0.10 (1990-1-12)
- Apply William Setzer's
objdes()
diffs, 500K patch file
5.0.11 (1990-1-15)
- Novice Rogue now evil like other rogues
5.0.12 (1990-1-20)
- If py.misc.mana == 0, this is for characters who did not know any spells before the 'G' command, can't gain spells if blind/no light/confused
- Moving into a wall is no longer a free turn
- Priests no longer need book before can learn spells from it, mages still need the books
- Made
scribe_object()
a free turn again - Creeping Coins hit instead of bite, and touch instead of breath
5.0.13 (1990-1-24)
- Give player attack on creature if it is in the way
- Increase effect of
aggravate_monster
attack from range of 5 to 20
5.0.14 (1990-2-10)
- In calc_spell() spells are now remembered in the order that they were learned, and forgotten in the reverse order learned
- Merged in Mac sources
5.0.15 (1990-2-11)
- Merged in VMS sources
5.0.16 (1990-2-14)
- Add Dan Bernstein's name to credits
- Make moving into walls a free turn again, but player can not attack invisible creatures in walls by moving into wall (hence preventing him from using 6 free turns to search for invis creature), must tunnel into wall instead, which always takes a turn
tunnel()
now checks confusion, and tries to tunnel in random direction if confused- Clone monster wands changed from level 2 to level 15, makes them recharge less, max 6 new charges instead of max 18 new charges
- Change stinking cloud from 16 to 12 damage as it was too close to lightning bolt at 18, reduce mana for mage/ranger from 4/6 to 3/5
- Add in diffs to get MSDOS version working again, add files from binary PC-Moria distribution
- Change
knowdamage()
so that higher damage attacks take longer to learn than lower damage attacks - Jellies and Molds no longer have treasure
- Move Crystal Ooze from level 31 to level 40, to make raising Crystal Oozes for treasure much more dangerous
5.0.17 (1990-2-26)
- Merged in Atari ST diffs from Stephen A. Jacobs
- Creeping Coins always carry gold now, 1d2 for copper, 1d2+60 for silver, and 1d2+90 for gold
- Change non-weight limit from 57 to 60
5.1.0 (1990-2-27)
- When bash open door, only break it 50% of the time to be consistent with code in creature.c
5.1.1 (1990-3-4)
- Merged more Mac diffs, Mac version should compile now
- Change chance of failure from randint((num+40)/10)=1 to randint((num+40-i_ptr->p1-i_ptr->level)/10)=1 to make it harder to recharge high level and highlly charged wands
- Earth elementals/spirits can now move through walls
- For earth elementals, increase their hit points
- Cloning a monster will wake it up now
5.1.2 (1990-3-25)
- Merge Wizard/God mode, God mode nolonger exists
monster_death()
, increase tries from 10 to 20 so that treasure will be created more often
5.1.3 (1990-3-28)
- Multiply damage for missile by 2/3/4 instead of adding when use proper weapons, makes missiles much more useful
- Penalty for attacking invisible creatures modified, was minus lev * BTH_LEV_ADJ-1, now minus lev * BTH_LEV_ADJ/2, hence warriors have less penalty than mages/priests
treasure.c
: delete one ring of adornment and one amulet of adornment, add arrows at level 15, and bolts at level 25- Change missile cost to 5*pluses instead of 10*pluses, since missiles appear in groups of 20 or so, this is comparable to normal weapons which are 100*pluses
- Teleport monster will wake it up
- Wall building now heals Xorns in addition to earth elementals
- Drain life damage increased from 50 to 75, to match other 50th level wand damages
- Let monsters eat other monsters of equal exp, helps prevent using oozes as treasure factories
- Sleep values too hard to learn, change test from r_wake > sleep to (r_wake*r_wake)>sleep
5.1.4 (1990-4-20)
- Moved see invisible from slay animal to slay undead weapons
- Updated documentation to reflect changes from 4.873 to 5.1, added section which explains crowns, added some sections from Chris J Stuart's BRUCE Moria's documentation
5.1.5 (1990-5-7)
- Ogre Mage is now evil
- Reduce plus to dam for slay dragon arrows from +10 to +3, no longer need such high damages because ptodam is multiplied now when used with right weapon
5.2.0 (1990-5-9)
- Change the version number to 5.2.0
5.2.1 (1990-5-31)
- Released umoria 5.2.1
5.2.2 (1990-6-10)
- Fixes for VMS, define USG for VMS, merge in fixes from Todd Pierzina
- Added AMIGA support
- Merge in more VMS patches
- New feature: '*' rest until reach max mana and hp
- Make spikes wield-able objects, fight with them like missile weapons, i.e. they disappear after use
5.2.2 (1990-10-8)
- Released 5.2.2 sources
5.2.2 (1990-10-30)
- Rings of Searching cost was 100*p1, amulet of searching cost 20*p1, change both to 50*p1
- Slow monster and confuse monster modified to wake up monster if the attacks fails
- Don't create a trap under the player, to prevent strange occurrences such as ending up under a falling rock
- When wielding heavy weapon, make tunneling more difficult
- Change rogue start inv from Soft Armor to Cloak, so that it is the same as the other non-Warrior classes
5.2.2 (1991-1-4)
- Grave Wight, no longer has confusion spell, no other wight/wraith has it
- Creatures which are repelled should not be confused because they did not hit the player
- Apply Atari ST/GCC patches from Scott Kolodzieski.
- Updated versions of Amiga source files from Corey Gehman
- Complete rewrite of the Atari ST curses code by Hildo Biersma
- Add Mac THINK C support
5.3 (1991-3-25)
- Changed version numbers to 5.3
5.3.1 (1991-3-30)
- Merge in changes from Ralph Waters, which are needed to compile the sources under VMS and IBM-PC/Turbo C.
- Remove good armor items from armory, to force players to search for them in the dungeons, hard leather boots, iron helm, partial plate, full plate
- Always create dragons sleeping here, to give the player a sporting chance
5.3.1 (1991-4-27)
- Give moves to monsters trapped in rock, so that they will die/dig out immediately, mon_move() if a monster in rock is already dead, don't kill it again
- Novice Priest, change sleep from 10 to 5 to match other novice 'p'
5.4.0 (1991-10-12)
- Many bug fixes
5.4.0 (1992-7-16)
(Maintenance taken over by David Grabiner)
enchant()
, chance of failure is now (plusses/limit), with very slight chance of success over limit- When enchanting melee weapons to damage, set limit to weapon's maximum damage, otherwise use 10 to give behavior similar to old method
magic_treasure()
, make standard deviation of damage bonus on a melee weapon proportional to weapon's maximum damage; these changes mean that daggers can no longer become powerful weapons- The Zweihander has now become a great weapon, value increased from 1000 to 1500
- Give everyone a slight chance to use difficult wands and staffs, otherwise a warrior will never be able to use many items
- noneedtobargain(), changed to sliding scale, (good-3*bad) must be more than 5 + (price/50) to skip haggling, so that haggling for cheap items is over quickly, but can still eventually skip haggle for all items
- updatebargain(), now update for all items worth >9 gold, instead of just 10-999, since it is now possible to skip haggling for more valuable items as well
- Unsuccessful bash takes a turn; otherwise, you can attempt to bash in different directions while confused or to locate invisible monsters; eliminate variable no_bash
5.4.1 (1992-8-9)
- Bugfixes and minor game balance changes
5.5.0 (1992-8-13)
- Release umoria 5.5.0
5.5.0 (1994-6-7)
- Included changes from Andrew Chernov for 386BSD support
- Included changes from Berthold Gunreben for HP-UX support
- Added patches for HP Apollo, which doesn't allow multiple processes to use the same file
- Added code from Harry Johnston which allows use of 0-9 to specify an item with the corresponding inscription
- Set AC bonus on cursed weapon, hit/dam bonuses on cursed armor to zero (in case HA/DF/gauntlets of slaying had bonus)
- Reworked monster confusion: monster's confused value now gives duration, turn_undead has guaranteed duration equal to player's level, other confusion random
- Undead which have been turned will flee rather than moving randomly, attack only if cornered
- Allow monsters to resist attacks if they have no breath weapon but use the attack type (so fire giants resist fire)
- noneedtobargain(), change scale again, (good-3*bad-5) must be positive and its square must be at least price/50, this allows high-level characters to become good bargainers for expensive items
- Strengthened Holy Word
- Reduced failure chance for Holy Word
5.5.1 (1994-6-25)
- Include changes from Ronald Cook for Lattice C support on Amiga
- Include changes from Brian Johnson for Linux support
- Include changes from Eric Bazin to merge monster memories
- Allow thieves to pick up objects on the floor
- Fixed many treasure inconsistencies, mostly prices and names
- magic_treasure(), fixed values of SU and SA, which weren't changed when see invisible was moved from SA to SU; also changed magical bonuses for these weapons
- Don't clear out haggling record if player is thrown out (it might be worse than zero), just penalize as for bad bargain
5.5.2 (1994-7-21)
- Fixed a few more inconsistencies with treasure items
5.6.0 (2008-10-13)
- Umoria released as Free Software under the
GPL-3.0
license.
5.7.0 (2016-11-27)
(Umoria Restoration Project)
- Windows, macOS, and Linux support.
- Renames binary from
moria
toumoria
, save file togame.sav
, and scores toscores.dat
. - Lots of code refactoring, standardization, modernization, and general clean up.
- Reorganize all old document files; create a historical directory.
- Remove support for discontinued computers and OS: Atari ST, Amiga, MS DOS, "Classic" Mac OS (pre OS X), VMS, System III, etc., etc.
You can view all the latest changes in the Umoria source code on Github.com