Stroggs Gone Mad 05/10/98
================================================================
Title                   : Stroggs Gone Mad v1.1.00
Author                  : Roscoe A. Sincero
Email Address           : legion@keg.zymurgy.org
Description             : This mod enhances the fighting abilities of the
                          Strogg enemies.
Web site/Home page      : legion's Stroggs Gone Mad
                          (http://www.inside3d.com/legion)
News site               : Inside3D (http://www.inside3d.com)
TC Website              : http://swtc.telefragged.com.  The chase AI
                          used in this mod is slated to be used in the
                          Star Wars TC for Quake II itself.
Additional Credits to   : id Software for Quake2, especially Paul Steed of 
                          id for giving out the stats for the enemies

                          Matt Barnett for leading target code for Iron Maiden
                          (http://ds.dial.pipex.com/town/terace/qg20) used in
                          the monster enhancement mod.  The actual code used
                          is a modified version of his.  Thus, the soldiers
                          now aim better.  NOTE: For a long time, the
                          actual code used in SGM is no longer recognizable
                          from the original.  But the aiming function had its
                          beginnings using Barnett's code.

                          Yaya for the scanner tutorial that was posted at
                          Quake Developers Studio
                          (http://www.planetquake.com/qdevels).
                          The pcx files also came from the tutorial.
                          The scanner is no longer part of Stroggs Gone Mad.

                          SaTaN for the chasecam tutorial that was posted
                          at Quake Developers Studio
                          (http://www.planetquake.com/qdevels).

                          William van der Sterren for Dijkstra's method. I've
                          abandoned Floyd's algorithm.  Also the rest of
                          the SABIN team (e.g. Dark_Skye) for ideas although
                          currently none of them are implemented or even
                          started.  Don't worry, I'll try to see if any
                          can be used for Strogg enemies.
                          SABIN (http://www.planetquake.com/botshop)

                          Michael Smit for the original Navigator Algorithm
                          (http://www.mathcs.carleton.edu/courses/
                          course_resources/cs227_w/96/smitm/)

                          El Nino Quake Extensions
                          (http://www.telefragged.com/vwep) for the
                          visible weapon's patch.  You will need to visit that
                          site and download their pak file.  It contains
                          the new models for the visible weapons.  

Misc                    : You will need Quake II v3.13 or v3.14.  Been tested
                          with v3.13.

Known User Problems     : a) User attempts to play this mod using older
                          versions of Quake II.  End up with
                          "game is version 3, not 1" error or
                          "game is version 3, not 2" usually.

                          b) User fails to follow install instructions
                          detailed below.  Thus, user ends up playing regular
                          Quake II instead of SGM.

                          c) User has a copy of a gamex86.dll in the main
                          quake2 directory instead of inside one of the
                          subdirectories like \baseq2\ or \strogg\ where it
                          belongs.  

                          d) User's attempt to download file resulted in a
                          corrupted file.  Used PKZipFix or similar utility
                          to fix file but resultant gamex86.dll is still
                          corrupted.  The DOWNLOAD ATTEMPT corrupted the
                          zip file.  The zip file itself at the download
                          site is NOT corrupted.  User ends up with
                          "Error during initialization" error.  (Note:
                          problems with hard-drive can also cause this
                          same problem.)                         


================================================================

* Play Information *

Single Player           : yes
Cooperative (2-4)       : yes
Deathmatch (2-16)       : No
New Sounds              : No 
New Graphics            : No    
New Music               : No 
System Requirements     : Quake II, duh!
                          Windows 95
                          P200+ recommended highly (formerly P166+)
                          *good* 3D card recommended highly
                          32 megabytes of RAM min, 48+ recommended min
                          (w/o visible weapons).

                          64 megabytes recommended min w/ visible weapons

                          Quake II using this mod is not really meant to
                          be played "in software".  Get a 3D card.

                          Tested on a P200, no 3D card, 32 megabytes of RAM

* Construction *

Base                    : Quake2 DLL Source v3.14
Editor(s) used          : Microsoft Visual C++ v4.0
Known Bugs              : Who knows.  Well, the monsters have a tendency
                          to run up to you and stare at you for a little
                          bit (or run straight at a wall) before finally
                          shooting.  Also, when it gets too close to the
                          walls, it can get stuck as usual.  That hasn't
                          change.  Since the soldiers now move often, you
                          should see this problem a quite a bit more (
                          unless, of course, you don't move towards the
                          walls at all and there are no walls near the 
                          Stroggs).
Build Time              : I don't know.  Forgot.

* Install Instructions *

1) Make a dir under your quake2 directory (c:\quake2\strogg)
2) Unzip the gamex86.dll into the dir created in #1 
   (i.e. C:\quake2\strogg)
**3**) Make a directory in that game directory called "pics".  In THAT
   directory, make another directory called scanner.
   Unzip the pcx files into this \pics\scanner directory.
   (i.e. C:\quake2\strogg\pics\scanner)

