OBD:ONWC: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(added skill indexes used by the vanilla weapons)
 
(66 intermediate revisions by 11 users not shown)
Line 1: Line 1:
{|align=right
{{OBD_File_Header | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Character | align=center}}
![[OBD:ONVL|ONVL]] << [[OBD:File types|Other file types]] >> [[OBD:OPge|OPge]]
 
|-
 
!<FONT SIZE=5>ONWC : Oni Weapon Class</FONT>
ONWC files in level[1-19]_Final are 0-byte files. The actual data is in the ONWC files of level 0; below is an example.
|-
 
![[OBD:File types/Global|Level 0 file]]
Unless specified otherwise, the coordinates are relative to the weapon's mesh (x = forwards, y = left, z = up).
|-
 
!Overview table of all ONCC (27 kB each) :<br>[http://www6.fh-eberswalde.de/user/dkriesch/onistuff/subfold/text/oni_onwc_dc.txt "," decimals] or [http://www6.fh-eberswalde.de/user/dkriesch/onistuff/subfold/text/oni_onwc_dp.txt "." decimals]<br>[http://geyser.oni2.net/OUP/ONWC.txt Struct def for OUP]
 
==0x000 to 0x0D7 - Weapon main part ==
[[Image:onwc_a.gif]]
 
 
{{Table}}
{{OBDth}}
{{OBDtr| 0x000 | res_id  |FF0000| 01 75 0E 00 | 3701          | 03701-w1_tap.ONWC }}
{{OBDtr| 0x004 | lev_id  |FFFF00| 01 00 00 00 | 0              | level 0 }}
|}
|}
There's an [[OBD:File types|empty]] ONWC file in every level, and the 12 actual ONWC files are in level 0.
;Example: '''w1_tap.ONWC''' (unless specified otherwise)
;Structure
*Chunk with the main weapon data (216 = 0xD8 bytes)
*Fixed-size array of 2 elements (128 = 0x80 bytes each) for firing modes
*Fixed-size array of 16 elements (80 = 0x50 bytes each) for weapon particles
*68-byte trailing chunk
*Blank filler (for a total file size of 1824 = 0x720 bytes)
;Coordinates
:Unless specified otherwise, they are relative to the weapon's mesh
:(x = forwards, y = left, z = up)


----
 
==0x00 - 0xD7 : Main part==
===0x008 to 0x053 - Laser sight parameters===
http://www6.fh-eberswalde.de/user/dkriesch/onistuff/images/onwc_a.gif
{{Table}}
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
{{OBDth}}
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
{{OBDtr| 0x008 | float    |FFC8C8| F5 A4 49 40 | 3.150693       | x-offset of laser sight origin }}
!Offset
{{OBDtr| 0x00C | float    |FFC8C8| F4 2C A5 3B | 0.005041       | y-offset of laser sight origin }}
!Hex
{{OBDtr| 0x010 | float    |FFC8C8| 21 4E D2 3E | 0.410752       | z-offset of laser sight origin }}
!Translation
{{OBDtr| 0x014 | float    |FFC8C8| 23 A6 7F 3F | 0.998629       | x-component of laser sight direction }}
!Meaning
{{OBDtr| 0x018 | float    |FFC8C8| AA 6C 56 BD | -0.052349     | y-component of laser sight direction }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr| 0x01C | float    |FFC8C8| 69 66 AA B7 | -0.000020     | z-component of laser sight direction }}
|0x00
{{OBDtr| 0x020 | float    |FFC8C8| 00 40 9C 45 |5000.000000     | maximal length of laser sight vector }}
| BGCOLOR="#FF0000" | 01 75 0E 00
{{OBDtr| 0x024 | color    |FFFFC8| 00 00 FF FF | 0, 0, 255; 255 | laser sight color (blue, green, red); laser sight transparency }}
| 3701
{{OBDtr| 0x028 | link    |C8FFC8| 01 94 05 00 | 1428           | crosshair texture (link to 01428-target_1A.[[OBD:TXMP|TXMP]]) }}
| ALIGN=LEFT | 03701-w1_tap.ONWC
{{OBDtr| 0x02C | color    |C8FFC8| FF FF FF 00 |255, 255, 255; 0| crosshair background color (blue, green, red); crosshair background transparency }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr| 0x030 | float    |C8FFC8| CD CC 4C 3F | 0.800000       | crosshair scale factor }}
|0x04
{{OBDtr| 0x034 | link    |C8FFFF| 01 95 05 00 | 1428          | locked crosshair texture (link to 01429-target_1B.[[OBD:TXMP|TXMP]]) }}
| BGCOLOR="#FFFF00" | 01 00 00 00
{{OBDtr| 0x038 | color    |C8FFFF| FF FF FF 00 |255, 255, 255; 0| locked crosshair background color (blue, green, red); locked crosshair background transparency }}
| 0
{{OBDtr| 0x03C | float    |C8FFFF| CD CC 4C 3F | 0.800000       | locked crosshair scale factor }}
| ALIGN=LEFT | level 0
{{OBDtr| 0x040 | link    |FFC8FF| 00 00 00 00 | unused        | tunnel texture (link to a [[OBD:TXMP|TXMP]]) file }}
|}
{{OBDtr| 0x044 | color    |FFC8FF| FF FF FF 00 |255, 255, 255; 0| tunnel background color (blue, green, red); tunnel background transparency }}
===Laser sight===
{{OBDtr| 0x048 | float    |FFC8FF| 00 00 80 3F | 1.000000       | tunnel scale factor }}
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
{{OBDtr| 0x04C | int32    |FFC800| 0F 00 00 00 | 15             | number of tunnel textures }}
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
{{OBDtr| 0x050 | float    |C800C8| 00 00 20 41 | 10.000000     | spacing of tunnel textures }}
!Offset
!Hex
!Translation
!Meaning
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x08
| BGCOLOR="#FFC8C8" | F5 A4 49 40
| 3.150693
| ALIGN=LEFT | x-offset of the origin
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x0C
| BGCOLOR="#FFC8C8" | F4 2C A5 3B
| 0.005041
| ALIGN=LEFT | y-offset of the origin
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x10
| BGCOLOR="#FFC8C8" | 21 4E D2 3E
| 0.410752
| ALIGN=LEFT | z-offset of the origin
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x14
| BGCOLOR="#FFC8C8" | 23 A6 7F 3F
| 0.998629
| ALIGN=LEFT | something like the stiffness (try setting it to 0.001 and lower)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x18
| BGCOLOR="#FFC8C8" | AA 6C 56 BD
| -0.052349
| ALIGN=LEFT | additional azimuth
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x1C
| BGCOLOR="#FFC8C8" | 69 66 AA B7
| -0.000020
| ALIGN=LEFT | additional elevation
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x20
| BGCOLOR="#FFC8C8" | 00 40 9C 45
| 5000.000000
| ALIGN=LEFT | maximal length of laser sight vector
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x24
| BGCOLOR="#FFFFC8" | 00 00 FF FF
| Red, opaque
| ALIGN=LEFT | laser sight color (RGBA)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x28
| BGCOLOR="#C8FFC8" | 01 94 05 00
| 1428
| ALIGN=LEFT | crosshair texture (link to 01428-target_1A.[[OBD:TXMP|TXMP]])
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x2C
| BGCOLOR="#C8FFC8" | FF FF FF 00
| White, transparent
| ALIGN=LEFT | crosshair background color (RGBA)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x30
| BGCOLOR="#C8FFC8" | CD CC 4C 3F
| 0.800000
| ALIGN=LEFT | crosshair scale factor
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x34
| BGCOLOR="#C8FFFF" | 01 95 05 00
| 1429
| ALIGN=LEFT | ??? texture (link to 01429-target_1B.[[OBD:TXMP|TXMP]])
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x38
| BGCOLOR="#C8FFFF" | FF FF FF 00
| White, transparent
| ALIGN=LEFT | ??? background color (RGBA)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x3C
| BGCOLOR="#C8FFFF" | CD CC 4C 3F
| 0.800000
| ALIGN=LEFT | ??? scale factor
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x40
| BGCOLOR="#FFC8FF" | 00 00 00 00
| not used
| ALIGN=LEFT | tunnel texture ([[OBD:TXMP|TXMP]] link)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x44
| BGCOLOR="#FFC8FF" | FF FF FF 00
| White, transparent
| ALIGN=LEFT | tunnel background color (RGBA)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x48
| BGCOLOR="#FFC8FF" | 00 00 80 3F
| 1.000000
| ALIGN=LEFT | tunnel scale factor
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x4C
| BGCOLOR="#FFC800" | 0F 00 00 00
| 15
| ALIGN=LEFT | number of tunnel textures
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x50
| BGCOLOR="#C800C8" | 00 00 20 41
| 10.000000
| ALIGN=LEFT | spacing of tunnel textures
|}
|}


