This archive contains the Doom Things Analyzer version 1.03,
plus as a bonus, a utility to find secrets in Doom levels.


			  DOOM THINGS ANALYZER
			  --------------------

			      Version 1.03
		       Programmed by Yonatan Donner

What is the Doom Things Analyzer?
---------------------------------

The Doom Things Analyzer, or DMTHA in short, is a tool to quickly analyze
any Doom, Ultimate Doom, Doom II or Final Doom level including external ones
from a THINGS point of view.

DMTHA reads all of the things in any level in any wad file and generates a
report in one of five selectable detail levels about the level, how much
health and armor it has in total, how much ammo of every kind and total
strength of the ammo, how many monsters of every kind etc..

The Command Line
----------------

The case is insensitive, so you don't have to use capitals.

Usage: DMTHA <wadname> [switches]

<wadname>  - the name of the WAD file to analyze

Switches:

/Mmapname  - analyze only one map - the map called mapname. For example:
	     DMTHA DOOM2.WAD /MMAP29 will analyze only level 29 of Doom2.
	     The default is to analyze all levels in the WAD file.

/A         - ignore ammo taken from monsters. By default, DMTHA considers
	     every sergeant you kill as four additional shells, since that
	     is the ammo you get when you take his shotgun. The same with
	     other monsters who drop ammo. Using this switch prevents DMTHA
	     from considering these monsters as more ammo.

/Dx        - use detail level x from 1-5 (default = 3)
	     Using this switch you can select the detail level you wish
	     DMTHA to use when analyzing.

	     The differences between detail levels are:
	     1 - only general map information. How many things are in the
		 map and how many monsters there are in the map.
	     2 - also the total strength of monsters hitpoints, total damage
		 of the ammo considering the available weapons, total health
		 and total armor in the level.
	     3 - also the specific ammo amounts. How many bullets, shells,
		 rockets and cells are in the level. Also health and ammo
		 vs. monsters rations to help calculate difficulties. This is
		 the default detail level.
	     4 - also the monster counts. How many monsters of every kind
		 are in the level. Also weapons counts: which weapons are in
		 the level and how many. Also miscellaneous items: how many
		 invulnerabilities, partial invisibilities etc. are in the
		 level. Keys: what keys are in the level.
	     5 - going down to specifics in ammo, health and armor. Not only
		 how many bullets there are in the level but how they are
		 divided to boxes and clips. The same about all kinds of
		 ammo and health and armor.

/Fx        - find item x and report coordinates
	     The search feature. DMTHA will find the item you want to search
	     for and report it's x and y coordinates, and it's number. Then
	     you can go directly to the item using a level editor and know
	     where it is. See later in this text file for a list of items
	     and their numbers.

/I	   - ignore startup health and ammo for complete health and ammo
	     calculations. By default, DMTHA adds 100 health to the total
	     health and 50 ammo since that's how you begin a level (from
	     scratch). If you don't want that, however, use this switch.

/N         - take netgames only items into account too
	     By default, DMTHA ignores items that appear only in netgames.
	     Using this switch, DMTHA will take these into account too.

/Px        - consider pain elementals as additional x lost souls (default = 2)
	     Since painelementals don't have an attack of their own but only
	     generate lost souls, DMTHA considers them as some additional
	     lost souls. The default value is 2 but it can be changed using
	     this switch.

/Rfilename - output results into filename
	     This switch creates a report file with the analysis. You can
	     also achieve that effect by redirecting, for example:
	     DMTHA PLUTONIA.WAD /MMAP32 > GO2IT.TXT

/S         - use all skills, not only UV/NM
	     By default DMTHA only takes into account items that appear in
	     the two highest skill levels, Ultra Violence and Nightmare.
	     Using this switch DMTHA will also consider items that appear
	     on lower skills but not on these skills.

/U         - don't ignore ammo for weapons that aren't in the level
	     By default DMTHA ignores ammo for weapons that are not present
	     in the level, for example if there are 300 cells in the level
	     but no plasma gun or BFG, DMTHA will ignore them. Using this
	     switch DMTHA will take them into account too.