THIS STEP IS NO LONGER NEEDED.  THE SCANNER IS NO LONGER PART OF THE MOD.

4) Make a directory in that game directory called "routes".  In THAT
   directory, copy all the files with the extension of "*.dat" into that
   directory.
5) Run Quake2 with the command line "quake2 +set game dir" where "dir" is the
   directory where you copied the gamex86.dll
   (i.e. quake2 +set game strogg)
6) start a new game 
7) optional: bring down console, type "skill 3" followed by enter.  Then type
   "map base1" (or some other map name) to start a new game at skill 3.
   skill 3 is the so-called "nightmare level".  


Obviously, if you unzipped the files keeping the directory names, then
the WinZip or PKZIP will place the files in the correct sub-directories
for you.  That is, you specify the drive to unzip the files and let
WinZip or PKZIP create the sub-directories and place the files in the
correct sub-directories for you.  The only thinking you need to do is
figure out what drive Quake II is on.

You can also set up a dedicated COOP server by typing this:
quake2 +set dedicated 1 +set game strogg +set coop 1 +skill 3 +map base1


* Other Info *

This is the post-point-release of the Monster Enhancement mod.  I decided to
start over from scratch with the coding and gave it a new name.

* Summary of Commands *

The following commands are executed by typing them at the console.

scanner           - toggles on/off (default is off) the scanner

      * scanner feature has been removed*

      And yes, the scanner was available in previous versions.  It
      was removed in v1.1 so it was available for v1.0.03.  The reason
      it didn't work for some of you when you claimed to have
      typed "scanner" is because you DID NOT type the word "scanner"
      and/or you DID NOT LOAD the Stroggs Gone Mad mod.

save_nodes        - save nodes that were created
load_nodes        - load nodes that were previously created.
mapping           - toggles on/off the mapping routine
                    unless a message in the game says otherwise, the mapping
                    routine is always on.  *NOTE* if no node is created
                    after two minutes, then the mapping routine is turned
                    off automatically without telling you.
chasecam          - toggles on/off the chasecam.  The default is off.
legion-navigator  - calculates all the paths.  This turns off Dijkstra's
                    algorithm so the monsters won't be calculating paths
                    any more.  To turn it back on, turn mapping on.  Of
                    course, if mapping is already on, then you have to turn
                    it off then turn it back on.  There will be a pause
                    when running this calculation.  The more nodes there
                    are, the longer it will take.  And, obviously, the slower
                    your machine, the longer it will take.
max_performance   - turns on/off id's movement code and uses the new movement
                    code.  Results in significant performance increase but
                    decrease reliability in Strogg's ability to move around.
                    The default is off--id's movement code is off.


* Making a route file *

This is optional.  This means you do not have to make one.

Load a level in exactly the same way you load any level.  If you have not
performed this simple task before, then I suggest that you make an attempt
to play a single-player or multiplayer game at least once before you download
or play any mod.

Once you load a level, turn on no target (type "notarget" at the console).
No target will prevent all monsters from targetting you until you fire at
it.  Walk around the level.  After you visited every spot on the level that
you think a monster can reach, save the nodes.  Saving the node is
accomplished by typing "save_nodes" at the console.  See summary of commands
above.


* Version Info *

v1.1.00 (May 10, 1998)

- UPON LOADING A LEVEL, the mod will try to load up a route file.  If a
  route file is loaded, it assumes that the route file is a completed file
  and turns off mapping.

- added SaTaN's chasecam using the tutorial posted at QDeveLS.  However,
  there were quite a bit of problems with his chasecam.  For instance, it
  crashes underwater and that the camera goes through walls.  In addition,
  the player "chases" the camera rather than the camera chasing the player.
  And when the player dies, the camera does not look at the killer.
  So I fixed these problems and made the camera actually work.  In netplay,
  the camera will be "jumpy".  The reason is simple: the camera is an
  entity in the game like any other entity.  This entity is *NOT*, I repeat
  NOT a player entity.  It is an entity like other entities in the game
  such as items, BFG ball, lasers, monsters, etc.  Because of this, the
  location of this camera entity is only updated 10 times a second.  The
  player's location, on the other hand, can be updated many times more than
  this.  This results in choppy camera movement especially in netplay.