===Ammo meter===
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
!Offset
!Hex
!Translation
!Meaning
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x54
| BGCOLOR="#C87C64" | 01 7E 0E 00
| 3710
| ALIGN=LEFT | link to 03710-tap_icon.[[OBD:TXMP|TXMP]]
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x58
| BGCOLOR="#C87C64" | 01 7F 0E 00
| 3711
| ALIGN=LEFT | link to 03711-tap_empty.[[OBD:TXMP|TXMP]]
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x5C
| BGCOLOR="#C87C64" | 01 80 0E 00
| 3712
| ALIGN=LEFT | link to 03712-tap_fill.[[OBD:TXMP|TXMP]]
|}
===Weapon===
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
!Offset
!Hex
!Translation
!Meaning
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x60
| BGCOLOR="#C87C64" | 01 76 0E 00
| 3702
| ALIGN=LEFT | link to 03702-.[[OBD:M3GM|M3GM]]
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x64
| BGCOLOR="#B0C3D4" COLSPAN=2 | <TT>w1_tap</TT>
| ALIGN=LEFT | name of the weapon
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x84
| BGCOLOR="#E7CEA5" | 00 00 80 3F
| 1.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x88
| BGCOLOR="#E7CEA5" | A6 92 2B 3D
| 0.041888
| ALIGN=LEFT | recoil (e.g. for '''w1_tap''' and '''w2_sap''')
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x8C
| BGCOLOR="#E7CEA5" | 92 0A 86 3E
| 0.261799
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x90
| BGCOLOR="#E7CEA5" | 00 00 A0 40
| 5.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x94
| BGCOLOR="#E7CEA5" | E2 A3 7B 3B
| 0.003839
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x98
| BGCOLOR="#E7CEA5" | 88 C3 E4 3A
| 0.001745
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x9C
| BGCOLOR="#E7CEA5" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xA0
| BGCOLOR="#E7CEA5" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xA4
| BGCOLOR="#E7CEA5" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xA8
| BGCOLOR="#E7CEA5" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xAC
| BGCOLOR="#E7CEA5" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xB0
| BGCOLOR="#E7CEA5" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xB4
| BGCOLOR="#E7CEA5" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xB8
| BGCOLOR="#E7CEA5" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xBC
| BGCOLOR="#E7CEA5" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xC0
| BGCOLOR="#FFDDDD" | 00 00
| 0
| ALIGN=LEFT | unknown; always zero
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xC2
| BGCOLOR="#FFDDDD" | 95 00
| 149
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xC4
| BGCOLOR="#FFDDDD" | A4 00
| 164
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xC6
| BGCOLOR="#FFDDDD" | 19 00
| 25
| ALIGN=LEFT | pause after reload in 1/60 seconds
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xC8
| BGCOLOR="#FFDDDD" | 0A 00
| 10
| ALIGN=LEFT | amount of shots
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xCA
| BGCOLOR="#FFDDDD" | 06 00
| 6
| ALIGN=LEFT | amount of particles
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xCC
| BGCOLOR="#FFDDDD" | 01 00
| 1
| ALIGN=LEFT | amount of firing modes
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xCE
| BGCOLOR="#FFDDDD" | 0A 00
| 10
| ALIGN=LEFT | pause before reload in 1/60 seconds
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xD0
| BGCOLOR="#FFDDDD" | 04 00
| 4
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xD2
| BGCOLOR="#FFDDDD" | 00 00
| 0
| ALIGN=LEFT | unknown; always zero
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xD4
| BGCOLOR="#FFDDDD" | 30
| 48
| ALIGN=LEFT | Flags 1 :


{| BORDER=0 CELLPADDING=0 CELLSPACING=0
;Crosshair
|- VALIGN=TOP
:Default crosshair appears where the laser sight hits environment, corpses, etc.
| ALIGN=RIGHT | 1 -&nbsp;
:Locked crosshair appears when the laser sight hits characters (including the shooter)
| unknown, never used
:"Tunnel" is used by '''w8_mbo''' as a complement to the crosshair
|- VALIGN=TOP
:'''w2_sap''', '''w5_sbg''', '''w7_scc''' and '''w9_scr''' use it with no crosshair
| ALIGN=RIGHT | 2 -&nbsp;
| '''weapon can't be holstered'''
|- VALIGN=TOP
| ALIGN=RIGHT | 4 -&nbsp;
| '''weapon reloads with energy cells'''
|- VALIGN=TOP
| ALIGN=RIGHT | 8 -&nbsp;
| '''weapon is a rifle (two-handed)'''
|- VALIGN=TOP
| ALIGN=RIGHT | 16 -&nbsp;
| unknown, used for w1_tap and w2_sap
|- VALIGN=TOP
| ALIGN=RIGHT | 32 -&nbsp;
| '''sustained fire'''
|- VALIGN=TOP
| ALIGN=RIGHT | 64 -&nbsp;
| '''you can't shoot ...'''
|- VALIGN=TOP
| ALIGN=RIGHT | 128 -&nbsp;
| unknown, used for w6_vdg
|}


|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xD5
| BGCOLOR="#FFDDDD" | C0
| 192
| ALIGN=LEFT | Flags 2 :


{| BORDER=0 CELLPADDING=0 CELLSPACING=0
===0x054 to 0x05F - Ammo meter===
|- VALIGN=TOP
{{Table}}
| ALIGN=RIGHT | 1 -&nbsp;
{{OBDth}}
| unknown, used for w4_psm
{{OBDtr| 0x054 | link    |C87C64| 01 7E 0E 00 | 3710          | link to 03710-tap_icon.[[OBD:TXMP|TXMP]] }}
|- VALIGN=TOP
{{OBDtr| 0x058 | link    |C87C64| 01 7F 0E 00 | 3711          | link to 03711-tap_empty.[[OBD:TXMP|TXMP]] }}
| ALIGN=RIGHT | 2 -&nbsp;
{{OBDtr| 0x05C | link    |C87C64| 01 80 0E 00 | 3712          | link to 03712-tap_fill.[[OBD:TXMP|TXMP]] }}
| unknown, used for w5_sbg and w11_ba1
|- VALIGN=TOP
| ALIGN=RIGHT | 4 -&nbsp;
| '''secondary fire enabled'''
|- VALIGN=TOP
| ALIGN=RIGHT | 8 -&nbsp;
| '''weapon can't be reloaded'''
|- VALIGN=TOP
| ALIGN=RIGHT | 16 -&nbsp;
| '''run, jump and creep disabled'''
|- VALIGN=TOP
| ALIGN=RIGHT | 32 -&nbsp;
| unknown, used for w11_ba1
|- VALIGN=TOP
| ALIGN=RIGHT | 64 -&nbsp;
| unknown, used for w1_tap, w2_sap and w3_phr
|- VALIGN=TOP
| ALIGN=RIGHT | 128 -&nbsp;
| '''laser sight visible'''
|}
|}


