Par for course I'd say - instead of checking for replaced player actors at the only time it really matters - i.e. when respawning, it was encoded into the stored value, making the entire thing very messy.
For mow, multiplayer handling is not needed, but when it does, better go over all actors and manually substitute the two relevant fields, i.e. sprite.owner and xsprite.burnsource.
* removed all the large instance arrays. None of this is really necessary, all we need is a single dynamic array with only the active sequences that can expand as needed.
* added JSON serialization. With the above change this part now becomes trivial.
* renamed all 'atxx' variables in this code.
This ensures that callback indices are consistent. Runtime registration as performed by NBlood has undefined order and will make savegames non-transferrable.
This removes the special handling for it in the main loop.
Some functions and variables in the kill and secret managers were also given more meaningful names.
Fixes#313
* Remove fix16.h/cpp and utilise library from m_fixed.h.
* Extend m_fixed.h with two inline functions for int to/from float operations.
* Replace fix16_floor operations with those from xs_Float.h
* Replace multiple Q16.16 conversions from 0 to just be 0.
* Replaced all found in-game bit-shifts and multiplications/divisions with inline functions from m_fixed.h
* Replaced many casts of FRACUNIT as double in SW's panel.cpp as it is converted to double by way of type promotion.
* Fixed missed precision fixes in SW's panel.cpp where some types weren't declared correctly.
* Replaced 100+ `Cos()/Sin() >> 16` operations for Blood with inline functions `CosScale16()/SinScale16()`.
Whatever this was for it made that thing extremely unwieldy.
With these merged the resulting structure doesn't look much different from Duke's anymore.
* Remove cast of int on `gFrameClock` since gFrameClock is now just an int.
* Remove unused `gFrameTicks`.
* Remove unused `gFrameRate`.
* Rename `gFrame` to `gFrameCount` so it's easier to search and distinguish from `gFrameClock` without relying on regex.
Messing around in the file system cache should be a no-go, so now it's no longer done.
This also allows reenabling the byte swapping needed for Big Endian.
- Change damage scale and min firedist for Custom Dude.
- Remove unnecessary checks in callback of tracking condition.
- Fix picWidth() function.
- Better initialization of modern stuff.
- kModernSeqSpawner: disable all other spawners with same TX ID when enabling current.
- Fix: sceneQav was not playing if resurrected with COUSTEAU cheat.
- kModernPictureChanger: remove kModernFlag01 feature (deprecated).
- kModernSectorFXChanger: add flags to control where exactly light effect should appear.
- kModernCondition:
- add delay before sending command if condition is true.
- take in account state, so kCmdState and kCmdNotState is useful.
- fix wrong comparison result in some conditions.
- add new various conditions.
- kModernPlayerControl:
- fix start / stop playing qav scene when triggered with event command converted to sprite command.
- add a way to resurrect / heal player.
- add event commands to toggle inventory item status via trigger.
- fix that Remote and Proximity detonators cannot be given.
- add clear all screen effects option.
- proper percents for changing movement / jumping.
- kModernRandomTX, kModernSequentialTX: change event redirection mode activation from kModernTypeFlag02 to kCmdLink.
- kModernSpriteDamager: treat damage value as percents by default, take in account god mode.
- kModernEffectGen: fix wrong cstat for effects.
- kModernPropertiesChanger: proper underwater status for sectors and players or enemies in it.
- Players: assign or update current player's sprite index for all conditions.
# Conflicts:
# source/blood/src/nnexts.cpp
- Fix for custom health when respawning enemy
- Fix for custom dude when respawning it
- Conditions: added way to refresh sprite index in tracking conditions
# Conflicts:
# source/blood/src/actor.cpp
# source/blood/src/aiunicult.cpp
# source/blood/src/aiunicult.h
# source/blood/src/dude.cpp
# source/blood/src/dude.h
- New modern type "Condition" (WIP)
- Fix damage scale for custom dude
- Extend Impact and Vector flags so they can be used with dudes
- Impact condition can be triggered with missiles and explosions
- Updates for Teleport Target type (gModernMap)
- Updates for Effect Gen type
- Updates for Wind Gen type
# Conflicts:
# source/blood/src/actor.cpp
# source/blood/src/aiunicult.h