-------------------------------------------------------------------------------
Known Strife Bugs
-------------------------------------------------------------------------------
Bugs with an asterisk cannot be fully emulated in Chocolate Strife.


Laser does not hit peasant
--------------------------
During the graphical introduction sequence which replaces the R_Init loading
dots from DOOM, the laser visibly stops very short of the peasant.

Monsters lose speedup/slowdown skill-level-related properties when loading
--------------------------------------------------------------------------
Various monsters become faster or slower depending on the skill you pick when
starting a new game. However if you load a game from a save file, they return
to normal.

Bishop's missiles are faster in easy skills, slower in hard skills
------------------------------------------------------------------
The Bishop's lethal homing missiles get faster in the easiest skill setting,
and slower in Bloodbath. This looks to have been the result of confusion in
the programming.

Text dimensioning routines are unsafe in various ways
-----------------------------------------------------
The M_DialogDimMsg and HU_WriteText routines can be coaxed into corrupting
memory or causing infinite loops if certain input strings are given. This
would only be a problem with customized dialogue lumps.

"Alarm Token" object crash
--------------------------
The MT_TOKEN_ALARM inventory item assumes it can only be given to the player
during a dialogue sequence. If modified with SeHackEd to have a DoomEd number
and placed on a map directly, it will crash the game when collected.

Last inventory slot is unusable
-------------------------------
Due to sloppy bounds checking, the very last slot of the inventory is not
usable (Slot 32 of 32 slots).

Inventory overflow
------------------
If the player has more than 32 distinct inventory items, the player_t structure
will be overwritten, which usually crashes the game.

Door multiple thinkers glitch
-----------------------------
When retriggering a door that is already in motion, in order to reverse the
motion of the door without waiting for it to finish moving, some door linedef
types are allowed to fall through into the default case of a switch statement
and start a new thinker on the door. This new thinker will conflict with the
one currently on the door. Depending on the timing and the number of thinkers
started on the door sector, the door may become stuck open, stuck shut, or
stuck in midair. This can become a game-wrecking glitch.

ML_TWOSIDED crashes
-------------------
Strife worsens the situation in DOOM by adding numerous additional checks for
two-sided lines by using the ML_TWOSIDED flag instead of checking that the
linedef actually has two sides before trying to use the back side. This means
that any lines in the map which have ML_TWOSIDED but are not really two-sided
may crash the game under certain circumstances.

Torpedo is never auto-selected
------------------------------
There is code which would auto-select the torpedo (the Mauler's alt-fire mode)
when the player has run out of ammo. However, the normal Mauler uses less ammo
and is checked for first, so the Torpedo is never selected automatically.

Sigil damage thrusts the player toward the east
-----------------------------------------------
The player is sent in as the inflictor for the damage caused to himself by 
firing the Sigil, so P_DamageMobj will inflict thrust on the player. Because
the source and inflictor are the same object, the angle returned is always 0,
or toward the east. Thus you may be thrusted sideways or forward depending
on the direction you are facing.

Savegame load target restoration bug
------------------------------------
Strife attempts to circumvent DOOM's limitation with monsters falling asleep
when savegames are loaded by setting the targets of any monsters who were angry 
at *anything* at the time of the save to the new player body. However, 
monsters who are loaded before the player's body has been loaded from the
save file will try to target a dummy player spawned when the level was loaded
from disk and then discarded, so those monsters will not properly target the
player when the load is finished. The behavior appears random during play.

Tracer targets not cleared or restored *
--------------------------------------
A bug inherited directly from DOOM v1.666, Strife does not clear the value of
mobj_t::tracer when loading objects from savegames. This means it uses a now
invalid pointer value from a previous execution of the program. The resulting
behavior appears random during play, with homing missiles possibly flying 
straight, veering off in a strange direction, or homing in on completely
different objects. Chocolate Strife cannot emulate this bug safely because it
invokes undefined behavior.

Burning players can activate linedefs
-------------------------------------
When the player dies by a fiery attack, he can run around for a short period
of time screaming and waving his arms around. During this time, any type of
linedefs can be activated except for WR Exit to Level types.

Burning players can exit the level
----------------------------------
If the player knows the location of the hidden switches which raise only during
deathmatch, the player can activate those switches by catching himself on fire
and running across the normal exit lines while pushing the space bar. For some
reason the SR Exit to Level linedef types do NOT check if the player is alive
before allowing them to be activated. This glitch can be severely abused to 
sequence break.

Line type 234 makes no "cannot activate" sound
----------------------------------------------
All locked door types in Strife make an "oof" sound if the player tries to 
activate them without the key, inventory item, weapon, or questflag they check,
*except* for line type 234, "SR Raise Door if Quest 3 (Permission to visit 
Irale)". It was likely forgotten.

Sigil -1 can be gained via the LEGO cheat
-----------------------------------------
When the LEGO cheat is typed for the sixth time, the player will change to an
invalid sigil type -1, which causes a light flash when raised, emits nothing
when fired, and displays several frames from the grenade launcher during its
firing sequence.

Items are given to players not in the game *
------------------------------------------
When some objectives are completed, such as destroying the Converter in the
factory, Strife gives the awards commensurate with the task to all 8 players
in the players array, even if they aren't active players in the game. Since
non-active players have a NULL mobj_t *, this results in portions of the DOS
interrupt table being read and corrupted. Oddly this is rarely if ever fatal
to the game under DOS, but the code ported directly to Chocolate Strife 
suffered crashes and had to be modified to avoid the particular accesses which
caused crashes that didn't occur in DOS.

spechit array accessed at index -1 *
---------------------------------- 
Strife regularly accesses the spechit array out-of-bounds at index -1, reading
whatever happens to be there as a pointer to a linedef. This occurs in code
added to the function P_XYMovement which is intended to enhance the ability for
missiles to activate shoot-type (S1/SR) linedefs. The DOS executable rarely if
ever displays any negative reaction to this undefined behavior, but the directly
ported code would cause Chocolate Strife to crash and therefore had to be 
modified.

Unstable screenwipe algorithm
-----------------------------
Modification of Strife's palette or XLATAB lump and certain key combinations of
source and destination screen contents can cause the Strife cross-fade screenwipe
algorithm to enter an infinite loop. This occurs because there is no bound on the
iteration count; the algorithm will continue running until it senses that no 
pixel on the entire framebuffer has changed in value due to the wipe process.