Changed the way keymaps are disabled/enabled to reduce
calls to the InputManager, and make sure secondary
keymaps are only enabled when needed, and kept disabled
the rest of the time.
Added a feature that stores whether the player has won
the game at least once, and activates a specific event flag
if so. This may or may not enable easter eggs in the
game data, but definitely affects the (still unimplemented)
quotes easter egg in the version screen.
Removed occurences of the ConfMan macro being used
to get the transient domain name. This makes sure we don't
generate unnecessary calls to ConfigManager::getInstance().
Fixed several issues with the nancy7 ad button:
- the sound in the main menu no longer cuts out when
returning from the ad
- an ad scene now never ends up in a second chance save
- going to the ad 2 times in a row does no longer continues
the game instead.
Also, the GotoMenu record now always forces the player
back to the menu, even when original menus have been
disabled; the old behavior never made sense.
Solving a TurningPuzzle without an animation (e.g. the
crossed eyes box in nancy6) would previously not trigger
the solve flag, rendering the puzzle unsolveable. This has
now been fixed.
Changed the execution of Conversation records in nancy6
and up, so that the kBegin state falls through to the kRun
one and submits its caption to the Textbox immediately.
This fixes the text displayed in nancy6 scene 1299, where
a subsequent TextboxWrite record overwrites the
Conversation caption with a longer one.
Fixed an issue where AddInventoryNoHS would force an
item to be forever held by the player, if it is already in
the player's inventory prior to the record's execution.
The "Open map" action used in nancy3/nancy6's
RaycastPuzzle interfered with general keyboard input,
causing whichever key was bound to it to not fire.
Effectively, this meant that inputting the letter 'm' was
impossible. This commit makes sure the binding is
deactivated whenever text input is needed.
A fix for some broken nancy3 phone calls resulted in
the nancy1 hint system not working. This commit makes
sure the fix only applies to later games, which do not use
the HintSystem action record.
Added a PuzzleData struct for AssemblyPuzzle, which ensures
that loading the puzzle again after it's solved will show the
assembled state, instead of restarting the puzzle.
Modified the special case input handling in Overlay so that
it no longer gets triggered at all for nancy2 and older games.
This fixes an issue with the TV in nancy2, which will get
turned off even when not holding the remote.
Nancy3 has a bugged Telephone instance that can get the
player stuck forever in the same scene (this happens in the
original game). This commit makes sure to avoid such cases.
Also, players can now exit a Telephone scene while ringing.
It seems nancy2 shares the weird looping behavior when
a sound is present inside an Overlay - it keeps looping
until after the sound is done, even when looping is disabled.
This fixes nancy2 scene 1562.
It seems earlier games were aware of the engine bug that
slows down all videos, and their movies were correctly synced
in the original engine. This commit duplicates that bug,
but only in the cases where a movie has an embedded sound
(e.g. the nancy2 cutscenes)
Fixed an issue where an Overlay with a hotspot would
actually never have it activated. Also, added a check for game
type to make sure other action records _do_ get activated
alongside an Overlay in nancy2 and lower. Both of these
fixes target nancy2 scene 2541.
With the adjustments made to the regular cursor, the
inactive zone during conversations was rendered a few
pixels shorter than it should be; now the cursor can be moved
up right up to the edge of the viewport.
Also, when entering a conversation, the mouse cursor would previously warp immediately, but its graphic would only change
a frame later; this has also been fixed
Implemented the correct logic for a cursor dependency
that specifies _not_ holding an item, though I'm still not
sure that functionality is actually ever used. The "can't"
sounds for such a dependency will now also play correctly.
The "standard" cursor dependency (which will activate
only if the player is not holding anything) will now actually
activate; previously it had no chance of doing so, due to
incorrect int signedness. Again, it is unclear if this ever
actually gets used.
It seems the raycast puzzle map wasn't actually a debug
feature in the original engine, and was actually toggleable
even outside god mode. This commit adds a keymap for
displaying it, and makes sure that keymap only appears in
nancy3 and nancy6 (since other games do not have
this puzzle)
CifFile/CifTree classes have been completely rewritten and
moved to their own header file. ResourceManager is now
exclusively responsible for loading IFF files, making sure
loose .iff/.cif files take precedence before ones embedded
in a ciftree.
Also, completed work on the cif/ciftree exporting functions.
Autotext records generate surfaces that are used by other
action records. When loading from a save, the Autotext
will already be marked as "done", and thus wouldn't generate anything, resulting in a crash. This commit makes
sure this doesn't happen.
Implemented the record type responsible for nancy6's
cube assembly minigame (not to be confused with the
pottery assembly one, which uses a different AR type)
Added a class that combines a certain behavior used by
several puzzles: that of an object that follows the mouse
cursor, but stays within the Viewport's bounds.
Implemented the short variant of KeypadPuzzle introduced
in nancy7. Also added the new flag that marks whether
we need to check the order the buttons were pressed in.