|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xD6
| BGCOLOR="#FFDDDD" | 02 00
| 2
| ALIGN=LEFT | Flags 3 :
{| BORDER=0 CELLPADDING=0 CELLSPACING=0
|- VALIGN=TOP
| ALIGN=RIGHT | 1 -&nbsp;
| unknown, never used
|- VALIGN=TOP
| ALIGN=RIGHT | 2 -&nbsp;
| unknown, used for w1_tap, w2_sap, w3_phr and w8_mbo
|- VALIGN=TOP
| ALIGN=RIGHT | 4 -&nbsp;
| unknown, never used
|- VALIGN=TOP
| ALIGN=RIGHT | 8 -&nbsp;
| '''weapon doesn't fade'''
|- VALIGN=TOP
| ALIGN=RIGHT | 16 -&nbsp;
| unknown, used for w4_psm
|- VALIGN=TOP
| ALIGN=RIGHT | 32 -&nbsp;
| unknown, never used
|- VALIGN=TOP
| ALIGN=RIGHT | 64 -&nbsp;
| unknown, never used
|- VALIGN=TOP
| ALIGN=RIGHT | 128 -&nbsp;
| unknown, never used
|}
|}


===0x060 to 0x0D7 - Weapon parameters===
{{Table}}
{{OBDth}}
{{OBDtr| 0x060 | link    |C87C64| 01 76 0E 00 | 3702          | link to 03702-.M3GM }}
{{OBDtr2|0x064 | char[32] |B0C3D4| w1_tap                      | weapon name }}
{{OBDtr| 0x084 | float    |E7CEA5| 00 00 80 3F | 1.000000      | weapon mouse sensitivity (applies to AI, too) }}
{{OBDtr| 0x088 | float    |E7CEA5| A6 92 2B 3D | 0.041888      | recoil base (e.g. for w1_tap and w2_sap) }}
{{OBDtr| 0x08C | float    |E7CEA5| 92 0A 86 3E | 0.261799      | recoil max }}
{{OBDtr| 0x090 | float    |E7CEA5| 00 00 A0 40 | 5.000000      | recoil factor }}
{{OBDtr| 0x094 | float    |E7CEA5| E2 A3 7B 3B | 0.003839      | recoil return speed }}
{{OBDtr| 0x098 | float    |E7CEA5| 88 C3 E4 3A | 0.001745      | recoil firing return speed }}
{{OBDtr| 0x09C | float    |E7CEA5| 00 00 00 00 | 0.000000      | secondHandVector X (disabled IK stuff) }}
{{OBDtr| 0x0A0 | float    |E7CEA5| 00 00 00 00 | 0.000000      | secondHandVector Y}}
{{OBDtr| 0x0A4 | float    |E7CEA5| 00 00 00 00 | 0.000000      | secondHandVector Z }}
{{OBDtr| 0x0A8 | float    |E7CEA5| 00 00 00 00 | 0.000000      | secondHandUpVector X}}
{{OBDtr| 0x0AC | float    |E7CEA5| 00 00 00 00 | 0.000000      | secondHandUpVector Y}}
{{OBDtr| 0x0B0 | float    |E7CEA5| 00 00 00 00 | 0.000000      | secondHandUpVector Z}}
{{OBDtr| 0x0B4 | float    |E7CEA5| 00 00 00 00 | 0.000000      | secondHandPosition X}}
{{OBDtr| 0x0B8 | float    |E7CEA5| 00 00 00 00 | 0.000000      | secondHandPosition Y}}
{{OBDtr| 0x0BC | float    |E7CEA5| 00 00 00 00 | 0.000000      | secondHandPosition Z}}
{{OBDtr| 0x0C0 | int16    |FFDDDD| 00 00      | 0              | freeTime (unused); always zero }}
{{OBDtr| 0x0C2 | int16    |FFDDDD| 95 00      | 149            | recoil animation type (149 {{=}} autopistol_recoil) }}
{{OBDtr| 0x0C4 | int16    |FFDDDD| A4 00      | 164            | reload animation type (164 {{=}} reload_pistol) }}
{{OBDtr| 0x0C6 | int16    |FFDDDD| 19 00      | 25            | pause after reload in 1/60 seconds }}
{{OBDtr| 0x0C8 | int16    |FFDDDD| 0A 00      | 10            | amount of shots }}
{{OBDtr| 0x0CA | int16    |FFDDDD| 06 00      | 6              | amount of particles }}
{{OBDtr| 0x0CC | int16    |FFDDDD| 01 00      | 1              | amount of firing modes }}
{{OBDtr| 0x0CE | int16    |FFDDDD| 0A 00      | 10            | pause before reload in 1/60 seconds }}
{{OBDtr| 0x0D0 | int16    |FFDDDD| 04 00      | 4              | release delay; delay between the moment the trigger is released and the moment the weapon stops firing }}
{{OBDtr| 0x0D2 | int16    |FFDDDD| 00 00      | 0              | padding; always zero }}
{{OBDtr| 0x0D4 | int32    |FFDDDD| 30          | 0x30 C0 02 00  | weapon options; the following bits are possible (values in hex):


----
:0x'''02''' 00 00 00 - weapon can't be holstered
:0x'''04''' 00 00 00 - weapon reloads with energy cells
:0x'''08''' 00 00 00 - weapon is a rifle (two-handed)
:0x'''10''' 00 00 00 - recoil affects aiming
:0x'''20''' 00 00 00 - sustained fire (applies only to primary fire)
:0x'''40''' 00 00 00 - runtime only; do not use
:0x'''80''' 00 00 00 - stun switcher; used for w6_vdg, see below


==0xD8 - 0x1D7 : Firing modes==
:0x00 '''01''' 00 00 - knockdown switcher; used for w4_psm, see below
There are two 128-byte firing mode slots in every ONWC file.
:0x00 '''02''' 00 00 - explosive; used for w5_sbg and w11_ba1
:0x00 '''04''' 00 00 - secondary fire enabled
:0x00 '''08''' 00 00 - barabbas weapon; see below
:0x00 '''10''' 00 00 - heavy weapon; run, jump and creep disabled
:0x00 '''20''' 00 00 - auto release trigger; used for w11_ba1
:0x00 '''40''' 00 00 - has release delay; see the release delay field above
:0x00 '''80''' 00 00 - laser sight visible


The actual number of firing modes is specified at 0xCC
:0x00 00 '''02''' 00 - crosshair scaling, used for w1_tap, w2_sap, w3_phr and w8_mbo
===0xD8 - 0x157 : Primary firing mode===
:0x00 00 '''08''' 00 - weapon doesn't fade
Offsets are given with respect to the start of the file.
:0x00 00 '''10''' 00 - drain ammo; used by w4_psm to decrement ammo while firing because its firing mode is continuous rather than repetitive
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
}}
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
!Offset
!Raw hex
!Value
!Meaning
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xD8
| BGCOLOR="#FFDDDD" | 00 00
| 0
| ALIGN=LEFT | unknown (1 for w9_scr)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xDA
| BGCOLOR="#FFDDDD" | 00 00
| 0
| ALIGN=LEFT | unknown; always zero
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xDC
| BGCOLOR="#64AAAA" | 23 A6 7F 3F
| 0.998629
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xE0
| BGCOLOR="#64AAAA" | 05 6D 56 3D
| 0.052350
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xE4
| BGCOLOR="#64AAAA" | F4 8D A9 37
| 0.000020
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xE8
| BGCOLOR="#64AAAA" | 05 6D 56 BD
| -0.052350
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xEC
| BGCOLOR="#64AAAA" | 23 A6 7F 3F
| 0.998629
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xF0
| BGCOLOR="#64AAAA" | D0 1D 0E B5
| -0.000001
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xF4
| BGCOLOR="#64AAAA" | F4 8D A9 B7
| -0.000020
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xF8
| BGCOLOR="#64AAAA" | D0 1D 0E B5
| -0.000001
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xFC
| BGCOLOR="#64AAAA" | 00 00 80 3F
| 1.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x100
| BGCOLOR="#64AAAA" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown; always zero
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x104
| BGCOLOR="#64AAAA" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown; always zero
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x108
| BGCOLOR="#64AAAA" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown; always zero
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x10C
| BGCOLOR="#64AAAA" | 23 A6 7F 3F
| 0.998629
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x110
| BGCOLOR="#64AAAA" | AE 6C 56 BD
| -0.052349
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x114
| BGCOLOR="#64AAAA" | AF 8D A9 B7
| -0.000020
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x118
| BGCOLOR="#64AAAA" | DC FE 08 3C
| 0.008362
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x11C
| BGCOLOR="#64AAAA" | 5C 11 23 3E
| 0.159246
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x120
| BGCOLOR="#64AAAA" | 39 C6 2A 3F
| 0.667087
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x124
| BGCOLOR="#64AAAA" | 00 00 61 44
| 900.000000
| ALIGN=LEFT | range of fire?
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x128
| BGCOLOR="#64AAAA" | 00 00 20 41
| 10.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x12C
| BGCOLOR="#64AAAA" | 00 00 20 40
| 2.500000
| ALIGN=LEFT | unknown; always the same
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x130
| BGCOLOR="#64AAAA" | 00 00 96 43
| 300.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x134
| BGCOLOR="#64AAAA" | 00 00 40 41
| 12.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x138
| BGCOLOR="#64AAAA" | 00 00 61 44
| 900.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x13C
| BGCOLOR="#EBEBEB" | 05 00
| 5
| ALIGN=LEFT | unknown; always the same
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x13E
| BGCOLOR="#EBEBEB" | 01 00
| 1
| ALIGN=LEFT | weapon ID
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x140
| BGCOLOR="#EBEBEB" | 00 00 00 00
| 0
| ALIGN=LEFT | unknown, 240 for w4_psm, 200 for v6_vdg
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x144
| BGCOLOR="#8C8CCC" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown, something with grenades (150 for SBG, 160 for WMC)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x148
| BGCOLOR="#8C8CCC" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | unknown, something with grenades (0.5 for SBG, 0.3 for WMC)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x14C
| BGCOLOR="#8C8CCC" | 00 00 34 43
| 180.000000
| ALIGN=LEFT | unknown (180 for w1_tap, 150 for w2_sap, 120 for w4_psm)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x150
| BGCOLOR="#8C8CCC" | 00 00 40 40
| 3.000000
| ALIGN=LEFT | unknown (3 for w1_tap, 3 for w2_sap, 10 for w4_psm)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x154
| BGCOLOR="#8C8CCC" | 50 77 D6 3D
| 0.104719
| ALIGN=LEFT | unknown (0.1 for w1_tap, 0.21 for w2_sap)
|}
|}


