XML:BINA/OBJC/DOOR

From OniGalore
< XML:BINA‎ | OBJC
Revision as of 15:54, 12 May 2024 by Paradox-01 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
DOOR : Door
XML modding tips
  • See HERE to start learning about XML modding.
  • See HERE if you are searching for information on how to handle object coordinates.
  • See HERE for some typical modding errors and their causes.
XML.png
XML

AKEV << Other file types >> CONS

TMBD << Other BINA >> ONIE

CONS << Other OBJC >> FLAG

switch to OBD page

General information

  • The XML on this page was tested with OniSplit version 0.9.61.0 and 0.9.82.0.
  • A BINACJBODOOR is level-specific (levelx_Final.dat).
  • All original doors and their locklights can be seen HERE.

File structure

<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <Objects>
        [...]
   </Objects>
</Oni>

[...] means at least one door. Paste all your door data into there (this includes the <DOOR Id="...">/</DOOR> tag).

Example

For level import via XML master file, use a pre-compiled (*.oni) file as part of a relative file path, e.g. doors/wh_door1dbl.oni

<DOOR Id="7233">
   <Header>
       <Flags>Gunk</Flags>
       <Position>-652 0 -753</Position>
       <Rotation>0 0 0</Rotation>
   </Header>
   <OSD>
       <Class>wh_door1dbl</Class>
       <DoorId>1</DoorId>
       <KeyId>0</KeyId>
       <Flags>InitialLocked InDoorFrame DoubleDoor</Flags>
       <Center>-652 16.5 -753</Center>
       <SquaredActivationRadius>900</SquaredActivationRadius>
       <Texture1></Texture1>
       <Texture2></Texture2>
       <Events>
           <ActivateTurret TargetId="1" />
       </Events>
   </OSD>
</DOOR>

Tags

Tag Type Description
<Objects> -
<DOOR Id="..."> int32 Use any number; no need to for it be unique. — For level imports, use <Door>.
<Header> -
<Flags> flag Object flags. Used during development, ignore them. — Optional tag for level import.
<Position> float x3 XYZ position. For new doors, use a Y of 0 if the ground plane is 0. — Optional tag for level import, but should be used in any case.
<Rotation> float x3 XYZ rotation. "chr_debug_characters = 1" shows the player's facing, which can be used for door's Y value. X and Z should be 0. — Optional tag for level import.
<OSD> -
<Class> char[63] DOORfile.oni (don't use file prefix/suffix) For level import via XML master file, use a pre-compiled (*.oni) file as part of a relative file path, e.g. doors/TCdouble.oni
<DoorId> int16 Can be used with BSL commands. — Optional tag for level import but should be used in any case.
<KeyId> int16 Ignore it. — Optional tag for level import.
<Flags> flag Optional tag for level import.
None
InitialLocked
Door is initially locked (at level load or after calling reset_mechanics)
InDoorFrame
? (no visible effect)
Manual
Require player to press action key to open door
DoubleDoor
A door with two parts
Mirror
Mirrors door along its Z axis
OneWay
One side locked, other side unlocked
Reverse
One side unlocked, other side locked
Jammed
Freeze door (can't open/close)
InitialOpen
<Center> float x3 X Y Z. <Center> Y is usually 15 units above door's <Position> Y. — Optional tag for level import, but should be used in any case.
<SquaredActivationRadius> float Optional tag for level import; default value is 900.
<Texture1> char[63] TXMPfile.oni (don't use file prefix/suffix) Used to replaces the doors default texture coming with the M3GM. — Optional tag for level import.

Use a capitalized file name for this TXMP.

<Texture2> char[63] TXMPfile.oni (don't use file prefix/suffix) Can be used with double doors. — Optional tag for level import.

Use a capitalized file name for this TXMP.

<Events> int16 You can use multiple events. — Optional tag for level import.
<Script Function="call_this_BSL_function" /> char[32] Name of BSL function. For example if you use "call_this_BSL_function" here, then write in your BSL script:
func call_this_BSL_function
{
     dmsg "hi"
}
<ActivateTurret TargetId="Id" /> int16
<DeactivateTurret TargetId="Id" /> int16
<ActivateConsole TargetId="Id" /> int16
<DeactivateConsole TargetId="Id" /> int16
<ActivateAlarm TargetId="Id" /> int16
<DeactivateAlaram TargetId="Id" /> int16
<ActivateTrigger TargetId="Id" /> int16
<DeactivateTrigger TargetId="Id" /> int16
<LockDoor TargetId="Id" /> int16
<UnlockDoor TargetId="Id" /> int16