Difficulty calculation
----------------------

There are two numbers DMTHA gives you in detail level 3 and up about the
level's difficulty: the healthwise difficulty and the ammowise difficulty.
The healthwise difficulty is the ratio of the monsters vs. the total
health in the level. I don't know how to implement armor, so it's just
ignored for now. Maybe I'll make armor count too in future versions. Anyway,
the higher the number, the harder the level is for you to survive in. The
ammowise difficulty is the ratio of the monsters vs. the total ammo in the
level. The higher the number, the harder it is not to run out of ammo. Not
always, though, since many times many monsters kill each other, and many can
be killed using the berserk/chainsaw (see Doom2 level 8 for a great example of
a miscalculated difficulty, both healthwise and ammowise).

I hope these difficulty estimates can help.

History
-------

Here are the improvements in DMTHA from the various versions:

0.95 - initial version
0.96 - fixed input/output problem
       made output a lot more readable
0.97 - added switches support
       added /A switch
       added /S switch
       added /N switch
       added /U switch
       added /Mmapname switch
0.98 - fixed case problem: switches and mapnames don't have to be uppercase now
       wad name now appears without full path and without varying case
0.99 - added /P switch for painelementals
       added very important /D switch for varying detail levels
       fixed some display bugs
       changed items to be written only if they are actually on the map
       added /R switch for report file
       fixed another small display problem
1.00 - added /F find feature
       no serious bugs found/reported, ready for first release
1.01 - added difficulty health/ammo calculations to detail level 3 and up
1.02 - added startup health & ammo to difficulty calculation
1.03 - added /I switch

Future plans
------------

Automatically create a lmp, finishing that level on Ultra-Violence with 100%
kills and secrets, for that level. Just kidding! I have no ideas right now ;-)

If you have any ideas for further improvement, please mail me at
<yonatan.donner@tbu.excellnet.co.il> and let me know them.

Things Types
------------

These are the thing types for use with the /F switch.

Enemies:

3004 Trooper
   9 Sergeant
  84 SS Soldier
3001 Imp
  65 Heavy Weapons Dude
3002 Demon
  58 Spectre
3006 Lost Soul
  66 Revenant
3005 Cacodemon
  71 Pain Elemental
  68 Arachnotron
  69 Hell Knight
  67 Manucubs
  64 Archvile
3003 Baron of Hell
   7 Spiderdemon
  16 Cyberdemon

Weapons:

2005 Chainsaw
2001 Shotgun
  82 Super Shotgun
2002 Chaingun
2003 Rocket Launcher
2004 Plasma Gun
2006 BFG9000

Ammo:

2007 10 Bullets
2008 4 Shells
2010 1 Rocket
2047 20 Cells
2048 50 Bullets
2049 20 Shells
2046 5 Rockets
  17 100 Cells
   8 Backpack

Health:

2014 1% Health
2011 Stimpak
2012 Medikit
2023 Berserk
2013 Soulsphere
  83 Megasphere

Armor:

2015 1% Armor
2018 100% Armor
2019 200% Armor

Misc. Items:

2022 Invulnerability
2024 Partial Invisibility
2025 Radiation Suit
2026 Computer Automap
2045 Light Amp Goggles

Keys:

   5 Blue Key (card)
  40 Blue Key (skull)
  13 Red Key (card)
  38 Red Key (skull)
   6 Yellow Key (card)
  39 Yellow Key (skull)

Information source
------------------
The excellent information sources I used to program DMTHA are:

The Unofficial Doom specs v1.666 by Matt Fell
The Unofficial Doom FAQ v6.666 by Hank Leukart

Credits
-------
Thanks go to the writers of the above-mentioned information sources, id
Software for these wonderful games and of course Andreas "Anthe" Kren (who
thought of the /f idea), Peo Sjoblom and Richard J. Sham for testing and many
helpful ideas.

That's it
---------
If you have anything to say about DMTHA, please don't hesitate to mail me.
I have no more ideas for further improvements but I'm not sure yet if I
might have some in the future, so there may be future versions.

Yonatan Donner
<yonatan.donner@tbu.excellnet.co.il>
