Add it to engines that have MIDI playback.
This essentially compiles the emulator only when an engine that
can potentially use it (e.g. MIDI) is enabled
(KYRA1 - misaligned options text and buttons)
Partial revert of pr 4798 which broke not only the button mentioned in
the bug report but also other gui elements. Some examples can be seen
in the screenshots posted in the pr.
Since the idea behind the PR (make the dialogs look like in the original
interpreters) was good, maybe it can be redone some day (preferably
by extracting all gui elements coordinates from the executables and
stuff them into kyra.dat).
I verified some code parts from disasm at the request of
contributor vrza. The double-checked code turned out to
be correct for EOB I and EOB II. This commit just removes
the comments telling me what to check.
This is an original bug which is present like that in all versions,
including SegaCD. The script processor passes the monster pos
as a direction argument which is nonsense and can also be out
of range.
Note: All changes are behind the "Faithful AD&D rules" flag.
Fix a bug in the original gmaes, where projectiles would deal
an incorrect amount of damage (always 1d1):
- projectile weapon id is attached to a FlyingObject and checked
when FlyingObject hits a monster or the party
- bump the save format version to add a new field to FlyingObject
(the new 16 bit field replaces the existing unused 8 bit field)
- fix a bug in the original code where a projectile weapon thrown into
the 3D view would inflict projectile damage (should be 1d1)
- patch EotB 1 Bow and Sling damage according to AD&D 2nd Ed rules
Elves get +1 to hit bonus with bows and swords, according to manual
Patch EotB 1 NPCs Beohram (paladin) and Ileria (female)
The spell effect was restored after loading a savegame
even when it shouldn't. The bug is actually caused by
a bug fix I made to fix an original bug (the original
never restores the true seeing effect, even when the
spell is still supposed to be active).
For accurate HP calculation, we track the HP dividend.
When leveling up, we divide the dividend by the number
of character subclasses to get the total Hit Points.
- Added field hitPointsDividend
- Cleaned up and refactored HP calculation code
- Extracted method rollHitDie
- Updated character generation to use enhanced rules
(community suggestion)
I have been told that the implementation is not always in line with the
AD&D 2nd edition handbook. This switch allows to have more faithful
rules if we implement them as an alternative.
This class manages a buffer where all data usually stored in detection
plugin will get copied before unloading the plugin and starting the
game.
This class expects that two functions are present in every
GameDescription: sizeBuffer which calculates how many bytes we will need
to store the entry in RAM and toBuffer which copies the data in the
buffer and fix the pointers in the class.
At the end, it is expected that an ADDynamicGameDescription doesn't
depend anymore on data stored in the detection plugin.
The AD_GAME_DESCRIPTION_HELPERS macro allow to implement these functions
in all GameDescription which don't have any pointer except those in
ADGameDescription.
(Game Crash after getting Paulson's key in Mines l.4)
It its possible to still have Lora in the party when meeting
Paulson which the game is not prepared for. There is no
mechanism to handle a new party member when there
are already 3 members present. The game simply expects
that the scripts handle this flawlessly by removing a certain
member before adding a new one. I have now added a
workaround to remove Lora from the group if she is still
there when Paulson is supposed to join.
(for fireball, ice storm, lightning bolt, cone of cold, etc)
The current code seems to misbehave on platforms with
slow graphics updates (whether related to our backend,
to SDL or the actual graphics drivers or hardware). This
patch allows frame drops if necessary.