===0x158 - 0x1D7 : Secondary firing mode===
The only weapon for which these fields are not all zero is '''w11_ba1'''.


They are the exact counterparts of the fields at 0xD8 - 0x157.
'''stun switcher''' - if enemy is inside shooting distance (between min and max) and is '''knockdown'''ed/'''stun'''ed or '''blownup'''ped, AI with this weapon switches to melee for a time specified in a *fight timer* field


'''knockdown switcher''' -  if enemy is inside shooting distance (between min and max) and is '''knockdown'''ed or '''blownup'''ped, AI with this weapon switches to melee for a time specified in a *fight timer* field


----
'''barabbas weapon''' - reload disabled; also used for ai2_barabbas_retrievegun (it teleports a weapon to a character); nearest available gun becomes chosen if character had no weapon to begin, then always this weapon is teleported back to character (when command used again)


==0x1D8 - 0x6DC : Particles==
==0x0D8 to 0x1D7 - Firing modes==
Every ONWC has 16 particle slots (80 = 0x50 bytes each.)
Every ONWC has 2 firing mode slots (128 = 0x80 bytes each.)


The number of slots actually used by the weapon is specified at 0xCA.
The number of slots actually used by the weapon is specified at 0xCA.


Offsets are relative to the beginning of a slot.
===0x0D8 to 0x157 - Primary firing mode===
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
{{Table}}
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
{{OBDth}}
!Offset
{{OBDtr| 0x0D8 | int32    |64AAAA| 00 00 00 00 | 0             | firing mode options; only the following bit is used (value in hex):
!Raw hex
:0x'''01''' 00 00 00 - No wild shots}}
!Value
 
!Meaning
{{OBDtrMatrix4x3|0x0DC|EBEBEB|23 A6 7F 3F|05 6D 56 3D|F4 8D A9 37|05 6D 56 BD|23 A6 7F 3F|D0 1D 0E B5|F4 8D A9 B7|D0 1D 0E B5|00 00 80 3F|00 00 00 00|00 00 00 00|00 00 00 00|0.998629|0.052350|0.000020| -0.052350|0.998629| -0.000001| -0.000020| -0.000001|1.000000|0.000000|0.000000|0.000000| targeting inverse transform matrix - the inverse of the matrix that gives the targeting direction}}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
 
