WarCraft II PUD Specs

This information was compiled by Daniel Lemberg, with a trusty hex editor
and a copy of WarCraft II. If you find out what any of the unknown
sections are, let me know at lemberg@bayserve.net, and I'll add your name
and accomplishments to Appendix E. The most recent version of this file
can be obtained at http://www.bayserve.net/~lemberg

In the context of this doc, a byte is an 8 bit unsigned value, a word is a
16 bit unsigned value, and a long is a 32 bit unsigned value. 

Sections:

	4 bytes		header
	long		length
	...		data

0: Section 'TYPE', identifies as a PUD file

	9 bytes		null terminated type ('WAR2 MAP')
	7 bytes		id tag

1: Section 'VER ', identifies PUD version

	word		version ($11)

2: Section 'DESC', PUD description

	32 bytes	null terminated description

3: Section 'OWNR', identifies controller of each side

	8 bytes		the 8 player slots
	7 bytes		nobody, set to $03
	byte		neutral, set to $02

	should be:

	$02		neutral
	$03		nobody
	$04		computer
	$05		human
	$06		rescue (passive)
	$07		rescue (active)

4: Section 'ERA ', terrain type

	word		terrain

	should be:

	$00		forest
	$01		winter
	$02		wasteland
	$03		swamp

5: Section 'DIM ', map dimensions

	word		x
	word		y

6: Section 'UDTA', Unit Data (this section is optional)

	word		use default data (0 no, 1 yes)
	110 bytes	first construction frame
	110 bytes	second construction frame
	127 words	terrain independent unit graphics (obsolete)
	127 words	summer unit graphics (obsolete)
	127 words	winter unit graphics (obsolete)
	127 words	wasteland unit graphics (obsolete)
	110 longs	sight range
	110 words	hit points
	110 bytes	magic (0 no, 1 yes)
	110 bytes	build time
	110 bytes	1/10 gold cost
	110 bytes	1/10 lumber cost
	110 bytes	1/10 oil cost
	110 longs	unit size (x then y)
	110 longs	box size (x then y)
	110 bytes	attack range
	110 bytes	reaction range
	110 bytes	unknown
	110 bytes	armor
	110 bytes	selectable via rectangle (0 no, 1 yes)
	110 bytes	priority (the higher, the fewer)
	110 bytes	basic damage
	110 bytes	piercing damage
	110 bytes	weapons upgradable (0 no, 1 yes)
	110 bytes	armor upgradable (0 no, 1 yes)
	110 bytes	missile weapon

		0x00	lightning
		0x01	griffon hammer
		0x02	dragon breath
		0x03	flame shield
		0x04	flame shield (self)
		0x05	blizzard
		0x06	death and decay
		0x07	big cannon
		0x08	black powder
		0x09	heal effect
		0x0a	touch of death
		0x0b	rune
		0x0c	tornado
		0x0d	catapult rock
		0x0e	ballista bolt
		0x0f	arrow
		0x10	axe
		0x11	submarine missile
		0x12	turtle missile
		0x13	dark flame
		0x14	bright flame
		0x15	blood
		0x16	more black powder
		0x17	explosion
		0x18	small cannon
		0x19	metal spark
		0x1a	mini-explosion
		0x1b	demon fire
		0x1c	green cross
		0x1d	none

	110 bytes	unit type (0 land, 1 fly, 2 naval)
			only changes appearance
	110 bytes	decay rate (dies in rate * 6 secs time, 0 never decays)
			only applies to units you build or create via spell
	110 bytes	unknown
	58 bytes	(1: can move, 2: peasant, 4: sapper)
			only the first 58 units, sometimes crashes if wrong
	110 words	point value for killing unit
	110 bytes	can target (1 land, 2 sea, 4 air, OR together)
			note: some missiles can't hit air units
	110 longs	flags

	bit     1               2               4               8
	0       unused (?)
	1       deposit oil     sapper          mage            hits back
	2       big tower       oil well        gold mine       hero
	3       shore building  spells          deposit wood    attack
	4       deposit gold                    can bombard     is undead
	5       peaasant        tanker          transport       oil well
	6       critter         building        is sub          sees subs
	7       land            fly             corpse explodes naval

	See Appendix A for correct order of units inside the 110 values.

