Jump to content

OBD:BINA/OBJC/CONS: Difference between revisions

explained flags; added Events section
m (break)
(explained flags; added Events section)
 
(15 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{OBD OBJC Header | align=center | type=CONS | prev=CMBT | next=DOOR | name=Console}}
:''This is about console instances. For the console class resource, see [[OBD:CONS]]
{{OBD OBJC Header | align=center | type=CONS | prev=CMBT | next=DOOR | name=Console | stuff=b_co}}




[[image:bin_r_co.gif]]
[[Image:bin_r_co.gif]]




{{Table}}
{{Table}}
{{OBDth}}
{{OBDth}}
{{OBDtr| 0x00 | char[4]  |FF0000| 43 4A 42 4F | OBJC      | object collection }}
{{OBDtr| 0x000 | char[4]  |FF0000| 43 4A 42 4F | OBJC      | objects }}
{{OBDtr| 0x04 | int32    |FFFF00| 4C 0E 00 00 | 5463      | size of the complete combat part from this postion in bytes }}
{{OBDtr| 0x004 | int32    |FFFF00| 4C 0E 00 00 | 5463      | size of the complete console part from this position in bytes }}
{{OBDtr| 0x08 | int32    |00FF00| 27 00 00 00 | 39        | unknown; do not change it }}
{{OBDtr| 0x008 | int32    |00FF00| 27 00 00 00 | 39        | object list version }}
{{OBDtr| 0x0C | int32    |00FFFF| 48 01 00 00 | 328      | size of the following element in bytes }}
{{OBDtr| 0x00C | int32    |00FFFF| 48 01 00 00 | 328      | size of the following element in bytes }}
{{OBDtrBK}}
{{OBDtrgroup}}
{{OBDtr| 0x00 | char[4]  |FFC8C8| 53 4E 4F 43 | CONS      | console }}
{{OBDtrsubgroup}}
{{OBDtr| 0x04 | int32    |FFFFC8| 57 12 00 00 | 5463      | old file ID }}
{{OBDtr| 0x000 | char[4]  |FFC8C8| 53 4E 4F 43 | CONS      | console }}
{{OBDtr| 0x08 | int32    |C8FFC8| 08 00 00 00 | 8        | unknown }}
{{OBDtr| 0x004 | int32    |FFFFC8| 57 12 00 00 | 5463      | object ID }}
{{OBDtr| 0x0C | float    |C8FFFF| 71 0C 6C 44 |-223.332321| x-position of unknown }}
{{OBDtr| 0x008 | int32    |C8FFC8| 08 00 00 00 | 8        | object flags; only used at runtime in Tool mode }}
{{OBDtr| 0x10 | float    |C8FFFF| 00 00 D8 C1 | 17.832436 | y-position (height) of unknown }}
{{OBDtr| 0x00C | float    |C8FFFF| 71 0C 6C 44 | 944.194396| x position of the console }}
{{OBDtr| 0x14 | float    |C8FFFF| 68 05 EB 41 |-116.511253| z-position of unknown }}
{{OBDtr| 0x010 | float    |C8FFFF| 00 00 D8 C1 | -27.000000| y position (height) of the console }}
{{OBDtr| 0x18 | float    |FFC8FF| 42 FD 17 38 | 0.000000  | rotation on the x-axis in degrees }}
{{OBDtr| 0x014 | float    |C8FFFF| 68 05 EB 41 | 29.377639| z position of the console }}
{{OBDtr| 0x1C | float    |FFC8FF| 00 00 87 43 | 0.000000 | rotation on the y-axis in degrees }}
{{OBDtr| 0x018 | float    |FFC8FF| 42 FD 17 38 |   0.000036| rotation on the x axis in degrees }}
{{OBDtr| 0x20 | float    |FFC8FF| 00 00 00 00 | 0.000000 | rotation on the z-axis in degrees }}
{{OBDtr| 0x01C | float    |FFC8FF| 00 00 87 43 | 270.000000| rotation on the y axis in degrees }}
{{OBDtr2|0x24 | char[64] |FFC800| Stand_and_Fire          | space for notes }}
{{OBDtr| 0x020 | float    |FFC8FF| 00 00 00 00 |   0.000000| rotation on the z axis in degrees }}
{{OBDtr| 0x64 | int32   |C800C8| 00 00 00 00 | 0         | combat ID (looked up from [[OBD:BINA/OBJC/CHAR|Character.BINA]]) }}
{{OBDtrsubgroup|end}}
{{OBDtr2|0x024 | char[63] |FFC800| console_data            | console class name (reference to 00761-console_data.[[OBD:CONS|CONS]] of level 0) }}
{{OBDtr| 0x063 | int16   |C800C8| 01 00       | 1        | console ID }}
{{OBDtr| 0x065 | bitset16 |C87C64| 08 00       | 8         | console options; the following bits are possible:
:0x01 - runtime: "initialized"; never used
:0x02 - runtime: console has been used
:0x04 - runtime: console is active (can be used); occurs when <tt>[[console_activate]]</tt> is called, or by calling <tt>[[console_reset]]</tt> if the "initially active" flag is set
:0x08 - initially active
:0x10 - runtime: "new"; never used
:0x20 - punch animation: Konoko will use TRAMKONOKOconsole_punch, a slow punch animation; not used in-game, probably meant to destroy a console
:0x40 - alarm console flag; AI can search for the console and use it on its own (no scripting required) when certain conditions ([[OBD:BINA/OBJC/CMBT#Alarm part|CMBT]] alarm behavior) are met
}}
{{OBDtr2|0x067 | char[63] |B0C3D4| _con_INFO              | "console deactivated" texture name (reference to 00800-_CON_INFO.[[OBD:TXMP|TXMP]] of level 0) }}
{{OBDtr2|0x0A6 | char[63] |E7CEA5| _con_INFO              | "console activated" texture name (reference to 00800-_CON_INFO.TXMP of level 0) }}
{{OBDtr2|0x0E5 | char[63] |FFDDDD| _con_INFO              | "console used" texture name (reference to 00800-_CON_INFO.TXMP of level 0) }}
{{OBDtr |0x124 | int16    |64AAAA| 01 00      | 1        | number of events }}
{{OBDtrgroup|1=First event (grey outline)}}
{{OBDtr |0x126 | int16    |EBEBEB| 01 00      | 1        | event type; the following values are used in the vanilla game data (see "Events" below for all values):
:01 - script function
:04 - activate console
:06 - activate alarm
:08 - activate trigger
:09 - deactivate trigger
:11 - unlock door
}}
{{OBDtr2|0x128 | char[32] |8C8CCC| level3c                | event parameter; here, the name of the script function to be called when the console is used }}
|}
|}


==Events==
Three OBJC types can trigger an event: a [[OBD:BINA/OBJC/CONS|console]] when activated, a [[OBD:BINA/OBJC/DOOR|door]] when opened, and a [[OBD:BINA/OBJC/TRIG|trigger laser]] when tripped. This is the full set of event types they can execute:


:1 - call script function
:2 - activate turret
:3 - deactivate turret
:4 - activate console
:5 - deactivate console
:6 - activate alarm
:7 - deactivate alarm
:8 - activate trigger
:9 - deactivate trigger
:10 - lock door
:11 - unlock door


;Example used is '''CJBOConsole.BINA''' from '''level3_Final'''
This allows all sorts of odd combinations, e.g. a trigger laser could activate another trigger laser or unlock a door, but Oni never does anything that unusual in the vanilla game data.


The data size of the parameter assigned to each of these events is a 2-byte int, except for "call script function" which provides space for a 32-byte string.


http://www6.fh-eberswalde.de/user/dkriesch/onistuff/images/bin_r_co.gif
;Tool Mode dialog


[[Image:Tool dialog - Console Properties.png]]


;First console object (black outline) listed below


{{OBD OBJC Footer | type=CONS | prev=CMBT | next=DOOR | name=Console | family=Level }}


{|{{OBDtable}}
{{OBD}}
|align=center|
{|{{OBDtable}}
|- bgcolor="#FFDDBB" align="CENTER"
| width="15%" | '''Hex'''
| width="15%" | '''Translation'''
| width="70%" | '''Meaning'''
|-
| bgcolor="#FFC8C8" | 53 4E 4F 43
| CONS
| align="LEFT" | console
|-
| bgcolor="#FFFFC8" | 57 12 00 00
| 5463
| align="LEFT" | old file ID
|-
| bgcolor="#C8FFC8" | 08 00 00 00
| 8
| align="LEFT" | unknown
|-
| bgcolor="#C8FFFF" | 71 0C 6C 44
| 944.194396
| align="LEFT" | x-position of the spawn point of the console
|-
| bgcolor="#C8FFFF" | 00 00 D8 C1
| -27.000000
| align="LEFT" | y-position (height) of the spawn point of the console
|-
| bgcolor="#C8FFFF" | 68 05 EB 41
| 29.377639
| align="LEFT" | z-position of the spawn point of the console
|-
| bgcolor="#FFC8FF" | 42 FD 17 38
| 0.000036
| align="LEFT" | rotation on the x-axis in degrees
|-
| bgcolor="#FFC8FF" | 00 00 87 43
| 270.000000
| align="LEFT" | rotation on the y-axis in degrees
|-
| bgcolor="#FFC8FF" | 00 00 00 00
| 0.000000
| align="LEFT" | rotation on the z-axis in degrees
|-
| colspan="2" bgcolor="#FFC800" | <tt>console_data</tt>
| align="LEFT" | link by name to global console class (console_data.[[OBD:CONS|CONS]])
|-
| bgcolor="#C800C8" | 01 00
| 1
| align="LEFT" | console ID
|-
| bgcolor="#C87C64" | 08 00
| 8
| align="LEFT" | console options (bitset, see below)
|-
| colspan="2" bgcolor="#B0C3D4" | <tt>_con_INFO</tt>
| align="LEFT" |"console deactivated" texture : link by name to global texture _CON_INFO.[[OBD:TXMP|TXMP]]
|-
| colspan="2" bgcolor="#E7CEA5" | <tt>_con_INFO</tt>
| align="LEFT" |"console activated" texture : link by name to global texture _CON_INFO.[[OBD:TXMP|TXMP]]
|-
| colspan="2" bgcolor="#FFDDDD" | <tt>_con_INFO</tt>
| align="LEFT" |"console used" texture : link by name to global texture _CON_INFO.[[OBD:TXMP|TXMP]]
|-
| bgcolor="#64AAAA" | 01 00
| 1
| align="LEFT" | amount of console events
|-
! colspan="3" |First event (grey outline) listed below
|-
| bgcolor="#EBEBEB" | 01 00
| 1
| align="LEFT" | console event type (see below); here, "execute script" when the console is used
|-
| colspan="2" bgcolor="#8C8CCC" | <tt>level3c</tt>
| align="LEFT" | console event parameter (see below); here, string to be fed to the script engine
|}
|}
;Console events
:The number of events is specified at 0x124, first event starts at 0x126
:Event consists of a '''short''' (event type) and of a parameter (either another '''short''' or a 32-byte string)
::(see below for the event types and the corresponding parameters)
:If necessary (i.e., if there are no events, of if there is an even number of script events),
::the CONS object is completed to a 4-byte multiple size by means of another (null) '''short'''.
;Console event ID - description - event parameter type
:0x01 - execute script - char[32]
:0x02 - activate turret - short
:0x03 - deactivate turret - short
:0x04 - activate console - short
:0x05 - deactivate console - short
:0x06 - activate alarm - short
:0x07 - deactivate alarm - short
:0x08 - activate trigger - short
:0x09 - deactivate trigger - short
:0x0A - lock door - short
:0x0B - unlock door - short
;Console options bitset
:0x01 - unknown, never used
:0x02 - unknown, never used
:0x04 - unknown, never used
:0x08 - console active at level load
:0x10 - unknown, never used
:0x20 - use punch animation (??? [[User:Geyser|geyser]]); KONOKOconsole_punch animation is used, maybe relict of multiplayer  [[User:Loser|Loser]]
:0x40 - alarm console flag, AI2 can search for and use this console ON ITS OWN (no scripting) when certain conditions ([[OBD:BINA/OBJC/CMBT|CMBT]] alarm behavior) are met
:0x80 - unknown, never used
 
 
----
----
{{OBD TXT|align=center|size=19|onistuff=bina_consoles}}
----
----
{{OBD OBJC Footer|type=CONS|prev=CMBT|next=DOOR|name=Console|onistuff=b_co}}