Monster damage values from melee/missile hits could potentially add or subtract up to 63/64ths of damage over and above a monster's usual damage range
Co-authored-by: Stephen C. Wills <staphen@gmail.com>
This is very similar to the code used when casting heal other, except for how the amount to heal is chosen. Could potentially reuse it there as well with a bit of work.
clang-tidy warns about the unnecessary copy for these params
Could also potentially use std::make_unique if the Action constructor wasn't declared private?
1. Switches to 32-bit based calculation throughout. This is faster and
less error-prone as we only byte-swap once when reading and writing.
2. Removes global state from Diablo-SHA implementation.
The gamepad cursor (inventory, spells etc) no longer relies on warping a
real mouse cursor. This should make things work better on platforms that
do not support this, like Wayland.
* Bugfix: Level 16 Dungeon Message
Applies the commented bugfix to allow the game to play the level 16 audio message when the player enters the level for the first time.
There's a bit of common code, but most of the initialisation logic relies on globals or other functions defined in objects.cpp so it's not really appropriate to move these wholesale into a member of the Object class.
There are a bunch of direct references to dObject related to testing if an area contains the interactable part of an object, this needs further cleanup.
This was repeated in multiple places with essentially identical logic. Can expose the existing missiles.cpp function to capture the use in scrollrt.cpp
This extracts some of the common object logic from ItemSpaceOk and CanPut, these functions are almost identical except for the way players and monsters are checked...