7: Section 'UGRD', Upgrade Data, (this section is optional)

	byte		use default data (0 no, 1 yes)
	52 bytes	upgrade time
	52 words	gold cost
	52 words	lumber cost
	52 words	oil cost
	52 words	upgrade icon
	52 words	group applies to
	52 longs	unknown

	See Appendix B for correct order of upgrades inside the 52 values.

8: Section 'SIDE', Identifies race of each player

	8 bytes		the 8 player slots
	7 bytes		garbage, set  to $00
	1 byte		nuetral, set to $02

	should be:

	$00		human
	$01		orc
	$02		neutral

9: Section 'SGLD', Starting gold

	8 words		gold for the 8 players
	7 words		garbage
	1 word		gold for neutral

10: Section 'SLBR', Starting lumber

	8 words		lumber for the 8 players
	7 words		garbage
	1 word		lumber for neutral

11: Section 'SOIL', Starting oil

	8 words		oil for the 8 players
	7 words		garbage
	1 word		oil for neutral

12: Section 'AIPL', AI of each player

	8 bytes		ai for the 8 players
	7 bytes		garbage ($00)
	1 byte		ai for neutral ($00)

	See Appendix C for the known AIs.

13: Section 'MTXM', tiles map

	X*Y words	tile

	See Appendix D for general info on map tiles.

14: Section 'SQM ', movement map

	X*Y words

	should be: 

	$0001		land
	$0002		coast (corner?)
	$0011		dirt
	$0040		water
	$0081		forest and mountains
	$0082		coast
	$008d		walls (crashes if not really a wall)

	Other good values:

	$0000		bridge (land, navy, air)
	$0fxx		space (nothing)
	$02xx		cave (no birds)

15: Section 'OILM', obsolete oil map

	X*Y bytes	just set it all to $00

16: Section 'REGM', action map

	X*Y words

	should be:

	$0000		water
	$4000		land
	$faff		island (no trans, no land)
	$fbff		wall
	$fdff		mountains
	$feff		forest

17: Section 'UNIT', Units

	length/8 units, where a unit is:

	word		x coord
	word		y coord
	byte		type
	byte		owner
	word		if gold mine or oil well, contains 2500 * this
			otherwise 0 passive 1 active

Appendix A: Unit Types

	00		infantry
	01		grunt
	02		peasant
	03		peon
	04		ballista
	05		catapult
	06		knight
	07		ogre
	08		archer
	09		axethrower
	0a		mage
	0b		death knight
	0c		paladin
	0d		ogre-mage
	0e		dwarves
	0f		goblin sapper
	10		attack peasant
	11		attack peon
	12		ranger
	13		berserker
	14		alleria
	15		teron gorefiend
	16		kurdan and sky'ree
	17		dentarg
	18		khadgar
	19		grom hellscream
	1a		human tanker
	1b		orc tanker
	1c		human transport
	1d		orc transport
	1e		elven destroyer
	1f		troll destroyer
	20		battleship
	21		juggernaught
	23		deathwing
	26		gnomish submarine
	27		giant turtle
	28		gnomish flying machine
	29		goblin zepplin
	2a		gryphon rider
	2b		dragon
	2c		turalyon
	2d		eye of kilrogg
	2e		danath
	2f		khorgath bladefist
	31		cho'gall
	32		lothar
	33		gul'dan
	34		uther lightbringer
	35		zuljin
	37		skeleton
	38		daemon
	39		critter
	3a		farm
	3b		pig farm
	3c		human barracks
	3d		orc barracks
	3e		church
	3f		altar of storms
	40		human scout tower
	41		orc scout tower
	42		stables
	43		ogre mound
	44		gnomish inventor
	45		goblin alchemist
	46		gryphon aviary
	47		dragon roost
	48		human shipyard
	49		orc shipyard
	4a		town hall
	4b		great hall
	4c		elven lumber mill
	4d		troll lumber mill
	4e		human foundry
	4f		orc foundry
	50		mage tower
	51		temple of the damned
	52		human blacksmith
	53		orc blacksmith
	54		human refinery
	55		orc refinery
	56		human oil well
	57		orc oil well
	58		keep
	59		stronghold
	5a		castle
	5b		fortress
	5c		gold mine
	5d		oil patch
	5e		human start
	5f		orc start
	60		human guard tower
	61		orc guard tower
	62		human cannon tower
	63		orc cannon tower
	64		circle of power
	65		dark portal
	66		runestone
	67		human wall
	68		orc wall