|0x00
{{OBDtrVector3| 0x10C |EBEBEB| 23 A6 7F 3F | AE 6C 56 BD | AF 8D A9 B7 | 0.998629 | -0.052349 | -0.000020 | targeting direction; sets orientation of firingspread }}
| BGCOLOR="#FF00C8" | AE 6C 56 3D
{{OBDtrVector3| 0x118 |EBEBEB| DC FE 08 3C | 5C 11 23 3E | 39 C6 2A 3F | 0.008362 | 0.159246 | 0.667087 | targeting origin; sets deviation of AI's aim from target's origin (target's origin + this vector {{=}} direction where to aim and fire) }}
| 0.052349
{{OBDtr| 0x124 | float    |EBEBEB| 00 00 61 44 | 900.000000     | prediction speed; the speed of the projectile that AI prediction should take into account when calculating where to fire in order to hit a moving target }}
| ALIGN=LEFT | unknown
{{OBDtr| 0x128 | float    |EBEBEB| 00 00 20 41 | 10.000000      | max. inaccuracy angle; sets max angle between weapon's aiming vector and target's position; when AI exceeds this angle (by recoil or target running away), AI stops shooting and aims weapon again straight to the target, then resume shooting }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr| 0x12C | float    |EBEBEB| 00 00 20 40 | 2.500000      | aim_radius; always the same; possibly related to the inaccuracy angle above }}
|0x04
{{OBDtr| 0x130 | float    |EBEBEB| 00 00 96 43 | 300.000000    | weapon sound sphere radius; defines radius of the AI sound sphere (gunfire type, see [[AI#Vision and hearing|HERE]] about AI sound spheres) which is created for a short moment when this weapon is fired }}
| BGCOLOR="#FF00C8" | 23 A6 7F 3F
{{OBDtr| 0x134 | float    |EBEBEB| 00 00 40 41 | 12.000000      | minimal shooting distance; if target is closer than this, the AI ceases fire and moves away from the target till at least this distance is achieved; this is a '''diameter, not a radius''', so effective distance from AI to target is half of this value }}
| 0.998629
{{OBDtr| 0x138 | float    |EBEBEB| 00 00 61 44 | 900.000000    | maximum shooting distance; if target is further than this, the AI ceases fire and moves towards the target until it is below this distance }}
| ALIGN=LEFT | unknown
{{OBDtr| 0x13C | int16    |8C8CCC| 05 00       | 5              | UNUSED; maximum startle misses; the maximum number of shots to which extra inaccuracy can be added when an AI begins firing at the player (always 5, but Oni does not use this field) }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr| 0x13E | int16    |8C8CCC| 01 00       | 1             | skill index (links weapon to the [[ONCC]] shooting skill table); here are the values used by Oni's ONWCs:
|0x08
:0x'''01''' 00 - w0_sec (not in game)
| BGCOLOR="#FF00C8" | C2 53 90 B3
:0x'''02''' 00 - w1_tap
| -6.720757e-8
:0x'''04''' 00 - w2_sap
| ALIGN=LEFT | unknown
:0x'''08''' 00 - w3_phr
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
:0x'''10''' 00 - w4_psm
|0x0C
:0x'''20''' 00 - w5_sbg
| BGCOLOR="#FF00C8" | 23 A6 7F 3F
:0x'''40''' 00 - w6_vdg
| 0.998629
:0x'''80''' 00 - w7_scc
| ALIGN=LEFT | unknown
:0x00 '''01''' - w8_mbo
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
:0x00 '''02''' - w9_scr
|0x10
:0x00 '''04''' - w10_sni (not in game)
| BGCOLOR="#FF00C8" | AE 6C 56 BD
:0x00 '''08''' - w11_ba1
| -0.052349
:0x00 '''10''' - w12_ba2}}
| ALIGN=LEFT | unknown
{{OBDtr| 0x140 | int32    |8C8CCC| 00 00 00 00 | 0             | fight timer, 240 for w4_psm, 200 for v6_vdg }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr| 0x144 | float    |FF00C8| 00 00 00 00 | 0.000000      | ballistic projectile speed for AI prediction purposes; if this field is unused, the projectile is assumed to be infinite speed; field is always zero except 150 for Superball Gun and 160 for Wave Motion Cannon's secondary trigger }}
|0x14
{{OBDtr| 0x148 | float    |FF00C8| 00 00 00 00 | 0.000000      | ballistic projectile gravity for AI prediction purposes; always zero except 0.5 for SBG and 0.3 for WMC's secondary trigger }}
| BGCOLOR="#FF00C8" | AF 8D A9 B7
{{OBDtr| 0x14C | float    |FF00C8| 00 00 34 43 | 180.000000    | length of a firing spread; AI will perform gunfire dodging when it finds itself inside of a firing spread (see {{SectionLink|AI|Basic combat behaviors}}); can be visualized with *ai2_showfiringspreads{{=}}1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm) }}
| -0.000020
{{OBDtr| 0x150 | float    |FF00C8| 00 00 40 40 | 3.000000      | width of the firing spread's base; can be seen by ai2_showfiringspreads{{=}}1 }}
| ALIGN=LEFT | unknown
{{OBDtr| 0x154 | float    |FF00C8| 50 77 D6 3D | 0.104719      | firing spread's skew; can be seen by ai2_showfiringspreads{{=}}1 (0.1 for w1_tap, 0.21 for w2_sap) }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x18
| BGCOLOR="#FF00C8" | BA 59 A9 B7
| -0.000020
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x1C
| BGCOLOR="#FF00C8" | 5B 02 85 35
| 0.000001
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x20
| BGCOLOR="#FF00C8" | 00 00 80 BF
| -1.000000
| ALIGN=LEFT | unknown
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x24
| BGCOLOR="#FF00C8" | 6F 63 57 40
| 3.365444
| ALIGN=LEFT | x-offset of the particle spawn
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x28
| BGCOLOR="#FF00C8" | B3 1D 89 BC
| -0.016738
| ALIGN=LEFT | y-offset of the particle spawn
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x2C
| BGCOLOR="#FF00C8" | C5 C1 2A 3F
| 0.667019
| ALIGN=LEFT | z-offset of the particle spawn
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x30
| BGCOLOR="#F0F096" COLSPAN=2 | <TT>w1_tap_e01</TT>
| ALIGN=LEFT | weapon particle (06226-3RAPw1_tap_e01.BINA)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x40
| BGCOLOR="#00C864" | 00 00
| 0
| ALIGN=LEFT | unknown; always zero
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x42
| BGCOLOR="#00C864" | 00 00
| 0
| ALIGN=LEFT | unknown; always zero
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x44
| BGCOLOR="#00C864" | 01 00
| 1
| ALIGN=LEFT | ammo decrement (different for the 2 firing modes of '''w11_ba1''')
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x46
| BGCOLOR="#00C864" | 0C 00
| 12
| ALIGN=LEFT | delay between shots in frames (12 frames = 0.2 seconds)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x48
| BGCOLOR="#00C864" | 04 00
| 4
| ALIGN=LEFT | unknown (looks like another delay)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x4A
| BGCOLOR="#00C864" | 00 00
| 0
| ALIGN=LEFT | unknown, used for w4_psm and w11_ba1 (looks like another delay)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x4C
| BGCOLOR="#00C864" | 00 00
| 0
| ALIGN=LEFT | if 1, particle is fired with '''fire2'''
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x4E
| BGCOLOR="#00C864" | 00 00
| 0
| ALIGN=LEFT | delay before firing
|}
|}
;Orientation
:The particle seems to be aligned with the x axis by default...
:Hopefully a few of the unknown floats define rotations




----
;Transform matrix
:Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.


==Ending==
===0x158 to 0x1D7 - Secondary firing mode===
http://www6.fh-eberswalde.de/user/dkriesch/onistuff/images/onwc_e.gif
The only vanilla weapon for which these fields are not all zero is '''w11_ba1'''. They are the exact counterparts of the fields at 0xD8 - 0x157.
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
 
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
==0x1D8 to 0x6D7 - Weapon particle array==
!Offset
Every ONWC has 16 particle slots (80 at 0x50 bytes each). The number of slots actually used by the weapon is specified at 0xCA. Offsets are relative to the beginning of a slot.
!Raw hex
 
!Value
 
!Meaning
{{Table}}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDth}}
|0x6D8
{{OBDtrBK|1=First of 16 elements (black outline).}}
| BGCOLOR="#00C8FF" COLSPAN=2 | <TT>weapon _empty</TT>
{{OBDtr| 0x000 | float    |F0F096| AE 6C 56 3D | 0.052349      | transformation matrix, xx term }}
| ALIGN=LEFT | empty weapon sound<BR>(08992-weapon_empty.grp.[[OBD:OSBD|OSBD]])<BR>(08993-weapon_empty.imp.[[OBD:OSBD|OSBD]])
{{OBDtr| 0x004 | float    |F0F096| 23 A6 7F 3F | 0.998629      | transformation matrix, xy term }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr| 0x008 | float    |F0F096| C2 53 90 B3 | -0.000000...  | transformation matrix, xz term }}
|0x6F8
{{OBDtr| 0x00C | float    |F0F096| 23 A6 7F 3F | 0.998629      | transformation matrix, yx term }}
| BGCOLOR="#C80040" | 00 00 00 00
{{OBDtr| 0x010 | float    |F0F096| AE 6C 56 BD | -0.052349      | transformation matrix, yy term }}
| 0
{{OBDtr| 0x014 | float    |F0F096| AF 8D A9 B7 | -0.000020      | transformation matrix, yz term }}
| ALIGN=LEFT | unknown; always zero
{{OBDtr| 0x018 | float    |F0F096| BA 59 A9 B7 | -0.000020      | transformation matrix, zx term }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr| 0x01C | float    |F0F096| 5B 02 85 35 | 0.000001      | transformation matrix, zy term }}
|0x6FC
{{OBDtr| 0x020 | float    |F0F096| 00 00 80 BF | -1.000000      | transformation matrix, zz term }}
| BGCOLOR="#FFCD96" | 01 81 0E 00
{{OBDtr| 0x024 | float    |F0F096| 6F 63 57 40 | 3.365444      | x-offset of particle to weapon }}
| 3713
{{OBDtr| 0x028 | float    |F0F096| B3 1D 89 BC | -0.016738      | y-offset of particle to weapon }}
| ALIGN=LEFT | link to 03713-w1_glow.[[OBD:TXMP|TXMP]]
{{OBDtr| 0x02C | float    |F0F096| C5 C1 2A 3F | 0.667019      | z-offset of particle to weapon }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr2|0x030 | char[16] |00C864| w1_tap_e01                  | particle name (reference to 06226-3RAPw1_tap_e01.[[OBD:BINA/PAR3|BINA]]) }}
|0x700
{{OBDtr| 0x040 | int32    |00C8FF| 00 00 00 00 | 0              | runtime only (pointer to particle class) }}
| BGCOLOR="#FFCD96" | 01 82 0E 00
{{OBDtr| 0x044 | int16    |00C8FF| 01 00      | 1              | ammo decrement (different for the 2 firing modes of w11_ba1) }}
| 3714
{{OBDtr| 0x046 | int16    |00C8FF| 0C 00      | 12            | delay between shots in frames (12 frames {{=}} 0.2 seconds) }}
| ALIGN=LEFT | link to 03714-w1_glow_ammo.[[OBD:TXMP|TXMP]]
{{OBDtr| 0x048 | int16    |00C8FF| 04 00      | 4              | 'roughjustice' delay between shots in frames }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr| 0x04A | int16    |00C8FF| 00 00      | 0              | number in frames for active firing mode (1st frame for activate); Used for w4_psm and w11_ba1 }}
|0x704
{{OBDtr| 0x04C | int16    |00C8FF| 00 00      | 0              | 0 {{=}} particle is triggered by fire1; 1 {{=}} particle is triggered by fire2; -1 {{=}} particle is triggered by both firing modes }}
| BGCOLOR="#C8C864" | 00 00 80 3F
{{OBDtr| 0x04E | int16    |00C8FF| 00 00      | 0              | delay before firing }}
| 1.000000
|}
| ALIGN=LEFT | x-scale factor of glow textures
 
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
 
|0x708
;Transformation matrix
| BGCOLOR="#C8C864" | 00 00 80 3F
:That's what defines orientation, stretching, etc. See [[OBD:CRSA|CRSA]] for details.
| 1.000000
 
| ALIGN=LEFT | z-scale factor of glow textures
==0x6D8 to 0x71F - End of file==
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
[[Image:onwc_e.gif]]
|0x70C
 
| BGCOLOR="#C8C864" | 76 65 EB 3F
 
| 1.839034
{{Table}}
| ALIGN=LEFT | x-offset of pickup handle
{{OBDth}}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr2|0x6D8 | char[32] |C80040| weapon _empty                | empty weapon sound (reference to 08993-weapon_empty.[[OBD:OSBD/OSIm|imp.OSBD]]) }}
|0x710
{{OBDtr| 0x6F8 | int32    |FFCD96| 00 00 00 00 | 0             | runtime only (pointer to empty weapon sound) }}
| BGCOLOR="#C8C864" | 96 4C A9 3D
{{OBDtr| 0x6FC | link    |C8C864| 01 81 0E 00 | 3713           | link to 03713-w1_glow.[[OBD:TXMP|TXMP]] }}
| 0.082666
{{OBDtr| 0x700 | link    |C8C864| 01 82 0E 00 | 3714           | link to 03714-w1_glow_ammo.[[OBD:TXMP|TXMP]] }}
| ALIGN=LEFT | y-offset of pickup handle
{{OBDtr| 0x704 | float    |0096C8| 00 00 80 3F | 1.000000       | x-scale factor of glow textures }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr| 0x708 | float    |0096C8| 00 00 80 3F | 1.000000       | z-scale factor of glow textures }}
|0x714
{{OBDtr| 0x70C | float    |0096C8| 76 65 EB 3F | 1.839034       | x-offset of pickup handle }}
| BGCOLOR="#C8C864" | 06 E2 14 3E
{{OBDtr| 0x710 | float    |0096C8| 96 4C A9 3D | 0.082666       | y-offset of pickup handle }}
| 0.145393
{{OBDtr| 0x714 | float    |0096C8| 06 E2 14 3E | 0.145393       | z-offset of pickup handle }}
| ALIGN=LEFT | z-offset of pickup handle
{{OBDtr| 0x718 | float    |0096C8| 00 00 00 00 | 0.000000       | hovering height of dropped weapon }}
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
{{OBDtr| 0x71C | char[4]  |FF80C0| AD DE       | dead           | unused }}
|0x718
| BGCOLOR="#C8C864" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | hovering height of unheld weapon
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x71C
| BGCOLOR="#0096C8" | AD DE
| dead
| ALIGN=LEFT | blank filler
|}
|}
;Glow textures
;Glow textures
:They're applied to the lower face of the M3GM's bounding box. The factors above are the ratio between the x/z extent of that face and the half-length/width of the glow textures. So if both factors are 0.5, the glow textures fit the bounding box exactly.
:They're applied to the lower face of the M3GM's bounding box. The factors above are the ratio between the x/z extent of that face and the half-length/width of the glow textures. So if both factors are 0.5, the glow textures fit the bounding box exactly.
;Pickup handle
;Pickup handle
:The tolerance is hardcoded
:The tolerance is hardcoded. The offsets are not relative to the weapon's axes, but to the world axes (!). This is a rather nasty "feature" because the offsets should be relative to the weapon's orientation. The way it is now, the pickup volume of a weapon is not necessarily next to the handle. That's why the WMC is so hard to pick up that some players conclude it's not possible; being the largest weapon, it has the largest potential discrepancy between its visual handle location and its pickup volume.




