Tracking all changes since the 5.6.0 release.
- Fix out-of-bounds compile error in
/src/game_save.cpp(Line 810).
Fix incorrect license.
Umoria 5.6 was released under a GPL-3.0-or-later license but I had accidentally changed the license to GPL-2.0 in a commit from the very early days of the project: https://github.com/dungeons-of-moria/umoria/commit/df109c5f55f6792dfd79055524728206f3a05247
The license has been corrected to GPL-3.0-or-later.
- Refactor keyboard input code.
- Refactor ui_inventory.
- Revert to Moria keys as default.
- Minor configuration update to support compiling on Visual Studio 2019.
- Calculate throw distance/position correctly. Introduced with commit #fc1d6d.
- Correctly stack inventory items (arrows/bolts). Introduced with commit #195c9a6.
- Bugfix in
getAndCastMagicSpell(): losing mana when cancelling a mage spell
- Bugfix in
pray(): should loose mana when failing to recite a prayer. - Add
Press ? for helpto the message bar on game start/load. - Use roguelike keys by default, and remove setting option from the CLI.
- Player (
row,col) and Monster (y,x) now useCoord_tfor their positions. - Use
Coord_tin all functions that usedy, xcoordinates. - Reorganise some game arrays and variables, placing them on an object:
- put
inventoryontoPlayer_t - put
treasure_listandcurrent_treasure_idontoGame_t
- put
- Type changes:
rcmovevariable inmemoryUpdateRecall()signature is now anuint32_tlike everywhere else.- Change
store_buyfunction signature type to useuint8_t, and return abool. - Various other types changes.
- Typo fixes:
item_sub_catory,current_askin_price. - Various
clang-formatandclang-tidyupdates. - Move the Manual and FAQ to the
historicaldirectory and remove from release. It seems that these are very much out of date - possibly for any 5.x version - so it makes sense to move them back in with the rest of the historical documents. - Various compiler fixes.
- Rename several
ui_inventory.cppfunctions to avoid name clashes (bugfix). - Player ToHit/Armor/Damage Adjustment functions now return
int16types. - Minor style changes.
- Various
CMakeLists.txtupdates:- Allow out-of-source builds.
- Use
configure_fileto set variables insplash.txtandversions.txt. - Remove unneeded
make install. - Fix for finding ncurses on Linux/macOS.
- GCC 8 support.
- Update
AUTHORS: add more known features from-JWT-.
xor_bytedecryption was not being performed correctly onscore.datfiles. Introduced with commit: 676cdfed6c274279fa889c079e84788adc954cac (readHighScore()function). Note:game.savfiles were not affected by this bug.
- Delete
constant.h, moving many constants intoconfig.hand the rest into their related headers. Things are looking pretty ugly at the moment but perhaps it's a better starting point for further refactoring. - Change
config.hto namespace'd constants - perhaps not a good approach but let's see!
- Add AUTHORS file containing all known author information.
This removes contributors section from
versions.txt.
- Kill experience points now calculated correctly.
When extracting a method the wrong
inttype was used when calculating thecreature.kill_exp_value * creature.level. This bug was introduced in Umoria5.7.3with the commit: ccfa74783ad67eb3276ff3eca0f2509599012d33
Continuing the process of moving related functions to the same file, plus other changes. Highlights:
types.hnow has just the two corevtype_tandobj_desc_ttypes.- The numbered
miscandmoriafiles no longer exist! - Moved
sets.cppfunctions elsewhere, allowing for most to becomestatic. externs.his now empty, so deleted!- Add consistent
constin various places. - Use more
Coord_tin Dungeon related functions.
- Improve Wizard Mode help files.
- Easier item creation in Wizard Mode (inspired by Bmoria).
- Change
[Press any key to continue.]to[ press any key to continue ], and any variations, as it looks clearer.
There are two main areas of focus for this release. The first was to create
more objects to move the numerous global variables on to. E.g. Dungeon_t.
The second area of focus has been to start grouping related functions and
variables in the same file. Ex. most player functions are moved to player.cpp,
or a new player_xxx.cpp file has been created (run, stats, tunnel, etc.).
The LOS and look functions are located in los.cpp.
Grouping globals and functions together like this should make their usage and their relationships more obvious.
These locations are by no means final, but are a useful first pass.
- Grouping related functions together in the same file.
- Move more Player globals to the
Player_tstruct. - Create a
Dungeon_tand put all dungeon related globals here. - Create a
Dice_tinstead of using an array. - Started replacing
char *withstd::string. - Simpler display of death screens (using
death_tomb.txt,death_royal.txtfiles).
- Game loading fix where shops data was being read twice, and the second time resulted in incorrect data. Oops! Broken during save game refactor: https://github.com/dungeons-of-moria/umoria/commit/ce2c756
- When compiling on Windows/MinGW, the OS was not being detected correctly. https://github.com/dungeons-of-moria/umoria/commit/3811bcd
- Now load cave tiles correctly (the
litstatus values), as a previous refactoring broke loading of pre-5.7 saves. https://github.com/dungeons-of-moria/umoria/commit/219f350
- Pass by Value and Pass by Reference major refactoring.
- Replace "magic numbers" with ENUMs, in
staffs.cpp. - Use
Coord_tinstead ofy/xvalues in various coordinated related functions.
- CLI: Added a parameter to provide a custom game seed value, using
-s. - CLI: Display high scores flag now changed to
-d, because of the game seed. - CLI: Remove
-oand just use the one arg (-r) for specifying (forcing) the use of roguelike keys (hjkl). - Renamed the data/help files. E.g.
owizcmds.hlp>help.txt. - Support only save/score files for Umoria
5.2.2up to5.7.x.
TV_NEVERwas an unsigned int, but should be signed as it's being given a-1value. [https://github.com/dungeons-of-moria/umoria/commit/8c3d1d2]- The
monsterTakeHit()check is now correct inspellLightLineTouchesMonster(). [https://github.com/dungeons-of-moria/umoria/commit/b26547d] - When player was in Run/Find mode, the
find_countwas not being dereferenced, soplayerEndRunning()would not be called correctly. [https://github.com/dungeons-of-moria/umoria/commit/95dc308]
- Add an optimized "release" build, with an
-O2optimization flag. - Setting version number in version.h now updates data files automatically, via CMake.
- Release date in
data/versions.txtis now set automatically via CMake. - Rename field names for all structs in
types.h. - Rename many constants for better clarity on their purpose.
- Move the game options globals into a Config_t struct.
- Refactor
main.cppto contain [mostly] just CLI arg parsing, and some basic game initialization. All other game logic moved tomoria.cpp. - Lots of clang-tidy based refactoring.
- The create food spell was creating random items instead of just food.
The main focus of this release was to rename all functions, function variables, and global variables. The old naming did not reveal their purpose very well, which made understanding the code more difficult. These are not meant to be final names, they have been chosen to aid future refactoring tasks.
Additionally:
- The
variablefile was renamed toglobals. - Many defines (mainly in
constant.h) changed to aconstexpr.
- Various repeat commands (e.g tunnelling) were broken in the 5.7.1 release.
- Remove
curs_set(0)as a visible cursor is needed in menus!
- Add a
CODE_OF_CONDUCT. - Add a
CONTRIBUTINGguide.
Extract Method refactoring was the main focus of this release. Along the way many other refactorings were made, including:
- Refactor
if/elsestatements:- Add guard clauses / early returns where possible.
- Remove
elsewhen anifreturns. - Makes many easier to understand (e.g. less indentation).
- Refactor
do/whilestatements, to be justwhilestatements where possible. - Remove unneeded braces for
ifstatement expressions. - Rename many variables to make their function more obvious, but there's more to do in this area.
- Generally lots of small refactoring.
- Disable terminal control chars (e.g. CTRL-C)
- Make splash screen logo a little nicer.
-
Improved CLI: adds help and version information (
-hand-v). -
Lots of spelling fixes, mostly source code comments, but a few in-game also.
-
Updates to the manual, FAQ, and historical/errors documents.
-
Compiles to C++, with all warnings fixed! (
-Wall,-Wextra,-Werror,-Wshadow) -
Now uses CMake for Mac/Linux build - Windows/MinGW still uses a normal Makefile.
Lots of code clean-up and standardization, along with removing support for outdated systems. The main feature of this release is support for Windows and macOS.
- Windows, macOS and Linux support.
- Renaming binary from
moriatoumoria, save file togame.sav, and scores toscores.dat. - Use
clang-format/-tidyto clean up the code formatting. - Moves all standard library header includes into one file.
- Replaces custom types (e.g.
int8u,int16u, etc.) with their equivalent C standard types. - Introduce the
_Booltype. - Converts deprecated K&R style function declarations.
- Refactor all comments.
- Reorganise all old document files, create a
historicaldirectory.
- Remove support for discontinued computers and OS: Atari ST, Amiga, MS DOS, "Classic" Mac OS (pre OS X), VMS, System III, etc., etc.
Umoria released under a new GPL-3.0-or-later license by David Grabiner. More information is available on the free-moria website.
All previous changes can be found in the historical/CHANGELOG.