- tweaked the code that allows the monster to "hunt" down a sound that
  it heard.

- fixed NO FREE EDICTS crashes.  This was confirmed.  The only way to
  cause this now is to play on a map that has lots of entities in them.

- another bug was causing occasionally crashes.  Fixed that too, I believe.
  Thus, this version is probably the most stable of all the releases.

- started over from scratch in the coding.  This is how I fixed the two
  bugs that causes game crashes.  

- added the legion-navigator algorithm.  If the route file has less than
  320 nodes, the mod will calculate all the paths in the beginning so that
  the Stroggs don't have to calculate any paths.  If more than 320 nodes
  are present, then type "legion_navigator" at the console.  Otherwise,
  the Stroggs will calculate paths using Dijkstra's algorithm during the
  game.  Upon executing legion-navigator algorithm, Dijkstra's algorithm
  will be turned off.  The reason is that the legion-navigator algorithm
  calculates all the paths.  Since all the paths are calculated, there is
  no reason for the Stroggs to calculate the paths.  NOTE: if mapping is
  on and a new node was added, then Dijkstra's algorithm gets turned
  back on automatically so the Stroggs will again calculate paths.

- messed with movement code so that Stroggs are less likely to get stuck
  in walls and other such things.  Improvement is most notable to melee
  only Stroggs like berserkers, although, improvement can be seen with other
  Stroggs.  The new movement code, however, is far more CPU intensive than
  id's original.  So I added an option to turn this off.  Type
  "max_performance" to toggle on/off the id's movement code.  The default
  is off.  The new movement code allows swimming while id's movement code
  does not.  

- tweaked fighting abilities of the berserker and infantry.  "Tweaked"
  the fighting ability of the Makron, too.  You might be surprised to see
  that the Makron appears to be tougher now.

- new Strogg weapon--a mini-BFG grenade that explodes on contact.  The
  frequency of the BFG energy is tuned to human DNA so it is toxic to
  humans but it is harmless to fellow Stroggs.  However, the amount of
  energy that is released is quite substantial so it can do a small amount
  of damage to other Stroggs on a DIRECT hit.



v1.0.03 (April 27, 1998)

- must have broken something in previous version.  No free edict crashes
  causes game to end.  It either causes Quake II to exit without any warning
  or it drops to console giving you a reason.  Hopefully, this bug is
  fixed.

- I accidently removed the soldier's ability to strafe. ooops



v1.0.02 (April 27, 1998)

- received a report that Stroggs can walk through closed doors.  This
  only appeared in user-created levels so far.  Have not been able to
  duplicate this bug.  However, I deleted the modified g_func.c and replace
  it with id's original g_func.c and proceeded to modify Touch_Plat_Center
  so that the Stroggs can activate platforms.  All functions related to
  doors were left untouched, unlike in previous versions.



v1.0.01 (April 26, 1998)

- fixed "hesitation" bug in which Stroggs are very unlikely to fire at you
  when you are on higher/lower ground and there is a path towards you but
  Strogg is unable to get to you due to obstacles (other Stroggs, for
  instance) in the way or environmental reasons (like cliffs, etc.).
  However, to increase the difference between skill difficulty levels,
  I left this bug in for skill levels 0 and 1.



v1.0.00 (April 24, 1998)

- added El Nino Quake Extensions' (http://www.telefragged.com/vwep)
  Visible Weapons patch so users can see each other's weapons in
  multiplayer COOP.

- not all Stroggs come running when alerted.  This is now random.



v.9.04 (April 24, 1998)

- fixed COOP bug



v0.9.03 (April 18, 1998)

- modified SV_movestep again.  Decrease performance but increase reliability.
  This is most important for monsters strafing or monsters with melee
  attacks only like Berserkers.

- added gap checking for bersekers and parasites.  CPU intensive routine
  allows berserkers/parasites to recognize gaps and determines whether or not
  gap prevents it from walking over it.  That is, "broken" ground won't
  hinder these Stroggs nearly as much as before.  However, these Strogg will
  walk off ledges easier than before.



v0.9.02 (April 14, 1998)

- changed "map" command to "mapping" to turn on/off mapping



v0.9.01 (April 14, 1998)

- fixed aiming bug for projectile weaponry

