- 1. DF Specs
- 2. Where to find Dark Forces / Outlaws related utilities
- 3. In-Game editor
- 4. Decompilation of HLP files
- 5. Outlaws LAB file format
- Testing Outlaws levels
- 6. Outlaws specification notes
CHM file: DF Specs
Raw HTML files: DF Specs
Original HLP file: DF Specs
Screenshot of ASCII art that was messed up in "Adjoin/Walk/Mirror Mechanism":
Other help files were not converted, as they are of limited use.
The Outlaw Dad Files
I suggest "Lawmaker Complete Install".
YouTube tutorial
No idea where to find the necessary file OLEDIT.DLL
...
CHM file was generated from original HLP file as described in this tutorial: http://www.help-info.de/en/Help_Info_WinHelp/hw_converting.htm#Decompiling
Basic info is here: Reverse engineering LucasArts Outlaws
Testing and generating log file.
OLWIN /df outlaws.log hideoutz.lvt
Various known flags for Outlaws can be seen in Lawmaker editor.
ATX are animated textures.
ATX files contain simple instructions that define the texture's animation, sounds and pauses.
They can be scripted with INF files. They can be influenced by shooting at them.
They can be affected by game code also, I think (for example portraits of captured or killed bad guys in Handfull of Missions
expansion.)
Question: What is the default rate of an ATX? Some ATX files don't start with RATE instruction (SWITCH.ATX)
).
Available instructions:
RATE [num]
- sets animation playback rate (presumably in FPS).
This is only ever used as the first instruction, so maybe it cannot appear anywhere else. Some experimentation should be done here.TEXTURE [texture name]
- sets texture to given.START_SOUND [num] [sound name]
- starts given sound.
Purpose ofnum
is unknown. In game it is only set to64
.STOP
- pauses the animation.
It seems that if animation is on aSTOP
then it starts again when:- The wall is triggered via an INF file.
- The player shoots it.
Possibly wall with this texture needsWALL_DAMAGES_PLAYER
flag (which should probably be namedPLAYER_DAMAGES_WALL
). This is just a guess. Some experimentation should be done here.
GOTO [instruction index]
- goes to instruction with given index.
Note: first instruction (alwaysRATE
in game) has index0
.GOTO STOP [num]
- unknown.
This instruction is used only inBWLIBRY1.ATX
andBALBRY4.ATX
. However those textures don't seem to be used in the game. It is not known if those instructions are a mistake (andGOTO
was intended), or in fact such instructions exist and do something. Some experimentation should be done here.
Notes:
- I assume that only STOP and TEXTURE instructions consumes a clock cycle. All other instructions execute immediately. This needs investigation.
- I assume that initial rate of an ATX is 24. This is just a guess. This needs investigation.
INF files contain scripting for the game.
Each INF file contains a set of ITEMS.
ITEM can be one of four kinds:
- Level:
ITEM: LEVEL
Not used in Outlaws nor Dark Forces (but mentioned in DF Specs). - Sector:
ITEM: SECTOR NAME: [sector name]
Describes behaviour for a sector.sector name
is sector's name, not index.
Sector can be moved, rotated, it's floor and ceiling can be moved, etc. - Wall:
ITEM: SECTOR NAME: [sector name] NUM: #[id]
Describes behaviour for a wall.id
is wall's identifier, not index.
Wall can have texture scrolled, can be adjoined to a sector, etc. - Line:
ITEM: LINE NAME: [sector name] NUM: #[id]
This is only used twice in the whole Outlaws game, to define a trigger.
I have no idea how it's different from Wall item. Some experimentation should be done here.
Example:
ITEM: SECTOR NAME: DRTHORAXDOOR02
SEQ
CLASS: ELEVATOR MORPH_SPIN2
CENTER: 15.125 464.000
EVENT_MASK: 32
SOUND: 1 DOOR4.WAV
SPEED: 60
STOP: 0 HOLD
STOP: 85 HOLD
SEQEND
Content of each item starts with SEQ
and end with SEQEND
.
Between those two can be one or more classes
. A class defines an elevator
or a trigger
.
- Elevator is basically a variable, with predefined
stops
, between which it can smoothly change values.
It's calledelevator
because this is what it's most often used for, but it can be used just as a variable. In that case a dummy sector is created somewhere outside of the map, and an elevator is attached to it. - Trigger is a set of messages to send or actions to perform that should be done when it is activated.
- Sectors and Walls with ITEM attached.
- It seems that each sector with a NAME is implicitly an ITEM (it can be used as SLAVE to some explicit ITEM elevator).
- Walls with ATX textures become implicitly items too, I think, because they can be triggered.
3DO
files can be influenced indirectly bywakeup
messages sent to a sector. Not used in Outlaws.
Each ATX should be updated each frame. It will use it's RATE and internal state to figure out which texture should be displayed. It should influence texture index in the wall this ATX is attached to.
Each elevator should be updated each frame. It can ifluence sector geometry, texturing, ATX files, lighting, player position (via floor scrolling, floor or sector movement)
Note: order of updates probably matters. Some experimentation is needed.
OBJECT: [num] [num] AUTO?
MESSAGE: USER_MSG [num]
- num can be 800, 801, 802, 805 or 806.OBJECT_EXCLUDE: [num] AUTO?
FLOOR OFFSETS
- Used only inHIDEOUT.LVT
.SHADES
- They seem to be identical in all levels.
They look like R G B, light level and some flag.