----
{{OBD_File_Footer | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Character}}
 
==Notes==
 
----
{|align=center
!ONWC : Oni Weapon Class
|-
![[OBD:ONVL|ONVL]] << [[OBD:File types|Other file types]] >> [[OBD:OPge|OPge]]
|}
----


[[Main Page]] >> [[OBD:Oni Binary Data|Oni Binary Data]] >> [[OBD:File types|File types]] >> ONWC
{{OBD}}

Latest revision as of 17:58, 19 May 2024

ONI BINARY DATA
ONVL << Other file types >> OPge
ONWC : Oni Weapon Class
switch to XML:ONWC page
Overview @ Oni Stuff
OBD.png


ONWC files in level[1-19]_Final are 0-byte files. The actual data is in the ONWC files of level 0; below is an example.

Unless specified otherwise, the coordinates are relative to the weapon's mesh (x = forwards, y = left, z = up).


0x000 to 0x0D7 - Weapon main part

Onwc a.gif


Offset Type Raw Hex Value Description
0x000 res_id 01 75 0E 00 3701 03701-w1_tap.ONWC
0x004 lev_id 01 00 00 00 0 level 0


0x008 to 0x053 - Laser sight parameters

Offset Type Raw Hex Value Description
0x008 float F5 A4 49 40 3.150693 x-offset of laser sight origin
0x00C float F4 2C A5 3B 0.005041 y-offset of laser sight origin
0x010 float 21 4E D2 3E 0.410752 z-offset of laser sight origin
0x014 float 23 A6 7F 3F 0.998629 x-component of laser sight direction
0x018 float AA 6C 56 BD -0.052349 y-component of laser sight direction
0x01C float 69 66 AA B7 -0.000020 z-component of laser sight direction
0x020 float 00 40 9C 45 5000.000000 maximal length of laser sight vector
0x024 color 00 00 FF FF 0, 0, 255; 255 laser sight color (blue, green, red); laser sight transparency
0x028 link 01 94 05 00 1428 crosshair texture (link to 01428-target_1A.TXMP)
0x02C color FF FF FF 00 255, 255, 255; 0 crosshair background color (blue, green, red); crosshair background transparency
0x030 float CD CC 4C 3F 0.800000 crosshair scale factor
0x034 link 01 95 05 00 1428 locked crosshair texture (link to 01429-target_1B.TXMP)
0x038 color FF FF FF 00 255, 255, 255; 0 locked crosshair background color (blue, green, red); locked crosshair background transparency
0x03C float CD CC 4C 3F 0.800000 locked crosshair scale factor
0x040 link 00 00 00 00 unused tunnel texture (link to a TXMP) file
0x044 color FF FF FF 00 255, 255, 255; 0 tunnel background color (blue, green, red); tunnel background transparency
0x048 float 00 00 80 3F 1.000000 tunnel scale factor
0x04C int32 0F 00 00 00 15 number of tunnel textures
0x050 float 00 00 20 41 10.000000 spacing of tunnel textures