Appendix B: Upgrade types

	00		sword 1
	01		sword 2
	02		axe 1
	03		axe 2
	04		arrow 1
	05		arrow 2
	06		spear 1
	07		spear 2
	08		human shield 1
	09		human shield 2
	0a		orc shield 1
	0b		orc shield 2
	0c		human ship cannon 1
	0d		human ship cannon 2
	0e		orc ship cannon 1
	0f		orc ship cannon 2
	10		human ship armor 1
	11		human ship armor 2
	12		orc ship armor 1
	13		orc ship armor 2
	14		catapult 1
	15		catapult 2
	16		ballista 1
	17		ballista 2
	18		train rangers
	19		longbow
	1a		ranger scouting
	1b		ranger marksmanship
	1c		train berserkers
	1d		lighter axes
	1e		berserker scouting
	1f		berserker regeneration
	20		train ogre-mages
	21		train paladins
	22		holy vision
	23		healing
	24		exorcism
	25		flame shield
	26		fireball
	27		slow
	28		invisibility
	29		polymorph
	2a		blizzard
	2b		eye of kilrogg
	2c		bloodlust
	2d		raise dead
	2e		death coil
	2f		whirlwind
	30		haste
	31		unholy armor
	32		runes
	33		death and decay

Appendix C: Computer AIs

	$00		land attack
	$01		passive
	$02		Orc 3
	$03		Human 4
	$04		Orc 4
	$05		Human 5
	$06		Orc 5
	$07		Human 6
	$08		Orc 6
	$09		Human 7
	$0A		Orc 7
	$0B		Human 8
	$0C		Orc 8
	$0D		Human 9
	$0E		Orc 9
	$0F		Human 10
	$10		Orc 10
	$11		Human 11
	$12		Orc 11
	$13		Human 12
	$14		Orc 12
	$15		Human 13
	$16		Orc 13
	$17		Human 14 (Orange)
	$18		Orc 14 (Blue)
	$19		sea attack
	$1a		air attack
	$1b		Human 14 (Red)
	$1c		Human 14 (White)
	$1d		Human 14 (Black)
	$1e		Orc 14 (Green)
	$1f		Orc 14 (White)
	$20		Expansion 1
	...
	$52		Expansion 51

Appendix D: General map tiles

	solid tiles

	001x		light water
	002x		dark water
	003x		light coast
	004x		dark coast
	005x		light ground
	006x		dark ground
	007x		forest
	008x		mountains
	009x		human wall
	00ax		orc walls
	00bx		human walls
	00cx		orc walls

	boundary tiles

	09..		orc wall
	08..		human wall
	07..		forest and grass
	06..		dark grass and grass
	05..		coast and grass
	04..		mount and coast
	03..		dark coast and coast
	02..		water and coast
	01..		dark water and water

	where .. is:

	filled	clear
	0x	Dx	upper left
	1x	Cx	upper right
	2x	Bx	upper half
	3x	Ax	lower left
	4x	9x	left half
	7x	6x	lower right
	8x	5x	upper left, lower right

	Black Plague tiles: these tiles have no swamp terrain
	counterpart and must be remapped.

	$003a	$003b	$004a	$004b

Appendix E: Contributers

	Scorpions (guyg2512@ele.etsmtl.ca)

		Found the extended missile types, such as the flame shield
		and blizzard missiles.

	Alexander Cech (e8900070@student.tuwien.ac.at)

		Discovered the construction frames, and the unit graphics.

	 Mark Kinkead (mok@mars.superlink.net)

		Identified the reaction range section of the UDTA.