- made new route file for base1.  Apparently, there was something wrong
  with it.



v0.9.00 (April 11, 1998)

- fixed crash when trying to load a route file, hopefully.  Don't close a
  file if a file was not successfully opened

- added shielding to Infantry.  Allowed infantry to block rather than
  duck for skill levels 2 and higher.  Skill 1 infantry will either duck
  or block.  Skill 0 infantry never block.  Shielding is turned on only
  when blocking.
   - a blocking infantry at skill 1 will absorb 50% of damage plus protection
     from shielding

   - a blocking infantry at skill 2 or higher will absorb 75% of damage plus
     protection from shielding.

- Infantry can now walk and run faster

- modified SV_movestep so monster movement for walking monsters now behave
  better than id's original.  It requires more instructions so performance
  is a tad bit slower

- tweaked chase AI to take into account monsters with only true melee
  attacks (like Berserker)

v0.8.03 (April 10, 1998)

- made loading of route files automatic.  got annoyed having to load
  the files every time I needed to test out a level.

- added route files for base1, base2, and base3

- reduced maximum number of nodes to 512.  so mod is a little bit more
  memory friendly now, a little bit.


v0.8.02 (April 9, 1998)

- fixed NO FREE EDICTS crashes hopefully.  First time I ever had this
  type of crash for Quake II today.  Hopefully, it is the last time I
  see it for this mod.


v0.8.01 (April 8, 1998)

- fixed node counting not resetting on level changes as well as node table
  not reinitializing on level changes. 


v0.8.00 (April 7, 1998)

- worked on mapping code again.  Hopefully fix the node linking on the other
  side of wall problem that has been plaguing mod since the beginning.
  Additionally, corners of walls now are treated much better as well as
  stairs/inclines.  Result: decrease performance, increase reliability.

- changed version number format from x.xxx to a.b.cc.  For major revisions,
  a is increased by one.  For minor revision changes (e.g. one or two new
  but not very significant features added), b is increased by one.  For patch
  updates (usually for bug fixes), cc is increased by one.

- added ability to save/load nodes to a file in "..\routes\" directory.
  Name of file is the name of level with ".dat" extension.  New feature --
  incremented second digit in version number. save_nodes saves the node.
  load_nodes loads the nodes from file.  Any node that was created before
  the nodes were loaded from file will be erased.  So load the file first
  once you load the level.  Type "save_nodes" at the console to save,
  type "load_nodes" at the console to load.

  * NOTE *: If you like killing the Stroggs the minute you see them then none
  of the changes, since the original, I have been making will be seen by you.
  The nodes are used for chasing.  Obviously, Stroggs won't be chasing if
  they are dead.

- sample route file for base1 have been included.  You must load the nodes
  first before playing; otherwise, any nodes you had created in the game will
  be erased when you load the nodes.  If you load nodes from a file
  (even if the file is incomplete--the nodes don't cover the entire level),
  the mapping is automatically turned off so there will be performance
  benefits in loading the sample route files.  The monsters will still
  calculate paths as usual.  You can obviously choose not to load the
  route files by not loading them.  The monsters will not be as "smart",
  however.  For instance, when a Strogg alerts another nearby Strogg, that
  Strogg might not know how to find you.  This is because no nodes have
  been created yet to teach it.  So for faster performance and smarter
  monsters (in regards to chasing, they are smarter), loading the route
  files is better.

  OBVIOUS NOTE: The nodes are not automatically loaded even if a route file
  for that map is present.  This way you have a choice of either loading it
  or not.  This will allow you to see first-hand any differences in the
  Strogg's IQ as well as differences in the performance (in regards to
  CPU usage).

- although not mentioned before, the nodes do not affect the movement code
  at all.  Thus, monsters that swim will not suddenly jump out of the water
  and walk.  Walking monsters will not suddenly hop into the pool and swim.

v0.7.03 (April 6, 1998)

- tweaked mapping code so nodes should link up better, decreases performance
  slightly
   - improved mapping CAN lead to better pathing once the level is mapped out.
   This results in more slowdown in mapping routines but less choppy play
   since pathing code is only executed when needed.  Mapping is executed
   every frame.


v0.7.02 (April 3, 1998)

- fixed crashing problem with new chase AI (first mode)

- fixed incompatibility problems with chase AI modes

- increased performance in pathing code a little.  Still results in noticeable
  choppy play for a P200 if a lot of monsters (e.g. 5 or more) are calculating
  a path at the same time or that the map already has a lot of nodes in them
  (e.g. 360+)