Crosshair
Default crosshair appears where the laser sight hits environment, corpses, etc.
Locked crosshair appears when the laser sight hits characters (including the shooter)
"Tunnel" is used by w8_mbo as a complement to the crosshair
w2_sap, w5_sbg, w7_scc and w9_scr use it with no crosshair


0x054 to 0x05F - Ammo meter

Offset Type Raw Hex Value Description
0x054 link 01 7E 0E 00 3710 link to 03710-tap_icon.TXMP
0x058 link 01 7F 0E 00 3711 link to 03711-tap_empty.TXMP
0x05C link 01 80 0E 00 3712 link to 03712-tap_fill.TXMP


0x060 to 0x0D7 - Weapon parameters

Offset Type Raw Hex Value Description
0x060 link 01 76 0E 00 3702 link to 03702-.M3GM
0x064 char[32] w1_tap weapon name
0x084 float 00 00 80 3F 1.000000 weapon mouse sensitivity (applies to AI, too)
0x088 float A6 92 2B 3D 0.041888 recoil base (e.g. for w1_tap and w2_sap)
0x08C float 92 0A 86 3E 0.261799 recoil max
0x090 float 00 00 A0 40 5.000000 recoil factor
0x094 float E2 A3 7B 3B 0.003839 recoil return speed
0x098 float 88 C3 E4 3A 0.001745 recoil firing return speed
0x09C float 00 00 00 00 0.000000 secondHandVector X (disabled IK stuff)
0x0A0 float 00 00 00 00 0.000000 secondHandVector Y
0x0A4 float 00 00 00 00 0.000000 secondHandVector Z
0x0A8 float 00 00 00 00 0.000000 secondHandUpVector X
0x0AC float 00 00 00 00 0.000000 secondHandUpVector Y
0x0B0 float 00 00 00 00 0.000000 secondHandUpVector Z
0x0B4 float 00 00 00 00 0.000000 secondHandPosition X
0x0B8 float 00 00 00 00 0.000000 secondHandPosition Y
0x0BC float 00 00 00 00 0.000000 secondHandPosition Z
0x0C0 int16 00 00 0 freeTime (unused); always zero
0x0C2 int16 95 00 149 recoil animation type (149 = autopistol_recoil)
0x0C4 int16 A4 00 164 reload animation type (164 = reload_pistol)
0x0C6 int16 19 00 25 pause after reload in 1/60 seconds
0x0C8 int16 0A 00 10 amount of shots
0x0CA int16 06 00 6 amount of particles
0x0CC int16 01 00 1 amount of firing modes
0x0CE int16 0A 00 10 pause before reload in 1/60 seconds
0x0D0 int16 04 00 4 release delay; delay between the moment the trigger is released and the moment the weapon stops firing
0x0D2 int16 00 00 0 padding; always zero
0x0D4 int32 30 0x30 C0 02 00 weapon options; the following bits are possible (values in hex):
0x02 00 00 00 - weapon can't be holstered
0x04 00 00 00 - weapon reloads with energy cells
0x08 00 00 00 - weapon is a rifle (two-handed)
0x10 00 00 00 - recoil affects aiming
0x20 00 00 00 - sustained fire (applies only to primary fire)
0x40 00 00 00 - runtime only; do not use
0x80 00 00 00 - stun switcher; used for w6_vdg, see below
0x00 01 00 00 - knockdown switcher; used for w4_psm, see below
0x00 02 00 00 - explosive; used for w5_sbg and w11_ba1
0x00 04 00 00 - secondary fire enabled
0x00 08 00 00 - barabbas weapon; see below
0x00 10 00 00 - heavy weapon; run, jump and creep disabled
0x00 20 00 00 - auto release trigger; used for w11_ba1
0x00 40 00 00 - has release delay; see the release delay field above
0x00 80 00 00 - laser sight visible
0x00 00 02 00 - crosshair scaling, used for w1_tap, w2_sap, w3_phr and w8_mbo
0x00 00 08 00 - weapon doesn't fade
0x00 00 10 00 - drain ammo; used by w4_psm to decrement ammo while firing because its firing mode is continuous rather than repetitive


stun switcher - if enemy is inside shooting distance (between min and max) and is knockdowned/stuned or blownupped, AI with this weapon switches to melee for a time specified in a *fight timer* field

knockdown switcher - if enemy is inside shooting distance (between min and max) and is knockdowned or blownupped, AI with this weapon switches to melee for a time specified in a *fight timer* field

barabbas weapon - reload disabled; also used for ai2_barabbas_retrievegun (it teleports a weapon to a character); nearest available gun becomes chosen if character had no weapon to begin, then always this weapon is teleported back to character (when command used again)

0x0D8 to 0x1D7 - Firing modes

Every ONWC has 2 firing mode slots (128 = 0x80 bytes each.)

The number of slots actually used by the weapon is specified at 0xCA.

0x0D8 to 0x157 - Primary firing mode

Offset Type Raw Hex Value Description
0x0D8 int32 00 00 00 00 0 firing mode options; only the following bit is used (value in hex):
0x01 00 00 00 - No wild shots
0x0DC matrix4x3
23 A6 7F 3F 05 6D 56 3D F4 8D A9 37
05 6D 56 BD 23 A6 7F 3F D0 1D 0E B5
F4 8D A9 B7 D0 1D 0E B5 00 00 80 3F
00 00 00 00 00 00 00 00 00 00 00 00
0.998629 0.052350 0.000020
-0.052350 0.998629 -0.000001
-0.000020 -0.000001 1.000000
0.000000 0.000000 0.000000
targeting inverse transform matrix - the inverse of the matrix that gives the targeting direction


