XML:ONWC: Difference between revisions

From OniGalore
Jump to navigation Jump to search
m (i wonder if it's not time to clean up this page since all the hex stuff seems to be on the main page)
No edit summary
Line 1: Line 1:
{|align=right
__TOC__
![[OBD:Oni Binary Data|ONI BINARY DATA]]
 
 
{{Template:XMLModdingHints}}
{| border=0 cellspacing=20 cellpadding=0 align=center
| The xml code on this page is compatible with onisplit '''v0.9.61.0'''
|}
 
'''general information'''
* ONWC files are stored at Edition\install\VanillaDats\level0_Final\level0_Final (AE 2010-05a)
 
 
'''file structure'''
 
ONWC
  |
  +-- M3GM (the 3D mesh)
        |
        +-- PNTA <Points>
        +-- VCRA <VertexNormals>
        +-- VCRA <FaceNormals>
        +-- TXCA <TextureCoordinates>
        +-- IDXA <TriangleStrips>
        +-- IDXA <FaceNormalIndices>
        +-- TXMP <Texture> (link to external file)
 
 
 
=ONWC: Oni Weapon Class=
 
{|class="wikitable" width=100%
|width=120px| '''XML tag'''
|width=60px| '''type'''
| '''description'''
|-
|-
![[OBD:ONVL|ONVL]] << [[OBD:File types|Other file types]] >> [[OBD:OPge|OPge]]
| <LaserSight>
|
| see [[#<LaserSight>|HERE]]
|-
|-
!<FONT SIZE=5>ONWC : Oni Weapon Class</FONT>
| <AmmoMeter>
|
| see [[#<AmmoMeter>|HERE]]
|-
|-
![[OBD:File types/Global|Level 0 file]]
| <Geometry>
| link
| [[#M3GM|weapon instance]] number (#N)
|-
|-
![http://geyser.oni2.net/OUP/ONWC.txt Struct def for OUP]
| <Name>
| char[32]
| <font color="#777777">ONWC</font>file<font color="#777777">.oni</font> <font color="#777777">(don't use file prefix/suffix)</font>
|-
|-
![http://www6.fh-eberswalde.de/user/dkriesch/onistuff/oni_onwc.htm Overview @ Oni Stuff]
| <MouseSensitivity>
| float
| weapon mouse sensitivity (applies on AI, too)
|-
|-
!TXT overviews (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]
| <Recoil>
|
| see [[#<Recoil>|HERE]]
|-
| <RecoilAnimationType>
| link
| an recoil [[OBD_talk:StNA#animation_types|animation type]]
|-
| <ReloadAnimationType>
| link
| an reload [[OBD_talk:StNA#animation_types|animation type]]
|-
| <PauseAfterReload>
| int16
| pause after reload in 1/60 seconds
|-
| <MaxShots>
| int16
| amount of shots
|-
| <ParticleCount>
| int16
| amount of particles
|-
| <FiringModeCount>
| int16
| amount of used firing modes (max = 2 ?)
|-
| <PauseBeforeReload>
| int16
| pause before reload in 1/60 seconds
|-
| <ReleaseDelay>
| int16
| release delay; delay between the moment the trigger is released and the moment the weapon stops firing
|-
|valign=top| <Flags>
|valign=top| flag
| weapon options
: NoHolster
: UsesCells
: TwoHanded
: RecoilAffectsAiming
: Automatic
: StunSwitcher
:: 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
: KnockdownSwitcher
:: 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
: Explosive
: SecondaryFire
: BarabbasWeapon
:: 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
: Heavy
: AutoRelease
: HasReleaseDelay
: HasLaserSight
: ScaleCrosshair
: NoFade
: DrainAmmo
|-
| <FiringModes>
|
| holds 2 <FiringModes> tags
|-
| <AIFiringMode>
|
| see [[#<AIFiringMode>|HERE]]
|-
| <Particles>
|
| holds 16 <ONWCParticle> tags
|-
| <ONWCParticle>
|
| see [[#<ONWCParticle>|HERE]]
|-
| <EmptyWeaponSound>
| link
| <font color="#777777">OSBD</font>file<font color="#777777">.imp.oni</font> <font color="#777777">(don't use file prefix/suffix)</font>
|-
| <Glow>
| link
| TXMPfile<font color="#777777">.oni (don't use file suffix)</font>
|-
| <GlowAmmo>
| link
| TXMPfile<font color="#777777">.oni (don't use file suffix)</font>
|-
| <GlowTextureScale>
| float
| x z scale factor of glow textures
|-
| <PickupHandleOffset>
| float
| x y z offset of pickup handle
|-
| <HoveringHeight>
| float
| hovering height of unheld weapon
|}
|}
There's an [[OBD:File types|empty]] ONWC file in every level, and the 12 actual ONWC files are in level 0.
;File size:1824 = 0x720 bytes
;Example: '''w1_tap.ONWC''' (unless specified otherwise)
;Structure
*0x08 - 0xD7 : MAIN WEAPON DATA (216 = 0xD8 bytes)
**0x08 - 0x53 : laser sight
**0x54 - 0x5F : ammo meter
**0x60 - 0xD7 : various weapon parameters
*0xD8 - 0x1D7 : FIRING MODE ARRAY (2 elements, 128 = 0x80 bytes each)
**0xD8 - 0x157 : primary firing mode
**0x158 - 0x1D7 : secondary firing mode
*0x1D8 - 0x6DC : WEAPON PARTICLE ARRAY (16 elements, 80 = 0x50 bytes each)
*0x6D8 - 0x71F : TRAILING CHUNK (68 =0x48 bytes)
**weapon sounds, unheld weapon parameters, blank filler
;Coordinates
:Unless specified otherwise, they are relative to the weapon's mesh
:(x = forwards, y = left, z = up)


----
; 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.
==0x00 - 0xD7==
; Pickup handle
;MAIN PART
: The tolerance is hardcoded. The offsets are not relative to the weapon's axes, but to the world axes (!).
http://www6.fh-eberswalde.de/user/dkriesch/onistuff/images/onwc_a.gif
: This is a rather nasty "feature" (actually, the offsets should be relative to the weapon's orientation)
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
: The way it's now, the pickup volume of a WMC is not necessarily next to the handle. That's why it's hard to pick up.
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
!Offset
!Hex
!Translation
!Meaning
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x00
| BGCOLOR="#FF0000" | 01 '''75 0E''' 00
| 3701
| ALIGN=LEFT | File ID (03701-w1_tap.ONWC)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x04
| BGCOLOR="#FFFF00" | 01 00 00 ''00''
| 0
| ALIGN=LEFT | level ID
|}
----
===0x08 - 0x53===
;LASER SIGHT PARAMETERS
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
!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 | locked crosshair 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 | locked crosshair background color (RGBA)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x3C
| BGCOLOR="#C8FFFF" | CD CC 4C 3F
| 0.800000
| ALIGN=LEFT | locked crosshair 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
|}
;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
----
===0x54 - 0x5F===
;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]]
|}
----
===0x60 - 0xD7===
;WEAPON PARAMETERS
{| 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 | weapon mouse sensitivity (applies on AI, too)
|- 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 | recoil animation type, (149 => autopistol_recoil)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xC4
| BGCOLOR="#FFDDDD" | A4 00
| 164
| ALIGN=LEFT | reload animation type, (164 => reload_pistol)
|- 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
|- VALIGN=TOP
| ALIGN=RIGHT | 1 -&nbsp;
| unknown, never used
|- VALIGN=TOP
| 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;
| '''stun switcher''',see below, used for w6_vdg
|}


|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
==<LaserSight>==
|0xD5
; Crosshair
| BGCOLOR="#FFDDDD" | C0
: Default crosshair appears where the laser sight hits environment, corpses, etc
| 192
: Locked crosshair appears when the laser sight hits characters (including the shooter)
| ALIGN=LEFT | Flags 2 :
: "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


{| BORDER=0 CELLPADDING=0 CELLSPACING=0
{|class="wikitable" width=100%
|- VALIGN=TOP
|width=120px| '''XML tag'''
| ALIGN=RIGHT | 1 -&nbsp;
|width=60px| '''type'''
| '''knockdown switcher''',see below, used for w4_psm
| '''description'''
|- VALIGN=TOP
|-
| ALIGN=RIGHT | 2 -&nbsp;
| <Origin>
| unknown, used for w5_sbg and w11_ba1
| float
|- VALIGN=TOP
| x y z
| ALIGN=RIGHT | 4 -&nbsp;
|-
| '''secondary fire enabled'''
| <Stiffness>
|- VALIGN=TOP
| float
| ALIGN=RIGHT | 8 -&nbsp;
| x-component of laser sight direction ?
| '''weapon can't be reloaded'''
|-
|- VALIGN=TOP
| <AdditionalAzimuth>
| ALIGN=RIGHT | 16 -&nbsp;
| float
| '''run, jump and creep disabled'''
| [[wikipedia:Azimuth]]
|- VALIGN=TOP
|-
| ALIGN=RIGHT | 32 -&nbsp;
| <AdditionalElevation>
| unknown, used for w11_ba1
| float
|- VALIGN=TOP
| [[wikipedia:Elevation]]
| ALIGN=RIGHT | 64 -&nbsp;
|-
| '''I d.k.h.t.c.t.2''',see below, used for w1_tap, w2_sap and w3_phr
| <LaserMaxLength>
|- VALIGN=TOP
| float
| ALIGN=RIGHT | 128 -&nbsp;
| maximal length of laser sight vector
| '''laser sight visible'''
|-
| <LaserColor>
| color
| laser sight color: B G R A
|-
| <NormalTexture>
| link
| crosshair texture: TXMPfile<font color="#777777">.oni (don't use file suffix)</font>
|-
| <NormalColor>
| color
| crosshair background color: B G R A
|-
| <NormalScale>
| float
| crosshair scale factor
|-
| <LockedTexture>
| link
| locked crosshair texture: TXMPfile<font color="#777777">.oni (don't use file suffix)</font>
|-
| <LockedColor>
| color
| locked crosshair background color: B G R A
|-
| <LockedScale>
| float
| locked crosshair scale factor
|-
| <TunnelTexture>
| link
| tunnel texture
|-
| <TunnelColor>
| color
| tunnel background color: R G B A
|-
| <TunnelScale>
| float
| tunnel scale factor
|-
| <TunnelCount>
| int32
| number of tunnel textures
|-
| <TunnelSpacing>
| float
| spacing of tunnel textures
|}
|}


|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
 
|0xD6
==<AmmoMeter>==
| BGCOLOR="#FFDDDD" | 02 00
{|class="wikitable" width=100%
| 2
|width=120px| '''XML tag'''
| ALIGN=LEFT | Flags 3 :
|width=60px| '''type'''
{| BORDER=0 CELLPADDING=0 CELLSPACING=0
| '''description'''
|- VALIGN=TOP
|-
| ALIGN=RIGHT | 1 -&nbsp;
| <Icon>
| unknown, never used
| link
|- VALIGN=TOP
| TXMPfile<font color="#777777">.oni (don't use file suffix)</font>
| ALIGN=RIGHT | 2 -&nbsp;
|-
| '''crosshair scaling''', used for w1_tap, w2_sap, w3_phr and w8_mbo
| <Empty>
|- VALIGN=TOP
| link
| ALIGN=RIGHT | 4 -&nbsp;
| TXMPfile<font color="#777777">.oni (don't use file suffix)</font>
| unknown, never used
|-
|- VALIGN=TOP
| <Fill>
| ALIGN=RIGHT | 8 -&nbsp;
| link
| '''weapon doesn't fade'''
| TXMPfile<font color="#777777">.oni (don't use file suffix)</font>
|- VALIGN=TOP
| ALIGN=RIGHT | 16 -&nbsp;
| '''I don't know how to call this''', see below, 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
|}
|}
|}


'''stun switcher''' -if enemy is inside shooting distance (between min and max) and is '''knockdown'''ed/'''stun'''ed or '''blownup'''ed, 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'''ed, AI with this weapon switches to melee for a time specified in a *fight timer* field
==<Recoil>==
 
{|class="wikitable" width=100%
'''I don't know how to call this''' - If you press and HOLD the fire (mouse1), it ONCE triggers particles for shooting, then drains ammo as if it was '''sustained fire''', but particles are NOT emitted (you just stand and watch as ammo drops). Used by w4_psm, probably because w4 particles works constantly (beam) after triggered.
|width=120px| '''XML tag'''
 
|width=60px| '''type'''
'''I d.k.h.t.c.t.2''' - try this: set '''I don't know how to call this''' on some weapon, then set this on that weapon too. You will see that once you press the shooting button, it keeps *shooting* (altough you can't see any particles coming) even after you release shooting button. You can't stop it. It keeps shooting until all ammo is drained. So, basically, it works like an automatic hold of the mouse button.
| '''description'''
 
|-
P.S.: Someone please think off nice names for those two poor flags :))
| <Base>
--[[User:Loser|Loser]] 07:52, 29 July 2007 (CEST)
| float
----
| recoil base (e.g. for w1_tap and w2_sap)
----
|-
 
| <Max>
==0xD8 - 0x1D7==
| float
;FIRING MODES
| recoil max
Every ONWC has 2 firing mode slots (128 = 0x80 bytes each.)
|-
 
| <Factor>
The number of slots actually used by the weapon is specified at 0xCA.
| float
===0xD8 - 0x157===
| recoil factor
;PRIMARY FIRING MODE
|-
Offsets are given with respect to the start of the file.
| <ReturnSpeed>
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
| float
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
| recoil return speed
!Offset
|-
!Raw hex
| <FiringReturnSpeed>
!Value
| float
!Meaning
| recoil firing return speed
|- 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&nbsp;A6&nbsp;7F&nbsp;3F
| 0.998629
| ALIGN=LEFT | transform matrix XX
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xE0
| BGCOLOR="#64AAAA" | 05 6D 56 3D
| 0.052350
| ALIGN=LEFT | transform matrix XY
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xE4
| BGCOLOR="#64AAAA" | F4 8D A9 37
| 0.000020
| ALIGN=LEFT | transform matrix XZ
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xE8
| BGCOLOR="#64AAAA" | 05 6D 56 BD
| -0.052350
| ALIGN=LEFT | transform matrix YX
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xEC
| BGCOLOR="#64AAAA" | 23 A6 7F 3F
| 0.998629
| ALIGN=LEFT | transform matrix YY
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xF0
| BGCOLOR="#64AAAA" | D0 1D 0E B5
| -0.000001
| ALIGN=LEFT | transform matrix YZ
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xF4
| BGCOLOR="#64AAAA" | F4 8D A9 B7
| -0.000020
| ALIGN=LEFT | transform matrix ZX
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xF8
| BGCOLOR="#64AAAA" | D0 1D 0E B5
| -0.000001
| ALIGN=LEFT | transform matrix ZY
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0xFC
| BGCOLOR="#64AAAA" | 00 00 80 3F
| 1.000000
| ALIGN=LEFT | transform matrix ZZ
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x100
| BGCOLOR="#64AAAA" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | translation X; always zero for original weapons
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x104
| BGCOLOR="#64AAAA" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | translation Y; always zero for original weapons
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x108
| BGCOLOR="#64AAAA" | 00 00 00 00
| 0.000000
| ALIGN=LEFT | translation Z; always zero for original weapons
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x10C
| BGCOLOR="#64AAAA" | 23 A6 7F 3F
| 0.998629
| ALIGN=LEFT | unknown; something with angle proportions between firingspread base's angles, the higher you set it the more it is taller than wider; can be seen with ai2_showfiringspreads=1
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x110
| BGCOLOR="#64AAAA" | AE 6C 56 BD
| -0.052349
| ALIGN=LEFT | unknown; something with firingspread's aim in the "x,z plane". This value is forcing firingspread to aim more left or more right than weapon is aiming or to even aim firingspread backwards; can be seen with ai2_showfiringspreads=1
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x114
| BGCOLOR="#64AAAA" | AF 8D A9 B7
| -0.000020
| ALIGN=LEFT | unknown; something with firingspread's aim in the "y plane". This value is forcing firingspread to aim more up or more down than weapon is aiming or to even aim firingspread backwards; can be seen with ai2_showfiringspreads=1
|- 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 | unknown; it is some angle. If this angle is for example 90°, then AI, which is shooting this weapon, will try to copy target's movements eg. when target strafes left, armed AI stops shooting and runs left too. If you set it 270°, armed AI is performing opposite actions eg. when you run left, armed AI runs right. While running, AI stops shooting.
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x128
| BGCOLOR="#64AAAA" | 00 00 20 41
| 10.000000
| ALIGN=LEFT | Max inaccurancy 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"
|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 | Weapon sound sphere radius. When somebody shoots, weapon creates this range. AIs which are inside this range notice there was a shot + they know WHO is the shooter and WHERE he stands (threat strong), can be seen with ai2_showsounds=1 (but you have to be in a large open area, since those ranges are quite big)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x134
| BGCOLOR="#64AAAA" | 00 00 40 41
| 12.000000
| ALIGN=LEFT | Minimal shooting distance; When AI is closer then min.shot.dist., it will stop shooting and attempt to go  away from the target until it again reaches higher distance then min.shot.dist. is. You can see its effect when AI is operating SBG and you get too close.
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x138
| BGCOLOR="#64AAAA" | 00 00 61 44
| 900.000000
| ALIGN=LEFT | Maximal shooting distance; When AI is further then max.shot.dist., it isn't shooting but running towards target until it reaches max.shot.dist. limit. Then AI opens fire. You can see its effect when AI is far away and has w2_sap.
|- 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 (used by [[OBD:ONCC#Shooting_skills_(0x15C_-_0x29)|AI shooting skills]])
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x140
| BGCOLOR="#EBEBEB" | 00 00 00 00
| 0
| ALIGN=LEFT | Fight timer, 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 | Length of firingspread which aims from weapon. When AI collides with this firingspread, it tries to dodge/hide of it. Can be seen by ai2_showfiringspreads=1  (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 | Lenght of the firingspread's base side. Can be seen by ai2_showfiringspreads=1
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x154
| BGCOLOR="#8C8CCC" | 50 77 D6 3D
| 0.104719
| ALIGN=LEFT | angle between firingspread's base and its altitude(length). 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. Didn't check.
----


===0x158 - 0x1D7===
;SECONDARY FIRING MODE
The only original weapon for which these fields are not all zero is '''w11_ba1'''.


They are the exact counterparts of the fields at 0xD8 - 0x157.




----
==<AIFiringMode>==
----
w11_ba1 is the only original weapon that use also the second firing mode.


==0x1D8 - 0x6D7==
; Transform matrix
;PARTICLES
: Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.
Every ONWC has 16 particle slots (80 = 0x50 bytes each.)


The number of slots actually used by the weapon is specified at 0xCA.
{|class="wikitable" width=100%
 
|width=120px| '''XML tag'''
Offsets are relative to the beginning of a slot.
|width=60px| '''type'''
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
| '''description'''
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
|-
!Offset
| <Flags>
!Raw hex
| flag
!Value
| NoWildShots
!Meaning
|-
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| <InverseDirection>
|0x00
| matrix4x3
| BGCOLOR="#FF00C8" | AE 6C 56 3D
| targeting inverse transform matrix - the inverse of the matrix that gives the targeting direction
| 0.052349
|-
| ALIGN=LEFT | transformation matrix, xx term
| <Direction>
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| vector3
|0x04
| targeting direction; sets orientation of firingspread
| BGCOLOR="#FF00C8" | 23 A6 7F 3F
|-
| 0.998629
| <Origin>
| ALIGN=LEFT | transformation matrix, xy term
| vector3
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| targeting origin; sets deviation of A.I.'s aim from target's origin (target's origin + this vector = direction where to aim and fire)
|0x08
|-
| BGCOLOR="#FF00C8" | C2 53 90 B3
| <PredictionSpeed>
| -6.720757e-8
| float
| ALIGN=LEFT | transformation matrix, xz term
| prediction speed; numeric speed of the projectile A.I. prediction takes into account when calculating where to fire in order to hit moving target
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|-
|0x0C
| <MaxInaccuracyAngle>
| BGCOLOR="#FF00C8" | 23 A6 7F 3F
| float
| 0.998629
| max. inaccurancy 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=LEFT | transformation matrix, yx term
|-
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| <AimRadius>
|0x10
| float
| BGCOLOR="#FF00C8" | AE 6C 56 BD
| aim_radius; always the same; possible related to the inaccuracy angle above
| -0.052349
|-
| ALIGN=LEFT | transformation matrix, yy term
| <AISoundRadius>
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| float
|0x14
| weapon sound sphere radius; defines radius of the A.I. sound sphere (gunfire type, see [[Tricks_behind_Oni_A.I.#Congitive_possiblities_of_A.I._characters_..._.22COME_TO_YOUR_SENSES.21.22|HERE]] about A.I. sound spheres) which is created for a short moment when this weapon is fired
| BGCOLOR="#FF00C8" | AF 8D A9 B7
|-
| -0.000020
| <MinShootingDistance>
| ALIGN=LEFT | transformation matrix, yz term
| float
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| minimal shooting distance; if target is closer than min.shoot.dist then A.I. ceases fire and moves away from the target till at least min.shoot.dis. is achieved; diameter, not a radius, so effective distance from A.I. to target is half of this value
|0x18
|-
| BGCOLOR="#FF00C8" | BA 59 A9 B7
| <MaxShootingDistance>
| -0.000020
| float
| ALIGN=LEFT | transformation matrix, zx term
| maximal shooting distance; if target is further than max.shoot.dist then A.I. ceases fire and moves towards the target until at least max.shoot.dis. is achieved
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|-
|0x1C
| <MaxStartleMisses>
| BGCOLOR="#FF00C8" | 5B 02 85 35
| float
| 0.000001
| maximum startle misses; probably the maximum number of shots an ai can miss when suprised before he starts aiming
| ALIGN=LEFT | transformation matrix, zy term
|-
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| <SkillIndex>
|0x20
| int16
| BGCOLOR="#FF00C8" | 00 00 80 BF
| [[OBD_talk:ONCC#.3CWeaponSkills.3E|ONCC skill index]]
| -1.000000
|-
| ALIGN=LEFT | transformation matrix, zz term
| <FightTimer>
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| int32
|0x24
| fight timer, 240 for w4_psm, 200 for v6_vdg
| BGCOLOR="#FF00C8" | 6F 63 57 40
|-
| 3.365444
| <ProjectileSpeed>
| ALIGN=LEFT | x-offset of particle to weapon
| float
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| ballistic projectile speed (150 for SBG, 160 for WMC)
|0x28
|-
| BGCOLOR="#FF00C8" | B3 1D 89 BC
| <ProjectileGravity>
| -0.016738
| float
| ALIGN=LEFT | y-offset of particle to weapon
| ballistic projectile gravity, can be negative for firing at the enemy's feet (0.5 for SBG, 0.3 for WMC)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|-
|0x2C
| <FireSpreadLength>
| BGCOLOR="#FF00C8" | C5 C1 2A 3F
| float
| 0.667019
| length of a firingspread; A.I. can utilize gunfire dodge mechanics when it collides with some firingspread (read [[Tricks_behind_Oni_A.I.#Combat_behavior_part_3:_.22They_see_me_shootin.27.2C_they_hatin.27....22|HERE]]); can be seen by *ai2_showfiringspreads=1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm)
| ALIGN=LEFT | z-offset of particle to weapon
|-
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| <FireSpreadWidth>
|0x30
| float
| BGCOLOR="#F0F096" COLSPAN=2 | <TT>w1_tap_e01</TT>
| length of the firingspread's base; can be seen by ai2_showfiringspreads=1
| ALIGN=LEFT | weapon particle (06226-3RAPw1_tap_e01.BINA)
|-
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| <FireSpreadSkew>
|0x40
| float
| BGCOLOR="#00C864" | 00 00
| firingspread's skew; can be seen by ai2_showfiringspreads=1 (0.1 for w1_tap, 0.21 for w2_sap)
| 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 | number in frames for active firing mode (1st frame for activate). Used for '''w4_psm''' and '''w11_ba1'''
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x4C
| BGCOLOR="#00C864" | 00 00
| 0
| ALIGN=LEFT | &nbsp;0 : particle is fired with '''fire1'''<br> &nbsp;1 : particle is fired with '''fire2'''<br>-1 : particle is triggered by other particles
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x4E
| BGCOLOR="#00C864" | 00 00
| 0
| ALIGN=LEFT | delay before firing
|}
|}
;Transformation matrix
:That's what defines orientation, stretching, etc.
:See [[OBD:CRSA|CRSA]] for details.




----
==<ONWCParticle>==
----
; Transformation matrix
: That's what defines orientation, stretching, etc.
: See [[OBD:CRSA|CRSA]] for details.


==0x6D8 - 0x71F==
{|class="wikitable" width=100%
;ENDING
|width=120px| '''XML tag'''
http://www6.fh-eberswalde.de/user/dkriesch/onistuff/images/onwc_e.gif
|width=60px| '''type'''
{| BORDER=1 WIDTH=100% CELLPADDING=2 CELLSPACING=0
| '''description'''
|- ALIGN=CENTER BGCOLOR="#FFDDBB"
|-
!Offset
| <Transform>
!Raw hex
| matrix4x3
!Value
| transformation matrix xx xy xz yx yy yz zx zy zz + x y z offset of particle to weapon
!Meaning
|-
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| <ParticleClass>
|0x6D8
| link
| BGCOLOR="#00C8FF" COLSPAN=2 | <TT>weapon _empty</TT>
| <font color="#777777">BINA3RAP</font>file<font color="#777777">.oni</font> <font color="#777777">(don't use file prefix/suffix)
| ALIGN=LEFT | empty weapon sound<BR>(08992-weapon_empty.grp.[[OBD:OSBD|OSBD]])<BR>(08993-weapon_empty.imp.[[OBD:OSBD|OSBD]])
|-
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| <UsedAmmo>
|0x6F8
| int16
| BGCOLOR="#C80040" | 00 00 00 00
| ammo decrement (different for the 2 firing modes of w11_ba1)
| 0
|-
| ALIGN=LEFT | unknown; always zero
| <ShotDelay>
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| int16
|0x6FC
| normal delay between shots in frames
| BGCOLOR="#FFCD96" | 01 '''81 0E''' 00
|-
| 3713
| <RoughJusticeShotDelay>
| ALIGN=LEFT | link to 03713-w1_glow.[[OBD:TXMP|TXMP]]
|
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| 'roughjustice' delay between shots in frames
|0x700
|-
| BGCOLOR="#FFCD96" | 01 '''82 0E''' 00
| <ActiveFrames>
| 3714
| int16
| ALIGN=LEFT | link to 03714-w1_glow_ammo.[[OBD:TXMP|TXMP]]
| number in frames for active firing mode (1st frame for activate); Used for w4_psm and w11_ba1
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|-
|0x704
| <TriggeredBy>
| BGCOLOR="#C8C864" | 00 00 80 3F
| int16
| 1.000000
|
| ALIGN=LEFT | x-scale factor of glow textures
: 0 (particle is triggered by fire1)
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
: 1 (particle is triggered by fire2)
|0x708
: -1 (particle is triggered by both firing modes)
| BGCOLOR="#C8C864" | 00 00 80 3F
|-
| 1.000000
| <DelayBeforeFiring>
| ALIGN=LEFT | z-scale factor of glow textures
| int16
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
| delay before firing
|0x70C
| BGCOLOR="#C8C864" | 76 65 EB 3F
| 1.839034
| ALIGN=LEFT | x-offset of pickup handle
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x710
| BGCOLOR="#C8C864" | 96 4C A9 3D
| 0.082666
| ALIGN=LEFT | y-offset of pickup handle
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|0x714
| BGCOLOR="#C8C864" | 06 E2 14 3E
| 0.145393
| ALIGN=LEFT | z-offset of pickup handle
|- ALIGN=CENTER VALIGN=TOP BGCOLOR="#FFEEDD"
|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
: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" (actually, the offsets ''should'' be relative to the weapon's orientation)
:The way it's now, the pickup volume of a WMC is not necessarily next to the handle. That's why it's hard to pick up.


----
----
==Notes==


=M3GM=
Are there some tags which make together the mesh but you basically need to know that you can replace that content with data from another M3GM.


----
You can create M3GM meshes from obj files. OniSplit v0.9.61.0 refuse to create a single M3GM. Instead, use OniSplit [http://mods.oni2.net/node/38 v0.9.41.0]
----
{|align=center
![[OBD:Oni Binary Data|ONI BINARY DATA]]
|-
![[OBD:ONVL|ONVL]] << [[OBD:File types|Other file types]] >> [[OBD:OPge|OPge]]
|-
!ONWC : Oni Weapon Class
|}


Then you can convert the file to xml and replace the ONWC's old M3GM xml code (in case you didn't start from scratch).


==a bit XML==
Remember to change the links (#N) and instance IDs of the new data.
<Flags>...</Flags>
  02 - NoHolster
  04 - UsesCells
  08 - TwoHanded
  10 - RecoilAffectsAiming
  20 - Automatic
  40 - 64
  80 - StunSwitcher
  01 - KnockdownSwitcher
  02 - Explosive
  04 - SecondaryFire
  08 - BarabbasWeapon
  10 - Heavy
  20 - AutoRelease
  40 - HasReleaseDelay
  80 - HasLaserSight
  02 - ScaleCrosshair
  08 - NoFade
  10 - DrainAmmo

Revision as of 10:16, 20 April 2012


Template:XMLModdingHints

The xml code on this page is compatible with onisplit v0.9.61.0

general information

  • ONWC files are stored at Edition\install\VanillaDats\level0_Final\level0_Final (AE 2010-05a)


file structure

ONWC
  | 
  +-- M3GM (the 3D mesh)
        |
        +-- PNTA <Points>
        +-- VCRA <VertexNormals>
        +-- VCRA <FaceNormals>
        +-- TXCA <TextureCoordinates>
        +-- IDXA <TriangleStrips>
        +-- IDXA <FaceNormalIndices>
        +-- TXMP <Texture> (link to external file)


ONWC: Oni Weapon Class

XML tag type description
<LaserSight> see HERE
<AmmoMeter> see HERE
<Geometry> link weapon instance number (#N)
<Name> char[32] ONWCfile.oni (don't use file prefix/suffix)
<MouseSensitivity> float weapon mouse sensitivity (applies on AI, too)
<Recoil> see HERE
<RecoilAnimationType> link an recoil animation type
<ReloadAnimationType> link an reload animation type
<PauseAfterReload> int16 pause after reload in 1/60 seconds
<MaxShots> int16 amount of shots
<ParticleCount> int16 amount of particles
<FiringModeCount> int16 amount of used firing modes (max = 2 ?)
<PauseBeforeReload> int16 pause before reload in 1/60 seconds
<ReleaseDelay> int16 release delay; delay between the moment the trigger is released and the moment the weapon stops firing
<Flags> flag weapon options
NoHolster
UsesCells
TwoHanded
RecoilAffectsAiming
Automatic
StunSwitcher
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
KnockdownSwitcher
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
Explosive
SecondaryFire
BarabbasWeapon
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
Heavy
AutoRelease
HasReleaseDelay
HasLaserSight
ScaleCrosshair
NoFade
DrainAmmo
<FiringModes> holds 2 <FiringModes> tags
<AIFiringMode> see HERE
<Particles> holds 16 <ONWCParticle> tags
<ONWCParticle> see HERE
<EmptyWeaponSound> link OSBDfile.imp.oni (don't use file prefix/suffix)
<Glow> link TXMPfile.oni (don't use file suffix)
<GlowAmmo> link TXMPfile.oni (don't use file suffix)
<GlowTextureScale> float x z scale factor of glow textures
<PickupHandleOffset> float x y z offset of pickup handle
<HoveringHeight> float hovering height of unheld weapon
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" (actually, the offsets should be relative to the weapon's orientation)
The way it's now, the pickup volume of a WMC is not necessarily next to the handle. That's why it's hard to pick up.


<LaserSight>

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
XML tag type description
<Origin> float x y z
<Stiffness> float x-component of laser sight direction ?
<AdditionalAzimuth> float wikipedia:Azimuth
<AdditionalElevation> float wikipedia:Elevation
<LaserMaxLength> float maximal length of laser sight vector
<LaserColor> color laser sight color: B G R A
<NormalTexture> link crosshair texture: TXMPfile.oni (don't use file suffix)
<NormalColor> color crosshair background color: B G R A
<NormalScale> float crosshair scale factor
<LockedTexture> link locked crosshair texture: TXMPfile.oni (don't use file suffix)
<LockedColor> color locked crosshair background color: B G R A
<LockedScale> float locked crosshair scale factor
<TunnelTexture> link tunnel texture
<TunnelColor> color tunnel background color: R G B A
<TunnelScale> float tunnel scale factor
<TunnelCount> int32 number of tunnel textures
<TunnelSpacing> float spacing of tunnel textures


<AmmoMeter>

XML tag type description
<Icon> link TXMPfile.oni (don't use file suffix)
<Empty> link TXMPfile.oni (don't use file suffix)
<Fill> link TXMPfile.oni (don't use file suffix)


<Recoil>

XML tag type description
<Base> float recoil base (e.g. for w1_tap and w2_sap)
<Max> float recoil max
<Factor> float recoil factor
<ReturnSpeed> float recoil return speed
<FiringReturnSpeed> float recoil firing return speed



<AIFiringMode>

w11_ba1 is the only original weapon that use also the second firing mode.

Transform matrix
Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.
XML tag type description
<Flags> flag NoWildShots
<InverseDirection> matrix4x3 targeting inverse transform matrix - the inverse of the matrix that gives the targeting direction
<Direction> vector3 targeting direction; sets orientation of firingspread
<Origin> vector3 targeting origin; sets deviation of A.I.'s aim from target's origin (target's origin + this vector = direction where to aim and fire)
<PredictionSpeed> float prediction speed; numeric speed of the projectile A.I. prediction takes into account when calculating where to fire in order to hit moving target
<MaxInaccuracyAngle> float max. inaccurancy 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
<AimRadius> float aim_radius; always the same; possible related to the inaccuracy angle above
<AISoundRadius> float weapon sound sphere radius; defines radius of the A.I. sound sphere (gunfire type, see HERE about A.I. sound spheres) which is created for a short moment when this weapon is fired
<MinShootingDistance> float minimal shooting distance; if target is closer than min.shoot.dist then A.I. ceases fire and moves away from the target till at least min.shoot.dis. is achieved; diameter, not a radius, so effective distance from A.I. to target is half of this value
<MaxShootingDistance> float maximal shooting distance; if target is further than max.shoot.dist then A.I. ceases fire and moves towards the target until at least max.shoot.dis. is achieved
<MaxStartleMisses> float maximum startle misses; probably the maximum number of shots an ai can miss when suprised before he starts aiming
<SkillIndex> int16 ONCC skill index
<FightTimer> int32 fight timer, 240 for w4_psm, 200 for v6_vdg
<ProjectileSpeed> float ballistic projectile speed (150 for SBG, 160 for WMC)
<ProjectileGravity> float ballistic projectile gravity, can be negative for firing at the enemy's feet (0.5 for SBG, 0.3 for WMC)
<FireSpreadLength> float length of a firingspread; A.I. can utilize gunfire dodge mechanics when it collides with some firingspread (read HERE); can be seen by *ai2_showfiringspreads=1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm)
<FireSpreadWidth> float length of the firingspread's base; can be seen by ai2_showfiringspreads=1
<FireSpreadSkew> float firingspread's skew; can be seen by ai2_showfiringspreads=1 (0.1 for w1_tap, 0.21 for w2_sap)


<ONWCParticle>

Transformation matrix
That's what defines orientation, stretching, etc.
See CRSA for details.
XML tag type description
<Transform> matrix4x3 transformation matrix xx xy xz yx yy yz zx zy zz + x y z offset of particle to weapon
<ParticleClass> link BINA3RAPfile.oni (don't use file prefix/suffix)
<UsedAmmo> int16 ammo decrement (different for the 2 firing modes of w11_ba1)
<ShotDelay> int16 normal delay between shots in frames
<RoughJusticeShotDelay> 'roughjustice' delay between shots in frames
<ActiveFrames> int16 number in frames for active firing mode (1st frame for activate); Used for w4_psm and w11_ba1
<TriggeredBy> int16
0 (particle is triggered by fire1)
1 (particle is triggered by fire2)
-1 (particle is triggered by both firing modes)
<DelayBeforeFiring> int16 delay before firing


M3GM

Are there some tags which make together the mesh but you basically need to know that you can replace that content with data from another M3GM.

You can create M3GM meshes from obj files. OniSplit v0.9.61.0 refuse to create a single M3GM. Instead, use OniSplit v0.9.41.0

Then you can convert the file to xml and replace the ONWC's old M3GM xml code (in case you didn't start from scratch).

Remember to change the links (#N) and instance IDs of the new data.