- mapping code will turn off automatically if no nodes are being created
  after two minutes


v0.7.01 (March 31, 1998)

- rewrote chase AI.  There was a bug that prevented it from chasing.  The
  chase AI falls in two modes.  The last "mode" of chasing *IS* id's
  original chase AI.  There is a problem with compatibilty with the two
  modes--if the first mode fails, the second mode fails too.  Bug with
  first mode appears to be fixed.  Incompatibility bug with second mode
  is still present.  Unknown at this time on how to fix said problem.
  These modes were present in the original release but not documented in
  text file.

- for skill settings of 11 or greater, soldier's weapons are just as powerful
  as players.  Note: this is changed from previous version.   The game is
  not very fun with the previous setting.

- first mode of chasing:
   - monsters dynamically learn the level by dropping nodes
   - players also drop nodes for monsters to use
   - in previous version, the dropping of nodes eats up a lot of CPU.  It
     is most noticeable on maps with large number of Stroggs (e.g. greater
     than 30) or if the map has or will have a lot of nodes in them.
   - in this version, the routine now runs faster.
   - monsters use these nodes to find a path from current position to
     target's position.  If no path found, it uses id's chase AI.

- limiting CPU sappage now is the path finding routine.  Only "solution"
  is to reduce the maximum number of nodes allowable in the game.  It is
  currently set at 1024, it is reduced to 512 nodes.  This will reduce the
  memory requirement of the mod as well as prevent mod from spawning so
  many waypoints that the monsters would take too long to calculate the
  path.

- increased performance in mapping code
   - unlike pathing, mapping routines are executed every frame.


v0.7.0 (March 10, 1998)

- soldiers will display animations normally not seen very often.  the run-n-shoot
  as well as duck-n-shoot animations will be seen more often.  also the run, 
  shoot, and trip animations are displayed--originally id left this out. soldiers
  can now move and fire at the same time.  they have animations to support this
  so I used them.

- soldiers can have mega armor which makes them translucent--practically 
  invisible for some graphics cards.  Only skill 4 or higher can have mega armor.

- support skill settings upto 2000

- at skill 3 or higher, soldier's firepower have been equalized to that of the
  player.  In other words, they now do as much damage as a player at skill 3
  and higher.  (Machine gun soldier's firepower has been equalized at skill 4
  and higher.)

   -- blaster soldiers originally did 1/2 damage, now do full damage 
   -- shotgun soldiers originally did 1/2 damage, now do full damage
   -- machine gun soldiers originally did 1/4 damage, now do full damage

   * THIS MAKES THE GAME SIGNIFICANTLY MORE DIFFICULT! *

   This may be a single-player game but do not leave your deathmatch
   skills out the door.  Bring it with you.  Start out with skill 1 or
   2 to get used to the moving soldiers.  Then try the nightmare levels.

- added Yaya's scanner.  Type "scanner" at the console.  With the scanner on,
  the menu (press escape for menu) will not be active.  To activate the menu,
  turn off the scanner FIRST by typing "scanner" again at the console then
  press escape.  red dots mean Stroggs who are targetting you!  The other
  dots are either Stroggs or some other equipment that provide false positive
  positions of Stroggs. scanner is short-ranged so don't expect to "see" 
  the entire map with this.  The computer [Press F1] is also "down" when the 
  scanner is on.  The info will only pop up for a very brief moment when the
  scanner is on so turn off the scanner if you wish to see the computer update.

	-- there are some pretty strong limitations to the scanner.  In short,
      too many Stroggs can cause overflow errors which can also lead to 
	   other problems as well including but not limited to not being able
      to find the correct *.pcx file error messages.

- NEARYBY Stroggs are alerted by your presence.  So if one Strogg sees you and
  there are others nearby, they will be notified.  
 
- obituary has been modified to include new death messages.  it is NOT complete.

- soldiers can resurrect at skill 3 or higher.  Hence, skill 3 is the beginning 
  of the "nightmare" levels.  To prevent resurrection, you must gib the body.


* Misc Info *

I plan to improve most of the Stroggs one class type at a time.  So the first
Strogg to improve is the soldier class.  This is different from the monster
enhancement where I was improving a bunch of Stroggs at the same time.

I'd really like some of the Stroggs (like the enforcers, for instance) to
have animations that include movement while firing their weapons.  Without
these animations, the Stroggs will look like they are "skating".  I won't
add movement if the animations don't exist.


 