0x10C vector3
23 A6 7F 3F AE 6C 56 BD AF 8D A9 B7
0.998629 -0.052349 -0.000020
targeting direction; sets orientation of firingspread
0x118 vector3
DC FE 08 3C 5C 11 23 3E 39 C6 2A 3F
0.008362 0.159246 0.667087
targeting origin; sets deviation of AI's aim from target's origin (target's origin + this vector = direction where to aim and fire)
0x124 float 00 00 61 44 900.000000 prediction speed; the speed of the projectile that AI prediction should take into account when calculating where to fire in order to hit a moving target
0x128 float 00 00 20 41 10.000000 max. inaccuracy angle; sets max angle between weapon's aiming vector and target's position; when AI exceeds this angle (by recoil or target running away), AI stops shooting and aims weapon again straight to the target, then resume shooting
0x12C float 00 00 20 40 2.500000 aim_radius; always the same; possibly related to the inaccuracy angle above
0x130 float 00 00 96 43 300.000000 weapon sound sphere radius; defines radius of the AI sound sphere (gunfire type, see HERE about AI sound spheres) which is created for a short moment when this weapon is fired
0x134 float 00 00 40 41 12.000000 minimal shooting distance; if target is closer than this, the AI ceases fire and moves away from the target till at least this distance is achieved; this is a diameter, not a radius, so effective distance from AI to target is half of this value
0x138 float 00 00 61 44 900.000000 maximum shooting distance; if target is further than this, the AI ceases fire and moves towards the target until it is below this distance
0x13C int16 05 00 5 UNUSED; maximum startle misses; the maximum number of shots to which extra inaccuracy can be added when an AI begins firing at the player (always 5, but Oni does not use this field)
0x13E int16 01 00 1 skill index (links weapon to the ONCC shooting skill table); here are the values used by Oni's ONWCs:
0x01 00 - w0_sec (not in game)
0x02 00 - w1_tap
0x04 00 - w2_sap
0x08 00 - w3_phr
0x10 00 - w4_psm
0x20 00 - w5_sbg
0x40 00 - w6_vdg
0x80 00 - w7_scc
0x00 01 - w8_mbo
0x00 02 - w9_scr
0x00 04 - w10_sni (not in game)
0x00 08 - w11_ba1
0x00 10 - w12_ba2
0x140 int32 00 00 00 00 0 fight timer, 240 for w4_psm, 200 for v6_vdg
0x144 float 00 00 00 00 0.000000 ballistic projectile speed for AI prediction purposes; if this field is unused, the projectile is assumed to be infinite speed; field is always zero except 150 for Superball Gun and 160 for Wave Motion Cannon's secondary trigger
0x148 float 00 00 00 00 0.000000 ballistic projectile gravity for AI prediction purposes; always zero except 0.5 for SBG and 0.3 for WMC's secondary trigger
0x14C float 00 00 34 43 180.000000 length of a firing spread; AI will perform gunfire dodging when it finds itself inside of a firing spread (see AI § Basic combat behaviors); can be visualized with *ai2_showfiringspreads=1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm)
0x150 float 00 00 40 40 3.000000 width of the firing spread's base; can be seen by ai2_showfiringspreads=1
0x154 float 50 77 D6 3D 0.104719 firing spread's skew; can be seen by ai2_showfiringspreads=1 (0.1 for w1_tap, 0.21 for w2_sap)


Transform matrix
Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.

0x158 to 0x1D7 - Secondary firing mode

The only vanilla weapon for which these fields are not all zero is w11_ba1. They are the exact counterparts of the fields at 0xD8 - 0x157.

0x1D8 to 0x6D7 - Weapon particle array

Every ONWC has 16 particle slots (80 at 0x50 bytes each). The number of slots actually used by the weapon is specified at 0xCA. Offsets are relative to the beginning of a slot.


Offset Type Raw Hex Value Description
First of 16 elements (black outline).
0x000 float AE 6C 56 3D 0.052349 transformation matrix, xx term
0x004 float 23 A6 7F 3F 0.998629 transformation matrix, xy term
0x008 float C2 53 90 B3 -0.000000... transformation matrix, xz term
0x00C float 23 A6 7F 3F 0.998629 transformation matrix, yx term
0x010 float AE 6C 56 BD -0.052349 transformation matrix, yy term
0x014 float AF 8D A9 B7 -0.000020 transformation matrix, yz term
0x018 float BA 59 A9 B7 -0.000020 transformation matrix, zx term
0x01C float 5B 02 85 35 0.000001 transformation matrix, zy term
0x020 float 00 00 80 BF -1.000000 transformation matrix, zz term
0x024 float 6F 63 57 40 3.365444 x-offset of particle to weapon
0x028 float B3 1D 89 BC -0.016738 y-offset of particle to weapon
0x02C float C5 C1 2A 3F 0.667019 z-offset of particle to weapon
0x030 char[16] w1_tap_e01 particle name (reference to 06226-3RAPw1_tap_e01.BINA)
0x040 int32 00 00 00 00 0 runtime only (pointer to particle class)
0x044 int16 01 00 1 ammo decrement (different for the 2 firing modes of w11_ba1)
0x046 int16 0C 00 12 delay between shots in frames (12 frames = 0.2 seconds)
0x048 int16 04 00 4 'roughjustice' delay between shots in frames
0x04A int16 00 00 0 number in frames for active firing mode (1st frame for activate); Used for w4_psm and w11_ba1
0x04C int16 00 00 0 0 = particle is triggered by fire1; 1 = particle is triggered by fire2; -1 = particle is triggered by both firing modes
0x04E int16 00 00 0 delay before firing


Transformation matrix
That's what defines orientation, stretching, etc. See CRSA for details.

0x6D8 to 0x71F - End of file

Onwc e.gif


Offset Type Raw Hex Value Description
0x6D8 char[32] weapon _empty empty weapon sound (reference to 08993-weapon_empty.imp.OSBD)
0x6F8 int32 00 00 00 00 0 runtime only (pointer to empty weapon sound)
0x6FC link 01 81 0E 00 3713 link to 03713-w1_glow.TXMP
0x700 link 01 82 0E 00 3714 link to 03714-w1_glow_ammo.TXMP
0x704 float 00 00 80 3F 1.000000 x-scale factor of glow textures
0x708 float 00 00 80 3F 1.000000 z-scale factor of glow textures
0x70C float 76 65 EB 3F 1.839034 x-offset of pickup handle
0x710 float 96 4C A9 3D 0.082666 y-offset of pickup handle
0x714 float 06 E2 14 3E 0.145393 z-offset of pickup handle
0x718 float 00 00 00 00 0.000000 hovering height of dropped weapon
0x71C char[4] AD DE dead unused


Glow textures
They're applied to the lower face of the M3GM's bounding box. The factors above are the ratio between the x/z extent of that face and the half-length/width of the glow textures. So if both factors are 0.5, the glow textures fit the bounding box exactly.
Pickup handle
The tolerance is hardcoded. The offsets are not relative to the weapon's axes, but to the world axes (!). This is a rather nasty "feature" because the offsets should be relative to the weapon's orientation. The way it is now, the pickup volume of a weapon is not necessarily next to the handle. That's why the WMC is so hard to pick up that some players conclude it's not possible; being the largest weapon, it has the largest potential discrepancy between its visual handle location and its pickup volume.


ONI BINARY DATA
ONVL << Other file types >> OPge
ONWC : Oni Weapon Class
Character file