https://wiki.oni2.net/w/api.php?action=feedcontributions&user=Gumby&feedformat=atomOniGalore - User contributions [en]2024-03-29T10:00:20ZUser contributionsMediaWiki 1.39.6https://wiki.oni2.net/w/index.php?title=User_talk:Geyser&diff=23973User talk:Geyser2014-10-17T22:44:38Z<p>Gumby: </p>
<hr />
<div>And, we're back! More stuff here and elsewhere Soon(TM), mostly from me and GTO.<br />
:Mostly? Will there be few works by others (a third/fourth person) too? - 'dox<br />
::Not sure about "works", but our "thing" is a work-in-progress, and it will be open to anybody's contributions. If I have enough time for 3D modeling, we may see something from Ltemplar, if he hasn't given up on me or Oni. That guy has some serious skills. [[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 18:00, 17 October 2014 (CEST)<br />
:Haven't seen Ltemplar in a while on OCF. My impression is that he is frustated about the engine's limitations which in turn eats his motivation. I guess we all have a taste of that. But you are the one in contact with him so I probably miss some pieces of that picture. - 'dox<br />
::We'll see about Ltemplar (maybe I'm the one who disappointed him the most, by failing to keep up with him, and I have yet to get back in touch). As for the graphical/storytelling thing, I'm calling it a "thing" because that's what it is. Basically we're trying our hand at a sequel, but the key word here is "trying", and it's quite rudimentary so far. Calling it anything special at this point, even giving it a working title, would be bad luck ^_^ which doesn't mean we're not enthusiastic and a little bit proud [[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 22:36, 17 October 2014 (CEST)<br />
:Oh, you're still alive :) You were even more retired than me for a while there. [[User:Gumby|Gumby]] ([[User talk:Gumby|talk]]) 00:44, 18 October 2014 (CEST)<br />
----<br />
:Clean slate again. If you need to look something up, just use the history.<br />
:An exception has been made for the latest discussion. I've put it [[User:Geyser/STFUn00b|HERE]].<br />
:Because I can, and because it really holds a special place in my heart.<br />
----<br />
{|border=1<br />
|Until further notice, this is no longer a "talk" page. But you can still leave messages.<br />
<br />
As in "Dr. Crane isn't here right now, but if you would like to make an appointment..."<br />
|}<br />
<br />
{|border=1 cellspacing=0 cellpadding=5<br />
|[[Image:GTO_-_Wake_Up_Call_-_Page_1.jpg|250px]]<br />
|[[Image:GTO_-_Wake_Up_Call_-_Page_2.jpg|250px]]<br />
|-<br />
|[[Image:GTO_-_Wake_Up_Call_-_Page_3.jpg|250px]]<br />
|[[Image:GTO_-_Wake_Up_Call_-_Page_4.jpg|250px]]<br />
|}<br />
<br />
===Reply to "Recent changes" comments===<br />
Thanks for deleting the spam. Could I suggest http://recaptcha.net/ for human verification, it looks quite good and I think it has a mediawiki module. As for multiplayer, my computer was out of action in the past week and I had exams and schoolwork in the weeks before, so not much progress has been made. I do have the framework for a multithreaded server though and I heard Sfeli was doing something C-Daodan related but he hasn't been online for a while.<br />
:[[User:RossyMiles|rossy]] 09:20, 27 November 2008 (CET)<br />
<br />
Sorry, not sure where to put this question. Regarding the Hex Hound, how would you animate it within Oni? EdT<br />
<br />
:*It should be relative easy for you guys to split him to 19 bones.<br />
:*A field of little practical experience is the TRIA stuff. However, from an [[TRIA#Investigation|experiment]] we know that TRIA has really an effect on how TRAM files are played. All TRBS have their own TRIA instance and with Onisplit v0.9.41.0 you can still access it as plain text. Looks like there is a fair chance for a playable hex hound. =)<br />
::[[User:Paradox-01|Paradox-01]] 13:52, 14 May 2011 (UTC)<br />
<br />
:The Hound is one of those things that I'd definitely ''not'' implement into Oni's engine, the main reason being stairs. Congratulations to Dox on the proof-of-concept though.<br />
:However, I guess it would be OK if the Hounds, like the Iron Demon, were only encountered in stair-less environments, with curbs or nearly horizontal ramps if anything.<br />
:I am not up-to-date on OniSplit's handling of animation. Seeing as Totoro was intended for bipeds, all workarounds would be somewhat hackish. I'd say do the Demon first.<br />
::[[User:Geyser|geyser]] 22:41, 22 May 2011 (UTC)</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONWC&diff=17472OBD:ONWC2010-10-08T21:29:21Z<p>Gumby: /* 0x0D8 to 0x157 - Primary firing mode */</p>
<hr />
<div>{{OBD_File_Header | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level | align=center}}<br />
<br />
<br />
All ONWC files are 0 byte files. That means that Oni takes the information out of the ONWC files of level 0. Below is an example of an ONWC file of level 0. The first pic shows the beginning of this file. The second pic the end of it. <br />
<br />
<br />
Unless specified otherwise, the coordinates are relative to the weapon's mesh (x = forwards, y = left, z = up).<br />
<br />
<br />
==0x000 to 0x0D7 - Weapon main part ==<br />
<br />
<br />
[[image:onwc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 75 0E 00 | 3701 | 03701-w1_tap.ONWC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 00 | 0 | level 0 }}<br />
|}<br />
<br />
<br />
===0x008 to 0x053 - Laser sight parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x008 | float |FFC8C8| F5 A4 49 40 | 3.150693 | x-offset of laser sight origin }}<br />
{{OBDtr| 0x00C | float |FFC8C8| F4 2C A5 3B | 0.005041 | y-offset of laser sight origin }}<br />
{{OBDtr| 0x010 | float |FFC8C8| 21 4E D2 3E | 0.410752 | z-offset of laser sight origin }}<br />
{{OBDtr| 0x014 | float |FFC8C8| 23 A6 7F 3F | 0.998629 | x-component of laser sight direction }}<br />
{{OBDtr| 0x018 | float |FFC8C8| AA 6C 56 BD | -0.052349 | y-component of laser sight direction }}<br />
{{OBDtr| 0x01C | float |FFC8C8| 69 66 AA B7 | -0.000020 | z-component of laser sight direction }}<br />
{{OBDtr| 0x020 | float |FFC8C8| 00 40 9C 45 |5000.000000 | maximal length of laser sight vector }}<br />
{{OBDtr| 0x024 | color |FFFFC8| 00 00 FF FF | 0, 0, 255; 255 | laser sight color (blue, green, red); laser sight transparency }}<br />
{{OBDtr| 0x028 | link |C8FFC8| 01 94 05 00 | 1428 | crosshair texture (link to 01428-target_1A.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x02C | color |C8FFC8| FF FF FF 00 |255, 255, 255; 0| crosshair background color (blue, green, red); crosshair background transparency }}<br />
{{OBDtr| 0x030 | float |C8FFC8| CD CC 4C 3F | 0.800000 | crosshair scale factor }}<br />
{{OBDtr| 0x034 | link |C8FFFF| 01 95 05 00 | 1428 | locked crosshair texture (link to 01429-target_1B.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x038 | color |C8FFFF| FF FF FF 00 |255, 255, 255; 0| locked crosshair background color (blue, green, red); locked crosshair background transparency }}<br />
{{OBDtr| 0x03C | float |C8FFFF| CD CC 4C 3F | 0.800000 | locked crosshair scale factor }}<br />
{{OBDtr| 0x040 | link |FFC8FF| 00 00 00 00 | unused | tunnel texture (link to a [[OBD:TXMP|TXMP]]) file }}<br />
{{OBDtr| 0x044 | color |FFC8FF| FF FF FF 00 |255, 255, 255; 0| tunnel background color (blue, green, red); tunnel background transparency }}<br />
{{OBDtr| 0x048 | float |FFC8FF| 00 00 80 3F | 1.000000 | tunnel scale factor }}<br />
{{OBDtr| 0x04C | int32 |FFC800| 0F 00 00 00 | 15 | number of tunnel textures }}<br />
{{OBDtr| 0x050 | float |C800C8| 00 00 20 41 | 10.000000 | spacing of tunnel textures }}<br />
|}<br />
<br />
<br />
;Crosshair<br />
:Default crosshair appears where the laser sight hits environment, corpses, etc<br />
:Locked crosshair appears when the laser sight hits characters (including the shooter)<br />
:"Tunnel" is used by '''w8_mbo''' as a complement to the crosshair<br />
:'''w2_sap''', '''w5_sbg''', '''w7_scc''' and '''w9_scr''' use it with no crosshair<br />
<br />
<br />
===0x054 to 0x05F - Ammo meter===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x054 | link |C87C64| 01 7E 0E 00 | 3710 | link to 03710-tap_icon.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x058 | link |C87C64| 01 7F 0E 00 | 3711 | link to 03711-tap_empty.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x05C | link |C87C64| 01 80 0E 00 | 3712 | link to 03712-tap_fill.[[OBD:TXMP|TXMP]] }}<br />
|}<br />
<br />
<br />
===0x060 to 0x0D7 - Weapon parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x060 | link |C87C64| 01 76 0E 00 | 3702 | link to 03702-.M3GM }}<br />
{{OBDtr2|0x064 | char[32] |B0C3D4| w1_tap | weapon name }}<br />
{{OBDtr| 0x084 | float |E7CEA5| 00 00 80 3F | 1.000000 | weapon mouse sensitivity (applies on AI, too) }}<br />
{{OBDtr| 0x088 | float |E7CEA5| A6 92 2B 3D | 0.041888 | recoil base (e.g. for w1_tap and w2_sap) }}<br />
{{OBDtr| 0x08C | float |E7CEA5| 92 0A 86 3E | 0.261799 | recoil max }}<br />
{{OBDtr| 0x090 | float |E7CEA5| 00 00 A0 40 | 5.000000 | recoil factor }}<br />
{{OBDtr| 0x094 | float |E7CEA5| E2 A3 7B 3B | 0.003839 | recoil return speed }}<br />
{{OBDtr| 0x098 | float |E7CEA5| 88 C3 E4 3A | 0.001745 | recoil firing return speed }}<br />
{{OBDtr| 0x09C | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector X (disabled IK stuff) }}<br />
{{OBDtr| 0x0A0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Y}}<br />
{{OBDtr| 0x0A4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Z }}<br />
{{OBDtr| 0x0A8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector X}}<br />
{{OBDtr| 0x0AC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Y}}<br />
{{OBDtr| 0x0B0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Z}}<br />
{{OBDtr| 0x0B4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition X}}<br />
{{OBDtr| 0x0B8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Y}}<br />
{{OBDtr| 0x0BC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Z}}<br />
{{OBDtr| 0x0C0 | int16 |FFDDDD| 00 00 | 0 | freeTime (unused); always zero }}<br />
{{OBDtr| 0x0C2 | int16 |FFDDDD| 95 00 | 149 | recoil animation type (149 <nowiki>=</nowiki> autopistol_recoil) }}<br />
{{OBDtr| 0x0C4 | int16 |FFDDDD| A4 00 | 164 | reload animation type (164 <nowiki>=</nowiki> reload_pistol) }}<br />
{{OBDtr| 0x0C6 | int16 |FFDDDD| 19 00 | 25 | pause after reload in 1/60 seconds }}<br />
{{OBDtr| 0x0C8 | int16 |FFDDDD| 0A 00 | 10 | amount of shots }}<br />
{{OBDtr| 0x0CA | int16 |FFDDDD| 06 00 | 6 | amount of particles }}<br />
{{OBDtr| 0x0CC | int16 |FFDDDD| 01 00 | 1 | amount of firing modes }}<br />
{{OBDtr| 0x0CE | int16 |FFDDDD| 0A 00 | 10 | pause before reload in 1/60 seconds }}<br />
{{OBDtr| 0x0D0 | int16 |FFDDDD| 04 00 | 4 | release delay; delay between the moment the trigger is released and the moment the weapon stops firing }}<br />
{{OBDtr| 0x0D2 | int16 |FFDDDD| 00 00 | 0 | padding; always zero }}<br />
{{OBDtr| 0x0D4 | int32 |FFDDDD| 30 | 0x30 C0 02 00 | weapon options; the following bits are possible (values in hex):<br />
<br />
:0x'''02''' 00 00 00 - weapon can't be holstered<br />
:0x'''04''' 00 00 00 - weapon reloads with energy cells<br />
:0x'''08''' 00 00 00 - weapon is a rifle (two-handed)<br />
:0x'''10''' 00 00 00 - recoil affects aiming<br />
:0x'''20''' 00 00 00 - sustained fire (applies only to primary fire)<br />
:0x'''40''' 00 00 00 - runtime only; do not use<br />
:0x'''80''' 00 00 00 - stun switcher; used for w6_vdg, see below<br />
<br />
:0x00 '''01''' 00 00 - knockdown switcher; used for w4_psm, see below<br />
:0x00 '''02''' 00 00 - unknown; used for w5_sbg and w11_ba1<br />
:0x00 '''04''' 00 00 - secondary fire enabled<br />
:0x00 '''08''' 00 00 - barabbas weapon; see below<br />
:0x00 '''10''' 00 00 - heavy weapon; run, jump and creep disabled<br />
:0x00 '''20''' 00 00 - auto release trigger; used for w11_ba1<br />
:0x00 '''40''' 00 00 - has release delay; see the release delay field above<br />
:0x00 '''80''' 00 00 - laser sight visible<br />
<br />
:0x00 00 '''02''' 00 - crosshair scaling, used for w1_tap, w2_sap, w3_phr and w8_mbo<br />
:0x00 00 '''08''' 00 - weapon doesn't fade<br />
:0x00 00 '''10''' 00 - drain ammo; used by w4_psm to decrement ammo while firing because its firing mode is continuous rather than repetitive<br />
}}<br />
|}<br />
<br />
<br />
'''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<br />
<br />
'''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<br />
<br />
'''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 beginn, then always this weapon is teleported back to character (when command used again)<br />
<br />
==0x0D8 to 0x1D7 - Firing modes==<br />
<br />
<br />
Every ONWC has 2 firing mode slots (128 = 0x80 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
<br />
===0x0D8 to 0x157 - Primary firing mode===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x0D8 | int32 |64AAAA| 00 00 00 00 | 0 | firing mode options; the following bits are possible (values in hex):<br />
:0x'''01''' 00 00 00 - No wild shots<br />
}}<br />
{{OBDtr| 0x0DC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix XX }}<br />
{{OBDtr| 0x0E0 | float |EBEBEB| 05 6D 56 3D | 0.052350 | transform matrix XY }}<br />
{{OBDtr| 0x0E4 | float |EBEBEB| F4 8D A9 37 | 0.000020 | transform matrix XZ }}<br />
{{OBDtr| 0x0E8 | float |EBEBEB| 05 6D 56 BD | -0.052350 | transform matrix YX }}<br />
{{OBDtr| 0x0EC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix YY }}<br />
{{OBDtr| 0x0F0 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix YZ }}<br />
{{OBDtr| 0x0F4 | float |EBEBEB| F4 8D A9 B7 | -0.000020 | transform matrix ZX }}<br />
{{OBDtr| 0x0F8 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix ZY }}<br />
{{OBDtr| 0x0FC | float |EBEBEB| 00 00 80 3F | 1.000000 | transform matrix ZZ }}<br />
{{OBDtr| 0x100 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation X; always zero for original weapons }}<br />
{{OBDtr| 0x104 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Y; always zero for original weapons }}<br />
{{OBDtr| 0x108 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Z; always zero for original weapons }}<br />
{{OBDtr| 0x10C | float |EBEBEB| 23 A6 7F 3F | 0.998629 | firing spread direction X component }}<br />
{{OBDtr| 0x110 | float |EBEBEB| AE 6C 56 BD | -0.052349 | firing spread direction Y component }}<br />
{{OBDtr| 0x114 | float |EBEBEB| AF 8D A9 B7 | -0.000020 | firing spread direction Z component }}<br />
{{OBDtr| 0x118 | float |EBEBEB| DC FE 08 3C | 0.008362 | targeting vector origin X component? }}<br />
{{OBDtr| 0x11C | float |EBEBEB| 5C 11 23 3E | 0.159246 | targeting vector origin Y component? }}<br />
{{OBDtr| 0x120 | float |EBEBEB| 39 C6 2A 3F | 0.667087 | targeting vector origin Z component? }}<br />
{{OBDtr| 0x124 | float |EBEBEB| 00 00 61 44 | 900.000000 | prediction speed; 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 }}<br />
{{OBDtr| 0x128 | float |EBEBEB| 00 00 20 41 | 10.000000 | 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 }}<br />
{{OBDtr| 0x12C | float |EBEBEB| 00 00 20 40 | 2.500000 | aim_radius; always the same; possible related to the inaccuracy angle above }}<br />
{{OBDtr| 0x130 | float |EBEBEB| 00 00 96 43 | 300.000000 | 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<nowiki>=</nowiki>1* (but you have to be in a large open area, since those ranges are quite big) }}<br />
{{OBDtr| 0x134 | float |EBEBEB| 00 00 40 41 | 12.000000 | 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 }}<br />
{{OBDtr| 0x138 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x13C | int16 |8C8CCC| 05 00 | 5 | maximum startle misses; probably the maximum number of shots an ai can miss when suprised before he starts aiming }}<br />
{{OBDtr| 0x13E | int16 |8C8CCC| 01 00 | 1 | skill index (in the [[ONCC]] shooting skill table) }}<br />
{{OBDtr| 0x140 | int32 |8C8CCC| 00 00 00 00 | 0 | fight timer, 240 for w4_psm, 200 for v6_vdg }}<br />
{{OBDtr| 0x144 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile speed (150 for SBG, 160 for WMC) }}<br />
{{OBDtr| 0x148 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile gravity, can be negative for firing at the enemy's feet (0.5 for SBG, 0.3 for WMC) }}<br />
{{OBDtr| 0x14C | float |FF00C8| 00 00 34 43 | 180.000000 | 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<nowiki>=</nowiki>1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm) }}<br />
{{OBDtr| 0x150 | float |FF00C8| 00 00 40 40 | 3.000000 | length of the firingspread's base side; can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 }}<br />
{{OBDtr| 0x154 | float |FF00C8| 50 77 D6 3D | 0.104719 | angle between firingspread's base and its altitude(length); can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 (0.1 for w1_tap, 0.21 for w2_sap) }}<br />
|}<br />
<br />
<br />
;Transform matrix<br />
:Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.<br />
<br />
===0x158 to 0x1D7 - Secondary firing mode===<br />
<br />
<br />
The only original weapon for which these fields are not all zero is '''w11_ba1'''.<br />
<br />
They are the exact counterparts of the fields at 0xD8 - 0x157.<br />
<br />
<br />
==0x1D8 to 0x6D7 - Weapon particle array==<br />
<br />
<br />
Every ONWC has 16 particle slots (80 = 0x50 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
Offsets are relative to the beginning of a slot.<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtrBK|1=First of 16 elements (black outline).}}<br />
{{OBDtr| 0x000 | float |F0F096| AE 6C 56 3D | 0.052349 | transformation matrix, xx term }}<br />
{{OBDtr| 0x004 | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, xy term }}<br />
{{OBDtr| 0x008 | float |F0F096| C2 53 90 B3 | -0.000000... | transformation matrix, xz term }}<br />
{{OBDtr| 0x00C | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, yx term }}<br />
{{OBDtr| 0x010 | float |F0F096| AE 6C 56 BD | -0.052349 | transformation matrix, yy term }}<br />
{{OBDtr| 0x014 | float |F0F096| AF 8D A9 B7 | -0.000020 | transformation matrix, yz term }}<br />
{{OBDtr| 0x018 | float |F0F096| BA 59 A9 B7 | -0.000020 | transformation matrix, zx term }}<br />
{{OBDtr| 0x01C | float |F0F096| 5B 02 85 35 | 0.000001 | transformation matrix, zy term }}<br />
{{OBDtr| 0x020 | float |F0F096| 00 00 80 BF | -1.000000 | transformation matrix, zz term }}<br />
{{OBDtr| 0x024 | float |F0F096| 6F 63 57 40 | 3.365444 | x-offset of particle to weapon }}<br />
{{OBDtr| 0x028 | float |F0F096| B3 1D 89 BC | -0.016738 | y-offset of particle to weapon }}<br />
{{OBDtr| 0x02C | float |F0F096| C5 C1 2A 3F | 0.667019 | z-offset of particle to weapon }}<br />
{{OBDtr2|0x030 | char[16] |00C864| w1_tap_e01 | particle name (reference to 06226-3RAPw1_tap_e01.[[OBD:BINA/PAR3|BINA]]) }}<br />
{{OBDtr| 0x040 | int32 |00C8FF| 00 00 00 00 | 0 | runtime only (pointer to particle class) }}<br />
{{OBDtr| 0x044 | int16 |00C8FF| 01 00 | 1 | ammo decrement (different for the 2 firing modes of w11_ba1) }}<br />
{{OBDtr| 0x046 | int16 |00C8FF| 0C 00 | 12 | delay between shots in frames (12 frames <nowiki>=</nowiki> 0.2 seconds) }}<br />
{{OBDtr| 0x048 | int16 |00C8FF| 04 00 | 4 | 'roughjustice' delay between shots in frames }}<br />
{{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 }}<br />
{{OBDtr| 0x04C | int16 |00C8FF| 00 00 | 0 | 0 <nowiki>=</nowiki> particle is triggered by fire1; 1 <nowiki>=</nowiki> particle is triggered by fire2; -1 <nowiki>=</nowiki> particle is triggered by both firing modes }}<br />
{{OBDtr| 0x04E | int16 |00C8FF| 00 00 | 0 | delay before firing }}<br />
|}<br />
<br />
<br />
;Transformation matrix<br />
:That's what defines orientation, stretching, etc.<br />
:See [[OBD:CRSA|CRSA]] for details.<br />
<br />
==0x6D8 to 0x71F - End of file==<br />
<br />
<br />
[[image:onwc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr2|0x6D8 | char[32] |C80040| weapon _empty | empty weapon sound (reference to 08993-weapon_empty.[[OBD:OSBD/OSIm|imp.OSBD]]) }}<br />
{{OBDtr| 0x6F8 | int32 |FFCD96| 00 00 00 00 | 0 | runtime only (pointer to empty weapon sound) }}<br />
{{OBDtr| 0x6FC | link |C8C864| 01 81 0E 00 | 3713 | link to 03713-w1_glow.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x700 | link |C8C864| 01 82 0E 00 | 3714 | link to 03714-w1_glow_ammo.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x704 | float |0096C8| 00 00 80 3F | 1.000000 | x-scale factor of glow textures }}<br />
{{OBDtr| 0x708 | float |0096C8| 00 00 80 3F | 1.000000 | z-scale factor of glow textures }}<br />
{{OBDtr| 0x70C | float |0096C8| 76 65 EB 3F | 1.839034 | x-offset of pickup handle }}<br />
{{OBDtr| 0x710 | float |0096C8| 96 4C A9 3D | 0.082666 | y-offset of pickup handle }}<br />
{{OBDtr| 0x714 | float |0096C8| 06 E2 14 3E | 0.145393 | z-offset of pickup handle }}<br />
{{OBDtr| 0x718 | float |0096C8| 00 00 00 00 | 0.000000 | hovering height of unheld weapon }}<br />
{{OBDtr| 0x71C | char[4] |FF80C0| AD DE | dead | unused }}<br />
|}<br />
<br />
<br />
;Glow textures<br />
: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.<br />
;Pickup handle<br />
:The tolerance is hardcoded. The offsets are not relative to the weapon's axes, but to the world axes (!).<br />
:This is a rather nasty "feature" (actually, the offsets ''should'' be relative to the weapon's orientation)<br />
: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.<br />
<br />
<br />
{{OBD_File_Footer | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Talk:Anniversary_Edition&diff=17454Talk:Anniversary Edition2010-10-04T21:07:50Z<p>Gumby: </p>
<hr />
<div>Mostly done :)<br />
If you wish to complain, do so here. [[User:Gumby|Gumby]] 06:23, 17 November 2008 (CET)<br />
<br />
<br />
<br />
Oni is going to became 10 years old on [[Oni#Release|26 January]]. Will we celebrate that somehow? I know the editions comes out at uncertain intervals but, heck, it will be 10 years after all. --[[User:Paradox-01|Paradox-01]] 19:59, 2 October 2010 (UTC)<br />
:I believe we should have another release out before then, actually. Maybe this month? --[[User:Iritscen|Iritscen]] 21:07, 2 October 2010 (UTC)<br />
::A release should be mostly ready now. Just have to go back to the old crappy globalization of level textures and tie up loose ends. [[User:Gumby|Gumby]] 21:07, 4 October 2010 (UTC)</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Talk:Lightmapping_levels&diff=17453Talk:Lightmapping levels2010-10-04T21:05:13Z<p>Gumby: Created page with 'There was probably some thought behind rendering particles between the env and the shadow: Oni has no sharp shadows, and it allows the particles to be rendered in the same light\…'</p>
<hr />
<div>There was probably some thought behind rendering particles between the env and the shadow: Oni has no sharp shadows, and it allows the particles to be rendered in the same light\shading that the env is in.<br />
<br />
...if that makes any sense. [[User:Gumby|Gumby]] 21:05, 4 October 2010 (UTC)</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:OBOA&diff=17415OBD:OBOA2010-08-30T01:37:41Z<p>Gumby: </p>
<hr />
<div>{{OBD_File_Header | type=OBOA | prev=OBDC | next=OFGA | name=Starting Object Array | family=Level | align=center}}<br />
<br />
<br />
[[image:oboa_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x00 | res_id |FF0000| 01 55 02 00 | 597 | 00597-.OBOA }}<br />
{{OBDtr| 0x04 | lev_id |FFFF00| 01 00 00 06 | 3 | level 3 }}<br />
{{OBDtr| 0x08 | char[22] |00FF00| AD DE | dead | unused }}<br />
{{OBDtr| 0x1E | int16 |00FFFF| 62 00 | 98 | arrray size }}<br />
{{OBDtrBK}}<br />
{{OBDtr| 0x00 | int32 |FFC8C8| 01 56 02 00 | 1 | link to [[OBD:M3GA|00598-.M3GA]] }}<br />
{{OBDtr| 0x04 | link |FFFFC8| 00 00 00 00 | unused | link to [[OBD:OBAN|OBAN]] }}<br />
{{OBDtr| 0x08 | link |C8FFC8| 00 00 00 00 | unused | link to [[OBD:ENVP|ENVP]] }}<br />
{{OBDtr| 0x0C | bitset32 |C8FFFF| 00 12 00 00 | 0, 18, 0, 0 | flags; the following bits are used:<br />
:0x00 '''02''' 00 00 - element used<br />
:0x00 '''04''' 00 00 - no collision detection<br />
:0x00 '''08''' 00 00 - no gravity<br />
:0x00 '''10''' 00 00 - object uses a bounding box for collision detection (overrides 0x0004)<br />
}}<br />
{{OBDtr| 0x10 | int32 |FFC8FF| 46 89 00 00 | 35142 | unknown }}<br />
{{OBDtr| 0x14 | int32 |FFC800| 01 00 00 00 | 1 | door ID; only used for doors; in the case of double doors both doors have the same id but one of the door identifiers has bit 12 set }}<br />
{{OBDtr| 0x18 | int32 |C800C8| 00 00 00 00 | 0 | "physics type"; the following values are possible:<br />
:0 - none<br />
:1 - none<br />
:2 - has physics (same as 4)<br />
:3 - is animated (no physics)<br />
:4 - has physics <br />
}}<br />
{{OBDtr| 0x1C | int32 |C87C64| FF FF 00 00 | 65535 | script ID; used by obj_create script function; (65535 <nowiki>=</nowiki> not used) }}<br />
{{OBDtr| 0x20 | float |B0C3D4| 00 00 4F 43 |207.000000 | initial x-position }}<br />
{{OBDtr| 0x24 | float |B0C3D4| 1F 05 F6 42 |123.010002 | initial y-position (height) }}<br />
{{OBDtr| 0x28 | float |B0C3D4| 98 7F CC C3 |-408.996826| initial z-position }}<br />
{{OBDtr| 0x2C | float |E7CEA5| F2 04 35 3F | 0.707107 | x component of the initial rotation quaternion }}<br />
{{OBDtr| 0x30 | float |E7CEA5| 74 BC 82 B9 | -0.000249 | y component of the initial rotation quaternion }}<br />
{{OBDtr| 0x34 | float |E7CEA5| 74 BC 82 B9 | -0.000249 | z component of the initial rotation quaternion }}<br />
{{OBDtr| 0x38 | float |E7CEA5| F3 04 35 3F | 0.707107 | w component of the initial rotation quaternion }}<br />
{{OBDtr| 0x3C | float |FFDDDD| 00 00 80 3F | 1.000000 | initial scale of the object }}<br />
{{OBDtr| 0x40 | float |64AAAA| FC FF 7F 3F | 0.999999 | m11 element of the initial position transform matrix }}<br />
{{OBDtr| 0x44 | float |64AAAA| 00 00 00 00 | 0.000000 | m21 element of the initial position transform matrix }}<br />
{{OBDtr| 0x48 | float |64AAAA| 8A E3 38 BA | -0.000705 | m31 element of the initial position transform matrix }}<br />
{{OBDtr| 0x4C | float |64AAAA| 8A E3 38 BA | -0.000705 | m12 element of the initial position transform matrix }}<br />
{{OBDtr| 0x50 | float |64AAAA| 2E DE 4C 32 |0.000000...| m22 element of the initial position transform matrix }}<br />
{{OBDtr| 0x54 | float |64AAAA| FC FF 7F BF | -0.999999 | m32 element of the initial position transform matrix }}<br />
{{OBDtr| 0x58 | float |64AAAA| C9 F5 13 2D |0.000000...| m13 element of the initial position transform matrix }}<br />
{{OBDtr| 0x5C | float |64AAAA| 00 00 80 3F | 1.000000 | m23 element of the initial position transform matrix }}<br />
{{OBDtr| 0x60 | float |64AAAA| 2B DE 4C 32 |0.000000...| m33 element of the initial position transform matrix }}<br />
{{OBDtr| 0x64 | float |64AAAA| 00 00 4F 43 |207.000000 | m14 element of the initial position transform matrix (x-position) }}<br />
{{OBDtr| 0x68 | float |64AAAA| 1F 05 F6 42 |123.010002 | m24 element of the initial position transform matrix (y-position, height) }}<br />
{{OBDtr| 0x6C | float |64AAAA| 98 7F CC C3 |-408.996826| m34 element of the initial position transform matrix (z-position) }}<br />
{{OBDtr2|0x70 | char[64] |EBEBEB| object_door_1 | name of the object }}<br />
{{OBDtr2|0xB0 | char[64] |8C8CCC| L3_Gunk.ENV | internal object file name; maybe an old development relict }}<br />
|}<br />
<br />
<br />
Elements m41, m42, m43, m44 of both transform matrices are missing. m41, m42 and m43 are the projection transform coefficients and they are not needed so they are 0.0 and the m44 element is always 1.0 for a transform matrix. (column major transform matrices like in Open GL, for Direct 3D they need to be transposed) <br />
<br />
<br />
The initial position transform is used the place the object in the environment. For object that have an animation attached to them this is also the starting position of the animation sequence. The initial x,y and z position value together with the initial rotation quaternion and the initial scale factor contain basically the same information as the initial transform matrix and combining them in a transform matrix should result in the initial transform matrix (less the differences due to floating point computation errors)<br />
<br />
<br />
{{OBD_File_Footer | type=OBOA | prev=OBDC | next=OFGA | name=Starting Object Array | family=Level}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:BINA/PAR3&diff=17414OBD:BINA/PAR32010-08-29T04:22:28Z<p>Gumby: </p>
<hr />
<div>{{OBD BINA Header|prev=ONIE|type=PAR3|next=SABD|name=3D Particle|onistuff=b_3d}}<br />
<br />
The following example is the raw/sep part of '''3RAPenv_bomb_e06.BINA''' (level 0). (Another example: http://ssg.oni2.net/test.htm )<br />
<br />
Particle dialogs: http://ssg.oni2.net/subfold/bluebox/3d-part.htm<br />
<br />
==Header==<br />
The header takes up 780 = 0x30C bytes.<br />
<br />
[[Image:bin_r_3h.gif]]<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x00 | char[4] |FF0000| 33 52 41 50 | PAR3 | signature }}<br />
{{OBDtr| 0x04 | int32 |FFFF00| 9C 06 00 00 | 1692 | length of the following 3d particle part from this position }}<br />
{{OBDtr| 0x08 | int16 |00FF00| 9C 06 | 1692 | length again }}<br />
{{OBDtr| 0x0A | int16 |00FF00| 12 00 | 18 | version }}<br />
{{OBDtr| 0x0C | int32 |00FFFF| 01 20 00 00 | 0x2001 | flags1; used flags (from left to right):<br />
:0x'''01''' 00 00 00 - decorative<br />
:0x'''08''' 00 00 00 - use separate Y scale<br />
:0x'''E0''' 00 00 00 - sprite/contrail mode mask (3 bits, see below for possible values)<br />
:0x00 '''01''' 00 00 - geometry<br />
:0x00 '''02''' 00 00 - collide with walls<br />
:0x00 '''04''' 00 00 - collide with chars<br />
:0x00 '''08''' 00 00 - scale to velocity<br />
:0x00 '''10''' 00 00 - has velocity<br />
:0x00 '''20''' 00 00 - has orientation<br />
:0x00 '''40''' 00 00 - has position offset<br />
:0x00 '''80''' 00 00 - has object attachment matrix<br />
:0x00 00 '''01''' 00 - has unknown; ignored?<br />
:0x00 00 '''02''' 00 - has decal state<br />
:0x00 00 '''04''' 00 - has texture animation random start tick<br />
:0x00 00 '''08''' 00 - has texture animation independent tick<br />
:0x00 00 '''10''' 00 - has damage owner<br />
:0x00 00 '''20''' 00 - has contrail data<br />
:0x00 00 '''40''' 00 - has lensflare fading state<br />
:0x00 00 '''80''' 00 - has attractor<br />
:0x00 00 00 '''01''' - has collision cache <br />
}}<br />
{{OBDtr| 0x10 | int32 |00FFFF| 00 00 00 02 | 0x02000000 | flags2; used flags (from left to right):<br />
:0x'''01''' 00 00 00 - use special tint<br />
:0x'''02''' 00 00 00 - don't attract through walls<br />
:0x'''08''' 00 00 00 - expire on cutscene<br />
:0x'''10''' 00 00 00 - die on cutscene<br />
:0x'''60''' 00 00 00 - disable level mask (2 bits, 0x00 - never disable, 0x40 - disable medium detail, 0x60 - disable low detail)<br />
:0x00 00 '''10''' 00 - draw as sky<br />
:0x00 00 '''20''' 00 - decal full brightness<br />
:0x00 00 '''80''' 00 - decal<br />
:0x00 00 00 '''01''' - initially hidden<br />
:0x00 00 00 '''02''' - invisible<br />
:0x00 00 00 '''04''' - fade out on edge<br />
:0x00 00 00 '''08''' - vector<br />
:0x00 00 00 '''10''' - lock position to link<br />
:0x00 00 00 '''20''' - is contrail emitter<br />
:0x00 00 00 '''40''' - lensflare<br />
:0x00 00 00 '''80''' - one sided edge fade<br />
}}<br />
{{OBDtr| 0x14 | int32 |FF00FF| 00 00 00 00 | 0 | unused\runtine only }}<br />
{{OBDtr| 0x18 | int16 |FF8000| 01 00 | 1 | number of variables }}<br />
{{OBDtr| 0x1a | int16 |FF8000| 01 00 | 1 | number of events/actions }}<br />
{{OBDtr| 0x1c | int16 |FF8000| 01 00 | 1 | number of emitters }}<br />
{{OBDtr| 0x1e | int16 |FF8000| 00 01 | 256 | unknown; always the same }}<br />
|}<br />
<br />
Field '''0x14''':<br />
From empiric experiments I raise a thesis this field has meaning "used physics for this particle". It corresponds with Neo's [[OBOA]] researches ( field 0x18 in [[OBOA]] ):<br />
::0 - no pre-fabricated physics, if you want physics for this particle, create it via PAR3's actions ( see down on this site for info about actions. )<br />
::1 - unknown, looks like it disables all physics context ( even the PAR3 action-induced one ) <br />
::2 - pre-fabricated physics type 1 - reacts on collisions, ignores gravity.<br />
::3 - unknown, looks like it disables all physics context ( even the PAR3 action-induced one ) - maybe because this is "physics" for [[OBOA]] objects which will have [[OBAN]] animation ?<br />
::4 - pre-fabricated physics type 2 - reacts on collisions, gravity is not ignored.<br />
<br />
Judging from this discovery it seems possible that maybe there are more ONI file types which can have this "used physics" field. For example [[DOOR]], unknown field 0x18 ( is 0x 02|00|00|00 -> reacts on collisions, ignores gravity ). Maybe there are more files with this field ? --[[User:Loser|Loser]] 07:32, 16 August 2009 (UTC)<br />
:So just checking: when you set this field, the particles suddenly had collisions\gravity and such? [[User:Gumby|Gumby]] 02:31, 17 August 2009 (UTC)<br />
::Same question as Gumby. For all I know particles do not have "physics", only objects and characters have. As for other uses of this "physics type" thing: highly unlikely. I've said it before and I'll say it again: the physics system in Oni is simplistic. There's nothing that it can do more than it already does. Don't waste your time on it. [[User:Neo|Neo]]<br />
<br />
<br />
<br />
Sprite modes:<br />
:*0 - sprite (face camera, orient to screen) <br />
:*1 - rotated sprite (face camera, orient to particle) <br />
:*2 - beam (parallel, face camera) <br />
:*3 - arrow (parallel, orient to particle) <br />
:*4 - flat (perpendicular) <br />
:*7 - discus (parallel, orient to particle) <br />
<br />
Contrail modes:<br />
:*5 - contrail (orient to particle) <br />
:*6 - contrail (face camera) <br />
<br />
HasX flags:<br />
:For each HasX flags that is set space will be allocated in the particle to hold the respective value. For example:<br />
:*"has velocity" - allocates space for the velocity vector (3 floats = 12 bytes)<br />
:*"has orientation" - allocates space for a 3x3 matrix (9 floats = 36 bytes)<br />
:*"has object attachment matrix" - allocates space for a pointer to an "object" transform matrix (pointer = 4 bytes)<br />
:*"has damage owner" - allocates space for an int32 that indicates who owns the particle (typically the owner is a character or a turret)<br />
:The creator of a particle is responsable for properly initializing these values. <br />
:In the specific case of particle emitters the newly emitted particle can inherit these values from the emitting particle. A value is inherited if:<br />
:*both the emitting particle and emitted particle have the coresponding HasX flag set<br />
:*the emitter itself doesn't calculate another value (orientation, velocity etc.)<br />
<br />
===Event groups===<br />
Here we have 16 4-byte slots, which correspond to the following 16 particle event types :<br />
{|border=1 cellspacing=0<br />
|0:update||1:pulse||2:start||3:stop<br />
|-<br />
|4:bgfx_start||5:bgfx_stop||6:hit_wall||7:hit_char<br />
|-<br />
|8:lifetime||9:explode||A:brokenlink||B:create<br />
|-<br />
|C:die||D:newattractor||E:delay_start||F:delay_stop<br />
|}<br />
The ZZZZ actions in the file (ZZZZ is specified at 0x1A above) are bound to a specific event # by means of this list.<br />
<br />
If the 4-byte slot for event # reads XX XX YY YY, where XXXX < YYYY < ZZZZ, then event # will execute all the actions whose slot is greater or equal to XXXX, and less than YYYY.<br />
;Example:3RAPglass_shard.BINA has 10 actions, distributed between events as follows :<br />
:(0,4)(4,4)(4,4)(4,4)(4,4)(4,4)(4,7)(7,9)(9,10)(10,10)(10,10)(10,10)(10,10)(10,10)(10,10)(10,10)<br />
:That means :<br />
:*actions {0,1,2,3} will be triggered by an '''update''' event<br />
:*actions {4,5,6} will be triggered by a '''hit_wall''' event<br />
:*actions {7,8} will be triggered by a '''hit_char''' event<br />
:*action {9} will be triggered by a '''lifetime''' event<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x20 | int16,int16 |FFC8C8| 00 00 01 00 | 0, 1 | action 0 (actions 0 to 1) triggered by '''update''' event }}<br />
{{OBDtr| 0x24 | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''pulse''' event }}<br />
{{OBDtr| 0x28 | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''start''' event }}<br />
{{OBDtr| 0x2C | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''stop''' event }}<br />
{{OBDtr| 0x30 | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''bgfx_start''' event }}<br />
{{OBDtr| 0x34 | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''bgfx_stop''' event }}<br />
{{OBDtr| 0x38 | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''hit_wall''' event }}<br />
{{OBDtr| 0x3C | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''hit_char''' event }}<br />
{{OBDtr| 0x40 | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''lifetime''' event }}<br />
{{OBDtr| 0x44 | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''explode''' event }}<br />
{{OBDtr| 0x48 | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''brokenlink''' event }}<br />
{{OBDtr| 0x4C | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''create''' event }}<br />
{{OBDtr| 0x50 | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''die''' event }}<br />
{{OBDtr| 0x54 | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''newattractor''' event }}<br />
{{OBDtr| 0x58 | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''delay_start''' event }}<br />
{{OBDtr| 0x5C | int16,int16 |FFC8C8| 01 00 01 00 | 1, 1 | no action (actions 1 to 1) triggered by '''delay_stop''' event }}<br />
|}<br />
<br />
===Particle Properties===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtrBK|float property Lifetime (seconds, 0 <nowiki>=</nowiki> live forever) }}<br />
{{OBDtr| 0x60 | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x64 | float |C8FFC8| 00 00 40 3F | 0.750000 | value }}<br />
{{OBDtr| 0x68 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|float property Collision radius }}<br />
{{OBDtr| 0x7C | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x80 | float |C8FFC8| 00 00 00 00 | 0.0 | value }}<br />
{{OBDtr| 0x84 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|Others}}<br />
{{OBDtr| 0x98 | float |FFC800| 00 00 00 00 | 0.000000 | AI dodge radius }}<br />
{{OBDtr| 0x9C | float |FFC800| 00 00 00 00 | 0.000000 | AI alert radius }}<br />
{{OBDtr| 0xA0 | char[16] |FFC800| 00 | "" | flyby sound name }}<br />
|}<br />
<br />
===Particle Appearance===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtrBK|float property Scale }}<br />
{{OBDtr| 0xB0 | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0xB4 | float |C8FFC8| 00 00 80 3F | 1.0 | value }}<br />
{{OBDtr| 0xB8 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|float property Y Scale }}<br />
{{OBDtr| 0xCC | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0xD0 | float |C8FFC8| 00 00 80 3F | 1.0 | value }}<br />
{{OBDtr| 0xD4 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|float property Rotation }}<br />
{{OBDtr| 0xE8 | int32 |FFFFC8| 00 00 00 00 | 0 | value type: variable }}<br />
{{OBDtr| 0xEC | char[16] |C8FFC8| | "rotate" | value }}<br />
{{OBDtr| 0xFC | int32 |C8FFFF| 00 00 00 00 | | runtime: storage type }}<br />
{{OBDtr| 0x100 | int32 |FFC8FF| 00 00 00 00 | | runtime: storage offset }}<br />
{{OBDtrBK|float property Alpha }}<br />
{{OBDtr| 0x104 | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x108 | float |C8FFC8| 00 00 80 3F | 1.0 | value }}<br />
{{OBDtr| 0x10C | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|Others}}<br />
{{OBDtr| 0x120 | char[32] |C800C8| | "notfoundtex" | texture name or geometry name }}<br />
{{OBDtrBK|float property X Offset }}<br />
{{OBDtr| 0x140 | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x144 | float |C8FFC8| 00 00 00 00 | 0.0 | value }}<br />
{{OBDtr| 0x148 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|float property X Shorten }}<br />
{{OBDtr| 0x15C | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x160 | float |C8FFC8| 00 00 00 00 | 0.0 | value }}<br />
{{OBDtr| 0x164 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|color property Tint }}<br />
{{OBDtr| 0x178 | int32 |FFFFC8| 07 00 00 00 | 7 | value type: color }}<br />
{{OBDtr| 0x17C | float |C8FFC8| FF FF FF FF | white | value }}<br />
{{OBDtr| 0x180 | |C8FFC8| | | not used for color values }}<br />
{{OBDtrBK|float property Edge Fade Min (min value used: 0, max value used: 0.95) }}<br />
{{OBDtr| 0x194 | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x198 | float |C8FFC8| 00 00 00 00 | 0.0 | value }}<br />
{{OBDtr| 0x19C | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|float property Edge Fade Max (min value used: 0, max value used: 1) }}<br />
{{OBDtr| 0x1B0 | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x1B4 | float |C8FFC8| 00 00 00 3F | 0.5 | value }}<br />
{{OBDtr| 0x1B8 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|float property Max Contrail (min value used: 0, max value used: 100) }}<br />
{{OBDtr| 0x1CC | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x1D0 | float |C8FFC8| 00 00 00 00 | 0.0 | value }}<br />
{{OBDtr| 0x1D4 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|float property Lens Flare Distance (min value used: 0, max value used: 9000) }}<br />
{{OBDtr| 0x1E8 | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x1EC | float |C8FFC8| 00 00 00 00 | 0.0 | value }}<br />
{{OBDtr| 0x1F0 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|Others}}<br />
{{OBDtr| 0x204 | int16 |C87C64| 00 00 | 0 | fade in frames }}<br />
{{OBDtr| 0x206 | int16 |C87C64| 00 00 | 0 | fade out frames }}<br />
{{OBDtr| 0x208 | |C87C64| 64 00 | 100 | max decals }}<br />
{{OBDtr| 0x20A | |C87C64| 3C 00 | 60 | decal fade frames }}<br />
{{OBDtrBK|float property Decal Wrap Angle (min value used: 20, max value used: 120) }}<br />
{{OBDtr| 0x20C | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x210 | float |C8FFC8| 00 00 70 42 | 60.0 | value }}<br />
{{OBDtr| 0x214 | |C8FFC8| | | not used for float values }}<br />
|}<br />
<br />
===Particle Attractor===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x228 | int32 |B0C3D4| 00 00 00 00 | none | particle attractor type<br />
: 0 - none<br />
: 1 - link<br />
: 2 - class<br />
: 3 - tag<br />
: 4 - characters<br />
: 5 - hostiles<br />
: 6 - emitted towards<br />
: 7 - parent's attractor<br />
: 8 - all characters }}<br />
{{OBDtr| 0x22C | int32 |B0C3D4| 00 00 00 00 | distance | particle attractor selection<br />
: 0 - distance<br />
: 1 - angle }}<br />
{{OBDtr| 0x230 | |B0C3D4| 00 00 00 00 | 0 | runtime only }}<br />
{{OBDtr| 0x234 | char[64] |B0C3D4| 00 | "" | [[OBD:BINA/OBJC/PART|particle]] name (when attractor type is 3) or particle class name (when attractor type is 2) }}<br />
{{OBDtrBK|float property Attractor Max Distance (min value used: 12, max value used: 2000) }}<br />
{{OBDtr| 0x274 | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x278 | float |C8FFC8| 00 00 16 43 | 150.0 | value }}<br />
{{OBDtr| 0x27C | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|float property Attractor Max Angle (min value used: 15, max value used: 180) }}<br />
{{OBDtr| 0x290 | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x294 | float |C8FFC8| 00 00 F0 41 | 30.0 | value }}<br />
{{OBDtr| 0x298 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|float property Attractor Angle Select Min (min value used: 3, max value used: 180) }}<br />
{{OBDtr| 0x2AC | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x2B0 | float |C8FFC8| 00 00 40 40 | 3.0 | value }}<br />
{{OBDtr| 0x2B4 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|float property Attractor Angle Select Max (min value used: 20, max value used: 180) }}<br />
{{OBDtr| 0x2C8 | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x2CC | float |C8FFC8| 00 00 A0 41 | 20.0 | value }}<br />
{{OBDtr| 0x2D0 | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|float property Attractor Angle Select Weight (min value used: 1, max value used: 100) }}<br />
{{OBDtr| 0x2E4 | int32 |FFFFC8| 03 00 00 00 | 3 | value type: float }}<br />
{{OBDtr| 0x2E8 | float |C8FFC8| 00 00 40 40 | 3.0 | value }}<br />
{{OBDtr| 0x2EC | |C8FFC8| | | not used for float values }}<br />
{{OBDtrBK|Runtime only}}<br />
{{OBDtr| 0x300 | |E7CEA5| AC 22 81 0B | 0B 81 22 AC | runtime pointer to variables }}<br />
{{OBDtr| 0x304 | |E7CEA5| E0 22 81 0B | 0B 81 22 E0 | runtime pointer to events/actions}}<br />
{{OBDtr| 0x308 | |E7CEA5| 88 24 81 0B | 0B 81 24 88 | runtime pointer to emissions }}<br />
|}<br />
<br />
;Value types:<br />
:0 - variable; variable name follows <br />
:1 - none (action parameters use this to indicate an unused parameter)<br />
:3 - float; constant; 1 float value follows<br />
:4 - float; random; 2 float values follow (min, max)<br />
:5 - float; bell curve; 2 float values follow (mean, stddev)<br />
:6 - instance; instance name follows<br />
:7 - color; constant; 1 color follows <br />
:8 - color; random; 2 color follow (min, max) <br />
:9 - color; bell curve; 2 color follow (mean, stddev)<br />
:10 - int32; constant; int32 follows<br />
:11 - time cycle; 2 float values follow (cycle length, scale)<br />
--------<br />
<br />
==Variables==<br />
Every variable takes up 52=0x34 bytes. The number of variables is specified at 0x18 in the header.<br />
<br />
For each variable space is allocated then a particle is created. Variables can be modified by some actions like "linear change", "random change" etc. <br />
<br />
[[Image:bin_r_31.gif]]<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x00 | char[16] |C8FFC8| | "rotate" | name of the variable }}<br />
{{OBDtr| 0x10 | int32 |C8FFFF| 02 00 00 00 | 2 | storage type: float }}<br />
{{OBDtr| 0x14 | int32 |FFC8FF| 30 00 00 00 | 48 | runtime: storaget offset (incremented by the storage type size for every next variable) }}<br />
{{OBDtrBK|Initial value }}<br />
{{OBDtr| 0x18 | int32 |FFFFC8| 04 00 00 00 | 4 | value type: random }}<br />
{{OBDtr| 0x1c | float |C8FFC8| 00 00 B4 C3 | -360.000000 | min value }}<br />
{{OBDtr| 0x20 | float |C8FFC8| 00 00 B4 43 | 360.000000 | max value }}<br />
{{OBDtr| 0x24 | |C8FFC8| | | not used for random float }}<br />
{{OBDtr| 0x2c | |C8FFFF| | | not used for random float }}<br />
{{OBDtr| 0x30 | |FFC8FF| | | not used for random float }}<br />
|}<br />
<br />
;Storage types used for variables<br />
:0x0002 (0x02 00 00 00) - float (storage size: 4)<br />
:0x0008 (0x08 00 00 00) - color (storage size: 4)<br />
:0x1000 (0x00 10 00 00) - pingpong state (storage size: 4)<br />
<br />
;Other storage types<br />
<br />
These storage types are never used for variables. They might work but since there are no actions that can output such values it doesn't make much sense to declare variables using these types.<br />
<br />
:0x0001 (0x01 00 00 00) - int16 (storage size: 2) (never used)<br />
:0x0004 (0x04 00 00 00) - impact name (storage size: 16)<br />
:0x1010 (0x10 10 00 00) - action index (storage size: 4)<br />
:0x1020 (0x20 10 00 00) - emitter (storage size: 4)<br />
:0x1030 (0x30 10 00 00) - blast falloff (storage size: 4)<br />
:0x1040 (0x40 10 00 00) - coord frame (storage size: 4)<br />
:0x1050 (0x50 10 00 00) - collision orient (storage size: 4)<br />
:0x1060 (0x60 10 00 00) - boolean (storage size: 4)<br />
:0x1070 (0x70 10 00 00) - ambient sound (storage size: 4) (never used)<br />
:0x1080 (0x80 10 00 00) - impulse sound (storage size: 4) (never used)<br />
:0x1090 (0x90 10 00 00) - impact modifier (storage size: 4)<br />
:0x10A0 (0xA0 10 00 00) - damage type (storage size: 4)<br />
:*0 - normal<br />
:*1 - minor stun<br />
:*2 - major stun<br />
:*3 - minor knockdown<br />
:*4 - major knockdown<br />
:*5 - blownup<br />
:*6 - pickup<br />
:0x10B0 (0xB0 10 00 00) - direction (storage size: 4)<br />
:0x2000 (0x00 20 00 00) - ambient sound name (storage size: 16)<br />
:0x4000 (0x00 40 00 00) - impulse sound name (storage size: 16)<br />
<br />
-------<br />
<br />
==Actions==<br />
Every action takes up 424=0x1A8 bytes. The number of actions is specified at 0x1A in the header.<br />
<br />
[[Image:bin_r_32.gif]]<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x00 | int32 |FFC8C8| 22 00 00 00 | 34 | [[OBD:BINA/PAR3/Actions|Action type]]: Rotate Y }}<br />
{{OBDtr| 0x04 | int32 |FFFFC8| 00 00 00 00 | 0 | unknown }}<br />
{{OBDtrBK|First output paramter (reference to a variable which the action can modify) }}<br />
{{OBDtr| 0x00 | char[16] |C8FFC8| 00 | "" | variable name, if empty this block is not used }}<br />
{{OBDtr| 0x10 | int32 |C8FFFF| 00 00 00 00 | 0 | runtime: storage type }}<br />
{{OBDtr| 0x14 | int32 |FFC8FF| 00 00 00 00 | 0 | runtime: storage offset }}<br />
{{OBDtrBK|First input parameter}}<br />
{{OBDtr| 0x00 | int32 |FFFFC8| 0A 00 00 00 | 10 | value type: int32 }}<br />
{{OBDtr| 0x04 | int32 |C8FFC8| 01 00 00 00 | 1 | value (rotation coordinate space)}}<br />
{{OBDtr| 0x08 | |C8FFC8| | | not used for int32 values }}<br />
{{OBDtr| 0x14 | |C8FFFF| | | not used for int32 values }}<br />
{{OBDtr| 0x18 | |FFC8FF| | | not used for int32 values }}<br />
|}<br />
<br />
<br />
----<br />
<br />
==Emitters==<br />
Every emitter takes up 444=0x1BC bytes. The number of emitters is specified at 0x1C in the header. Each emitter has space for 12 parameters but it appears that the last 2 are never used.<br />
<br />
[[Image:bin_r_33.gif]]<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x00 | char[64] |FF0000| |"env_bomb_p09" | name of the particle to emit (3RAPenv_bomb_p09.BINA) }}<br />
{{OBDtr| 0x40 | int32 |FFFF00| C0 92 62 00 | | runtime pointer to emitted particle class }}<br />
{{OBDtr| 0x44 | int32 |00FF00| 47 00 00 00 | 0x47 | flags; used values:<br />
:0x'''01''' 00 00 00 - initially on<br />
:0x'''02''' 00 00 00 - increase particle count<br />
:0x'''04''' 00 00 00 - turn off at treshold<br />
:0x'''10''' 00 00 00 - emit with parent velocity<br />
:0x'''20''' 00 00 00 - ignored?<br />
:0x'''40''' 00 00 00 - orient to velocity<br />
:0x'''80''' 00 00 00 - inherit tint<br />
:0x00 '''01''' 00 00 - one per attractor<br />
:0x00 '''02''' 00 00 - at least one<br />
:0x00 '''04''' 00 00 - cycle attractors }}<br />
{{OBDtr| 0x48 | int16 |00FFFF| 04 00 | 4 | turn off treshold }}<br />
{{OBDtr| 0x4A | uint16 |00FFFF| FF FF | 65535 | emit probability (scaled by 65535) }}<br />
{{OBDtr| 0x4C | float |FF00FF| 00 00 20 41 | 10.000000 | amount of (sprite) copies }}<br />
{{OBDtr| 0x50 | int32 |FFC8C8| 00 00 00 00 | 0 | link to:<br />
:0 - nothing<br />
:1 - this particle<br />
:2-9 - to the particle last emitted by emitter 0-7<br />
:10 - this particle's link<br />
}}<br />
{{OBDtr| 0x54 | int32 |FFC8C8| 00 00 00 00 | 0 | emit rate; can use parameters 1 and 2; possible values (in dec):<br />
:0 - continuous (emit interval)<br />
:1 - random (min interval, max interval)<br />
:2 - instant<br />
:3 - distance (distance)<br />
:4 - attractor (recharge time, check interval) }}<br />
{{OBDtr| 0x58 | int32 |FFC8C8| 00 00 00 00 | 0 | position; can use parameters 3, 4 and 5; possible values (in dec):<br />
:0 - point<br />
:1 - line (radius)<br />
:2 - circle (inner radius, outer radius)<br />
:3 - sphere (inner radius, outer radius)<br />
:4 - offset (x, y, z)<br />
:5 - cylinder (heigt, inner radius, outer radius)<br />
:6 - body-surface (offset radius)<br />
:7 - body-bones (offset radius)}}<br />
{{OBDtr| 0x5C | int32 |FFC8C8| 03 00 00 00 | 3 | direction; can use parameters 6, 7 and 8; possible values (in dec):<br />
:0 - straight<br />
:1 - random<br />
:2 - cone (angle, center bias)<br />
:3 - ring (angle, offset)<br />
:4 - offset (x, y, z)<br />
:5 - inaccurate (base angle, inaccuracy, center bias)<br />
:6 - attractor}}<br />
{{OBDtr| 0x60 | int32 |FFC8C8| 00 00 00 00 | 0 | speed; can use parameters 9 and 10; possible values (in dec):<br />
:0 - uniform (speed)<br />
:1 - stratified (speed 1, speed 2)}}<br />
{{OBDtr| 0x64 | int32 |FFC8C8| 0C 00 00 00 | 12 | orientation dir; possible values (in dec):<br />
:0 - parent +X<br />
:1 - parent -X<br />
:2 - parent +Y<br />
:3 - parent -Y<br />
:4 - parent +Z<br />
:5 - parent -Z<br />
:6 - world +X<br />
:7 - world -X<br />
:8 - world +Y<br />
:9 - world -Y<br />
:10 - world +Z<br />
:11 - world -Z<br />
:12 - velocity<br />
:13 - reverse-velocity<br />
:14 - towards-emitter<br />
:15 - awayfrom-emitter}}<br />
{{OBDtr| 0x68 | int32 |FFC8C8| 04 00 00 00 | 4 | orientation up; same possible values as for orientation dir }}<br />
{{OBDtrBK|First emitter parameter }}<br />
{{OBDtr| 0x00 | int32 |FFFFC8| 04 00 00 00 | 4 | value type: random float }}<br />
{{OBDtr| 0x04 | float |C8FFC8| 00 00 00 3E | 0.125000 | attractor - recharge time min value }}<br />
{{OBDtr| 0x08 | float |C8FFC8| 00 00 00 3F | 0.500000 | attractor - recharge time max value }}<br />
{{OBDtr| 0x0C | |C8FFC8| | | not used for random float values }}<br />
{{OBDtr| 0x14 | |C8FFFF| | | not used for random float values }}<br />
{{OBDtr| 0x18 | |FFC8FF| | | not used for random float values }}<br />
|}<br />
<br />
----<br />
----<br />
{{OBD BINA Footer|prev=ONIE|type=PAR3|next=SABD|name=3D Particle|onistuff=b_3d}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONCC&diff=17413OBD:ONCC2010-08-29T03:57:43Z<p>Gumby: </p>
<hr />
<div>{{OBD_File_Header | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character | align=center}}<br />
<br />
<br />
[[image:oncc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 DF 03 00 | 991 | 00991-konoko_generic.ONCC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 06 | 0 | level 3 }}<br />
{{OBDtr| 0x008 | float |00FF00| CD CC 0C 3F | 0.550000 | downwards velocity? (unknown, always 0.55) }}<br />
{{OBDtr| 0x00C | float |00FF00| 8F C2 75 3D | 0.060000 | downward gravity acceleration }}<br />
{{OBDtr| 0x010 | float |00FF00| CD CC 8C 3F | 1.100000 | starting velocity for a simple (tap) JUMP }}<br />
{{OBDtr| 0x014 | float |00FF00| 00 00 80 C0 | -4.000000 | limit velocity for jumping and gravity flight }}<br />
{{OBDtr| 0x018 | float |00FF00| 8F C2 F5 3C | 0.030000 | upward acceleration (jetpack) if you hold JUMP }}<br />
{{OBDtr| 0x01C | int16 |00FFFF| 07 00 | 7 | gravity timer? (unknown, always 7) }}<br />
{{OBDtr| 0x01E | int16 |00FFFF| 14 00 | 20 | jetpack timer; time during which you can use the jetpack }}<br />
{{OBDtr| 0x020 | float |FF00FF| 00 00 34 42 | 45.000000 | maximal falling height without damage }}<br />
{{OBDtr| 0x024 | float |FF00FF| 00 00 07 43 | 135.000000 | maximal falling height with damage }}<br />
|}<br />
<br />
<br />
;Units:times are in frames<br />
:heights are in world units<br />
:velocities are in world units per frames<br />
:accelerations are in world units per frames squared<br />
;Downwards velocity: could correspond to the steady push experienced when neither jumping nor falling<br />
:would be roughly equivalent to the starting velocity of a fall<br />
:although the value .55 seems right, the "sinking" seems to be hardcoded now<br />
;Gravity timer:Seems to be hardcoded now (could be the time until gravity switches on)<br />
;Jetpack timer:You can press JUMP multiple times during the time window (quite fun!)<br />
;Falling height: let FH1 be the height at 0x20<br />
:let FH2 be the height at 0x24<br />
:let BH be the base health of the character<br />
:let FH be the actual falling height<br />
:then, if FH > FH2, the character is killed<br />
:if FH < FH1, the character takes no damage<br />
:if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x028 | link |FF8000| 01 F8 03 00 | 1016 | link to 01016-shadow1.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x02C | float |FF8000| 00 00 40 41 | 12.000000 | height where the shadow fades out completely }}<br />
{{OBDtr| 0x030 | float |FF8000| 00 00 00 41 | 8.000000 | height where the diameter of the shadow decreases and the shadow fades out half }}<br />
{{OBDtr| 0x034 | float |FF8000| 00 00 C0 40 | 6.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x038 | float |FF8000| 00 00 90 40 | 4.500000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x03C | float |FF8000| 00 00 40 40 | 3.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x040 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the first part of a jump }}<br />
{{OBDtr| 0x042 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the second part of a jump }}<br />
|}<br />
<br />
<br />
;Jump Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x044 | float |FF0080| 00 00 C8 41 | 25.000000 | jumpDistance? ; always the same }}<br />
{{OBDtr| 0x048 | int8 |FFC8C8| 16 | 22 | jumpHeight? ; always the same }}<br />
{{OBDtr| 0x049 | int8 |FFC8C8| 06 | 6 | jumpDistanceSquares?!?! ; always the same }}<br />
{{OBDtr| 0x04A | char[2] |FFC8C8| AD DE | dead | pad }}<br />
|}<br />
<br />
<br />
;Cover Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x04C | float |FFFFC8| 00 00 20 42 | 40.000000 | rayIncrement; always the same }}<br />
{{OBDtr| 0x050 | float |FFFFC8| 00 00 96 43 | 300.000000 | rayMax; always the same }}<br />
{{OBDtr| 0x054 | float |FFFFC8| 35 FA 8E 3C | 0.017453 | rayAngle; always the same (0.017453 <nowiki>=</nowiki> PI/180) }}<br />
{{OBDtr| 0x058 | float |FFFFC8| DB 0F C9 3F | 1.570796 | rayAngleMax; always the same (1.57 <nowiki>=</nowiki> PI/2) }}<br />
|}<br />
<br />
<br />
;Autofreeze Constants (unused)<br />
<br />
{{Table}}<br />
{{OBDtr| 0x05C | float |FFFFC8| 00 00 A0 40 | 5.000000 | distance_xz; always the same }}<br />
{{OBDtr| 0x060 | float |FFFFC8| 00 00 80 3F | 1.000000 | distance_y; always the same }}<br />
|}<br />
<br />
<br />
;Inventory Constants (unused?)<br />
<br />
{{Table}}<br />
{{OBDtr| 0x064 | int16 |C8FFC8| 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint }}<br />
{{OBDtr| 0x066 | char[2] |C8FFC8| AD DE | dead | unused }}<br />
|}<br />
<br />
<br />
;LOD Constants<br />
Distances from Camera to render certain LODs<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x068 | float |C8FFFF| 00 10 3D 48 |193600.000000| always the same; this is 440 squared }}<br />
{{OBDtr| 0x06C | float |C8FFFF| 00 10 3D 47 | 48400.000000| always the same; this is 220 squared }}<br />
{{OBDtr| 0x070 | float |C8FFFF| 00 10 3D 46 | 12100.000000| always the same; this is 110 squared }}<br />
{{OBDtr| 0x074 | float |C8FFFF| 00 00 00 00 | 0.000000 | always the same }}<br />
{{OBDtr| 0x078 | float |C8FFFF| 00 00 00 00 | 0.000000 | always the same }}<br />
|}<br />
<br />
<br />
;Hurt sound paramters<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x07C | int16 |FFC8FF| 23 00 | 35 | hurt_base_percentage; always the same }}<br />
{{OBDtr| 0x07E | int16 |FFC8FF| 5A 00 | 90 | hurt_max_percentage; always the same }}<br />
{{OBDtr| 0x080 | int16 |FFC8FF| 0F 00 | 15 | hurt_percentage_threshold; always the same }}<br />
{{OBDtr| 0x082 | int16 |FFC8FF| 78 00 | 120 | hurt_timer; always the same }}<br />
{{OBDtr| 0x084 | int16 |FFC8FF| 23 00 | 35 | hurt_min_timer; always the same }}<br />
{{OBDtr| 0x086 | int16 |FFC8FF| 01 00 | 1 | hurt_max_light; always the same }}<br />
{{OBDtr| 0x088 | int16 |FFC8FF| 02 00 | 2 | hurt_max_medium; always the same }}<br />
{{OBDtr| 0x08A | int16 |FFC8FF| 64 00 | 100 | hurt_death_chance; always the same }}<br />
{{OBDtr| 0x08C | int16 |FFC8FF| 0A 00 | 10 | hurt_volume_threshold; always the same }}<br />
{{OBDtr| 0x08E | int16 |FFC8FF| 0C 00 | 12 | hurt_medium_threshold; always the same }}<br />
{{OBDtr| 0x090 | int16 |FFC8FF| 16 00 | 22 | hurt_heavy_threshold; always the same }}<br />
{{OBDtr| 0x092 | int8 |FFC800| 00 | 0 | used at runtime only: if one sound pointers have been set }}<br />
{{OBDtr| 0x093 | char[1] |C800C8| DE | dead | unused; always the same }}<br />
{{OBDtr| 0x094 | float |C87C64| 00 00 00 3F | 0.500000 | unknown; always the same (sound volume?) }}<br />
{{OBDtr2|0x098 | char[32] |B0C3D4| konoko_hurt_light | hurt light sound (reference to 08121-konoko_hurt_light.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium | hurt medium sound (reference to 08123-konoko_hurt_medium.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy | hurt heavy sound (reference to 08119-konoko_hurt_heavy.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death | death sound (reference to 08115-konoko_death.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr| 0x118 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt light sound }}<br />
{{OBDtr| 0x11C | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt medium sound }}<br />
{{OBDtr| 0x120 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt heavy sound }}<br />
{{OBDtr| 0x124 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to death sound }}<br />
|}<br />
<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x128 | bitsets |E7CEA5| 17 00 00 00 | 23 | general AI option bitset collection ; see below }}<br />
{{OBDtr| 0x12C | float |FFDDDD| 00 00 80 3F | 1.000000 | AI rotation speed factor }}<br />
{{OBDtr| 0x130 | int16 |64AAAA| 06 00 | 6 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x132 | int16 |64AAAA| 18 00 | 24 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x134 | int16 |EBEBEB| 0F 00 | 15 | minimal realize firingspread time; (???number of frames???time in miliseconds???) after which AI realizes that it is in the firing spread (and it starts dodging) }}<br />
{{OBDtr| 0x136 | int16 |EBEBEB| 00 00 | 0 | maximal realize firingspread time; (???number of frames???time in miliseconds???) }}<br />
|}<br />
<br />
<br />
;AI rotation speed factor<br />
:reference rotation speed is about 1 turn (360&#65533;) per second<br />
:the setting is only effective if the AI is in control<br />
:so it's a bit like the AI's mouse sensitivity :)<br />
<br />
<br />
;General AI options bitset<br />
:allows or disables some parts of the AI behavior<br />
*NONE - startle anim is enabled, rest is disabled<br />
*0x01 - startle anim disabled<br />
*0x02 - firingspread/projectile dodge enabled for melee<br />
*0x04 - requires 0x02; firingspread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging<br />
*0x08 - requires 0x02, overrides 0x04 if both are set; firingspread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter<br />
*0x10 - bit not used<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x138 | float |8C8CCC| 00 00 80 3F | 1.000000 | minimal firingspread dodge amount; IMO similar to maneouvre variable, it tells AI how long it should perform dodging/hiding in response to some time spent inside firing spread (so setting this very high means that once enemy starts dodging/hiding, he will perform it even after firing spread disappears) }}<br />
{{OBDtr| 0x13C | float |8C8CCC| 00 00 80 3F | 1.000000 | maximal firingspread dodge amount; IMO similar to maneouvre variable }}<br />
{{OBDtr| 0x140 | float |8C8CCC| 00 00 00 3F | 0.500000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x144 | float |8C8CCC| 00 00 C8 41 | 25.000000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x148 | float |8C8CCC| 00 00 80 3F | 1.000000 | unknown; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x14C | int32 |FF00C8| 00 00 00 00 | 0 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x150 | int32 |FF00C8| 05 00 00 00 | 5 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x154 | int32 |FF00C8| 0F 00 00 00 | 15 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x158 | int32 |FF00C8| 3C 00 00 00 | 60 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtrBK|1=First of 13 elements (grey outline) }}<br />
{{OBDtr| 0x15C | float |F0F096| 00 00 00 00 | 0.000000 | recoil compensation amount (0.0 <nowiki>= min, 1.0 =</nowiki> max) }}<br />
{{OBDtr| 0x160 | float |F0F096| 00 00 00 00 | 0.000000 | best aiming angle in radians }}<br />
{{OBDtr| 0x164 | float |F0F096| 00 00 00 00 | 0.000000 | shot grouping error }}<br />
{{OBDtr| 0x168 | float |F0F096| 00 00 80 3F | 1.000000 | shot grouping decay }}<br />
{{OBDtr| 0x16C | float |F0F096| 00 00 80 3F | 1.000000 | shooting inaccuracy multiplier }}<br />
{{OBDtr| 0x170 | int16 |00C864| 00 00 | 0 | minimum delay between shots in frames }}<br />
{{OBDtr| 0x172 | int16 |00C864| 00 00 | 0 | maximum delay between shots in frames }}<br />
|}<br />
<br />
<br />
;SHOOTING SKILLS<br />
These can be reviewed with e.g. '''ai2_skill_select konoko_generic w1_tap''' and then either '''ai2_skill_show''' (prints to console) or '''ai2_skill_save''' (prints to file)<br />
;Fields<br />
:recoil compensation amount, between 0 and 1 (float)<br />
:best aiming angle, in radians (float)<br />
:shot grouping error (float)<br />
:shot grouping decay (float)<br />
:shooting inaccuracy multiplier (float)<br />
:minimum delay between shots, in frames (short)<br />
:maximum delay between shots, in frames (short)<br />
The first weapon (weapon 0) is not in the game anymore, whatever that was. Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's ball, except '''w10_sni''' is still available) ('''w12_ba2''' and '''w11_ba1''' are a bit mixed up : the beam is made of '''w12_ba2''' particles, and the grenade is a '''w11_ba1''' particle...)<br />
<br />
See screenshot for the raw hex (example is '''konoko_generic''' from '''level3_Final''')<br />
{{Table|width=""|align="left"}}<br />
|-BGCOLOR="#E9E9E9" ALIGN=CENTER<br />
!Weapon ||Offset ||recoil||bestangle||error||decay||inaccuracy||delays<br />
|-ALIGN=CENTER <br />
|'''w0_sec''' ||0x15C/0x173|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w1_tap''' ||0x174/0x18B|| 0.0 || 0.000000|| 0.40|| 0.4 || 0.0 || 30 - 45<br />
|-ALIGN=CENTER <br />
|'''w2_sap''' ||0x18C/0x193|| 0.3 || 0.013962|| 0.13|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w3_phr''' ||0x194/0x20B|| 0.3 || 0.010472|| 0.05|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w4_psm''' ||0x20C/0x213|| 0.3 || 0.015707|| 0.03|| 0.2 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w5_sbg''' ||0x214/0x22B|| 0.3 || 0.001745|| 0.00|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w6_vdg''' ||0x22C/0x233|| 0.3 || 0.001745|| 0.13|| 0.9 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w7_scc''' ||0x234/0x24B|| 0.3 || 0.001745|| 0.05|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w8_mbo''' ||0x24C/0x253|| 0.3 || 0.005236|| 0.01|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w9_scr''' ||0x254/0x26B|| 0.3 || 0.010472|| 0.04|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w10_sni'''||0x26C/0x273|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w11_ba1'''||0x274/0x28B|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w12_ba2'''||0x28B/0x293|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|}<br />
<br clear=all><br />
<br />
<br />
[[image:oncc_m.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x294 | int32 |00C8FF| 5A 00 00 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x298 | int32 |00C8FF| F0 00 00 00 | 240 | unknown; always the same }}<br />
{{OBDtr| 0x29C | int32 |00C8FF| B4 00 00 00 | 180 | unknown; always the same }}<br />
{{OBDtr| 0x2A0 | int32 |00C8FF| 28 00 00 00 | 40 | taunt chance (40%) }}<br />
{{OBDtr| 0x2A4 | int32 |00C8FF| 37 00 00 00 | 55 | go for gun chance (55%); determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command }}<br />
{{OBDtr| 0x2A8 | int32 |00C8FF| 3C 00 00 00 | 60 | running pickup chance (60%); this value is possibility of AI running weapon pickup (acrobatics, slides) instead of normal "stop->pickup";this is calculated AFTER engine decides that AI should run for weapon }}<br />
{{OBDtr| 0x2AC | int16 |C80040| 00 00 | 0 | combat profile ID; for example *0D* is for Mutant Muro }}<br />
{{OBDtr| 0x2AE | int16 |C80040| 16 00 | 22 | melee profile ID }}<br />
{{OBDtr| 0x2B0 | int8 |FFCD96| 64 | 100 | "taunt" sound probability (always) }}<br />
{{OBDtr| 0x2B1 | int8 |FFCD96| 00 | 0 | "alert" sound probability (never) }}<br />
{{OBDtr| 0x2B2 | int8 |FFCD96| 00 | 0 | "startle" sound probability (never) }}<br />
{{OBDtr| 0x2B3 | int8 |FFCD96| 00 | 0 | "checkbody" sound probability (never) }}<br />
{{OBDtr| 0x2B4 | int8 |FFCD96| 00 | 0 | "pursue" sound probability (never) }}<br />
{{OBDtr| 0x2B5 | int8 |FFCD96| 00 | 0 | "cower" sound probability (never) }}<br />
{{OBDtr| 0x2B6 | int8 |FFCD96| 64 | 100 | "superpunch" probability (always) }}<br />
{{OBDtr| 0x2B7 | int8 |FFCD96| 64 | 100 | "superkick" probability (always) }}<br />
{{OBDtr| 0x2B8 | int8 |FFCD96| 00 | 0 | "super3" sound probability (never) }}<br />
{{OBDtr| 0x2B9 | int8 |FFCD96| 00 | 0 | "super4" sound probability (never) }}<br />
{{OBDtr| 0x2BA | int16 |C8C864| 00 00 | 0 | probably a blank filler (always the same) }}<br />
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko | "taunt" sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x2DC | char[32] |0096C8| unused | "alert" sound }}<br />
{{OBDtr2|0x2FC | char[32] |0096C8| unused | "startle" sound }}<br />
{{OBDtr2|0x31C | char[32] |0096C8| unused | "checkbody" sound }}<br />
{{OBDtr2|0x33C | char[32] |0096C8| unused | "pursue" sound }}<br />
{{OBDtr2|0x35C | char[32] |0096C8| unused | "cower" sound }}<br />
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko | "superpunch" sound (reference to 08110-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x39C | char[32] |0096C8| c18_79_15konoko | "superkick" sound (reference to 08112-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound (only the superninja uses this slot) }}<br />
{{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound (never used in Oni) }}<br />
{{OBDtr| 0x3FC | float |FF80C0| 00 80 ED 43 | 475.000000 | central vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki>1* }}<br />
{{OBDtr| 0x400 | float |FF80C0| 00 00 16 43 | 150.000000 | peripheral vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki> 1* }}<br />
{{OBDtr| 0x404 | float |FF80C0| 7D 1B 44 3F | 0.766044 | horizontal angle between two couples of "eye-rays" (one couple is left, one if right eye); works for both vision fields }}<br />
{{OBDtr| 0x408 | float |FF80C0| F3 B3 51 3F | 0.819152 | vision field curve for central vision field; vision field looks like something between cone and cylinder; this value affect central angle of that; the higher this value is, the more is this field wrapped in order to achieve shaper angle; when set lower, vision field unwraps totally and it looks like radar antenna, attached to a character by two couples of straight strings(one couple left, one right) }}<br />
{{OBDtr| 0x40C | float |FF80C0| E8 D5 12 3F | 0.573576 | vertical angle between eye-rays in one couple; this is for central vision field }}<br />
{{OBDtr| 0x410 | float |FF80C0| D5 D0 31 3E | 0.173648 | vision field curve for peripheral vision field }}<br />
{{OBDtr| 0x414 | float |FF80C0| 6B 61 D8 BE | 0.422618 | vertical angle between eye-rays in one couple; this is for peripheral vision field }}<br />
{{OBDtr| 0x418 | int32 |D0C0AF| B4 00 00 00 | 180 | hostilethreat definite timer; how long will AI know exactly where its enemy is even if it can't see him with central vision-field; AI attacks him; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x41C | int32 |D0C0AF| 84 03 00 00 | 900 | hostilethreat strong timer; how long will AI remain in strong feeling that there is the enemy, but will not attack him but investigate; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x420 | int32 |D0C0AF| 10 0E 00 00 | 3600 | hostilethreat weak timer; how long will AI remain in weak feeling of an enemy, just looking around aimlessly (Glance pursue mode); can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x424 | int32 |D0C0AF| 10 0E 00 00 | 3600 | friendlythreat definite timer; how long will AI know exactly where its ally (Syndicate saw Syndicate for example) is even if it can't see him with central vision-field; AI simply knows there is someone else nearby; maybe has further possibilities; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x428 | int32 |D0C0AF| 50 46 00 00 | 18000 | friendlythreat strong timer; how long will AI remain in strong feeling that there is someone else, but will not try to find him or look at him; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x42C | int32 |D0C0AF| A0 8C 00 00 | 36000 | friendlythreat weak timer; how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x430 | float |EEDDFF| 00 00 80 3F | 1.000000 | earshot radius; defines size of the sound-collision sphere around AI }}<br />
{{OBDtr| 0x434 | link |C5FF8A| 01 FB 03 00 | 1019 | link to 01019-konoko.[[OBD:ONCV|ONCV]]; defines variants and upgrades }}<br />
{{OBDtr| 0x438 | link |C5FF8A| 01 F9 03 00 | 1017 | link to [[OBD:ONCP|01017-.ONCP]]; lists the particles available for this character (trails, flashes, etc) }}<br />
{{OBDtr| 0x43C | link |C5FF8A| 01 FA 03 00 | 1018 | link to [[OBD:ONIA|01018-.ONIA]]; lists the special impact sounds (used for special combat moves) }}<br />
{{OBDtr| 0x440 | int8 |C5FF8A| 00 | unused | runtime only }}<br />
{{OBDtr| 0x441 | int8 |C5FF8A| 00 | unused | padding }}<br />
{{OBDtr| 0x442 | int16 |C5FF8A| 00 00 | unused | runtime only }}<br />
{{OBDtr2|0x444 | char[16] |C0C0C0| Light | modifier; either hardcoded or defunct (only visible in pm_mod_type.WMM_, level 0)<br />
edit: WMDD says: Effects found for Impact x on Material y with Modifier: pm_mod_types }}<br />
{{OBDtrBK|1=First of 15 impact elements. }}<br />
{{OBDtr2|0x454 | char[128] |FF0080| Footstep_Walk | walk impact (reference to 04124-Footstep_Walk.[[OBD:Impt|Impt]] of level 0); always the same; without the impacts you can't hear the steps of a character }}<br />
{{OBDtr| 0x4D4 | int16 |FF0080| FF FF | -1 | set at runtime to the value stored at 0x08 in [[OBD:Impt|Impt]] }}<br />
|}<br />
<br />
<br />
[[image:oncc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0xBF2 | int16 |FFFFA6| 00 00 | 0 | unknown; always the same; maybe only a filler }} <br />
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused | special death particle; only the mad bomber use it }} <br />
{{OBDtr| 0xC34 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC38 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC3C | link |0000BF| 01 E6 03 00 | 998 | link to [[OBD:TRBS|00998-konoko_body_high.TRBS]] }}<br />
{{OBDtr| 0xC40 | link |0000BF| 01 E7 03 00 | 999 | link to [[OBD:TRMA|00999-konoko002_high_texture_generic.TRMA]] }}<br />
{{OBDtr| 0xC44 | link |0000BF| 01 E8 03 00 | 1000 | link to [[OBD:CBPM|01000-.CBPM]] }}<br />
{{OBDtr| 0xC48 | link |0000BF| 01 EC 03 00 | 1004 | link to [[OBD:CBPI|01004-.CBPI]] }}<br />
{{OBDtr| 0xC4C | int32 |804040| 2C 01 00 00 | 300 | fight mode timer in 1/60 seconds }} <br />
{{OBDtr| 0xC50 | int32 |804040| 30 75 00 00 | 30000 | first idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC54 | int32 |804040| 30 75 00 00 | 30000 | second idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC58 | int32 |804040| C8 00 00 00 | 200 | basic health of the character model; extra health information for every unique character are stored in the [[OBD:BINA/OBJC/CHAR|Character.BINA]] file}} <br />
{{OBDtr| 0xC5C | int32 |804040| 48 00 00 00 | 72 | feetBits (these bits mark the characters feet)<br />
}} <br />
{{OBDtr| 0xC60 | float |FF22FF| 00 00 80 3F | 1.000000 | minimal body size factor }} <br />
{{OBDtr| 0xC64 | float |FF22FF| 00 00 80 3F | 1.000000 | maximal body size factor }} <br />
{{OBDtrBK| the following 7 float values corespond to damage types (see the [[OBD:BINA/PAR3|PAR3]] page for the 7 possible types of damage) }}<br />
{{OBDtr| 0xC68 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC6C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC70 | float |FF22FF| 00 00 00 3F | 0.500000 | stun timer; specifies how long should be this char stunned when hit with w6_vdg; the longest time possible to be stunned is when this byte is zero. Then this ONCC is stunned for 200 frames (30 frames for initial stagger + the rest of the frames is stun animation). The shortest time is for 1.000000 (no stagger/stun at all) }} <br />
{{OBDtr| 0xC74 | float |FF22FF| 00 00 80 3E | 0.250000 | unknown }} <br />
{{OBDtr| 0xC78 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC7C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC80 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC84 | float |FF22FF| 00 00 00 3F | 0.500000 | BossShield Protect Amount (testme) }}<br />
{{OBDtr| 0xC88 | link |808080| 01 F6 03 00 | 1014 | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]] }} <br />
{{OBDtr| 0xC8C | link |808080| 01 F6 03 00 | 1015 | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }} <br />
{{OBDtr| 0xC90 | int16 |FFAA82| 1E 00 | 30 | AI Rate of Fire (testme) }} <br />
{{OBDtr| 0xC92 | int16 |FFAA82| 00 00 | 0 | time between death and deletion, in frames (about 3 seconds for mad bomber) }} <br />
{{OBDtr| 0xC94 | bitset |00D900| 00 | 0 | TRSC bitset; see below }} <br />
{{OBDtr| 0xC95 | int8 |00D900| 01 | 1 | when set to 1 indicates that character has daodan powers (character does more damage in overpower mode)}} <br />
{{OBDtr| 0xC96 | int8 |00D900| 00 | 0 | when set to 1 indicates that character has supershield<br />
* is visible as red shield when overpowered<br />
* needs daodan flag above and 51% overpower to be enabled; chenille cheat works too<br />
* now it prevents damage from weapon fire and melee (exception are throws)<br />
* received (melee) hits cause not blue block flashes but orange flares (see [http://paradox.oni2.net/Bilder/blocked_attacks_on_51percent_overpower_plus_daodan-flag_plus_supershield.png HERE])<br />
}} <br />
{{OBDtr| 0xC97 | int8 |00D900| 00 | 0 | when set to 1, generically turns on '''canttouchthis''' cheat for this ONCC (used by MutantMuro.ONCC }} <br />
{{OBDtr| 0xC98 | char[8] |CACAFF| AD DE | dead | unused }} <br />
|}<br />
<br />
<br />
;Body size factor<br />
The body size of a model will be scaled uniformly by a random coefficient that falls in the range defined with 0xC60 and 0xC64. This is apparently a provision for increasing the variety of appearances in classes like TCTF soldiers; unique characters like Konoko get a range of 1.0 to 1.0. The basis or seed for the randomness is apparently the time and/or order of spawning of that character, and therefore the "random" size of the character can be reproduced consistently as long as the execution of the code is the same each time. To illustrate, find the following code in IGMD/manplant/manplant_cutscene.bsl:<br />
<gallery align="right"><br />
File:ONCC_body_size_factor-original.jpg|Sample 1<br />
File:ONCC_body_size_factor-spawn_order_change.jpg|Sample 2<br />
File:ONCC_body_size_factor-sleep_insertion.jpg|Sample 3<br />
</gallery><br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
When you play the opening cutscene for Chapter 2, Agent Thorson should appear as he does in the first pic in the table to the right. Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2<br />
<br />
ai2_spawn Recep</tt><br />
<br />
and he'll appear as in the middle pic. Look out, he's a giant! Even the receptionist is bigger! Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
sleep 15<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
and you'll also get a deluxe-sized Thorson (right pic), though not as big as before. In complex scripts, body size quickly becomes truly random-seeming, but as you can see, in situations where the spawn function is called near the beginning of the code, before there is an opportunity for too much forking and branching, the results are quite reproducible.<br />
<br />
;TRSC bitset<br />
:determines whether character is left-hander or right-hander (weapon is attached to left or right fist bone) Must be consistent with TRSC or glitches appear. Possibilities are:<br />
:NONE - Character is right-hander with both pistols and rifles<br />
:0x01 - Character is left-hander with both pistols and rifles<br />
:0x02 - Character is left-hander with pistols but "right-hander" with rifles (however, animations for rifles are treated as left-handed)<br />
{{OBD_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONCC&diff=17412OBD:ONCC2010-08-29T03:53:44Z<p>Gumby: </p>
<hr />
<div>{{OBD_File_Header | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character | align=center}}<br />
<br />
<br />
[[image:oncc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 DF 03 00 | 991 | 00991-konoko_generic.ONCC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 06 | 0 | level 3 }}<br />
{{OBDtr| 0x008 | float |00FF00| CD CC 0C 3F | 0.550000 | downwards velocity? (unknown, always 0.55) }}<br />
{{OBDtr| 0x00C | float |00FF00| 8F C2 75 3D | 0.060000 | downward gravity acceleration }}<br />
{{OBDtr| 0x010 | float |00FF00| CD CC 8C 3F | 1.100000 | starting velocity for a simple (tap) JUMP }}<br />
{{OBDtr| 0x014 | float |00FF00| 00 00 80 C0 | -4.000000 | limit velocity for jumping and gravity flight }}<br />
{{OBDtr| 0x018 | float |00FF00| 8F C2 F5 3C | 0.030000 | upward acceleration (jetpack) if you hold JUMP }}<br />
{{OBDtr| 0x01C | int16 |00FFFF| 07 00 | 7 | gravity timer? (unknown, always 7) }}<br />
{{OBDtr| 0x01E | int16 |00FFFF| 14 00 | 20 | jetpack timer; time during which you can use the jetpack }}<br />
{{OBDtr| 0x020 | float |FF00FF| 00 00 34 42 | 45.000000 | maximal falling height without damage }}<br />
{{OBDtr| 0x024 | float |FF00FF| 00 00 07 43 | 135.000000 | maximal falling height with damage }}<br />
|}<br />
<br />
<br />
;Units:times are in frames<br />
:heights are in world units<br />
:velocities are in world units per frames<br />
:accelerations are in world units per frames squared<br />
;Downwards velocity: could correspond to the steady push experienced when neither jumping nor falling<br />
:would be roughly equivalent to the starting velocity of a fall<br />
:although the value .55 seems right, the "sinking" seems to be hardcoded now<br />
;Gravity timer:Seems to be hardcoded now (could be the time until gravity switches on)<br />
;Jetpack timer:You can press JUMP multiple times during the time window (quite fun!)<br />
;Falling height: let FH1 be the height at 0x20<br />
:let FH2 be the height at 0x24<br />
:let BH be the base health of the character<br />
:let FH be the actual falling height<br />
:then, if FH > FH2, the character is killed<br />
:if FH < FH1, the character takes no damage<br />
:if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x028 | link |FF8000| 01 F8 03 00 | 1016 | link to 01016-shadow1.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x02C | float |FF8000| 00 00 40 41 | 12.000000 | height where the shadow fades out completely }}<br />
{{OBDtr| 0x030 | float |FF8000| 00 00 00 41 | 8.000000 | height where the diameter of the shadow decreases and the shadow fades out half }}<br />
{{OBDtr| 0x034 | float |FF8000| 00 00 C0 40 | 6.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x038 | float |FF8000| 00 00 90 40 | 4.500000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x03C | float |FF8000| 00 00 40 40 | 3.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x040 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the first part of a jump }}<br />
{{OBDtr| 0x042 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the second part of a jump }}<br />
|}<br />
<br />
<br />
;Jump Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x044 | float |FF0080| 00 00 C8 41 | 25.000000 | jumpDistance? ; always the same }}<br />
{{OBDtr| 0x048 | int8 |FFC8C8| 16 | 22 | jumpHeight? ; always the same }}<br />
{{OBDtr| 0x049 | int8 |FFC8C8| 06 | 6 | jumpDistanceSquares?!?! ; always the same }}<br />
{{OBDtr| 0x04A | char[2] |FFC8C8| AD DE | dead | pad }}<br />
|}<br />
<br />
<br />
;Cover Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x04C | float |FFFFC8| 00 00 20 42 | 40.000000 | rayIncrement; always the same }}<br />
{{OBDtr| 0x050 | float |FFFFC8| 00 00 96 43 | 300.000000 | rayMax; always the same }}<br />
{{OBDtr| 0x054 | float |FFFFC8| 35 FA 8E 3C | 0.017453 | rayAngle; always the same (0.017453 <nowiki>=</nowiki> PI/180) }}<br />
{{OBDtr| 0x058 | float |FFFFC8| DB 0F C9 3F | 1.570796 | rayAngleMax; always the same (1.57 <nowiki>=</nowiki> PI/2) }}<br />
|}<br />
<br />
<br />
;Autofreeze Constants (unused)<br />
<br />
{{Table}}<br />
{{OBDtr| 0x05C | float |FFFFC8| 00 00 A0 40 | 5.000000 | distance_xz; always the same }}<br />
{{OBDtr| 0x060 | float |FFFFC8| 00 00 80 3F | 1.000000 | distance_y; always the same }}<br />
|}<br />
<br />
<br />
;Inventory Constants (unused?)<br />
<br />
{{Table}}<br />
{{OBDtr| 0x064 | int16 |C8FFC8| 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint }}<br />
{{OBDtr| 0x066 | char[2] |C8FFC8| AD DE | dead | unused }}<br />
|}<br />
<br />
<br />
;LOD Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x068 | float |C8FFFF| 00 10 3D 48 |193600.000000| unknown; always the same; this is 440 squared }}<br />
{{OBDtr| 0x06C | float |C8FFFF| 00 10 3D 47 | 48400.000000| unknown; always the same; this is 220 squared }}<br />
{{OBDtr| 0x070 | float |C8FFFF| 00 10 3D 46 | 12100.000000| unknown; always the same; this is 110 squared }}<br />
{{OBDtr| 0x074 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
{{OBDtr| 0x078 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
|}<br />
<br />
<br />
;Hurt sound paramters<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x07C | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x07E | int16 |FFC8FF| 5A 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x080 | int16 |FFC8FF| 0F 00 | 15 | unknown; always the same }}<br />
{{OBDtr| 0x082 | int16 |FFC8FF| 78 00 | 120 | unknown; always the same }}<br />
{{OBDtr| 0x084 | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x086 | int16 |FFC8FF| 01 00 | 1 | unknown; always the same }}<br />
{{OBDtr| 0x088 | int16 |FFC8FF| 02 00 | 2 | unknown; always the same }}<br />
{{OBDtr| 0x08A | int16 |FFC8FF| 64 00 | 100 | unknown; always the same }}<br />
{{OBDtr| 0x08C | int16 |FFC8FF| 0A 00 | 10 | unknown; always the same }}<br />
{{OBDtr| 0x08E | int16 |FFC8FF| 0C 00 | 12 | unknown; always the same }}<br />
{{OBDtr| 0x090 | int16 |FFC8FF| 16 00 | 22 | unknown; always the same }}<br />
{{OBDtr| 0x092 | int8 |FFC800| 00 | 0 | used at runtime only: if one sound pointers have been set }}<br />
{{OBDtr| 0x093 | char[1] |C800C8| DE | dead | unused; always the same }}<br />
{{OBDtr| 0x094 | float |C87C64| 00 00 00 3F | 0.500000 | unknown; always the same (sound volume?) }}<br />
{{OBDtr2|0x098 | char[32] |B0C3D4| konoko_hurt_light | hurt light sound (reference to 08121-konoko_hurt_light.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium | hurt medium sound (reference to 08123-konoko_hurt_medium.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy | hurt heavy sound (reference to 08119-konoko_hurt_heavy.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death | death sound (reference to 08115-konoko_death.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr| 0x118 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt light sound }}<br />
{{OBDtr| 0x11C | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt medium sound }}<br />
{{OBDtr| 0x120 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt heavy sound }}<br />
{{OBDtr| 0x124 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to death sound }}<br />
|}<br />
<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x128 | bitsets |E7CEA5| 17 00 00 00 | 23 | general AI option bitset collection ; see below }}<br />
{{OBDtr| 0x12C | float |FFDDDD| 00 00 80 3F | 1.000000 | AI rotation speed factor }}<br />
{{OBDtr| 0x130 | int16 |64AAAA| 06 00 | 6 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x132 | int16 |64AAAA| 18 00 | 24 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x134 | int16 |EBEBEB| 0F 00 | 15 | minimal realize firingspread time; (???number of frames???time in miliseconds???) after which AI realizes that it is in the firing spread (and it starts dodging) }}<br />
{{OBDtr| 0x136 | int16 |EBEBEB| 00 00 | 0 | maximal realize firingspread time; (???number of frames???time in miliseconds???) }}<br />
|}<br />
<br />
<br />
;AI rotation speed factor<br />
:reference rotation speed is about 1 turn (360&#65533;) per second<br />
:the setting is only effective if the AI is in control<br />
:so it's a bit like the AI's mouse sensitivity :)<br />
<br />
<br />
;General AI options bitset<br />
:allows or disables some parts of the AI behavior<br />
*NONE - startle anim is enabled, rest is disabled<br />
*0x01 - startle anim disabled<br />
*0x02 - firingspread/projectile dodge enabled for melee<br />
*0x04 - requires 0x02; firingspread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging<br />
*0x08 - requires 0x02, overrides 0x04 if both are set; firingspread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter<br />
*0x10 - bit not used<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x138 | float |8C8CCC| 00 00 80 3F | 1.000000 | minimal firingspread dodge amount; IMO similar to maneouvre variable, it tells AI how long it should perform dodging/hiding in response to some time spent inside firing spread (so setting this very high means that once enemy starts dodging/hiding, he will perform it even after firing spread disappears) }}<br />
{{OBDtr| 0x13C | float |8C8CCC| 00 00 80 3F | 1.000000 | maximal firingspread dodge amount; IMO similar to maneouvre variable }}<br />
{{OBDtr| 0x140 | float |8C8CCC| 00 00 00 3F | 0.500000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x144 | float |8C8CCC| 00 00 C8 41 | 25.000000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x148 | float |8C8CCC| 00 00 80 3F | 1.000000 | unknown; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x14C | int32 |FF00C8| 00 00 00 00 | 0 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x150 | int32 |FF00C8| 05 00 00 00 | 5 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x154 | int32 |FF00C8| 0F 00 00 00 | 15 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x158 | int32 |FF00C8| 3C 00 00 00 | 60 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtrBK|1=First of 13 elements (grey outline) }}<br />
{{OBDtr| 0x15C | float |F0F096| 00 00 00 00 | 0.000000 | recoil compensation amount (0.0 <nowiki>= min, 1.0 =</nowiki> max) }}<br />
{{OBDtr| 0x160 | float |F0F096| 00 00 00 00 | 0.000000 | best aiming angle in radians }}<br />
{{OBDtr| 0x164 | float |F0F096| 00 00 00 00 | 0.000000 | shot grouping error }}<br />
{{OBDtr| 0x168 | float |F0F096| 00 00 80 3F | 1.000000 | shot grouping decay }}<br />
{{OBDtr| 0x16C | float |F0F096| 00 00 80 3F | 1.000000 | shooting inaccuracy multiplier }}<br />
{{OBDtr| 0x170 | int16 |00C864| 00 00 | 0 | minimum delay between shots in frames }}<br />
{{OBDtr| 0x172 | int16 |00C864| 00 00 | 0 | maximum delay between shots in frames }}<br />
|}<br />
<br />
<br />
;SHOOTING SKILLS<br />
These can be reviewed with e.g. '''ai2_skill_select konoko_generic w1_tap''' and then either '''ai2_skill_show''' (prints to console) or '''ai2_skill_save''' (prints to file)<br />
;Fields<br />
:recoil compensation amount, between 0 and 1 (float)<br />
:best aiming angle, in radians (float)<br />
:shot grouping error (float)<br />
:shot grouping decay (float)<br />
:shooting inaccuracy multiplier (float)<br />
:minimum delay between shots, in frames (short)<br />
:maximum delay between shots, in frames (short)<br />
The first weapon (weapon 0) is not in the game anymore, whatever that was. Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's ball, except '''w10_sni''' is still available) ('''w12_ba2''' and '''w11_ba1''' are a bit mixed up : the beam is made of '''w12_ba2''' particles, and the grenade is a '''w11_ba1''' particle...)<br />
<br />
See screenshot for the raw hex (example is '''konoko_generic''' from '''level3_Final''')<br />
{{Table|width=""|align="left"}}<br />
|-BGCOLOR="#E9E9E9" ALIGN=CENTER<br />
!Weapon ||Offset ||recoil||bestangle||error||decay||inaccuracy||delays<br />
|-ALIGN=CENTER <br />
|'''w0_sec''' ||0x15C/0x173|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w1_tap''' ||0x174/0x18B|| 0.0 || 0.000000|| 0.40|| 0.4 || 0.0 || 30 - 45<br />
|-ALIGN=CENTER <br />
|'''w2_sap''' ||0x18C/0x193|| 0.3 || 0.013962|| 0.13|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w3_phr''' ||0x194/0x20B|| 0.3 || 0.010472|| 0.05|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w4_psm''' ||0x20C/0x213|| 0.3 || 0.015707|| 0.03|| 0.2 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w5_sbg''' ||0x214/0x22B|| 0.3 || 0.001745|| 0.00|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w6_vdg''' ||0x22C/0x233|| 0.3 || 0.001745|| 0.13|| 0.9 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w7_scc''' ||0x234/0x24B|| 0.3 || 0.001745|| 0.05|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w8_mbo''' ||0x24C/0x253|| 0.3 || 0.005236|| 0.01|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w9_scr''' ||0x254/0x26B|| 0.3 || 0.010472|| 0.04|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w10_sni'''||0x26C/0x273|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w11_ba1'''||0x274/0x28B|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w12_ba2'''||0x28B/0x293|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|}<br />
<br clear=all><br />
<br />
<br />
[[image:oncc_m.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x294 | int32 |00C8FF| 5A 00 00 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x298 | int32 |00C8FF| F0 00 00 00 | 240 | unknown; always the same }}<br />
{{OBDtr| 0x29C | int32 |00C8FF| B4 00 00 00 | 180 | unknown; always the same }}<br />
{{OBDtr| 0x2A0 | int32 |00C8FF| 28 00 00 00 | 40 | taunt chance (40%) }}<br />
{{OBDtr| 0x2A4 | int32 |00C8FF| 37 00 00 00 | 55 | go for gun chance (55%); determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command }}<br />
{{OBDtr| 0x2A8 | int32 |00C8FF| 3C 00 00 00 | 60 | running pickup chance (60%); this value is possibility of AI running weapon pickup (acrobatics, slides) instead of normal "stop->pickup";this is calculated AFTER engine decides that AI should run for weapon }}<br />
{{OBDtr| 0x2AC | int16 |C80040| 00 00 | 0 | combat profile ID; for example *0D* is for Mutant Muro }}<br />
{{OBDtr| 0x2AE | int16 |C80040| 16 00 | 22 | melee profile ID }}<br />
{{OBDtr| 0x2B0 | int8 |FFCD96| 64 | 100 | "taunt" sound probability (always) }}<br />
{{OBDtr| 0x2B1 | int8 |FFCD96| 00 | 0 | "alert" sound probability (never) }}<br />
{{OBDtr| 0x2B2 | int8 |FFCD96| 00 | 0 | "startle" sound probability (never) }}<br />
{{OBDtr| 0x2B3 | int8 |FFCD96| 00 | 0 | "checkbody" sound probability (never) }}<br />
{{OBDtr| 0x2B4 | int8 |FFCD96| 00 | 0 | "pursue" sound probability (never) }}<br />
{{OBDtr| 0x2B5 | int8 |FFCD96| 00 | 0 | "cower" sound probability (never) }}<br />
{{OBDtr| 0x2B6 | int8 |FFCD96| 64 | 100 | "superpunch" probability (always) }}<br />
{{OBDtr| 0x2B7 | int8 |FFCD96| 64 | 100 | "superkick" probability (always) }}<br />
{{OBDtr| 0x2B8 | int8 |FFCD96| 00 | 0 | "super3" sound probability (never) }}<br />
{{OBDtr| 0x2B9 | int8 |FFCD96| 00 | 0 | "super4" sound probability (never) }}<br />
{{OBDtr| 0x2BA | int16 |C8C864| 00 00 | 0 | probably a blank filler (always the same) }}<br />
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko | "taunt" sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x2DC | char[32] |0096C8| unused | "alert" sound }}<br />
{{OBDtr2|0x2FC | char[32] |0096C8| unused | "startle" sound }}<br />
{{OBDtr2|0x31C | char[32] |0096C8| unused | "checkbody" sound }}<br />
{{OBDtr2|0x33C | char[32] |0096C8| unused | "pursue" sound }}<br />
{{OBDtr2|0x35C | char[32] |0096C8| unused | "cower" sound }}<br />
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko | "superpunch" sound (reference to 08110-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x39C | char[32] |0096C8| c18_79_15konoko | "superkick" sound (reference to 08112-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound (only the superninja uses this slot) }}<br />
{{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound (never used in Oni) }}<br />
{{OBDtr| 0x3FC | float |FF80C0| 00 80 ED 43 | 475.000000 | central vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki>1* }}<br />
{{OBDtr| 0x400 | float |FF80C0| 00 00 16 43 | 150.000000 | peripheral vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki> 1* }}<br />
{{OBDtr| 0x404 | float |FF80C0| 7D 1B 44 3F | 0.766044 | horizontal angle between two couples of "eye-rays" (one couple is left, one if right eye); works for both vision fields }}<br />
{{OBDtr| 0x408 | float |FF80C0| F3 B3 51 3F | 0.819152 | vision field curve for central vision field; vision field looks like something between cone and cylinder; this value affect central angle of that; the higher this value is, the more is this field wrapped in order to achieve shaper angle; when set lower, vision field unwraps totally and it looks like radar antenna, attached to a character by two couples of straight strings(one couple left, one right) }}<br />
{{OBDtr| 0x40C | float |FF80C0| E8 D5 12 3F | 0.573576 | vertical angle between eye-rays in one couple; this is for central vision field }}<br />
{{OBDtr| 0x410 | float |FF80C0| D5 D0 31 3E | 0.173648 | vision field curve for peripheral vision field }}<br />
{{OBDtr| 0x414 | float |FF80C0| 6B 61 D8 BE | 0.422618 | vertical angle between eye-rays in one couple; this is for peripheral vision field }}<br />
{{OBDtr| 0x418 | int32 |D0C0AF| B4 00 00 00 | 180 | hostilethreat definite timer; how long will AI know exactly where its enemy is even if it can't see him with central vision-field; AI attacks him; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x41C | int32 |D0C0AF| 84 03 00 00 | 900 | hostilethreat strong timer; how long will AI remain in strong feeling that there is the enemy, but will not attack him but investigate; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x420 | int32 |D0C0AF| 10 0E 00 00 | 3600 | hostilethreat weak timer; how long will AI remain in weak feeling of an enemy, just looking around aimlessly (Glance pursue mode); can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x424 | int32 |D0C0AF| 10 0E 00 00 | 3600 | friendlythreat definite timer; how long will AI know exactly where its ally (Syndicate saw Syndicate for example) is even if it can't see him with central vision-field; AI simply knows there is someone else nearby; maybe has further possibilities; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x428 | int32 |D0C0AF| 50 46 00 00 | 18000 | friendlythreat strong timer; how long will AI remain in strong feeling that there is someone else, but will not try to find him or look at him; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x42C | int32 |D0C0AF| A0 8C 00 00 | 36000 | friendlythreat weak timer; how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x430 | float |EEDDFF| 00 00 80 3F | 1.000000 | earshot radius; defines size of the sound-collision sphere around AI }}<br />
{{OBDtr| 0x434 | link |C5FF8A| 01 FB 03 00 | 1019 | link to 01019-konoko.[[OBD:ONCV|ONCV]]; defines variants and upgrades }}<br />
{{OBDtr| 0x438 | link |C5FF8A| 01 F9 03 00 | 1017 | link to [[OBD:ONCP|01017-.ONCP]]; lists the particles available for this character (trails, flashes, etc) }}<br />
{{OBDtr| 0x43C | link |C5FF8A| 01 FA 03 00 | 1018 | link to [[OBD:ONIA|01018-.ONIA]]; lists the special impact sounds (used for special combat moves) }}<br />
{{OBDtr| 0x440 | int8 |C5FF8A| 00 | unused | runtime only }}<br />
{{OBDtr| 0x441 | int8 |C5FF8A| 00 | unused | padding }}<br />
{{OBDtr| 0x442 | int16 |C5FF8A| 00 00 | unused | runtime only }}<br />
{{OBDtr2|0x444 | char[16] |C0C0C0| Light | modifier; either hardcoded or defunct (only visible in pm_mod_type.WMM_, level 0)<br />
edit: WMDD says: Effects found for Impact x on Material y with Modifier: pm_mod_types }}<br />
{{OBDtrBK|1=First of 15 impact elements. }}<br />
{{OBDtr2|0x454 | char[128] |FF0080| Footstep_Walk | walk impact (reference to 04124-Footstep_Walk.[[OBD:Impt|Impt]] of level 0); always the same; without the impacts you can't hear the steps of a character }}<br />
{{OBDtr| 0x4D4 | int16 |FF0080| FF FF | -1 | set at runtime to the value stored at 0x08 in [[OBD:Impt|Impt]] }}<br />
|}<br />
<br />
<br />
[[image:oncc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0xBF2 | int16 |FFFFA6| 00 00 | 0 | unknown; always the same; maybe only a filler }} <br />
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused | special death particle; only the mad bomber use it }} <br />
{{OBDtr| 0xC34 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC38 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC3C | link |0000BF| 01 E6 03 00 | 998 | link to [[OBD:TRBS|00998-konoko_body_high.TRBS]] }}<br />
{{OBDtr| 0xC40 | link |0000BF| 01 E7 03 00 | 999 | link to [[OBD:TRMA|00999-konoko002_high_texture_generic.TRMA]] }}<br />
{{OBDtr| 0xC44 | link |0000BF| 01 E8 03 00 | 1000 | link to [[OBD:CBPM|01000-.CBPM]] }}<br />
{{OBDtr| 0xC48 | link |0000BF| 01 EC 03 00 | 1004 | link to [[OBD:CBPI|01004-.CBPI]] }}<br />
{{OBDtr| 0xC4C | int32 |804040| 2C 01 00 00 | 300 | fight mode timer in 1/60 seconds }} <br />
{{OBDtr| 0xC50 | int32 |804040| 30 75 00 00 | 30000 | first idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC54 | int32 |804040| 30 75 00 00 | 30000 | second idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC58 | int32 |804040| C8 00 00 00 | 200 | basic health of the character model; extra health information for every unique character are stored in the [[OBD:BINA/OBJC/CHAR|Character.BINA]] file}} <br />
{{OBDtr| 0xC5C | int32 |804040| 48 00 00 00 | 72 | feetBits (these bits mark the characters feet)<br />
}} <br />
{{OBDtr| 0xC60 | float |FF22FF| 00 00 80 3F | 1.000000 | minimal body size factor }} <br />
{{OBDtr| 0xC64 | float |FF22FF| 00 00 80 3F | 1.000000 | maximal body size factor }} <br />
{{OBDtrBK| the following 7 float values corespond to damage types (see the [[OBD:BINA/PAR3|PAR3]] page for the 7 possible types of damage) }}<br />
{{OBDtr| 0xC68 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC6C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC70 | float |FF22FF| 00 00 00 3F | 0.500000 | stun timer; specifies how long should be this char stunned when hit with w6_vdg; the longest time possible to be stunned is when this byte is zero. Then this ONCC is stunned for 200 frames (30 frames for initial stagger + the rest of the frames is stun animation). The shortest time is for 1.000000 (no stagger/stun at all) }} <br />
{{OBDtr| 0xC74 | float |FF22FF| 00 00 80 3E | 0.250000 | unknown }} <br />
{{OBDtr| 0xC78 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC7C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC80 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC84 | float |FF22FF| 00 00 00 3F | 0.500000 | BossShield Protect Amount (testme) }}<br />
{{OBDtr| 0xC88 | link |808080| 01 F6 03 00 | 1014 | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]] }} <br />
{{OBDtr| 0xC8C | link |808080| 01 F6 03 00 | 1015 | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }} <br />
{{OBDtr| 0xC90 | int16 |FFAA82| 1E 00 | 30 | AI Rate of Fire (testme) }} <br />
{{OBDtr| 0xC92 | int16 |FFAA82| 00 00 | 0 | time between death and deletion, in frames (about 3 seconds for mad bomber) }} <br />
{{OBDtr| 0xC94 | bitset |00D900| 00 | 0 | TRSC bitset; see below }} <br />
{{OBDtr| 0xC95 | int8 |00D900| 01 | 1 | when set to 1 indicates that character has daodan powers (character does more damage in overpower mode)}} <br />
{{OBDtr| 0xC96 | int8 |00D900| 00 | 0 | when set to 1 indicates that character has supershield<br />
* is visible as red shield when overpowered<br />
* needs daodan flag above and 51% overpower to be enabled; chenille cheat works too<br />
* now it prevents damage from weapon fire and melee (exception are throws)<br />
* received (melee) hits cause not blue block flashes but orange flares (see [http://paradox.oni2.net/Bilder/blocked_attacks_on_51percent_overpower_plus_daodan-flag_plus_supershield.png HERE])<br />
}} <br />
{{OBDtr| 0xC97 | int8 |00D900| 00 | 0 | when set to 1, generically turns on '''canttouchthis''' cheat for this ONCC (used by MutantMuro.ONCC }} <br />
{{OBDtr| 0xC98 | char[8] |CACAFF| AD DE | dead | unused }} <br />
|}<br />
<br />
<br />
;Body size factor<br />
The body size of a model will be scaled uniformly by a random coefficient that falls in the range defined with 0xC60 and 0xC64. This is apparently a provision for increasing the variety of appearances in classes like TCTF soldiers; unique characters like Konoko get a range of 1.0 to 1.0. The basis or seed for the randomness is apparently the time and/or order of spawning of that character, and therefore the "random" size of the character can be reproduced consistently as long as the execution of the code is the same each time. To illustrate, find the following code in IGMD/manplant/manplant_cutscene.bsl:<br />
<gallery align="right"><br />
File:ONCC_body_size_factor-original.jpg|Sample 1<br />
File:ONCC_body_size_factor-spawn_order_change.jpg|Sample 2<br />
File:ONCC_body_size_factor-sleep_insertion.jpg|Sample 3<br />
</gallery><br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
When you play the opening cutscene for Chapter 2, Agent Thorson should appear as he does in the first pic in the table to the right. Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2<br />
<br />
ai2_spawn Recep</tt><br />
<br />
and he'll appear as in the middle pic. Look out, he's a giant! Even the receptionist is bigger! Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
sleep 15<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
and you'll also get a deluxe-sized Thorson (right pic), though not as big as before. In complex scripts, body size quickly becomes truly random-seeming, but as you can see, in situations where the spawn function is called near the beginning of the code, before there is an opportunity for too much forking and branching, the results are quite reproducible.<br />
<br />
;TRSC bitset<br />
:determines whether character is left-hander or right-hander (weapon is attached to left or right fist bone) Must be consistent with TRSC or glitches appear. Possibilities are:<br />
:NONE - Character is right-hander with both pistols and rifles<br />
:0x01 - Character is left-hander with both pistols and rifles<br />
:0x02 - Character is left-hander with pistols but "right-hander" with rifles (however, animations for rifles are treated as left-handed)<br />
{{OBD_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONWC&diff=17411OBD:ONWC2010-08-29T03:50:38Z<p>Gumby: /* 0x060 to 0x0D7 - Weapon parameters */</p>
<hr />
<div>{{OBD_File_Header | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level | align=center}}<br />
<br />
<br />
All ONWC files are 0 byte files. That means that Oni takes the information out of the ONWC files of level 0. Below is an example of an ONWC file of level 0. The first pic shows the beginning of this file. The second pic the end of it. <br />
<br />
<br />
Unless specified otherwise, the coordinates are relative to the weapon's mesh (x = forwards, y = left, z = up).<br />
<br />
<br />
==0x000 to 0x0D7 - Weapon main part ==<br />
<br />
<br />
[[image:onwc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 75 0E 00 | 3701 | 03701-w1_tap.ONWC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 00 | 0 | level 0 }}<br />
|}<br />
<br />
<br />
===0x008 to 0x053 - Laser sight parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x008 | float |FFC8C8| F5 A4 49 40 | 3.150693 | x-offset of laser sight origin }}<br />
{{OBDtr| 0x00C | float |FFC8C8| F4 2C A5 3B | 0.005041 | y-offset of laser sight origin }}<br />
{{OBDtr| 0x010 | float |FFC8C8| 21 4E D2 3E | 0.410752 | z-offset of laser sight origin }}<br />
{{OBDtr| 0x014 | float |FFC8C8| 23 A6 7F 3F | 0.998629 | x-component of laser sight direction }}<br />
{{OBDtr| 0x018 | float |FFC8C8| AA 6C 56 BD | -0.052349 | y-component of laser sight direction }}<br />
{{OBDtr| 0x01C | float |FFC8C8| 69 66 AA B7 | -0.000020 | z-component of laser sight direction }}<br />
{{OBDtr| 0x020 | float |FFC8C8| 00 40 9C 45 |5000.000000 | maximal length of laser sight vector }}<br />
{{OBDtr| 0x024 | color |FFFFC8| 00 00 FF FF | 0, 0, 255; 255 | laser sight color (blue, green, red); laser sight transparency }}<br />
{{OBDtr| 0x028 | link |C8FFC8| 01 94 05 00 | 1428 | crosshair texture (link to 01428-target_1A.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x02C | color |C8FFC8| FF FF FF 00 |255, 255, 255; 0| crosshair background color (blue, green, red); crosshair background transparency }}<br />
{{OBDtr| 0x030 | float |C8FFC8| CD CC 4C 3F | 0.800000 | crosshair scale factor }}<br />
{{OBDtr| 0x034 | link |C8FFFF| 01 95 05 00 | 1428 | locked crosshair texture (link to 01429-target_1B.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x038 | color |C8FFFF| FF FF FF 00 |255, 255, 255; 0| locked crosshair background color (blue, green, red); locked crosshair background transparency }}<br />
{{OBDtr| 0x03C | float |C8FFFF| CD CC 4C 3F | 0.800000 | locked crosshair scale factor }}<br />
{{OBDtr| 0x040 | link |FFC8FF| 00 00 00 00 | unused | tunnel texture (link to a [[OBD:TXMP|TXMP]]) file }}<br />
{{OBDtr| 0x044 | color |FFC8FF| FF FF FF 00 |255, 255, 255; 0| tunnel background color (blue, green, red); tunnel background transparency }}<br />
{{OBDtr| 0x048 | float |FFC8FF| 00 00 80 3F | 1.000000 | tunnel scale factor }}<br />
{{OBDtr| 0x04C | int32 |FFC800| 0F 00 00 00 | 15 | number of tunnel textures }}<br />
{{OBDtr| 0x050 | float |C800C8| 00 00 20 41 | 10.000000 | spacing of tunnel textures }}<br />
|}<br />
<br />
<br />
;Crosshair<br />
:Default crosshair appears where the laser sight hits environment, corpses, etc<br />
:Locked crosshair appears when the laser sight hits characters (including the shooter)<br />
:"Tunnel" is used by '''w8_mbo''' as a complement to the crosshair<br />
:'''w2_sap''', '''w5_sbg''', '''w7_scc''' and '''w9_scr''' use it with no crosshair<br />
<br />
<br />
===0x054 to 0x05F - Ammo meter===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x054 | link |C87C64| 01 7E 0E 00 | 3710 | link to 03710-tap_icon.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x058 | link |C87C64| 01 7F 0E 00 | 3711 | link to 03711-tap_empty.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x05C | link |C87C64| 01 80 0E 00 | 3712 | link to 03712-tap_fill.[[OBD:TXMP|TXMP]] }}<br />
|}<br />
<br />
<br />
===0x060 to 0x0D7 - Weapon parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x060 | link |C87C64| 01 76 0E 00 | 3702 | link to 03702-.M3GM }}<br />
{{OBDtr2|0x064 | char[32] |B0C3D4| w1_tap | weapon name }}<br />
{{OBDtr| 0x084 | float |E7CEA5| 00 00 80 3F | 1.000000 | weapon mouse sensitivity (applies on AI, too) }}<br />
{{OBDtr| 0x088 | float |E7CEA5| A6 92 2B 3D | 0.041888 | recoil base (e.g. for w1_tap and w2_sap) }}<br />
{{OBDtr| 0x08C | float |E7CEA5| 92 0A 86 3E | 0.261799 | recoil max }}<br />
{{OBDtr| 0x090 | float |E7CEA5| 00 00 A0 40 | 5.000000 | recoil factor }}<br />
{{OBDtr| 0x094 | float |E7CEA5| E2 A3 7B 3B | 0.003839 | recoil return speed }}<br />
{{OBDtr| 0x098 | float |E7CEA5| 88 C3 E4 3A | 0.001745 | recoil firing return speed }}<br />
{{OBDtr| 0x09C | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector X (disabled IK stuff) }}<br />
{{OBDtr| 0x0A0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Y}}<br />
{{OBDtr| 0x0A4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Z }}<br />
{{OBDtr| 0x0A8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector X}}<br />
{{OBDtr| 0x0AC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Y}}<br />
{{OBDtr| 0x0B0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Z}}<br />
{{OBDtr| 0x0B4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition X}}<br />
{{OBDtr| 0x0B8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Y}}<br />
{{OBDtr| 0x0BC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Z}}<br />
{{OBDtr| 0x0C0 | int16 |FFDDDD| 00 00 | 0 | freeTime (unused); always zero }}<br />
{{OBDtr| 0x0C2 | int16 |FFDDDD| 95 00 | 149 | recoil animation type (149 <nowiki>=</nowiki> autopistol_recoil) }}<br />
{{OBDtr| 0x0C4 | int16 |FFDDDD| A4 00 | 164 | reload animation type (164 <nowiki>=</nowiki> reload_pistol) }}<br />
{{OBDtr| 0x0C6 | int16 |FFDDDD| 19 00 | 25 | pause after reload in 1/60 seconds }}<br />
{{OBDtr| 0x0C8 | int16 |FFDDDD| 0A 00 | 10 | amount of shots }}<br />
{{OBDtr| 0x0CA | int16 |FFDDDD| 06 00 | 6 | amount of particles }}<br />
{{OBDtr| 0x0CC | int16 |FFDDDD| 01 00 | 1 | amount of firing modes }}<br />
{{OBDtr| 0x0CE | int16 |FFDDDD| 0A 00 | 10 | pause before reload in 1/60 seconds }}<br />
{{OBDtr| 0x0D0 | int16 |FFDDDD| 04 00 | 4 | release delay; delay between the moment the trigger is released and the moment the weapon stops firing }}<br />
{{OBDtr| 0x0D2 | int16 |FFDDDD| 00 00 | 0 | padding; always zero }}<br />
{{OBDtr| 0x0D4 | int32 |FFDDDD| 30 | 0x30 C0 02 00 | weapon options; the following bits are possible (values in hex):<br />
<br />
:0x'''02''' 00 00 00 - weapon can't be holstered<br />
:0x'''04''' 00 00 00 - weapon reloads with energy cells<br />
:0x'''08''' 00 00 00 - weapon is a rifle (two-handed)<br />
:0x'''10''' 00 00 00 - recoil affects aiming<br />
:0x'''20''' 00 00 00 - sustained fire (applies only to primary fire)<br />
:0x'''40''' 00 00 00 - runtime only; do not use<br />
:0x'''80''' 00 00 00 - stun switcher; used for w6_vdg, see below<br />
<br />
:0x00 '''01''' 00 00 - knockdown switcher; used for w4_psm, see below<br />
:0x00 '''02''' 00 00 - unknown; used for w5_sbg and w11_ba1<br />
:0x00 '''04''' 00 00 - secondary fire enabled<br />
:0x00 '''08''' 00 00 - barabbas weapon; see below<br />
:0x00 '''10''' 00 00 - heavy weapon; run, jump and creep disabled<br />
:0x00 '''20''' 00 00 - auto release trigger; used for w11_ba1<br />
:0x00 '''40''' 00 00 - has release delay; see the release delay field above<br />
:0x00 '''80''' 00 00 - laser sight visible<br />
<br />
:0x00 00 '''02''' 00 - crosshair scaling, used for w1_tap, w2_sap, w3_phr and w8_mbo<br />
:0x00 00 '''08''' 00 - weapon doesn't fade<br />
:0x00 00 '''10''' 00 - drain ammo; used by w4_psm to decrement ammo while firing because its firing mode is continuous rather than repetitive<br />
}}<br />
|}<br />
<br />
<br />
'''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<br />
<br />
'''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<br />
<br />
'''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 beginn, then always this weapon is teleported back to character (when command used again)<br />
<br />
==0x0D8 to 0x1D7 - Firing modes==<br />
<br />
<br />
Every ONWC has 2 firing mode slots (128 = 0x80 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
<br />
===0x0D8 to 0x157 - Primary firing mode===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x0D8 | int32 |64AAAA| 00 00 00 00 | 0 | firing mode options; the following bits are possible (values in hex):<br />
:0x'''01''' 00 00 00 - unknown; something to do with keeping/altering "prediction" when the target changes<br />
}}<br />
{{OBDtr| 0x0DC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix XX }}<br />
{{OBDtr| 0x0E0 | float |EBEBEB| 05 6D 56 3D | 0.052350 | transform matrix XY }}<br />
{{OBDtr| 0x0E4 | float |EBEBEB| F4 8D A9 37 | 0.000020 | transform matrix XZ }}<br />
{{OBDtr| 0x0E8 | float |EBEBEB| 05 6D 56 BD | -0.052350 | transform matrix YX }}<br />
{{OBDtr| 0x0EC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix YY }}<br />
{{OBDtr| 0x0F0 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix YZ }}<br />
{{OBDtr| 0x0F4 | float |EBEBEB| F4 8D A9 B7 | -0.000020 | transform matrix ZX }}<br />
{{OBDtr| 0x0F8 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix ZY }}<br />
{{OBDtr| 0x0FC | float |EBEBEB| 00 00 80 3F | 1.000000 | transform matrix ZZ }}<br />
{{OBDtr| 0x100 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation X; always zero for original weapons }}<br />
{{OBDtr| 0x104 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Y; always zero for original weapons }}<br />
{{OBDtr| 0x108 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Z; always zero for original weapons }}<br />
{{OBDtr| 0x10C | float |EBEBEB| 23 A6 7F 3F | 0.998629 | firing spread direction X component }}<br />
{{OBDtr| 0x110 | float |EBEBEB| AE 6C 56 BD | -0.052349 | firing spread direction Y component }}<br />
{{OBDtr| 0x114 | float |EBEBEB| AF 8D A9 B7 | -0.000020 | firing spread direction Z component }}<br />
{{OBDtr| 0x118 | float |EBEBEB| DC FE 08 3C | 0.008362 | targeting vector origin X component? }}<br />
{{OBDtr| 0x11C | float |EBEBEB| 5C 11 23 3E | 0.159246 | targeting vector origin Y component? }}<br />
{{OBDtr| 0x120 | float |EBEBEB| 39 C6 2A 3F | 0.667087 | targeting vector origin Z component? }}<br />
{{OBDtr| 0x124 | float |EBEBEB| 00 00 61 44 | 900.000000 | prediction speed; 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 }}<br />
{{OBDtr| 0x128 | float |EBEBEB| 00 00 20 41 | 10.000000 | 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 }}<br />
{{OBDtr| 0x12C | float |EBEBEB| 00 00 20 40 | 2.500000 | aim_radius; always the same; possible related to the inaccuracy angle above }}<br />
{{OBDtr| 0x130 | float |EBEBEB| 00 00 96 43 | 300.000000 | 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<nowiki>=</nowiki>1* (but you have to be in a large open area, since those ranges are quite big) }}<br />
{{OBDtr| 0x134 | float |EBEBEB| 00 00 40 41 | 12.000000 | 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 }}<br />
{{OBDtr| 0x138 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x13C | int16 |8C8CCC| 05 00 | 5 | maximum startle misses; probably the maximum number of shots an ai can miss when suprised before he starts aiming }}<br />
{{OBDtr| 0x13E | int16 |8C8CCC| 01 00 | 1 | skill index (in the [[ONCC]] shooting skill table) }}<br />
{{OBDtr| 0x140 | int32 |8C8CCC| 00 00 00 00 | 0 | fight timer, 240 for w4_psm, 200 for v6_vdg }}<br />
{{OBDtr| 0x144 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile speed (150 for SBG, 160 for WMC) }}<br />
{{OBDtr| 0x148 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile gravity, can be negative for firing at the enemy's feet (0.5 for SBG, 0.3 for WMC) }}<br />
{{OBDtr| 0x14C | float |FF00C8| 00 00 34 43 | 180.000000 | 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<nowiki>=</nowiki>1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm) }}<br />
{{OBDtr| 0x150 | float |FF00C8| 00 00 40 40 | 3.000000 | length of the firingspread's base side; can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 }}<br />
{{OBDtr| 0x154 | float |FF00C8| 50 77 D6 3D | 0.104719 | angle between firingspread's base and its altitude(length); can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 (0.1 for w1_tap, 0.21 for w2_sap) }}<br />
|}<br />
<br />
<br />
;Transform matrix<br />
:Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.<br />
<br />
===0x158 to 0x1D7 - Secondary firing mode===<br />
<br />
<br />
The only original weapon for which these fields are not all zero is '''w11_ba1'''.<br />
<br />
They are the exact counterparts of the fields at 0xD8 - 0x157.<br />
<br />
<br />
==0x1D8 to 0x6D7 - Weapon particle array==<br />
<br />
<br />
Every ONWC has 16 particle slots (80 = 0x50 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
Offsets are relative to the beginning of a slot.<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtrBK|1=First of 16 elements (black outline).}}<br />
{{OBDtr| 0x000 | float |F0F096| AE 6C 56 3D | 0.052349 | transformation matrix, xx term }}<br />
{{OBDtr| 0x004 | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, xy term }}<br />
{{OBDtr| 0x008 | float |F0F096| C2 53 90 B3 | -0.000000... | transformation matrix, xz term }}<br />
{{OBDtr| 0x00C | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, yx term }}<br />
{{OBDtr| 0x010 | float |F0F096| AE 6C 56 BD | -0.052349 | transformation matrix, yy term }}<br />
{{OBDtr| 0x014 | float |F0F096| AF 8D A9 B7 | -0.000020 | transformation matrix, yz term }}<br />
{{OBDtr| 0x018 | float |F0F096| BA 59 A9 B7 | -0.000020 | transformation matrix, zx term }}<br />
{{OBDtr| 0x01C | float |F0F096| 5B 02 85 35 | 0.000001 | transformation matrix, zy term }}<br />
{{OBDtr| 0x020 | float |F0F096| 00 00 80 BF | -1.000000 | transformation matrix, zz term }}<br />
{{OBDtr| 0x024 | float |F0F096| 6F 63 57 40 | 3.365444 | x-offset of particle to weapon }}<br />
{{OBDtr| 0x028 | float |F0F096| B3 1D 89 BC | -0.016738 | y-offset of particle to weapon }}<br />
{{OBDtr| 0x02C | float |F0F096| C5 C1 2A 3F | 0.667019 | z-offset of particle to weapon }}<br />
{{OBDtr2|0x030 | char[16] |00C864| w1_tap_e01 | particle name (reference to 06226-3RAPw1_tap_e01.[[OBD:BINA/PAR3|BINA]]) }}<br />
{{OBDtr| 0x040 | int32 |00C8FF| 00 00 00 00 | 0 | runtime only (pointer to particle class) }}<br />
{{OBDtr| 0x044 | int16 |00C8FF| 01 00 | 1 | ammo decrement (different for the 2 firing modes of w11_ba1) }}<br />
{{OBDtr| 0x046 | int16 |00C8FF| 0C 00 | 12 | delay between shots in frames (12 frames <nowiki>=</nowiki> 0.2 seconds) }}<br />
{{OBDtr| 0x048 | int16 |00C8FF| 04 00 | 4 | 'roughjustice' delay between shots in frames }}<br />
{{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 }}<br />
{{OBDtr| 0x04C | int16 |00C8FF| 00 00 | 0 | 0 <nowiki>=</nowiki> particle is triggered by fire1; 1 <nowiki>=</nowiki> particle is triggered by fire2; -1 <nowiki>=</nowiki> particle is triggered by both firing modes }}<br />
{{OBDtr| 0x04E | int16 |00C8FF| 00 00 | 0 | delay before firing }}<br />
|}<br />
<br />
<br />
;Transformation matrix<br />
:That's what defines orientation, stretching, etc.<br />
:See [[OBD:CRSA|CRSA]] for details.<br />
<br />
==0x6D8 to 0x71F - End of file==<br />
<br />
<br />
[[image:onwc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr2|0x6D8 | char[32] |C80040| weapon _empty | empty weapon sound (reference to 08993-weapon_empty.[[OBD:OSBD/OSIm|imp.OSBD]]) }}<br />
{{OBDtr| 0x6F8 | int32 |FFCD96| 00 00 00 00 | 0 | runtime only (pointer to empty weapon sound) }}<br />
{{OBDtr| 0x6FC | link |C8C864| 01 81 0E 00 | 3713 | link to 03713-w1_glow.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x700 | link |C8C864| 01 82 0E 00 | 3714 | link to 03714-w1_glow_ammo.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x704 | float |0096C8| 00 00 80 3F | 1.000000 | x-scale factor of glow textures }}<br />
{{OBDtr| 0x708 | float |0096C8| 00 00 80 3F | 1.000000 | z-scale factor of glow textures }}<br />
{{OBDtr| 0x70C | float |0096C8| 76 65 EB 3F | 1.839034 | x-offset of pickup handle }}<br />
{{OBDtr| 0x710 | float |0096C8| 96 4C A9 3D | 0.082666 | y-offset of pickup handle }}<br />
{{OBDtr| 0x714 | float |0096C8| 06 E2 14 3E | 0.145393 | z-offset of pickup handle }}<br />
{{OBDtr| 0x718 | float |0096C8| 00 00 00 00 | 0.000000 | hovering height of unheld weapon }}<br />
{{OBDtr| 0x71C | char[4] |FF80C0| AD DE | dead | unused }}<br />
|}<br />
<br />
<br />
;Glow textures<br />
: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.<br />
;Pickup handle<br />
:The tolerance is hardcoded. The offsets are not relative to the weapon's axes, but to the world axes (!).<br />
:This is a rather nasty "feature" (actually, the offsets ''should'' be relative to the weapon's orientation)<br />
: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.<br />
<br />
<br />
{{OBD_File_Footer | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONWC&diff=17410OBD:ONWC2010-08-29T03:49:02Z<p>Gumby: </p>
<hr />
<div>{{OBD_File_Header | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level | align=center}}<br />
<br />
<br />
All ONWC files are 0 byte files. That means that Oni takes the information out of the ONWC files of level 0. Below is an example of an ONWC file of level 0. The first pic shows the beginning of this file. The second pic the end of it. <br />
<br />
<br />
Unless specified otherwise, the coordinates are relative to the weapon's mesh (x = forwards, y = left, z = up).<br />
<br />
<br />
==0x000 to 0x0D7 - Weapon main part ==<br />
<br />
<br />
[[image:onwc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 75 0E 00 | 3701 | 03701-w1_tap.ONWC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 00 | 0 | level 0 }}<br />
|}<br />
<br />
<br />
===0x008 to 0x053 - Laser sight parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x008 | float |FFC8C8| F5 A4 49 40 | 3.150693 | x-offset of laser sight origin }}<br />
{{OBDtr| 0x00C | float |FFC8C8| F4 2C A5 3B | 0.005041 | y-offset of laser sight origin }}<br />
{{OBDtr| 0x010 | float |FFC8C8| 21 4E D2 3E | 0.410752 | z-offset of laser sight origin }}<br />
{{OBDtr| 0x014 | float |FFC8C8| 23 A6 7F 3F | 0.998629 | x-component of laser sight direction }}<br />
{{OBDtr| 0x018 | float |FFC8C8| AA 6C 56 BD | -0.052349 | y-component of laser sight direction }}<br />
{{OBDtr| 0x01C | float |FFC8C8| 69 66 AA B7 | -0.000020 | z-component of laser sight direction }}<br />
{{OBDtr| 0x020 | float |FFC8C8| 00 40 9C 45 |5000.000000 | maximal length of laser sight vector }}<br />
{{OBDtr| 0x024 | color |FFFFC8| 00 00 FF FF | 0, 0, 255; 255 | laser sight color (blue, green, red); laser sight transparency }}<br />
{{OBDtr| 0x028 | link |C8FFC8| 01 94 05 00 | 1428 | crosshair texture (link to 01428-target_1A.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x02C | color |C8FFC8| FF FF FF 00 |255, 255, 255; 0| crosshair background color (blue, green, red); crosshair background transparency }}<br />
{{OBDtr| 0x030 | float |C8FFC8| CD CC 4C 3F | 0.800000 | crosshair scale factor }}<br />
{{OBDtr| 0x034 | link |C8FFFF| 01 95 05 00 | 1428 | locked crosshair texture (link to 01429-target_1B.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x038 | color |C8FFFF| FF FF FF 00 |255, 255, 255; 0| locked crosshair background color (blue, green, red); locked crosshair background transparency }}<br />
{{OBDtr| 0x03C | float |C8FFFF| CD CC 4C 3F | 0.800000 | locked crosshair scale factor }}<br />
{{OBDtr| 0x040 | link |FFC8FF| 00 00 00 00 | unused | tunnel texture (link to a [[OBD:TXMP|TXMP]]) file }}<br />
{{OBDtr| 0x044 | color |FFC8FF| FF FF FF 00 |255, 255, 255; 0| tunnel background color (blue, green, red); tunnel background transparency }}<br />
{{OBDtr| 0x048 | float |FFC8FF| 00 00 80 3F | 1.000000 | tunnel scale factor }}<br />
{{OBDtr| 0x04C | int32 |FFC800| 0F 00 00 00 | 15 | number of tunnel textures }}<br />
{{OBDtr| 0x050 | float |C800C8| 00 00 20 41 | 10.000000 | spacing of tunnel textures }}<br />
|}<br />
<br />
<br />
;Crosshair<br />
:Default crosshair appears where the laser sight hits environment, corpses, etc<br />
:Locked crosshair appears when the laser sight hits characters (including the shooter)<br />
:"Tunnel" is used by '''w8_mbo''' as a complement to the crosshair<br />
:'''w2_sap''', '''w5_sbg''', '''w7_scc''' and '''w9_scr''' use it with no crosshair<br />
<br />
<br />
===0x054 to 0x05F - Ammo meter===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x054 | link |C87C64| 01 7E 0E 00 | 3710 | link to 03710-tap_icon.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x058 | link |C87C64| 01 7F 0E 00 | 3711 | link to 03711-tap_empty.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x05C | link |C87C64| 01 80 0E 00 | 3712 | link to 03712-tap_fill.[[OBD:TXMP|TXMP]] }}<br />
|}<br />
<br />
<br />
===0x060 to 0x0D7 - Weapon parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x060 | link |C87C64| 01 76 0E 00 | 3702 | link to 03702-.M3GM }}<br />
{{OBDtr2|0x064 | char[32] |B0C3D4| w1_tap | weapon name }}<br />
{{OBDtr| 0x084 | float |E7CEA5| 00 00 80 3F | 1.000000 | weapon mouse sensitivity (applies on AI, too) }}<br />
{{OBDtr| 0x088 | float |E7CEA5| A6 92 2B 3D | 0.041888 | recoil base (e.g. for w1_tap and w2_sap) }}<br />
{{OBDtr| 0x08C | float |E7CEA5| 92 0A 86 3E | 0.261799 | recoil max }}<br />
{{OBDtr| 0x090 | float |E7CEA5| 00 00 A0 40 | 5.000000 | recoil factor }}<br />
{{OBDtr| 0x094 | float |E7CEA5| E2 A3 7B 3B | 0.003839 | recoil return speed }}<br />
{{OBDtr| 0x098 | float |E7CEA5| 88 C3 E4 3A | 0.001745 | recoil firing return speed }}<br />
{{OBDtr| 0x09C | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector X}}<br />
{{OBDtr| 0x0A0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Y}}<br />
{{OBDtr| 0x0A4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Z }}<br />
{{OBDtr| 0x0A8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector X}}<br />
{{OBDtr| 0x0AC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Y}}<br />
{{OBDtr| 0x0B0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Z}}<br />
{{OBDtr| 0x0B4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition X}}<br />
{{OBDtr| 0x0B8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Y}}<br />
{{OBDtr| 0x0BC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Z}}<br />
{{OBDtr| 0x0C0 | int16 |FFDDDD| 00 00 | 0 | freeTime (unused); always zero }}<br />
{{OBDtr| 0x0C2 | int16 |FFDDDD| 95 00 | 149 | recoil animation type (149 <nowiki>=</nowiki> autopistol_recoil) }}<br />
{{OBDtr| 0x0C4 | int16 |FFDDDD| A4 00 | 164 | reload animation type (164 <nowiki>=</nowiki> reload_pistol) }}<br />
{{OBDtr| 0x0C6 | int16 |FFDDDD| 19 00 | 25 | pause after reload in 1/60 seconds }}<br />
{{OBDtr| 0x0C8 | int16 |FFDDDD| 0A 00 | 10 | amount of shots }}<br />
{{OBDtr| 0x0CA | int16 |FFDDDD| 06 00 | 6 | amount of particles }}<br />
{{OBDtr| 0x0CC | int16 |FFDDDD| 01 00 | 1 | amount of firing modes }}<br />
{{OBDtr| 0x0CE | int16 |FFDDDD| 0A 00 | 10 | pause before reload in 1/60 seconds }}<br />
{{OBDtr| 0x0D0 | int16 |FFDDDD| 04 00 | 4 | release delay; delay between the moment the trigger is released and the moment the weapon stops firing }}<br />
{{OBDtr| 0x0D2 | int16 |FFDDDD| 00 00 | 0 | padding; always zero }}<br />
{{OBDtr| 0x0D4 | int32 |FFDDDD| 30 | 0x30 C0 02 00 | weapon options; the following bits are possible (values in hex):<br />
<br />
:0x'''02''' 00 00 00 - weapon can't be holstered<br />
:0x'''04''' 00 00 00 - weapon reloads with energy cells<br />
:0x'''08''' 00 00 00 - weapon is a rifle (two-handed)<br />
:0x'''10''' 00 00 00 - recoil affects aiming<br />
:0x'''20''' 00 00 00 - sustained fire (applies only to primary fire)<br />
:0x'''40''' 00 00 00 - runtime only; do not use<br />
:0x'''80''' 00 00 00 - stun switcher; used for w6_vdg, see below<br />
<br />
:0x00 '''01''' 00 00 - knockdown switcher; used for w4_psm, see below<br />
:0x00 '''02''' 00 00 - unknown; used for w5_sbg and w11_ba1<br />
:0x00 '''04''' 00 00 - secondary fire enabled<br />
:0x00 '''08''' 00 00 - barabbas weapon; see below<br />
:0x00 '''10''' 00 00 - heavy weapon; run, jump and creep disabled<br />
:0x00 '''20''' 00 00 - auto release trigger; used for w11_ba1<br />
:0x00 '''40''' 00 00 - has release delay; see the release delay field above<br />
:0x00 '''80''' 00 00 - laser sight visible<br />
<br />
:0x00 00 '''02''' 00 - crosshair scaling, used for w1_tap, w2_sap, w3_phr and w8_mbo<br />
:0x00 00 '''08''' 00 - weapon doesn't fade<br />
:0x00 00 '''10''' 00 - drain ammo; used by w4_psm to decrement ammo while firing because its firing mode is continuous rather than repetitive<br />
}}<br />
|}<br />
<br />
<br />
'''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<br />
<br />
'''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<br />
<br />
'''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 beginn, then always this weapon is teleported back to character (when command used again)<br />
<br />
==0x0D8 to 0x1D7 - Firing modes==<br />
<br />
<br />
Every ONWC has 2 firing mode slots (128 = 0x80 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
<br />
===0x0D8 to 0x157 - Primary firing mode===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x0D8 | int32 |64AAAA| 00 00 00 00 | 0 | firing mode options; the following bits are possible (values in hex):<br />
:0x'''01''' 00 00 00 - unknown; something to do with keeping/altering "prediction" when the target changes<br />
}}<br />
{{OBDtr| 0x0DC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix XX }}<br />
{{OBDtr| 0x0E0 | float |EBEBEB| 05 6D 56 3D | 0.052350 | transform matrix XY }}<br />
{{OBDtr| 0x0E4 | float |EBEBEB| F4 8D A9 37 | 0.000020 | transform matrix XZ }}<br />
{{OBDtr| 0x0E8 | float |EBEBEB| 05 6D 56 BD | -0.052350 | transform matrix YX }}<br />
{{OBDtr| 0x0EC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix YY }}<br />
{{OBDtr| 0x0F0 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix YZ }}<br />
{{OBDtr| 0x0F4 | float |EBEBEB| F4 8D A9 B7 | -0.000020 | transform matrix ZX }}<br />
{{OBDtr| 0x0F8 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix ZY }}<br />
{{OBDtr| 0x0FC | float |EBEBEB| 00 00 80 3F | 1.000000 | transform matrix ZZ }}<br />
{{OBDtr| 0x100 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation X; always zero for original weapons }}<br />
{{OBDtr| 0x104 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Y; always zero for original weapons }}<br />
{{OBDtr| 0x108 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Z; always zero for original weapons }}<br />
{{OBDtr| 0x10C | float |EBEBEB| 23 A6 7F 3F | 0.998629 | firing spread direction X component }}<br />
{{OBDtr| 0x110 | float |EBEBEB| AE 6C 56 BD | -0.052349 | firing spread direction Y component }}<br />
{{OBDtr| 0x114 | float |EBEBEB| AF 8D A9 B7 | -0.000020 | firing spread direction Z component }}<br />
{{OBDtr| 0x118 | float |EBEBEB| DC FE 08 3C | 0.008362 | targeting vector origin X component? }}<br />
{{OBDtr| 0x11C | float |EBEBEB| 5C 11 23 3E | 0.159246 | targeting vector origin Y component? }}<br />
{{OBDtr| 0x120 | float |EBEBEB| 39 C6 2A 3F | 0.667087 | targeting vector origin Z component? }}<br />
{{OBDtr| 0x124 | float |EBEBEB| 00 00 61 44 | 900.000000 | prediction speed; 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 }}<br />
{{OBDtr| 0x128 | float |EBEBEB| 00 00 20 41 | 10.000000 | 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 }}<br />
{{OBDtr| 0x12C | float |EBEBEB| 00 00 20 40 | 2.500000 | aim_radius; always the same; possible related to the inaccuracy angle above }}<br />
{{OBDtr| 0x130 | float |EBEBEB| 00 00 96 43 | 300.000000 | 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<nowiki>=</nowiki>1* (but you have to be in a large open area, since those ranges are quite big) }}<br />
{{OBDtr| 0x134 | float |EBEBEB| 00 00 40 41 | 12.000000 | 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 }}<br />
{{OBDtr| 0x138 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x13C | int16 |8C8CCC| 05 00 | 5 | maximum startle misses; probably the maximum number of shots an ai can miss when suprised before he starts aiming }}<br />
{{OBDtr| 0x13E | int16 |8C8CCC| 01 00 | 1 | skill index (in the [[ONCC]] shooting skill table) }}<br />
{{OBDtr| 0x140 | int32 |8C8CCC| 00 00 00 00 | 0 | fight timer, 240 for w4_psm, 200 for v6_vdg }}<br />
{{OBDtr| 0x144 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile speed (150 for SBG, 160 for WMC) }}<br />
{{OBDtr| 0x148 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile gravity, can be negative for firing at the enemy's feet (0.5 for SBG, 0.3 for WMC) }}<br />
{{OBDtr| 0x14C | float |FF00C8| 00 00 34 43 | 180.000000 | 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<nowiki>=</nowiki>1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm) }}<br />
{{OBDtr| 0x150 | float |FF00C8| 00 00 40 40 | 3.000000 | length of the firingspread's base side; can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 }}<br />
{{OBDtr| 0x154 | float |FF00C8| 50 77 D6 3D | 0.104719 | angle between firingspread's base and its altitude(length); can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 (0.1 for w1_tap, 0.21 for w2_sap) }}<br />
|}<br />
<br />
<br />
;Transform matrix<br />
:Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.<br />
<br />
===0x158 to 0x1D7 - Secondary firing mode===<br />
<br />
<br />
The only original weapon for which these fields are not all zero is '''w11_ba1'''.<br />
<br />
They are the exact counterparts of the fields at 0xD8 - 0x157.<br />
<br />
<br />
==0x1D8 to 0x6D7 - Weapon particle array==<br />
<br />
<br />
Every ONWC has 16 particle slots (80 = 0x50 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
Offsets are relative to the beginning of a slot.<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtrBK|1=First of 16 elements (black outline).}}<br />
{{OBDtr| 0x000 | float |F0F096| AE 6C 56 3D | 0.052349 | transformation matrix, xx term }}<br />
{{OBDtr| 0x004 | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, xy term }}<br />
{{OBDtr| 0x008 | float |F0F096| C2 53 90 B3 | -0.000000... | transformation matrix, xz term }}<br />
{{OBDtr| 0x00C | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, yx term }}<br />
{{OBDtr| 0x010 | float |F0F096| AE 6C 56 BD | -0.052349 | transformation matrix, yy term }}<br />
{{OBDtr| 0x014 | float |F0F096| AF 8D A9 B7 | -0.000020 | transformation matrix, yz term }}<br />
{{OBDtr| 0x018 | float |F0F096| BA 59 A9 B7 | -0.000020 | transformation matrix, zx term }}<br />
{{OBDtr| 0x01C | float |F0F096| 5B 02 85 35 | 0.000001 | transformation matrix, zy term }}<br />
{{OBDtr| 0x020 | float |F0F096| 00 00 80 BF | -1.000000 | transformation matrix, zz term }}<br />
{{OBDtr| 0x024 | float |F0F096| 6F 63 57 40 | 3.365444 | x-offset of particle to weapon }}<br />
{{OBDtr| 0x028 | float |F0F096| B3 1D 89 BC | -0.016738 | y-offset of particle to weapon }}<br />
{{OBDtr| 0x02C | float |F0F096| C5 C1 2A 3F | 0.667019 | z-offset of particle to weapon }}<br />
{{OBDtr2|0x030 | char[16] |00C864| w1_tap_e01 | particle name (reference to 06226-3RAPw1_tap_e01.[[OBD:BINA/PAR3|BINA]]) }}<br />
{{OBDtr| 0x040 | int32 |00C8FF| 00 00 00 00 | 0 | runtime only (pointer to particle class) }}<br />
{{OBDtr| 0x044 | int16 |00C8FF| 01 00 | 1 | ammo decrement (different for the 2 firing modes of w11_ba1) }}<br />
{{OBDtr| 0x046 | int16 |00C8FF| 0C 00 | 12 | delay between shots in frames (12 frames <nowiki>=</nowiki> 0.2 seconds) }}<br />
{{OBDtr| 0x048 | int16 |00C8FF| 04 00 | 4 | 'roughjustice' delay between shots in frames }}<br />
{{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 }}<br />
{{OBDtr| 0x04C | int16 |00C8FF| 00 00 | 0 | 0 <nowiki>=</nowiki> particle is triggered by fire1; 1 <nowiki>=</nowiki> particle is triggered by fire2; -1 <nowiki>=</nowiki> particle is triggered by both firing modes }}<br />
{{OBDtr| 0x04E | int16 |00C8FF| 00 00 | 0 | delay before firing }}<br />
|}<br />
<br />
<br />
;Transformation matrix<br />
:That's what defines orientation, stretching, etc.<br />
:See [[OBD:CRSA|CRSA]] for details.<br />
<br />
==0x6D8 to 0x71F - End of file==<br />
<br />
<br />
[[image:onwc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr2|0x6D8 | char[32] |C80040| weapon _empty | empty weapon sound (reference to 08993-weapon_empty.[[OBD:OSBD/OSIm|imp.OSBD]]) }}<br />
{{OBDtr| 0x6F8 | int32 |FFCD96| 00 00 00 00 | 0 | runtime only (pointer to empty weapon sound) }}<br />
{{OBDtr| 0x6FC | link |C8C864| 01 81 0E 00 | 3713 | link to 03713-w1_glow.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x700 | link |C8C864| 01 82 0E 00 | 3714 | link to 03714-w1_glow_ammo.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x704 | float |0096C8| 00 00 80 3F | 1.000000 | x-scale factor of glow textures }}<br />
{{OBDtr| 0x708 | float |0096C8| 00 00 80 3F | 1.000000 | z-scale factor of glow textures }}<br />
{{OBDtr| 0x70C | float |0096C8| 76 65 EB 3F | 1.839034 | x-offset of pickup handle }}<br />
{{OBDtr| 0x710 | float |0096C8| 96 4C A9 3D | 0.082666 | y-offset of pickup handle }}<br />
{{OBDtr| 0x714 | float |0096C8| 06 E2 14 3E | 0.145393 | z-offset of pickup handle }}<br />
{{OBDtr| 0x718 | float |0096C8| 00 00 00 00 | 0.000000 | hovering height of unheld weapon }}<br />
{{OBDtr| 0x71C | char[4] |FF80C0| AD DE | dead | unused }}<br />
|}<br />
<br />
<br />
;Glow textures<br />
: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.<br />
;Pickup handle<br />
:The tolerance is hardcoded. The offsets are not relative to the weapon's axes, but to the world axes (!).<br />
:This is a rather nasty "feature" (actually, the offsets ''should'' be relative to the weapon's orientation)<br />
: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.<br />
<br />
<br />
{{OBD_File_Footer | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONWC&diff=17409OBD:ONWC2010-08-29T00:47:34Z<p>Gumby: /* 0x0D8 to 0x157 - Primary firing mode */</p>
<hr />
<div>{{OBD_File_Header | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level | align=center}}<br />
<br />
<br />
All ONWC files are 0 byte files. That means that Oni takes the information out of the ONWC files of level 0. Below is an example of an ONWC file of level 0. The first pic shows the beginning of this file. The second pic the end of it. <br />
<br />
<br />
Unless specified otherwise, the coordinates are relative to the weapon's mesh (x = forwards, y = left, z = up).<br />
<br />
<br />
==0x000 to 0x0D7 - Weapon main part ==<br />
<br />
<br />
[[image:onwc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 75 0E 00 | 3701 | 03701-w1_tap.ONWC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 00 | 0 | level 0 }}<br />
|}<br />
<br />
<br />
===0x008 to 0x053 - Laser sight parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x008 | float |FFC8C8| F5 A4 49 40 | 3.150693 | x-offset of laser sight origin }}<br />
{{OBDtr| 0x00C | float |FFC8C8| F4 2C A5 3B | 0.005041 | y-offset of laser sight origin }}<br />
{{OBDtr| 0x010 | float |FFC8C8| 21 4E D2 3E | 0.410752 | z-offset of laser sight origin }}<br />
{{OBDtr| 0x014 | float |FFC8C8| 23 A6 7F 3F | 0.998629 | x-component of laser sight direction }}<br />
{{OBDtr| 0x018 | float |FFC8C8| AA 6C 56 BD | -0.052349 | y-component of laser sight direction }}<br />
{{OBDtr| 0x01C | float |FFC8C8| 69 66 AA B7 | -0.000020 | z-component of laser sight direction }}<br />
{{OBDtr| 0x020 | float |FFC8C8| 00 40 9C 45 |5000.000000 | maximal length of laser sight vector }}<br />
{{OBDtr| 0x024 | color |FFFFC8| 00 00 FF FF | 0, 0, 255; 255 | laser sight color (blue, green, red); laser sight transparency }}<br />
{{OBDtr| 0x028 | link |C8FFC8| 01 94 05 00 | 1428 | crosshair texture (link to 01428-target_1A.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x02C | color |C8FFC8| FF FF FF 00 |255, 255, 255; 0| crosshair background color (blue, green, red); crosshair background transparency }}<br />
{{OBDtr| 0x030 | float |C8FFC8| CD CC 4C 3F | 0.800000 | crosshair scale factor }}<br />
{{OBDtr| 0x034 | link |C8FFFF| 01 95 05 00 | 1428 | locked crosshair texture (link to 01429-target_1B.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x038 | color |C8FFFF| FF FF FF 00 |255, 255, 255; 0| locked crosshair background color (blue, green, red); locked crosshair background transparency }}<br />
{{OBDtr| 0x03C | float |C8FFFF| CD CC 4C 3F | 0.800000 | locked crosshair scale factor }}<br />
{{OBDtr| 0x040 | link |FFC8FF| 00 00 00 00 | unused | tunnel texture (link to a [[OBD:TXMP|TXMP]]) file }}<br />
{{OBDtr| 0x044 | color |FFC8FF| FF FF FF 00 |255, 255, 255; 0| tunnel background color (blue, green, red); tunnel background transparency }}<br />
{{OBDtr| 0x048 | float |FFC8FF| 00 00 80 3F | 1.000000 | tunnel scale factor }}<br />
{{OBDtr| 0x04C | int32 |FFC800| 0F 00 00 00 | 15 | number of tunnel textures }}<br />
{{OBDtr| 0x050 | float |C800C8| 00 00 20 41 | 10.000000 | spacing of tunnel textures }}<br />
|}<br />
<br />
<br />
;Crosshair<br />
:Default crosshair appears where the laser sight hits environment, corpses, etc<br />
:Locked crosshair appears when the laser sight hits characters (including the shooter)<br />
:"Tunnel" is used by '''w8_mbo''' as a complement to the crosshair<br />
:'''w2_sap''', '''w5_sbg''', '''w7_scc''' and '''w9_scr''' use it with no crosshair<br />
<br />
<br />
===0x054 to 0x05F - Ammo meter===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x054 | link |C87C64| 01 7E 0E 00 | 3710 | link to 03710-tap_icon.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x058 | link |C87C64| 01 7F 0E 00 | 3711 | link to 03711-tap_empty.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x05C | link |C87C64| 01 80 0E 00 | 3712 | link to 03712-tap_fill.[[OBD:TXMP|TXMP]] }}<br />
|}<br />
<br />
<br />
===0x060 to 0x0D7 - Weapon parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x060 | link |C87C64| 01 76 0E 00 | 3702 | link to 03702-.M3GM }}<br />
{{OBDtr2|0x064 | char[32] |B0C3D4| w1_tap | weapon name }}<br />
{{OBDtr| 0x084 | float |E7CEA5| 00 00 80 3F | 1.000000 | weapon mouse sensitivity (applies on AI, too) }}<br />
{{OBDtr| 0x088 | float |E7CEA5| A6 92 2B 3D | 0.041888 | recoil base (e.g. for w1_tap and w2_sap) }}<br />
{{OBDtr| 0x08C | float |E7CEA5| 92 0A 86 3E | 0.261799 | recoil max }}<br />
{{OBDtr| 0x090 | float |E7CEA5| 00 00 A0 40 | 5.000000 | recoil factor }}<br />
{{OBDtr| 0x094 | float |E7CEA5| E2 A3 7B 3B | 0.003839 | recoil return speed }}<br />
{{OBDtr| 0x098 | float |E7CEA5| 88 C3 E4 3A | 0.001745 | recoil firing return speed }}<br />
{{OBDtr| 0x09C | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector X}}<br />
{{OBDtr| 0x0A0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Y}}<br />
{{OBDtr| 0x0A4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Z }}<br />
{{OBDtr| 0x0A8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector X}}<br />
{{OBDtr| 0x0AC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Y}}<br />
{{OBDtr| 0x0B0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Z}}<br />
{{OBDtr| 0x0B4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition X}}<br />
{{OBDtr| 0x0B8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Y}}<br />
{{OBDtr| 0x0BC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Z}}<br />
{{OBDtr| 0x0C0 | int16 |FFDDDD| 00 00 | 0 | freeTime ???; always zero }}<br />
{{OBDtr| 0x0C2 | int16 |FFDDDD| 95 00 | 149 | recoil animation type (149 <nowiki>=</nowiki> autopistol_recoil) }}<br />
{{OBDtr| 0x0C4 | int16 |FFDDDD| A4 00 | 164 | reload animation type (164 <nowiki>=</nowiki> reload_pistol) }}<br />
{{OBDtr| 0x0C6 | int16 |FFDDDD| 19 00 | 25 | pause after reload in 1/60 seconds }}<br />
{{OBDtr| 0x0C8 | int16 |FFDDDD| 0A 00 | 10 | amount of shots }}<br />
{{OBDtr| 0x0CA | int16 |FFDDDD| 06 00 | 6 | amount of particles }}<br />
{{OBDtr| 0x0CC | int16 |FFDDDD| 01 00 | 1 | amount of firing modes }}<br />
{{OBDtr| 0x0CE | int16 |FFDDDD| 0A 00 | 10 | pause before reload in 1/60 seconds }}<br />
{{OBDtr| 0x0D0 | int16 |FFDDDD| 04 00 | 4 | release delay; delay between the moment the trigger is released and the moment the weapon stops firing }}<br />
{{OBDtr| 0x0D2 | int16 |FFDDDD| 00 00 | 0 | padding; always zero }}<br />
{{OBDtr| 0x0D4 | int32 |FFDDDD| 30 | 0x30 C0 02 00 | weapon options; the following bits are possible (values in hex):<br />
<br />
:0x'''02''' 00 00 00 - weapon can't be holstered<br />
:0x'''04''' 00 00 00 - weapon reloads with energy cells<br />
:0x'''08''' 00 00 00 - weapon is a rifle (two-handed)<br />
:0x'''10''' 00 00 00 - recoil affects aiming<br />
:0x'''20''' 00 00 00 - sustained fire (applies only to primary fire)<br />
:0x'''40''' 00 00 00 - runtime only; do not use<br />
:0x'''80''' 00 00 00 - stun switcher; used for w6_vdg, see below<br />
<br />
:0x00 '''01''' 00 00 - knockdown switcher; used for w4_psm, see below<br />
:0x00 '''02''' 00 00 - unknown; used for w5_sbg and w11_ba1<br />
:0x00 '''04''' 00 00 - secondary fire enabled<br />
:0x00 '''08''' 00 00 - barabbas weapon; see below<br />
:0x00 '''10''' 00 00 - heavy weapon; run, jump and creep disabled<br />
:0x00 '''20''' 00 00 - auto release trigger; used for w11_ba1<br />
:0x00 '''40''' 00 00 - has release delay; see the release delay field above<br />
:0x00 '''80''' 00 00 - laser sight visible<br />
<br />
:0x00 00 '''02''' 00 - crosshair scaling, used for w1_tap, w2_sap, w3_phr and w8_mbo<br />
:0x00 00 '''08''' 00 - weapon doesn't fade<br />
:0x00 00 '''10''' 00 - drain ammo; used by w4_psm to decrement ammo while firing because its firing mode is continuous rather than repetitive<br />
}}<br />
|}<br />
<br />
<br />
'''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<br />
<br />
'''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<br />
<br />
'''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 beginn, then always this weapon is teleported back to character (when command used again)<br />
<br />
==0x0D8 to 0x1D7 - Firing modes==<br />
<br />
<br />
Every ONWC has 2 firing mode slots (128 = 0x80 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
<br />
===0x0D8 to 0x157 - Primary firing mode===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x0D8 | int32 |64AAAA| 00 00 00 00 | 0 | firing mode options; the following bits are possible (values in hex):<br />
:0x'''01''' 00 00 00 - unknown; something to do with keeping/altering "prediction" when the target changes<br />
}}<br />
{{OBDtr| 0x0DC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix XX }}<br />
{{OBDtr| 0x0E0 | float |EBEBEB| 05 6D 56 3D | 0.052350 | transform matrix XY }}<br />
{{OBDtr| 0x0E4 | float |EBEBEB| F4 8D A9 37 | 0.000020 | transform matrix XZ }}<br />
{{OBDtr| 0x0E8 | float |EBEBEB| 05 6D 56 BD | -0.052350 | transform matrix YX }}<br />
{{OBDtr| 0x0EC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix YY }}<br />
{{OBDtr| 0x0F0 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix YZ }}<br />
{{OBDtr| 0x0F4 | float |EBEBEB| F4 8D A9 B7 | -0.000020 | transform matrix ZX }}<br />
{{OBDtr| 0x0F8 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix ZY }}<br />
{{OBDtr| 0x0FC | float |EBEBEB| 00 00 80 3F | 1.000000 | transform matrix ZZ }}<br />
{{OBDtr| 0x100 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation X; always zero for original weapons }}<br />
{{OBDtr| 0x104 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Y; always zero for original weapons }}<br />
{{OBDtr| 0x108 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Z; always zero for original weapons }}<br />
{{OBDtr| 0x10C | float |EBEBEB| 23 A6 7F 3F | 0.998629 | firing spread direction X component }}<br />
{{OBDtr| 0x110 | float |EBEBEB| AE 6C 56 BD | -0.052349 | firing spread direction Y component }}<br />
{{OBDtr| 0x114 | float |EBEBEB| AF 8D A9 B7 | -0.000020 | firing spread direction Z component }}<br />
{{OBDtr| 0x118 | float |EBEBEB| DC FE 08 3C | 0.008362 | targeting vector origin X component? }}<br />
{{OBDtr| 0x11C | float |EBEBEB| 5C 11 23 3E | 0.159246 | targeting vector origin Y component? }}<br />
{{OBDtr| 0x120 | float |EBEBEB| 39 C6 2A 3F | 0.667087 | targeting vector origin Z component? }}<br />
{{OBDtr| 0x124 | float |EBEBEB| 00 00 61 44 | 900.000000 | prediction speed; 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 }}<br />
{{OBDtr| 0x128 | float |EBEBEB| 00 00 20 41 | 10.000000 | 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 }}<br />
{{OBDtr| 0x12C | float |EBEBEB| 00 00 20 40 | 2.500000 | aim_radius; always the same; possible related to the inaccuracy angle above }}<br />
{{OBDtr| 0x130 | float |EBEBEB| 00 00 96 43 | 300.000000 | 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<nowiki>=</nowiki>1* (but you have to be in a large open area, since those ranges are quite big) }}<br />
{{OBDtr| 0x134 | float |EBEBEB| 00 00 40 41 | 12.000000 | 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 }}<br />
{{OBDtr| 0x138 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x13C | int16 |8C8CCC| 05 00 | 5 | maximum startle misses; probably the maximum number of shots an ai can miss when suprised before he starts aiming }}<br />
{{OBDtr| 0x13E | int16 |8C8CCC| 01 00 | 1 | skill index (in the [[ONCC]] shooting skill table) }}<br />
{{OBDtr| 0x140 | int32 |8C8CCC| 00 00 00 00 | 0 | fight timer, 240 for w4_psm, 200 for v6_vdg }}<br />
{{OBDtr| 0x144 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile speed (150 for SBG, 160 for WMC) }}<br />
{{OBDtr| 0x148 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile gravity, can be negative for firing at the enemy's feet (0.5 for SBG, 0.3 for WMC) }}<br />
{{OBDtr| 0x14C | float |FF00C8| 00 00 34 43 | 180.000000 | 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<nowiki>=</nowiki>1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm) }}<br />
{{OBDtr| 0x150 | float |FF00C8| 00 00 40 40 | 3.000000 | length of the firingspread's base side; can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 }}<br />
{{OBDtr| 0x154 | float |FF00C8| 50 77 D6 3D | 0.104719 | angle between firingspread's base and its altitude(length); can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 (0.1 for w1_tap, 0.21 for w2_sap) }}<br />
|}<br />
<br />
<br />
;Transform matrix<br />
:Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.<br />
<br />
===0x158 to 0x1D7 - Secondary firing mode===<br />
<br />
<br />
The only original weapon for which these fields are not all zero is '''w11_ba1'''.<br />
<br />
They are the exact counterparts of the fields at 0xD8 - 0x157.<br />
<br />
<br />
==0x1D8 to 0x6D7 - Weapon particle array==<br />
<br />
<br />
Every ONWC has 16 particle slots (80 = 0x50 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
Offsets are relative to the beginning of a slot.<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtrBK|1=First of 16 elements (black outline).}}<br />
{{OBDtr| 0x000 | float |F0F096| AE 6C 56 3D | 0.052349 | transformation matrix, xx term }}<br />
{{OBDtr| 0x004 | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, xy term }}<br />
{{OBDtr| 0x008 | float |F0F096| C2 53 90 B3 | -0.000000... | transformation matrix, xz term }}<br />
{{OBDtr| 0x00C | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, yx term }}<br />
{{OBDtr| 0x010 | float |F0F096| AE 6C 56 BD | -0.052349 | transformation matrix, yy term }}<br />
{{OBDtr| 0x014 | float |F0F096| AF 8D A9 B7 | -0.000020 | transformation matrix, yz term }}<br />
{{OBDtr| 0x018 | float |F0F096| BA 59 A9 B7 | -0.000020 | transformation matrix, zx term }}<br />
{{OBDtr| 0x01C | float |F0F096| 5B 02 85 35 | 0.000001 | transformation matrix, zy term }}<br />
{{OBDtr| 0x020 | float |F0F096| 00 00 80 BF | -1.000000 | transformation matrix, zz term }}<br />
{{OBDtr| 0x024 | float |F0F096| 6F 63 57 40 | 3.365444 | x-offset of particle to weapon }}<br />
{{OBDtr| 0x028 | float |F0F096| B3 1D 89 BC | -0.016738 | y-offset of particle to weapon }}<br />
{{OBDtr| 0x02C | float |F0F096| C5 C1 2A 3F | 0.667019 | z-offset of particle to weapon }}<br />
{{OBDtr2|0x030 | char[16] |00C864| w1_tap_e01 | particle name (reference to 06226-3RAPw1_tap_e01.[[OBD:BINA/PAR3|BINA]]) }}<br />
{{OBDtr| 0x040 | int32 |00C8FF| 00 00 00 00 | 0 | runtime only (pointer to particle class) }}<br />
{{OBDtr| 0x044 | int16 |00C8FF| 01 00 | 1 | ammo decrement (different for the 2 firing modes of w11_ba1) }}<br />
{{OBDtr| 0x046 | int16 |00C8FF| 0C 00 | 12 | delay between shots in frames (12 frames <nowiki>=</nowiki> 0.2 seconds) }}<br />
{{OBDtr| 0x048 | int16 |00C8FF| 04 00 | 4 | 'roughjustice' delay between shots in frames }}<br />
{{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 }}<br />
{{OBDtr| 0x04C | int16 |00C8FF| 00 00 | 0 | 0 <nowiki>=</nowiki> particle is triggered by fire1; 1 <nowiki>=</nowiki> particle is triggered by fire2; -1 <nowiki>=</nowiki> particle is triggered by both firing modes }}<br />
{{OBDtr| 0x04E | int16 |00C8FF| 00 00 | 0 | delay before firing }}<br />
|}<br />
<br />
<br />
;Transformation matrix<br />
:That's what defines orientation, stretching, etc.<br />
:See [[OBD:CRSA|CRSA]] for details.<br />
<br />
==0x6D8 to 0x71F - End of file==<br />
<br />
<br />
[[image:onwc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr2|0x6D8 | char[32] |C80040| weapon _empty | empty weapon sound (reference to 08993-weapon_empty.[[OBD:OSBD/OSIm|imp.OSBD]]) }}<br />
{{OBDtr| 0x6F8 | int32 |FFCD96| 00 00 00 00 | 0 | runtime only (pointer to empty weapon sound) }}<br />
{{OBDtr| 0x6FC | link |C8C864| 01 81 0E 00 | 3713 | link to 03713-w1_glow.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x700 | link |C8C864| 01 82 0E 00 | 3714 | link to 03714-w1_glow_ammo.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x704 | float |0096C8| 00 00 80 3F | 1.000000 | x-scale factor of glow textures }}<br />
{{OBDtr| 0x708 | float |0096C8| 00 00 80 3F | 1.000000 | z-scale factor of glow textures }}<br />
{{OBDtr| 0x70C | float |0096C8| 76 65 EB 3F | 1.839034 | x-offset of pickup handle }}<br />
{{OBDtr| 0x710 | float |0096C8| 96 4C A9 3D | 0.082666 | y-offset of pickup handle }}<br />
{{OBDtr| 0x714 | float |0096C8| 06 E2 14 3E | 0.145393 | z-offset of pickup handle }}<br />
{{OBDtr| 0x718 | float |0096C8| 00 00 00 00 | 0.000000 | hovering height of unheld weapon }}<br />
{{OBDtr| 0x71C | char[4] |FF80C0| AD DE | dead | unused }}<br />
|}<br />
<br />
<br />
;Glow textures<br />
: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.<br />
;Pickup handle<br />
:The tolerance is hardcoded. The offsets are not relative to the weapon's axes, but to the world axes (!).<br />
:This is a rather nasty "feature" (actually, the offsets ''should'' be relative to the weapon's orientation)<br />
: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.<br />
<br />
<br />
{{OBD_File_Footer | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONCC&diff=17408OBD:ONCC2010-08-29T00:40:59Z<p>Gumby: </p>
<hr />
<div>{{OBD_File_Header | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character | align=center}}<br />
<br />
<br />
[[image:oncc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 DF 03 00 | 991 | 00991-konoko_generic.ONCC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 06 | 0 | level 3 }}<br />
{{OBDtr| 0x008 | float |00FF00| CD CC 0C 3F | 0.550000 | downwards velocity? (unknown, always 0.55) }}<br />
{{OBDtr| 0x00C | float |00FF00| 8F C2 75 3D | 0.060000 | downward gravity acceleration }}<br />
{{OBDtr| 0x010 | float |00FF00| CD CC 8C 3F | 1.100000 | starting velocity for a simple (tap) JUMP }}<br />
{{OBDtr| 0x014 | float |00FF00| 00 00 80 C0 | -4.000000 | limit velocity for jumping and gravity flight }}<br />
{{OBDtr| 0x018 | float |00FF00| 8F C2 F5 3C | 0.030000 | upward acceleration (jetpack) if you hold JUMP }}<br />
{{OBDtr| 0x01C | int16 |00FFFF| 07 00 | 7 | gravity timer? (unknown, always 7) }}<br />
{{OBDtr| 0x01E | int16 |00FFFF| 14 00 | 20 | jetpack timer; time during which you can use the jetpack }}<br />
{{OBDtr| 0x020 | float |FF00FF| 00 00 34 42 | 45.000000 | maximal falling height without damage }}<br />
{{OBDtr| 0x024 | float |FF00FF| 00 00 07 43 | 135.000000 | maximal falling height with damage }}<br />
|}<br />
<br />
<br />
;Units:times are in frames<br />
:heights are in world units<br />
:velocities are in world units per frames<br />
:accelerations are in world units per frames squared<br />
;Downwards velocity: could correspond to the steady push experienced when neither jumping nor falling<br />
:would be roughly equivalent to the starting velocity of a fall<br />
:although the value .55 seems right, the "sinking" seems to be hardcoded now<br />
;Gravity timer:Seems to be hardcoded now (could be the time until gravity switches on)<br />
;Jetpack timer:You can press JUMP multiple times during the time window (quite fun!)<br />
;Falling height: let FH1 be the height at 0x20<br />
:let FH2 be the height at 0x24<br />
:let BH be the base health of the character<br />
:let FH be the actual falling height<br />
:then, if FH > FH2, the character is killed<br />
:if FH < FH1, the character takes no damage<br />
:if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x028 | link |FF8000| 01 F8 03 00 | 1016 | link to 01016-shadow1.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x02C | float |FF8000| 00 00 40 41 | 12.000000 | height where the shadow fades out completely }}<br />
{{OBDtr| 0x030 | float |FF8000| 00 00 00 41 | 8.000000 | height where the diameter of the shadow decreases and the shadow fades out half }}<br />
{{OBDtr| 0x034 | float |FF8000| 00 00 C0 40 | 6.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x038 | float |FF8000| 00 00 90 40 | 4.500000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x03C | float |FF8000| 00 00 40 40 | 3.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x040 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the first part of a jump }}<br />
{{OBDtr| 0x042 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the second part of a jump }}<br />
|}<br />
<br />
<br />
;Jump Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x044 | float |FF0080| 00 00 C8 41 | 25.000000 | jumpDistance? ; always the same }}<br />
{{OBDtr| 0x048 | int8 |FFC8C8| 16 | 22 | jumpHeight? ; always the same }}<br />
{{OBDtr| 0x049 | int8 |FFC8C8| 06 | 6 | jumpDistanceSquares?!?! ; always the same }}<br />
{{OBDtr| 0x04A | char[2] |FFC8C8| AD DE | dead | pad }}<br />
|}<br />
<br />
<br />
;Cover Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x04C | float |FFFFC8| 00 00 20 42 | 40.000000 | rayIncrement; always the same }}<br />
{{OBDtr| 0x050 | float |FFFFC8| 00 00 96 43 | 300.000000 | rayMax; always the same }}<br />
{{OBDtr| 0x054 | float |FFFFC8| 35 FA 8E 3C | 0.017453 | rayAngle; always the same (0.017453 <nowiki>=</nowiki> PI/180) }}<br />
{{OBDtr| 0x058 | float |FFFFC8| DB 0F C9 3F | 1.570796 | rayAngleMax; always the same (1.57 <nowiki>=</nowiki> PI/2) }}<br />
|}<br />
<br />
<br />
;Autofreeze Constants (unused?)<br />
<br />
{{Table}}<br />
{{OBDtr| 0x05C | float |FFFFC8| 00 00 A0 40 | 5.000000 | distance_xz; always the same }}<br />
{{OBDtr| 0x060 | float |FFFFC8| 00 00 80 3F | 1.000000 | distance_y; always the same }}<br />
|}<br />
<br />
<br />
;Inventory Constants (unused?)<br />
<br />
{{Table}}<br />
{{OBDtr| 0x064 | int16 |C8FFC8| 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint }}<br />
{{OBDtr| 0x066 | char[2] |C8FFC8| AD DE | dead | unused }}<br />
|}<br />
<br />
<br />
;LOD Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x068 | float |C8FFFF| 00 10 3D 48 |193600.000000| unknown; always the same; this is 440 squared }}<br />
{{OBDtr| 0x06C | float |C8FFFF| 00 10 3D 47 | 48400.000000| unknown; always the same; this is 220 squared }}<br />
{{OBDtr| 0x070 | float |C8FFFF| 00 10 3D 46 | 12100.000000| unknown; always the same; this is 110 squared }}<br />
{{OBDtr| 0x074 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
{{OBDtr| 0x078 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
|}<br />
<br />
<br />
;Hurt sound paramters<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x07C | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x07E | int16 |FFC8FF| 5A 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x080 | int16 |FFC8FF| 0F 00 | 15 | unknown; always the same }}<br />
{{OBDtr| 0x082 | int16 |FFC8FF| 78 00 | 120 | unknown; always the same }}<br />
{{OBDtr| 0x084 | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x086 | int16 |FFC8FF| 01 00 | 1 | unknown; always the same }}<br />
{{OBDtr| 0x088 | int16 |FFC8FF| 02 00 | 2 | unknown; always the same }}<br />
{{OBDtr| 0x08A | int16 |FFC8FF| 64 00 | 100 | unknown; always the same }}<br />
{{OBDtr| 0x08C | int16 |FFC8FF| 0A 00 | 10 | unknown; always the same }}<br />
{{OBDtr| 0x08E | int16 |FFC8FF| 0C 00 | 12 | unknown; always the same }}<br />
{{OBDtr| 0x090 | int16 |FFC8FF| 16 00 | 22 | unknown; always the same }}<br />
{{OBDtr| 0x092 | int8 |FFC800| 00 | 0 | used at runtime only: if one sound pointers have been set }}<br />
{{OBDtr| 0x093 | char[1] |C800C8| DE | dead | unused; always the same }}<br />
{{OBDtr| 0x094 | float |C87C64| 00 00 00 3F | 0.500000 | unknown; always the same (sound volume?) }}<br />
{{OBDtr2|0x098 | char[32] |B0C3D4| konoko_hurt_light | hurt light sound (reference to 08121-konoko_hurt_light.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium | hurt medium sound (reference to 08123-konoko_hurt_medium.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy | hurt heavy sound (reference to 08119-konoko_hurt_heavy.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death | death sound (reference to 08115-konoko_death.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr| 0x118 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt light sound }}<br />
{{OBDtr| 0x11C | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt medium sound }}<br />
{{OBDtr| 0x120 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt heavy sound }}<br />
{{OBDtr| 0x124 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to death sound }}<br />
|}<br />
<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x128 | bitsets |E7CEA5| 17 00 00 00 | 23 | general AI option bitset collection ; see below }}<br />
{{OBDtr| 0x12C | float |FFDDDD| 00 00 80 3F | 1.000000 | AI rotation speed factor }}<br />
{{OBDtr| 0x130 | int16 |64AAAA| 06 00 | 6 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x132 | int16 |64AAAA| 18 00 | 24 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x134 | int16 |EBEBEB| 0F 00 | 15 | minimal realize firingspread time; (???number of frames???time in miliseconds???) after which AI realizes that it is in the firing spread (and it starts dodging) }}<br />
{{OBDtr| 0x136 | int16 |EBEBEB| 00 00 | 0 | maximal realize firingspread time; (???number of frames???time in miliseconds???) }}<br />
|}<br />
<br />
<br />
;AI rotation speed factor<br />
:reference rotation speed is about 1 turn (360&#65533;) per second<br />
:the setting is only effective if the AI is in control<br />
:so it's a bit like the AI's mouse sensitivity :)<br />
<br />
<br />
;General AI options bitset<br />
:allows or disables some parts of the AI behavior<br />
*NONE - startle anim is enabled, rest is disabled<br />
*0x01 - startle anim disabled<br />
*0x02 - firingspread/projectile dodge enabled for melee<br />
*0x04 - requires 0x02; firingspread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging<br />
*0x08 - requires 0x02, overrides 0x04 if both are set; firingspread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter<br />
*0x10 - bit not used<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x138 | float |8C8CCC| 00 00 80 3F | 1.000000 | minimal firingspread dodge amount; IMO similar to maneouvre variable, it tells AI how long it should perform dodging/hiding in response to some time spent inside firing spread (so setting this very high means that once enemy starts dodging/hiding, he will perform it even after firing spread disappears) }}<br />
{{OBDtr| 0x13C | float |8C8CCC| 00 00 80 3F | 1.000000 | maximal firingspread dodge amount; IMO similar to maneouvre variable }}<br />
{{OBDtr| 0x140 | float |8C8CCC| 00 00 00 3F | 0.500000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x144 | float |8C8CCC| 00 00 C8 41 | 25.000000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x148 | float |8C8CCC| 00 00 80 3F | 1.000000 | unknown; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x14C | int32 |FF00C8| 00 00 00 00 | 0 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x150 | int32 |FF00C8| 05 00 00 00 | 5 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x154 | int32 |FF00C8| 0F 00 00 00 | 15 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x158 | int32 |FF00C8| 3C 00 00 00 | 60 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtrBK|1=First of 13 elements (grey outline) }}<br />
{{OBDtr| 0x15C | float |F0F096| 00 00 00 00 | 0.000000 | recoil compensation amount (0.0 <nowiki>= min, 1.0 =</nowiki> max) }}<br />
{{OBDtr| 0x160 | float |F0F096| 00 00 00 00 | 0.000000 | best aiming angle in radians }}<br />
{{OBDtr| 0x164 | float |F0F096| 00 00 00 00 | 0.000000 | shot grouping error }}<br />
{{OBDtr| 0x168 | float |F0F096| 00 00 80 3F | 1.000000 | shot grouping decay }}<br />
{{OBDtr| 0x16C | float |F0F096| 00 00 80 3F | 1.000000 | shooting inaccuracy multiplier }}<br />
{{OBDtr| 0x170 | int16 |00C864| 00 00 | 0 | minimum delay between shots in frames }}<br />
{{OBDtr| 0x172 | int16 |00C864| 00 00 | 0 | maximum delay between shots in frames }}<br />
|}<br />
<br />
<br />
;SHOOTING SKILLS<br />
These can be reviewed with e.g. '''ai2_skill_select konoko_generic w1_tap''' and then either '''ai2_skill_show''' (prints to console) or '''ai2_skill_save''' (prints to file)<br />
;Fields<br />
:recoil compensation amount, between 0 and 1 (float)<br />
:best aiming angle, in radians (float)<br />
:shot grouping error (float)<br />
:shot grouping decay (float)<br />
:shooting inaccuracy multiplier (float)<br />
:minimum delay between shots, in frames (short)<br />
:maximum delay between shots, in frames (short)<br />
The first weapon (weapon 0) is not in the game anymore, whatever that was. Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's ball, except '''w10_sni''' is still available) ('''w12_ba2''' and '''w11_ba1''' are a bit mixed up : the beam is made of '''w12_ba2''' particles, and the grenade is a '''w11_ba1''' particle...)<br />
<br />
See screenshot for the raw hex (example is '''konoko_generic''' from '''level3_Final''')<br />
{{Table|width=""|align="left"}}<br />
|-BGCOLOR="#E9E9E9" ALIGN=CENTER<br />
!Weapon ||Offset ||recoil||bestangle||error||decay||inaccuracy||delays<br />
|-ALIGN=CENTER <br />
|'''w0_sec''' ||0x15C/0x173|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w1_tap''' ||0x174/0x18B|| 0.0 || 0.000000|| 0.40|| 0.4 || 0.0 || 30 - 45<br />
|-ALIGN=CENTER <br />
|'''w2_sap''' ||0x18C/0x193|| 0.3 || 0.013962|| 0.13|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w3_phr''' ||0x194/0x20B|| 0.3 || 0.010472|| 0.05|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w4_psm''' ||0x20C/0x213|| 0.3 || 0.015707|| 0.03|| 0.2 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w5_sbg''' ||0x214/0x22B|| 0.3 || 0.001745|| 0.00|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w6_vdg''' ||0x22C/0x233|| 0.3 || 0.001745|| 0.13|| 0.9 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w7_scc''' ||0x234/0x24B|| 0.3 || 0.001745|| 0.05|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w8_mbo''' ||0x24C/0x253|| 0.3 || 0.005236|| 0.01|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w9_scr''' ||0x254/0x26B|| 0.3 || 0.010472|| 0.04|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w10_sni'''||0x26C/0x273|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w11_ba1'''||0x274/0x28B|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w12_ba2'''||0x28B/0x293|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|}<br />
<br clear=all><br />
<br />
<br />
[[image:oncc_m.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x294 | int32 |00C8FF| 5A 00 00 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x298 | int32 |00C8FF| F0 00 00 00 | 240 | unknown; always the same }}<br />
{{OBDtr| 0x29C | int32 |00C8FF| B4 00 00 00 | 180 | unknown; always the same }}<br />
{{OBDtr| 0x2A0 | int32 |00C8FF| 28 00 00 00 | 40 | taunt chance (40%) }}<br />
{{OBDtr| 0x2A4 | int32 |00C8FF| 37 00 00 00 | 55 | go for gun chance (55%); determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command }}<br />
{{OBDtr| 0x2A8 | int32 |00C8FF| 3C 00 00 00 | 60 | running pickup chance (60%); this value is possibility of AI running weapon pickup (acrobatics, slides) instead of normal "stop->pickup";this is calculated AFTER engine decides that AI should run for weapon }}<br />
{{OBDtr| 0x2AC | int16 |C80040| 00 00 | 0 | combat profile ID; for example *0D* is for Mutant Muro }}<br />
{{OBDtr| 0x2AE | int16 |C80040| 16 00 | 22 | melee profile ID }}<br />
{{OBDtr| 0x2B0 | int8 |FFCD96| 64 | 100 | "taunt" sound probability (always) }}<br />
{{OBDtr| 0x2B1 | int8 |FFCD96| 00 | 0 | "alert" sound probability (never) }}<br />
{{OBDtr| 0x2B2 | int8 |FFCD96| 00 | 0 | "startle" sound probability (never) }}<br />
{{OBDtr| 0x2B3 | int8 |FFCD96| 00 | 0 | "checkbody" sound probability (never) }}<br />
{{OBDtr| 0x2B4 | int8 |FFCD96| 00 | 0 | "pursue" sound probability (never) }}<br />
{{OBDtr| 0x2B5 | int8 |FFCD96| 00 | 0 | "cower" sound probability (never) }}<br />
{{OBDtr| 0x2B6 | int8 |FFCD96| 64 | 100 | "superpunch" probability (always) }}<br />
{{OBDtr| 0x2B7 | int8 |FFCD96| 64 | 100 | "superkick" probability (always) }}<br />
{{OBDtr| 0x2B8 | int8 |FFCD96| 00 | 0 | "super3" sound probability (never) }}<br />
{{OBDtr| 0x2B9 | int8 |FFCD96| 00 | 0 | "super4" sound probability (never) }}<br />
{{OBDtr| 0x2BA | int16 |C8C864| 00 00 | 0 | probably a blank filler (always the same) }}<br />
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko | "taunt" sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x2DC | char[32] |0096C8| unused | "alert" sound }}<br />
{{OBDtr2|0x2FC | char[32] |0096C8| unused | "startle" sound }}<br />
{{OBDtr2|0x31C | char[32] |0096C8| unused | "checkbody" sound }}<br />
{{OBDtr2|0x33C | char[32] |0096C8| unused | "pursue" sound }}<br />
{{OBDtr2|0x35C | char[32] |0096C8| unused | "cower" sound }}<br />
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko | "superpunch" sound (reference to 08110-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x39C | char[32] |0096C8| c18_79_15konoko | "superkick" sound (reference to 08112-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound (only the superninja uses this slot) }}<br />
{{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound (never used in Oni) }}<br />
{{OBDtr| 0x3FC | float |FF80C0| 00 80 ED 43 | 475.000000 | central vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki>1* }}<br />
{{OBDtr| 0x400 | float |FF80C0| 00 00 16 43 | 150.000000 | peripheral vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki> 1* }}<br />
{{OBDtr| 0x404 | float |FF80C0| 7D 1B 44 3F | 0.766044 | horizontal angle between two couples of "eye-rays" (one couple is left, one if right eye); works for both vision fields }}<br />
{{OBDtr| 0x408 | float |FF80C0| F3 B3 51 3F | 0.819152 | vision field curve for central vision field; vision field looks like something between cone and cylinder; this value affect central angle of that; the higher this value is, the more is this field wrapped in order to achieve shaper angle; when set lower, vision field unwraps totally and it looks like radar antenna, attached to a character by two couples of straight strings(one couple left, one right) }}<br />
{{OBDtr| 0x40C | float |FF80C0| E8 D5 12 3F | 0.573576 | vertical angle between eye-rays in one couple; this is for central vision field }}<br />
{{OBDtr| 0x410 | float |FF80C0| D5 D0 31 3E | 0.173648 | vision field curve for peripheral vision field }}<br />
{{OBDtr| 0x414 | float |FF80C0| 6B 61 D8 BE | 0.422618 | vertical angle between eye-rays in one couple; this is for peripheral vision field }}<br />
{{OBDtr| 0x418 | int32 |D0C0AF| B4 00 00 00 | 180 | hostilethreat definite timer; how long will AI know exactly where its enemy is even if it can't see him with central vision-field; AI attacks him; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x41C | int32 |D0C0AF| 84 03 00 00 | 900 | hostilethreat strong timer; how long will AI remain in strong feeling that there is the enemy, but will not attack him but investigate; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x420 | int32 |D0C0AF| 10 0E 00 00 | 3600 | hostilethreat weak timer; how long will AI remain in weak feeling of an enemy, just looking around aimlessly (Glance pursue mode); can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x424 | int32 |D0C0AF| 10 0E 00 00 | 3600 | friendlythreat definite timer; how long will AI know exactly where its ally (Syndicate saw Syndicate for example) is even if it can't see him with central vision-field; AI simply knows there is someone else nearby; maybe has further possibilities; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x428 | int32 |D0C0AF| 50 46 00 00 | 18000 | friendlythreat strong timer; how long will AI remain in strong feeling that there is someone else, but will not try to find him or look at him; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x42C | int32 |D0C0AF| A0 8C 00 00 | 36000 | friendlythreat weak timer; how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x430 | float |EEDDFF| 00 00 80 3F | 1.000000 | earshot radius; defines size of the sound-collision sphere around AI }}<br />
{{OBDtr| 0x434 | link |C5FF8A| 01 FB 03 00 | 1019 | link to 01019-konoko.[[OBD:ONCV|ONCV]]; defines variants and upgrades }}<br />
{{OBDtr| 0x438 | link |C5FF8A| 01 F9 03 00 | 1017 | link to [[OBD:ONCP|01017-.ONCP]]; lists the particles available for this character (trails, flashes, etc) }}<br />
{{OBDtr| 0x43C | link |C5FF8A| 01 FA 03 00 | 1018 | link to [[OBD:ONIA|01018-.ONIA]]; lists the special impact sounds (used for special combat moves) }}<br />
{{OBDtr| 0x440 | int8 |C5FF8A| 00 | unused | runtime only }}<br />
{{OBDtr| 0x441 | int8 |C5FF8A| 00 | unused | padding }}<br />
{{OBDtr| 0x442 | int16 |C5FF8A| 00 00 | unused | runtime only }}<br />
{{OBDtr2|0x444 | char[16] |C0C0C0| Light | modifier; either hardcoded or defunct (only visible in pm_mod_type.WMM_, level 0)<br />
edit: WMDD says: Effects found for Impact x on Material y with Modifier: pm_mod_types }}<br />
{{OBDtrBK|1=First of 15 impact elements. }}<br />
{{OBDtr2|0x454 | char[128] |FF0080| Footstep_Walk | walk impact (reference to 04124-Footstep_Walk.[[OBD:Impt|Impt]] of level 0); always the same; without the impacts you can't hear the steps of a character }}<br />
{{OBDtr| 0x4D4 | int16 |FF0080| FF FF | -1 | set at runtime to the value stored at 0x08 in [[OBD:Impt|Impt]] }}<br />
|}<br />
<br />
<br />
[[image:oncc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0xBF2 | int16 |FFFFA6| 00 00 | 0 | unknown; always the same; maybe only a filler }} <br />
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused | special death particle; only the mad bomber use it }} <br />
{{OBDtr| 0xC34 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC38 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC3C | link |0000BF| 01 E6 03 00 | 998 | link to [[OBD:TRBS|00998-konoko_body_high.TRBS]] }}<br />
{{OBDtr| 0xC40 | link |0000BF| 01 E7 03 00 | 999 | link to [[OBD:TRMA|00999-konoko002_high_texture_generic.TRMA]] }}<br />
{{OBDtr| 0xC44 | link |0000BF| 01 E8 03 00 | 1000 | link to [[OBD:CBPM|01000-.CBPM]] }}<br />
{{OBDtr| 0xC48 | link |0000BF| 01 EC 03 00 | 1004 | link to [[OBD:CBPI|01004-.CBPI]] }}<br />
{{OBDtr| 0xC4C | int32 |804040| 2C 01 00 00 | 300 | fight mode timer in 1/60 seconds }} <br />
{{OBDtr| 0xC50 | int32 |804040| 30 75 00 00 | 30000 | first idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC54 | int32 |804040| 30 75 00 00 | 30000 | second idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC58 | int32 |804040| C8 00 00 00 | 200 | basic health of the character model; extra health information for every unique character are stored in the [[OBD:BINA/OBJC/CHAR|Character.BINA]] file}} <br />
{{OBDtr| 0xC5C | int32 |804040| 48 00 00 00 | 72 | feetBits (these bits mark the characters feet)<br />
}} <br />
{{OBDtr| 0xC60 | float |FF22FF| 00 00 80 3F | 1.000000 | minimal body size factor }} <br />
{{OBDtr| 0xC64 | float |FF22FF| 00 00 80 3F | 1.000000 | maximal body size factor }} <br />
{{OBDtrBK| the following 7 float values corespond to damage types (see the [[OBD:BINA/PAR3|PAR3]] page for the 7 possible types of damage) }}<br />
{{OBDtr| 0xC68 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC6C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC70 | float |FF22FF| 00 00 00 3F | 0.500000 | stun timer; specifies how long should be this char stunned when hit with w6_vdg; the longest time possible to be stunned is when this byte is zero. Then this ONCC is stunned for 200 frames (30 frames for initial stagger + the rest of the frames is stun animation). The shortest time is for 1.000000 (no stagger/stun at all) }} <br />
{{OBDtr| 0xC74 | float |FF22FF| 00 00 80 3E | 0.250000 | unknown }} <br />
{{OBDtr| 0xC78 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC7C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC80 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC84 | float |FF22FF| 00 00 00 3F | 0.500000 | BossShield Protect Amount (testme) }}<br />
{{OBDtr| 0xC88 | link |808080| 01 F6 03 00 | 1014 | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]] }} <br />
{{OBDtr| 0xC8C | link |808080| 01 F6 03 00 | 1015 | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }} <br />
{{OBDtr| 0xC90 | int16 |FFAA82| 1E 00 | 30 | AI Rate of Fire (testme) }} <br />
{{OBDtr| 0xC92 | int16 |FFAA82| 00 00 | 0 | time between death and deletion, in frames (about 3 seconds for mad bomber) }} <br />
{{OBDtr| 0xC94 | bitset |00D900| 00 | 0 | TRSC bitset; see below }} <br />
{{OBDtr| 0xC95 | int8 |00D900| 01 | 1 | when set to 1 indicates that character has daodan powers (character does more damage in overpower mode)}} <br />
{{OBDtr| 0xC96 | int8 |00D900| 00 | 0 | when set to 1 indicates that character has supershield<br />
* is visible as red shield when overpowered<br />
* needs daodan flag above and 51% overpower to be enabled; chenille cheat works too<br />
* now it prevents damage from weapon fire and melee (exception are throws)<br />
* received (melee) hits cause not blue block flashes but orange flares (see [http://paradox.oni2.net/Bilder/blocked_attacks_on_51percent_overpower_plus_daodan-flag_plus_supershield.png HERE])<br />
}} <br />
{{OBDtr| 0xC97 | int8 |00D900| 00 | 0 | when set to 1, generically turns on '''canttouchthis''' cheat for this ONCC (used by MutantMuro.ONCC }} <br />
{{OBDtr| 0xC98 | char[8] |CACAFF| AD DE | dead | unused }} <br />
|}<br />
<br />
<br />
;Body size factor<br />
The body size of a model will be scaled uniformly by a random coefficient that falls in the range defined with 0xC60 and 0xC64. This is apparently a provision for increasing the variety of appearances in classes like TCTF soldiers; unique characters like Konoko get a range of 1.0 to 1.0. The basis or seed for the randomness is apparently the time and/or order of spawning of that character, and therefore the "random" size of the character can be reproduced consistently as long as the execution of the code is the same each time. To illustrate, find the following code in IGMD/manplant/manplant_cutscene.bsl:<br />
<gallery align="right"><br />
File:ONCC_body_size_factor-original.jpg|Sample 1<br />
File:ONCC_body_size_factor-spawn_order_change.jpg|Sample 2<br />
File:ONCC_body_size_factor-sleep_insertion.jpg|Sample 3<br />
</gallery><br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
When you play the opening cutscene for Chapter 2, Agent Thorson should appear as he does in the first pic in the table to the right. Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2<br />
<br />
ai2_spawn Recep</tt><br />
<br />
and he'll appear as in the middle pic. Look out, he's a giant! Even the receptionist is bigger! Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
sleep 15<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
and you'll also get a deluxe-sized Thorson (right pic), though not as big as before. In complex scripts, body size quickly becomes truly random-seeming, but as you can see, in situations where the spawn function is called near the beginning of the code, before there is an opportunity for too much forking and branching, the results are quite reproducible.<br />
<br />
;TRSC bitset<br />
:determines whether character is left-hander or right-hander (weapon is attached to left or right fist bone) Must be consistent with TRSC or glitches appear. Possibilities are:<br />
:NONE - Character is right-hander with both pistols and rifles<br />
:0x01 - Character is left-hander with both pistols and rifles<br />
:0x02 - Character is left-hander with pistols but "right-hander" with rifles (however, animations for rifles are treated as left-handed)<br />
{{OBD_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONCC&diff=17407OBD:ONCC2010-08-29T00:40:23Z<p>Gumby: </p>
<hr />
<div>{{OBD_File_Header | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character | align=center}}<br />
<br />
<br />
[[image:oncc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 DF 03 00 | 991 | 00991-konoko_generic.ONCC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 06 | 0 | level 3 }}<br />
{{OBDtr| 0x008 | float |00FF00| CD CC 0C 3F | 0.550000 | downwards velocity? (unknown, always 0.55) }}<br />
{{OBDtr| 0x00C | float |00FF00| 8F C2 75 3D | 0.060000 | downward gravity acceleration }}<br />
{{OBDtr| 0x010 | float |00FF00| CD CC 8C 3F | 1.100000 | starting velocity for a simple (tap) JUMP }}<br />
{{OBDtr| 0x014 | float |00FF00| 00 00 80 C0 | -4.000000 | limit velocity for jumping and gravity flight }}<br />
{{OBDtr| 0x018 | float |00FF00| 8F C2 F5 3C | 0.030000 | upward acceleration (jetpack) if you hold JUMP }}<br />
{{OBDtr| 0x01C | int16 |00FFFF| 07 00 | 7 | gravity timer? (unknown, always 7) }}<br />
{{OBDtr| 0x01E | int16 |00FFFF| 14 00 | 20 | jetpack timer; time during which you can use the jetpack }}<br />
{{OBDtr| 0x020 | float |FF00FF| 00 00 34 42 | 45.000000 | maximal falling height without damage }}<br />
{{OBDtr| 0x024 | float |FF00FF| 00 00 07 43 | 135.000000 | maximal falling height with damage }}<br />
|}<br />
<br />
<br />
;Units:times are in frames<br />
:heights are in world units<br />
:velocities are in world units per frames<br />
:accelerations are in world units per frames squared<br />
;Downwards velocity: could correspond to the steady push experienced when neither jumping nor falling<br />
:would be roughly equivalent to the starting velocity of a fall<br />
:although the value .55 seems right, the "sinking" seems to be hardcoded now<br />
;Gravity timer:Seems to be hardcoded now (could be the time until gravity switches on)<br />
;Jetpack timer:You can press JUMP multiple times during the time window (quite fun!)<br />
;Falling height: let FH1 be the height at 0x20<br />
:let FH2 be the height at 0x24<br />
:let BH be the base health of the character<br />
:let FH be the actual falling height<br />
:then, if FH > FH2, the character is killed<br />
:if FH < FH1, the character takes no damage<br />
:if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x028 | link |FF8000| 01 F8 03 00 | 1016 | link to 01016-shadow1.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x02C | float |FF8000| 00 00 40 41 | 12.000000 | height where the shadow fades out completely }}<br />
{{OBDtr| 0x030 | float |FF8000| 00 00 00 41 | 8.000000 | height where the diameter of the shadow decreases and the shadow fades out half }}<br />
{{OBDtr| 0x034 | float |FF8000| 00 00 C0 40 | 6.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x038 | float |FF8000| 00 00 90 40 | 4.500000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x03C | float |FF8000| 00 00 40 40 | 3.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x040 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the first part of a jump }}<br />
{{OBDtr| 0x042 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the second part of a jump }}<br />
|}<br />
<br />
;Jump Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x044 | float |FF0080| 00 00 C8 41 | 25.000000 | jumpDistance? ; always the same }}<br />
{{OBDtr| 0x048 | int8 |FFC8C8| 16 | 22 | jumpHeight? ; always the same }}<br />
{{OBDtr| 0x049 | int8 |FFC8C8| 06 | 6 | jumpDistanceSquares?!?! ; always the same }}<br />
{{OBDtr| 0x04A | char[2] |FFC8C8| AD DE | dead | pad }}<br />
|}<br />
<br />
;Cover Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x04C | float |FFFFC8| 00 00 20 42 | 40.000000 | rayIncrement; always the same }}<br />
{{OBDtr| 0x050 | float |FFFFC8| 00 00 96 43 | 300.000000 | rayMax; always the same }}<br />
{{OBDtr| 0x054 | float |FFFFC8| 35 FA 8E 3C | 0.017453 | rayAngle; always the same (0.017453 <nowiki>=</nowiki> PI/180) }}<br />
{{OBDtr| 0x058 | float |FFFFC8| DB 0F C9 3F | 1.570796 | rayAngleMax; always the same (1.57 <nowiki>=</nowiki> PI/2) }}<br />
|}<br />
<br />
;Autofreeze Constants (unused?)<br />
<br />
{{Table}}<br />
{{OBDtr| 0x05C | float |FFFFC8| 00 00 A0 40 | 5.000000 | distance_xz; always the same }}<br />
{{OBDtr| 0x060 | float |FFFFC8| 00 00 80 3F | 1.000000 | distance_y; always the same }}<br />
|}<br />
<br />
;Inventory Constants (unused?)<br />
<br />
{{Table}}<br />
{{OBDtr| 0x064 | int16 |C8FFC8| 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint }}<br />
{{OBDtr| 0x066 | char[2] |C8FFC8| AD DE | dead | unused }}<br />
|}<br />
<br />
;LOD Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x068 | float |C8FFFF| 00 10 3D 48 |193600.000000| unknown; always the same; this is 440 squared }}<br />
{{OBDtr| 0x06C | float |C8FFFF| 00 10 3D 47 | 48400.000000| unknown; always the same; this is 220 squared }}<br />
{{OBDtr| 0x070 | float |C8FFFF| 00 10 3D 46 | 12100.000000| unknown; always the same; this is 110 squared }}<br />
{{OBDtr| 0x074 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
{{OBDtr| 0x078 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
|}<br />
<br />
<br />
;Hurt sound paramters<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x07C | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x07E | int16 |FFC8FF| 5A 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x080 | int16 |FFC8FF| 0F 00 | 15 | unknown; always the same }}<br />
{{OBDtr| 0x082 | int16 |FFC8FF| 78 00 | 120 | unknown; always the same }}<br />
{{OBDtr| 0x084 | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x086 | int16 |FFC8FF| 01 00 | 1 | unknown; always the same }}<br />
{{OBDtr| 0x088 | int16 |FFC8FF| 02 00 | 2 | unknown; always the same }}<br />
{{OBDtr| 0x08A | int16 |FFC8FF| 64 00 | 100 | unknown; always the same }}<br />
{{OBDtr| 0x08C | int16 |FFC8FF| 0A 00 | 10 | unknown; always the same }}<br />
{{OBDtr| 0x08E | int16 |FFC8FF| 0C 00 | 12 | unknown; always the same }}<br />
{{OBDtr| 0x090 | int16 |FFC8FF| 16 00 | 22 | unknown; always the same }}<br />
{{OBDtr| 0x092 | int8 |FFC800| 00 | 0 | used at runtime only: if one sound pointers have been set }}<br />
{{OBDtr| 0x093 | char[1] |C800C8| DE | dead | unused; always the same }}<br />
{{OBDtr| 0x094 | float |C87C64| 00 00 00 3F | 0.500000 | unknown; always the same (sound volume?) }}<br />
{{OBDtr2|0x098 | char[32] |B0C3D4| konoko_hurt_light | hurt light sound (reference to 08121-konoko_hurt_light.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium | hurt medium sound (reference to 08123-konoko_hurt_medium.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy | hurt heavy sound (reference to 08119-konoko_hurt_heavy.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death | death sound (reference to 08115-konoko_death.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr| 0x118 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt light sound }}<br />
{{OBDtr| 0x11C | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt medium sound }}<br />
{{OBDtr| 0x120 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt heavy sound }}<br />
{{OBDtr| 0x124 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to death sound }}<br />
|}<br />
<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x128 | bitsets |E7CEA5| 17 00 00 00 | 23 | general AI option bitset collection ; see below }}<br />
{{OBDtr| 0x12C | float |FFDDDD| 00 00 80 3F | 1.000000 | AI rotation speed factor }}<br />
{{OBDtr| 0x130 | int16 |64AAAA| 06 00 | 6 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x132 | int16 |64AAAA| 18 00 | 24 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x134 | int16 |EBEBEB| 0F 00 | 15 | minimal realize firingspread time; (???number of frames???time in miliseconds???) after which AI realizes that it is in the firing spread (and it starts dodging) }}<br />
{{OBDtr| 0x136 | int16 |EBEBEB| 00 00 | 0 | maximal realize firingspread time; (???number of frames???time in miliseconds???) }}<br />
|}<br />
<br />
<br />
;AI rotation speed factor<br />
:reference rotation speed is about 1 turn (360&#65533;) per second<br />
:the setting is only effective if the AI is in control<br />
:so it's a bit like the AI's mouse sensitivity :)<br />
<br />
<br />
;General AI options bitset<br />
:allows or disables some parts of the AI behavior<br />
*NONE - startle anim is enabled, rest is disabled<br />
*0x01 - startle anim disabled<br />
*0x02 - firingspread/projectile dodge enabled for melee<br />
*0x04 - requires 0x02; firingspread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging<br />
*0x08 - requires 0x02, overrides 0x04 if both are set; firingspread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter<br />
*0x10 - bit not used<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x138 | float |8C8CCC| 00 00 80 3F | 1.000000 | minimal firingspread dodge amount; IMO similar to maneouvre variable, it tells AI how long it should perform dodging/hiding in response to some time spent inside firing spread (so setting this very high means that once enemy starts dodging/hiding, he will perform it even after firing spread disappears) }}<br />
{{OBDtr| 0x13C | float |8C8CCC| 00 00 80 3F | 1.000000 | maximal firingspread dodge amount; IMO similar to maneouvre variable }}<br />
{{OBDtr| 0x140 | float |8C8CCC| 00 00 00 3F | 0.500000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x144 | float |8C8CCC| 00 00 C8 41 | 25.000000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x148 | float |8C8CCC| 00 00 80 3F | 1.000000 | unknown; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x14C | int32 |FF00C8| 00 00 00 00 | 0 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x150 | int32 |FF00C8| 05 00 00 00 | 5 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x154 | int32 |FF00C8| 0F 00 00 00 | 15 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x158 | int32 |FF00C8| 3C 00 00 00 | 60 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtrBK|1=First of 13 elements (grey outline) }}<br />
{{OBDtr| 0x15C | float |F0F096| 00 00 00 00 | 0.000000 | recoil compensation amount (0.0 <nowiki>= min, 1.0 =</nowiki> max) }}<br />
{{OBDtr| 0x160 | float |F0F096| 00 00 00 00 | 0.000000 | best aiming angle in radians }}<br />
{{OBDtr| 0x164 | float |F0F096| 00 00 00 00 | 0.000000 | shot grouping error }}<br />
{{OBDtr| 0x168 | float |F0F096| 00 00 80 3F | 1.000000 | shot grouping decay }}<br />
{{OBDtr| 0x16C | float |F0F096| 00 00 80 3F | 1.000000 | shooting inaccuracy multiplier }}<br />
{{OBDtr| 0x170 | int16 |00C864| 00 00 | 0 | minimum delay between shots in frames }}<br />
{{OBDtr| 0x172 | int16 |00C864| 00 00 | 0 | maximum delay between shots in frames }}<br />
|}<br />
<br />
<br />
;SHOOTING SKILLS<br />
These can be reviewed with e.g. '''ai2_skill_select konoko_generic w1_tap''' and then either '''ai2_skill_show''' (prints to console) or '''ai2_skill_save''' (prints to file)<br />
;Fields<br />
:recoil compensation amount, between 0 and 1 (float)<br />
:best aiming angle, in radians (float)<br />
:shot grouping error (float)<br />
:shot grouping decay (float)<br />
:shooting inaccuracy multiplier (float)<br />
:minimum delay between shots, in frames (short)<br />
:maximum delay between shots, in frames (short)<br />
The first weapon (weapon 0) is not in the game anymore, whatever that was. Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's ball, except '''w10_sni''' is still available) ('''w12_ba2''' and '''w11_ba1''' are a bit mixed up : the beam is made of '''w12_ba2''' particles, and the grenade is a '''w11_ba1''' particle...)<br />
<br />
See screenshot for the raw hex (example is '''konoko_generic''' from '''level3_Final''')<br />
{{Table|width=""|align="left"}}<br />
|-BGCOLOR="#E9E9E9" ALIGN=CENTER<br />
!Weapon ||Offset ||recoil||bestangle||error||decay||inaccuracy||delays<br />
|-ALIGN=CENTER <br />
|'''w0_sec''' ||0x15C/0x173|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w1_tap''' ||0x174/0x18B|| 0.0 || 0.000000|| 0.40|| 0.4 || 0.0 || 30 - 45<br />
|-ALIGN=CENTER <br />
|'''w2_sap''' ||0x18C/0x193|| 0.3 || 0.013962|| 0.13|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w3_phr''' ||0x194/0x20B|| 0.3 || 0.010472|| 0.05|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w4_psm''' ||0x20C/0x213|| 0.3 || 0.015707|| 0.03|| 0.2 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w5_sbg''' ||0x214/0x22B|| 0.3 || 0.001745|| 0.00|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w6_vdg''' ||0x22C/0x233|| 0.3 || 0.001745|| 0.13|| 0.9 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w7_scc''' ||0x234/0x24B|| 0.3 || 0.001745|| 0.05|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w8_mbo''' ||0x24C/0x253|| 0.3 || 0.005236|| 0.01|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w9_scr''' ||0x254/0x26B|| 0.3 || 0.010472|| 0.04|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w10_sni'''||0x26C/0x273|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w11_ba1'''||0x274/0x28B|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w12_ba2'''||0x28B/0x293|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|}<br />
<br clear=all><br />
<br />
<br />
[[image:oncc_m.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x294 | int32 |00C8FF| 5A 00 00 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x298 | int32 |00C8FF| F0 00 00 00 | 240 | unknown; always the same }}<br />
{{OBDtr| 0x29C | int32 |00C8FF| B4 00 00 00 | 180 | unknown; always the same }}<br />
{{OBDtr| 0x2A0 | int32 |00C8FF| 28 00 00 00 | 40 | taunt chance (40%) }}<br />
{{OBDtr| 0x2A4 | int32 |00C8FF| 37 00 00 00 | 55 | go for gun chance (55%); determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command }}<br />
{{OBDtr| 0x2A8 | int32 |00C8FF| 3C 00 00 00 | 60 | running pickup chance (60%); this value is possibility of AI running weapon pickup (acrobatics, slides) instead of normal "stop->pickup";this is calculated AFTER engine decides that AI should run for weapon }}<br />
{{OBDtr| 0x2AC | int16 |C80040| 00 00 | 0 | combat profile ID; for example *0D* is for Mutant Muro }}<br />
{{OBDtr| 0x2AE | int16 |C80040| 16 00 | 22 | melee profile ID }}<br />
{{OBDtr| 0x2B0 | int8 |FFCD96| 64 | 100 | "taunt" sound probability (always) }}<br />
{{OBDtr| 0x2B1 | int8 |FFCD96| 00 | 0 | "alert" sound probability (never) }}<br />
{{OBDtr| 0x2B2 | int8 |FFCD96| 00 | 0 | "startle" sound probability (never) }}<br />
{{OBDtr| 0x2B3 | int8 |FFCD96| 00 | 0 | "checkbody" sound probability (never) }}<br />
{{OBDtr| 0x2B4 | int8 |FFCD96| 00 | 0 | "pursue" sound probability (never) }}<br />
{{OBDtr| 0x2B5 | int8 |FFCD96| 00 | 0 | "cower" sound probability (never) }}<br />
{{OBDtr| 0x2B6 | int8 |FFCD96| 64 | 100 | "superpunch" probability (always) }}<br />
{{OBDtr| 0x2B7 | int8 |FFCD96| 64 | 100 | "superkick" probability (always) }}<br />
{{OBDtr| 0x2B8 | int8 |FFCD96| 00 | 0 | "super3" sound probability (never) }}<br />
{{OBDtr| 0x2B9 | int8 |FFCD96| 00 | 0 | "super4" sound probability (never) }}<br />
{{OBDtr| 0x2BA | int16 |C8C864| 00 00 | 0 | probably a blank filler (always the same) }}<br />
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko | "taunt" sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x2DC | char[32] |0096C8| unused | "alert" sound }}<br />
{{OBDtr2|0x2FC | char[32] |0096C8| unused | "startle" sound }}<br />
{{OBDtr2|0x31C | char[32] |0096C8| unused | "checkbody" sound }}<br />
{{OBDtr2|0x33C | char[32] |0096C8| unused | "pursue" sound }}<br />
{{OBDtr2|0x35C | char[32] |0096C8| unused | "cower" sound }}<br />
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko | "superpunch" sound (reference to 08110-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x39C | char[32] |0096C8| c18_79_15konoko | "superkick" sound (reference to 08112-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound (only the superninja uses this slot) }}<br />
{{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound (never used in Oni) }}<br />
{{OBDtr| 0x3FC | float |FF80C0| 00 80 ED 43 | 475.000000 | central vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki>1* }}<br />
{{OBDtr| 0x400 | float |FF80C0| 00 00 16 43 | 150.000000 | peripheral vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki> 1* }}<br />
{{OBDtr| 0x404 | float |FF80C0| 7D 1B 44 3F | 0.766044 | horizontal angle between two couples of "eye-rays" (one couple is left, one if right eye); works for both vision fields }}<br />
{{OBDtr| 0x408 | float |FF80C0| F3 B3 51 3F | 0.819152 | vision field curve for central vision field; vision field looks like something between cone and cylinder; this value affect central angle of that; the higher this value is, the more is this field wrapped in order to achieve shaper angle; when set lower, vision field unwraps totally and it looks like radar antenna, attached to a character by two couples of straight strings(one couple left, one right) }}<br />
{{OBDtr| 0x40C | float |FF80C0| E8 D5 12 3F | 0.573576 | vertical angle between eye-rays in one couple; this is for central vision field }}<br />
{{OBDtr| 0x410 | float |FF80C0| D5 D0 31 3E | 0.173648 | vision field curve for peripheral vision field }}<br />
{{OBDtr| 0x414 | float |FF80C0| 6B 61 D8 BE | 0.422618 | vertical angle between eye-rays in one couple; this is for peripheral vision field }}<br />
{{OBDtr| 0x418 | int32 |D0C0AF| B4 00 00 00 | 180 | hostilethreat definite timer; how long will AI know exactly where its enemy is even if it can't see him with central vision-field; AI attacks him; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x41C | int32 |D0C0AF| 84 03 00 00 | 900 | hostilethreat strong timer; how long will AI remain in strong feeling that there is the enemy, but will not attack him but investigate; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x420 | int32 |D0C0AF| 10 0E 00 00 | 3600 | hostilethreat weak timer; how long will AI remain in weak feeling of an enemy, just looking around aimlessly (Glance pursue mode); can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x424 | int32 |D0C0AF| 10 0E 00 00 | 3600 | friendlythreat definite timer; how long will AI know exactly where its ally (Syndicate saw Syndicate for example) is even if it can't see him with central vision-field; AI simply knows there is someone else nearby; maybe has further possibilities; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x428 | int32 |D0C0AF| 50 46 00 00 | 18000 | friendlythreat strong timer; how long will AI remain in strong feeling that there is someone else, but will not try to find him or look at him; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x42C | int32 |D0C0AF| A0 8C 00 00 | 36000 | friendlythreat weak timer; how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x430 | float |EEDDFF| 00 00 80 3F | 1.000000 | earshot radius; defines size of the sound-collision sphere around AI }}<br />
{{OBDtr| 0x434 | link |C5FF8A| 01 FB 03 00 | 1019 | link to 01019-konoko.[[OBD:ONCV|ONCV]]; defines variants and upgrades }}<br />
{{OBDtr| 0x438 | link |C5FF8A| 01 F9 03 00 | 1017 | link to [[OBD:ONCP|01017-.ONCP]]; lists the particles available for this character (trails, flashes, etc) }}<br />
{{OBDtr| 0x43C | link |C5FF8A| 01 FA 03 00 | 1018 | link to [[OBD:ONIA|01018-.ONIA]]; lists the special impact sounds (used for special combat moves) }}<br />
{{OBDtr| 0x440 | int8 |C5FF8A| 00 | unused | runtime only }}<br />
{{OBDtr| 0x441 | int8 |C5FF8A| 00 | unused | padding }}<br />
{{OBDtr| 0x442 | int16 |C5FF8A| 00 00 | unused | runtime only }}<br />
{{OBDtr2|0x444 | char[16] |C0C0C0| Light | modifier; either hardcoded or defunct (only visible in pm_mod_type.WMM_, level 0)<br />
edit: WMDD says: Effects found for Impact x on Material y with Modifier: pm_mod_types }}<br />
{{OBDtrBK|1=First of 15 impact elements. }}<br />
{{OBDtr2|0x454 | char[128] |FF0080| Footstep_Walk | walk impact (reference to 04124-Footstep_Walk.[[OBD:Impt|Impt]] of level 0); always the same; without the impacts you can't hear the steps of a character }}<br />
{{OBDtr| 0x4D4 | int16 |FF0080| FF FF | -1 | set at runtime to the value stored at 0x08 in [[OBD:Impt|Impt]] }}<br />
|}<br />
<br />
<br />
[[image:oncc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0xBF2 | int16 |FFFFA6| 00 00 | 0 | unknown; always the same; maybe only a filler }} <br />
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused | special death particle; only the mad bomber use it }} <br />
{{OBDtr| 0xC34 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC38 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC3C | link |0000BF| 01 E6 03 00 | 998 | link to [[OBD:TRBS|00998-konoko_body_high.TRBS]] }}<br />
{{OBDtr| 0xC40 | link |0000BF| 01 E7 03 00 | 999 | link to [[OBD:TRMA|00999-konoko002_high_texture_generic.TRMA]] }}<br />
{{OBDtr| 0xC44 | link |0000BF| 01 E8 03 00 | 1000 | link to [[OBD:CBPM|01000-.CBPM]] }}<br />
{{OBDtr| 0xC48 | link |0000BF| 01 EC 03 00 | 1004 | link to [[OBD:CBPI|01004-.CBPI]] }}<br />
{{OBDtr| 0xC4C | int32 |804040| 2C 01 00 00 | 300 | fight mode timer in 1/60 seconds }} <br />
{{OBDtr| 0xC50 | int32 |804040| 30 75 00 00 | 30000 | first idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC54 | int32 |804040| 30 75 00 00 | 30000 | second idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC58 | int32 |804040| C8 00 00 00 | 200 | basic health of the character model; extra health information for every unique character are stored in the [[OBD:BINA/OBJC/CHAR|Character.BINA]] file}} <br />
{{OBDtr| 0xC5C | int32 |804040| 48 00 00 00 | 72 | feetBits (these bits mark the characters feet)<br />
}} <br />
{{OBDtr| 0xC60 | float |FF22FF| 00 00 80 3F | 1.000000 | minimal body size factor }} <br />
{{OBDtr| 0xC64 | float |FF22FF| 00 00 80 3F | 1.000000 | maximal body size factor }} <br />
{{OBDtrBK| the following 7 float values corespond to damage types (see the [[OBD:BINA/PAR3|PAR3]] page for the 7 possible types of damage) }}<br />
{{OBDtr| 0xC68 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC6C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC70 | float |FF22FF| 00 00 00 3F | 0.500000 | stun timer; specifies how long should be this char stunned when hit with w6_vdg; the longest time possible to be stunned is when this byte is zero. Then this ONCC is stunned for 200 frames (30 frames for initial stagger + the rest of the frames is stun animation). The shortest time is for 1.000000 (no stagger/stun at all) }} <br />
{{OBDtr| 0xC74 | float |FF22FF| 00 00 80 3E | 0.250000 | unknown }} <br />
{{OBDtr| 0xC78 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC7C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC80 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC84 | float |FF22FF| 00 00 00 3F | 0.500000 | BossShield Protect Amount (testme) }}<br />
{{OBDtr| 0xC88 | link |808080| 01 F6 03 00 | 1014 | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]] }} <br />
{{OBDtr| 0xC8C | link |808080| 01 F6 03 00 | 1015 | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }} <br />
{{OBDtr| 0xC90 | int16 |FFAA82| 1E 00 | 30 | AI Rate of Fire (testme) }} <br />
{{OBDtr| 0xC92 | int16 |FFAA82| 00 00 | 0 | time between death and deletion, in frames (about 3 seconds for mad bomber) }} <br />
{{OBDtr| 0xC94 | bitset |00D900| 00 | 0 | TRSC bitset; see below }} <br />
{{OBDtr| 0xC95 | int8 |00D900| 01 | 1 | when set to 1 indicates that character has daodan powers (character does more damage in overpower mode)}} <br />
{{OBDtr| 0xC96 | int8 |00D900| 00 | 0 | when set to 1 indicates that character has supershield<br />
* is visible as red shield when overpowered<br />
* needs daodan flag above and 51% overpower to be enabled; chenille cheat works too<br />
* now it prevents damage from weapon fire and melee (exception are throws)<br />
* received (melee) hits cause not blue block flashes but orange flares (see [http://paradox.oni2.net/Bilder/blocked_attacks_on_51percent_overpower_plus_daodan-flag_plus_supershield.png HERE])<br />
}} <br />
{{OBDtr| 0xC97 | int8 |00D900| 00 | 0 | when set to 1, generically turns on '''canttouchthis''' cheat for this ONCC (used by MutantMuro.ONCC }} <br />
{{OBDtr| 0xC98 | char[8] |CACAFF| AD DE | dead | unused }} <br />
|}<br />
<br />
<br />
;Body size factor<br />
The body size of a model will be scaled uniformly by a random coefficient that falls in the range defined with 0xC60 and 0xC64. This is apparently a provision for increasing the variety of appearances in classes like TCTF soldiers; unique characters like Konoko get a range of 1.0 to 1.0. The basis or seed for the randomness is apparently the time and/or order of spawning of that character, and therefore the "random" size of the character can be reproduced consistently as long as the execution of the code is the same each time. To illustrate, find the following code in IGMD/manplant/manplant_cutscene.bsl:<br />
<gallery align="right"><br />
File:ONCC_body_size_factor-original.jpg|Sample 1<br />
File:ONCC_body_size_factor-spawn_order_change.jpg|Sample 2<br />
File:ONCC_body_size_factor-sleep_insertion.jpg|Sample 3<br />
</gallery><br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
When you play the opening cutscene for Chapter 2, Agent Thorson should appear as he does in the first pic in the table to the right. Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2<br />
<br />
ai2_spawn Recep</tt><br />
<br />
and he'll appear as in the middle pic. Look out, he's a giant! Even the receptionist is bigger! Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
sleep 15<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
and you'll also get a deluxe-sized Thorson (right pic), though not as big as before. In complex scripts, body size quickly becomes truly random-seeming, but as you can see, in situations where the spawn function is called near the beginning of the code, before there is an opportunity for too much forking and branching, the results are quite reproducible.<br />
<br />
;TRSC bitset<br />
:determines whether character is left-hander or right-hander (weapon is attached to left or right fist bone) Must be consistent with TRSC or glitches appear. Possibilities are:<br />
:NONE - Character is right-hander with both pistols and rifles<br />
:0x01 - Character is left-hander with both pistols and rifles<br />
:0x02 - Character is left-hander with pistols but "right-hander" with rifles (however, animations for rifles are treated as left-handed)<br />
{{OBD_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONWC&diff=17406OBD:ONWC2010-08-29T00:35:53Z<p>Gumby: </p>
<hr />
<div>{{OBD_File_Header | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level | align=center}}<br />
<br />
<br />
All ONWC files are 0 byte files. That means that Oni takes the information out of the ONWC files of level 0. Below is an example of an ONWC file of level 0. The first pic shows the beginning of this file. The second pic the end of it. <br />
<br />
<br />
Unless specified otherwise, the coordinates are relative to the weapon's mesh (x = forwards, y = left, z = up).<br />
<br />
<br />
==0x000 to 0x0D7 - Weapon main part ==<br />
<br />
<br />
[[image:onwc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 75 0E 00 | 3701 | 03701-w1_tap.ONWC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 00 | 0 | level 0 }}<br />
|}<br />
<br />
<br />
===0x008 to 0x053 - Laser sight parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x008 | float |FFC8C8| F5 A4 49 40 | 3.150693 | x-offset of laser sight origin }}<br />
{{OBDtr| 0x00C | float |FFC8C8| F4 2C A5 3B | 0.005041 | y-offset of laser sight origin }}<br />
{{OBDtr| 0x010 | float |FFC8C8| 21 4E D2 3E | 0.410752 | z-offset of laser sight origin }}<br />
{{OBDtr| 0x014 | float |FFC8C8| 23 A6 7F 3F | 0.998629 | x-component of laser sight direction }}<br />
{{OBDtr| 0x018 | float |FFC8C8| AA 6C 56 BD | -0.052349 | y-component of laser sight direction }}<br />
{{OBDtr| 0x01C | float |FFC8C8| 69 66 AA B7 | -0.000020 | z-component of laser sight direction }}<br />
{{OBDtr| 0x020 | float |FFC8C8| 00 40 9C 45 |5000.000000 | maximal length of laser sight vector }}<br />
{{OBDtr| 0x024 | color |FFFFC8| 00 00 FF FF | 0, 0, 255; 255 | laser sight color (blue, green, red); laser sight transparency }}<br />
{{OBDtr| 0x028 | link |C8FFC8| 01 94 05 00 | 1428 | crosshair texture (link to 01428-target_1A.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x02C | color |C8FFC8| FF FF FF 00 |255, 255, 255; 0| crosshair background color (blue, green, red); crosshair background transparency }}<br />
{{OBDtr| 0x030 | float |C8FFC8| CD CC 4C 3F | 0.800000 | crosshair scale factor }}<br />
{{OBDtr| 0x034 | link |C8FFFF| 01 95 05 00 | 1428 | locked crosshair texture (link to 01429-target_1B.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x038 | color |C8FFFF| FF FF FF 00 |255, 255, 255; 0| locked crosshair background color (blue, green, red); locked crosshair background transparency }}<br />
{{OBDtr| 0x03C | float |C8FFFF| CD CC 4C 3F | 0.800000 | locked crosshair scale factor }}<br />
{{OBDtr| 0x040 | link |FFC8FF| 00 00 00 00 | unused | tunnel texture (link to a [[OBD:TXMP|TXMP]]) file }}<br />
{{OBDtr| 0x044 | color |FFC8FF| FF FF FF 00 |255, 255, 255; 0| tunnel background color (blue, green, red); tunnel background transparency }}<br />
{{OBDtr| 0x048 | float |FFC8FF| 00 00 80 3F | 1.000000 | tunnel scale factor }}<br />
{{OBDtr| 0x04C | int32 |FFC800| 0F 00 00 00 | 15 | number of tunnel textures }}<br />
{{OBDtr| 0x050 | float |C800C8| 00 00 20 41 | 10.000000 | spacing of tunnel textures }}<br />
|}<br />
<br />
<br />
;Crosshair<br />
:Default crosshair appears where the laser sight hits environment, corpses, etc<br />
:Locked crosshair appears when the laser sight hits characters (including the shooter)<br />
:"Tunnel" is used by '''w8_mbo''' as a complement to the crosshair<br />
:'''w2_sap''', '''w5_sbg''', '''w7_scc''' and '''w9_scr''' use it with no crosshair<br />
<br />
<br />
===0x054 to 0x05F - Ammo meter===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x054 | link |C87C64| 01 7E 0E 00 | 3710 | link to 03710-tap_icon.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x058 | link |C87C64| 01 7F 0E 00 | 3711 | link to 03711-tap_empty.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x05C | link |C87C64| 01 80 0E 00 | 3712 | link to 03712-tap_fill.[[OBD:TXMP|TXMP]] }}<br />
|}<br />
<br />
<br />
===0x060 to 0x0D7 - Weapon parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x060 | link |C87C64| 01 76 0E 00 | 3702 | link to 03702-.M3GM }}<br />
{{OBDtr2|0x064 | char[32] |B0C3D4| w1_tap | weapon name }}<br />
{{OBDtr| 0x084 | float |E7CEA5| 00 00 80 3F | 1.000000 | weapon mouse sensitivity (applies on AI, too) }}<br />
{{OBDtr| 0x088 | float |E7CEA5| A6 92 2B 3D | 0.041888 | recoil base (e.g. for w1_tap and w2_sap) }}<br />
{{OBDtr| 0x08C | float |E7CEA5| 92 0A 86 3E | 0.261799 | recoil max }}<br />
{{OBDtr| 0x090 | float |E7CEA5| 00 00 A0 40 | 5.000000 | recoil factor }}<br />
{{OBDtr| 0x094 | float |E7CEA5| E2 A3 7B 3B | 0.003839 | recoil return speed }}<br />
{{OBDtr| 0x098 | float |E7CEA5| 88 C3 E4 3A | 0.001745 | recoil firing return speed }}<br />
{{OBDtr| 0x09C | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector X}}<br />
{{OBDtr| 0x0A0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Y}}<br />
{{OBDtr| 0x0A4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Z }}<br />
{{OBDtr| 0x0A8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector X}}<br />
{{OBDtr| 0x0AC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Y}}<br />
{{OBDtr| 0x0B0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Z}}<br />
{{OBDtr| 0x0B4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition X}}<br />
{{OBDtr| 0x0B8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Y}}<br />
{{OBDtr| 0x0BC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Z}}<br />
{{OBDtr| 0x0C0 | int16 |FFDDDD| 00 00 | 0 | freeTime ???; always zero }}<br />
{{OBDtr| 0x0C2 | int16 |FFDDDD| 95 00 | 149 | recoil animation type (149 <nowiki>=</nowiki> autopistol_recoil) }}<br />
{{OBDtr| 0x0C4 | int16 |FFDDDD| A4 00 | 164 | reload animation type (164 <nowiki>=</nowiki> reload_pistol) }}<br />
{{OBDtr| 0x0C6 | int16 |FFDDDD| 19 00 | 25 | pause after reload in 1/60 seconds }}<br />
{{OBDtr| 0x0C8 | int16 |FFDDDD| 0A 00 | 10 | amount of shots }}<br />
{{OBDtr| 0x0CA | int16 |FFDDDD| 06 00 | 6 | amount of particles }}<br />
{{OBDtr| 0x0CC | int16 |FFDDDD| 01 00 | 1 | amount of firing modes }}<br />
{{OBDtr| 0x0CE | int16 |FFDDDD| 0A 00 | 10 | pause before reload in 1/60 seconds }}<br />
{{OBDtr| 0x0D0 | int16 |FFDDDD| 04 00 | 4 | release delay; delay between the moment the trigger is released and the moment the weapon stops firing }}<br />
{{OBDtr| 0x0D2 | int16 |FFDDDD| 00 00 | 0 | padding; always zero }}<br />
{{OBDtr| 0x0D4 | int32 |FFDDDD| 30 | 0x30 C0 02 00 | weapon options; the following bits are possible (values in hex):<br />
<br />
:0x'''02''' 00 00 00 - weapon can't be holstered<br />
:0x'''04''' 00 00 00 - weapon reloads with energy cells<br />
:0x'''08''' 00 00 00 - weapon is a rifle (two-handed)<br />
:0x'''10''' 00 00 00 - recoil affects aiming<br />
:0x'''20''' 00 00 00 - sustained fire (applies only to primary fire)<br />
:0x'''40''' 00 00 00 - runtime only; do not use<br />
:0x'''80''' 00 00 00 - stun switcher; used for w6_vdg, see below<br />
<br />
:0x00 '''01''' 00 00 - knockdown switcher; used for w4_psm, see below<br />
:0x00 '''02''' 00 00 - unknown; used for w5_sbg and w11_ba1<br />
:0x00 '''04''' 00 00 - secondary fire enabled<br />
:0x00 '''08''' 00 00 - barabbas weapon; see below<br />
:0x00 '''10''' 00 00 - heavy weapon; run, jump and creep disabled<br />
:0x00 '''20''' 00 00 - auto release trigger; used for w11_ba1<br />
:0x00 '''40''' 00 00 - has release delay; see the release delay field above<br />
:0x00 '''80''' 00 00 - laser sight visible<br />
<br />
:0x00 00 '''02''' 00 - crosshair scaling, used for w1_tap, w2_sap, w3_phr and w8_mbo<br />
:0x00 00 '''08''' 00 - weapon doesn't fade<br />
:0x00 00 '''10''' 00 - drain ammo; used by w4_psm to decrement ammo while firing because its firing mode is continuous rather than repetitive<br />
}}<br />
|}<br />
<br />
<br />
'''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<br />
<br />
'''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<br />
<br />
'''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 beginn, then always this weapon is teleported back to character (when command used again)<br />
<br />
==0x0D8 to 0x1D7 - Firing modes==<br />
<br />
<br />
Every ONWC has 2 firing mode slots (128 = 0x80 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
<br />
===0x0D8 to 0x157 - Primary firing mode===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x0D8 | int32 |64AAAA| 00 00 00 00 | 0 | firing mode options; the following bits are possible (values in hex):<br />
:0x'''01''' 00 00 00 - unknown; something to do with keeping/altering "prediction" when the target changes<br />
}}<br />
{{OBDtr| 0x0DC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix XX }}<br />
{{OBDtr| 0x0E0 | float |EBEBEB| 05 6D 56 3D | 0.052350 | transform matrix XY }}<br />
{{OBDtr| 0x0E4 | float |EBEBEB| F4 8D A9 37 | 0.000020 | transform matrix XZ }}<br />
{{OBDtr| 0x0E8 | float |EBEBEB| 05 6D 56 BD | -0.052350 | transform matrix YX }}<br />
{{OBDtr| 0x0EC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix YY }}<br />
{{OBDtr| 0x0F0 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix YZ }}<br />
{{OBDtr| 0x0F4 | float |EBEBEB| F4 8D A9 B7 | -0.000020 | transform matrix ZX }}<br />
{{OBDtr| 0x0F8 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix ZY }}<br />
{{OBDtr| 0x0FC | float |EBEBEB| 00 00 80 3F | 1.000000 | transform matrix ZZ }}<br />
{{OBDtr| 0x100 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation X; always zero for original weapons }}<br />
{{OBDtr| 0x104 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Y; always zero for original weapons }}<br />
{{OBDtr| 0x108 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Z; always zero for original weapons }}<br />
{{OBDtr| 0x10C | float |EBEBEB| 23 A6 7F 3F | 0.998629 | firing spread direction X component }}<br />
{{OBDtr| 0x110 | float |EBEBEB| AE 6C 56 BD | -0.052349 | firing spread direction Y component }}<br />
{{OBDtr| 0x114 | float |EBEBEB| AF 8D A9 B7 | -0.000020 | firing spread direction Z component }}<br />
{{OBDtr| 0x118 | float |EBEBEB| DC FE 08 3C | 0.008362 | targeting vector origin X component? }}<br />
{{OBDtr| 0x11C | float |EBEBEB| 5C 11 23 3E | 0.159246 | targeting vector origin Y component? }}<br />
{{OBDtr| 0x120 | float |EBEBEB| 39 C6 2A 3F | 0.667087 | targeting vector origin Z component? }}<br />
{{OBDtr| 0x124 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x128 | float |EBEBEB| 00 00 20 41 | 10.000000 | 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 }}<br />
{{OBDtr| 0x12C | float |EBEBEB| 00 00 20 40 | 2.500000 | unknown; always the same; possible related to the inaccuracy angle above }}<br />
{{OBDtr| 0x130 | float |EBEBEB| 00 00 96 43 | 300.000000 | 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<nowiki>=</nowiki>1* (but you have to be in a large open area, since those ranges are quite big) }}<br />
{{OBDtr| 0x134 | float |EBEBEB| 00 00 40 41 | 12.000000 | 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 }}<br />
{{OBDtr| 0x138 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x13C | int16 |8C8CCC| 05 00 | 5 | unknown; always the same }}<br />
{{OBDtr| 0x13E | int16 |8C8CCC| 01 00 | 1 | skill index (in the [[ONCC]] shooting skill table) }}<br />
{{OBDtr| 0x140 | int32 |8C8CCC| 00 00 00 00 | 0 | fight timer, 240 for w4_psm, 200 for v6_vdg }}<br />
{{OBDtr| 0x144 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile speed (150 for SBG, 160 for WMC) }}<br />
{{OBDtr| 0x148 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile gravity, can be negative for firing at the enemy's feet (0.5 for SBG, 0.3 for WMC) }}<br />
{{OBDtr| 0x14C | float |FF00C8| 00 00 34 43 | 180.000000 | 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<nowiki>=</nowiki>1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm) }}<br />
{{OBDtr| 0x150 | float |FF00C8| 00 00 40 40 | 3.000000 | length of the firingspread's base side; can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 }}<br />
{{OBDtr| 0x154 | float |FF00C8| 50 77 D6 3D | 0.104719 | angle between firingspread's base and its altitude(length); can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 (0.1 for w1_tap, 0.21 for w2_sap) }}<br />
|}<br />
<br />
<br />
;Transform matrix<br />
:Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.<br />
<br />
===0x158 to 0x1D7 - Secondary firing mode===<br />
<br />
<br />
The only original weapon for which these fields are not all zero is '''w11_ba1'''.<br />
<br />
They are the exact counterparts of the fields at 0xD8 - 0x157.<br />
<br />
<br />
==0x1D8 to 0x6D7 - Weapon particle array==<br />
<br />
<br />
Every ONWC has 16 particle slots (80 = 0x50 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
Offsets are relative to the beginning of a slot.<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtrBK|1=First of 16 elements (black outline).}}<br />
{{OBDtr| 0x000 | float |F0F096| AE 6C 56 3D | 0.052349 | transformation matrix, xx term }}<br />
{{OBDtr| 0x004 | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, xy term }}<br />
{{OBDtr| 0x008 | float |F0F096| C2 53 90 B3 | -0.000000... | transformation matrix, xz term }}<br />
{{OBDtr| 0x00C | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, yx term }}<br />
{{OBDtr| 0x010 | float |F0F096| AE 6C 56 BD | -0.052349 | transformation matrix, yy term }}<br />
{{OBDtr| 0x014 | float |F0F096| AF 8D A9 B7 | -0.000020 | transformation matrix, yz term }}<br />
{{OBDtr| 0x018 | float |F0F096| BA 59 A9 B7 | -0.000020 | transformation matrix, zx term }}<br />
{{OBDtr| 0x01C | float |F0F096| 5B 02 85 35 | 0.000001 | transformation matrix, zy term }}<br />
{{OBDtr| 0x020 | float |F0F096| 00 00 80 BF | -1.000000 | transformation matrix, zz term }}<br />
{{OBDtr| 0x024 | float |F0F096| 6F 63 57 40 | 3.365444 | x-offset of particle to weapon }}<br />
{{OBDtr| 0x028 | float |F0F096| B3 1D 89 BC | -0.016738 | y-offset of particle to weapon }}<br />
{{OBDtr| 0x02C | float |F0F096| C5 C1 2A 3F | 0.667019 | z-offset of particle to weapon }}<br />
{{OBDtr2|0x030 | char[16] |00C864| w1_tap_e01 | particle name (reference to 06226-3RAPw1_tap_e01.[[OBD:BINA/PAR3|BINA]]) }}<br />
{{OBDtr| 0x040 | int32 |00C8FF| 00 00 00 00 | 0 | runtime only (pointer to particle class) }}<br />
{{OBDtr| 0x044 | int16 |00C8FF| 01 00 | 1 | ammo decrement (different for the 2 firing modes of w11_ba1) }}<br />
{{OBDtr| 0x046 | int16 |00C8FF| 0C 00 | 12 | delay between shots in frames (12 frames <nowiki>=</nowiki> 0.2 seconds) }}<br />
{{OBDtr| 0x048 | int16 |00C8FF| 04 00 | 4 | 'roughjustice' delay between shots in frames }}<br />
{{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 }}<br />
{{OBDtr| 0x04C | int16 |00C8FF| 00 00 | 0 | 0 <nowiki>=</nowiki> particle is triggered by fire1; 1 <nowiki>=</nowiki> particle is triggered by fire2; -1 <nowiki>=</nowiki> particle is triggered by both firing modes }}<br />
{{OBDtr| 0x04E | int16 |00C8FF| 00 00 | 0 | delay before firing }}<br />
|}<br />
<br />
<br />
;Transformation matrix<br />
:That's what defines orientation, stretching, etc.<br />
:See [[OBD:CRSA|CRSA]] for details.<br />
<br />
==0x6D8 to 0x71F - End of file==<br />
<br />
<br />
[[image:onwc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr2|0x6D8 | char[32] |C80040| weapon _empty | empty weapon sound (reference to 08993-weapon_empty.[[OBD:OSBD/OSIm|imp.OSBD]]) }}<br />
{{OBDtr| 0x6F8 | int32 |FFCD96| 00 00 00 00 | 0 | runtime only (pointer to empty weapon sound) }}<br />
{{OBDtr| 0x6FC | link |C8C864| 01 81 0E 00 | 3713 | link to 03713-w1_glow.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x700 | link |C8C864| 01 82 0E 00 | 3714 | link to 03714-w1_glow_ammo.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x704 | float |0096C8| 00 00 80 3F | 1.000000 | x-scale factor of glow textures }}<br />
{{OBDtr| 0x708 | float |0096C8| 00 00 80 3F | 1.000000 | z-scale factor of glow textures }}<br />
{{OBDtr| 0x70C | float |0096C8| 76 65 EB 3F | 1.839034 | x-offset of pickup handle }}<br />
{{OBDtr| 0x710 | float |0096C8| 96 4C A9 3D | 0.082666 | y-offset of pickup handle }}<br />
{{OBDtr| 0x714 | float |0096C8| 06 E2 14 3E | 0.145393 | z-offset of pickup handle }}<br />
{{OBDtr| 0x718 | float |0096C8| 00 00 00 00 | 0.000000 | hovering height of unheld weapon }}<br />
{{OBDtr| 0x71C | char[4] |FF80C0| AD DE | dead | unused }}<br />
|}<br />
<br />
<br />
;Glow textures<br />
: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.<br />
;Pickup handle<br />
:The tolerance is hardcoded. The offsets are not relative to the weapon's axes, but to the world axes (!).<br />
:This is a rather nasty "feature" (actually, the offsets ''should'' be relative to the weapon's orientation)<br />
: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.<br />
<br />
<br />
{{OBD_File_Footer | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONWC&diff=17404OBD:ONWC2010-08-28T01:22:16Z<p>Gumby: /* 0x060 to 0x0D7 - Weapon parameters */</p>
<hr />
<div>{{OBD_File_Header | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level | align=center}}<br />
<br />
<br />
All ONWC files are 0 byte files. That means that Oni takes the information out of the ONWC files of level 0. Below is an example of an ONWC file of level 0. The first pic shows the beginning of this file. The second pic the end of it. <br />
<br />
<br />
Unless specified otherwise, the coordinates are relative to the weapon's mesh (x = forwards, y = left, z = up).<br />
<br />
<br />
==0x000 to 0x0D7 - Weapon main part ==<br />
<br />
<br />
[[image:onwc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 75 0E 00 | 3701 | 03701-w1_tap.ONWC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 00 | 0 | level 0 }}<br />
|}<br />
<br />
<br />
===0x008 to 0x053 - Laser sight parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x008 | float |FFC8C8| F5 A4 49 40 | 3.150693 | x-offset of laser sight origin }}<br />
{{OBDtr| 0x00C | float |FFC8C8| F4 2C A5 3B | 0.005041 | y-offset of laser sight origin }}<br />
{{OBDtr| 0x010 | float |FFC8C8| 21 4E D2 3E | 0.410752 | z-offset of laser sight origin }}<br />
{{OBDtr| 0x014 | float |FFC8C8| 23 A6 7F 3F | 0.998629 | x-component of laser sight direction }}<br />
{{OBDtr| 0x018 | float |FFC8C8| AA 6C 56 BD | -0.052349 | y-component of laser sight direction }}<br />
{{OBDtr| 0x01C | float |FFC8C8| 69 66 AA B7 | -0.000020 | z-component of laser sight direction }}<br />
{{OBDtr| 0x020 | float |FFC8C8| 00 40 9C 45 |5000.000000 | maximal length of laser sight vector }}<br />
{{OBDtr| 0x024 | color |FFFFC8| 00 00 FF FF | 0, 0, 255; 255 | laser sight color (blue, green, red); laser sight transparency }}<br />
{{OBDtr| 0x028 | link |C8FFC8| 01 94 05 00 | 1428 | crosshair texture (link to 01428-target_1A.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x02C | color |C8FFC8| FF FF FF 00 |255, 255, 255; 0| crosshair background color (blue, green, red); crosshair background transparency }}<br />
{{OBDtr| 0x030 | float |C8FFC8| CD CC 4C 3F | 0.800000 | crosshair scale factor }}<br />
{{OBDtr| 0x034 | link |C8FFFF| 01 95 05 00 | 1428 | locked crosshair texture (link to 01429-target_1B.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x038 | color |C8FFFF| FF FF FF 00 |255, 255, 255; 0| locked crosshair background color (blue, green, red); locked crosshair background transparency }}<br />
{{OBDtr| 0x03C | float |C8FFFF| CD CC 4C 3F | 0.800000 | locked crosshair scale factor }}<br />
{{OBDtr| 0x040 | link |FFC8FF| 00 00 00 00 | unused | tunnel texture (link to a [[OBD:TXMP|TXMP]]) file }}<br />
{{OBDtr| 0x044 | color |FFC8FF| FF FF FF 00 |255, 255, 255; 0| tunnel background color (blue, green, red); tunnel background transparency }}<br />
{{OBDtr| 0x048 | float |FFC8FF| 00 00 80 3F | 1.000000 | tunnel scale factor }}<br />
{{OBDtr| 0x04C | int32 |FFC800| 0F 00 00 00 | 15 | number of tunnel textures }}<br />
{{OBDtr| 0x050 | float |C800C8| 00 00 20 41 | 10.000000 | spacing of tunnel textures }}<br />
|}<br />
<br />
<br />
;Crosshair<br />
:Default crosshair appears where the laser sight hits environment, corpses, etc<br />
:Locked crosshair appears when the laser sight hits characters (including the shooter)<br />
:"Tunnel" is used by '''w8_mbo''' as a complement to the crosshair<br />
:'''w2_sap''', '''w5_sbg''', '''w7_scc''' and '''w9_scr''' use it with no crosshair<br />
<br />
<br />
===0x054 to 0x05F - Ammo meter===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x054 | link |C87C64| 01 7E 0E 00 | 3710 | link to 03710-tap_icon.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x058 | link |C87C64| 01 7F 0E 00 | 3711 | link to 03711-tap_empty.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x05C | link |C87C64| 01 80 0E 00 | 3712 | link to 03712-tap_fill.[[OBD:TXMP|TXMP]] }}<br />
|}<br />
<br />
<br />
===0x060 to 0x0D7 - Weapon parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x060 | link |C87C64| 01 76 0E 00 | 3702 | link to 03702-.M3GM }}<br />
{{OBDtr2|0x064 | char[32] |B0C3D4| w1_tap | weapon name }}<br />
{{OBDtr| 0x084 | float |E7CEA5| 00 00 80 3F | 1.000000 | weapon mouse sensitivity (applies on AI, too) }}<br />
{{OBDtr| 0x088 | float |E7CEA5| A6 92 2B 3D | 0.041888 | recoil base (e.g. for w1_tap and w2_sap) }}<br />
{{OBDtr| 0x08C | float |E7CEA5| 92 0A 86 3E | 0.261799 | recoil max }}<br />
{{OBDtr| 0x090 | float |E7CEA5| 00 00 A0 40 | 5.000000 | recoil factor }}<br />
{{OBDtr| 0x094 | float |E7CEA5| E2 A3 7B 3B | 0.003839 | recoil return speed }}<br />
{{OBDtr| 0x098 | float |E7CEA5| 88 C3 E4 3A | 0.001745 | unkown, dealing with recoil }}<br />
{{OBDtr| 0x09C | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector X}}<br />
{{OBDtr| 0x0A0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Y}}<br />
{{OBDtr| 0x0A4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Z }}<br />
{{OBDtr| 0x0A8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector X}}<br />
{{OBDtr| 0x0AC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Y}}<br />
{{OBDtr| 0x0B0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Z}}<br />
{{OBDtr| 0x0B4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition X}}<br />
{{OBDtr| 0x0B8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Y}}<br />
{{OBDtr| 0x0BC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Z}}<br />
{{OBDtr| 0x0C0 | int16 |FFDDDD| 00 00 | 0 | freeTime ???; always zero }}<br />
{{OBDtr| 0x0C2 | int16 |FFDDDD| 95 00 | 149 | recoil animation type (149 <nowiki>=</nowiki> autopistol_recoil) }}<br />
{{OBDtr| 0x0C4 | int16 |FFDDDD| A4 00 | 164 | reload animation type (164 <nowiki>=</nowiki> reload_pistol) }}<br />
{{OBDtr| 0x0C6 | int16 |FFDDDD| 19 00 | 25 | pause after reload in 1/60 seconds }}<br />
{{OBDtr| 0x0C8 | int16 |FFDDDD| 0A 00 | 10 | amount of shots }}<br />
{{OBDtr| 0x0CA | int16 |FFDDDD| 06 00 | 6 | amount of particles }}<br />
{{OBDtr| 0x0CC | int16 |FFDDDD| 01 00 | 1 | amount of firing modes }}<br />
{{OBDtr| 0x0CE | int16 |FFDDDD| 0A 00 | 10 | pause before reload in 1/60 seconds }}<br />
{{OBDtr| 0x0D0 | int16 |FFDDDD| 04 00 | 4 | release delay; delay between the moment the trigger is released and the moment the weapon stops firing }}<br />
{{OBDtr| 0x0D2 | int16 |FFDDDD| 00 00 | 0 | padding; always zero }}<br />
{{OBDtr| 0x0D4 | int32 |FFDDDD| 30 | 0x30 C0 02 00 | weapon options; the following bits are possible (values in hex):<br />
<br />
:0x'''02''' 00 00 00 - weapon can't be holstered<br />
:0x'''04''' 00 00 00 - weapon reloads with energy cells<br />
:0x'''08''' 00 00 00 - weapon is a rifle (two-handed)<br />
:0x'''10''' 00 00 00 - recoil affects aiming<br />
:0x'''20''' 00 00 00 - sustained fire (applies only to primary fire)<br />
:0x'''40''' 00 00 00 - runtime only; do not use<br />
:0x'''80''' 00 00 00 - stun switcher; used for w6_vdg, see below<br />
<br />
:0x00 '''01''' 00 00 - knockdown switcher; used for w4_psm, see below<br />
:0x00 '''02''' 00 00 - unknown; used for w5_sbg and w11_ba1<br />
:0x00 '''04''' 00 00 - secondary fire enabled<br />
:0x00 '''08''' 00 00 - barabbas weapon; see below<br />
:0x00 '''10''' 00 00 - heavy weapon; run, jump and creep disabled<br />
:0x00 '''20''' 00 00 - auto release trigger; used for w11_ba1<br />
:0x00 '''40''' 00 00 - has release delay; see the release delay field above<br />
:0x00 '''80''' 00 00 - laser sight visible<br />
<br />
:0x00 00 '''02''' 00 - crosshair scaling, used for w1_tap, w2_sap, w3_phr and w8_mbo<br />
:0x00 00 '''08''' 00 - weapon doesn't fade<br />
:0x00 00 '''10''' 00 - drain ammo; used by w4_psm to decrement ammo while firing because its firing mode is continuous rather than repetitive<br />
}}<br />
|}<br />
<br />
<br />
'''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<br />
<br />
'''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<br />
<br />
'''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 beginn, then always this weapon is teleported back to character (when command used again)<br />
<br />
==0x0D8 to 0x1D7 - Firing modes==<br />
<br />
<br />
Every ONWC has 2 firing mode slots (128 = 0x80 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
<br />
===0x0D8 to 0x157 - Primary firing mode===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x0D8 | int32 |64AAAA| 00 00 00 00 | 0 | firing mode options; the following bits are possible (values in hex):<br />
:0x'''01''' 00 00 00 - unknown; something to do with keeping/altering "prediction" when the target changes<br />
}}<br />
{{OBDtr| 0x0DC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix XX }}<br />
{{OBDtr| 0x0E0 | float |EBEBEB| 05 6D 56 3D | 0.052350 | transform matrix XY }}<br />
{{OBDtr| 0x0E4 | float |EBEBEB| F4 8D A9 37 | 0.000020 | transform matrix XZ }}<br />
{{OBDtr| 0x0E8 | float |EBEBEB| 05 6D 56 BD | -0.052350 | transform matrix YX }}<br />
{{OBDtr| 0x0EC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix YY }}<br />
{{OBDtr| 0x0F0 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix YZ }}<br />
{{OBDtr| 0x0F4 | float |EBEBEB| F4 8D A9 B7 | -0.000020 | transform matrix ZX }}<br />
{{OBDtr| 0x0F8 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix ZY }}<br />
{{OBDtr| 0x0FC | float |EBEBEB| 00 00 80 3F | 1.000000 | transform matrix ZZ }}<br />
{{OBDtr| 0x100 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation X; always zero for original weapons }}<br />
{{OBDtr| 0x104 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Y; always zero for original weapons }}<br />
{{OBDtr| 0x108 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Z; always zero for original weapons }}<br />
{{OBDtr| 0x10C | float |EBEBEB| 23 A6 7F 3F | 0.998629 | firing spread direction X component }}<br />
{{OBDtr| 0x110 | float |EBEBEB| AE 6C 56 BD | -0.052349 | firing spread direction Y component }}<br />
{{OBDtr| 0x114 | float |EBEBEB| AF 8D A9 B7 | -0.000020 | firing spread direction Z component }}<br />
{{OBDtr| 0x118 | float |EBEBEB| DC FE 08 3C | 0.008362 | targeting vector origin X component? }}<br />
{{OBDtr| 0x11C | float |EBEBEB| 5C 11 23 3E | 0.159246 | targeting vector origin Y component? }}<br />
{{OBDtr| 0x120 | float |EBEBEB| 39 C6 2A 3F | 0.667087 | targeting vector origin Z component? }}<br />
{{OBDtr| 0x124 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x128 | float |EBEBEB| 00 00 20 41 | 10.000000 | 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 }}<br />
{{OBDtr| 0x12C | float |EBEBEB| 00 00 20 40 | 2.500000 | unknown; always the same; possible related to the inaccuracy angle above }}<br />
{{OBDtr| 0x130 | float |EBEBEB| 00 00 96 43 | 300.000000 | 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<nowiki>=</nowiki>1* (but you have to be in a large open area, since those ranges are quite big) }}<br />
{{OBDtr| 0x134 | float |EBEBEB| 00 00 40 41 | 12.000000 | 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 }}<br />
{{OBDtr| 0x138 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x13C | int16 |8C8CCC| 05 00 | 5 | unknown; always the same }}<br />
{{OBDtr| 0x13E | int16 |8C8CCC| 01 00 | 1 | skill index (in the [[ONCC]] shooting skill table) }}<br />
{{OBDtr| 0x140 | int32 |8C8CCC| 00 00 00 00 | 0 | fight timer, 240 for w4_psm, 200 for v6_vdg }}<br />
{{OBDtr| 0x144 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile speed (150 for SBG, 160 for WMC) }}<br />
{{OBDtr| 0x148 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile gravity, can be negative for firing at the enemy's feet (0.5 for SBG, 0.3 for WMC) }}<br />
{{OBDtr| 0x14C | float |FF00C8| 00 00 34 43 | 180.000000 | 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<nowiki>=</nowiki>1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm) }}<br />
{{OBDtr| 0x150 | float |FF00C8| 00 00 40 40 | 3.000000 | length of the firingspread's base side; can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 }}<br />
{{OBDtr| 0x154 | float |FF00C8| 50 77 D6 3D | 0.104719 | angle between firingspread's base and its altitude(length); can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 (0.1 for w1_tap, 0.21 for w2_sap) }}<br />
|}<br />
<br />
<br />
;Transform matrix<br />
:Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.<br />
<br />
===0x158 to 0x1D7 - Secondary firing mode===<br />
<br />
<br />
The only original weapon for which these fields are not all zero is '''w11_ba1'''.<br />
<br />
They are the exact counterparts of the fields at 0xD8 - 0x157.<br />
<br />
<br />
==0x1D8 to 0x6D7 - Weapon particle array==<br />
<br />
<br />
Every ONWC has 16 particle slots (80 = 0x50 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
Offsets are relative to the beginning of a slot.<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtrBK|1=First of 16 elements (black outline).}}<br />
{{OBDtr| 0x000 | float |F0F096| AE 6C 56 3D | 0.052349 | transformation matrix, xx term }}<br />
{{OBDtr| 0x004 | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, xy term }}<br />
{{OBDtr| 0x008 | float |F0F096| C2 53 90 B3 | -0.000000... | transformation matrix, xz term }}<br />
{{OBDtr| 0x00C | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, yx term }}<br />
{{OBDtr| 0x010 | float |F0F096| AE 6C 56 BD | -0.052349 | transformation matrix, yy term }}<br />
{{OBDtr| 0x014 | float |F0F096| AF 8D A9 B7 | -0.000020 | transformation matrix, yz term }}<br />
{{OBDtr| 0x018 | float |F0F096| BA 59 A9 B7 | -0.000020 | transformation matrix, zx term }}<br />
{{OBDtr| 0x01C | float |F0F096| 5B 02 85 35 | 0.000001 | transformation matrix, zy term }}<br />
{{OBDtr| 0x020 | float |F0F096| 00 00 80 BF | -1.000000 | transformation matrix, zz term }}<br />
{{OBDtr| 0x024 | float |F0F096| 6F 63 57 40 | 3.365444 | x-offset of particle to weapon }}<br />
{{OBDtr| 0x028 | float |F0F096| B3 1D 89 BC | -0.016738 | y-offset of particle to weapon }}<br />
{{OBDtr| 0x02C | float |F0F096| C5 C1 2A 3F | 0.667019 | z-offset of particle to weapon }}<br />
{{OBDtr2|0x030 | char[16] |00C864| w1_tap_e01 | particle name (reference to 06226-3RAPw1_tap_e01.[[OBD:BINA/PAR3|BINA]]) }}<br />
{{OBDtr| 0x040 | int32 |00C8FF| 00 00 00 00 | 0 | runtime only (pointer to particle class) }}<br />
{{OBDtr| 0x044 | int16 |00C8FF| 01 00 | 1 | ammo decrement (different for the 2 firing modes of w11_ba1) }}<br />
{{OBDtr| 0x046 | int16 |00C8FF| 0C 00 | 12 | delay between shots in frames (12 frames <nowiki>=</nowiki> 0.2 seconds) }}<br />
{{OBDtr| 0x048 | int16 |00C8FF| 04 00 | 4 | 'roughjustice' delay between shots in frames }}<br />
{{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 }}<br />
{{OBDtr| 0x04C | int16 |00C8FF| 00 00 | 0 | 0 <nowiki>=</nowiki> particle is triggered by fire1; 1 <nowiki>=</nowiki> particle is triggered by fire2; -1 <nowiki>=</nowiki> particle is triggered by both firing modes }}<br />
{{OBDtr| 0x04E | int16 |00C8FF| 00 00 | 0 | delay before firing }}<br />
|}<br />
<br />
<br />
;Transformation matrix<br />
:That's what defines orientation, stretching, etc.<br />
:See [[OBD:CRSA|CRSA]] for details.<br />
<br />
==0x6D8 to 0x71F - End of file==<br />
<br />
<br />
[[image:onwc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr2|0x6D8 | char[32] |C80040| weapon _empty | empty weapon sound (reference to 08993-weapon_empty.[[OBD:OSBD/OSIm|imp.OSBD]]) }}<br />
{{OBDtr| 0x6F8 | int32 |FFCD96| 00 00 00 00 | 0 | runtime only (pointer to empty weapon sound) }}<br />
{{OBDtr| 0x6FC | link |C8C864| 01 81 0E 00 | 3713 | link to 03713-w1_glow.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x700 | link |C8C864| 01 82 0E 00 | 3714 | link to 03714-w1_glow_ammo.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x704 | float |0096C8| 00 00 80 3F | 1.000000 | x-scale factor of glow textures }}<br />
{{OBDtr| 0x708 | float |0096C8| 00 00 80 3F | 1.000000 | z-scale factor of glow textures }}<br />
{{OBDtr| 0x70C | float |0096C8| 76 65 EB 3F | 1.839034 | x-offset of pickup handle }}<br />
{{OBDtr| 0x710 | float |0096C8| 96 4C A9 3D | 0.082666 | y-offset of pickup handle }}<br />
{{OBDtr| 0x714 | float |0096C8| 06 E2 14 3E | 0.145393 | z-offset of pickup handle }}<br />
{{OBDtr| 0x718 | float |0096C8| 00 00 00 00 | 0.000000 | hovering height of unheld weapon }}<br />
{{OBDtr| 0x71C | char[4] |FF80C0| AD DE | dead | unused }}<br />
|}<br />
<br />
<br />
;Glow textures<br />
: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.<br />
;Pickup handle<br />
:The tolerance is hardcoded. The offsets are not relative to the weapon's axes, but to the world axes (!).<br />
:This is a rather nasty "feature" (actually, the offsets ''should'' be relative to the weapon's orientation)<br />
: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.<br />
<br />
<br />
{{OBD_File_Footer | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONWC&diff=17403OBD:ONWC2010-08-28T01:21:25Z<p>Gumby: /* 0x060 to 0x0D7 - Weapon parameters */ oops</p>
<hr />
<div>{{OBD_File_Header | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level | align=center}}<br />
<br />
<br />
All ONWC files are 0 byte files. That means that Oni takes the information out of the ONWC files of level 0. Below is an example of an ONWC file of level 0. The first pic shows the beginning of this file. The second pic the end of it. <br />
<br />
<br />
Unless specified otherwise, the coordinates are relative to the weapon's mesh (x = forwards, y = left, z = up).<br />
<br />
<br />
==0x000 to 0x0D7 - Weapon main part ==<br />
<br />
<br />
[[image:onwc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 75 0E 00 | 3701 | 03701-w1_tap.ONWC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 00 | 0 | level 0 }}<br />
|}<br />
<br />
<br />
===0x008 to 0x053 - Laser sight parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x008 | float |FFC8C8| F5 A4 49 40 | 3.150693 | x-offset of laser sight origin }}<br />
{{OBDtr| 0x00C | float |FFC8C8| F4 2C A5 3B | 0.005041 | y-offset of laser sight origin }}<br />
{{OBDtr| 0x010 | float |FFC8C8| 21 4E D2 3E | 0.410752 | z-offset of laser sight origin }}<br />
{{OBDtr| 0x014 | float |FFC8C8| 23 A6 7F 3F | 0.998629 | x-component of laser sight direction }}<br />
{{OBDtr| 0x018 | float |FFC8C8| AA 6C 56 BD | -0.052349 | y-component of laser sight direction }}<br />
{{OBDtr| 0x01C | float |FFC8C8| 69 66 AA B7 | -0.000020 | z-component of laser sight direction }}<br />
{{OBDtr| 0x020 | float |FFC8C8| 00 40 9C 45 |5000.000000 | maximal length of laser sight vector }}<br />
{{OBDtr| 0x024 | color |FFFFC8| 00 00 FF FF | 0, 0, 255; 255 | laser sight color (blue, green, red); laser sight transparency }}<br />
{{OBDtr| 0x028 | link |C8FFC8| 01 94 05 00 | 1428 | crosshair texture (link to 01428-target_1A.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x02C | color |C8FFC8| FF FF FF 00 |255, 255, 255; 0| crosshair background color (blue, green, red); crosshair background transparency }}<br />
{{OBDtr| 0x030 | float |C8FFC8| CD CC 4C 3F | 0.800000 | crosshair scale factor }}<br />
{{OBDtr| 0x034 | link |C8FFFF| 01 95 05 00 | 1428 | locked crosshair texture (link to 01429-target_1B.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x038 | color |C8FFFF| FF FF FF 00 |255, 255, 255; 0| locked crosshair background color (blue, green, red); locked crosshair background transparency }}<br />
{{OBDtr| 0x03C | float |C8FFFF| CD CC 4C 3F | 0.800000 | locked crosshair scale factor }}<br />
{{OBDtr| 0x040 | link |FFC8FF| 00 00 00 00 | unused | tunnel texture (link to a [[OBD:TXMP|TXMP]]) file }}<br />
{{OBDtr| 0x044 | color |FFC8FF| FF FF FF 00 |255, 255, 255; 0| tunnel background color (blue, green, red); tunnel background transparency }}<br />
{{OBDtr| 0x048 | float |FFC8FF| 00 00 80 3F | 1.000000 | tunnel scale factor }}<br />
{{OBDtr| 0x04C | int32 |FFC800| 0F 00 00 00 | 15 | number of tunnel textures }}<br />
{{OBDtr| 0x050 | float |C800C8| 00 00 20 41 | 10.000000 | spacing of tunnel textures }}<br />
|}<br />
<br />
<br />
;Crosshair<br />
:Default crosshair appears where the laser sight hits environment, corpses, etc<br />
:Locked crosshair appears when the laser sight hits characters (including the shooter)<br />
:"Tunnel" is used by '''w8_mbo''' as a complement to the crosshair<br />
:'''w2_sap''', '''w5_sbg''', '''w7_scc''' and '''w9_scr''' use it with no crosshair<br />
<br />
<br />
===0x054 to 0x05F - Ammo meter===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x054 | link |C87C64| 01 7E 0E 00 | 3710 | link to 03710-tap_icon.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x058 | link |C87C64| 01 7F 0E 00 | 3711 | link to 03711-tap_empty.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x05C | link |C87C64| 01 80 0E 00 | 3712 | link to 03712-tap_fill.[[OBD:TXMP|TXMP]] }}<br />
|}<br />
<br />
<br />
===0x060 to 0x0D7 - Weapon parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x060 | link |C87C64| 01 76 0E 00 | 3702 | link to 03702-.M3GM }}<br />
{{OBDtr2|0x064 | char[32] |B0C3D4| w1_tap | weapon name }}<br />
{{OBDtr| 0x084 | float |E7CEA5| 00 00 80 3F | 1.000000 | weapon mouse sensitivity (applies on AI, too) }}<br />
{{OBDtr| 0x088 | float |E7CEA5| A6 92 2B 3D | 0.041888 | recoil base (e.g. for w1_tap and w2_sap) }}<br />
{{OBDtr| 0x08C | float |E7CEA5| 92 0A 86 3E | 0.261799 | recoil max }}<br />
{{OBDtr| 0x090 | float |E7CEA5| 00 00 A0 40 | 5.000000 | recoil factor }}<br />
{{OBDtr| 0x094 | float |E7CEA5| E2 A3 7B 3B | 0.003839 | recoil return speed }}<br />
{{OBDtr| 0x098 | float |E7CEA5| 88 C3 E4 3A | 0.001745 | unkown, dealing with recoil }}<br />
{{OBDtr| 0x09C | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector X}}<br />
{{OBDtr| 0x0A0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Y}}<br />
{{OBDtr| 0x0A4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Z }}<br />
{{OBDtr| 0x0A8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector X}}<br />
{{OBDtr| 0x0AC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Y}}<br />
{{OBDtr| 0x0B0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Z}}<br />
{{OBDtr| 0x0B4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition X}}<br />
{{OBDtr| 0x0B8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Y}}<br />
{{OBDtr| 0x0BC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Z}}<br />
{{OBDtr| 0x0C0 | int16 |FFDDDD| 00 00 | 0 | freeTime ???; always zero }}<br />
{{OBDtr| 0x0C2 | int16 |FFDDDD| 95 00 | 149 | recoil animation type (149 <nowiki>=</nowiki> autopistol_recoil) }}<br />
{{OBDtr| 0x0C4 | int16 |FFDDDD| A4 00 | 164 | reload animation type (164 <nowiki>=</nowiki> reload_pistol) }}<br />
{{OBDtr| 0x0C6 | int16 |FFDDDD| 19 00 | 25 | pause after reload in 1/60 seconds }}<br />
{{OBDtr| 0x0C8 | int16 |FFDDDD| 0A 00 | 10 | amount of shots }}<br />
{{OBDtr| 0x0CA | int16 |FFDDDD| 06 00 | 6 | amount of particles }}<br />
{{OBDtr| 0x0CC | int16 |FFDDDD| 01 00 | 1 | amount of firing modes }}<br />
{{OBDtr| 0x0CE | int16 |FFDDDD| 0A 00 | 10 | pause before reload in 1/60 seconds }}<br />
{{OBDtr| 0x0D0 | int16 |FFDDDD| 04 00 | 4 | release delay; delay between the moment the trigger is released and the moment the weapon stops firing }}<br />
{{OBDtr| 0x0D2 | int16 |FFDDDD| 00 00 | 0 | unknown; always zero }}<br />
{{OBDtr| 0x0D4 | int32 |FFDDDD| 30 | 0x30 C0 02 00 | weapon options; the following bits are possible (values in hex):<br />
<br />
:0x'''02''' 00 00 00 - weapon can't be holstered<br />
:0x'''04''' 00 00 00 - weapon reloads with energy cells<br />
:0x'''08''' 00 00 00 - weapon is a rifle (two-handed)<br />
:0x'''10''' 00 00 00 - recoil affects aiming<br />
:0x'''20''' 00 00 00 - sustained fire (applies only to primary fire)<br />
:0x'''40''' 00 00 00 - runtime only; do not use<br />
:0x'''80''' 00 00 00 - stun switcher; used for w6_vdg, see below<br />
<br />
:0x00 '''01''' 00 00 - knockdown switcher; used for w4_psm, see below<br />
:0x00 '''02''' 00 00 - unknown; used for w5_sbg and w11_ba1<br />
:0x00 '''04''' 00 00 - secondary fire enabled<br />
:0x00 '''08''' 00 00 - barabbas weapon; see below<br />
:0x00 '''10''' 00 00 - heavy weapon; run, jump and creep disabled<br />
:0x00 '''20''' 00 00 - auto release trigger; used for w11_ba1<br />
:0x00 '''40''' 00 00 - has release delay; see the release delay field above<br />
:0x00 '''80''' 00 00 - laser sight visible<br />
<br />
:0x00 00 '''02''' 00 - crosshair scaling, used for w1_tap, w2_sap, w3_phr and w8_mbo<br />
:0x00 00 '''08''' 00 - weapon doesn't fade<br />
:0x00 00 '''10''' 00 - drain ammo; used by w4_psm to decrement ammo while firing because its firing mode is continuous rather than repetitive<br />
}}<br />
|}<br />
<br />
<br />
'''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<br />
<br />
'''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<br />
<br />
'''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 beginn, then always this weapon is teleported back to character (when command used again)<br />
<br />
==0x0D8 to 0x1D7 - Firing modes==<br />
<br />
<br />
Every ONWC has 2 firing mode slots (128 = 0x80 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
<br />
===0x0D8 to 0x157 - Primary firing mode===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x0D8 | int32 |64AAAA| 00 00 00 00 | 0 | firing mode options; the following bits are possible (values in hex):<br />
:0x'''01''' 00 00 00 - unknown; something to do with keeping/altering "prediction" when the target changes<br />
}}<br />
{{OBDtr| 0x0DC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix XX }}<br />
{{OBDtr| 0x0E0 | float |EBEBEB| 05 6D 56 3D | 0.052350 | transform matrix XY }}<br />
{{OBDtr| 0x0E4 | float |EBEBEB| F4 8D A9 37 | 0.000020 | transform matrix XZ }}<br />
{{OBDtr| 0x0E8 | float |EBEBEB| 05 6D 56 BD | -0.052350 | transform matrix YX }}<br />
{{OBDtr| 0x0EC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix YY }}<br />
{{OBDtr| 0x0F0 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix YZ }}<br />
{{OBDtr| 0x0F4 | float |EBEBEB| F4 8D A9 B7 | -0.000020 | transform matrix ZX }}<br />
{{OBDtr| 0x0F8 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix ZY }}<br />
{{OBDtr| 0x0FC | float |EBEBEB| 00 00 80 3F | 1.000000 | transform matrix ZZ }}<br />
{{OBDtr| 0x100 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation X; always zero for original weapons }}<br />
{{OBDtr| 0x104 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Y; always zero for original weapons }}<br />
{{OBDtr| 0x108 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Z; always zero for original weapons }}<br />
{{OBDtr| 0x10C | float |EBEBEB| 23 A6 7F 3F | 0.998629 | firing spread direction X component }}<br />
{{OBDtr| 0x110 | float |EBEBEB| AE 6C 56 BD | -0.052349 | firing spread direction Y component }}<br />
{{OBDtr| 0x114 | float |EBEBEB| AF 8D A9 B7 | -0.000020 | firing spread direction Z component }}<br />
{{OBDtr| 0x118 | float |EBEBEB| DC FE 08 3C | 0.008362 | targeting vector origin X component? }}<br />
{{OBDtr| 0x11C | float |EBEBEB| 5C 11 23 3E | 0.159246 | targeting vector origin Y component? }}<br />
{{OBDtr| 0x120 | float |EBEBEB| 39 C6 2A 3F | 0.667087 | targeting vector origin Z component? }}<br />
{{OBDtr| 0x124 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x128 | float |EBEBEB| 00 00 20 41 | 10.000000 | 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 }}<br />
{{OBDtr| 0x12C | float |EBEBEB| 00 00 20 40 | 2.500000 | unknown; always the same; possible related to the inaccuracy angle above }}<br />
{{OBDtr| 0x130 | float |EBEBEB| 00 00 96 43 | 300.000000 | 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<nowiki>=</nowiki>1* (but you have to be in a large open area, since those ranges are quite big) }}<br />
{{OBDtr| 0x134 | float |EBEBEB| 00 00 40 41 | 12.000000 | 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 }}<br />
{{OBDtr| 0x138 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x13C | int16 |8C8CCC| 05 00 | 5 | unknown; always the same }}<br />
{{OBDtr| 0x13E | int16 |8C8CCC| 01 00 | 1 | skill index (in the [[ONCC]] shooting skill table) }}<br />
{{OBDtr| 0x140 | int32 |8C8CCC| 00 00 00 00 | 0 | fight timer, 240 for w4_psm, 200 for v6_vdg }}<br />
{{OBDtr| 0x144 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile speed (150 for SBG, 160 for WMC) }}<br />
{{OBDtr| 0x148 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile gravity, can be negative for firing at the enemy's feet (0.5 for SBG, 0.3 for WMC) }}<br />
{{OBDtr| 0x14C | float |FF00C8| 00 00 34 43 | 180.000000 | 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<nowiki>=</nowiki>1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm) }}<br />
{{OBDtr| 0x150 | float |FF00C8| 00 00 40 40 | 3.000000 | length of the firingspread's base side; can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 }}<br />
{{OBDtr| 0x154 | float |FF00C8| 50 77 D6 3D | 0.104719 | angle between firingspread's base and its altitude(length); can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 (0.1 for w1_tap, 0.21 for w2_sap) }}<br />
|}<br />
<br />
<br />
;Transform matrix<br />
:Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.<br />
<br />
===0x158 to 0x1D7 - Secondary firing mode===<br />
<br />
<br />
The only original weapon for which these fields are not all zero is '''w11_ba1'''.<br />
<br />
They are the exact counterparts of the fields at 0xD8 - 0x157.<br />
<br />
<br />
==0x1D8 to 0x6D7 - Weapon particle array==<br />
<br />
<br />
Every ONWC has 16 particle slots (80 = 0x50 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
Offsets are relative to the beginning of a slot.<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtrBK|1=First of 16 elements (black outline).}}<br />
{{OBDtr| 0x000 | float |F0F096| AE 6C 56 3D | 0.052349 | transformation matrix, xx term }}<br />
{{OBDtr| 0x004 | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, xy term }}<br />
{{OBDtr| 0x008 | float |F0F096| C2 53 90 B3 | -0.000000... | transformation matrix, xz term }}<br />
{{OBDtr| 0x00C | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, yx term }}<br />
{{OBDtr| 0x010 | float |F0F096| AE 6C 56 BD | -0.052349 | transformation matrix, yy term }}<br />
{{OBDtr| 0x014 | float |F0F096| AF 8D A9 B7 | -0.000020 | transformation matrix, yz term }}<br />
{{OBDtr| 0x018 | float |F0F096| BA 59 A9 B7 | -0.000020 | transformation matrix, zx term }}<br />
{{OBDtr| 0x01C | float |F0F096| 5B 02 85 35 | 0.000001 | transformation matrix, zy term }}<br />
{{OBDtr| 0x020 | float |F0F096| 00 00 80 BF | -1.000000 | transformation matrix, zz term }}<br />
{{OBDtr| 0x024 | float |F0F096| 6F 63 57 40 | 3.365444 | x-offset of particle to weapon }}<br />
{{OBDtr| 0x028 | float |F0F096| B3 1D 89 BC | -0.016738 | y-offset of particle to weapon }}<br />
{{OBDtr| 0x02C | float |F0F096| C5 C1 2A 3F | 0.667019 | z-offset of particle to weapon }}<br />
{{OBDtr2|0x030 | char[16] |00C864| w1_tap_e01 | particle name (reference to 06226-3RAPw1_tap_e01.[[OBD:BINA/PAR3|BINA]]) }}<br />
{{OBDtr| 0x040 | int32 |00C8FF| 00 00 00 00 | 0 | runtime only (pointer to particle class) }}<br />
{{OBDtr| 0x044 | int16 |00C8FF| 01 00 | 1 | ammo decrement (different for the 2 firing modes of w11_ba1) }}<br />
{{OBDtr| 0x046 | int16 |00C8FF| 0C 00 | 12 | delay between shots in frames (12 frames <nowiki>=</nowiki> 0.2 seconds) }}<br />
{{OBDtr| 0x048 | int16 |00C8FF| 04 00 | 4 | 'roughjustice' delay between shots in frames }}<br />
{{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 }}<br />
{{OBDtr| 0x04C | int16 |00C8FF| 00 00 | 0 | 0 <nowiki>=</nowiki> particle is triggered by fire1; 1 <nowiki>=</nowiki> particle is triggered by fire2; -1 <nowiki>=</nowiki> particle is triggered by both firing modes }}<br />
{{OBDtr| 0x04E | int16 |00C8FF| 00 00 | 0 | delay before firing }}<br />
|}<br />
<br />
<br />
;Transformation matrix<br />
:That's what defines orientation, stretching, etc.<br />
:See [[OBD:CRSA|CRSA]] for details.<br />
<br />
==0x6D8 to 0x71F - End of file==<br />
<br />
<br />
[[image:onwc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr2|0x6D8 | char[32] |C80040| weapon _empty | empty weapon sound (reference to 08993-weapon_empty.[[OBD:OSBD/OSIm|imp.OSBD]]) }}<br />
{{OBDtr| 0x6F8 | int32 |FFCD96| 00 00 00 00 | 0 | runtime only (pointer to empty weapon sound) }}<br />
{{OBDtr| 0x6FC | link |C8C864| 01 81 0E 00 | 3713 | link to 03713-w1_glow.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x700 | link |C8C864| 01 82 0E 00 | 3714 | link to 03714-w1_glow_ammo.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x704 | float |0096C8| 00 00 80 3F | 1.000000 | x-scale factor of glow textures }}<br />
{{OBDtr| 0x708 | float |0096C8| 00 00 80 3F | 1.000000 | z-scale factor of glow textures }}<br />
{{OBDtr| 0x70C | float |0096C8| 76 65 EB 3F | 1.839034 | x-offset of pickup handle }}<br />
{{OBDtr| 0x710 | float |0096C8| 96 4C A9 3D | 0.082666 | y-offset of pickup handle }}<br />
{{OBDtr| 0x714 | float |0096C8| 06 E2 14 3E | 0.145393 | z-offset of pickup handle }}<br />
{{OBDtr| 0x718 | float |0096C8| 00 00 00 00 | 0.000000 | hovering height of unheld weapon }}<br />
{{OBDtr| 0x71C | char[4] |FF80C0| AD DE | dead | unused }}<br />
|}<br />
<br />
<br />
;Glow textures<br />
: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.<br />
;Pickup handle<br />
:The tolerance is hardcoded. The offsets are not relative to the weapon's axes, but to the world axes (!).<br />
:This is a rather nasty "feature" (actually, the offsets ''should'' be relative to the weapon's orientation)<br />
: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.<br />
<br />
<br />
{{OBD_File_Footer | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONWC&diff=17402OBD:ONWC2010-08-28T01:20:24Z<p>Gumby: /* 0x060 to 0x0D7 - Weapon parameters */</p>
<hr />
<div>{{OBD_File_Header | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level | align=center}}<br />
<br />
<br />
All ONWC files are 0 byte files. That means that Oni takes the information out of the ONWC files of level 0. Below is an example of an ONWC file of level 0. The first pic shows the beginning of this file. The second pic the end of it. <br />
<br />
<br />
Unless specified otherwise, the coordinates are relative to the weapon's mesh (x = forwards, y = left, z = up).<br />
<br />
<br />
==0x000 to 0x0D7 - Weapon main part ==<br />
<br />
<br />
[[image:onwc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 75 0E 00 | 3701 | 03701-w1_tap.ONWC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 00 | 0 | level 0 }}<br />
|}<br />
<br />
<br />
===0x008 to 0x053 - Laser sight parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x008 | float |FFC8C8| F5 A4 49 40 | 3.150693 | x-offset of laser sight origin }}<br />
{{OBDtr| 0x00C | float |FFC8C8| F4 2C A5 3B | 0.005041 | y-offset of laser sight origin }}<br />
{{OBDtr| 0x010 | float |FFC8C8| 21 4E D2 3E | 0.410752 | z-offset of laser sight origin }}<br />
{{OBDtr| 0x014 | float |FFC8C8| 23 A6 7F 3F | 0.998629 | x-component of laser sight direction }}<br />
{{OBDtr| 0x018 | float |FFC8C8| AA 6C 56 BD | -0.052349 | y-component of laser sight direction }}<br />
{{OBDtr| 0x01C | float |FFC8C8| 69 66 AA B7 | -0.000020 | z-component of laser sight direction }}<br />
{{OBDtr| 0x020 | float |FFC8C8| 00 40 9C 45 |5000.000000 | maximal length of laser sight vector }}<br />
{{OBDtr| 0x024 | color |FFFFC8| 00 00 FF FF | 0, 0, 255; 255 | laser sight color (blue, green, red); laser sight transparency }}<br />
{{OBDtr| 0x028 | link |C8FFC8| 01 94 05 00 | 1428 | crosshair texture (link to 01428-target_1A.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x02C | color |C8FFC8| FF FF FF 00 |255, 255, 255; 0| crosshair background color (blue, green, red); crosshair background transparency }}<br />
{{OBDtr| 0x030 | float |C8FFC8| CD CC 4C 3F | 0.800000 | crosshair scale factor }}<br />
{{OBDtr| 0x034 | link |C8FFFF| 01 95 05 00 | 1428 | locked crosshair texture (link to 01429-target_1B.[[OBD:TXMP|TXMP]]) }}<br />
{{OBDtr| 0x038 | color |C8FFFF| FF FF FF 00 |255, 255, 255; 0| locked crosshair background color (blue, green, red); locked crosshair background transparency }}<br />
{{OBDtr| 0x03C | float |C8FFFF| CD CC 4C 3F | 0.800000 | locked crosshair scale factor }}<br />
{{OBDtr| 0x040 | link |FFC8FF| 00 00 00 00 | unused | tunnel texture (link to a [[OBD:TXMP|TXMP]]) file }}<br />
{{OBDtr| 0x044 | color |FFC8FF| FF FF FF 00 |255, 255, 255; 0| tunnel background color (blue, green, red); tunnel background transparency }}<br />
{{OBDtr| 0x048 | float |FFC8FF| 00 00 80 3F | 1.000000 | tunnel scale factor }}<br />
{{OBDtr| 0x04C | int32 |FFC800| 0F 00 00 00 | 15 | number of tunnel textures }}<br />
{{OBDtr| 0x050 | float |C800C8| 00 00 20 41 | 10.000000 | spacing of tunnel textures }}<br />
|}<br />
<br />
<br />
;Crosshair<br />
:Default crosshair appears where the laser sight hits environment, corpses, etc<br />
:Locked crosshair appears when the laser sight hits characters (including the shooter)<br />
:"Tunnel" is used by '''w8_mbo''' as a complement to the crosshair<br />
:'''w2_sap''', '''w5_sbg''', '''w7_scc''' and '''w9_scr''' use it with no crosshair<br />
<br />
<br />
===0x054 to 0x05F - Ammo meter===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x054 | link |C87C64| 01 7E 0E 00 | 3710 | link to 03710-tap_icon.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x058 | link |C87C64| 01 7F 0E 00 | 3711 | link to 03711-tap_empty.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x05C | link |C87C64| 01 80 0E 00 | 3712 | link to 03712-tap_fill.[[OBD:TXMP|TXMP]] }}<br />
|}<br />
<br />
<br />
===0x060 to 0x0D7 - Weapon parameters===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x060 | link |C87C64| 01 76 0E 00 | 3702 | link to 03702-.M3GM }}<br />
{{OBDtr2|0x064 | char[32] |B0C3D4| w1_tap | weapon name }}<br />
{{OBDtr| 0x084 | float |E7CEA5| 00 00 80 3F | 1.000000 | weapon mouse sensitivity (applies on AI, too) }}<br />
{{OBDtr| 0x088 | float |E7CEA5| A6 92 2B 3D | 0.041888 | recoil base (e.g. for w1_tap and w2_sap) }}<br />
{{OBDtr| 0x08C | float |E7CEA5| 92 0A 86 3E | 0.261799 | recoil max }}<br />
{{OBDtr| 0x090 | float |E7CEA5| 00 00 A0 40 | 5.000000 | recoil factor }}<br />
{{OBDtr| 0x094 | float |E7CEA5| E2 A3 7B 3B | 0.003839 | recoil return speed }}<br />
{{OBDtr| 0x098 | float |E7CEA5| 88 C3 E4 3A | 0.001745 | secondHandVector X}}<br />
{{OBDtr| 0x09C | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Y}}<br />
{{OBDtr| 0x0A0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandVector Z}}<br />
{{OBDtr| 0x0A4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector X }}<br />
{{OBDtr| 0x0A8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Y}}<br />
{{OBDtr| 0x0AC | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandUpVector Z}}<br />
{{OBDtr| 0x0B0 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition X}}<br />
{{OBDtr| 0x0B4 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Y}}<br />
{{OBDtr| 0x0B8 | float |E7CEA5| 00 00 00 00 | 0.000000 | secondHandPosition Z}}<br />
{{OBDtr| 0x0BC | float |E7CEA5| 00 00 00 00 | 0.000000 | unknown }}<br />
{{OBDtr| 0x0C0 | int16 |FFDDDD| 00 00 | 0 | freeTime ???; always zero }}<br />
{{OBDtr| 0x0C2 | int16 |FFDDDD| 95 00 | 149 | recoil animation type (149 <nowiki>=</nowiki> autopistol_recoil) }}<br />
{{OBDtr| 0x0C4 | int16 |FFDDDD| A4 00 | 164 | reload animation type (164 <nowiki>=</nowiki> reload_pistol) }}<br />
{{OBDtr| 0x0C6 | int16 |FFDDDD| 19 00 | 25 | pause after reload in 1/60 seconds }}<br />
{{OBDtr| 0x0C8 | int16 |FFDDDD| 0A 00 | 10 | amount of shots }}<br />
{{OBDtr| 0x0CA | int16 |FFDDDD| 06 00 | 6 | amount of particles }}<br />
{{OBDtr| 0x0CC | int16 |FFDDDD| 01 00 | 1 | amount of firing modes }}<br />
{{OBDtr| 0x0CE | int16 |FFDDDD| 0A 00 | 10 | pause before reload in 1/60 seconds }}<br />
{{OBDtr| 0x0D0 | int16 |FFDDDD| 04 00 | 4 | release delay; delay between the moment the trigger is released and the moment the weapon stops firing }}<br />
{{OBDtr| 0x0D2 | int16 |FFDDDD| 00 00 | 0 | unknown; always zero }}<br />
{{OBDtr| 0x0D4 | int32 |FFDDDD| 30 | 0x30 C0 02 00 | weapon options; the following bits are possible (values in hex):<br />
<br />
:0x'''02''' 00 00 00 - weapon can't be holstered<br />
:0x'''04''' 00 00 00 - weapon reloads with energy cells<br />
:0x'''08''' 00 00 00 - weapon is a rifle (two-handed)<br />
:0x'''10''' 00 00 00 - recoil affects aiming<br />
:0x'''20''' 00 00 00 - sustained fire (applies only to primary fire)<br />
:0x'''40''' 00 00 00 - runtime only; do not use<br />
:0x'''80''' 00 00 00 - stun switcher; used for w6_vdg, see below<br />
<br />
:0x00 '''01''' 00 00 - knockdown switcher; used for w4_psm, see below<br />
:0x00 '''02''' 00 00 - unknown; used for w5_sbg and w11_ba1<br />
:0x00 '''04''' 00 00 - secondary fire enabled<br />
:0x00 '''08''' 00 00 - barabbas weapon; see below<br />
:0x00 '''10''' 00 00 - heavy weapon; run, jump and creep disabled<br />
:0x00 '''20''' 00 00 - auto release trigger; used for w11_ba1<br />
:0x00 '''40''' 00 00 - has release delay; see the release delay field above<br />
:0x00 '''80''' 00 00 - laser sight visible<br />
<br />
:0x00 00 '''02''' 00 - crosshair scaling, used for w1_tap, w2_sap, w3_phr and w8_mbo<br />
:0x00 00 '''08''' 00 - weapon doesn't fade<br />
:0x00 00 '''10''' 00 - drain ammo; used by w4_psm to decrement ammo while firing because its firing mode is continuous rather than repetitive<br />
}}<br />
|}<br />
<br />
<br />
'''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<br />
<br />
'''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<br />
<br />
'''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 beginn, then always this weapon is teleported back to character (when command used again)<br />
<br />
==0x0D8 to 0x1D7 - Firing modes==<br />
<br />
<br />
Every ONWC has 2 firing mode slots (128 = 0x80 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
<br />
===0x0D8 to 0x157 - Primary firing mode===<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x0D8 | int32 |64AAAA| 00 00 00 00 | 0 | firing mode options; the following bits are possible (values in hex):<br />
:0x'''01''' 00 00 00 - unknown; something to do with keeping/altering "prediction" when the target changes<br />
}}<br />
{{OBDtr| 0x0DC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix XX }}<br />
{{OBDtr| 0x0E0 | float |EBEBEB| 05 6D 56 3D | 0.052350 | transform matrix XY }}<br />
{{OBDtr| 0x0E4 | float |EBEBEB| F4 8D A9 37 | 0.000020 | transform matrix XZ }}<br />
{{OBDtr| 0x0E8 | float |EBEBEB| 05 6D 56 BD | -0.052350 | transform matrix YX }}<br />
{{OBDtr| 0x0EC | float |EBEBEB| 23 A6 7F 3F | 0.998629 | transform matrix YY }}<br />
{{OBDtr| 0x0F0 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix YZ }}<br />
{{OBDtr| 0x0F4 | float |EBEBEB| F4 8D A9 B7 | -0.000020 | transform matrix ZX }}<br />
{{OBDtr| 0x0F8 | float |EBEBEB| D0 1D 0E B5 | -0.000001 | transform matrix ZY }}<br />
{{OBDtr| 0x0FC | float |EBEBEB| 00 00 80 3F | 1.000000 | transform matrix ZZ }}<br />
{{OBDtr| 0x100 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation X; always zero for original weapons }}<br />
{{OBDtr| 0x104 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Y; always zero for original weapons }}<br />
{{OBDtr| 0x108 | float |EBEBEB| 00 00 00 00 | 0.000000 | translation Z; always zero for original weapons }}<br />
{{OBDtr| 0x10C | float |EBEBEB| 23 A6 7F 3F | 0.998629 | firing spread direction X component }}<br />
{{OBDtr| 0x110 | float |EBEBEB| AE 6C 56 BD | -0.052349 | firing spread direction Y component }}<br />
{{OBDtr| 0x114 | float |EBEBEB| AF 8D A9 B7 | -0.000020 | firing spread direction Z component }}<br />
{{OBDtr| 0x118 | float |EBEBEB| DC FE 08 3C | 0.008362 | targeting vector origin X component? }}<br />
{{OBDtr| 0x11C | float |EBEBEB| 5C 11 23 3E | 0.159246 | targeting vector origin Y component? }}<br />
{{OBDtr| 0x120 | float |EBEBEB| 39 C6 2A 3F | 0.667087 | targeting vector origin Z component? }}<br />
{{OBDtr| 0x124 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x128 | float |EBEBEB| 00 00 20 41 | 10.000000 | 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 }}<br />
{{OBDtr| 0x12C | float |EBEBEB| 00 00 20 40 | 2.500000 | unknown; always the same; possible related to the inaccuracy angle above }}<br />
{{OBDtr| 0x130 | float |EBEBEB| 00 00 96 43 | 300.000000 | 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<nowiki>=</nowiki>1* (but you have to be in a large open area, since those ranges are quite big) }}<br />
{{OBDtr| 0x134 | float |EBEBEB| 00 00 40 41 | 12.000000 | 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 }}<br />
{{OBDtr| 0x138 | float |EBEBEB| 00 00 61 44 | 900.000000 | 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 }}<br />
{{OBDtr| 0x13C | int16 |8C8CCC| 05 00 | 5 | unknown; always the same }}<br />
{{OBDtr| 0x13E | int16 |8C8CCC| 01 00 | 1 | skill index (in the [[ONCC]] shooting skill table) }}<br />
{{OBDtr| 0x140 | int32 |8C8CCC| 00 00 00 00 | 0 | fight timer, 240 for w4_psm, 200 for v6_vdg }}<br />
{{OBDtr| 0x144 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile speed (150 for SBG, 160 for WMC) }}<br />
{{OBDtr| 0x148 | float |FF00C8| 00 00 00 00 | 0.000000 | ballistic projectile gravity, can be negative for firing at the enemy's feet (0.5 for SBG, 0.3 for WMC) }}<br />
{{OBDtr| 0x14C | float |FF00C8| 00 00 34 43 | 180.000000 | 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<nowiki>=</nowiki>1* (180 for w1_tap, 150 for w2_sap, 120 for w4_psm) }}<br />
{{OBDtr| 0x150 | float |FF00C8| 00 00 40 40 | 3.000000 | length of the firingspread's base side; can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 }}<br />
{{OBDtr| 0x154 | float |FF00C8| 50 77 D6 3D | 0.104719 | angle between firingspread's base and its altitude(length); can be seen by ai2_showfiringspreads<nowiki>=</nowiki>1 (0.1 for w1_tap, 0.21 for w2_sap) }}<br />
|}<br />
<br />
<br />
;Transform matrix<br />
:Probably defines the orientation, scaling and position of the firing spread. It doesn't appear to be used.<br />
<br />
===0x158 to 0x1D7 - Secondary firing mode===<br />
<br />
<br />
The only original weapon for which these fields are not all zero is '''w11_ba1'''.<br />
<br />
They are the exact counterparts of the fields at 0xD8 - 0x157.<br />
<br />
<br />
==0x1D8 to 0x6D7 - Weapon particle array==<br />
<br />
<br />
Every ONWC has 16 particle slots (80 = 0x50 bytes each.)<br />
<br />
The number of slots actually used by the weapon is specified at 0xCA.<br />
<br />
Offsets are relative to the beginning of a slot.<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtrBK|1=First of 16 elements (black outline).}}<br />
{{OBDtr| 0x000 | float |F0F096| AE 6C 56 3D | 0.052349 | transformation matrix, xx term }}<br />
{{OBDtr| 0x004 | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, xy term }}<br />
{{OBDtr| 0x008 | float |F0F096| C2 53 90 B3 | -0.000000... | transformation matrix, xz term }}<br />
{{OBDtr| 0x00C | float |F0F096| 23 A6 7F 3F | 0.998629 | transformation matrix, yx term }}<br />
{{OBDtr| 0x010 | float |F0F096| AE 6C 56 BD | -0.052349 | transformation matrix, yy term }}<br />
{{OBDtr| 0x014 | float |F0F096| AF 8D A9 B7 | -0.000020 | transformation matrix, yz term }}<br />
{{OBDtr| 0x018 | float |F0F096| BA 59 A9 B7 | -0.000020 | transformation matrix, zx term }}<br />
{{OBDtr| 0x01C | float |F0F096| 5B 02 85 35 | 0.000001 | transformation matrix, zy term }}<br />
{{OBDtr| 0x020 | float |F0F096| 00 00 80 BF | -1.000000 | transformation matrix, zz term }}<br />
{{OBDtr| 0x024 | float |F0F096| 6F 63 57 40 | 3.365444 | x-offset of particle to weapon }}<br />
{{OBDtr| 0x028 | float |F0F096| B3 1D 89 BC | -0.016738 | y-offset of particle to weapon }}<br />
{{OBDtr| 0x02C | float |F0F096| C5 C1 2A 3F | 0.667019 | z-offset of particle to weapon }}<br />
{{OBDtr2|0x030 | char[16] |00C864| w1_tap_e01 | particle name (reference to 06226-3RAPw1_tap_e01.[[OBD:BINA/PAR3|BINA]]) }}<br />
{{OBDtr| 0x040 | int32 |00C8FF| 00 00 00 00 | 0 | runtime only (pointer to particle class) }}<br />
{{OBDtr| 0x044 | int16 |00C8FF| 01 00 | 1 | ammo decrement (different for the 2 firing modes of w11_ba1) }}<br />
{{OBDtr| 0x046 | int16 |00C8FF| 0C 00 | 12 | delay between shots in frames (12 frames <nowiki>=</nowiki> 0.2 seconds) }}<br />
{{OBDtr| 0x048 | int16 |00C8FF| 04 00 | 4 | 'roughjustice' delay between shots in frames }}<br />
{{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 }}<br />
{{OBDtr| 0x04C | int16 |00C8FF| 00 00 | 0 | 0 <nowiki>=</nowiki> particle is triggered by fire1; 1 <nowiki>=</nowiki> particle is triggered by fire2; -1 <nowiki>=</nowiki> particle is triggered by both firing modes }}<br />
{{OBDtr| 0x04E | int16 |00C8FF| 00 00 | 0 | delay before firing }}<br />
|}<br />
<br />
<br />
;Transformation matrix<br />
:That's what defines orientation, stretching, etc.<br />
:See [[OBD:CRSA|CRSA]] for details.<br />
<br />
==0x6D8 to 0x71F - End of file==<br />
<br />
<br />
[[image:onwc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr2|0x6D8 | char[32] |C80040| weapon _empty | empty weapon sound (reference to 08993-weapon_empty.[[OBD:OSBD/OSIm|imp.OSBD]]) }}<br />
{{OBDtr| 0x6F8 | int32 |FFCD96| 00 00 00 00 | 0 | runtime only (pointer to empty weapon sound) }}<br />
{{OBDtr| 0x6FC | link |C8C864| 01 81 0E 00 | 3713 | link to 03713-w1_glow.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x700 | link |C8C864| 01 82 0E 00 | 3714 | link to 03714-w1_glow_ammo.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x704 | float |0096C8| 00 00 80 3F | 1.000000 | x-scale factor of glow textures }}<br />
{{OBDtr| 0x708 | float |0096C8| 00 00 80 3F | 1.000000 | z-scale factor of glow textures }}<br />
{{OBDtr| 0x70C | float |0096C8| 76 65 EB 3F | 1.839034 | x-offset of pickup handle }}<br />
{{OBDtr| 0x710 | float |0096C8| 96 4C A9 3D | 0.082666 | y-offset of pickup handle }}<br />
{{OBDtr| 0x714 | float |0096C8| 06 E2 14 3E | 0.145393 | z-offset of pickup handle }}<br />
{{OBDtr| 0x718 | float |0096C8| 00 00 00 00 | 0.000000 | hovering height of unheld weapon }}<br />
{{OBDtr| 0x71C | char[4] |FF80C0| AD DE | dead | unused }}<br />
|}<br />
<br />
<br />
;Glow textures<br />
: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.<br />
;Pickup handle<br />
:The tolerance is hardcoded. The offsets are not relative to the weapon's axes, but to the world axes (!).<br />
:This is a rather nasty "feature" (actually, the offsets ''should'' be relative to the weapon's orientation)<br />
: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.<br />
<br />
<br />
{{OBD_File_Footer | type=ONWC | prev=ONVL | next=OPge | name=Oni Weapon Class | family=Level}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONCC&diff=17401OBD:ONCC2010-08-28T01:16:04Z<p>Gumby: </p>
<hr />
<div>{{OBD_File_Header | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character | align=center}}<br />
<br />
<br />
[[image:oncc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 DF 03 00 | 991 | 00991-konoko_generic.ONCC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 06 | 0 | level 3 }}<br />
{{OBDtr| 0x008 | float |00FF00| CD CC 0C 3F | 0.550000 | downwards velocity? (unknown, always 0.55) }}<br />
{{OBDtr| 0x00C | float |00FF00| 8F C2 75 3D | 0.060000 | downward gravity acceleration }}<br />
{{OBDtr| 0x010 | float |00FF00| CD CC 8C 3F | 1.100000 | starting velocity for a simple (tap) JUMP }}<br />
{{OBDtr| 0x014 | float |00FF00| 00 00 80 C0 | -4.000000 | limit velocity for jumping and gravity flight }}<br />
{{OBDtr| 0x018 | float |00FF00| 8F C2 F5 3C | 0.030000 | upward acceleration (jetpack) if you hold JUMP }}<br />
{{OBDtr| 0x01C | int16 |00FFFF| 07 00 | 7 | gravity timer? (unknown, always 7) }}<br />
{{OBDtr| 0x01E | int16 |00FFFF| 14 00 | 20 | jetpack timer; time during which you can use the jetpack }}<br />
{{OBDtr| 0x020 | float |FF00FF| 00 00 34 42 | 45.000000 | maximal falling height without damage }}<br />
{{OBDtr| 0x024 | float |FF00FF| 00 00 07 43 | 135.000000 | maximal falling height with damage }}<br />
|}<br />
<br />
<br />
;Units:times are in frames<br />
:heights are in world units<br />
:velocities are in world units per frames<br />
:accelerations are in world units per frames squared<br />
;Downwards velocity: could correspond to the steady push experienced when neither jumping nor falling<br />
:would be roughly equivalent to the starting velocity of a fall<br />
:although the value .55 seems right, the "sinking" seems to be hardcoded now<br />
;Gravity timer:Seems to be hardcoded now (could be the time until gravity switches on)<br />
;Jetpack timer:You can press JUMP multiple times during the time window (quite fun!)<br />
;Falling height: let FH1 be the height at 0x20<br />
:let FH2 be the height at 0x24<br />
:let BH be the base health of the character<br />
:let FH be the actual falling height<br />
:then, if FH > FH2, the character is killed<br />
:if FH < FH1, the character takes no damage<br />
:if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x028 | link |FF8000| 01 F8 03 00 | 1016 | link to 01016-shadow1.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x02C | float |FF8000| 00 00 40 41 | 12.000000 | height where the shadow fades out completely }}<br />
{{OBDtr| 0x030 | float |FF8000| 00 00 00 41 | 8.000000 | height where the diameter of the shadow decreases and the shadow fades out half }}<br />
{{OBDtr| 0x034 | float |FF8000| 00 00 C0 40 | 6.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x038 | float |FF8000| 00 00 90 40 | 4.500000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x03C | float |FF8000| 00 00 40 40 | 3.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x040 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the first part of a jump }}<br />
{{OBDtr| 0x042 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the second part of a jump }}<br />
|}<br />
<br />
;Jump Constants?<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x044 | float |FF0080| 00 00 C8 41 | 25.000000 | unknown; always the same }}<br />
{{OBDtr| 0x048 | int8 |FFC8C8| 16 | 22 | unknown }}<br />
{{OBDtr| 0x049 | int8 |FFC8C8| 06 | 6 | unknown; always the same }}<br />
{{OBDtr| 0x04A | char[2] |FFC8C8| AD DE | dead | unused; always the same }}<br />
|}<br />
<br />
;Cover\autofreeze\Inventory Constants?<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x04C | float |FFFFC8| 00 00 20 42 | 40.000000 | unknown; always the same }}<br />
{{OBDtr| 0x050 | float |FFFFC8| 00 00 96 43 | 300.000000 | unknown; always the same }}<br />
{{OBDtr| 0x054 | float |FFFFC8| 35 FA 8E 3C | 0.017453 | unknown; always the same (0.017453 <nowiki>=</nowiki> PI/180) }}<br />
{{OBDtr| 0x058 | float |FFFFC8| DB 0F C9 3F | 1.570796 | unknown; always the same (1.57 <nowiki>=</nowiki> PI/2) }}<br />
{{OBDtr| 0x05C | float |FFFFC8| 00 00 A0 40 | 5.000000 | unknown; always the same }}<br />
{{OBDtr| 0x060 | float |FFFFC8| 00 00 80 3F | 1.000000 | unknown; always the same }}<br />
{{OBDtr| 0x064 | int16 |C8FFC8| 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint }}<br />
{{OBDtr| 0x066 | char[2] |C8FFC8| AD DE | dead | unused }}<br />
|}<br />
<br />
;LOD Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x068 | float |C8FFFF| 00 10 3D 48 |193600.000000| unknown; always the same; this is 440 squared }}<br />
{{OBDtr| 0x06C | float |C8FFFF| 00 10 3D 47 | 48400.000000| unknown; always the same; this is 220 squared }}<br />
{{OBDtr| 0x070 | float |C8FFFF| 00 10 3D 46 | 12100.000000| unknown; always the same; this is 110 squared }}<br />
{{OBDtr| 0x074 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
{{OBDtr| 0x078 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
|}<br />
<br />
<br />
;Hurt sound paramters<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x07C | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x07E | int16 |FFC8FF| 5A 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x080 | int16 |FFC8FF| 0F 00 | 15 | unknown; always the same }}<br />
{{OBDtr| 0x082 | int16 |FFC8FF| 78 00 | 120 | unknown; always the same }}<br />
{{OBDtr| 0x084 | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x086 | int16 |FFC8FF| 01 00 | 1 | unknown; always the same }}<br />
{{OBDtr| 0x088 | int16 |FFC8FF| 02 00 | 2 | unknown; always the same }}<br />
{{OBDtr| 0x08A | int16 |FFC8FF| 64 00 | 100 | unknown; always the same }}<br />
{{OBDtr| 0x08C | int16 |FFC8FF| 0A 00 | 10 | unknown; always the same }}<br />
{{OBDtr| 0x08E | int16 |FFC8FF| 0C 00 | 12 | unknown; always the same }}<br />
{{OBDtr| 0x090 | int16 |FFC8FF| 16 00 | 22 | unknown; always the same }}<br />
{{OBDtr| 0x092 | int8 |FFC800| 00 | 0 | used at runtime only: if one sound pointers have been set }}<br />
{{OBDtr| 0x093 | char[1] |C800C8| DE | dead | unused; always the same }}<br />
{{OBDtr| 0x094 | float |C87C64| 00 00 00 3F | 0.500000 | unknown; always the same (sound volume?) }}<br />
{{OBDtr2|0x098 | char[32] |B0C3D4| konoko_hurt_light | hurt light sound (reference to 08121-konoko_hurt_light.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium | hurt medium sound (reference to 08123-konoko_hurt_medium.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy | hurt heavy sound (reference to 08119-konoko_hurt_heavy.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death | death sound (reference to 08115-konoko_death.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr| 0x118 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt light sound }}<br />
{{OBDtr| 0x11C | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt medium sound }}<br />
{{OBDtr| 0x120 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt heavy sound }}<br />
{{OBDtr| 0x124 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to death sound }}<br />
|}<br />
<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x128 | bitsets |E7CEA5| 17 00 00 00 | 23 | general AI option bitset collection ; see below }}<br />
{{OBDtr| 0x12C | float |FFDDDD| 00 00 80 3F | 1.000000 | AI rotation speed factor }}<br />
{{OBDtr| 0x130 | int16 |64AAAA| 06 00 | 6 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x132 | int16 |64AAAA| 18 00 | 24 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x134 | int16 |EBEBEB| 0F 00 | 15 | minimal realize firingspread time; (???number of frames???time in miliseconds???) after which AI realizes that it is in the firing spread (and it starts dodging) }}<br />
{{OBDtr| 0x136 | int16 |EBEBEB| 00 00 | 0 | maximal realize firingspread time; (???number of frames???time in miliseconds???) }}<br />
|}<br />
<br />
<br />
;AI rotation speed factor<br />
:reference rotation speed is about 1 turn (360&#65533;) per second<br />
:the setting is only effective if the AI is in control<br />
:so it's a bit like the AI's mouse sensitivity :)<br />
<br />
<br />
;General AI options bitset<br />
:allows or disables some parts of the AI behavior<br />
*NONE - startle anim is enabled, rest is disabled<br />
*0x01 - startle anim disabled<br />
*0x02 - firingspread/projectile dodge enabled for melee<br />
*0x04 - requires 0x02; firingspread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging<br />
*0x08 - requires 0x02, overrides 0x04 if both are set; firingspread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter<br />
*0x10 - bit not used<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x138 | float |8C8CCC| 00 00 80 3F | 1.000000 | minimal firingspread dodge amount; IMO similar to maneouvre variable, it tells AI how long it should perform dodging/hiding in response to some time spent inside firing spread (so setting this very high means that once enemy starts dodging/hiding, he will perform it even after firing spread disappears) }}<br />
{{OBDtr| 0x13C | float |8C8CCC| 00 00 80 3F | 1.000000 | maximal firingspread dodge amount; IMO similar to maneouvre variable }}<br />
{{OBDtr| 0x140 | float |8C8CCC| 00 00 00 3F | 0.500000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x144 | float |8C8CCC| 00 00 C8 41 | 25.000000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x148 | float |8C8CCC| 00 00 80 3F | 1.000000 | unknown; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x14C | int32 |FF00C8| 00 00 00 00 | 0 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x150 | int32 |FF00C8| 05 00 00 00 | 5 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x154 | int32 |FF00C8| 0F 00 00 00 | 15 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x158 | int32 |FF00C8| 3C 00 00 00 | 60 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtrBK|1=First of 13 elements (grey outline) }}<br />
{{OBDtr| 0x15C | float |F0F096| 00 00 00 00 | 0.000000 | recoil compensation amount (0.0 <nowiki>= min, 1.0 =</nowiki> max) }}<br />
{{OBDtr| 0x160 | float |F0F096| 00 00 00 00 | 0.000000 | best aiming angle in radians }}<br />
{{OBDtr| 0x164 | float |F0F096| 00 00 00 00 | 0.000000 | shot grouping error }}<br />
{{OBDtr| 0x168 | float |F0F096| 00 00 80 3F | 1.000000 | shot grouping decay }}<br />
{{OBDtr| 0x16C | float |F0F096| 00 00 80 3F | 1.000000 | shooting inaccuracy multiplier }}<br />
{{OBDtr| 0x170 | int16 |00C864| 00 00 | 0 | minimum delay between shots in frames }}<br />
{{OBDtr| 0x172 | int16 |00C864| 00 00 | 0 | maximum delay between shots in frames }}<br />
|}<br />
<br />
<br />
;SHOOTING SKILLS<br />
These can be reviewed with e.g. '''ai2_skill_select konoko_generic w1_tap''' and then either '''ai2_skill_show''' (prints to console) or '''ai2_skill_save''' (prints to file)<br />
;Fields<br />
:recoil compensation amount, between 0 and 1 (float)<br />
:best aiming angle, in radians (float)<br />
:shot grouping error (float)<br />
:shot grouping decay (float)<br />
:shooting inaccuracy multiplier (float)<br />
:minimum delay between shots, in frames (short)<br />
:maximum delay between shots, in frames (short)<br />
The first weapon (weapon 0) is not in the game anymore, whatever that was. Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's ball, except '''w10_sni''' is still available) ('''w12_ba2''' and '''w11_ba1''' are a bit mixed up : the beam is made of '''w12_ba2''' particles, and the grenade is a '''w11_ba1''' particle...)<br />
<br />
See screenshot for the raw hex (example is '''konoko_generic''' from '''level3_Final''')<br />
{{Table|width=""|align="left"}}<br />
|-BGCOLOR="#E9E9E9" ALIGN=CENTER<br />
!Weapon ||Offset ||recoil||bestangle||error||decay||inaccuracy||delays<br />
|-ALIGN=CENTER <br />
|'''w0_sec''' ||0x15C/0x173|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w1_tap''' ||0x174/0x18B|| 0.0 || 0.000000|| 0.40|| 0.4 || 0.0 || 30 - 45<br />
|-ALIGN=CENTER <br />
|'''w2_sap''' ||0x18C/0x193|| 0.3 || 0.013962|| 0.13|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w3_phr''' ||0x194/0x20B|| 0.3 || 0.010472|| 0.05|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w4_psm''' ||0x20C/0x213|| 0.3 || 0.015707|| 0.03|| 0.2 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w5_sbg''' ||0x214/0x22B|| 0.3 || 0.001745|| 0.00|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w6_vdg''' ||0x22C/0x233|| 0.3 || 0.001745|| 0.13|| 0.9 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w7_scc''' ||0x234/0x24B|| 0.3 || 0.001745|| 0.05|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w8_mbo''' ||0x24C/0x253|| 0.3 || 0.005236|| 0.01|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w9_scr''' ||0x254/0x26B|| 0.3 || 0.010472|| 0.04|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w10_sni'''||0x26C/0x273|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w11_ba1'''||0x274/0x28B|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w12_ba2'''||0x28B/0x293|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|}<br />
<br clear=all><br />
<br />
<br />
[[image:oncc_m.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x294 | int32 |00C8FF| 5A 00 00 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x298 | int32 |00C8FF| F0 00 00 00 | 240 | unknown; always the same }}<br />
{{OBDtr| 0x29C | int32 |00C8FF| B4 00 00 00 | 180 | unknown; always the same }}<br />
{{OBDtr| 0x2A0 | int32 |00C8FF| 28 00 00 00 | 40 | taunt chance (40%) }}<br />
{{OBDtr| 0x2A4 | int32 |00C8FF| 37 00 00 00 | 55 | go for gun chance (55%); determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command }}<br />
{{OBDtr| 0x2A8 | int32 |00C8FF| 3C 00 00 00 | 60 | running pickup chance (60%); this value is possibility of AI running weapon pickup (acrobatics, slides) instead of normal "stop->pickup";this is calculated AFTER engine decides that AI should run for weapon }}<br />
{{OBDtr| 0x2AC | int16 |C80040| 00 00 | 0 | combat profile ID; for example *0D* is for Mutant Muro }}<br />
{{OBDtr| 0x2AE | int16 |C80040| 16 00 | 22 | melee profile ID }}<br />
{{OBDtr| 0x2B0 | int8 |FFCD96| 64 | 100 | "taunt" sound probability (always) }}<br />
{{OBDtr| 0x2B1 | int8 |FFCD96| 00 | 0 | "alert" sound probability (never) }}<br />
{{OBDtr| 0x2B2 | int8 |FFCD96| 00 | 0 | "startle" sound probability (never) }}<br />
{{OBDtr| 0x2B3 | int8 |FFCD96| 00 | 0 | "checkbody" sound probability (never) }}<br />
{{OBDtr| 0x2B4 | int8 |FFCD96| 00 | 0 | "pursue" sound probability (never) }}<br />
{{OBDtr| 0x2B5 | int8 |FFCD96| 00 | 0 | "cower" sound probability (never) }}<br />
{{OBDtr| 0x2B6 | int8 |FFCD96| 64 | 100 | "superpunch" probability (always) }}<br />
{{OBDtr| 0x2B7 | int8 |FFCD96| 64 | 100 | "superkick" probability (always) }}<br />
{{OBDtr| 0x2B8 | int8 |FFCD96| 00 | 0 | "super3" sound probability (never) }}<br />
{{OBDtr| 0x2B9 | int8 |FFCD96| 00 | 0 | "super4" sound probability (never) }}<br />
{{OBDtr| 0x2BA | int16 |C8C864| 00 00 | 0 | probably a blank filler (always the same) }}<br />
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko | "taunt" sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x2DC | char[32] |0096C8| unused | "alert" sound }}<br />
{{OBDtr2|0x2FC | char[32] |0096C8| unused | "startle" sound }}<br />
{{OBDtr2|0x31C | char[32] |0096C8| unused | "checkbody" sound }}<br />
{{OBDtr2|0x33C | char[32] |0096C8| unused | "pursue" sound }}<br />
{{OBDtr2|0x35C | char[32] |0096C8| unused | "cower" sound }}<br />
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko | "superpunch" sound (reference to 08110-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x39C | char[32] |0096C8| c18_79_15konoko | "superkick" sound (reference to 08112-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound (only the superninja uses this slot) }}<br />
{{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound (never used in Oni) }}<br />
{{OBDtr| 0x3FC | float |FF80C0| 00 80 ED 43 | 475.000000 | central vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki>1* }}<br />
{{OBDtr| 0x400 | float |FF80C0| 00 00 16 43 | 150.000000 | peripheral vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki> 1* }}<br />
{{OBDtr| 0x404 | float |FF80C0| 7D 1B 44 3F | 0.766044 | horizontal angle between two couples of "eye-rays" (one couple is left, one if right eye); works for both vision fields }}<br />
{{OBDtr| 0x408 | float |FF80C0| F3 B3 51 3F | 0.819152 | vision field curve for central vision field; vision field looks like something between cone and cylinder; this value affect central angle of that; the higher this value is, the more is this field wrapped in order to achieve shaper angle; when set lower, vision field unwraps totally and it looks like radar antenna, attached to a character by two couples of straight strings(one couple left, one right) }}<br />
{{OBDtr| 0x40C | float |FF80C0| E8 D5 12 3F | 0.573576 | vertical angle between eye-rays in one couple; this is for central vision field }}<br />
{{OBDtr| 0x410 | float |FF80C0| D5 D0 31 3E | 0.173648 | vision field curve for peripheral vision field }}<br />
{{OBDtr| 0x414 | float |FF80C0| 6B 61 D8 BE | 0.422618 | vertical angle between eye-rays in one couple; this is for peripheral vision field }}<br />
{{OBDtr| 0x418 | int32 |D0C0AF| B4 00 00 00 | 180 | hostilethreat definite timer; how long will AI know exactly where its enemy is even if it can't see him with central vision-field; AI attacks him; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x41C | int32 |D0C0AF| 84 03 00 00 | 900 | hostilethreat strong timer; how long will AI remain in strong feeling that there is the enemy, but will not attack him but investigate; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x420 | int32 |D0C0AF| 10 0E 00 00 | 3600 | hostilethreat weak timer; how long will AI remain in weak feeling of an enemy, just looking around aimlessly (Glance pursue mode); can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x424 | int32 |D0C0AF| 10 0E 00 00 | 3600 | friendlythreat definite timer; how long will AI know exactly where its ally (Syndicate saw Syndicate for example) is even if it can't see him with central vision-field; AI simply knows there is someone else nearby; maybe has further possibilities; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x428 | int32 |D0C0AF| 50 46 00 00 | 18000 | friendlythreat strong timer; how long will AI remain in strong feeling that there is someone else, but will not try to find him or look at him; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x42C | int32 |D0C0AF| A0 8C 00 00 | 36000 | friendlythreat weak timer; how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x430 | float |EEDDFF| 00 00 80 3F | 1.000000 | earshot radius; defines size of the sound-collision sphere around AI }}<br />
{{OBDtr| 0x434 | link |C5FF8A| 01 FB 03 00 | 1019 | link to 01019-konoko.[[OBD:ONCV|ONCV]]; defines variants and upgrades }}<br />
{{OBDtr| 0x438 | link |C5FF8A| 01 F9 03 00 | 1017 | link to [[OBD:ONCP|01017-.ONCP]]; lists the particles available for this character (trails, flashes, etc) }}<br />
{{OBDtr| 0x43C | link |C5FF8A| 01 FA 03 00 | 1018 | link to [[OBD:ONIA|01018-.ONIA]]; lists the special impact sounds (used for special combat moves) }}<br />
{{OBDtr| 0x440 | int8 |C5FF8A| 00 | unused | runtime only }}<br />
{{OBDtr| 0x441 | int8 |C5FF8A| 00 | unused | padding }}<br />
{{OBDtr| 0x442 | int16 |C5FF8A| 00 00 | unused | runtime only }}<br />
{{OBDtr2|0x444 | char[16] |C0C0C0| Light | modifier; either hardcoded or defunct (only visible in pm_mod_type.WMM_, level 0)<br />
edit: WMDD says: Effects found for Impact x on Material y with Modifier: pm_mod_types }}<br />
{{OBDtrBK|1=First of 15 impact elements. }}<br />
{{OBDtr2|0x454 | char[128] |FF0080| Footstep_Walk | walk impact (reference to 04124-Footstep_Walk.[[OBD:Impt|Impt]] of level 0); always the same; without the impacts you can't hear the steps of a character }}<br />
{{OBDtr| 0x4D4 | int16 |FF0080| FF FF | -1 | set at runtime to the value stored at 0x08 in [[OBD:Impt|Impt]] }}<br />
|}<br />
<br />
<br />
[[image:oncc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0xBF2 | int16 |FFFFA6| 00 00 | 0 | unknown; always the same; maybe only a filler }} <br />
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused | special death particle; only the mad bomber use it }} <br />
{{OBDtr| 0xC34 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC38 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC3C | link |0000BF| 01 E6 03 00 | 998 | link to [[OBD:TRBS|00998-konoko_body_high.TRBS]] }}<br />
{{OBDtr| 0xC40 | link |0000BF| 01 E7 03 00 | 999 | link to [[OBD:TRMA|00999-konoko002_high_texture_generic.TRMA]] }}<br />
{{OBDtr| 0xC44 | link |0000BF| 01 E8 03 00 | 1000 | link to [[OBD:CBPM|01000-.CBPM]] }}<br />
{{OBDtr| 0xC48 | link |0000BF| 01 EC 03 00 | 1004 | link to [[OBD:CBPI|01004-.CBPI]] }}<br />
{{OBDtr| 0xC4C | int32 |804040| 2C 01 00 00 | 300 | fight mode timer in 1/60 seconds }} <br />
{{OBDtr| 0xC50 | int32 |804040| 30 75 00 00 | 30000 | first idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC54 | int32 |804040| 30 75 00 00 | 30000 | second idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC58 | int32 |804040| C8 00 00 00 | 200 | basic health of the character model; extra health information for every unique character are stored in the [[OBD:BINA/OBJC/CHAR|Character.BINA]] file}} <br />
{{OBDtr| 0xC5C | int32 |804040| 48 00 00 00 | 72 | feetBits (these bits mark the characters feet)<br />
}} <br />
{{OBDtr| 0xC60 | float |FF22FF| 00 00 80 3F | 1.000000 | minimal body size factor }} <br />
{{OBDtr| 0xC64 | float |FF22FF| 00 00 80 3F | 1.000000 | maximal body size factor }} <br />
{{OBDtrBK| the following 7 float values corespond to damage types (see the [[OBD:BINA/PAR3|PAR3]] page for the 7 possible types of damage) }}<br />
{{OBDtr| 0xC68 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC6C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC70 | float |FF22FF| 00 00 00 3F | 0.500000 | stun timer; specifies how long should be this char stunned when hit with w6_vdg; the longest time possible to be stunned is when this byte is zero. Then this ONCC is stunned for 200 frames (30 frames for initial stagger + the rest of the frames is stun animation). The shortest time is for 1.000000 (no stagger/stun at all) }} <br />
{{OBDtr| 0xC74 | float |FF22FF| 00 00 80 3E | 0.250000 | unknown }} <br />
{{OBDtr| 0xC78 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC7C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC80 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC84 | float |FF22FF| 00 00 00 3F | 0.500000 | BossShield Protect Amount (testme) }}<br />
{{OBDtr| 0xC88 | link |808080| 01 F6 03 00 | 1014 | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]] }} <br />
{{OBDtr| 0xC8C | link |808080| 01 F6 03 00 | 1015 | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }} <br />
{{OBDtr| 0xC90 | int16 |FFAA82| 1E 00 | 30 | AI Rate of Fire (testme) }} <br />
{{OBDtr| 0xC92 | int16 |FFAA82| 00 00 | 0 | time between death and deletion, in frames (about 3 seconds for mad bomber) }} <br />
{{OBDtr| 0xC94 | bitset |00D900| 00 | 0 | TRSC bitset; see below }} <br />
{{OBDtr| 0xC95 | int8 |00D900| 01 | 1 | when set to 1 indicates that character has daodan powers (character does more damage in overpower mode)}} <br />
{{OBDtr| 0xC96 | int8 |00D900| 00 | 0 | when set to 1 indicates that character has supershield<br />
* is visible as red shield when overpowered<br />
* needs daodan flag above and 51% overpower to be enabled; chenille cheat works too<br />
* now it prevents damage from weapon fire and melee (exception are throws)<br />
* received (melee) hits cause not blue block flashes but orange flares (see [http://paradox.oni2.net/Bilder/blocked_attacks_on_51percent_overpower_plus_daodan-flag_plus_supershield.png HERE])<br />
}} <br />
{{OBDtr| 0xC97 | int8 |00D900| 00 | 0 | when set to 1, generically turns on '''canttouchthis''' cheat for this ONCC (used by MutantMuro.ONCC }} <br />
{{OBDtr| 0xC98 | char[8] |CACAFF| AD DE | dead | unused }} <br />
|}<br />
<br />
<br />
;Body size factor<br />
The body size of a model will be scaled uniformly by a random coefficient that falls in the range defined with 0xC60 and 0xC64. This is apparently a provision for increasing the variety of appearances in classes like TCTF soldiers; unique characters like Konoko get a range of 1.0 to 1.0. The basis or seed for the randomness is apparently the time and/or order of spawning of that character, and therefore the "random" size of the character can be reproduced consistently as long as the execution of the code is the same each time. To illustrate, find the following code in IGMD/manplant/manplant_cutscene.bsl:<br />
<gallery align="right"><br />
File:ONCC_body_size_factor-original.jpg|Sample 1<br />
File:ONCC_body_size_factor-spawn_order_change.jpg|Sample 2<br />
File:ONCC_body_size_factor-sleep_insertion.jpg|Sample 3<br />
</gallery><br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
When you play the opening cutscene for Chapter 2, Agent Thorson should appear as he does in the first pic in the table to the right. Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2<br />
<br />
ai2_spawn Recep</tt><br />
<br />
and he'll appear as in the middle pic. Look out, he's a giant! Even the receptionist is bigger! Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
sleep 15<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
and you'll also get a deluxe-sized Thorson (right pic), though not as big as before. In complex scripts, body size quickly becomes truly random-seeming, but as you can see, in situations where the spawn function is called near the beginning of the code, before there is an opportunity for too much forking and branching, the results are quite reproducible.<br />
<br />
;TRSC bitset<br />
:determines whether character is left-hander or right-hander (weapon is attached to left or right fist bone) Must be consistent with TRSC or glitches appear. Possibilities are:<br />
:NONE - Character is right-hander with both pistols and rifles<br />
:0x01 - Character is left-hander with both pistols and rifles<br />
:0x02 - Character is left-hander with pistols but "right-hander" with rifles (however, animations for rifles are treated as left-handed)<br />
{{OBD_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONCC&diff=17400OBD:ONCC2010-08-28T01:12:04Z<p>Gumby: </p>
<hr />
<div>{{OBD_File_Header | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character | align=center}}<br />
<br />
<br />
[[image:oncc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 DF 03 00 | 991 | 00991-konoko_generic.ONCC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 06 | 0 | level 3 }}<br />
{{OBDtr| 0x008 | float |00FF00| CD CC 0C 3F | 0.550000 | downwards velocity? (unknown, always 0.55) }}<br />
{{OBDtr| 0x00C | float |00FF00| 8F C2 75 3D | 0.060000 | downward gravity acceleration }}<br />
{{OBDtr| 0x010 | float |00FF00| CD CC 8C 3F | 1.100000 | starting velocity for a simple (tap) JUMP }}<br />
{{OBDtr| 0x014 | float |00FF00| 00 00 80 C0 | -4.000000 | limit velocity for jumping and gravity flight }}<br />
{{OBDtr| 0x018 | float |00FF00| 8F C2 F5 3C | 0.030000 | upward acceleration (jetpack) if you hold JUMP }}<br />
{{OBDtr| 0x01C | int16 |00FFFF| 07 00 | 7 | gravity timer? (unknown, always 7) }}<br />
{{OBDtr| 0x01E | int16 |00FFFF| 14 00 | 20 | jetpack timer; time during which you can use the jetpack }}<br />
{{OBDtr| 0x020 | float |FF00FF| 00 00 34 42 | 45.000000 | maximal falling height without damage }}<br />
{{OBDtr| 0x024 | float |FF00FF| 00 00 07 43 | 135.000000 | maximal falling height with damage }}<br />
|}<br />
<br />
<br />
;Units:times are in frames<br />
:heights are in world units<br />
:velocities are in world units per frames<br />
:accelerations are in world units per frames squared<br />
;Downwards velocity: could correspond to the steady push experienced when neither jumping nor falling<br />
:would be roughly equivalent to the starting velocity of a fall<br />
:although the value .55 seems right, the "sinking" seems to be hardcoded now<br />
;Gravity timer:Seems to be hardcoded now (could be the time until gravity switches on)<br />
;Jetpack timer:You can press JUMP multiple times during the time window (quite fun!)<br />
;Falling height: let FH1 be the height at 0x20<br />
:let FH2 be the height at 0x24<br />
:let BH be the base health of the character<br />
:let FH be the actual falling height<br />
:then, if FH > FH2, the character is killed<br />
:if FH < FH1, the character takes no damage<br />
:if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x028 | link |FF8000| 01 F8 03 00 | 1016 | link to 01016-shadow1.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x02C | float |FF8000| 00 00 40 41 | 12.000000 | height where the shadow fades out completely }}<br />
{{OBDtr| 0x030 | float |FF8000| 00 00 00 41 | 8.000000 | height where the diameter of the shadow decreases and the shadow fades out half }}<br />
{{OBDtr| 0x034 | float |FF8000| 00 00 C0 40 | 6.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x038 | float |FF8000| 00 00 90 40 | 4.500000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x03C | float |FF8000| 00 00 40 40 | 3.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x040 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the first part of a jump }}<br />
{{OBDtr| 0x042 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the second part of a jump }}<br />
|}<br />
<br />
;Jump Constants?<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x044 | float |FF0080| 00 00 C8 41 | 25.000000 | unknown; always the same }}<br />
{{OBDtr| 0x048 | int8 |FFC8C8| 16 | 22 | unknown }}<br />
{{OBDtr| 0x049 | int8 |FFC8C8| 06 | 6 | unknown; always the same }}<br />
{{OBDtr| 0x04A | char[2] |FFC8C8| AD DE | dead | unused; always the same }}<br />
|}<br />
<br />
;Cover\autofreeze\Inventory Constants?<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x04C | float |FFFFC8| 00 00 20 42 | 40.000000 | unknown; always the same }}<br />
{{OBDtr| 0x050 | float |FFFFC8| 00 00 96 43 | 300.000000 | unknown; always the same }}<br />
{{OBDtr| 0x054 | float |FFFFC8| 35 FA 8E 3C | 0.017453 | unknown; always the same (0.017453 <nowiki>=</nowiki> PI/180) }}<br />
{{OBDtr| 0x058 | float |FFFFC8| DB 0F C9 3F | 1.570796 | unknown; always the same (1.57 <nowiki>=</nowiki> PI/2) }}<br />
{{OBDtr| 0x05C | float |FFFFC8| 00 00 A0 40 | 5.000000 | unknown; always the same }}<br />
{{OBDtr| 0x060 | float |FFFFC8| 00 00 80 3F | 1.000000 | unknown; always the same }}<br />
{{OBDtr| 0x064 | int16 |C8FFC8| 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint }}<br />
{{OBDtr| 0x066 | char[2] |C8FFC8| AD DE | dead | unused }}<br />
|}<br />
<br />
;LOD Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x068 | float |C8FFFF| 00 10 3D 48 |193600.000000| unknown; always the same; this is 440 squared }}<br />
{{OBDtr| 0x06C | float |C8FFFF| 00 10 3D 47 | 48400.000000| unknown; always the same; this is 220 squared }}<br />
{{OBDtr| 0x070 | float |C8FFFF| 00 10 3D 46 | 12100.000000| unknown; always the same; this is 110 squared }}<br />
{{OBDtr| 0x074 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
{{OBDtr| 0x078 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
|}<br />
<br />
<br />
;Hurt sound paramters<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x07C | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x07E | int16 |FFC8FF| 5A 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x080 | int16 |FFC8FF| 0F 00 | 15 | unknown; always the same }}<br />
{{OBDtr| 0x082 | int16 |FFC8FF| 78 00 | 120 | unknown; always the same }}<br />
{{OBDtr| 0x084 | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x086 | int16 |FFC8FF| 01 00 | 1 | unknown; always the same }}<br />
{{OBDtr| 0x088 | int16 |FFC8FF| 02 00 | 2 | unknown; always the same }}<br />
{{OBDtr| 0x08A | int16 |FFC8FF| 64 00 | 100 | unknown; always the same }}<br />
{{OBDtr| 0x08C | int16 |FFC8FF| 0A 00 | 10 | unknown; always the same }}<br />
{{OBDtr| 0x08E | int16 |FFC8FF| 0C 00 | 12 | unknown; always the same }}<br />
{{OBDtr| 0x090 | int16 |FFC8FF| 16 00 | 22 | unknown; always the same }}<br />
{{OBDtr| 0x092 | int8 |FFC800| 00 | 0 | used at runtime only: if one sound pointers have been set }}<br />
{{OBDtr| 0x093 | char[1] |C800C8| DE | dead | unused; always the same }}<br />
{{OBDtr| 0x094 | float |C87C64| 00 00 00 3F | 0.500000 | unknown; always the same (sound volume?) }}<br />
{{OBDtr2|0x098 | char[32] |B0C3D4| konoko_hurt_light | hurt light sound (reference to 08121-konoko_hurt_light.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium | hurt medium sound (reference to 08123-konoko_hurt_medium.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy | hurt heavy sound (reference to 08119-konoko_hurt_heavy.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death | death sound (reference to 08115-konoko_death.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr| 0x118 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt light sound }}<br />
{{OBDtr| 0x11C | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt medium sound }}<br />
{{OBDtr| 0x120 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt heavy sound }}<br />
{{OBDtr| 0x124 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to death sound }}<br />
|}<br />
<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x128 | bitsets |E7CEA5| 17 00 00 00 | 23 | general AI option bitset collection ; see below }}<br />
{{OBDtr| 0x12C | float |FFDDDD| 00 00 80 3F | 1.000000 | AI rotation speed factor }}<br />
{{OBDtr| 0x130 | int16 |64AAAA| 06 00 | 6 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x132 | int16 |64AAAA| 18 00 | 24 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x134 | int16 |EBEBEB| 0F 00 | 15 | minimal realize firingspread time; (???number of frames???time in miliseconds???) after which AI realizes that it is in the firing spread (and it starts dodging) }}<br />
{{OBDtr| 0x136 | int16 |EBEBEB| 00 00 | 0 | maximal realize firingspread time; (???number of frames???time in miliseconds???) }}<br />
|}<br />
<br />
<br />
;AI rotation speed factor<br />
:reference rotation speed is about 1 turn (360&#65533;) per second<br />
:the setting is only effective if the AI is in control<br />
:so it's a bit like the AI's mouse sensitivity :)<br />
<br />
<br />
;General AI options bitset<br />
:allows or disables some parts of the AI behavior<br />
*NONE - startle anim is enabled, rest is disabled<br />
*0x01 - startle anim disabled<br />
*0x02 - firingspread/projectile dodge enabled for melee<br />
*0x04 - requires 0x02; firingspread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging<br />
*0x08 - requires 0x02, overrides 0x04 if both are set; firingspread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter<br />
*0x10 - bit not used<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x138 | float |8C8CCC| 00 00 80 3F | 1.000000 | minimal firingspread dodge amount; IMO similar to maneouvre variable, it tells AI how long it should perform dodging/hiding in response to some time spent inside firing spread (so setting this very high means that once enemy starts dodging/hiding, he will perform it even after firing spread disappears) }}<br />
{{OBDtr| 0x13C | float |8C8CCC| 00 00 80 3F | 1.000000 | maximal firingspread dodge amount; IMO similar to maneouvre variable }}<br />
{{OBDtr| 0x140 | float |8C8CCC| 00 00 00 3F | 0.500000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x144 | float |8C8CCC| 00 00 C8 41 | 25.000000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x148 | float |8C8CCC| 00 00 80 3F | 1.000000 | unknown; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x14C | int32 |FF00C8| 00 00 00 00 | 0 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x150 | int32 |FF00C8| 05 00 00 00 | 5 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x154 | int32 |FF00C8| 0F 00 00 00 | 15 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x158 | int32 |FF00C8| 3C 00 00 00 | 60 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtrBK|1=First of 13 elements (grey outline) }}<br />
{{OBDtr| 0x15C | float |F0F096| 00 00 00 00 | 0.000000 | recoil compensation amount (0.0 <nowiki>= min, 1.0 =</nowiki> max) }}<br />
{{OBDtr| 0x160 | float |F0F096| 00 00 00 00 | 0.000000 | best aiming angle in radians }}<br />
{{OBDtr| 0x164 | float |F0F096| 00 00 00 00 | 0.000000 | shot grouping error }}<br />
{{OBDtr| 0x168 | float |F0F096| 00 00 80 3F | 1.000000 | shot grouping decay }}<br />
{{OBDtr| 0x16C | float |F0F096| 00 00 80 3F | 1.000000 | shooting inaccuracy multiplier }}<br />
{{OBDtr| 0x170 | int16 |00C864| 00 00 | 0 | minimum delay between shots in frames }}<br />
{{OBDtr| 0x172 | int16 |00C864| 00 00 | 0 | maximum delay between shots in frames }}<br />
|}<br />
<br />
<br />
;SHOOTING SKILLS<br />
These can be reviewed with e.g. '''ai2_skill_select konoko_generic w1_tap''' and then either '''ai2_skill_show''' (prints to console) or '''ai2_skill_save''' (prints to file)<br />
;Fields<br />
:recoil compensation amount, between 0 and 1 (float)<br />
:best aiming angle, in radians (float)<br />
:shot grouping error (float)<br />
:shot grouping decay (float)<br />
:shooting inaccuracy multiplier (float)<br />
:minimum delay between shots, in frames (short)<br />
:maximum delay between shots, in frames (short)<br />
The first weapon (weapon 0) is not in the game anymore, whatever that was. Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's ball, except '''w10_sni''' is still available) ('''w12_ba2''' and '''w11_ba1''' are a bit mixed up : the beam is made of '''w12_ba2''' particles, and the grenade is a '''w11_ba1''' particle...)<br />
<br />
See screenshot for the raw hex (example is '''konoko_generic''' from '''level3_Final''')<br />
{{Table|width=""|align="left"}}<br />
|-BGCOLOR="#E9E9E9" ALIGN=CENTER<br />
!Weapon ||Offset ||recoil||bestangle||error||decay||inaccuracy||delays<br />
|-ALIGN=CENTER <br />
|'''w0_sec''' ||0x15C/0x173|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w1_tap''' ||0x174/0x18B|| 0.0 || 0.000000|| 0.40|| 0.4 || 0.0 || 30 - 45<br />
|-ALIGN=CENTER <br />
|'''w2_sap''' ||0x18C/0x193|| 0.3 || 0.013962|| 0.13|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w3_phr''' ||0x194/0x20B|| 0.3 || 0.010472|| 0.05|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w4_psm''' ||0x20C/0x213|| 0.3 || 0.015707|| 0.03|| 0.2 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w5_sbg''' ||0x214/0x22B|| 0.3 || 0.001745|| 0.00|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w6_vdg''' ||0x22C/0x233|| 0.3 || 0.001745|| 0.13|| 0.9 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w7_scc''' ||0x234/0x24B|| 0.3 || 0.001745|| 0.05|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w8_mbo''' ||0x24C/0x253|| 0.3 || 0.005236|| 0.01|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w9_scr''' ||0x254/0x26B|| 0.3 || 0.010472|| 0.04|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w10_sni'''||0x26C/0x273|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w11_ba1'''||0x274/0x28B|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w12_ba2'''||0x28B/0x293|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|}<br />
<br clear=all><br />
<br />
<br />
[[image:oncc_m.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x294 | int32 |00C8FF| 5A 00 00 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x298 | int32 |00C8FF| F0 00 00 00 | 240 | unknown; always the same }}<br />
{{OBDtr| 0x29C | int32 |00C8FF| B4 00 00 00 | 180 | unknown; always the same }}<br />
{{OBDtr| 0x2A0 | int32 |00C8FF| 28 00 00 00 | 40 | taunt chance (40%) }}<br />
{{OBDtr| 0x2A4 | int32 |00C8FF| 37 00 00 00 | 55 | go for gun chance (55%); determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command }}<br />
{{OBDtr| 0x2A8 | int32 |00C8FF| 3C 00 00 00 | 60 | running pickup chance (60%); this value is possibility of AI running weapon pickup (acrobatics, slides) instead of normal "stop->pickup";this is calculated AFTER engine decides that AI should run for weapon }}<br />
{{OBDtr| 0x2AC | int16 |C80040| 00 00 | 0 | combat profile ID; for example *0D* is for Mutant Muro }}<br />
{{OBDtr| 0x2AE | int16 |C80040| 16 00 | 22 | melee profile ID }}<br />
{{OBDtr| 0x2B0 | int8 |FFCD96| 64 | 100 | "taunt" sound probability (always) }}<br />
{{OBDtr| 0x2B1 | int8 |FFCD96| 00 | 0 | "alert" sound probability (never) }}<br />
{{OBDtr| 0x2B2 | int8 |FFCD96| 00 | 0 | "startle" sound probability (never) }}<br />
{{OBDtr| 0x2B3 | int8 |FFCD96| 00 | 0 | "checkbody" sound probability (never) }}<br />
{{OBDtr| 0x2B4 | int8 |FFCD96| 00 | 0 | "pursue" sound probability (never) }}<br />
{{OBDtr| 0x2B5 | int8 |FFCD96| 00 | 0 | "cower" sound probability (never) }}<br />
{{OBDtr| 0x2B6 | int8 |FFCD96| 64 | 100 | "superpunch" probability (always) }}<br />
{{OBDtr| 0x2B7 | int8 |FFCD96| 64 | 100 | "superkick" probability (always) }}<br />
{{OBDtr| 0x2B8 | int8 |FFCD96| 00 | 0 | "super3" sound probability (never) }}<br />
{{OBDtr| 0x2B9 | int8 |FFCD96| 00 | 0 | "super4" sound probability (never) }}<br />
{{OBDtr| 0x2BA | int16 |C8C864| 00 00 | 0 | probably a blank filler (always the same) }}<br />
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko | "taunt" sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x2DC | char[32] |0096C8| unused | "alert" sound }}<br />
{{OBDtr2|0x2FC | char[32] |0096C8| unused | "startle" sound }}<br />
{{OBDtr2|0x31C | char[32] |0096C8| unused | "checkbody" sound }}<br />
{{OBDtr2|0x33C | char[32] |0096C8| unused | "pursue" sound }}<br />
{{OBDtr2|0x35C | char[32] |0096C8| unused | "cower" sound }}<br />
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko | "superpunch" sound (reference to 08110-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x39C | char[32] |0096C8| c18_79_15konoko | "superkick" sound (reference to 08112-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound (only the superninja uses this slot) }}<br />
{{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound (never used in Oni) }}<br />
{{OBDtr| 0x3FC | float |FF80C0| 00 80 ED 43 | 475.000000 | central vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki>1* }}<br />
{{OBDtr| 0x400 | float |FF80C0| 00 00 16 43 | 150.000000 | peripheral vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki> 1* }}<br />
{{OBDtr| 0x404 | float |FF80C0| 7D 1B 44 3F | 0.766044 | horizontal angle between two couples of "eye-rays" (one couple is left, one if right eye); works for both vision fields }}<br />
{{OBDtr| 0x408 | float |FF80C0| F3 B3 51 3F | 0.819152 | vision field curve for central vision field; vision field looks like something between cone and cylinder; this value affect central angle of that; the higher this value is, the more is this field wrapped in order to achieve shaper angle; when set lower, vision field unwraps totally and it looks like radar antenna, attached to a character by two couples of straight strings(one couple left, one right) }}<br />
{{OBDtr| 0x40C | float |FF80C0| E8 D5 12 3F | 0.573576 | vertical angle between eye-rays in one couple; this is for central vision field }}<br />
{{OBDtr| 0x410 | float |FF80C0| D5 D0 31 3E | 0.173648 | vision field curve for peripheral vision field }}<br />
{{OBDtr| 0x414 | float |FF80C0| 6B 61 D8 BE | 0.422618 | vertical angle between eye-rays in one couple; this is for peripheral vision field }}<br />
{{OBDtr| 0x418 | int32 |D0C0AF| B4 00 00 00 | 180 | hostilethreat definite timer; how long will AI know exactly where its enemy is even if it can't see him with central vision-field; AI attacks him; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x41C | int32 |D0C0AF| 84 03 00 00 | 900 | hostilethreat strong timer; how long will AI remain in strong feeling that there is the enemy, but will not attack him but investigate; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x420 | int32 |D0C0AF| 10 0E 00 00 | 3600 | hostilethreat weak timer; how long will AI remain in weak feeling of an enemy, just looking around aimlessly (Glance pursue mode); can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x424 | int32 |D0C0AF| 10 0E 00 00 | 3600 | friendlythreat definite timer; how long will AI know exactly where its ally (Syndicate saw Syndicate for example) is even if it can't see him with central vision-field; AI simply knows there is someone else nearby; maybe has further possibilities; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x428 | int32 |D0C0AF| 50 46 00 00 | 18000 | friendlythreat strong timer; how long will AI remain in strong feeling that there is someone else, but will not try to find him or look at him; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x42C | int32 |D0C0AF| A0 8C 00 00 | 36000 | friendlythreat weak timer; how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x430 | float |EEDDFF| 00 00 80 3F | 1.000000 | earshot radius; defines size of the sound-collision sphere around AI }}<br />
{{OBDtr| 0x434 | link |C5FF8A| 01 FB 03 00 | 1019 | link to 01019-konoko.[[OBD:ONCV|ONCV]]; defines variants and upgrades }}<br />
{{OBDtr| 0x438 | link |C5FF8A| 01 F9 03 00 | 1017 | link to [[OBD:ONCP|01017-.ONCP]]; lists the particles available for this character (trails, flashes, etc) }}<br />
{{OBDtr| 0x43C | link |C5FF8A| 01 FA 03 00 | 1018 | link to [[OBD:ONIA|01018-.ONIA]]; lists the special impact sounds (used for special combat moves) }}<br />
{{OBDtr| 0x440 | int8 |C5FF8A| 00 | unused | runtime only }}<br />
{{OBDtr| 0x441 | int8 |C5FF8A| 00 | unused | padding }}<br />
{{OBDtr| 0x442 | int16 |C5FF8A| 00 00 | unused | runtime only }}<br />
{{OBDtr2|0x444 | char[16] |C0C0C0| Light | modifier; either hardcoded or defunct (only visible in pm_mod_type.WMM_, level 0)<br />
edit: WMDD says: Effects found for Impact x on Material y with Modifier: pm_mod_types }}<br />
{{OBDtrBK|1=First of 15 impact elements. }}<br />
{{OBDtr2|0x454 | char[128] |FF0080| Footstep_Walk | walk impact (reference to 04124-Footstep_Walk.[[OBD:Impt|Impt]] of level 0); always the same; without the impacts you can't hear the steps of a character }}<br />
{{OBDtr| 0x4D4 | int16 |FF0080| FF FF | -1 | set at runtime to the value stored at 0x08 in [[OBD:Impt|Impt]] }}<br />
|}<br />
<br />
<br />
[[image:oncc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0xBF2 | int16 |FFFFA6| 00 00 | 0 | unknown; always the same; maybe only a filler }} <br />
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused | special death particle; only the mad bomber use it }} <br />
{{OBDtr| 0xC34 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC38 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC3C | link |0000BF| 01 E6 03 00 | 998 | link to [[OBD:TRBS|00998-konoko_body_high.TRBS]] }}<br />
{{OBDtr| 0xC40 | link |0000BF| 01 E7 03 00 | 999 | link to [[OBD:TRMA|00999-konoko002_high_texture_generic.TRMA]] }}<br />
{{OBDtr| 0xC44 | link |0000BF| 01 E8 03 00 | 1000 | link to [[OBD:CBPM|01000-.CBPM]] }}<br />
{{OBDtr| 0xC48 | link |0000BF| 01 EC 03 00 | 1004 | link to [[OBD:CBPI|01004-.CBPI]] }}<br />
{{OBDtr| 0xC4C | int32 |804040| 2C 01 00 00 | 300 | fight mode timer in 1/60 seconds }} <br />
{{OBDtr| 0xC50 | int32 |804040| 30 75 00 00 | 30000 | first idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC54 | int32 |804040| 30 75 00 00 | 30000 | second idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC58 | int32 |804040| C8 00 00 00 | 200 | basic health of the character model; extra health information for every unique character are stored in the [[OBD:BINA/OBJC/CHAR|Character.BINA]] file}} <br />
{{OBDtr| 0xC5C | int32 |804040| 48 00 00 00 | 72 | unknown, maybe coefficient of taken damage concerning the player's health bar (higher value means less damage); always the same }} <br />
{{OBDtr| 0xC60 | float |FF22FF| 00 00 80 3F | 1.000000 | minimal body size factor }} <br />
{{OBDtr| 0xC64 | float |FF22FF| 00 00 80 3F | 1.000000 | maximal body size factor }} <br />
{{OBDtrBK| the following 7 float values corespond to damage types (see the [[OBD:BINA/PAR3|PAR3]] page for the 7 possible types of damage) }}<br />
{{OBDtr| 0xC68 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC6C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC70 | float |FF22FF| 00 00 00 3F | 0.500000 | stun timer; specifies how long should be this char stunned when hit with w6_vdg; the longest time possible to be stunned is when this byte is zero. Then this ONCC is stunned for 200 frames (30 frames for initial stagger + the rest of the frames is stun animation). The shortest time is for 1.000000 (no stagger/stun at all) }} <br />
{{OBDtr| 0xC74 | float |FF22FF| 00 00 80 3E | 0.250000 | unknown }} <br />
{{OBDtr| 0xC78 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC7C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC80 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC84 | float |FF22FF| 00 00 00 3F | 0.500000 | BossShield Protect Amount (testme) }}<br />
{{OBDtr| 0xC88 | link |808080| 01 F6 03 00 | 1014 | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]] }} <br />
{{OBDtr| 0xC8C | link |808080| 01 F6 03 00 | 1015 | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }} <br />
{{OBDtr| 0xC90 | int16 |FFAA82| 1E 00 | 30 | AI Rate of Fire (testme) }} <br />
{{OBDtr| 0xC92 | int16 |FFAA82| 00 00 | 0 | time between death and deletion, in frames (about 3 seconds for mad bomber) }} <br />
{{OBDtr| 0xC94 | bitset |00D900| 00 | 0 | TRSC bitset; see below }} <br />
{{OBDtr| 0xC95 | int8 |00D900| 01 | 1 | when set to 1 indicates that character has daodan powers (character does more damage in overpower mode)}} <br />
{{OBDtr| 0xC96 | int8 |00D900| 00 | 0 | when set to 1 indicates that character has supershield<br />
* is visible as red shield when overpowered<br />
* needs daodan flag above and 51% overpower to be enabled; chenille cheat works too<br />
* now it prevents damage from weapon fire and melee (exception are throws)<br />
* received (melee) hits cause not blue block flashes but orange flares (see [http://paradox.oni2.net/Bilder/blocked_attacks_on_51percent_overpower_plus_daodan-flag_plus_supershield.png HERE])<br />
}} <br />
{{OBDtr| 0xC97 | int8 |00D900| 00 | 0 | when set to 1, generically turns on '''canttouchthis''' cheat for this ONCC (used by MutantMuro.ONCC }} <br />
{{OBDtr| 0xC98 | char[8] |CACAFF| AD DE | dead | unused }} <br />
|}<br />
<br />
<br />
;Body size factor<br />
The body size of a model will be scaled uniformly by a random coefficient that falls in the range defined with 0xC60 and 0xC64. This is apparently a provision for increasing the variety of appearances in classes like TCTF soldiers; unique characters like Konoko get a range of 1.0 to 1.0. The basis or seed for the randomness is apparently the time and/or order of spawning of that character, and therefore the "random" size of the character can be reproduced consistently as long as the execution of the code is the same each time. To illustrate, find the following code in IGMD/manplant/manplant_cutscene.bsl:<br />
<gallery align="right"><br />
File:ONCC_body_size_factor-original.jpg|Sample 1<br />
File:ONCC_body_size_factor-spawn_order_change.jpg|Sample 2<br />
File:ONCC_body_size_factor-sleep_insertion.jpg|Sample 3<br />
</gallery><br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
When you play the opening cutscene for Chapter 2, Agent Thorson should appear as he does in the first pic in the table to the right. Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2<br />
<br />
ai2_spawn Recep</tt><br />
<br />
and he'll appear as in the middle pic. Look out, he's a giant! Even the receptionist is bigger! Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
sleep 15<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
and you'll also get a deluxe-sized Thorson (right pic), though not as big as before. In complex scripts, body size quickly becomes truly random-seeming, but as you can see, in situations where the spawn function is called near the beginning of the code, before there is an opportunity for too much forking and branching, the results are quite reproducible.<br />
<br />
;TRSC bitset<br />
:determines whether character is left-hander or right-hander (weapon is attached to left or right fist bone) Must be consistent with TRSC or glitches appear. Possibilities are:<br />
:NONE - Character is right-hander with both pistols and rifles<br />
:0x01 - Character is left-hander with both pistols and rifles<br />
:0x02 - Character is left-hander with pistols but "right-hander" with rifles (however, animations for rifles are treated as left-handed)<br />
{{OBD_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONCC&diff=17399OBD:ONCC2010-08-28T01:08:43Z<p>Gumby: </p>
<hr />
<div>{{OBD_File_Header | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character | align=center}}<br />
<br />
<br />
[[image:oncc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 DF 03 00 | 991 | 00991-konoko_generic.ONCC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 06 | 0 | level 3 }}<br />
{{OBDtr| 0x008 | float |00FF00| CD CC 0C 3F | 0.550000 | downwards velocity? (unknown, always 0.55) }}<br />
{{OBDtr| 0x00C | float |00FF00| 8F C2 75 3D | 0.060000 | downward gravity acceleration }}<br />
{{OBDtr| 0x010 | float |00FF00| CD CC 8C 3F | 1.100000 | starting velocity for a simple (tap) JUMP }}<br />
{{OBDtr| 0x014 | float |00FF00| 00 00 80 C0 | -4.000000 | limit velocity for jumping and gravity flight }}<br />
{{OBDtr| 0x018 | float |00FF00| 8F C2 F5 3C | 0.030000 | upward acceleration (jetpack) if you hold JUMP }}<br />
{{OBDtr| 0x01C | int16 |00FFFF| 07 00 | 7 | gravity timer? (unknown, always 7) }}<br />
{{OBDtr| 0x01E | int16 |00FFFF| 14 00 | 20 | jetpack timer; time during which you can use the jetpack }}<br />
{{OBDtr| 0x020 | float |FF00FF| 00 00 34 42 | 45.000000 | maximal falling height without damage }}<br />
{{OBDtr| 0x024 | float |FF00FF| 00 00 07 43 | 135.000000 | maximal falling height with damage }}<br />
|}<br />
<br />
<br />
;Units:times are in frames<br />
:heights are in world units<br />
:velocities are in world units per frames<br />
:accelerations are in world units per frames squared<br />
;Downwards velocity: could correspond to the steady push experienced when neither jumping nor falling<br />
:would be roughly equivalent to the starting velocity of a fall<br />
:although the value .55 seems right, the "sinking" seems to be hardcoded now<br />
;Gravity timer:Seems to be hardcoded now (could be the time until gravity switches on)<br />
;Jetpack timer:You can press JUMP multiple times during the time window (quite fun!)<br />
;Falling height: let FH1 be the height at 0x20<br />
:let FH2 be the height at 0x24<br />
:let BH be the base health of the character<br />
:let FH be the actual falling height<br />
:then, if FH > FH2, the character is killed<br />
:if FH < FH1, the character takes no damage<br />
:if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x028 | link |FF8000| 01 F8 03 00 | 1016 | link to 01016-shadow1.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x02C | float |FF8000| 00 00 40 41 | 12.000000 | height where the shadow fades out completely }}<br />
{{OBDtr| 0x030 | float |FF8000| 00 00 00 41 | 8.000000 | height where the diameter of the shadow decreases and the shadow fades out half }}<br />
{{OBDtr| 0x034 | float |FF8000| 00 00 C0 40 | 6.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x038 | float |FF8000| 00 00 90 40 | 4.500000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x03C | float |FF8000| 00 00 40 40 | 3.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x040 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the first part of a jump }}<br />
{{OBDtr| 0x042 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the second part of a jump }}<br />
|}<br />
<br />
;Jump Constants?<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x044 | float |FF0080| 00 00 C8 41 | 25.000000 | unknown; always the same }}<br />
{{OBDtr| 0x048 | int8 |FFC8C8| 16 | 22 | unknown }}<br />
{{OBDtr| 0x049 | int8 |FFC8C8| 06 | 6 | unknown; always the same }}<br />
{{OBDtr| 0x04A | char[2] |FFC8C8| AD DE | dead | unused; always the same }}<br />
|}<br />
<br />
;Cover\autofreeze\Inventory Constants?<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x04C | float |FFFFC8| 00 00 20 42 | 40.000000 | unknown; always the same }}<br />
{{OBDtr| 0x050 | float |FFFFC8| 00 00 96 43 | 300.000000 | unknown; always the same }}<br />
{{OBDtr| 0x054 | float |FFFFC8| 35 FA 8E 3C | 0.017453 | unknown; always the same (0.017453 <nowiki>=</nowiki> PI/180) }}<br />
{{OBDtr| 0x058 | float |FFFFC8| DB 0F C9 3F | 1.570796 | unknown; always the same (1.57 <nowiki>=</nowiki> PI/2) }}<br />
{{OBDtr| 0x05C | float |FFFFC8| 00 00 A0 40 | 5.000000 | unknown; always the same }}<br />
{{OBDtr| 0x060 | float |FFFFC8| 00 00 80 3F | 1.000000 | unknown; always the same }}<br />
{{OBDtr| 0x064 | int16 |C8FFC8| 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint }}<br />
{{OBDtr| 0x066 | char[2] |C8FFC8| AD DE | dead | unused }}<br />
|}<br />
<br />
;LOD Constants<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x068 | float |C8FFFF| 00 10 3D 48 |193600.000000| unknown; always the same; this is 440 squared }}<br />
{{OBDtr| 0x06C | float |C8FFFF| 00 10 3D 47 | 48400.000000| unknown; always the same; this is 220 squared }}<br />
{{OBDtr| 0x070 | float |C8FFFF| 00 10 3D 46 | 12100.000000| unknown; always the same; this is 110 squared }}<br />
{{OBDtr| 0x074 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
{{OBDtr| 0x078 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
|}<br />
<br />
<br />
;Hurt sound paramters<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x07C | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x07E | int16 |FFC8FF| 5A 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x080 | int16 |FFC8FF| 0F 00 | 15 | unknown; always the same }}<br />
{{OBDtr| 0x082 | int16 |FFC8FF| 78 00 | 120 | unknown; always the same }}<br />
{{OBDtr| 0x084 | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x086 | int16 |FFC8FF| 01 00 | 1 | unknown; always the same }}<br />
{{OBDtr| 0x088 | int16 |FFC8FF| 02 00 | 2 | unknown; always the same }}<br />
{{OBDtr| 0x08A | int16 |FFC8FF| 64 00 | 100 | unknown; always the same }}<br />
{{OBDtr| 0x08C | int16 |FFC8FF| 0A 00 | 10 | unknown; always the same }}<br />
{{OBDtr| 0x08E | int16 |FFC8FF| 0C 00 | 12 | unknown; always the same }}<br />
{{OBDtr| 0x090 | int16 |FFC8FF| 16 00 | 22 | unknown; always the same }}<br />
{{OBDtr| 0x092 | int8 |FFC800| 00 | 0 | used at runtime only: if one sound pointers have been set }}<br />
{{OBDtr| 0x093 | char[1] |C800C8| DE | dead | unused; always the same }}<br />
{{OBDtr| 0x094 | float |C87C64| 00 00 00 3F | 0.500000 | unknown; always the same (sound volume?) }}<br />
{{OBDtr2|0x098 | char[32] |B0C3D4| konoko_hurt_light | hurt light sound (reference to 08121-konoko_hurt_light.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium | hurt medium sound (reference to 08123-konoko_hurt_medium.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy | hurt heavy sound (reference to 08119-konoko_hurt_heavy.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death | death sound (reference to 08115-konoko_death.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr| 0x118 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt light sound }}<br />
{{OBDtr| 0x11C | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt medium sound }}<br />
{{OBDtr| 0x120 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt heavy sound }}<br />
{{OBDtr| 0x124 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to death sound }}<br />
|}<br />
<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x128 | bitsets |E7CEA5| 17 00 00 00 | 23 | general AI option bitset collection ; see below }}<br />
{{OBDtr| 0x12C | float |FFDDDD| 00 00 80 3F | 1.000000 | AI rotation speed factor }}<br />
{{OBDtr| 0x130 | int16 |64AAAA| 06 00 | 6 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x132 | int16 |64AAAA| 18 00 | 24 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x134 | int16 |EBEBEB| 0F 00 | 15 | minimal realize firingspread time; (???number of frames???time in miliseconds???) after which AI realizes that it is in the firing spread (and it starts dodging) }}<br />
{{OBDtr| 0x136 | int16 |EBEBEB| 00 00 | 0 | maximal realize firingspread time; (???number of frames???time in miliseconds???) }}<br />
|}<br />
<br />
<br />
;AI rotation speed factor<br />
:reference rotation speed is about 1 turn (360&#65533;) per second<br />
:the setting is only effective if the AI is in control<br />
:so it's a bit like the AI's mouse sensitivity :)<br />
<br />
<br />
;General AI options bitset<br />
:allows or disables some parts of the AI behavior<br />
*NONE - startle anim is enabled, rest is disabled<br />
*0x01 - startle anim disabled<br />
*0x02 - firingspread/projectile dodge enabled for melee<br />
*0x04 - requires 0x02; firingspread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging<br />
*0x08 - requires 0x02, overrides 0x04 if both are set; firingspread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter<br />
*0x10 - bit not used<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x138 | float |8C8CCC| 00 00 80 3F | 1.000000 | minimal firingspread dodge amount; IMO similar to maneouvre variable, it tells AI how long it should perform dodging/hiding in response to some time spent inside firing spread (so setting this very high means that once enemy starts dodging/hiding, he will perform it even after firing spread disappears) }}<br />
{{OBDtr| 0x13C | float |8C8CCC| 00 00 80 3F | 1.000000 | maximal firingspread dodge amount; IMO similar to maneouvre variable }}<br />
{{OBDtr| 0x140 | float |8C8CCC| 00 00 00 3F | 0.500000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x144 | float |8C8CCC| 00 00 C8 41 | 25.000000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x148 | float |8C8CCC| 00 00 80 3F | 1.000000 | unknown; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x14C | int32 |FF00C8| 00 00 00 00 | 0 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x150 | int32 |FF00C8| 05 00 00 00 | 5 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x154 | int32 |FF00C8| 0F 00 00 00 | 15 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x158 | int32 |FF00C8| 3C 00 00 00 | 60 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtrBK|1=First of 13 elements (grey outline) }}<br />
{{OBDtr| 0x15C | float |F0F096| 00 00 00 00 | 0.000000 | recoil compensation amount (0.0 <nowiki>= min, 1.0 =</nowiki> max) }}<br />
{{OBDtr| 0x160 | float |F0F096| 00 00 00 00 | 0.000000 | best aiming angle in radians }}<br />
{{OBDtr| 0x164 | float |F0F096| 00 00 00 00 | 0.000000 | shot grouping error }}<br />
{{OBDtr| 0x168 | float |F0F096| 00 00 80 3F | 1.000000 | shot grouping decay }}<br />
{{OBDtr| 0x16C | float |F0F096| 00 00 80 3F | 1.000000 | shooting inaccuracy multiplier }}<br />
{{OBDtr| 0x170 | int16 |00C864| 00 00 | 0 | minimum delay between shots in frames }}<br />
{{OBDtr| 0x172 | int16 |00C864| 00 00 | 0 | maximum delay between shots in frames }}<br />
|}<br />
<br />
<br />
;SHOOTING SKILLS<br />
These can be reviewed with e.g. '''ai2_skill_select konoko_generic w1_tap''' and then either '''ai2_skill_show''' (prints to console) or '''ai2_skill_save''' (prints to file)<br />
;Fields<br />
:recoil compensation amount, between 0 and 1 (float)<br />
:best aiming angle, in radians (float)<br />
:shot grouping error (float)<br />
:shot grouping decay (float)<br />
:shooting inaccuracy multiplier (float)<br />
:minimum delay between shots, in frames (short)<br />
:maximum delay between shots, in frames (short)<br />
The first weapon (weapon 0) is not in the game anymore, whatever that was. Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's ball, except '''w10_sni''' is still available) ('''w12_ba2''' and '''w11_ba1''' are a bit mixed up : the beam is made of '''w12_ba2''' particles, and the grenade is a '''w11_ba1''' particle...)<br />
<br />
See screenshot for the raw hex (example is '''konoko_generic''' from '''level3_Final''')<br />
{{Table|width=""|align="left"}}<br />
|-BGCOLOR="#E9E9E9" ALIGN=CENTER<br />
!Weapon ||Offset ||recoil||bestangle||error||decay||inaccuracy||delays<br />
|-ALIGN=CENTER <br />
|'''w0_sec''' ||0x15C/0x173|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w1_tap''' ||0x174/0x18B|| 0.0 || 0.000000|| 0.40|| 0.4 || 0.0 || 30 - 45<br />
|-ALIGN=CENTER <br />
|'''w2_sap''' ||0x18C/0x193|| 0.3 || 0.013962|| 0.13|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w3_phr''' ||0x194/0x20B|| 0.3 || 0.010472|| 0.05|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w4_psm''' ||0x20C/0x213|| 0.3 || 0.015707|| 0.03|| 0.2 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w5_sbg''' ||0x214/0x22B|| 0.3 || 0.001745|| 0.00|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w6_vdg''' ||0x22C/0x233|| 0.3 || 0.001745|| 0.13|| 0.9 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w7_scc''' ||0x234/0x24B|| 0.3 || 0.001745|| 0.05|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w8_mbo''' ||0x24C/0x253|| 0.3 || 0.005236|| 0.01|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w9_scr''' ||0x254/0x26B|| 0.3 || 0.010472|| 0.04|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w10_sni'''||0x26C/0x273|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w11_ba1'''||0x274/0x28B|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w12_ba2'''||0x28B/0x293|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|}<br />
<br clear=all><br />
<br />
<br />
[[image:oncc_m.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x294 | int32 |00C8FF| 5A 00 00 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x298 | int32 |00C8FF| F0 00 00 00 | 240 | unknown; always the same }}<br />
{{OBDtr| 0x29C | int32 |00C8FF| B4 00 00 00 | 180 | unknown; always the same }}<br />
{{OBDtr| 0x2A0 | int32 |00C8FF| 28 00 00 00 | 40 | taunt chance (40%) }}<br />
{{OBDtr| 0x2A4 | int32 |00C8FF| 37 00 00 00 | 55 | go for gun chance (55%); determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command }}<br />
{{OBDtr| 0x2A8 | int32 |00C8FF| 3C 00 00 00 | 60 | running pickup chance (60%); this value is possibility of AI running weapon pickup (acrobatics, slides) instead of normal "stop->pickup";this is calculated AFTER engine decides that AI should run for weapon }}<br />
{{OBDtr| 0x2AC | int16 |C80040| 00 00 | 0 | combat profile ID; for example *0D* is for Mutant Muro }}<br />
{{OBDtr| 0x2AE | int16 |C80040| 16 00 | 22 | melee profile ID }}<br />
{{OBDtr| 0x2B0 | int8 |FFCD96| 64 | 100 | "taunt" sound probability (always) }}<br />
{{OBDtr| 0x2B1 | int8 |FFCD96| 00 | 0 | "alert" sound probability (never) }}<br />
{{OBDtr| 0x2B2 | int8 |FFCD96| 00 | 0 | "startle" sound probability (never) }}<br />
{{OBDtr| 0x2B3 | int8 |FFCD96| 00 | 0 | "checkbody" sound probability (never) }}<br />
{{OBDtr| 0x2B4 | int8 |FFCD96| 00 | 0 | "pursue" sound probability (never) }}<br />
{{OBDtr| 0x2B5 | int8 |FFCD96| 00 | 0 | "cower" sound probability (never) }}<br />
{{OBDtr| 0x2B6 | int8 |FFCD96| 64 | 100 | "superpunch" probability (always) }}<br />
{{OBDtr| 0x2B7 | int8 |FFCD96| 64 | 100 | "superkick" probability (always) }}<br />
{{OBDtr| 0x2B8 | int8 |FFCD96| 00 | 0 | "super3" sound probability (never) }}<br />
{{OBDtr| 0x2B9 | int8 |FFCD96| 00 | 0 | "super4" sound probability (never) }}<br />
{{OBDtr| 0x2BA | int16 |C8C864| 00 00 | 0 | probably a blank filler (always the same) }}<br />
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko | "taunt" sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x2DC | char[32] |0096C8| unused | "alert" sound }}<br />
{{OBDtr2|0x2FC | char[32] |0096C8| unused | "startle" sound }}<br />
{{OBDtr2|0x31C | char[32] |0096C8| unused | "checkbody" sound }}<br />
{{OBDtr2|0x33C | char[32] |0096C8| unused | "pursue" sound }}<br />
{{OBDtr2|0x35C | char[32] |0096C8| unused | "cower" sound }}<br />
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko | "superpunch" sound (reference to 08110-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x39C | char[32] |0096C8| c18_79_15konoko | "superkick" sound (reference to 08112-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound (only the superninja uses this slot) }}<br />
{{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound (never used in Oni) }}<br />
{{OBDtr| 0x3FC | float |FF80C0| 00 80 ED 43 | 475.000000 | central vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki>1* }}<br />
{{OBDtr| 0x400 | float |FF80C0| 00 00 16 43 | 150.000000 | peripheral vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki> 1* }}<br />
{{OBDtr| 0x404 | float |FF80C0| 7D 1B 44 3F | 0.766044 | horizontal angle between two couples of "eye-rays" (one couple is left, one if right eye); works for both vision fields }}<br />
{{OBDtr| 0x408 | float |FF80C0| F3 B3 51 3F | 0.819152 | vision field curve for central vision field; vision field looks like something between cone and cylinder; this value affect central angle of that; the higher this value is, the more is this field wrapped in order to achieve shaper angle; when set lower, vision field unwraps totally and it looks like radar antenna, attached to a character by two couples of straight strings(one couple left, one right) }}<br />
{{OBDtr| 0x40C | float |FF80C0| E8 D5 12 3F | 0.573576 | vertical angle between eye-rays in one couple; this is for central vision field }}<br />
{{OBDtr| 0x410 | float |FF80C0| D5 D0 31 3E | 0.173648 | vision field curve for peripheral vision field }}<br />
{{OBDtr| 0x414 | float |FF80C0| 6B 61 D8 BE | 0.422618 | vertical angle between eye-rays in one couple; this is for peripheral vision field }}<br />
{{OBDtr| 0x418 | int32 |D0C0AF| B4 00 00 00 | 180 | hostilethreat definite timer; how long will AI know exactly where its enemy is even if it can't see him with central vision-field; AI attacks him; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x41C | int32 |D0C0AF| 84 03 00 00 | 900 | hostilethreat strong timer; how long will AI remain in strong feeling that there is the enemy, but will not attack him but investigate; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x420 | int32 |D0C0AF| 10 0E 00 00 | 3600 | hostilethreat weak timer; how long will AI remain in weak feeling of an enemy, just looking around aimlessly (Glance pursue mode); can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x424 | int32 |D0C0AF| 10 0E 00 00 | 3600 | friendlythreat definite timer; how long will AI know exactly where its ally (Syndicate saw Syndicate for example) is even if it can't see him with central vision-field; AI simply knows there is someone else nearby; maybe has further possibilities; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x428 | int32 |D0C0AF| 50 46 00 00 | 18000 | friendlythreat strong timer; how long will AI remain in strong feeling that there is someone else, but will not try to find him or look at him; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x42C | int32 |D0C0AF| A0 8C 00 00 | 36000 | friendlythreat weak timer; how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x430 | float |EEDDFF| 00 00 80 3F | 1.000000 | earshot radius; defines size of the sound-collision sphere around AI }}<br />
{{OBDtr| 0x434 | link |C5FF8A| 01 FB 03 00 | 1019 | link to 01019-konoko.[[OBD:ONCV|ONCV]]; defines variants and upgrades }}<br />
{{OBDtr| 0x438 | link |C5FF8A| 01 F9 03 00 | 1017 | link to [[OBD:ONCP|01017-.ONCP]]; lists the particles available for this character (trails, flashes, etc) }}<br />
{{OBDtr| 0x43C | link |C5FF8A| 01 FA 03 00 | 1018 | link to [[OBD:ONIA|01018-.ONIA]]; lists the special impact sounds (used for special combat moves) }}<br />
{{OBDtr| 0x440 | int8 |C5FF8A| 00 | unused | runtime only }}<br />
{{OBDtr| 0x441 | int8 |C5FF8A| 00 | unused | padding }}<br />
{{OBDtr| 0x442 | int16 |C5FF8A| 00 00 | unused | runtime only }}<br />
{{OBDtr2|0x444 | char[16] |C0C0C0| Light | modifier; either hardcoded or defunct (only visible in pm_mod_type.WMM_, level 0)<br />
edit: WMDD says: Effects found for Impact x on Material y with Modifier: pm_mod_types }}<br />
{{OBDtrBK|1=First of 15 impact elements. }}<br />
{{OBDtr2|0x454 | char[128] |FF0080| Footstep_Walk | walk impact (reference to 04124-Footstep_Walk.[[OBD:Impt|Impt]] of level 0); always the same; without the impacts you can't hear the steps of a character }}<br />
{{OBDtr| 0x4D4 | int16 |FF0080| FF FF | -1 | set at runtime to the value stored at 0x08 in [[OBD:Impt|Impt]] }}<br />
|}<br />
<br />
<br />
[[image:oncc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0xBF2 | int16 |FFFFA6| 00 00 | 0 | unknown; always the same; maybe only a filler }} <br />
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused | special death particle; only the mad bomber use it }} <br />
{{OBDtr| 0xC34 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC38 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC3C | link |0000BF| 01 E6 03 00 | 998 | link to [[OBD:TRBS|00998-konoko_body_high.TRBS]] }}<br />
{{OBDtr| 0xC40 | link |0000BF| 01 E7 03 00 | 999 | link to [[OBD:TRMA|00999-konoko002_high_texture_generic.TRMA]] }}<br />
{{OBDtr| 0xC44 | link |0000BF| 01 E8 03 00 | 1000 | link to [[OBD:CBPM|01000-.CBPM]] }}<br />
{{OBDtr| 0xC48 | link |0000BF| 01 EC 03 00 | 1004 | link to [[OBD:CBPI|01004-.CBPI]] }}<br />
{{OBDtr| 0xC4C | int32 |804040| 2C 01 00 00 | 300 | fight mode timer in 1/60 seconds }} <br />
{{OBDtr| 0xC50 | int32 |804040| 30 75 00 00 | 30000 | first idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC54 | int32 |804040| 30 75 00 00 | 30000 | second idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC58 | int32 |804040| C8 00 00 00 | 200 | basic health of the character model; extra health information for every unique character are stored in the [[OBD:BINA/OBJC/CHAR|Character.BINA]] file}} <br />
{{OBDtr| 0xC5C | int32 |804040| 48 00 00 00 | 72 | unknown, maybe coefficient of taken damage concerning the player's health bar (higher value means less damage); always the same }} <br />
{{OBDtr| 0xC60 | float |FF22FF| 00 00 80 3F | 1.000000 | minimal body size factor }} <br />
{{OBDtr| 0xC64 | float |FF22FF| 00 00 80 3F | 1.000000 | maximal body size factor }} <br />
{{OBDtrBK| the following 7 float values corespond to damage types (see the [[OBD:BINA/PAR3|PAR3]] page for the 7 possible types of damage) }}<br />
{{OBDtr| 0xC68 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC6C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC70 | float |FF22FF| 00 00 00 3F | 0.500000 | stun timer; specifies how long should be this char stunned when hit with w6_vdg; the longest time possible to be stunned is when this byte is zero. Then this ONCC is stunned for 200 frames (30 frames for initial stagger + the rest of the frames is stun animation). The shortest time is for 1.000000 (no stagger/stun at all) }} <br />
{{OBDtr| 0xC74 | float |FF22FF| 00 00 80 3E | 0.250000 | unknown }} <br />
{{OBDtr| 0xC78 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC7C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC80 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC84 | float |FF22FF| 00 00 00 3F | 0.500000 | unknown }}<br />
{{OBDtr| 0xC88 | link |808080| 01 F6 03 00 | 1014 | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]] }} <br />
{{OBDtr| 0xC8C | link |808080| 01 F6 03 00 | 1015 | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }} <br />
{{OBDtr| 0xC90 | int16 |FFAA82| 1E 00 | 30 | unknown; always the same }} <br />
{{OBDtr| 0xC92 | int16 |FFAA82| 00 00 | 0 | time between death and deletion, in frames (about 3 seconds for mad bomber) }} <br />
{{OBDtr| 0xC94 | bitset |00D900| 00 | 0 | TRSC bitset; see below }} <br />
{{OBDtr| 0xC95 | int8 |00D900| 01 | 1 | when set to 1 indicates that character has daodan powers (character does more damage in overpower mode)}} <br />
{{OBDtr| 0xC96 | int8 |00D900| 00 | 0 | when set to 1 indicates that character has supershield<br />
* is visible as red shield when overpowered<br />
* needs daodan flag above and 51% overpower to be enabled; chenille cheat works too<br />
* now it prevents damage from weapon fire and melee (exception are throws)<br />
* received (melee) hits cause not blue block flashes but orange flares (see [http://paradox.oni2.net/Bilder/blocked_attacks_on_51percent_overpower_plus_daodan-flag_plus_supershield.png HERE])<br />
}} <br />
{{OBDtr| 0xC97 | int8 |00D900| 00 | 0 | when set to 1, generically turns on '''canttouchthis''' cheat for this ONCC (used by MutantMuro.ONCC }} <br />
{{OBDtr| 0xC98 | char[8] |CACAFF| AD DE | dead | unused }} <br />
|}<br />
<br />
<br />
;Body size factor<br />
The body size of a model will be scaled uniformly by a random coefficient that falls in the range defined with 0xC60 and 0xC64. This is apparently a provision for increasing the variety of appearances in classes like TCTF soldiers; unique characters like Konoko get a range of 1.0 to 1.0. The basis or seed for the randomness is apparently the time and/or order of spawning of that character, and therefore the "random" size of the character can be reproduced consistently as long as the execution of the code is the same each time. To illustrate, find the following code in IGMD/manplant/manplant_cutscene.bsl:<br />
<gallery align="right"><br />
File:ONCC_body_size_factor-original.jpg|Sample 1<br />
File:ONCC_body_size_factor-spawn_order_change.jpg|Sample 2<br />
File:ONCC_body_size_factor-sleep_insertion.jpg|Sample 3<br />
</gallery><br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
When you play the opening cutscene for Chapter 2, Agent Thorson should appear as he does in the first pic in the table to the right. Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2<br />
<br />
ai2_spawn Recep</tt><br />
<br />
and he'll appear as in the middle pic. Look out, he's a giant! Even the receptionist is bigger! Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
sleep 15<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
and you'll also get a deluxe-sized Thorson (right pic), though not as big as before. In complex scripts, body size quickly becomes truly random-seeming, but as you can see, in situations where the spawn function is called near the beginning of the code, before there is an opportunity for too much forking and branching, the results are quite reproducible.<br />
<br />
;TRSC bitset<br />
:determines whether character is left-hander or right-hander (weapon is attached to left or right fist bone) Must be consistent with TRSC or glitches appear. Possibilities are:<br />
:NONE - Character is right-hander with both pistols and rifles<br />
:0x01 - Character is left-hander with both pistols and rifles<br />
:0x02 - Character is left-hander with pistols but "right-hander" with rifles (however, animations for rifles are treated as left-handed)<br />
{{OBD_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:ONCC&diff=17398OBD:ONCC2010-08-28T01:05:50Z<p>Gumby: </p>
<hr />
<div>{{OBD_File_Header | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character | align=center}}<br />
<br />
<br />
[[image:oncc_a.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x000 | res_id |FF0000| 01 DF 03 00 | 991 | 00991-konoko_generic.ONCC }}<br />
{{OBDtr| 0x004 | lev_id |FFFF00| 01 00 00 06 | 0 | level 3 }}<br />
{{OBDtr| 0x008 | float |00FF00| CD CC 0C 3F | 0.550000 | downwards velocity? (unknown, always 0.55) }}<br />
{{OBDtr| 0x00C | float |00FF00| 8F C2 75 3D | 0.060000 | downward gravity acceleration }}<br />
{{OBDtr| 0x010 | float |00FF00| CD CC 8C 3F | 1.100000 | starting velocity for a simple (tap) JUMP }}<br />
{{OBDtr| 0x014 | float |00FF00| 00 00 80 C0 | -4.000000 | limit velocity for jumping and gravity flight }}<br />
{{OBDtr| 0x018 | float |00FF00| 8F C2 F5 3C | 0.030000 | upward acceleration (jetpack) if you hold JUMP }}<br />
{{OBDtr| 0x01C | int16 |00FFFF| 07 00 | 7 | gravity timer? (unknown, always 7) }}<br />
{{OBDtr| 0x01E | int16 |00FFFF| 14 00 | 20 | jetpack timer; time during which you can use the jetpack }}<br />
{{OBDtr| 0x020 | float |FF00FF| 00 00 34 42 | 45.000000 | maximal falling height without damage }}<br />
{{OBDtr| 0x024 | float |FF00FF| 00 00 07 43 | 135.000000 | maximal falling height with damage }}<br />
|}<br />
<br />
<br />
;Units:times are in frames<br />
:heights are in world units<br />
:velocities are in world units per frames<br />
:accelerations are in world units per frames squared<br />
;Downwards velocity: could correspond to the steady push experienced when neither jumping nor falling<br />
:would be roughly equivalent to the starting velocity of a fall<br />
:although the value .55 seems right, the "sinking" seems to be hardcoded now<br />
;Gravity timer:Seems to be hardcoded now (could be the time until gravity switches on)<br />
;Jetpack timer:You can press JUMP multiple times during the time window (quite fun!)<br />
;Falling height: let FH1 be the height at 0x20<br />
:let FH2 be the height at 0x24<br />
:let BH be the base health of the character<br />
:let FH be the actual falling height<br />
:then, if FH > FH2, the character is killed<br />
:if FH < FH1, the character takes no damage<br />
:if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x028 | link |FF8000| 01 F8 03 00 | 1016 | link to 01016-shadow1.[[OBD:TXMP|TXMP]] }}<br />
{{OBDtr| 0x02C | float |FF8000| 00 00 40 41 | 12.000000 | height where the shadow fades out completely }}<br />
{{OBDtr| 0x030 | float |FF8000| 00 00 00 41 | 8.000000 | height where the diameter of the shadow decreases and the shadow fades out half }}<br />
{{OBDtr| 0x034 | float |FF8000| 00 00 C0 40 | 6.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x038 | float |FF8000| 00 00 90 40 | 4.500000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x03C | float |FF8000| 00 00 40 40 | 3.000000 | height where the diameter of the shadow decreases }}<br />
{{OBDtr| 0x040 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the first part of a jump }}<br />
{{OBDtr| 0x042 | int16 |FF8000| 30 00 | 48 | transparency of the shadow for the second part of a jump }}<br />
|}<br />
<br />
;Jump Constraints?<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x044 | float |FF0080| 00 00 C8 41 | 25.000000 | unknown; always the same }}<br />
{{OBDtr| 0x048 | int8 |FFC8C8| 16 | 22 | unknown }}<br />
{{OBDtr| 0x049 | int8 |FFC8C8| 06 | 6 | unknown; always the same }}<br />
{{OBDtr| 0x04A | char[2] |FFC8C8| AD DE | dead | unused; always the same }}<br />
{{OBDtr| 0x04C | float |FFFFC8| 00 00 20 42 | 40.000000 | unknown; always the same }}<br />
{{OBDtr| 0x050 | float |FFFFC8| 00 00 96 43 | 300.000000 | unknown; always the same }}<br />
{{OBDtr| 0x054 | float |FFFFC8| 35 FA 8E 3C | 0.017453 | unknown; always the same (0.017453 <nowiki>=</nowiki> PI/180) }}<br />
{{OBDtr| 0x058 | float |FFFFC8| DB 0F C9 3F | 1.570796 | unknown; always the same (1.57 <nowiki>=</nowiki> PI/2) }}<br />
{{OBDtr| 0x05C | float |FFFFC8| 00 00 A0 40 | 5.000000 | unknown; always the same }}<br />
{{OBDtr| 0x060 | float |FFFFC8| 00 00 80 3F | 1.000000 | unknown; always the same }}<br />
{{OBDtr| 0x064 | int16 |C8FFC8| 06 00 | 6 | (inverse) hypo regeneration rate in frames per hitpoint }}<br />
{{OBDtr| 0x066 | char[2] |C8FFC8| AD DE | dead | unused }}<br />
{{OBDtr| 0x068 | float |C8FFFF| 00 10 3D 48 |193600.000000| unknown; always the same; this is 440 squared }}<br />
{{OBDtr| 0x06C | float |C8FFFF| 00 10 3D 47 | 48400.000000| unknown; always the same; this is 220 squared }}<br />
{{OBDtr| 0x070 | float |C8FFFF| 00 10 3D 46 | 12100.000000| unknown; always the same; this is 110 squared }}<br />
{{OBDtr| 0x074 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
{{OBDtr| 0x078 | float |C8FFFF| 00 00 00 00 | 0.000000 | unknown; always the same }}<br />
|}<br />
<br />
<br />
;Hurt sound paramters<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x07C | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x07E | int16 |FFC8FF| 5A 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x080 | int16 |FFC8FF| 0F 00 | 15 | unknown; always the same }}<br />
{{OBDtr| 0x082 | int16 |FFC8FF| 78 00 | 120 | unknown; always the same }}<br />
{{OBDtr| 0x084 | int16 |FFC8FF| 23 00 | 35 | unknown; always the same }}<br />
{{OBDtr| 0x086 | int16 |FFC8FF| 01 00 | 1 | unknown; always the same }}<br />
{{OBDtr| 0x088 | int16 |FFC8FF| 02 00 | 2 | unknown; always the same }}<br />
{{OBDtr| 0x08A | int16 |FFC8FF| 64 00 | 100 | unknown; always the same }}<br />
{{OBDtr| 0x08C | int16 |FFC8FF| 0A 00 | 10 | unknown; always the same }}<br />
{{OBDtr| 0x08E | int16 |FFC8FF| 0C 00 | 12 | unknown; always the same }}<br />
{{OBDtr| 0x090 | int16 |FFC8FF| 16 00 | 22 | unknown; always the same }}<br />
{{OBDtr| 0x092 | int8 |FFC800| 00 | 0 | used at runtime only: if one sound pointers have been set }}<br />
{{OBDtr| 0x093 | char[1] |C800C8| DE | dead | unused; always the same }}<br />
{{OBDtr| 0x094 | float |C87C64| 00 00 00 3F | 0.500000 | unknown; always the same (sound volume?) }}<br />
{{OBDtr2|0x098 | char[32] |B0C3D4| konoko_hurt_light | hurt light sound (reference to 08121-konoko_hurt_light.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium | hurt medium sound (reference to 08123-konoko_hurt_medium.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy | hurt heavy sound (reference to 08119-konoko_hurt_heavy.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death | death sound (reference to 08115-konoko_death.[[OBD:OSBD|imp.OSBD]] of level 0) }}<br />
{{OBDtr| 0x118 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt light sound }}<br />
{{OBDtr| 0x11C | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt medium sound }}<br />
{{OBDtr| 0x120 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to hurt heavy sound }}<br />
{{OBDtr| 0x124 | int32 |E7CEA5| 00 00 00 00 | 0 | runtime only: pointer to death sound }}<br />
|}<br />
<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x128 | bitsets |E7CEA5| 17 00 00 00 | 23 | general AI option bitset collection ; see below }}<br />
{{OBDtr| 0x12C | float |FFDDDD| 00 00 80 3F | 1.000000 | AI rotation speed factor }}<br />
{{OBDtr| 0x130 | int16 |64AAAA| 06 00 | 6 | minimal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x132 | int16 |64AAAA| 18 00 | 24 | maximal fallen time; number of frames for which AI remains in *fallen* position when it is knockdowned }}<br />
{{OBDtr| 0x134 | int16 |EBEBEB| 0F 00 | 15 | minimal realize firingspread time; (???number of frames???time in miliseconds???) after which AI realizes that it is in the firing spread (and it starts dodging) }}<br />
{{OBDtr| 0x136 | int16 |EBEBEB| 00 00 | 0 | maximal realize firingspread time; (???number of frames???time in miliseconds???) }}<br />
|}<br />
<br />
<br />
;AI rotation speed factor<br />
:reference rotation speed is about 1 turn (360&#65533;) per second<br />
:the setting is only effective if the AI is in control<br />
:so it's a bit like the AI's mouse sensitivity :)<br />
<br />
<br />
;General AI options bitset<br />
:allows or disables some parts of the AI behavior<br />
*NONE - startle anim is enabled, rest is disabled<br />
*0x01 - startle anim disabled<br />
*0x02 - firingspread/projectile dodge enabled for melee<br />
*0x04 - requires 0x02; firingspread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging<br />
*0x08 - requires 0x02, overrides 0x04 if both are set; firingspread/projectile dodge enabled for weapons; AI isn't shooting, it just tends to run away, not facing shooter<br />
*0x10 - bit not used<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x138 | float |8C8CCC| 00 00 80 3F | 1.000000 | minimal firingspread dodge amount; IMO similar to maneouvre variable, it tells AI how long it should perform dodging/hiding in response to some time spent inside firing spread (so setting this very high means that once enemy starts dodging/hiding, he will perform it even after firing spread disappears) }}<br />
{{OBDtr| 0x13C | float |8C8CCC| 00 00 80 3F | 1.000000 | maximal firingspread dodge amount; IMO similar to maneouvre variable }}<br />
{{OBDtr| 0x140 | float |8C8CCC| 00 00 00 3F | 0.500000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x144 | float |8C8CCC| 00 00 C8 41 | 25.000000 | unknown; something with AI targeting prediction; always the same for TURR and ONCC }}<br />
{{OBDtr| 0x148 | float |8C8CCC| 00 00 80 3F | 1.000000 | unknown; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x14C | int32 |FF00C8| 00 00 00 00 | 0 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x150 | int32 |FF00C8| 05 00 00 00 | 5 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x154 | int32 |FF00C8| 0F 00 00 00 | 15 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtr| 0x158 | int32 |FF00C8| 3C 00 00 00 | 60 | unknown frame count; something with AI targeting prediction; always the same for TURR }}<br />
{{OBDtrBK|1=First of 13 elements (grey outline) }}<br />
{{OBDtr| 0x15C | float |F0F096| 00 00 00 00 | 0.000000 | recoil compensation amount (0.0 <nowiki>= min, 1.0 =</nowiki> max) }}<br />
{{OBDtr| 0x160 | float |F0F096| 00 00 00 00 | 0.000000 | best aiming angle in radians }}<br />
{{OBDtr| 0x164 | float |F0F096| 00 00 00 00 | 0.000000 | shot grouping error }}<br />
{{OBDtr| 0x168 | float |F0F096| 00 00 80 3F | 1.000000 | shot grouping decay }}<br />
{{OBDtr| 0x16C | float |F0F096| 00 00 80 3F | 1.000000 | shooting inaccuracy multiplier }}<br />
{{OBDtr| 0x170 | int16 |00C864| 00 00 | 0 | minimum delay between shots in frames }}<br />
{{OBDtr| 0x172 | int16 |00C864| 00 00 | 0 | maximum delay between shots in frames }}<br />
|}<br />
<br />
<br />
;SHOOTING SKILLS<br />
These can be reviewed with e.g. '''ai2_skill_select konoko_generic w1_tap''' and then either '''ai2_skill_show''' (prints to console) or '''ai2_skill_save''' (prints to file)<br />
;Fields<br />
:recoil compensation amount, between 0 and 1 (float)<br />
:best aiming angle, in radians (float)<br />
:shot grouping error (float)<br />
:shot grouping decay (float)<br />
:shooting inaccuracy multiplier (float)<br />
:minimum delay between shots, in frames (short)<br />
:maximum delay between shots, in frames (short)<br />
The first weapon (weapon 0) is not in the game anymore, whatever that was. Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's ball, except '''w10_sni''' is still available) ('''w12_ba2''' and '''w11_ba1''' are a bit mixed up : the beam is made of '''w12_ba2''' particles, and the grenade is a '''w11_ba1''' particle...)<br />
<br />
See screenshot for the raw hex (example is '''konoko_generic''' from '''level3_Final''')<br />
{{Table|width=""|align="left"}}<br />
|-BGCOLOR="#E9E9E9" ALIGN=CENTER<br />
!Weapon ||Offset ||recoil||bestangle||error||decay||inaccuracy||delays<br />
|-ALIGN=CENTER <br />
|'''w0_sec''' ||0x15C/0x173|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w1_tap''' ||0x174/0x18B|| 0.0 || 0.000000|| 0.40|| 0.4 || 0.0 || 30 - 45<br />
|-ALIGN=CENTER <br />
|'''w2_sap''' ||0x18C/0x193|| 0.3 || 0.013962|| 0.13|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w3_phr''' ||0x194/0x20B|| 0.3 || 0.010472|| 0.05|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w4_psm''' ||0x20C/0x213|| 0.3 || 0.015707|| 0.03|| 0.2 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w5_sbg''' ||0x214/0x22B|| 0.3 || 0.001745|| 0.00|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w6_vdg''' ||0x22C/0x233|| 0.3 || 0.001745|| 0.13|| 0.9 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w7_scc''' ||0x234/0x24B|| 0.3 || 0.001745|| 0.05|| 0.1 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w8_mbo''' ||0x24C/0x253|| 0.3 || 0.005236|| 0.01|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w9_scr''' ||0x254/0x26B|| 0.3 || 0.010472|| 0.04|| 0.5 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w10_sni'''||0x26C/0x273|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w11_ba1'''||0x274/0x28B|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|-ALIGN=CENTER <br />
|'''w12_ba2'''||0x28B/0x293|| 0.0 || 0.000000|| 0.00|| 1.0 || 1.0 || 0 - 0<br />
|}<br />
<br clear=all><br />
<br />
<br />
[[image:oncc_m.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x294 | int32 |00C8FF| 5A 00 00 00 | 90 | unknown; always the same }}<br />
{{OBDtr| 0x298 | int32 |00C8FF| F0 00 00 00 | 240 | unknown; always the same }}<br />
{{OBDtr| 0x29C | int32 |00C8FF| B4 00 00 00 | 180 | unknown; always the same }}<br />
{{OBDtr| 0x2A0 | int32 |00C8FF| 28 00 00 00 | 40 | taunt chance (40%) }}<br />
{{OBDtr| 0x2A4 | int32 |00C8FF| 37 00 00 00 | 55 | go for gun chance (55%); determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command }}<br />
{{OBDtr| 0x2A8 | int32 |00C8FF| 3C 00 00 00 | 60 | running pickup chance (60%); this value is possibility of AI running weapon pickup (acrobatics, slides) instead of normal "stop->pickup";this is calculated AFTER engine decides that AI should run for weapon }}<br />
{{OBDtr| 0x2AC | int16 |C80040| 00 00 | 0 | combat profile ID; for example *0D* is for Mutant Muro }}<br />
{{OBDtr| 0x2AE | int16 |C80040| 16 00 | 22 | melee profile ID }}<br />
{{OBDtr| 0x2B0 | int8 |FFCD96| 64 | 100 | "taunt" sound probability (always) }}<br />
{{OBDtr| 0x2B1 | int8 |FFCD96| 00 | 0 | "alert" sound probability (never) }}<br />
{{OBDtr| 0x2B2 | int8 |FFCD96| 00 | 0 | "startle" sound probability (never) }}<br />
{{OBDtr| 0x2B3 | int8 |FFCD96| 00 | 0 | "checkbody" sound probability (never) }}<br />
{{OBDtr| 0x2B4 | int8 |FFCD96| 00 | 0 | "pursue" sound probability (never) }}<br />
{{OBDtr| 0x2B5 | int8 |FFCD96| 00 | 0 | "cower" sound probability (never) }}<br />
{{OBDtr| 0x2B6 | int8 |FFCD96| 64 | 100 | "superpunch" probability (always) }}<br />
{{OBDtr| 0x2B7 | int8 |FFCD96| 64 | 100 | "superkick" probability (always) }}<br />
{{OBDtr| 0x2B8 | int8 |FFCD96| 00 | 0 | "super3" sound probability (never) }}<br />
{{OBDtr| 0x2B9 | int8 |FFCD96| 00 | 0 | "super4" sound probability (never) }}<br />
{{OBDtr| 0x2BA | int16 |C8C864| 00 00 | 0 | probably a blank filler (always the same) }}<br />
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko | "taunt" sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x2DC | char[32] |0096C8| unused | "alert" sound }}<br />
{{OBDtr2|0x2FC | char[32] |0096C8| unused | "startle" sound }}<br />
{{OBDtr2|0x31C | char[32] |0096C8| unused | "checkbody" sound }}<br />
{{OBDtr2|0x33C | char[32] |0096C8| unused | "pursue" sound }}<br />
{{OBDtr2|0x35C | char[32] |0096C8| unused | "cower" sound }}<br />
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko | "superpunch" sound (reference to 08110-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x39C | char[32] |0096C8| c18_79_15konoko | "superkick" sound (reference to 08112-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}<br />
{{OBDtr2|0x3BC | char[32] |0096C8| unused | "super3" sound (only the superninja uses this slot) }}<br />
{{OBDtr2|0x3DC | char[32] |0096C8| unused | "super4" sound (never used in Oni) }}<br />
{{OBDtr| 0x3FC | float |FF80C0| 00 80 ED 43 | 475.000000 | central vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki>1* }}<br />
{{OBDtr| 0x400 | float |FF80C0| 00 00 16 43 | 150.000000 | peripheral vision field range; you can make it visible with the script command *ai2_showvision <nowiki>=</nowiki> 1* }}<br />
{{OBDtr| 0x404 | float |FF80C0| 7D 1B 44 3F | 0.766044 | horizontal angle between two couples of "eye-rays" (one couple is left, one if right eye); works for both vision fields }}<br />
{{OBDtr| 0x408 | float |FF80C0| F3 B3 51 3F | 0.819152 | vision field curve for central vision field; vision field looks like something between cone and cylinder; this value affect central angle of that; the higher this value is, the more is this field wrapped in order to achieve shaper angle; when set lower, vision field unwraps totally and it looks like radar antenna, attached to a character by two couples of straight strings(one couple left, one right) }}<br />
{{OBDtr| 0x40C | float |FF80C0| E8 D5 12 3F | 0.573576 | vertical angle between eye-rays in one couple; this is for central vision field }}<br />
{{OBDtr| 0x410 | float |FF80C0| D5 D0 31 3E | 0.173648 | vision field curve for peripheral vision field }}<br />
{{OBDtr| 0x414 | float |FF80C0| 6B 61 D8 BE | 0.422618 | vertical angle between eye-rays in one couple; this is for peripheral vision field }}<br />
{{OBDtr| 0x418 | int32 |D0C0AF| B4 00 00 00 | 180 | hostilethreat definite timer; how long will AI know exactly where its enemy is even if it can't see him with central vision-field; AI attacks him; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x41C | int32 |D0C0AF| 84 03 00 00 | 900 | hostilethreat strong timer; how long will AI remain in strong feeling that there is the enemy, but will not attack him but investigate; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x420 | int32 |D0C0AF| 10 0E 00 00 | 3600 | hostilethreat weak timer; how long will AI remain in weak feeling of an enemy, just looking around aimlessly (Glance pursue mode); can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x424 | int32 |D0C0AF| 10 0E 00 00 | 3600 | friendlythreat definite timer; how long will AI know exactly where its ally (Syndicate saw Syndicate for example) is even if it can't see him with central vision-field; AI simply knows there is someone else nearby; maybe has further possibilities; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware) }}<br />
{{OBDtr| 0x428 | int32 |D0C0AF| 50 46 00 00 | 18000 | friendlythreat strong timer; how long will AI remain in strong feeling that there is someone else, but will not try to find him or look at him; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x42C | int32 |D0C0AF| A0 8C 00 00 | 36000 | friendlythreat weak timer; how long will AI remain in weak feeling of ally, doing its usual job; can be checked by *ai2_report_verbose* command }}<br />
{{OBDtr| 0x430 | float |EEDDFF| 00 00 80 3F | 1.000000 | earshot radius; defines size of the sound-collision sphere around AI }}<br />
{{OBDtr| 0x434 | link |C5FF8A| 01 FB 03 00 | 1019 | link to 01019-konoko.[[OBD:ONCV|ONCV]]; defines variants and upgrades }}<br />
{{OBDtr| 0x438 | link |C5FF8A| 01 F9 03 00 | 1017 | link to [[OBD:ONCP|01017-.ONCP]]; lists the particles available for this character (trails, flashes, etc) }}<br />
{{OBDtr| 0x43C | link |C5FF8A| 01 FA 03 00 | 1018 | link to [[OBD:ONIA|01018-.ONIA]]; lists the special impact sounds (used for special combat moves) }}<br />
{{OBDtr| 0x440 | int8 |C5FF8A| 00 | unused | runtime only }}<br />
{{OBDtr| 0x441 | int8 |C5FF8A| 00 | unused | padding }}<br />
{{OBDtr| 0x442 | int16 |C5FF8A| 00 00 | unused | runtime only }}<br />
{{OBDtr2|0x444 | char[16] |C0C0C0| Light | modifier; either hardcoded or defunct (only visible in pm_mod_type.WMM_, level 0)<br />
edit: WMDD says: Effects found for Impact x on Material y with Modifier: pm_mod_types }}<br />
{{OBDtrBK|1=First of 15 impact elements. }}<br />
{{OBDtr2|0x454 | char[128] |FF0080| Footstep_Walk | walk impact (reference to 04124-Footstep_Walk.[[OBD:Impt|Impt]] of level 0); always the same; without the impacts you can't hear the steps of a character }}<br />
{{OBDtr| 0x4D4 | int16 |FF0080| FF FF | -1 | set at runtime to the value stored at 0x08 in [[OBD:Impt|Impt]] }}<br />
|}<br />
<br />
<br />
[[image:oncc_e.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0xBF2 | int16 |FFFFA6| 00 00 | 0 | unknown; always the same; maybe only a filler }} <br />
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused | special death particle; only the mad bomber use it }} <br />
{{OBDtr| 0xC34 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC38 | link |0000BF| 00 00 00 00 | unused | runtime only }}<br />
{{OBDtr| 0xC3C | link |0000BF| 01 E6 03 00 | 998 | link to [[OBD:TRBS|00998-konoko_body_high.TRBS]] }}<br />
{{OBDtr| 0xC40 | link |0000BF| 01 E7 03 00 | 999 | link to [[OBD:TRMA|00999-konoko002_high_texture_generic.TRMA]] }}<br />
{{OBDtr| 0xC44 | link |0000BF| 01 E8 03 00 | 1000 | link to [[OBD:CBPM|01000-.CBPM]] }}<br />
{{OBDtr| 0xC48 | link |0000BF| 01 EC 03 00 | 1004 | link to [[OBD:CBPI|01004-.CBPI]] }}<br />
{{OBDtr| 0xC4C | int32 |804040| 2C 01 00 00 | 300 | fight mode timer in 1/60 seconds }} <br />
{{OBDtr| 0xC50 | int32 |804040| 30 75 00 00 | 30000 | first idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC54 | int32 |804040| 30 75 00 00 | 30000 | second idle animation timer in 1/60 seconds }} <br />
{{OBDtr| 0xC58 | int32 |804040| C8 00 00 00 | 200 | basic health of the character model; extra health information for every unique character are stored in the [[OBD:BINA/OBJC/CHAR|Character.BINA]] file}} <br />
{{OBDtr| 0xC5C | int32 |804040| 48 00 00 00 | 72 | unknown, maybe coefficient of taken damage concerning the player's health bar (higher value means less damage); always the same }} <br />
{{OBDtr| 0xC60 | float |FF22FF| 00 00 80 3F | 1.000000 | minimal body size factor }} <br />
{{OBDtr| 0xC64 | float |FF22FF| 00 00 80 3F | 1.000000 | maximal body size factor }} <br />
{{OBDtrBK| the following 7 float values corespond to damage types (see the [[OBD:BINA/PAR3|PAR3]] page for the 7 possible types of damage) }}<br />
{{OBDtr| 0xC68 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC6C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC70 | float |FF22FF| 00 00 00 3F | 0.500000 | stun timer; specifies how long should be this char stunned when hit with w6_vdg; the longest time possible to be stunned is when this byte is zero. Then this ONCC is stunned for 200 frames (30 frames for initial stagger + the rest of the frames is stun animation). The shortest time is for 1.000000 (no stagger/stun at all) }} <br />
{{OBDtr| 0xC74 | float |FF22FF| 00 00 80 3E | 0.250000 | unknown }} <br />
{{OBDtr| 0xC78 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC7C | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC80 | float |FF22FF| 00 00 00 00 | 0.000000 | unknown; always the same }} <br />
{{OBDtr| 0xC84 | float |FF22FF| 00 00 00 3F | 0.500000 | unknown }}<br />
{{OBDtr| 0xC88 | link |808080| 01 F6 03 00 | 1014 | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]] }} <br />
{{OBDtr| 0xC8C | link |808080| 01 F6 03 00 | 1015 | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }} <br />
{{OBDtr| 0xC90 | int16 |FFAA82| 1E 00 | 30 | unknown; always the same }} <br />
{{OBDtr| 0xC92 | int16 |FFAA82| 00 00 | 0 | time between death and deletion, in frames (about 3 seconds for mad bomber) }} <br />
{{OBDtr| 0xC94 | bitset |00D900| 00 | 0 | TRSC bitset; see below }} <br />
{{OBDtr| 0xC95 | int8 |00D900| 01 | 1 | when set to 1 indicates that character has daodan powers (character does more damage in overpower mode)}} <br />
{{OBDtr| 0xC96 | int8 |00D900| 00 | 0 | when set to 1 indicates that character has supershield<br />
* is visible as red shield when overpowered<br />
* needs daodan flag above and 51% overpower to be enabled; chenille cheat works too<br />
* now it prevents damage from weapon fire and melee (exception are throws)<br />
* received (melee) hits cause not blue block flashes but orange flares (see [http://paradox.oni2.net/Bilder/blocked_attacks_on_51percent_overpower_plus_daodan-flag_plus_supershield.png HERE])<br />
}} <br />
{{OBDtr| 0xC97 | int8 |00D900| 00 | 0 | when set to 1, generically turns on '''canttouchthis''' cheat for this ONCC (used by MutantMuro.ONCC }} <br />
{{OBDtr| 0xC98 | char[8] |CACAFF| AD DE | dead | unused }} <br />
|}<br />
<br />
<br />
;Body size factor<br />
The body size of a model will be scaled uniformly by a random coefficient that falls in the range defined with 0xC60 and 0xC64. This is apparently a provision for increasing the variety of appearances in classes like TCTF soldiers; unique characters like Konoko get a range of 1.0 to 1.0. The basis or seed for the randomness is apparently the time and/or order of spawning of that character, and therefore the "random" size of the character can be reproduced consistently as long as the execution of the code is the same each time. To illustrate, find the following code in IGMD/manplant/manplant_cutscene.bsl:<br />
<gallery align="right"><br />
File:ONCC_body_size_factor-original.jpg|Sample 1<br />
File:ONCC_body_size_factor-spawn_order_change.jpg|Sample 2<br />
File:ONCC_body_size_factor-sleep_insertion.jpg|Sample 3<br />
</gallery><br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
When you play the opening cutscene for Chapter 2, Agent Thorson should appear as he does in the first pic in the table to the right. Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2<br />
<br />
ai2_spawn Recep</tt><br />
<br />
and he'll appear as in the middle pic. Look out, he's a giant! Even the receptionist is bigger! Change the code to:<br />
<br />
<tt>#Outside shot of cops walking in<br />
<br />
ai2_spawn Recep<br />
<br />
sleep 15<br />
<br />
ai2_spawn partner_cop_1<br />
<br />
ai2_spawn partner_cop_2</tt><br />
<br />
and you'll also get a deluxe-sized Thorson (right pic), though not as big as before. In complex scripts, body size quickly becomes truly random-seeming, but as you can see, in situations where the spawn function is called near the beginning of the code, before there is an opportunity for too much forking and branching, the results are quite reproducible.<br />
<br />
;TRSC bitset<br />
:determines whether character is left-hander or right-hander (weapon is attached to left or right fist bone) Must be consistent with TRSC or glitches appear. Possibilities are:<br />
:NONE - Character is right-hander with both pistols and rifles<br />
:0x01 - Character is left-hander with both pistols and rifles<br />
:0x02 - Character is left-hander with pistols but "right-hander" with rifles (however, animations for rifles are treated as left-handed)<br />
{{OBD_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}}<br />
<br />
{{OBD}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=AE:Bug-fix_and_feature_requests&diff=16563AE:Bug-fix and feature requests2010-06-01T21:23:13Z<p>Gumby: /* Droids shouldn't be bleeding */</p>
<hr />
<div>{{Brainstorm}}<br />
This is a place for reporting bugs in the AE and small fixes/improvements that the AE can make to original Oni. For general ideas for modding that don't fit within the current scope of the AE, see the [[Modding brainstorms]] page. For a broader perspective on improving Oni, see the [[AE:Food for thought|Food for thought]] page. If you're unclear on where your idea belongs, hopefully reading each page will give you an idea of what that page's scope is. --'''Iritscen'''<br />
<br />
=Improvements on original Oni that AE can make=<br />
==Widescreen fixes==<br />
Various widescreen fixes are needed. For example when playing in a 16:9 resolution at the start of level 2, the camera is positioned behind a wall, in the Dream Lab level the photos in the opening cutscene can be seen before the animation starts and when playing in a 16:10 or 16:9 resolution in the Compound level, Konoko can be seen on the ground before she lands O_o. --'''Rossy<br />
<br />
:I noticed while perusing Daodan-C's source code there was a "/* widescreen patch for talking heads */". Would that fix it? --'''Gumby<br />
<br />
::I believe that the "widescreen patch" is a specific workaround that fixes only the "cinematics". See [[BSL:Frustum and fog|HERE]] for a more general fix. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)<br />
<br />
==Evil TCTF, or Explain This Odd Behaviour==<br />
I don't know if this has already been fixed, but in my copy of Oni, there is a civilian in TCTF HQ that is set to the wrong team so good AIs attack her. --'''Rossy<br />
<br />
:Is it the woman on the first floor in the side room with those wide long pieces of machinery in the middle of it? --[[User:Iritscen|Iritscen]] 14:11, 20 September 2008 (CEST)<br />
::I think so, yeah. --[[User:RossyMiles|rossy]] 03:32, 21 September 2008 (CEST)<br />
:::I'm not too sure what to think about Iritscen's commitment to specificity... If it's '''a_v1''' you're talking about, there's nothing long or wide about the computer in her room. And if you mean '''lobby_victim06''', the floor she's on is not "first" in any way. Oh well... the point is, all those civilians, female or not, are in their typical Neutral team, and the TCTF AI won't attack them unless there is a glitch. The glitch is apparently due to some confusion in the awareness/knowledge/whatever system: apparently, if the TCTF see an enemy and a civilian "at the same time", they tend to label them both as hostilethreat. TCTF HQ is the only mission where TCTF can be seen around civilians after seeing them with hostiles and defeating the latter. The same glitch happens with TCTF VS SecurityGuard, and probably with Syndicate VS SyndicateAccessory. Custom scripts based on OTA could help investigate this bug more systematically. From a more practical point of view, the glitch can be fixed with timely calls to '''ai2_forget'''. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)<br />
<br />
==Missing gears sound==<br />
When Dev Mode is one, and you are near the gears at the very end of Ch. 12, Science Prison, you get a message about a missing sound for the gears, some kind of ambient noise. It should be easy to find a royalty-free sound effect and stick it in there. --[[User:Iritscen|Iritscen]] 02:02, 27 April 2009 (UTC)<br />
:It would be even more easy to remove the line of the script that references a missing sound. :) [[User:Gumby|Gumby]] 05:35, 3 May 2009 (UTC)<br />
::I don't think it's a line in the script, I think the engine is telling us that there's a sound for that area around the gears that is missing. Anyway, to me this is an opportunity to add a little something to Oni, to fix a glitch in a constructive way, not to just find a way to remove an error message. --[[User:Iritscen|Iritscen]] 11:46, 3 May 2009 (UTC)<br />
:::The only reason the engine would do that is if the script called for a sound to be played. Five dollars says the scipters made a type though. [[User:Gumby|Gumby]] 14:57, 3 May 2009 (UTC)<br />
::::I don't see where in the script it would be, nor does it seem like it *could* be in the script. I'm not talking about something that happens in a cutscene, but rather any time in-game that Konoko is near the gears. So it's a sound volume, or whatever we call them, that leads to Oni trying to play the sound. I also briefly checked the sound files and don't see anything about gears, so while it could be a typo, I think they just plain forgot to include the resource. --[[User:Iritscen|Iritscen]] 17:13, 3 May 2009 (UTC)<br />
:::::There is a gears.grp, but I don't quite know where the ambient is. The best solution IMO would be to use an existing Oni sound. I'll poke around and see what I can find. [[User:Gumby|Gumby]] 19:14, 4 May 2009 (UTC)<br />
::::::The problem is that gears.grp references SNDDgears.aif and that one does not exist. [[User:Neo|Neo]]<br />
:::::::I added a sound file with the name SNDDgears.aif.oni to AE and recompiled level0. Now there is no missing sound warning, but I don't hear any difference. If you want to try it: http://edt.oni2.net/AE_Files/SNDDgears.aif.oni.zip Now the sound is nothing special, just used it for a test. [[User:EdT|EdT]]<br />
::::::::That sound will only work for Macs, I'll try my own experimentation. :) By the way, make sure the volume in gears.grp isn't too low...[[User:Gumby|Gumby]] 02:36, 5 May 2009 (UTC)<br />
<br />
==Forgetful AI==<br />
:Only one AI remembers the location of Konoko, while the others go inactive:<br />
:http://edt.oni2.net/mov/1remembers.wmv<br />
:Also, its always the last AI that is spawned that remembers where Konoko is and attacks her.<br />
<br />
==BSL overload==<br />
FATAL SCRIPTING ERROR: exceeded maximum scripting parameter base size of 32769<br />
: When you decoy or throw enough guys into a fire then BSL get killed.<br />
: It's probably caused by the [[OBD:BINA/OBJC/TRGV|TV inside function]]. "This one is triggered at every frame (60 times per second) unless the trigger-only-once flag is set."<br />
: [http://paradox.oni2.net/AE_vid/Oni_BSL_killed.avi Here's a vid.] Vanilla Oni suffers the same.<br />
: Let's see if we can come up with a fix.<br />
: Oh, and, if a group stands in a fire then it seems that only one character gets damage.<br />
::Engine issue. :) We could always disable the TV and use particles. :P [[User:Gumby|Gumby]] 03:20, 18 July 2009 (UTC)<br />
<br />
==Aiming screens==<br />
The shoulder joints of males look awkward for rifle aiming, and more generally extreme aiming angles look funky. This could be fixed by editing or adding keyframes in the aiming screen TRAM; however, there is still no reasonable pipeline for that. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)<br />
<br />
:Another issue is that KONRIF side rolls use an aiming screen. On one hand, it allows her to keep shooting while in the middle of a roll, which is cool. On the other, the weapon stays upright when aiming and rotates 360° through Konoko's fist, which is uncool (of course, it only shows up in slowmo and/or side view). There is no solution apart from disabling the aiming screen on KONRIF side rolls. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)<br />
<br />
=="Stop or I'll still shoot"==<br />
The security guard's lines in the State building are kind of silly. "Stop, or I'll shoot". He shoots no matter what you do...>_> --[[User:Gumby|Gumby]]<br />
:Konoko is a "class B threat" wanted dead or alive, who stays defiant in response to the warning, so his "screw this" attitude is understandable... However, it is rather straightforward for a scripter to freeze the action until the player actually "moves a muscle". Another detail is the backup the guard called for; maybe he didn't alert the whole building, but some kind of backup ought to be on its way. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)<br />
<br />
==Compound laser triggers==<br />
They need to alert the enemies in the vicinity. That is all. :) [[User:Gumby|Gumby]] 09:25, 7 December 2008 (CET)<br />
<br />
==Droids shouldn't be bleeding==<br />
I think we need to update ONIE file in next AE to fully support the blood mod. At the moment droid can also bleed although their materials are all "armor". A little electrical discharge might be a good 'eye catcher' for them.<br />
::The issue is that I don't want to add ONIE mods into AE so that I set a good example. :) I'm on the fence on this one. :/ For now, think of it as your hands bleeding from hitting a metal object. :p [[User:Gumby|Gumby]] 21:23, 1 June 2010 (UTC)<br />
<br />
=AE Bug Reports=<br />
==Dashing AI==<br />
When you play as Muro, normal run (hold W) will end in a strange repeating movement change: one step sprint, one step run, and so on.--[[User:Paradox-01|Paradox-01]]<br />
:This must be part of the "AI dashing" mod, since I don't have it installed and Muro runs normally for me. --[[User:Iritscen|Iritscen]] 17:02, 26 July 2009 (UTC)<br />
<br />
==Domino knockdowns and fistsoflegend==<br />
fistsoflegend is still broken. geyser indicated that knockdowns might be optional in the final release, but the question is, "Will using knockdowns always break fistsoflegend?". --'''Iritscen<br />
<br />
:0) Didn't fistsoflegend suck anyway? 1) I can see there being no such thing as a "final release". 2) Knockdowns ''will'' be optional, that's not an option ^_^ The question is whether they will be fixed. If we can prevent spurious domino knockdowns (I believe we can, but maybe Loser knows better), then there is a chance that fistsoflegend will be redeemed. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)<br />
<br />
=AE Feature Requests=<br />
[[Category:Anniversary Edition]][[Category:Modding ideas]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Making_a_mod_package&diff=16550Making a mod package2010-05-27T05:04:06Z<p>Gumby: Please, every time i change a mod with those old uneccessary values I delete them</p>
<hr />
<div>The Anniversary Edition comes with a set of mods in the "package" format. This new [[Anniversary Edition/Framework|framework]] also allows modders to make third-party mods that will install easily into the Edition. You can start your package by copying an existing AE package and modifying it to save time, but in any case you'll need to learn how a package is made:<br />
<br />
<br />
1. Open up your Edition/install/packages folder.<br />
----<br />
2. Create a new folder with a name corresponding to your mod. No spaces, please. The five digit number in front corresponds to where in the load order you want your mod to be. Please, leave some space between your mod and other AE mods. See [[Anniversary Edition/Framework#Package numbering|HERE]] to know how to number your mod.<br />
----<br />
3. Create (or copy) a config file named "Mod_Info.cfg" inside your new folder.<br />
<br />
Sample:<br />
<br />
AEInstallVersion -> 1.1<br />
NameOfMod -> Improved Weapons<br />
ModVersion -> 1.1<br />
Category -> AE: Weapons<br />
Creator -> Geyser/Loser/Iritscen/Gumby<br />
HasOnis -> Yes<br />
Readme -> Improves the appearence and mechanics of existing Oni weapons. \n \n Currently contains...<br />
<br />
:;'''AEInstallVersion'''<br />
:What version of the Installer is needed to read this package. There are two significant releases of the Installer, 1.0 and 1.1. If you make a new package at this point, you should just set its AEInstallVersion to 1.1 to be safe. Following, for the sake of thorough documentation, are the functional package-handling differences between the versions:<br />
::1.0 (Edition 2009-07): Initial release.<br />
::1.1 (Edition 2010-05):<br />
:::*Now supports BSL mods. This means that the "HasBSL" flag now works. See step 7.<br />
:::*No more division of level0_Final into level0_Character, level0_Textures, etc., and no more need for a double-path like level1_Final/level1_Final. See step 5. The 1.0 package hierarchy still works, however.<br />
:::*Supports floating-point version numbers, like "ModString -> 11000BetterWeaps 1.1".<br />
:::*ModString is now depreciated for ModVersion.<br />
<br />
:;'''NameOfMod'''<br />
:The "public" name of the mod. It can be anything you like, but should be written in an easily understandable manner, since it is displayed for the user in the Installer.<br />
<br />
:;'''ModVersion'''<br />
:The version of the mod, used to know if you are using the most current version when updating.<br />
<br />
:;'''Creator'''<br />
:The name(s) that you want to get credit for the mod, displayed to the user in the Installer.<br />
<br />
:;'''HasOnis'''<br />
:Set this to "Yes" to tell the installer that .oni files are present.<br />
<br />
:;'''HasBSL'''<br />
:If set to "Yes", the Installer considers your mod a scenario and takes steps to exclude other BSL scenario mods from being installed for the same level. If set to "Addon", the Installer allows your mod to be installed to any level without restriction. Of course not all third-party BSL add-ons are guaranteed to be compatible with each other, but this is an inherent risk in third-party modding.<br />
<br />
:;'''Platform'''<br />
:If set to "Windows", mod is not listed in the Installer window on the Macintosh. If set to "Macintosh", mod is ignored on Windows.<br />
<br />
:;'''Readme'''<br />
:The read-me text displayed for the user in the installer. You can make linebreaks by using " \n ".<br />
<br />
Flags not documented here are currently ignored by the Installer.<br />
----<br />
4. If you have .oni files, make a folder named "oni" inside your package folder. If you have .bsl files, make a folder named "bsl" inside the package folder.<br />
----<br />
5. If your mod modifies the global data in level0_Final, make a "level0_Final" folder inside "oni". For every level that your mod uses, make a "levelX_Final" folder inside "oni". (level1_Final, level2_Final, etc...) New levels are currently not detected.<br />
----<br />
6. A BSL mod uses the names of the IGMD subfolders the script(s) will go into, e.g. a script that is meant for Chapter 1 goes in bsl/EnvWarehouse/.<br />
----<br />
7. Put levelX (anything but level0) .oni files inside their respective levelX_Final/ directories.<br />
<br />
You are done! Sample mod directory:<br />
<br />
81000TCTF3<br />
:bsl<br />
::tctf_ii<br />
:::tctf_ii_cutscene.bsl<br />
:Mod_Info.cfg<br />
:oni<br />
::level0_Final<br />
:::SUBTmessages.oni<br />
::level18_Final<br />
:::BINACJBOCharacter.oni<br />
<br />
----<br />
'''Special Notes'''<br />
<br />
*Be very careful when replacing (not adding) M3GM and TRAC, they can be a bit touchy. With TRAC, you must include all of the children of the TRAC you are adding. With M3GM, you must also include the file that references the M3GM. Whenever possible, copy the files from packages\Globalize instead of the default Oni files.<br />
<br />
<br />
*New ONCCs should have this inside the ONCP:<br />
<br />
<ONCPParticle><br />
<Name>glass_break</Name><br />
<Type>glass_break</Type><br />
<BodyPart>-1</BodyPart><br />
</ONCPParticle><br />
<br />
:If they do not, they will not be able to break glass when a user installs the glass-breaking AE mod.<br />
<br />
[[Category:Modding tutorials]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=OBD:BINA/ONIE&diff=16533OBD:BINA/ONIE2010-05-08T00:54:17Z<p>Gumby: /* Particle table */</p>
<hr />
<div>{{OBD BINA Header|align=center|prev=OBJC|type=ONIE|next=PAR3|name=Oni Impact Effects|onistuff=b_ie}}<br />
<br />
<br />
----<br />
==General table==<br />
[[Image:Bin_r_i1.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x00 | int32 |FF0000| 45 49 4E 4F | ONIE | Oni impact effects }}<br />
{{OBDtr| 0x04 | int32 |FFFF00| B8 B7 00 00 | 47032 | 47032 bytes is the length of the following impact effects part from this position }}<br />
{{OBDtr| 0x08 | int32 |00FF00| 02 00 00 00 | 2 | version }}<br />
{{OBDtr| 0x0C | int32 |00FFFF| 5E 00 00 00 | 94 | number of impacts }}<br />
{{OBDtr| 0x10 | int32 |FFC8C8| 1E 00 00 00 | 30 | number of materials }}<br />
{{OBDtr| 0x14 | int32 |FFFFC8| 54 00 00 00 | 84 | number of particles }}<br />
{{OBDtr| 0x18 | int32 |C8FFC8| 20 01 00 00 | 288 | number of sounds }}<br />
{{OBDtr| 0x1C | int32 |C8FFFF| 69 01 00 00 | 361 | number of impact effects }}<br />
{{OBDtr| 0x20 | int32 |FFC8FF| DF 00 00 00 | 223 | number of material indices }}<br />
{{OBDtrBK|Impact table }}<br />
{{OBDtr| 0x00 | char[128] |FFC800| 44 65 66... | Default | impact name (Default.[[OBD:Impt|Impt]]) }}<br />
{{OBDtr| 0x80 | int16 |FFC800| 00 00 | 0 | runtime only }}<br />
{{OBDtr| 0x82 | int16 |FFC800| 00 00 | 0 | runtime only }}<br />
{{OBDtrBK|Material table }}<br />
{{OBDtr| 0x00 | char[128] |FFC800| 44 65 66... | Default | material name (Default.[[OBD:Mtrl|Mtrl]]) }}<br />
{{OBDtr| 0x80 | int16 |FFC800| 00 00 | 0 | runtime only }}<br />
{{OBDtr| 0x82 | int16 |FFC800| 00 00 | 0 | runtime only }}<br />
|}<br />
<br />
<br />
----<br />
==Impact lookup table==<br />
<br />
This table has the same number of entries as the impact table.<br />
<br />
[[Image:Bin_r_i2.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x00 | int16 |FFC8C8| 00 00 | 0 | index into the impact table }}<br />
{{OBDtr| 0x02 | int16 |FFFFC8| 00 00 | 0 | number of used entries in the material index table }}<br />
{{OBDtr| 0x04 | int32 |C8FFC8| DF 00 00 00 | 223 | index of the first used entry in the material index table }}<br />
|}<br />
<br />
<br />
----<br />
==Particle table==<br />
[[Image:Bin_r_i3.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x00 | char[64] |FFC8C8| 77 31 30... | w10_sni_x02| particle name (06193-3RAPw10_sni_x02.[[OBD:BINA/PAR3|BINA]]) }}<br />
{{OBDtr| 0x40 | int32 |FFFFC8| | | runtime: pointer to particle class }}<br />
{{OBDtr| 0x44 | int32 |C8FFC8| 00 00 00 00 | 0 | orientation type; the following values are possible:<br />
:0 - impact projectile orientation?<br />
:1 - impact projectile reversed orientation?<br />
:2 - impact direction perpendicular?<br />
:3 - impact projectile velocity orientation?<br />
}}<br />
{{OBDtr| 0x48 | int32 |C8FFFF| 05 00 00 00 | 5 | location type; the following values are possible:<br />
:0 - impact location<br />
:1 - impact location + impact direction * float value at 0x4C<br />
:4 - impact location; used for decals; at 0x4C there are 2 true/false bytes that control some decal parameters<br />
:5 - impact location and attach to character?<br />
}}<br />
{{OBDtr| 0x4C | |FFC8FF| 00 00 00 00 | | depends on location type }}<br />
{{OBDtr| 0x50 | |FFC800| 00 00 00 00 | | unknown; always zero }}<br />
|}<br />
<br />
<br />
----<br />
<br />
==Sound table==<br />
[[Image:Bin_r_i4.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x00 | char[32] |FFC8C8| | not used | sound name (link to an [[OBD:OSBD|OSBD]] file) }}<br />
{{OBDtr| 0x20 | |FFFFC8| CD CD | | ignored }}<br />
{{OBDtr| 0x22 | |C8FFC8| CD CD | | ignored }}<br />
{{OBDtr| 0x24 | int32 |C8FFFF| 00 00 00 00 | | runtime: pointer to sound }}<br />
{{OBDtr| 0x28 | int16 |FFC8FF| 01 00 | 1 | AI can hear; 0 <nowiki>=</nowiki> no, 1 <nowiki>=</nowiki> yes }}<br />
{{OBDtr| 0x2A | int16 |FFC800| 03 00 | 3 | AI sound type; the following types are possible:<br />
:0 - unimportant<br />
:1 - interesting<br />
:2 - danger<br />
:3 - melee<br />
:4 - gunfire }}<br />
{{OBDtr| 0x2C | float |C800C8| 00 00 16 43 | 150.000000 | AI sound radius }}<br />
|}<br />
<br />
<br />
----<br />
==Impact effects table==<br />
[[Image:Bin_r_i5.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x00 | int16 |FFC8C8| 37 00 | 55 | number of the used impact of the first package of part 1 }}<br />
{{OBDtr| 0x02 | int16 |FFFFC8| 01 00 | 1 | number of the used material of the second package of part 1 }}<br />
{{OBDtr| 0x04 | int16 |C8FFC8| 00 00 | 0 | component; the following components are possible:<br />
:0 - impact<br />
:1 - damage<br />
:2 - projectile }}<br />
{{OBDtr| 0x06 | int16 |C8FFFF| 00 00 | 0 | modifier; the following modifiers are possible:<br />
:0 - any<br />
:1 - heavy<br />
:2 - medium<br />
:3 - light }}<br />
{{OBDtr| 0x08 | int16 |FFC8FF| 01 00 | 1 | number of used entries from the particle table }}<br />
{{OBDtr| 0x0A | int16 |FFC800| 00 00 | 0 | unknown; looks like garbage to me }}<br />
{{OBDtr| 0x0C | int32 |C800C8| FF FF FF FF | -1 | index of the used entry in sound table; -1 <nowiki>=</nowiki> not used }}<br />
{{OBDtr| 0x10 | int32 |C87C64| 53 00 00 00 | 83 | index of the first used entry in the particle table }}<br />
|}<br />
<br />
<br />
----<br />
==Material index table==<br />
[[Image:Bin_r_i6.gif]]<br />
<br />
<br />
{{Table}}<br />
{{OBDth}}<br />
{{OBDtr| 0x00 | int16 |FFC8C8| 01 00 | 1 | index into material table }}<br />
{{OBDtr| 0x02 | int16 |FFFFC8| 01 00 | 1 | number of used entries in the impact effect table }}<br />
{{OBDtr| 0x04 | int32 |C8FFC8| 54 01 00 00 | 340 | index of the first used entry in the impact effect table }}<br />
|}<br />
<br />
<br />
----<br />
==Dialogs from level0_Tools==<br />
<br />
http://ssg.oni2.net/subfold/bluebox/images/700_impact_effects.png<br />
<br />
<br />
http://ssg.oni2.net/subfold/bluebox/images/701_impact_effect_properties.png<br />
<br />
<br />
{{OBD BINA Footer|align=center|prev=OBJC|type=ONIE|next=PAR3|name=Oni Impact Effects|onistuff=b_ie}}</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=AE_talk:New_weapons&diff=16501AE talk:New weapons2010-04-05T04:58:14Z<p>Gumby: /* w23_rla Rocket Launcher */</p>
<hr />
<div>=To-do on current AE weapons=<br />
A list of things for EdT to fix, since he asked for it ^_^. Some of this is already known, but at least this way it can be used as a checklist of sorts. Once addressed an issue can be struck through with <nowiki><s>strike-through tags</s></nowiki> if desired.<br />
*<s>WMC Grenade/SBG gun incorrectly called Superball Gun in announcement.</s><br />
*<s>We need to kill the little black recoilless pistol, it's not a finished weapon.</s> Added Recoil<br />
:That's not really a fix. :) [[User:Gumby|Gumby]] 04:23, 26 July 2009 (UTC)<br />
*<s>Folder names of weapons are not always consistent with in-game weapon names.</s><br />
*<s>RLA is in its own folder although described in-game as a BGI weapon (thus would go in BGI folder).</s><br />
*<s>Assorted spacing/alignment issues with weapon page text.</s><br />
*Question: Is there a limit to the number of Weapon pages? I can only see 15 pages and we have 19 weapons. [[User:EdT|EdT]]<br />
:As far as I know, no. You added weapon pages and unlocked all the weapons? [[User:Gumby|Gumby]] 04:23, 26 July 2009 (UTC)<br />
<br />
::Well the new weapon's pages appear, but some of the older ones don't. Why aren't the weapons pages progressive? From the basic to the advanced and then the new? [[User:EdT|EdT]]<br />
::Here is the updated new weapons package, please check. <br />
::http://edt.oni2.net/AE_Files/12000NewWeapons.zip<br />
:::Ha. The Weapons Pages are in a static sized array. It will be a bit of a mess to fix, even on PC...:/ I'd ask Neo about how best to go about it. :) [[User:Gumby|Gumby]] 08:26, 26 July 2009 (UTC)<br />
:::For PC, the weapons are added at 0x0502314 and displayed at 0x0502CE4. You also have to watch out for 0x502388. If you choose the change the pointers to the array on Mac, those should be the only three locations you have to worry about. Remember to also change the check to see if you are adding >15 weapon pages. [[User:Gumby|Gumby]] 08:32, 26 July 2009 (UTC)<br />
<br />
To reduce the number of weapons, why not upgrade WMC to WMC lite, SBG to SBG2 and Screaming cannon to Devil Star? [[User:EdT|EdT]]<br />
:Because choices are good. The new weapons shouldn't change the existing levels, except when we actually add them to the game. I thihnk its ok to just hold off on adding weapon pages, for now.<br />
::I agree with Gumby's first point. But actually I think we should still add all the weapon pages. At some point we can patch Oni to allow more than 15 pages. Once we do that, we won't have to worry about adding what pages we left out before; they will just show up immediately for the AE users with New Weapons installed. --[[User:Iritscen|Iritscen]] 12:47, 28 July 2009 (UTC)<br />
<br />
=Former content of AE:New weapons=<br />
''This was a good place to move this for now. But at some point we will have to sort through these and see which ones were made into weapons although not part of the AE, and which (if any) might still become weapons inside or outside of the AE, so we can file this information in a better place.'' --[[User:Iritscen|Iritscen]] 20:02, 21 July 2009 (UTC)<br />
<br />
[Moved from Main page Jul 18 09]<br />
<br />
Trying out some new weapons, which might make it into AE.<br />
<br />
==w15_smg Silenced Machine Gun==<br />
;Files<br />
:http://edt.oni2.net/AE_Files/w15_smg.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w15_smg.jpg<br />
<br />
;ToDo<br />
:DONE: Fix particles position<br />
:Silent particles?<br />
<br />
;Comments<br />
:ONWC based on Chaingun. Do we need shoulder support? With other characters, it goes inside their bodies. --[[User:EdT|EdT]] 18:02, 31 July 2008 (CEST)<br />
::The shoulder pad is OK; you just need to make the gun smaller: the pistol grip and trigger guard should be commensurate to the "handfist" --[[User:Geyser|geyser]] 01:36, 1 August 2008 (CEST)<br />
:::Updated: smaller gun --[[User:EdT|EdT]] 03:55, 1 August 2008 (CEST)<br />
::::Still too big. The pistol grip is supposed to fit within her fist (laterally, not vertically of course; the butt can and must stick a bit from the underside of the fist); the trigger guard, if possible, must span only the index finger (and some empty space above it). Also feel free to experiment with different color schemes and reflection maps... --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
:::::A bit smaller, adjusted particles position. --[[User:EdT|EdT]] 04:02, 2 August 2008 (CEST)<br />
::::::Hey, I gave this thing some nice new particles :D<br />
::::::http://gumby.oni2.net/Weapons/w15_smg_too/<br />
::::::*Changed to 1 bullet at a time :) (which also fixes the infinite ammo bug)<br />
::::::*Increased accuracy<br />
::::::*Increased damage<br />
::::::*Changed bullet color to a more reddish shade so you can tell when you are getting shot up with bigger bullets<br />
::::::*Wanted to use longer shells, but it needs an updated animated TXMP :( I suppose I could have increased the size a bit<br />
::::::It probably needs to be given a smaller clip.<br />
::::::I'd also like to go about finding a more appropriate firing sound <br />
::::::[[User:Gumby|Gumby]] 06:24, 22 November 2008 (CET)<br />
<br />
==w16_crb Carbine==<br />
Files<br />
:http://edt.oni2.net/AE_Files/w16_crb.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w16_crb.jpg<br />
;Status: Rejected<br />
;Comments<br />
:ONWC based on Chaingun. First attempt to create new weapon. Just added weapons info for reference. --[[User:EdT|EdT]] 22:00, 31 July 2008 (CEST)<br />
:I didn't really reject that one - it ''is'' a little "ordinary", but I suppose it could make make a fine shotgun (with a different texture/color); BTW, it's too big and the pistol grip is completely out of place. --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
<br />
==w17_sap Sub machine gun==<br />
Files<br />
:http://edt.oni2.net/AE_Files/w17_sap.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w17_sap.jpg<br />
;Status: Rejected - Oni is not Counterstrike<br />
<br />
;Comments<br />
:ONWC based on w2_sap, recoil reduced. Just added weapons info for reference. --[[User:EdT|EdT]] 22:00, 31 July 2008 (CEST)<br />
<br />
<br />
==w18_asr2 Assault Rifle==<br />
;Files<br />
:http://geyser.oni2.net/edition/weapons/w18_asr2.zip<br />
:File contains .oni files.<br />
<br />
http://wiki.oni2.net/w/images/6/68/Importing_weapons_RIGHT.png<br />
<br />
;Comments<br />
:geyser fixed the texture issue and 3D mesh. (He's much better at modeling than I will ever be) --[[User:EdT|EdT]] 22:47, 4 August 2008 (CEST)<br />
:Primary fire is Chaingun, secondary fire is grenades --Ed<br />
:One Halo rip too many? --[[User:Geyser|geyser]] 05:27, 31 July 2008 (CEST)<br />
::Doesn't the MC need his AR? :-) Actually, this weapon is too powerful. Perhaps a Boss weapon? [[User:EdT|EdT]] 06:57, 31 July 2008 (CEST)<br />
:::No, the MC needs to be de-Halo-ized in every possible aspecct, and the more original his weapons are, the better. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
:::As for the excessive deadliness, of course any enemy wielding this is a virtual subboss. No problem with that. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
:::It just needs to be balanced a bit in terms of ammunition and reloading time. I'd also scrap the grenades. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
:Ed, I have a question. Where did you get the mesh/texture, and what did you process the mesh with (triangulation? in what 3D tool?) --[[User:Geyser|geyser]] 00:07, 5 August 2008 (CEST)<br />
<br />
==w19_shg Shotgun==<br />
Files<br />
:http://edt.oni2.net/AE_Files/w19_shg.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w19_shg.jpg<br />
;Status: Rejected- Oni is not Counterstrike<br />
;Comments<br />
:ONWC based on chaingun, sustained fire disabled. Audio of weapon fire continues if mouse button held down. Just added weapons info for reference. --[[User:EdT|EdT]] 22:00, 31 July 2008 (CEST)<br />
::My idea of a "Demonslayer" shotgun was [http://www.turbosquid.com/3d-models/free-obj-mode-rifle/361993 THIS], but maybe it's more expedient to work with 17secs's AEG rifle a.k.a. "carbine" up there. --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
:::Or, if you really want it to look like a conventional shotgun, there's [http://www.turbosquid.com/FullPreview/Index.cfm/ID/308701 THIS] --[[User:Geyser|geyser]] 18:50, 1 August 2008 (CEST)<br />
::::I went to download the future shotgun, but the texture is missing, I filed a support ticket. --[[User:EdT|EdT]] 04:52, 2 August 2008 (CEST)<br />
:::::The texture is supposed to become available as a separate download, after you've downloaded the mesh. --[[User:Geyser|geyser]] 12:16, 2 August 2008 (CEST)<br />
::::::Its supposed to be available, but when I click on the link to download the texture after I downloaded the mesh, I get an error message saying the file is not available. Maybe its a Mac browser issue --[[User:EdT|EdT]] 13:23, 2 August 2008 (CEST)<br />
:::::::Sigh... looks like you're right, and there have been complaints about that before. Oh well, it sucked anyway - too real-worldish. Either get someone to invent a texture (what, no one? then we're screwed) or go back to painting the "carbine" ^_^ --[[User:Geyser|geyser]] 14:01, 2 August 2008 (CEST)<br />
<br />
==w20_lzr Disrupter Rifle==<br />
;Files<br />
:http://edt.oni2.net/AE_Files/w20_lzr.zip<br />
:File contains .oni, .obj, .mtl and .tiff files.<br />
<br />
http://edt.oni2.net/AE_Files/w20_lzr.jpg<br />
<br />
;ToDo<br />
:New particles<br />
::Could you elevate it a bit (rotate about the transverse axis) so that the barrel matches that of the plasma rifle? this will also help matching the position of the hands and handles more naturally (the pistol grip is rather off now, and the supporting hand is inside the mesh, partly because of the insufficient elevation). --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
:::Adjusted position of weapon. --[[User:EdT|EdT]] 04:45, 2 August 2008 (CEST)<br />
::::Now it aims a bit too high... or maybe it was just your first shot that wasn't steady? ^_^ --[[User:Geyser|geyser]] 14:03, 2 August 2008 (CEST)<br />
:::::OK, I split the difference in the angle and lowered the particles a bit --[[User:EdT|EdT]] 01:05, 3 August 2008 (CEST)<br />
<br />
;Comments<br />
:ONWC based on w3_phr. Rough UV map, I tried to separate the main parts of the weapon. --Ed<br />
:New particles for this weapon? --Ed<br />
::''I intended it as a flame thrower, originally... but if Gumby has cool-looking "disruptor particles", let's have a look --[[User:Geyser|geyser]] 05:27, 31 July 2008 (CEST)<br />
:::Was this based on the half assed weapon I never finished with? From the looks of the files inside this doesn't have what I had made. I do like the model you gave. The only particles I had were the red colored ones I sent you geyser...(should still be located on gumby.oni2.net). The other option is the "authentic" looking particles I made from the Mbow. You know, a long red line, like a "laser" should be :) I still need to add the burning in though, if you wanted me to do that, tell me, and I will add them to the weapon you sent me, and send it back to you :). [[User:Gumby|Gumby]] 06:18, 31 July 2008 (CEST)<br />
::::This is the 3D laser rifle geyser suggested we use on the Project Imago page. --[[User:EdT|EdT]] 06:57, 31 July 2008 (CEST)<br />
:::::Gumby: in the absence of a flame thrower, a "real laser" (long, red line) will be a nice placeholder indeed (with fire on impact, definitely). If you can, make the long red line uninterrupted in both space and time, with the trail constantly emitted at the weapon, and the collisions updated on the target end; somewhat closer to how w4_psp works. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
::::::Okay, well I have a nice red laser particle. [http://www.youtube.com/watch?v=NG7ym_nPjwo&feature=related THIS VIDEO] at 1:50, is what you want? [[User:Gumby|Gumby]] 20:01, 31 July 2008 (CEST)<br />
:::::::The red particle, if available, is great news for the trailer, along with the rocket. Even if we eventually make new weapons for them, for now they'll do fine as WMC Lite ^_^ --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
<br />
==w21_uzi Uzi==<br />
;Files<br />
:http://edt.oni2.net/AE_Files/w21_uzi.zip<br />
:File contains .oni files<br />
<br />
http://edt.oni2.net/AE_Files/w21_uzi.jpg<br />
<br />
;ToDo<br />
:Fix particles position<br />
<br />
;Comments<br />
:EDIT: renamed to w21_uzi <br />
:ONWC based on w2_sap. Particle height needs adjustment if we keep the w2_sap particles. --[[User:EdT|EdT]] 06:57, 31 July 2008 (CEST)<br />
:There's some confusion here. This is just a regular SubMachineGun (and a good-looking one at that). Could be a suitable sidearm for BGI executives. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
:Another suitable handgun is the autopistol from the same collection: these two are close enough to w1_tap and w2_sap, respectively --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
:The "silenced machine gun" is ''another'' weapon mesh from the same collection: it is larger and has a big nice silencer; you can't miss it. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
<br />
<br />
==w22_pst Pistol==<br />
Files<br />
:http://edt.oni2.net/AE_Files/w22_pst.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w22_pst.jpg<br />
<br />
;ToDo<br />
:DONE: Reduce recoil? Konoko should be able to hold the gun steady :-) --Ed<br />
::Do you mean because she's superhuman? :-) --[[User:Geyser|geyser]] 01:40, 1 August 2008 (CEST)<br />
<br />
;Comments<br />
:ONWC based on w1_tap --[[User:EdT|EdT]] 22:00, 31 July 2008 (CEST)<br />
::It's a bit too big. --[[User:Geyser|geyser]] 01:40, 1 August 2008 (CEST)<br />
:::Updated. Better? --[[User:EdT|EdT]] 03:55, 1 August 2008 (CEST)<br />
::::Still a bit too large. Same criticism as w15_smg above --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
:::::A bit smaller, removed recoil and adjusted particles. --[[User:EdT|EdT]] 04:01, 2 August 2008 (CEST)<br />
<br />
==w23_rla Rocket Launcher==<br />
;Files<br />
:Here is my new model of bgi bazooka for AE:<br />
[[File:Baz2.jpg]]<br />
:It's a concept for previewing the future model. And it has no handle))<br />
[[File:2.jpg]]<br />
:And this the low-poly version;<br />
[[File:BGI_rla_01.jpg]]<br />
:Another version with less polys.<br />
<br />
Waiting for your comments!!!<br />
<br />
::Squee! >_> Looks awesome. I see there is even a place for the guide laser. :D Keep going! [[User:Gumby|Gumby]] 18:48, 26 March 2010 (UTC)<br />
<br />
:You already know that I like it, Tieria :-). Just one thing to say at the moment: I am picturing Konoko trying to hold it and having trouble with the fact that the handgrip (the short handle underneath the weapon, not the one on the back of the weapon) is so far towards the back of the bazooka. What do you think about moving the handgrip up along the bottom of the barrel so it looks easier to hold? P.S.: Thanks for uploading smaller pics. Next sysop request: please name the images better so they don't cause confusion later. Names like "BGI rla 01.jpg" or "BGI bazooka concept 1.jpg" are nice. Thanks! --[[User:Iritscen|Iritscen]] 22:54, 26 March 2010 (UTC)<br />
<br />
::Can't wait to see it textured and in-game. Gumby can you create some new particles for it? [[User:EdT|EdT]]<br />
<br />
:::For [[User:Gumby|Gumby]] Yep thet's a laser sight.<br />
:::For [[User:Iritscen|Iritscen]] That's not a problem, Look at the last picture! About naming: Should I rename those that are already downloaded?<br />
:::For [[User:EdT|EdT]] Yeah, me too) But i'm not experienced in UVW-mapping, so I would be thankful if someone will help me with texturing of that model. -- [[User:Tieria Erde|Tieria Erde]]<br />
<br />
::::Thanks for the handle change, that might be good. As for the other pictures, if you are able to rename them, yes please. If you can't, then I will. Also, I know someone who does good textures, but I don't know if he has the right experience for this, so I'll ask him soon.<br />
::::I guess at this point I should ask if anyone has more input for Tieria. If not, it might be time to get the weapon imported and see how Konoko holds it. I'm not entirely sure she has the right animation for this kind of weapon, so we will need to see if it fits with an existing animation or we need to make a new one.<br />
::::P.S.: Tieria, I noticed that you changed the the side of the weapon in the latest model. Can I ask about the part that protrudes from the side, which has a black panel of some kind now -- does this part serve a function for the weapon? I would just like to know if you had some purpose in mind when you put it there, so we can work along with your thoughts when designing animations or particles.<br />
::::P.P.S.: Please remember to sign your edits. The fastest way is to hit the signature button in the toolbar. Thanks. --[[User:Iritscen|Iritscen]] 16:36, 28 March 2010 (UTC)<br />
:::::Ok, as for now i'll try to improve rla more, if it's possible. The hole on the side is for reloading. I think that Konoko will reload it like Syndicate rocket launcher.--[[User:Tieria Erde|Tieria Erde]] 17:25, 28 March 2010 (UTC) <br />
::::::Hmm? What Syndicate rocket launcher? Also, I checked with the guy I was thinking of, and he doesn't do UV mapping. Maybe VR will consider texturing it; it probably wouldn't be much work for him. But we'll have to wait until the model is done changing. --[[User:Iritscen|Iritscen]] 23:26, 28 March 2010 (UTC)<br />
:::::::I mean this one [[File:SyndicateRla.jpg]] What or who is "VR"? And what maximal number of polygon is it possible for the model? "But we'll have to wait until the model is done changing." What do you mean? What else, except polygon decreasing(it's about 600 now), I need to do? --[[User:Tieria Erde|Tieria Erde]] 16:04, 30 March 2010 (UTC)<br />
::::::::'''"I mean this one"''' Oh, the Scram Cannon! Okay, maybe that anim will work. '''"What or who is "VR"?"''' ViciousReilly is a talented guy who's working on new textures for the game. I just don't know if he has the time for this right now, but we can ask him. '''"what maximal number of polygon is it possible for the model?"''' Actually you have to go by vertices, not polys. The maximum number of vertices should be considered to be 1024. '''"What else, except polygon decreasing(it's about 600 now), I need to do?"''' Maybe nothing! I wasn't sure if you were done working on it yet, and I wasn't sure if others had more feedback for you. But, if your weapon is currently below 1024 vertices, we can probably try importing it now and see how it looks. --[[User:Iritscen|Iritscen]] 22:25, 31 March 2010 (UTC)<br />
<br />
<br />
Here's some pics of Tieria's model in-game (thanks to EdT for importing it):<br />
<br />
[[Image:Tieria_rla_3-angle.jpg]]<br />
<br />
And here's how it reloads using the Scram Cannon animation:<br />
<br />
http://s157.photobucket.com/albums/t72/Iritscen/Screen%20Caps/Oni/?action=view&current=Tieriarlareload.flv<br />
<br />
When firing the weapon, the shot appears to come out of the lower barrel, not the higher one, so someone who knows how to fix that will just need to make the particle spawn a little higher up. Otherwise, I think it's looking great, and the polys don't seem too high. Next step: finding a texturer! --[[User:Iritscen|Iritscen]] 16:03, 4 April 2010 (UTC)<br />
:Looking good. Either me or EdT should be able to fix the firing place issue. [[User:Gumby|Gumby]] 04:58, 5 April 2010 (UTC)<br />
{{divhide|Old Rla talk|2=<br />;What has been done so far<br />
*Laser particle working<br />
**Blue laser (I think it would look better as orange)<br />
**Proper impacts (woot! they look awesome) - [http://gumby.oni2.net/Weapons/w23_rla/shots/lite%20up.PNG] (I got my arse kicked there)<br />
*Rocket particle working<br />
**Uses bomber explosion particle (for now)<br />
**Accelerates and leaves contrail<br />
;To do<br />
*Seperate weapon? (needs rocket launcher model!)<br />
*Rocket<br />
**Blast effect (wall decal)<br />
**Thin smoke, a la Scram Cannon<br />
**Better explosion sound<br />
*Laser<br />
**Appropriate sound<br />
Just reserving the name\number. If you already have a w23, tell me.[[User:Gumby|Gumby]] 07:29, 1 August 2008 (CEST)<br />
:I thought we agreed to combine the rocket launcher and the laser into WMC Lite (so, w12_ba2)? --[[User:Geyser|geyser]] 10:54, 1 August 2008 (CEST)<br />
:Unless you have figured out the hold-release thingie; then it deserves a [http://www.turbosquid.com/3d-models/3d-model-bazooka-rocket-launcher/361997 separate weapon mesh] --[[User:Geyser|geyser]] 10:54, 1 August 2008 (CEST)<br />
::The hold release thing is coming, eventually. I will figure it out, but right now my plan is: 1. Fix rocket particle 2. Finish the laser 3. Add in hold+release. And other things may bump it down on the list. Unless you want me to prioritize it? [[User:Gumby|Gumby]] 21:13, 1 August 2008 (CEST)<br />
:::Small update: Rocket particle close enough to done (not the best of projectiles, but good enough). Laser getting there. I just have to mess with the lifetime of the contrail. Right now I am getting a light show effect. Cool, but not what we want. :) More, when it isn't 1:42 AM. [[User:Gumby|Gumby]] 10:42, 2 August 2008 (CEST)<br />
::::Another update: Laser is working...sort of. I need to replace the sounds and hit actions, but those aren't a big deal. WWhat is annoying is the fact that the laser seems to tear at longer distances. This is solvable by making the particle move faster. Unfortunately, this makes short range firing disappear (if the particle hits a wall before the part of the engine that draws contrails catches it, there is no contrail...) So, I have to make it fire two particles. The first is the long range one that actually does damage. The second is a short range one that disappears before it can get the tearing effect, and does no damage. I don't have the time to do this tonight though, and tomorrow I am going to Seafair. So Monday I should have a testable version of this.[[User:Gumby|Gumby]] 04:09, 3 August 2008 (CEST)<br />
:::::Ahem, [http://geyser.oni2.net/edition/weapons/w12_ba2.zip HERE] is a version with possibly outdated laser particles, just to show my take on the rocket's mesh and UVs (the mesh probably needs to be translated a bit along Y so that it appears to exit from the barrel, but that's no big deal). Note that Oni's engine renders particles without a Z-buffer, so non-convex objects will look messy at some angles, and the more non-convex, the messier. There is no fix to that right now, but for fast-traveling projectiles this shouldn't pose a problem. --[[User:Geyser|geyser]] 20:00, 8 August 2008 (CEST)<br />
::::::I wasn't satisfied with my product, so I didn't realise it. Having to go back and add in acceleration again didn't help. [[User:Gumby|Gumby]] 21:52, 8 August 2008 (CEST)}}<br />
<br />
==w24_psr==<br />
;Files<br />
:http://drop.io/ONIrules<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w24_psr.jpg<br />
<br />
;Comments<br />
: It actually shoots plasma. Replace the image EdT --[[User:ONIrules|ONIrules]] August 2008 (EST) -Done --[[User:EdT|EdT]] 05:45, 4 August 2008 (CEST)<br />
: Shoots rapid plasma now --[[User:ONIrules|ONIrules]] August 2008 (EST)<br />
: Yeah its small (I think),but this is my first try though. --[[User:ONIrules|ONIrules]] August 2008 (EST)<br />
: [http://halowiki.net/p/Plasma_Rifle BEWARE. OF. HALO. RIPS.] --[[User:Geyser|geyser]] 15:27, 3 August 2008 (CEST)<br />
: Huh?? --[[User:ONIrules|ONIrules]] August 2008 (EST)<br />
: Your new weapon is a [http://www.bungie.net/projects/halo3/content.aspx?link=h3plasmarifle Covenant Plasma Rifle] from Halo 1/2/3, and the mesh probably ripped. Not that you can't experiment with it, but keep in mind it's pretty much a stolen asset. --[[User:Geyser|geyser]] 16:26, 3 August 2008 (CEST)<br />
:Is this a bad thing? --[[User:ONIrules|ONIrules]] August 2008 (EST)<br />
: I don't know... I'm not Bungie's lawyer. But whereas the stolen Master Chief is arguably taken to a new level in Oni (able to fight awesome melee and all that), the Halo weapons you and Ed have injected into Oni so far have dull and possibly messed-up textures, which makes them look, well, shamelessly lame. If you want Covenant weapons to look "at home" in Oni's universe, you'll have to show a bit more tender loving care ^_^ --[[User:Geyser|geyser]] 16:51, 3 August 2008 (CEST)<br />
: I'm a little worry. --[[User:ONIrules|ONIrules]] August 2008 (EST)<br />
: Heh, don't worry, I'm just f##king with you. ^_^ as long as you keep experimenting, it's OK, but please don't think of Halo rips as more than ''placeholders''. --[[User:Geyser|geyser]] 17:25, 3 August 2008 (CEST)<br />
: OK, OK, ''don't'' frog blast the vent core!! ^_^ --[[User:ONIrules|ONIrules]]<br />
:No worries! It's not ripped. --[[User:ONIrules|ONIrules]]<br />
:Yes it is. Bungie's UVs were replaced with a lousy planar projection, but the mesh is still Bungie's. --[[User:Geyser|geyser]] 04:23, 8 November 2008 (CET)<br />
<br />
==Others==<br />
Here are the original files for:<br />
:[http://www.turbosquid.com/FullPreview/Index.cfm/ID/180387 Pallet rifle] http://edt.oni2.net/AE_Files/pallet.zip <br />
:[http://www.turbosquid.com/FullPreview/Index.cfm/ID/308701 Future Shotgun] http://edt.oni2.net/AE_Files/FShotgun.zip<br />
<br />
I hurt my shoulder this past weekend and can hardly raise my right arm up, its painful to work on the computer. So I'll have to take a break for awhile.<br />
Pierre was able to convert the pallet rifle to .obj and I got the texture for the Shotgun through tech support.<br />
If anyone wants to work on getting these weapons into Oni, go ahead.<br />
[[User:EdT|EdT]] 22:40, 4 August 2008 (CEST)<br />
<br />
Weapons completed and imported in Oni [[User:ONIrules|ONIrules]] August 2008 (EST)<br />
<br />
<br />
----<br />
==s1_swd Sword==<br />
;Files<br />
:http://edt.oni2.net/AE_Files/s1_swd.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/s1_swd.jpg<br />
;Status: REJECTED BIG TIME!<br />
<br />
;Comments<br />
:Just for fun... Maybe Loser will get some ideas... --[[User:EdT|EdT]] 04:19, 1 August 2008 (CEST)<br />
::We need a s2_lsb Lightsaber...Just for fun :D [[User:Gumby|Gumby]] 07:32, 1 August 2008 (CEST)<br />
:::It's not funny, and all the less so as Loser already ''had'' his major idea on that topic. --[[User:Geyser|geyser]] 10:51, 1 August 2008 (CEST)<br />
:::I'm talking about the animation-bound particles of the BGI Spartan (energy sword etc). --[[User:Geyser|geyser]] 10:51, 1 August 2008 (CEST)<br />
:::As compared to this one idea, all this talk of bats and knives is lame, lame, lame... --[[User:Geyser|geyser]] 10:51, 1 August 2008 (CEST)<br />
::::Gumby, looks like we can't have any fun... :-) --[[User:EdT|EdT]] 16:08, 1 August 2008 (CEST)<br />
:::::You can, but not at this time of year, dammit. There's a detailed roadmap for the trailer and only 3 weeks left, and what do ''you'' do? swords... ^_^ --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
::::::Although a katana in the hands of a ninja ''would'' be awesome. Not that we haven't already had the difficulties of getting that to work pointed out by Loser, but a guy can dream, right? --[[User:Iritscen|Iritscen]] 03:02, 23 August 2008 (CEST)<br />
<br />
<br />
<br />
So, in the interests of actually making this Weapons page move forward, can we get all these weapons to have Approved/Rejected statuses? You also need to tell us where the weapons will appear in-game. How does Konoko get her hands on one, by finding it somewhere or only by stealing it from an enemy? Which ones will be used by BGI? --[[User:Iritscen|iritscen]] 20:23, 16 November 2008 (CET)<br />
:Most weapons here are still in their crappy stage. I can't call any of them "done" except for [http://www.turbosquid.com/FullPreview/Index.cfm/ID/221645 THESE] so far, and even these still need particle and texture touch-ups. As for the rest, I'm still in awe at how bad we suck. --[[User:Geyser|geyser]] 21:27, 16 November 2008 (CET)<br />
:As for when and how the weapons will be encountered, these few "approved" things will typically be wielded by BGI executives, who won't be encountered in battle until Konoko goes rogue. Never found lying around. --[[User:Geyser|geyser]] 21:27, 16 November 2008 (CET)<br />
:I can't commit to more definite leadership, or rather it will only happen when I can concentrate on a specific element myself. Then I'll provide live examples, and until then you can go back to sleep, thank you. --[[User:Geyser|geyser]] 21:27, 16 November 2008 (CET)<br />
<br />
<br />
----<br />
OK, now, I'd like to have your attention for a few seconds. Consider this:<br />
<br />
[[Image:Importing weapons WRONG.png]]<br />
<br />
As you know, this was imported into Oni by EdT (online source unknown).<br />
:As you also know, this is supposed to be the assault rifle from Halo.<br />
::It is worth noting that it was shown and praised in this very state.<br />
:Now, if you're an Oni modder reading this, before you read further:<br />
::Please take a look at the above picture again, and tell me it's OK.<br />
:Thank you.<br />
::[[User:Geyser|geyser]] 19:00, 4 August 2008 (CEST)<br />
----<br />
:Now please take a look at these two pictures, side-by-side.<br />
<br />
[[Image:Importing weapons WRONG.png|320px]]<br />
[[Image:Importing weapons RIGHT.png|320px]]<br />
<br />
:Please leave a comment with an answer to this simple question:<br />
::CAN YOU SEE A DIFFERENCE?<br />
:Thank you.<br />
::[[User:Geyser|geyser]] 18:59, 4 August 2008 (CEST)<br />
----<br />
:And now the bottom line of this situation test: how bad can we suck?<br />
:How in the world is it possible that we:<br />
:#lay our hands on a ready-to-import, ripped mesh, complete with UVs and texture<br />
:#somehow import it as [[:Image:Importing weapons WRONG.png|THIS]] and don't go EWWWWWWW after checking ingame<br />
:#release it into the community without ANYONE SAYING ANYTHING BUT "WOW"<br />
:Tell me how that's possible and where we go from here. I'm confused.<br />
::[[User:Geyser|geyser]] 18:59, 4 August 2008 (CEST)</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=User:EdT/temp&diff=16481User:EdT/temp2010-03-29T23:36:55Z<p>Gumby: </p>
<hr />
<div><br />
---<br />
'''Loading Screen Preview'''<br />
<br />
EDIT: Updated zip file with TOCS screenshots [[User:EdT|EdT]]<br />
<br />
Here is the link to jpgs of the loading screens: http://edt.oni2.net/AE/LoadingScreens.zip<br />
<br />
The graphics are by VR, the screenshots were done by TOCS. <br />
<br />
The main question is do you want to include this with the official release of AEI or an optional package that the user can download later. <br />
<br />
:I think the images will be just fine as "core upgrade", the changed main menu is also not optional... (But I wonder what happens when someone plays with too low resolution.) --[[User:Paradox-01|Paradox-01]] 17:59, 28 March 2010 (UTC)<br />
::At lower resolutions they would get cut off. Since this is not cool, EdT and VR were planning to make a set of scaled-down images for people playing below 1024x768, but this would suggest that, if we install the menus by default in the AE, we need to install the lower-res ones, and offer the 1024x768 package as an option. That's the only way to prevent cutoff in all cases.<br />
::Also, because we are talking about a new style of menus, I think the package should be optional. The general rule in the AE is "don't install anything by default unless it's something really basic and indisputable". Matters of taste should always be left up to the user. --[[User:Iritscen|Iritscen]] 19:30, 28 March 2010 (UTC)<br />
:::Of course it would be optional. A few issues I have:<br />
::::1. The light blue "secondary" color for the borders looks ugly in my opinion. ;)<br />
::::2. The lines on the left and right sides in the help\info\objective menus tend to interfere with the text. I don't know if there is a way to add margins to the windows, but if you can do so, please do.<br />
::::3. Where do you suggest we put the AE version text now? There is no longer space between the Oni logo and New Game.<br />
::::[[User:Gumby|Gumby]] 23:36, 29 March 2010 (UTC)<br />
---<br />
I will be getting soon VR's rendition of new menus for Oni. [[User:EdT|EdT]]<br />
<br />
:Okay, looking good. Just don't forget to fix that underscore, EdT. First three comments are for TOCS's work, the last two are for VR's:<br />
:* Ch. 6's image of TCTF HQ is taken from the opposite side of [[:Image:CHAPTER 06 . COUNTERATTACK.png|the original shot]]. Now there's that ugly wall in the back center of the shot as opposed to the glass one.<br />
:* In the first version of these new level screens, EdT found the spot [[:Image:CHAPTER 07 . A FRIEND IN NEED.png|the original]] Ch. 7 picture was taken from; can we go back there, please? It looked good.<br />
:* Ch. 14's image is okay, but look at the right pillar -- it's mostly off-screen now, and in [[:Image:CHAPTER 14 . DAWN OF THE CHRYSALIS.png|the original image]] it brightened the whole composition and gave it more color. If we pull the camera back that far, does the pillar still look that way in-game?<br />
:* Just repeating my previous comment about the arcs; it's okay if they fade in and out of the pictures, but popping in and out like in Ch. 4's and 10's screens looks funny. A change in blending mode is probably all that's needed. The brightness is also a problem in some. I tried opening one of the PsD files in Gimp and it's not carrying in the blending modes from the file, so I can't fix the images myself.<br />
:* The original screens each have a special color assigned to them. This color is used in three places: the text for the chapter name, the color of the design widget below the location name, and the color of the widget for the lower-right corner's chapter number. The new screens look a little barren without that color. Could VR consider adding two new widgets of his own design to the level screen template, for the upper-left title and lower-right number? I <u>don't</u> think any text should change color (some of the original titles are hard to read due to this), but I think we need those other color highlights back.<br />
:Overall, the change in each of these screens is greatly for the better. Some of Oni's original screens have strange jaggies (poly intersection jaggies, not just texture ones), and they tend to look flat, partly because of the lower bit depth and partly because Bungie improved some of the level lighting after taking their screenshots. I especially love the new Ch. 8 and 9 screens. Keep up the good work! --[[User:Iritscen|Iritscen]] 20:29, 27 March 2010 (UTC)<br />
::Yeah, using Additive blending should fix the issue with the arcs. But that's up to the master to decide. :p <br />
::Chapter 00 (training) has two different types of zeroes. :p<br />
:::So does chapter 10. :|<br />
::::Whoa, I didn't notice the two kinds of zeroes. Weird. Although Chapter 10 uses only the zero with a bar. --[[User:Iritscen|Iritscen]] 11:04, 28 March 2010 (UTC)<br />
:::::I second to change back the "mutated zeros". ^_^ --[[User:Paradox-01|Paradox-01]] 17:59, 28 March 2010 (UTC)<br />
::Suggestion: Change "Module 1-A" to "Module 1-A Beta 6" or something similar. --[[User:Gumby|Gumby]] 05:58, 28 March 2010 (UTC)<br />
:::Why? --[[User:Iritscen|Iritscen]] 19:30, 28 March 2010 (UTC)<br />
::::Because that's what it is. :p [[User:Gumby|Gumby]] 23:36, 29 March 2010 (UTC) <br />
<br />
----<br />
===Old comments===<br />
:I see you made some improvements since I saw the first ones. Looks like you missed a couple levels and re-used the previous level's screenshot, but since TOCS is taking new screenshots, I guess we'll see what Ch.s 9 and 14 look like when he's done. A few thoughts:<br />
:* The arc are sometimes distracting in levels with alternating light and dark because they pop in and out, and in other screens the overall brightness of the image makes the arcs much brighter than in other screens. Maybe you can try changing the blending mode for these screens where it pops in and out: Ch. 4, Ch. 10, Ch. 13, and lowering the opacity of the arcs' layer for these screens where the arcs get too bright: Ch. 0, Ch. 5, Ch. 11, Ch. 12. If you want, I will fiddle with them myself if I can open them in Gimp (don't use Ps anymore).<br />
:* We should probably take additional screenshots for each level that has HD textures -- so, right now, just the Training level -- and make an identical screen using those HD textures and place it in the package with VR's HD textures for that level, and make sure it overrides the package we place these screens in. Not really relevant to this package, just thinking out loud.<br />
:* I think you meant the words "Bio_Research Lab" to have a hyphen, not an underscore.<br />
:Anyway, I would be in favor of including this in the AE. It'll still be an optional install, after all. --[[User:Iritscen|Iritscen]] 12:35, 27 March 2010 (UTC)<br />
<br />
:: lol, so much for multitasking... I was quickly going through the screens to get them done last night. I'll see what I can do today. [[User:EdT|EdT]]<br />
<br />
<br />
----<br />
'''WMDDdialog_setup_player'''<br />
<br />
How anyone ever come across this? [[User:EdT|EdT]]<br />
:SfeLi has. http://sfeli.oni2.net/img/2007-02-26_08-18-00.jpg<br />
:...I can get the menu to come up ingame by changing the ID, but the code that handles it has been removed, methinks. [[User:Gumby|Gumby]]<br />
<br />
<Instance id="0" type="WMDD"><br />
<Caption>Setup Player</Caption><br />
<Id>132</Id><br />
<State>Visible</State><br />
<Style>ThinBorder TitleBar Title CloseButton Center</Style><br />
<X>0</X><br />
<Y>0</Y><br />
<Width>240</Width><br />
<Height>75</Height><br />
<Controls><br />
<WMDDControl><br />
<Text>Player Name:</Text><br />
<Class>Label</Class><br />
<Id>0</Id><br />
<State>1</State><br />
<Style>1114112</Style><br />
<X>10</X><br />
<Y>10</Y><br />
<Width>75</Width><br />
<Height>20</Height><br />
<Font><br />
<Family>TSFFTahoma</Family><br />
<Style>Normal</Style><br />
<Color>0 0 0</Color><br />
<Size>7</Size><br />
</Font><br />
</WMDDControl><br />
<WMDDControl><br />
<Text>Character:</Text><br />
<Class>Label</Class><br />
<Id>0</Id><br />
<State>1</State><br />
<Style>1114112</Style><br />
<X>10</X><br />
<Y>35</Y><br />
<Width>75</Width><br />
<Height>20</Height><br />
<Font><br />
<Family>TSFFTahoma</Family><br />
<Style>Normal</Style><br />
<Color>0 0 0</Color><br />
<Size>7</Size><br />
</Font><br />
</WMDDControl><br />
<WMDDControl><br />
<Text>player_name</Text><br />
<Class>Textbox</Class><br />
<Id>100</Id><br />
<State>1</State><br />
<Style>0</Style><br />
<X>85</X><br />
<Y>10</Y><br />
<Width>145</Width><br />
<Height>20</Height><br />
<Font><br />
<Family>TSFFTahoma</Family><br />
<Style>Normal</Style><br />
<Color>0 0 0</Color><br />
<Size>7</Size><br />
</Font><br />
</WMDDControl><br />
<WMDDControl><br />
<Text>character</Text><br />
<Class>Dropdown</Class><br />
<Id>101</Id><br />
<State>1</State><br />
<Style>131072</Style><br />
<X>85</X><br />
<Y>35</Y><br />
<Width>145</Width><br />
<Height>20</Height><br />
<Font><br />
<Family>TSFFTahoma</Family><br />
<Style>Normal</Style><br />
<Color>0 0 0</Color><br />
<Size>7</Size><br />
</Font><br />
</WMDDControl><br />
</Controls><br />
</Instance></div>Gumbyhttps://wiki.oni2.net/w/index.php?title=User:EdT/temp&diff=16480User:EdT/temp2010-03-29T23:12:10Z<p>Gumby: </p>
<hr />
<div>'''Loading Screen Preview'''<br />
<br />
EDIT: Updated zip file with TOCS screenshots [[User:EdT|EdT]]<br />
<br />
Here is the link to jpgs of the loading screens: http://edt.oni2.net/AE/LoadingScreens.zip<br />
<br />
The graphics are by VR, the screenshots were done by TOCS. <br />
<br />
The main question is do you want to include this with the official release of AEI or an optional package that the user can download later. <br />
<br />
:I think the images will be just fine as "core upgrade", the changed main menu is also not optional... (But I wonder what happens when someone plays with too low resolution.) --[[User:Paradox-01|Paradox-01]] 17:59, 28 March 2010 (UTC)<br />
::At lower resolutions they would get cut off. Since this is not cool, EdT and VR were planning to make a set of scaled-down images for people playing below 1024x768, but this would suggest that, if we install the menus by default in the AE, we need to install the lower-res ones, and offer the 1024x768 package as an option. That's the only way to prevent cutoff in all cases.<br />
::Also, because we are talking about a new style of menus, I think the package should be optional. The general rule in the AE is "don't install anything by default unless it's something really basic and indisputable". Matters of taste should always be left up to the user. --[[User:Iritscen|Iritscen]] 19:30, 28 March 2010 (UTC)<br />
<br />
I will be getting soon VR's rendition of new menus for Oni. [[User:EdT|EdT]]<br />
<br />
:Okay, looking good. Just don't forget to fix that underscore, EdT. First three comments are for TOCS's work, the last two are for VR's:<br />
:* Ch. 6's image of TCTF HQ is taken from the opposite side of [[:Image:CHAPTER 06 . COUNTERATTACK.png|the original shot]]. Now there's that ugly wall in the back center of the shot as opposed to the glass one.<br />
:* In the first version of these new level screens, EdT found the spot [[:Image:CHAPTER 07 . A FRIEND IN NEED.png|the original]] Ch. 7 picture was taken from; can we go back there, please? It looked good.<br />
:* Ch. 14's image is okay, but look at the right pillar -- it's mostly off-screen now, and in [[:Image:CHAPTER 14 . DAWN OF THE CHRYSALIS.png|the original image]] it brightened the whole composition and gave it more color. If we pull the camera back that far, does the pillar still look that way in-game?<br />
:* Just repeating my previous comment about the arcs; it's okay if they fade in and out of the pictures, but popping in and out like in Ch. 4's and 10's screens looks funny. A change in blending mode is probably all that's needed. The brightness is also a problem in some. I tried opening one of the PsD files in Gimp and it's not carrying in the blending modes from the file, so I can't fix the images myself.<br />
:* The original screens each have a special color assigned to them. This color is used in three places: the text for the chapter name, the color of the design widget below the location name, and the color of the widget for the lower-right corner's chapter number. The new screens look a little barren without that color. Could VR consider adding two new widgets of his own design to the level screen template, for the upper-left title and lower-right number? I <u>don't</u> think any text should change color (some of the original titles are hard to read due to this), but I think we need those other color highlights back.<br />
:Overall, the change in each of these screens is greatly for the better. Some of Oni's original screens have strange jaggies (poly intersection jaggies, not just texture ones), and they tend to look flat, partly because of the lower bit depth and partly because Bungie improved some of the level lighting after taking their screenshots. I especially love the new Ch. 8 and 9 screens. Keep up the good work! --[[User:Iritscen|Iritscen]] 20:29, 27 March 2010 (UTC)<br />
::Yeah, using Additive blending should fix the issue with the arcs. But that's up to the master to decide. :p <br />
::Chapter 00 (training) has two different types of zeroes. :p<br />
:::So does chapter 10. :|<br />
::::Whoa, I didn't notice the two kinds of zeroes. Weird. Although Chapter 10 uses only the zero with a bar. --[[User:Iritscen|Iritscen]] 11:04, 28 March 2010 (UTC)<br />
:::::I second to change back the "mutated zeros". ^_^ --[[User:Paradox-01|Paradox-01]] 17:59, 28 March 2010 (UTC)<br />
::Suggestion: Change "Module 1-A" to "Module 1-A Beta 6" or something similar. --[[User:Gumby|Gumby]] 05:58, 28 March 2010 (UTC)<br />
:::Why? --[[User:Iritscen|Iritscen]] 19:30, 28 March 2010 (UTC)<br />
<br />
<br />
----<br />
===Old comments===<br />
:I see you made some improvements since I saw the first ones. Looks like you missed a couple levels and re-used the previous level's screenshot, but since TOCS is taking new screenshots, I guess we'll see what Ch.s 9 and 14 look like when he's done. A few thoughts:<br />
:* The arc are sometimes distracting in levels with alternating light and dark because they pop in and out, and in other screens the overall brightness of the image makes the arcs much brighter than in other screens. Maybe you can try changing the blending mode for these screens where it pops in and out: Ch. 4, Ch. 10, Ch. 13, and lowering the opacity of the arcs' layer for these screens where the arcs get too bright: Ch. 0, Ch. 5, Ch. 11, Ch. 12. If you want, I will fiddle with them myself if I can open them in Gimp (don't use Ps anymore).<br />
:* We should probably take additional screenshots for each level that has HD textures -- so, right now, just the Training level -- and make an identical screen using those HD textures and place it in the package with VR's HD textures for that level, and make sure it overrides the package we place these screens in. Not really relevant to this package, just thinking out loud.<br />
:* I think you meant the words "Bio_Research Lab" to have a hyphen, not an underscore.<br />
:Anyway, I would be in favor of including this in the AE. It'll still be an optional install, after all. --[[User:Iritscen|Iritscen]] 12:35, 27 March 2010 (UTC)<br />
<br />
:: lol, so much for multitasking... I was quickly going through the screens to get them done last night. I'll see what I can do today. [[User:EdT|EdT]]<br />
<br />
<br />
----<br />
'''WMDDdialog_setup_player'''<br />
<br />
How anyone ever come across this? [[User:EdT|EdT]]<br />
:SfeLi has. http://sfeli.oni2.net/img/2007-02-26_08-18-00.jpg<br />
:...I can get the menu to come up ingame by changing the ID, but the code that handles it has been removed, methinks. [[User:Gumby|Gumby]]<br />
<br />
<Instance id="0" type="WMDD"><br />
<Caption>Setup Player</Caption><br />
<Id>132</Id><br />
<State>Visible</State><br />
<Style>ThinBorder TitleBar Title CloseButton Center</Style><br />
<X>0</X><br />
<Y>0</Y><br />
<Width>240</Width><br />
<Height>75</Height><br />
<Controls><br />
<WMDDControl><br />
<Text>Player Name:</Text><br />
<Class>Label</Class><br />
<Id>0</Id><br />
<State>1</State><br />
<Style>1114112</Style><br />
<X>10</X><br />
<Y>10</Y><br />
<Width>75</Width><br />
<Height>20</Height><br />
<Font><br />
<Family>TSFFTahoma</Family><br />
<Style>Normal</Style><br />
<Color>0 0 0</Color><br />
<Size>7</Size><br />
</Font><br />
</WMDDControl><br />
<WMDDControl><br />
<Text>Character:</Text><br />
<Class>Label</Class><br />
<Id>0</Id><br />
<State>1</State><br />
<Style>1114112</Style><br />
<X>10</X><br />
<Y>35</Y><br />
<Width>75</Width><br />
<Height>20</Height><br />
<Font><br />
<Family>TSFFTahoma</Family><br />
<Style>Normal</Style><br />
<Color>0 0 0</Color><br />
<Size>7</Size><br />
</Font><br />
</WMDDControl><br />
<WMDDControl><br />
<Text>player_name</Text><br />
<Class>Textbox</Class><br />
<Id>100</Id><br />
<State>1</State><br />
<Style>0</Style><br />
<X>85</X><br />
<Y>10</Y><br />
<Width>145</Width><br />
<Height>20</Height><br />
<Font><br />
<Family>TSFFTahoma</Family><br />
<Style>Normal</Style><br />
<Color>0 0 0</Color><br />
<Size>7</Size><br />
</Font><br />
</WMDDControl><br />
<WMDDControl><br />
<Text>character</Text><br />
<Class>Dropdown</Class><br />
<Id>101</Id><br />
<State>1</State><br />
<Style>131072</Style><br />
<X>85</X><br />
<Y>35</Y><br />
<Width>145</Width><br />
<Height>20</Height><br />
<Font><br />
<Family>TSFFTahoma</Family><br />
<Style>Normal</Style><br />
<Color>0 0 0</Color><br />
<Size>7</Size><br />
</Font><br />
</WMDDControl><br />
</Controls><br />
</Instance></div>Gumbyhttps://wiki.oni2.net/w/index.php?title=User:EdT/temp&diff=16464User:EdT/temp2010-03-28T06:02:39Z<p>Gumby: </p>
<hr />
<div>'''Loading Screen Preview'''<br />
<br />
EDIT: Updated zip file with TOCS screenshots [[User:EdT|EdT]]<br />
<br />
Here is the link to jpgs of the loading screens: http://edt.oni2.net/AE/LoadingScreens.zip<br />
<br />
The graphics are by VR, the screenshots were done by TOCS. <br />
<br />
The main question is do you want to include this with the official release of AEI or an optional package that the user can download later. <br />
<br />
I will be getting soon VR's rendition of new menus for Oni. [[User:EdT|EdT]]<br />
<br />
:Okay, looking good. Just don't forget to fix that underscore, EdT. First three comments are for TOCS's work, the last two are for VR's:<br />
:* Ch. 6's image of TCTF HQ is taken from the opposite side of [[:Image:CHAPTER 06 . COUNTERATTACK.png|the original shot]]. Now there's that ugly wall in the back center of the shot as opposed to the glass one.<br />
:* In the first version of these new level screens, EdT found the spot [[:Image:CHAPTER 07 . A FRIEND IN NEED.png|the original]] Ch. 7 picture was taken from; can we go back there, please? It looked good.<br />
:* Ch. 14's image is okay, but look at the right pillar -- it's mostly off-screen now, and in [[:Image:CHAPTER 14 . DAWN OF THE CHRYSALIS.png|the original image]] it brightened the whole composition and gave it more color. If we pull the camera back that far, does the pillar still look that way in-game?<br />
:* Just repeating my previous comment about the arcs; it's okay if they fade in and out of the pictures, but popping in and out like in Ch. 4's and 10's screens looks funny. A change in blending mode is probably all that's needed. The brightness is also a problem in some. I tried opening one of the PsD files in Gimp and it's not carrying in the blending modes from the file, so I can't fix the images myself.<br />
:* The original screens each have a special color assigned to them. This color is used in three places: the text for the chapter name, the color of the design widget below the location name, and the color of the widget for the lower-right corner's chapter number. The new screens look a little barren without that color. Could VR consider adding two new widgets of his own design to the level screen template, for the upper-left title and lower-right number? I <u>don't</u> think any text should change color (some of the original titles are hard to read due to this), but I think we need those other color highlights back.<br />
:Overall, the change in each of these screens is greatly for the better. Some of Oni's original screens have strange jaggies (poly intersection jaggies, not just texture ones), and they tend to look flat, partly because of the lower bit depth and partly because Bungie improved some of the level lighting after taking their screenshots. I especially love the new Ch. 8 and 9 screens. Keep up the good work! --[[User:Iritscen|Iritscen]] 20:29, 27 March 2010 (UTC)<br />
::Yeah, using Additive blending should fix the issue with the arcs. But that's up to the master to decide. :p <br />
::Chapter 00 (training) has two different types of zeroes. :p<br />
:::So does chapter 10. :|<br />
::Suggestion: Change "Module 1-A" to "Module 1-A Beta 6" or something similar.<br />
::[[User:Gumby|Gumby]] 05:58, 28 March 2010 (UTC)<br />
<br />
<br />
----<br />
===Old comments===<br />
:I see you made some improvements since I saw the first ones. Looks like you missed a couple levels and re-used the previous level's screenshot, but since TOCS is taking new screenshots, I guess we'll see what Ch.s 9 and 14 look like when he's done. A few thoughts:<br />
:* The arc are sometimes distracting in levels with alternating light and dark because they pop in and out, and in other screens the overall brightness of the image makes the arcs much brighter than in other screens. Maybe you can try changing the blending mode for these screens where it pops in and out: Ch. 4, Ch. 10, Ch. 13, and lowering the opacity of the arcs' layer for these screens where the arcs get too bright: Ch. 0, Ch. 5, Ch. 11, Ch. 12. If you want, I will fiddle with them myself if I can open them in Gimp (don't use Ps anymore).<br />
:* We should probably take additional screenshots for each level that has HD textures -- so, right now, just the Training level -- and make an identical screen using those HD textures and place it in the package with VR's HD textures for that level, and make sure it overrides the package we place these screens in. Not really relevant to this package, just thinking out loud.<br />
:* I think you meant the words "Bio_Research Lab" to have a hyphen, not an underscore.<br />
:Anyway, I would be in favor of including this in the AE. It'll still be an optional install, after all. --[[User:Iritscen|Iritscen]] 12:35, 27 March 2010 (UTC)<br />
<br />
:: lol, so much for multitasking... I was quickly going through the screens to get them done last night. I'll see what I can do today. [[User:EdT|EdT]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=User:EdT/temp&diff=16463User:EdT/temp2010-03-28T06:00:39Z<p>Gumby: </p>
<hr />
<div>'''Loading Screen Preview'''<br />
<br />
EDIT: Updated zip file with TOCS screenshots [[User:EdT|EdT]]<br />
<br />
Here is the link to jpgs of the loading screens: http://edt.oni2.net/AE/LoadingScreens.zip<br />
<br />
The graphics are by VR, the screenshots were done by TOCS. <br />
<br />
The main question is do you want to include this with the official release of AEI or an optional package that the user can download later. <br />
<br />
I will be getting soon VR's rendition of new menus for Oni. [[User:EdT|EdT]]<br />
<br />
:Okay, looking good. Just don't forget to fix that underscore, EdT. First three comments are for TOCS's work, the last two are for VR's:<br />
:* Ch. 6's image of TCTF HQ is taken from the opposite side of [[:Image:CHAPTER 06 . COUNTERATTACK.png|the original shot]]. Now there's that ugly wall in the back center of the shot as opposed to the glass one.<br />
:* In the first version of these new level screens, EdT found the spot [[:Image:CHAPTER 07 . A FRIEND IN NEED.png|the original]] Ch. 7 picture was taken from; can we go back there, please? It looked good.<br />
:* Ch. 14's image is okay, but look at the right pillar -- it's mostly off-screen now, and in [[:Image:CHAPTER 14 . DAWN OF THE CHRYSALIS.png|the original image]] it brightened the whole composition and gave it more color. If we pull the camera back that far, does the pillar still look that way in-game?<br />
:* Just repeating my previous comment about the arcs; it's okay if they fade in and out of the pictures, but popping in and out like in Ch. 4's and 10's screens looks funny. A change in blending mode is probably all that's needed. The brightness is also a problem in some. I tried opening one of the PsD files in Gimp and it's not carrying in the blending modes from the file, so I can't fix the images myself.<br />
:* The original screens each have a special color assigned to them. This color is used in three places: the text for the chapter name, the color of the design widget below the location name, and the color of the widget for the lower-right corner's chapter number. The new screens look a little barren without that color. Could VR consider adding two new widgets of his own design to the level screen template, for the upper-left title and lower-right number? I <u>don't</u> think any text should change color (some of the original titles are hard to read due to this), but I think we need those other color highlights back.<br />
:Overall, the change in each of these screens is greatly for the better. Some of Oni's original screens have strange jaggies (poly intersection jaggies, not just texture ones), and they tend to look flat, partly because of the lower bit depth and partly because Bungie improved some of the level lighting after taking their screenshots. I especially love the new Ch. 8 and 9 screens. Keep up the good work! --[[User:Iritscen|Iritscen]] 20:29, 27 March 2010 (UTC)<br />
::Yeah, using Additive blending should fix the issue with the arcs. But that's up to the master to decide. :p <br />
::Chapter 00 (training) has two different types of zeroes. :p<br />
:::So does chapter 10. :|<br />
[[User:Gumby|Gumby]] 05:58, 28 March 2010 (UTC)<br />
<br />
<br />
----<br />
===Old comments===<br />
:I see you made some improvements since I saw the first ones. Looks like you missed a couple levels and re-used the previous level's screenshot, but since TOCS is taking new screenshots, I guess we'll see what Ch.s 9 and 14 look like when he's done. A few thoughts:<br />
:* The arc are sometimes distracting in levels with alternating light and dark because they pop in and out, and in other screens the overall brightness of the image makes the arcs much brighter than in other screens. Maybe you can try changing the blending mode for these screens where it pops in and out: Ch. 4, Ch. 10, Ch. 13, and lowering the opacity of the arcs' layer for these screens where the arcs get too bright: Ch. 0, Ch. 5, Ch. 11, Ch. 12. If you want, I will fiddle with them myself if I can open them in Gimp (don't use Ps anymore).<br />
:* We should probably take additional screenshots for each level that has HD textures -- so, right now, just the Training level -- and make an identical screen using those HD textures and place it in the package with VR's HD textures for that level, and make sure it overrides the package we place these screens in. Not really relevant to this package, just thinking out loud.<br />
:* I think you meant the words "Bio_Research Lab" to have a hyphen, not an underscore.<br />
:Anyway, I would be in favor of including this in the AE. It'll still be an optional install, after all. --[[User:Iritscen|Iritscen]] 12:35, 27 March 2010 (UTC)<br />
<br />
:: lol, so much for multitasking... I was quickly going through the screens to get them done last night. I'll see what I can do today. [[User:EdT|EdT]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=User:EdT/temp&diff=16462User:EdT/temp2010-03-28T06:00:10Z<p>Gumby: </p>
<hr />
<div>'''Loading Screen Preview'''<br />
<br />
EDIT: Updated zip file with TOCS screenshots [[User:EdT|EdT]]<br />
<br />
Here is the link to jpgs of the loading screens: http://edt.oni2.net/AE/LoadingScreens.zip<br />
<br />
The graphics are by VR, the screenshots were done by TOCS. <br />
<br />
The main question is do you want to include this with the official release of AEI or an optional package that the user can download later. <br />
<br />
I will be getting soon VR's rendition of new menus for Oni. [[User:EdT|EdT]]<br />
<br />
:Okay, looking good. Just don't forget to fix that underscore, EdT. First three comments are for TOCS's work, the last two are for VR's:<br />
:* Ch. 6's image of TCTF HQ is taken from the opposite side of [[:Image:CHAPTER 06 . COUNTERATTACK.png|the original shot]]. Now there's that ugly wall in the back center of the shot as opposed to the glass one.<br />
:* In the first version of these new level screens, EdT found the spot [[:Image:CHAPTER 07 . A FRIEND IN NEED.png|the original]] Ch. 7 picture was taken from; can we go back there, please? It looked good.<br />
:* Ch. 14's image is okay, but look at the right pillar -- it's mostly off-screen now, and in [[:Image:CHAPTER 14 . DAWN OF THE CHRYSALIS.png|the original image]] it brightened the whole composition and gave it more color. If we pull the camera back that far, does the pillar still look that way in-game?<br />
:* Just repeating my previous comment about the arcs; it's okay if they fade in and out of the pictures, but popping in and out like in Ch. 4's and 10's screens looks funny. A change in blending mode is probably all that's needed. The brightness is also a problem in some. I tried opening one of the PsD files in Gimp and it's not carrying in the blending modes from the file, so I can't fix the images myself.<br />
:* The original screens each have a special color assigned to them. This color is used in three places: the text for the chapter name, the color of the design widget below the location name, and the color of the widget for the lower-right corner's chapter number. The new screens look a little barren without that color. Could VR consider adding two new widgets of his own design to the level screen template, for the upper-left title and lower-right number? I <u>don't</u> think any text should change color (some of the original titles are hard to read due to this), but I think we need those other color highlights back.<br />
:Overall, the change in each of these screens is greatly for the better. Some of Oni's original screens have strange jaggies (poly intersection jaggies, not just texture ones), and they tend to look flat, partly because of the lower bit depth and partly because Bungie improved some of the level lighting after taking their screenshots. I especially love the new Ch. 8 and 9 screens. Keep up the good work! --[[User:Iritscen|Iritscen]] 20:29, 27 March 2010 (UTC)<br />
::Yeah, using Additive blending should fix the issue with the arcs. But that's up to the master to decide. :p <br />
::Chapter 00 (training) has two different types of zeroes. :p[[User:Gumby|Gumby]] 05:58, 28 March 2010 (UTC)<br />
<br />
<br />
----<br />
===Old comments===<br />
:I see you made some improvements since I saw the first ones. Looks like you missed a couple levels and re-used the previous level's screenshot, but since TOCS is taking new screenshots, I guess we'll see what Ch.s 9 and 14 look like when he's done. A few thoughts:<br />
:* The arc are sometimes distracting in levels with alternating light and dark because they pop in and out, and in other screens the overall brightness of the image makes the arcs much brighter than in other screens. Maybe you can try changing the blending mode for these screens where it pops in and out: Ch. 4, Ch. 10, Ch. 13, and lowering the opacity of the arcs' layer for these screens where the arcs get too bright: Ch. 0, Ch. 5, Ch. 11, Ch. 12. If you want, I will fiddle with them myself if I can open them in Gimp (don't use Ps anymore).<br />
:* We should probably take additional screenshots for each level that has HD textures -- so, right now, just the Training level -- and make an identical screen using those HD textures and place it in the package with VR's HD textures for that level, and make sure it overrides the package we place these screens in. Not really relevant to this package, just thinking out loud.<br />
:* I think you meant the words "Bio_Research Lab" to have a hyphen, not an underscore.<br />
:Anyway, I would be in favor of including this in the AE. It'll still be an optional install, after all. --[[User:Iritscen|Iritscen]] 12:35, 27 March 2010 (UTC)<br />
<br />
:: lol, so much for multitasking... I was quickly going through the screens to get them done last night. I'll see what I can do today. [[User:EdT|EdT]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=User:EdT/temp&diff=16461User:EdT/temp2010-03-28T05:58:45Z<p>Gumby: </p>
<hr />
<div>'''Loading Screen Preview'''<br />
<br />
EDIT: Updated zip file with TOCS screenshots [[User:EdT|EdT]]<br />
<br />
Here is the link to jpgs of the loading screens: http://edt.oni2.net/AE/LoadingScreens.zip<br />
<br />
The graphics are by VR, the screenshots were done by TOCS. <br />
<br />
The main question is do you want to include this with the official release of AEI or an optional package that the user can download later. <br />
<br />
I will be getting soon VR's rendition of new menus for Oni. [[User:EdT|EdT]]<br />
<br />
:Okay, looking good. Just don't forget to fix that underscore, EdT. First three comments are for TOCS's work, the last two are for VR's:<br />
:* Ch. 6's image of TCTF HQ is taken from the opposite side of [[:Image:CHAPTER 06 . COUNTERATTACK.png|the original shot]]. Now there's that ugly wall in the back center of the shot as opposed to the glass one.<br />
:* In the first version of these new level screens, EdT found the spot [[:Image:CHAPTER 07 . A FRIEND IN NEED.png|the original]] Ch. 7 picture was taken from; can we go back there, please? It looked good.<br />
:* Ch. 14's image is okay, but look at the right pillar -- it's mostly off-screen now, and in [[:Image:CHAPTER 14 . DAWN OF THE CHRYSALIS.png|the original image]] it brightened the whole composition and gave it more color. If we pull the camera back that far, does the pillar still look that way in-game?<br />
:* Just repeating my previous comment about the arcs; it's okay if they fade in and out of the pictures, but popping in and out like in Ch. 4's and 10's screens looks funny. A change in blending mode is probably all that's needed. The brightness is also a problem in some. I tried opening one of the PsD files in Gimp and it's not carrying in the blending modes from the file, so I can't fix the images myself.<br />
:* The original screens each have a special color assigned to them. This color is used in three places: the text for the chapter name, the color of the design widget below the location name, and the color of the widget for the lower-right corner's chapter number. The new screens look a little barren without that color. Could VR consider adding two new widgets of his own design to the level screen template, for the upper-left title and lower-right number? I <u>don't</u> think any text should change color (some of the original titles are hard to read due to this), but I think we need those other color highlights back.<br />
:Overall, the change in each of these screens is greatly for the better. Some of Oni's original screens have strange jaggies (poly intersection jaggies, not just texture ones), and they tend to look flat, partly because of the lower bit depth and partly because Bungie improved some of the level lighting after taking their screenshots. I especially love the new Ch. 8 and 9 screens. Keep up the good work! --[[User:Iritscen|Iritscen]] 20:29, 27 March 2010 (UTC)<br />
::Yeah, using Additive blending should fix the issue with the arcs. But that's up to the master to decide. :p [[User:Gumby|Gumby]] 05:58, 28 March 2010 (UTC)<br />
<br />
<br />
----<br />
===Old comments===<br />
:I see you made some improvements since I saw the first ones. Looks like you missed a couple levels and re-used the previous level's screenshot, but since TOCS is taking new screenshots, I guess we'll see what Ch.s 9 and 14 look like when he's done. A few thoughts:<br />
:* The arc are sometimes distracting in levels with alternating light and dark because they pop in and out, and in other screens the overall brightness of the image makes the arcs much brighter than in other screens. Maybe you can try changing the blending mode for these screens where it pops in and out: Ch. 4, Ch. 10, Ch. 13, and lowering the opacity of the arcs' layer for these screens where the arcs get too bright: Ch. 0, Ch. 5, Ch. 11, Ch. 12. If you want, I will fiddle with them myself if I can open them in Gimp (don't use Ps anymore).<br />
:* We should probably take additional screenshots for each level that has HD textures -- so, right now, just the Training level -- and make an identical screen using those HD textures and place it in the package with VR's HD textures for that level, and make sure it overrides the package we place these screens in. Not really relevant to this package, just thinking out loud.<br />
:* I think you meant the words "Bio_Research Lab" to have a hyphen, not an underscore.<br />
:Anyway, I would be in favor of including this in the AE. It'll still be an optional install, after all. --[[User:Iritscen|Iritscen]] 12:35, 27 March 2010 (UTC)<br />
<br />
:: lol, so much for multitasking... I was quickly going through the screens to get them done last night. I'll see what I can do today. [[User:EdT|EdT]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Making_a_mod_package&diff=16456Making a mod package2010-03-27T06:40:02Z<p>Gumby: </p>
<hr />
<div>The Anniversary Edition comes with a set of mods in the "package" format. This new [[Anniversary Edition/Framework|framework]] also allows modders to make third-party mods that will install easily into the Edition. You can start your package by copying an existing AE package and modifying it to save time, but in any case you'll need to learn how a package is made:<br />
<br />
<br />
1. Open up your Edition/install/packages folder.<br />
----<br />
2. Create a new folder with a name corresponding to your mod. No spaces, please. The five digit number in front corresponds to where in the load order you want your mod to be. Please, leave some space between your mod and other AE mods. See [[Anniversary Edition/Framework#Package numbering|HERE]] to know how to number your mod.<br />
----<br />
3. Create (or copy) a config file named "Mod_Info.cfg" inside your new folder.<br />
<br />
Sample:<br />
<br />
AEInstallVersion -> 1.0 <br />
NameOfMod -> Upgraded ONCCs<br />
ModString -> 21000UpgradedONCCs 1<br />
<!--ModVersion -> 1.1--><br />
Creator -> Loser<br />
HasOnis -> Yes<br />
Readme -> Gives enemies more health, better bullet dodging, and better blocking skills.<br />
<br />
;'''AEInstallVersion'''<br />
:What version of the Installer is needed to read this package. Right now there is only one significant release of the Installer, 1.0, so all packages should say 1.0. <!--There are two significant releases of the Installer, 1.0 and 1.1. If you make a new package at this point, you should just set its AEInstallVersion to 1.1 to be safe. Following, for the sake of thorough documentation, are the functional package-handling differences between the versions:<br />
::1.0 (Edition 2009-07): Initial release.<br />
::1.1 (Edition 2009-11): Now supports "HasBSL" values "Yes" and "Addon". Now expects .oni files to be in oni/levelX_Final/, rather than oni/levelX_Final/levelX_Final. 1.0 packages will still be compatible. --><br />
<br />
;'''NameOfMod'''<br />
:The "public" name of the mod. It can be anything you like, but should be written in an easily understandable manner, since it is displayed for the user in the Installer.<br />
<br />
;'''ModString'''<br />
<!--Depreciated. add strikethrough--><br />
:This line has two parts. The first is the name of the folder the mod is in. The second is the version of the mod.<!--are we changing the name in this field to be the persistent ID?--><br />
<br />
<!--<br />
;'''ModVersion'''<br />
:This is the version of the mod. Be sure to specify it if you want updating to work properly<br />
--><br />
;'''Creator'''<br />
:The name(s) that you want to get credit for the mod, displayed to the user in the Installer.<br />
<br />
;'''HasOnis'''<br />
:Set this to "Yes" to tell the installer that .oni files are present.<br />
<br />
;'''HasBSL'''<br />
:If set to "Yes", the Installer considers your mod a scenario and takes steps to exclude other BSL scenario mods from being installed for the same level. If set to "Addon", the Installer allows your mod to be installed to any level without restriction. Of course not all third-party BSL add-ons are guaranteed to be compatible with each other, but this is an inherent risk in third-party modding.<br />
<br />
;'''Platform'''<br />
:If set to "Windows", mod is ignored on Macs. If set to "Macintosh", mod is ignored on Windows.<br />
<br />
;'''Readme'''<br />
:The read-me text displayed for the user in the installer. You can make linebreaks by using " \n ".<br />
----<br />
4. If you have .oni files (the only type of files supported right now), make a folder named "oni" inside your package folder.<br />
<!--If you have .bsl files, make a folder named "bsl" inside the package folder.--><br />
----<br />
5. If your mod modifies level0_Final, make a "level0_Final" folder inside "oni".<br />
<br />
:If you have...<br />
<br />
TRAC, TRAM make a level0_Animations folder...<br />
ONSK, TXMP make a level0_Textures folder...<br />
ONCC, TRBS, ONCV, ONVL, TRMA, TRSC, TRAS make a level0_Characters folder...<br />
OSBD, SNDD make a level0_Sounds folder...<br />
BINA3RAP make a level0_Particles folder...<br />
Anything else, make a level0_Final folder...<br />
<br />
...inside level0_Final<br />
<!--^ no longer true, now everything goes in level0_Final/--><br />
6. For every level that your mod uses, make a "levelX_Final" folder inside "oni". (level1_Final, level2_Final, etc...) New levels are currently not detected.<br />
<br />
7. In each of the folders created in the previous step, make another "levelX_Final" folder inside the first one. <!--this step is now obsolete, but we can change this step to explain that every level that a BSL mod affects needs a folder inside bsl/ with the name of the IGMD subfolder the script(s) will go into, e.g. a script that is meant for Chapter 1 goes in bsl/EnvWarehouse/--><br />
<br />
8. Put level0 .oni files inside their respective folders as created in step 5.<!--woot, another obsolete step--><br />
<br />
9. Put levelX (anything but level0) .oni files inside their respective levelX_Final/levelX_Final directories.<!--only one level of directory, now, not two--><br />
<br />
You are done!<br />
----<br />
Be very careful when replacing (not adding) M3GM and TRAC, they can be a bit touchy. With TRAC, you must include all of the children of the TRAC you are adding. With M3GM, you must also include the file that references the M3GM.<br />
<br />
Whenever possible, copy the files from packages\Globalize instead of the default Oni files.<br />
<br />
New ONCCs should have this inside the ONCP:<br />
<br />
<ONCPParticle><br />
<Name>glass_break</Name><br />
<Type>glass_break</Type><br />
<BodyPart>-1</BodyPart><br />
</ONCPParticle><br />
<br />
If they do not, they will not be able to break glass when a user installs the glass-breaking AE mod.<br />
<br />
[[Category:Modding tutorials]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Making_a_mod_package&diff=16455Making a mod package2010-03-27T06:39:14Z<p>Gumby: </p>
<hr />
<div>The Anniversary Edition comes with a set of mods in the "package" format. This new [[Anniversary Edition/Framework|framework]] also allows modders to make third-party mods that will install easily into the Edition. You can start your package by copying an existing AE package and modifying it to save time, but in any case you'll need to learn how a package is made:<br />
<br />
<br />
1. Open up your Edition/install/packages folder.<br />
----<br />
2. Create a new folder with a name corresponding to your mod. No spaces, please. The five digit number in front corresponds to where in the load order you want your mod to be. Please, leave some space between your mod and other AE mods. See [[Anniversary Edition/Framework#Package numbering|HERE]] to know how to number your mod.<br />
----<br />
3. Create (or copy) a config file named "Mod_Info.cfg" inside your new folder.<br />
<br />
Sample:<br />
<br />
AEInstallVersion -> 1.0 <br />
NameOfMod -> Upgraded ONCCs<br />
ModString -> 21000UpgradedONCCs 1<br />
<--!ModVersion -> 1.1--><br />
Creator -> Loser<br />
HasOnis -> Yes<br />
Readme -> Gives enemies more health, better bullet dodging, and better blocking skills.<br />
<br />
;'''AEInstallVersion'''<br />
:What version of the Installer is needed to read this package. Right now there is only one significant release of the Installer, 1.0, so all packages should say 1.0. <!--There are two significant releases of the Installer, 1.0 and 1.1. If you make a new package at this point, you should just set its AEInstallVersion to 1.1 to be safe. Following, for the sake of thorough documentation, are the functional package-handling differences between the versions:<br />
::1.0 (Edition 2009-07): Initial release.<br />
::1.1 (Edition 2009-11): Now supports "HasBSL" values "Yes" and "Addon". Now expects .oni files to be in oni/levelX_Final/, rather than oni/levelX_Final/levelX_Final. 1.0 packages will still be compatible. --><br />
<br />
;'''NameOfMod'''<br />
:The "public" name of the mod. It can be anything you like, but should be written in an easily understandable manner, since it is displayed for the user in the Installer.<br />
<br />
;'''ModString'''<br />
<!--Depreciated. add strikethrough--><br />
:This line has two parts. The first is the name of the folder the mod is in. The second is the version of the mod.<!--are we changing the name in this field to be the persistent ID?--><br />
<br />
<--!<br />
;'''ModVersion'''<br />
:This is the version of the mod. Be sure to specify it if you want updating to work properly<br />
--><br />
;'''Creator'''<br />
:The name(s) that you want to get credit for the mod, displayed to the user in the Installer.<br />
<br />
;'''HasOnis'''<br />
:Set this to "Yes" to tell the installer that .oni files are present.<br />
<br />
;'''HasBSL'''<br />
:If set to "Yes", the Installer considers your mod a scenario and takes steps to exclude other BSL scenario mods from being installed for the same level. If set to "Addon", the Installer allows your mod to be installed to any level without restriction. Of course not all third-party BSL add-ons are guaranteed to be compatible with each other, but this is an inherent risk in third-party modding.<br />
<br />
;'''Platform'''<br />
:If set to "Windows", mod is ignored on Macs. If set to "Macintosh", mod is ignored on Windows.<br />
<br />
;'''Readme'''<br />
:The read-me text displayed for the user in the installer. You can make linebreaks by using " \n ".<br />
----<br />
4. If you have .oni files (the only type of files supported right now), make a folder named "oni" inside your package folder.<br />
<!--If you have .bsl files, make a folder named "bsl" inside the package folder.--><br />
----<br />
5. If your mod modifies level0_Final, make a "level0_Final" folder inside "oni".<br />
<br />
:If you have...<br />
<br />
TRAC, TRAM make a level0_Animations folder...<br />
ONSK, TXMP make a level0_Textures folder...<br />
ONCC, TRBS, ONCV, ONVL, TRMA, TRSC, TRAS make a level0_Characters folder...<br />
OSBD, SNDD make a level0_Sounds folder...<br />
BINA3RAP make a level0_Particles folder...<br />
Anything else, make a level0_Final folder...<br />
<br />
...inside level0_Final<br />
<!--^ no longer true, now everything goes in level0_Final/--><br />
6. For every level that your mod uses, make a "levelX_Final" folder inside "oni". (level1_Final, level2_Final, etc...) New levels are currently not detected.<br />
<br />
7. In each of the folders created in the previous step, make another "levelX_Final" folder inside the first one. <!--this step is now obsolete, but we can change this step to explain that every level that a BSL mod affects needs a folder inside bsl/ with the name of the IGMD subfolder the script(s) will go into, e.g. a script that is meant for Chapter 1 goes in bsl/EnvWarehouse/--><br />
<br />
8. Put level0 .oni files inside their respective folders as created in step 5.<!--woot, another obsolete step--><br />
<br />
9. Put levelX (anything but level0) .oni files inside their respective levelX_Final/levelX_Final directories.<!--only one level of directory, now, not two--><br />
<br />
You are done!<br />
----<br />
Be very careful when replacing (not adding) M3GM and TRAC, they can be a bit touchy. With TRAC, you must include all of the children of the TRAC you are adding. With M3GM, you must also include the file that references the M3GM.<br />
<br />
Whenever possible, copy the files from packages\Globalize instead of the default Oni files.<br />
<br />
New ONCCs should have this inside the ONCP:<br />
<br />
<ONCPParticle><br />
<Name>glass_break</Name><br />
<Type>glass_break</Type><br />
<BodyPart>-1</BodyPart><br />
</ONCPParticle><br />
<br />
If they do not, they will not be able to break glass when a user installs the glass-breaking AE mod.<br />
<br />
[[Category:Modding tutorials]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Making_a_mod_package&diff=16453Making a mod package2010-03-27T03:58:28Z<p>Gumby: </p>
<hr />
<div>The Anniversary Edition comes with a set of mods in the "package" format. This new [[Anniversary Edition/Framework|framework]] also allows modders to make third-party mods that will install easily into the Edition. You can start your package by copying an existing AE package and modifying it to save time, but in any case you'll need to learn how a package is made:<br />
<br />
<br />
1. Open up your Edition/install/packages folder.<br />
----<br />
2. Create a new folder with a name corresponding to your mod. No spaces, please. The five digit number in front corresponds to where in the load order you want your mod to be. Please, leave some space between your mod and other AE mods. See [[Anniversary Edition/Framework#Package numbering|HERE]] to know how to number your mod.<br />
----<br />
3. Create (or copy) a config file named "Mod_Info.cfg" inside your new folder.<br />
<br />
Sample:<br />
<br />
AEInstallVersion -> 1.0 <br />
NameOfMod -> Upgraded ONCCs<br />
ModString -> 21000UpgradedONCCs 1<br />
Creator -> Loser<br />
HasOnis -> Yes<br />
Readme -> Gives enemies more health, better bullet dodging, and better blocking skills.<br />
<br />
;'''AEInstallVersion'''<br />
:What version of the Installer is needed to read this package. Right now there is only one significant release of the Installer, 1.0, so all packages should say 1.0. <!--There are two significant releases of the Installer, 1.0 and 1.1. If you make a new package at this point, you should just set its AEInstallVersion to 1.1 to be safe. Following, for the sake of thorough documentation, are the functional package-handling differences between the versions:<br />
::1.0 (Edition 2009-07): Initial release.<br />
::1.1 (Edition 2009-11): Now supports "HasBSL" values "Yes" and "Addon". Now expects .oni files to be in oni/levelX_Final/, rather than oni/levelX_Final/levelX_Final. 1.0 packages will still be compatible. --><br />
<br />
;'''NameOfMod'''<br />
:The "public" name of the mod. It can be anything you like, but should be written in an easily understandable manner, since it is displayed for the user in the Installer.<br />
<br />
;'''ModString'''<br />
:This line has two parts. The first is the name of the folder the mod is in. The second is the version of the mod.<!--are we changing the name in this field to be the persistent ID?--><br />
<br />
;'''Creator'''<br />
:The name(s) that you want to get credit for the mod, displayed to the user in the Installer.<br />
<br />
;'''HasOnis'''<br />
:Set this to "Yes" to tell the installer that .oni files are present.<br />
<br />
;'''HasBSL'''<br />
:If set to "Yes", the Installer considers your mod a scenario and takes steps to exclude other BSL scenario mods from being installed for the same level. If set to "Addon", the Installer allows your mod to be installed to any level without restriction. Of course not all third-party BSL add-ons are guaranteed to be compatible with each other, but this is an inherent risk in third-party modding.<br />
<br />
;'''Platform'''<br />
:If set to "Windows", mod is ignored on Macs. If set to "Macintosh", mod is ignored on Windows.<br />
<br />
;'''Readme'''<br />
:The read-me text displayed for the user in the installer. You can make linebreaks by using " \n ".<br />
----<br />
4. If you have .oni files (the only type of files supported right now), make a folder named "oni" inside your package folder.<br />
<!--If you have .bsl files, make a folder named "bsl" inside the package folder.--><br />
----<br />
5. If your mod modifies level0_Final, make a "level0_Final" folder inside "oni".<br />
<br />
:If you have...<br />
<br />
TRAC, TRAM make a level0_Animations folder...<br />
ONSK, TXMP make a level0_Textures folder...<br />
ONCC, TRBS, ONCV, ONVL, TRMA, TRSC, TRAS make a level0_Characters folder...<br />
OSBD, SNDD make a level0_Sounds folder...<br />
BINA3RAP make a level0_Particles folder...<br />
Anything else, make a level0_Final folder...<br />
<br />
...inside level0_Final<br />
<!--^ no longer true, now everything goes in level0_Final/--><br />
6. For every level that your mod uses, make a "levelX_Final" folder inside "oni". (level1_Final, level2_Final, etc...) New levels are currently not detected.<br />
<br />
7. In each of the folders created in the previous step, make another "levelX_Final" folder inside the first one. <!--this step is now obsolete, but we can change this step to explain that every level that a BSL mod affects needs a folder inside bsl/ with the name of the IGMD subfolder the script(s) will go into, e.g. a script that is meant for Chapter 1 goes in bsl/EnvWarehouse/--><br />
<br />
8. Put level0 .oni files inside their respective folders as created in step 5.<!--woot, another obsolete step--><br />
<br />
9. Put levelX (anything but level0) .oni files inside their respective levelX_Final/levelX_Final directories.<!--only one level of directory, now, not two--><br />
<br />
You are done!<br />
----<br />
Be very careful when replacing (not adding) M3GM and TRAC, they can be a bit touchy. With TRAC, you must include all of the children of the TRAC you are adding. With M3GM, you must also include the file that references the M3GM.<br />
<br />
Whenever possible, copy the files from packages\Globalize instead of the default Oni files.<br />
<br />
New ONCCs should have this inside the ONCP:<br />
<br />
<ONCPParticle><br />
<Name>glass_break</Name><br />
<Type>glass_break</Type><br />
<BodyPart>-1</BodyPart><br />
</ONCPParticle><br />
<br />
If they do not, they will not be able to break glass when a user installs the glass-breaking AE mod.<br />
<br />
[[Category:Modding tutorials]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Making_a_mod_package&diff=16452Making a mod package2010-03-27T03:57:30Z<p>Gumby: </p>
<hr />
<div>The Anniversary Edition comes with a set of mods in the "package" format. This new [[Anniversary Edition/Framework|framework]] also allows modders to make third-party mods that will install easily into the Edition. You can start your package by copying an existing AE package and modifying it to save time, but in any case you'll need to learn how a package is made:<br />
<br />
<br />
1. Open up your Edition/install/packages folder.<br />
----<br />
2. Create a new folder with a name corresponding to your mod. No spaces, please. The five digit number in front corresponds to where in the load order you want your mod to be. Please, leave some space between your mod and other AE mods. See [[Anniversary Edition/Framework#Package numbering|HERE]] to know how to number your mod.<br />
----<br />
3. Create (or copy) a config file named "Mod_Info.cfg" inside your new folder.<br />
<br />
Sample:<br />
<br />
AEInstallVersion -> 1.0 <br />
NameOfMod -> Upgraded ONCCs<br />
ModString -> 21000UpgradedONCCs 1<br />
Creator -> Loser<br />
HasOnis -> Yes<br />
Readme -> Gives enemies more health, better bullet dodging, and better blocking skills.<br />
<br />
;'''AEInstallVersion'''<br />
:What version of the Installer is needed to read this package. Right now there is only one significant release of the Installer, 1.0, so all packages should say 1.0. <!--There are two significant releases of the Installer, 1.0 and 1.1. If you make a new package at this point, you should just set its AEInstallVersion to 1.1 to be safe. Following, for the sake of thorough documentation, are the functional package-handling differences between the versions:<br />
::1.0 (Edition 2009-07): Initial release.<br />
::1.1 (Edition 2009-11): Now supports "HasBSL" values "Yes" and "Addon". Now expects .oni files to be in oni/levelX_Final/, rather than oni/levelX_Final/levelX_Final. 1.0 packages will still be compatible. --><br />
<br />
;'''NameOfMod'''<br />
:The "public" name of the mod. It can be anything you like, but should be written in an easily understandable manner, since it is displayed for the user in the Installer.<br />
<br />
;'''ModString'''<br />
:This line has two parts. The first is the name of the folder the mod is in. The second is the version of the mod (integers only, please).<!--are we changing the name in this field to be the persistent ID?--><br />
<br />
;'''Creator'''<br />
:The name(s) that you want to get credit for the mod, displayed to the user in the Installer.<br />
<br />
;'''HasOnis'''<br />
:Set this to "Yes" to tell the installer that .oni files are present.<br />
<br />
;'''HasBSL'''<br />
:If set to "Yes", the Installer considers your mod a scenario and takes steps to exclude other BSL scenario mods from being installed for the same level. If set to "Addon", the Installer allows your mod to be installed to any level without restriction. Of course not all third-party BSL add-ons are guaranteed to be compatible with each other, but this is an inherent risk in third-party modding.<br />
<br />
;'''Platform'''<br />
:If set to "Windows", mod is ignored on Macs. If set to "Macintosh", mod is ignored on Windows.<br />
<br />
;'''Readme'''<br />
:The read-me text displayed for the user in the installer. You can make linebreaks by using " \n ".<br />
----<br />
4. If you have .oni files (the only type of files supported right now), make a folder named "oni" inside your package folder.<br />
<!--If you have .bsl files, make a folder named "bsl" inside the package folder.--><br />
----<br />
5. If your mod modifies level0_Final, make a "level0_Final" folder inside "oni".<br />
<br />
:If you have...<br />
<br />
TRAC, TRAM make a level0_Animations folder...<br />
ONSK, TXMP make a level0_Textures folder...<br />
ONCC, TRBS, ONCV, ONVL, TRMA, TRSC, TRAS make a level0_Characters folder...<br />
OSBD, SNDD make a level0_Sounds folder...<br />
BINA3RAP make a level0_Particles folder...<br />
Anything else, make a level0_Final folder...<br />
<br />
...inside level0_Final<br />
<!--^ no longer true, now everything goes in level0_Final/--><br />
6. For every level that your mod uses, make a "levelX_Final" folder inside "oni". (level1_Final, level2_Final, etc...) New levels are currently not detected.<br />
<br />
7. In each of the folders created in the previous step, make another "levelX_Final" folder inside the first one. <!--this step is now obsolete, but we can change this step to explain that every level that a BSL mod affects needs a folder inside bsl/ with the name of the IGMD subfolder the script(s) will go into, e.g. a script that is meant for Chapter 1 goes in bsl/EnvWarehouse/--><br />
<br />
8. Put level0 .oni files inside their respective folders as created in step 5.<!--woot, another obsolete step--><br />
<br />
9. Put levelX (anything but level0) .oni files inside their respective levelX_Final/levelX_Final directories.<!--only one level of directory, now, not two--><br />
<br />
You are done!<br />
----<br />
Be very careful when replacing (not adding) M3GM and TRAC, they can be a bit touchy. With TRAC, you must include all of the children of the TRAC you are adding. With M3GM, you must also include the file that references the M3GM.<br />
<br />
Whenever possible, copy the files from packages\Globalize instead of the default Oni files.<br />
<br />
New ONCCs should have this inside the ONCP:<br />
<br />
<ONCPParticle><br />
<Name>glass_break</Name><br />
<Type>glass_break</Type><br />
<BodyPart>-1</BodyPart><br />
</ONCPParticle><br />
<br />
If they do not, they will not be able to break glass when a user installs the glass-breaking AE mod.<br />
<br />
[[Category:Modding tutorials]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=AE_talk:New_weapons&diff=16448AE talk:New weapons2010-03-26T18:48:02Z<p>Gumby: /* w23_rla Rocket Launcher */</p>
<hr />
<div>=To-do on current AE weapons=<br />
A list of things for EdT to fix, since he asked for it ^_^. Some of this is already known, but at least this way it can be used as a checklist of sorts. Once addressed an issue can be struck through with <nowiki><s>strike-through tags</s></nowiki> if desired.<br />
*<s>WMC Grenade/SBG gun incorrectly called Superball Gun in announcement.</s><br />
*<s>We need to kill the little black recoilless pistol, it's not a finished weapon.</s> Added Recoil<br />
:That's not really a fix. :) [[User:Gumby|Gumby]] 04:23, 26 July 2009 (UTC)<br />
*<s>Folder names of weapons are not always consistent with in-game weapon names.</s><br />
*<s>RLA is in its own folder although described in-game as a BGI weapon (thus would go in BGI folder).</s><br />
*<s>Assorted spacing/alignment issues with weapon page text.</s><br />
*Question: Is there a limit to the number of Weapon pages? I can only see 15 pages and we have 19 weapons. [[User:EdT|EdT]]<br />
:As far as I know, no. You added weapon pages and unlocked all the weapons? [[User:Gumby|Gumby]] 04:23, 26 July 2009 (UTC)<br />
<br />
::Well the new weapon's pages appear, but some of the older ones don't. Why aren't the weapons pages progressive? From the basic to the advanced and then the new? [[User:EdT|EdT]]<br />
::Here is the updated new weapons package, please check. <br />
::http://edt.oni2.net/AE_Files/12000NewWeapons.zip<br />
:::Ha. The Weapons Pages are in a static sized array. It will be a bit of a mess to fix, even on PC...:/ I'd ask Neo about how best to go about it. :) [[User:Gumby|Gumby]] 08:26, 26 July 2009 (UTC)<br />
:::For PC, the weapons are added at 0x0502314 and displayed at 0x0502CE4. You also have to watch out for 0x502388. If you choose the change the pointers to the array on Mac, those should be the only three locations you have to worry about. Remember to also change the check to see if you are adding >15 weapon pages. [[User:Gumby|Gumby]] 08:32, 26 July 2009 (UTC)<br />
<br />
To reduce the number of weapons, why not upgrade WMC to WMC lite, SBG to SBG2 and Screaming cannon to Devil Star? [[User:EdT|EdT]]<br />
:Because choices are good. The new weapons shouldn't change the existing levels, except when we actually add them to the game. I thihnk its ok to just hold off on adding weapon pages, for now.<br />
::I agree with Gumby's first point. But actually I think we should still add all the weapon pages. At some point we can patch Oni to allow more than 15 pages. Once we do that, we won't have to worry about adding what pages we left out before; they will just show up immediately for the AE users with New Weapons installed. --[[User:Iritscen|Iritscen]] 12:47, 28 July 2009 (UTC)<br />
<br />
=Former content of AE:New weapons=<br />
''This was a good place to move this for now. But at some point we will have to sort through these and see which ones were made into weapons although not part of the AE, and which (if any) might still become weapons inside or outside of the AE, so we can file this information in a better place.'' --[[User:Iritscen|Iritscen]] 20:02, 21 July 2009 (UTC)<br />
<br />
[Moved from Main page Jul 18 09]<br />
<br />
Trying out some new weapons, which might make it into AE.<br />
<br />
==w15_smg Silenced Machine Gun==<br />
;Files<br />
:http://edt.oni2.net/AE_Files/w15_smg.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w15_smg.jpg<br />
<br />
;ToDo<br />
:DONE: Fix particles position<br />
:Silent particles?<br />
<br />
;Comments<br />
:ONWC based on Chaingun. Do we need shoulder support? With other characters, it goes inside their bodies. --[[User:EdT|EdT]] 18:02, 31 July 2008 (CEST)<br />
::The shoulder pad is OK; you just need to make the gun smaller: the pistol grip and trigger guard should be commensurate to the "handfist" --[[User:Geyser|geyser]] 01:36, 1 August 2008 (CEST)<br />
:::Updated: smaller gun --[[User:EdT|EdT]] 03:55, 1 August 2008 (CEST)<br />
::::Still too big. The pistol grip is supposed to fit within her fist (laterally, not vertically of course; the butt can and must stick a bit from the underside of the fist); the trigger guard, if possible, must span only the index finger (and some empty space above it). Also feel free to experiment with different color schemes and reflection maps... --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
:::::A bit smaller, adjusted particles position. --[[User:EdT|EdT]] 04:02, 2 August 2008 (CEST)<br />
::::::Hey, I gave this thing some nice new particles :D<br />
::::::http://gumby.oni2.net/Weapons/w15_smg_too/<br />
::::::*Changed to 1 bullet at a time :) (which also fixes the infinite ammo bug)<br />
::::::*Increased accuracy<br />
::::::*Increased damage<br />
::::::*Changed bullet color to a more reddish shade so you can tell when you are getting shot up with bigger bullets<br />
::::::*Wanted to use longer shells, but it needs an updated animated TXMP :( I suppose I could have increased the size a bit<br />
::::::It probably needs to be given a smaller clip.<br />
::::::I'd also like to go about finding a more appropriate firing sound <br />
::::::[[User:Gumby|Gumby]] 06:24, 22 November 2008 (CET)<br />
<br />
==w16_crb Carbine==<br />
Files<br />
:http://edt.oni2.net/AE_Files/w16_crb.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w16_crb.jpg<br />
;Status: Rejected<br />
;Comments<br />
:ONWC based on Chaingun. First attempt to create new weapon. Just added weapons info for reference. --[[User:EdT|EdT]] 22:00, 31 July 2008 (CEST)<br />
:I didn't really reject that one - it ''is'' a little "ordinary", but I suppose it could make make a fine shotgun (with a different texture/color); BTW, it's too big and the pistol grip is completely out of place. --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
<br />
==w17_sap Sub machine gun==<br />
Files<br />
:http://edt.oni2.net/AE_Files/w17_sap.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w17_sap.jpg<br />
;Status: Rejected - Oni is not Counterstrike<br />
<br />
;Comments<br />
:ONWC based on w2_sap, recoil reduced. Just added weapons info for reference. --[[User:EdT|EdT]] 22:00, 31 July 2008 (CEST)<br />
<br />
<br />
==w18_asr2 Assault Rifle==<br />
;Files<br />
:http://geyser.oni2.net/edition/weapons/w18_asr2.zip<br />
:File contains .oni files.<br />
<br />
http://wiki.oni2.net/w/images/6/68/Importing_weapons_RIGHT.png<br />
<br />
;Comments<br />
:geyser fixed the texture issue and 3D mesh. (He's much better at modeling than I will ever be) --[[User:EdT|EdT]] 22:47, 4 August 2008 (CEST)<br />
:Primary fire is Chaingun, secondary fire is grenades --Ed<br />
:One Halo rip too many? --[[User:Geyser|geyser]] 05:27, 31 July 2008 (CEST)<br />
::Doesn't the MC need his AR? :-) Actually, this weapon is too powerful. Perhaps a Boss weapon? [[User:EdT|EdT]] 06:57, 31 July 2008 (CEST)<br />
:::No, the MC needs to be de-Halo-ized in every possible aspecct, and the more original his weapons are, the better. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
:::As for the excessive deadliness, of course any enemy wielding this is a virtual subboss. No problem with that. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
:::It just needs to be balanced a bit in terms of ammunition and reloading time. I'd also scrap the grenades. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
:Ed, I have a question. Where did you get the mesh/texture, and what did you process the mesh with (triangulation? in what 3D tool?) --[[User:Geyser|geyser]] 00:07, 5 August 2008 (CEST)<br />
<br />
==w19_shg Shotgun==<br />
Files<br />
:http://edt.oni2.net/AE_Files/w19_shg.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w19_shg.jpg<br />
;Status: Rejected- Oni is not Counterstrike<br />
;Comments<br />
:ONWC based on chaingun, sustained fire disabled. Audio of weapon fire continues if mouse button held down. Just added weapons info for reference. --[[User:EdT|EdT]] 22:00, 31 July 2008 (CEST)<br />
::My idea of a "Demonslayer" shotgun was [http://www.turbosquid.com/3d-models/free-obj-mode-rifle/361993 THIS], but maybe it's more expedient to work with 17secs's AEG rifle a.k.a. "carbine" up there. --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
:::Or, if you really want it to look like a conventional shotgun, there's [http://www.turbosquid.com/FullPreview/Index.cfm/ID/308701 THIS] --[[User:Geyser|geyser]] 18:50, 1 August 2008 (CEST)<br />
::::I went to download the future shotgun, but the texture is missing, I filed a support ticket. --[[User:EdT|EdT]] 04:52, 2 August 2008 (CEST)<br />
:::::The texture is supposed to become available as a separate download, after you've downloaded the mesh. --[[User:Geyser|geyser]] 12:16, 2 August 2008 (CEST)<br />
::::::Its supposed to be available, but when I click on the link to download the texture after I downloaded the mesh, I get an error message saying the file is not available. Maybe its a Mac browser issue --[[User:EdT|EdT]] 13:23, 2 August 2008 (CEST)<br />
:::::::Sigh... looks like you're right, and there have been complaints about that before. Oh well, it sucked anyway - too real-worldish. Either get someone to invent a texture (what, no one? then we're screwed) or go back to painting the "carbine" ^_^ --[[User:Geyser|geyser]] 14:01, 2 August 2008 (CEST)<br />
<br />
==w20_lzr Disrupter Rifle==<br />
;Files<br />
:http://edt.oni2.net/AE_Files/w20_lzr.zip<br />
:File contains .oni, .obj, .mtl and .tiff files.<br />
<br />
http://edt.oni2.net/AE_Files/w20_lzr.jpg<br />
<br />
;ToDo<br />
:New particles<br />
::Could you elevate it a bit (rotate about the transverse axis) so that the barrel matches that of the plasma rifle? this will also help matching the position of the hands and handles more naturally (the pistol grip is rather off now, and the supporting hand is inside the mesh, partly because of the insufficient elevation). --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
:::Adjusted position of weapon. --[[User:EdT|EdT]] 04:45, 2 August 2008 (CEST)<br />
::::Now it aims a bit too high... or maybe it was just your first shot that wasn't steady? ^_^ --[[User:Geyser|geyser]] 14:03, 2 August 2008 (CEST)<br />
:::::OK, I split the difference in the angle and lowered the particles a bit --[[User:EdT|EdT]] 01:05, 3 August 2008 (CEST)<br />
<br />
;Comments<br />
:ONWC based on w3_phr. Rough UV map, I tried to separate the main parts of the weapon. --Ed<br />
:New particles for this weapon? --Ed<br />
::''I intended it as a flame thrower, originally... but if Gumby has cool-looking "disruptor particles", let's have a look --[[User:Geyser|geyser]] 05:27, 31 July 2008 (CEST)<br />
:::Was this based on the half assed weapon I never finished with? From the looks of the files inside this doesn't have what I had made. I do like the model you gave. The only particles I had were the red colored ones I sent you geyser...(should still be located on gumby.oni2.net). The other option is the "authentic" looking particles I made from the Mbow. You know, a long red line, like a "laser" should be :) I still need to add the burning in though, if you wanted me to do that, tell me, and I will add them to the weapon you sent me, and send it back to you :). [[User:Gumby|Gumby]] 06:18, 31 July 2008 (CEST)<br />
::::This is the 3D laser rifle geyser suggested we use on the Project Imago page. --[[User:EdT|EdT]] 06:57, 31 July 2008 (CEST)<br />
:::::Gumby: in the absence of a flame thrower, a "real laser" (long, red line) will be a nice placeholder indeed (with fire on impact, definitely). If you can, make the long red line uninterrupted in both space and time, with the trail constantly emitted at the weapon, and the collisions updated on the target end; somewhat closer to how w4_psp works. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
::::::Okay, well I have a nice red laser particle. [http://www.youtube.com/watch?v=NG7ym_nPjwo&feature=related THIS VIDEO] at 1:50, is what you want? [[User:Gumby|Gumby]] 20:01, 31 July 2008 (CEST)<br />
:::::::The red particle, if available, is great news for the trailer, along with the rocket. Even if we eventually make new weapons for them, for now they'll do fine as WMC Lite ^_^ --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
<br />
==w21_uzi Uzi==<br />
;Files<br />
:http://edt.oni2.net/AE_Files/w21_uzi.zip<br />
:File contains .oni files<br />
<br />
http://edt.oni2.net/AE_Files/w21_uzi.jpg<br />
<br />
;ToDo<br />
:Fix particles position<br />
<br />
;Comments<br />
:EDIT: renamed to w21_uzi <br />
:ONWC based on w2_sap. Particle height needs adjustment if we keep the w2_sap particles. --[[User:EdT|EdT]] 06:57, 31 July 2008 (CEST)<br />
:There's some confusion here. This is just a regular SubMachineGun (and a good-looking one at that). Could be a suitable sidearm for BGI executives. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
:Another suitable handgun is the autopistol from the same collection: these two are close enough to w1_tap and w2_sap, respectively --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
:The "silenced machine gun" is ''another'' weapon mesh from the same collection: it is larger and has a big nice silencer; you can't miss it. --[[User:Geyser|geyser]] 10:58, 31 July 2008 (CEST)<br />
<br />
<br />
==w22_pst Pistol==<br />
Files<br />
:http://edt.oni2.net/AE_Files/w22_pst.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w22_pst.jpg<br />
<br />
;ToDo<br />
:DONE: Reduce recoil? Konoko should be able to hold the gun steady :-) --Ed<br />
::Do you mean because she's superhuman? :-) --[[User:Geyser|geyser]] 01:40, 1 August 2008 (CEST)<br />
<br />
;Comments<br />
:ONWC based on w1_tap --[[User:EdT|EdT]] 22:00, 31 July 2008 (CEST)<br />
::It's a bit too big. --[[User:Geyser|geyser]] 01:40, 1 August 2008 (CEST)<br />
:::Updated. Better? --[[User:EdT|EdT]] 03:55, 1 August 2008 (CEST)<br />
::::Still a bit too large. Same criticism as w15_smg above --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
:::::A bit smaller, removed recoil and adjusted particles. --[[User:EdT|EdT]] 04:01, 2 August 2008 (CEST)<br />
<br />
==w23_rla Rocket Launcher==<br />
;Files<br />
:Here is my new model of bgi bazooka for AE:<br />
[[File:Baz2.jpg]]<br />
:It's a concept for previewing the future model. And it has no handle))<br />
[[File:2.jpg]]<br />
:And this the low-poly version;<br />
[[File:3.jpg]]<br />
:Another version with less polys.<br />
<br />
Waiting for your comments!!!<br />
<br />
::Squee! >_> Looks awesome. I see there is even a place for the guide laser. :D Keep going! [[User:Gumby|Gumby]] 18:48, 26 March 2010 (UTC)<br />
<br />
{{divhide|Old Rla talk|2=<br />;What has been done so far<br />
*Laser particle working<br />
**Blue laser (I think it would look better as orange)<br />
**Proper impacts (woot! they look awesome) - [http://gumby.oni2.net/Weapons/w23_rla/shots/lite%20up.PNG] (I got my arse kicked there)<br />
*Rocket particle working<br />
**Uses bomber explosion particle (for now)<br />
**Accelerates and leaves contrail<br />
;To do<br />
*Seperate weapon? (needs rocket launcher model!)<br />
*Rocket<br />
**Blast effect (wall decal)<br />
**Thin smoke, a la Scram Cannon<br />
**Better explosion sound<br />
*Laser<br />
**Appropriate sound<br />
Just reserving the name\number. If you already have a w23, tell me.[[User:Gumby|Gumby]] 07:29, 1 August 2008 (CEST)<br />
:I thought we agreed to combine the rocket launcher and the laser into WMC Lite (so, w12_ba2)? --[[User:Geyser|geyser]] 10:54, 1 August 2008 (CEST)<br />
:Unless you have figured out the hold-release thingie; then it deserves a [http://www.turbosquid.com/3d-models/3d-model-bazooka-rocket-launcher/361997 separate weapon mesh] --[[User:Geyser|geyser]] 10:54, 1 August 2008 (CEST)<br />
::The hold release thing is coming, eventually. I will figure it out, but right now my plan is: 1. Fix rocket particle 2. Finish the laser 3. Add in hold+release. And other things may bump it down on the list. Unless you want me to prioritize it? [[User:Gumby|Gumby]] 21:13, 1 August 2008 (CEST)<br />
:::Small update: Rocket particle close enough to done (not the best of projectiles, but good enough). Laser getting there. I just have to mess with the lifetime of the contrail. Right now I am getting a light show effect. Cool, but not what we want. :) More, when it isn't 1:42 AM. [[User:Gumby|Gumby]] 10:42, 2 August 2008 (CEST)<br />
::::Another update: Laser is working...sort of. I need to replace the sounds and hit actions, but those aren't a big deal. WWhat is annoying is the fact that the laser seems to tear at longer distances. This is solvable by making the particle move faster. Unfortunately, this makes short range firing disappear (if the particle hits a wall before the part of the engine that draws contrails catches it, there is no contrail...) So, I have to make it fire two particles. The first is the long range one that actually does damage. The second is a short range one that disappears before it can get the tearing effect, and does no damage. I don't have the time to do this tonight though, and tomorrow I am going to Seafair. So Monday I should have a testable version of this.[[User:Gumby|Gumby]] 04:09, 3 August 2008 (CEST)<br />
:::::Ahem, [http://geyser.oni2.net/edition/weapons/w12_ba2.zip HERE] is a version with possibly outdated laser particles, just to show my take on the rocket's mesh and UVs (the mesh probably needs to be translated a bit along Y so that it appears to exit from the barrel, but that's no big deal). Note that Oni's engine renders particles without a Z-buffer, so non-convex objects will look messy at some angles, and the more non-convex, the messier. There is no fix to that right now, but for fast-traveling projectiles this shouldn't pose a problem. --[[User:Geyser|geyser]] 20:00, 8 August 2008 (CEST)<br />
::::::I wasn't satisfied with my product, so I didn't realise it. Having to go back and add in acceleration again didn't help. [[User:Gumby|Gumby]] 21:52, 8 August 2008 (CEST)}}<br />
<br />
==w24_psr==<br />
;Files<br />
:http://drop.io/ONIrules<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/w24_psr.jpg<br />
<br />
;Comments<br />
: It actually shoots plasma. Replace the image EdT --[[User:ONIrules|ONIrules]] August 2008 (EST) -Done --[[User:EdT|EdT]] 05:45, 4 August 2008 (CEST)<br />
: Shoots rapid plasma now --[[User:ONIrules|ONIrules]] August 2008 (EST)<br />
: Yeah its small (I think),but this is my first try though. --[[User:ONIrules|ONIrules]] August 2008 (EST)<br />
: [http://halowiki.net/p/Plasma_Rifle BEWARE. OF. HALO. RIPS.] --[[User:Geyser|geyser]] 15:27, 3 August 2008 (CEST)<br />
: Huh?? --[[User:ONIrules|ONIrules]] August 2008 (EST)<br />
: Your new weapon is a [http://www.bungie.net/projects/halo3/content.aspx?link=h3plasmarifle Covenant Plasma Rifle] from Halo 1/2/3, and the mesh probably ripped. Not that you can't experiment with it, but keep in mind it's pretty much a stolen asset. --[[User:Geyser|geyser]] 16:26, 3 August 2008 (CEST)<br />
:Is this a bad thing? --[[User:ONIrules|ONIrules]] August 2008 (EST)<br />
: I don't know... I'm not Bungie's lawyer. But whereas the stolen Master Chief is arguably taken to a new level in Oni (able to fight awesome melee and all that), the Halo weapons you and Ed have injected into Oni so far have dull and possibly messed-up textures, which makes them look, well, shamelessly lame. If you want Covenant weapons to look "at home" in Oni's universe, you'll have to show a bit more tender loving care ^_^ --[[User:Geyser|geyser]] 16:51, 3 August 2008 (CEST)<br />
: I'm a little worry. --[[User:ONIrules|ONIrules]] August 2008 (EST)<br />
: Heh, don't worry, I'm just f##king with you. ^_^ as long as you keep experimenting, it's OK, but please don't think of Halo rips as more than ''placeholders''. --[[User:Geyser|geyser]] 17:25, 3 August 2008 (CEST)<br />
: OK, OK, ''don't'' frog blast the vent core!! ^_^ --[[User:ONIrules|ONIrules]]<br />
:No worries! It's not ripped. --[[User:ONIrules|ONIrules]]<br />
:Yes it is. Bungie's UVs were replaced with a lousy planar projection, but the mesh is still Bungie's. --[[User:Geyser|geyser]] 04:23, 8 November 2008 (CET)<br />
<br />
==Others==<br />
Here are the original files for:<br />
:[http://www.turbosquid.com/FullPreview/Index.cfm/ID/180387 Pallet rifle] http://edt.oni2.net/AE_Files/pallet.zip <br />
:[http://www.turbosquid.com/FullPreview/Index.cfm/ID/308701 Future Shotgun] http://edt.oni2.net/AE_Files/FShotgun.zip<br />
<br />
I hurt my shoulder this past weekend and can hardly raise my right arm up, its painful to work on the computer. So I'll have to take a break for awhile.<br />
Pierre was able to convert the pallet rifle to .obj and I got the texture for the Shotgun through tech support.<br />
If anyone wants to work on getting these weapons into Oni, go ahead.<br />
[[User:EdT|EdT]] 22:40, 4 August 2008 (CEST)<br />
<br />
Weapons completed and imported in Oni [[User:ONIrules|ONIrules]] August 2008 (EST)<br />
<br />
<br />
----<br />
==s1_swd Sword==<br />
;Files<br />
:http://edt.oni2.net/AE_Files/s1_swd.zip<br />
:File contains .oni files.<br />
<br />
http://edt.oni2.net/AE_Files/s1_swd.jpg<br />
;Status: REJECTED BIG TIME!<br />
<br />
;Comments<br />
:Just for fun... Maybe Loser will get some ideas... --[[User:EdT|EdT]] 04:19, 1 August 2008 (CEST)<br />
::We need a s2_lsb Lightsaber...Just for fun :D [[User:Gumby|Gumby]] 07:32, 1 August 2008 (CEST)<br />
:::It's not funny, and all the less so as Loser already ''had'' his major idea on that topic. --[[User:Geyser|geyser]] 10:51, 1 August 2008 (CEST)<br />
:::I'm talking about the animation-bound particles of the BGI Spartan (energy sword etc). --[[User:Geyser|geyser]] 10:51, 1 August 2008 (CEST)<br />
:::As compared to this one idea, all this talk of bats and knives is lame, lame, lame... --[[User:Geyser|geyser]] 10:51, 1 August 2008 (CEST)<br />
::::Gumby, looks like we can't have any fun... :-) --[[User:EdT|EdT]] 16:08, 1 August 2008 (CEST)<br />
:::::You can, but not at this time of year, dammit. There's a detailed roadmap for the trailer and only 3 weeks left, and what do ''you'' do? swords... ^_^ --[[User:Geyser|geyser]] 18:41, 1 August 2008 (CEST)<br />
::::::Although a katana in the hands of a ninja ''would'' be awesome. Not that we haven't already had the difficulties of getting that to work pointed out by Loser, but a guy can dream, right? --[[User:Iritscen|Iritscen]] 03:02, 23 August 2008 (CEST)<br />
<br />
<br />
<br />
So, in the interests of actually making this Weapons page move forward, can we get all these weapons to have Approved/Rejected statuses? You also need to tell us where the weapons will appear in-game. How does Konoko get her hands on one, by finding it somewhere or only by stealing it from an enemy? Which ones will be used by BGI? --[[User:Iritscen|iritscen]] 20:23, 16 November 2008 (CET)<br />
:Most weapons here are still in their crappy stage. I can't call any of them "done" except for [http://www.turbosquid.com/FullPreview/Index.cfm/ID/221645 THESE] so far, and even these still need particle and texture touch-ups. As for the rest, I'm still in awe at how bad we suck. --[[User:Geyser|geyser]] 21:27, 16 November 2008 (CET)<br />
:As for when and how the weapons will be encountered, these few "approved" things will typically be wielded by BGI executives, who won't be encountered in battle until Konoko goes rogue. Never found lying around. --[[User:Geyser|geyser]] 21:27, 16 November 2008 (CET)<br />
:I can't commit to more definite leadership, or rather it will only happen when I can concentrate on a specific element myself. Then I'll provide live examples, and until then you can go back to sleep, thank you. --[[User:Geyser|geyser]] 21:27, 16 November 2008 (CET)<br />
<br />
<br />
----<br />
OK, now, I'd like to have your attention for a few seconds. Consider this:<br />
<br />
[[Image:Importing weapons WRONG.png]]<br />
<br />
As you know, this was imported into Oni by EdT (online source unknown).<br />
:As you also know, this is supposed to be the assault rifle from Halo.<br />
::It is worth noting that it was shown and praised in this very state.<br />
:Now, if you're an Oni modder reading this, before you read further:<br />
::Please take a look at the above picture again, and tell me it's OK.<br />
:Thank you.<br />
::[[User:Geyser|geyser]] 19:00, 4 August 2008 (CEST)<br />
----<br />
:Now please take a look at these two pictures, side-by-side.<br />
<br />
[[Image:Importing weapons WRONG.png|320px]]<br />
[[Image:Importing weapons RIGHT.png|320px]]<br />
<br />
:Please leave a comment with an answer to this simple question:<br />
::CAN YOU SEE A DIFFERENCE?<br />
:Thank you.<br />
::[[User:Geyser|geyser]] 18:59, 4 August 2008 (CEST)<br />
----<br />
:And now the bottom line of this situation test: how bad can we suck?<br />
:How in the world is it possible that we:<br />
:#lay our hands on a ready-to-import, ripped mesh, complete with UVs and texture<br />
:#somehow import it as [[:Image:Importing weapons WRONG.png|THIS]] and don't go EWWWWWWW after checking ingame<br />
:#release it into the community without ANYONE SAYING ANYTHING BUT "WOW"<br />
:Tell me how that's possible and where we go from here. I'm confused.<br />
::[[User:Geyser|geyser]] 18:59, 4 August 2008 (CEST)</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Quotes/Speech&diff=16325Quotes/Speech2010-01-18T02:32:33Z<p>Gumby: /* Striker */</p>
<hr />
<div>=={{C|1}}==<br />
''Related : [[Quotes/Consoles#{{C1}}|Consoles]] [[Quotes/Objectives#{{C1}}|Objectives]] [[Quotes/Diary#{{C1}}|Diary]]''<br />
===Intro===<br />
*01_01_01 Griffin: Give me another reading.<br />
*01_01_02 Shinatama: All systems nominal. She's doing fine.<br />
*01_01_03 Kerr: This is a mistake.<br />
*01_01_04 Griffin: You aren't really in a position to criticize.<br />
*01_01_05 Griffin: The Syndicate is using the warehouse to shuttle contraband. Chung went underground to gather evidence. He failed to report in this morning. Find him and get me what I need to shut the place down or shut it down yourself.<br />
*01_01_06 Konoko: I'm on it.<br />
*01_01_07 Griffin: Update.<br />
*01_01_08 Shinatama: Daodan latency holding at twenty seven point one. Bioplasmic waveforms stable. A class three adrenal spike when you gave the order, but nothing out of the ordinary.<br />
*01_01_09 Kerr: What are you sending her into?<br />
*01_01_10 Griffin: It's a simple bust: in and out. She needs a trial run.<br />
*01_01_11 Kerr: Good luck Konoko.<br />
===Chung's body===<br />
*01_02_01 Konoko: Chung...<br />
*01_02_02 Konoko: It's Chung. I found him.<br />
*01_02_03 Griffin: Dead?<br />
*01_02_04 Konoko: Yes Sir.<br />
*01_02_05 Griffin: Keep moving.<br />
===Warehouse manager===<br />
*c07_02_06civ1 Civilian: Thank you! They're holding the warehouse manager upstairs.<br />
<br />
*c07_02_06civmale Civilian: They took over the whole place and they're loading some kind of armored truck. I think they're almost finished. You'd better hurry up. I'll open these doors for you.<br />
===Truck===<br />
*00_01_95 Shinatama: Konoko! Those Syndicate troops are trying to remove evidence from the warehouse. I've scanned the truck and they've almost finished securing their cargo. There's no way to get inside the truck. You've got to find some way to stop it from leaving the building!<br />
===Outro===<br />
*01_03_01 Konoko: I found a datapad...it's an encrypted shipping manifest that links the warehouse to Musashi Manufacturing. I want to go check it out. It's not far from here...<br />
*01_03_02 Griffin: Well done Konoko. Fall back, I'll have you picked up.<br />
*01_03_03 Konoko: Musashi is owned by BGI. According to your latest report BGI is a suspected Syndicate front. If we can prove the connection we can move against them. I can go in and...<br />
*01_03_04 Griffin: Negative. Fall back.<br />
*01_03_05 Konoko: We can't afford to wait for another team to arrive. We have to move quickly or they are going to get away.<br />
*01_03_06 Shinatama: She won't back down. Her adrenals have been rising steadily. Too much stress could destabilize her latency.<br />
*01_03_07 Griffin: All right Konoko. I'm giving you a shot at this.<br />
*01_03_08 Konoko: Thank you Sir. I won't let you down.<br />
<br />
<br />
----<br />
=={{C|2}}==<br />
''Related : [[Quotes/Consoles#{{C2}}|Consoles]] [[Quotes/Objectives#{{C2}}|Objectives]] [[Quotes/Diary#{{C2}}|Diary]]''<br />
===Intro===<br />
*01_04_01 Receptionist: Good afternoon and welcome to the Musashi Heavy Manufacturing Concern. How can I be of service?<br />
*01_04_02 TCTF Agent Thorson: Good afternoon ma'am. I'm Agent Thorson...<br />
*01_04_03 Konoko: We are with the TCTF and we hereby order you to cease and desist all operations. We have reason to suspect that this facility is involved in the manufacture of illegal technology!<br />
*01_04_04 Receptionist: Of course officer, I'm sure I can get someone to help you.<br />
----<br />
*02_05_01 Barabas: They're here! Finally!<br />
*02_05_02 Muro: Is everything ready?<br />
*02_05_03 Barabas: You know it. They aren't getting out of here alive.<br />
*02_05_04 Muro: Let me know when things start to get messy.<br />
*02_05_05 Barabas: Count on it. When I get through with them they're...<br />
*02_05_06 Muro: Just make sure I'm not interrupted.<br />
*02_05_07 Muro: There may be someone with them, an exceptional agent...<br />
*02_05_08 Barabas: I'm ready for anything. You made sure of that.<br />
*02_05_09 Muro: There is always someone stronger. Have you forgotten?<br />
*02_05_10 Barabas: No. I haven't. I'll be careful.<br />
*02_05_11 Muro: See that you are. You know the consequences of failure.<br />
----<br />
*02_05_12 Receptionist: Please have a seat, someone will be right with you.<br />
*02_05_13 TCTF Agent Thorson: What the?<br />
*02_05_14 Konoko: Heads up. We've got company.<br />
<br />
===Suspicions===<br />
*02_06_01 Konoko: This is a wild goose chase.<br />
*02_06_02 Griffin: Explain.<br />
*02_06_03 Konoko: This whole place - it's a trap. They planted that datapad.<br />
*02_06_04 Griffin: To what end?<br />
*02_06_05 Konoko: It's a diversion. It has to be. The Syndicate is going to try something big while my team and I are busy here.<br />
*02_06_06 Griffin: I'll try to confirm your suspicions. Until then your orders are unchanged. Find something we can use to shut them down.<br />
*02_06_07 Konoko: Yes Sir.<br />
----<br />
*02_07_01 Griffin: You were right. Syndicate forces are attacking a research facility ten minutes from your current position. Get out of there - fast. I sent another team but they're gonna need your help.<br />
*02_07_02 Konoko: I'm on it.<br />
<br />
===Deadly Brain detected===<br />
*02_08_01 Shinatama: Pardon me Konoko.<br />
*02_08_02 Konoko: What is it?<br />
*02_08_03 Shinatama: I used a wideband theta scan to locate the control mechanism that was used to activate the facility's defenses. I'm detecting a biomechanical expert system with a full suite of interface overrides and intrusion countermeasures.<br />
*02_08_04 Konoko: A deadly brain? I thought we tracked down the last of them.<br />
*02_08_05 Shinatama: Apparently Muro found one we missed or manufactured one of his own. If you disable the device we should be able to take control of the security system and clear a path to the nearest exit.<br />
*02_08_06 Konoko: Finally, some good news. Where is it?<br />
===Dr. Kafelnikov===<br />
*02_62_06 Dr. Kafelnikov: I warned them not to activate it! It will kill us all!<br />
*02_62_12 Dr. Kafelnikov: Run while you still can!<br />
*02_62_07 Konoko: Why did you build it in the first place?<br />
*02_62_08 Dr. Kafelnikov: Well...uh...you know...<br />
*02_62_09 Konoko: Forget it, just get out of here!<br />
*02_62_10 Dr. Kafelnikov: Here...<br />
*02_62_11 Dr. Kafelnikov: AIIIIIEEEEEEEE!<br />
===The Glorious Deadly Brain Fight (sic!)===<br />
*00_01_106 Shinatama: I've interfaced with the Deadly Brain.<br />
*00_01_107 Shinatama: It's broken out of the Musashi intranet, and is trying to gain access to the local TCTF Public Security Node.<br />
*00_01_108 Shinatama: Turn off those breakers...Fast!<br />
*brain07final Deadly Brain: Am I the Pacific Brain? The Doltish, Shallow-Pated or Hebetudinous Brain? Indeed not. I am the Deadly Brain! Deadly, I say! You haven't a chance.<br />
----<br />
*00_01_113 Shinatama: Unfortunately, the Brain's subconscious is attempting to crash the Public News Net. Something about "the glory of instant celebrity."<br />
*00_01_114 Shinatama: Ugh! It's unleasing a torrent of digital images of itself! Stop it!<br />
*brain03final Deadly Brain: Who can resist my subtle charm, my rakish lobes? No one! The world is my oyster, and I...I am the public's pearl.<br />
----<br />
*00_01_115 Shinatama: You must have decoupled its core logic on that final pass. The Brain tells me it will irradiate everything within a 50 block radius unless we meet the following demands: it wants feet.<br />
*00_01_117 Shinatama: Clearly it's gone rampant, but it's Xiox destruct mechanism is extremely powerful. Complete the final sequence, and shut that Brain off for good!<br />
*brain08final Deadly Brain: I am a Brain. Hath not a Brain feet? Hath not a Brain hands, organs, dimensions, senses, affections, passions? Daisy, Daisy, give me your answer do...<br />
<br />
===Outro===<br />
*02_09_01 Griffin: How is she holding up?<br />
*02_09_02 Kerr: According to Shinatama her Daodan latency has crept up to twenty nine but her bioplasmic waveforms are holding.<br />
*02_09_03 Griffin: So she's still stable?<br />
*02_09_04 Kerr: So far as we can tell - yes, but prolonged stress could be dangerous.<br />
*02_09_05 Griffin: She insisted.<br />
*02_09_06 Kerr: This is why I was against moving to Phase Three. We have no right to...<br />
*02_09_07 Griffin: I'm getting tired of listening to your self righteous tirades. Konoko is as much your creature as she is mine.<br />
<br />
<br />
----<br />
=={{C|3}}==<br />
''Related : [[Quotes/Consoles#{{C3}}|Consoles]] [[Quotes/Objectives#{{C3}}|Objectives]] [[Quotes/Diary#{{C3}}|Diary]]''<br />
===Barabas===<br />
*00_01_99 Shinatama: The main gates and lobby security doors have been locked through the security controls and something is keeping our agents at bay.<br />
----<br />
*03_10_01 Barabas: Let's get it on!<br />
----<br />
*03_10_02 Barabas: You're strong, but this isn't over. Not by a long shot!<br />
----<br />
*03_11_01 Barabas: She's with them.<br />
*03_11_02 Muro: Who is with them?<br />
*03_11_03 Barabas: The Agent you warned me about. I couldn't take her.<br />
*03_11_04 Muro: Where is she?<br />
*03_11_05 Barabas: She's on her way.<br />
----<br />
*00_01_98 Shinatama: Konoko, I'm experiencing a lot of scanner interference. But reports from inside the Research Lab indicate that Syndicate troops are all over the building. I think they're searching for research data, but it's hard to tell.<br />
===Tower===<br />
*03_12_01 Konoko: All clear. Come on in. '''(UNUSED)'''<br />
----<br />
*03_12_02 TCTF AGENT: We are under fire out here. They have us pinned down!<br />
*03_12_12 TCTF AGENT: I think the shooters are in the mezzanine level of the foyer! Can you free us up? We're taking casualties down here!<br />
*03_12_03 Konoko: I'll see what I can do.<br />
*03_12_04 Bomb Trooper: Too late. I just triggered my detonation harness. In five seconds you I and will both be dead. The entire tower will be vaporized! Hahahahaha!!<br />
*03_12_05 TCTF AGENT: Uhhh, roger that... Foyer secured.<br />
===Foyer===<br />
*03_12_08 TCTF AGENT: Good work Konoko. You might need this.<br />
*03_12_09 TCTF AGENT: Keep your head down. There are still some Strikers on the upper floors.<br />
===Outro===<br />
*03_13_01 Konoko: Oh no you don't. You aren't getting away that easily.<br />
*03_13_02 Syndicate Henchman: She's right behind us. Should I take her out?<br />
*03_13_03 Muro: No. Have the rest of the men meet us at the airport.<br />
===Misc===<br />
*03_12_06 Civilian: Those maniacs locked us in!<br />
*03_12_07 Civilian: They're moving floor to floor...there's no where to hide!<br />
<br />
<br />
----<br />
=={{C|4}}==<br />
''Related : [[Quotes/Consoles#{{C4}}|Consoles]] [[Quotes/Objectives#{{C4}}|Objectives]] [[Quotes/Diary#{{C4}}|Diary]]''<br />
===Intro===<br />
*c00_01_104shinatama Shinatama: This is horrible! Syndicate troops are attacking the airport. I don't know if these numbers are correct, but there might be dozens of casualties! I still can't get a solid fix on Muro's position...he must be using the chaos to cover his escape.<br />
----<br />
*04_14_02 Konoko: Muro! Stop!<br />
*04_14_01 Muro: Kill her. I have a plane to catch.<br />
==="Booth" talk===<br />
*04_17_01 Muro: I'm impressed. Your potential is almost as great as mine.<br />
*04_17_02 Muro: Unfortunately that means you could pose a threat to me.<br />
*04_17_03 Muro: I can't allow that.<br />
===Misc===<br />
*04_17_04 Civilian: You are with the TCTF, right? I wish there was something I could do to help.<br />
*04_17_05 Security Guard: Thanks for the assist. It was only a matter of time before they came back to finish me off. Take this VanDeGraf Pistol. You might need it.<br />
*04_17_06 Civilian: Here take this ______ <br />
*04_17_07 Security Guard: You might need this ______ <br />
*04_17_08 Civilian: I'm glad to see you. I hid back here as soon as the shooting started. Maybe these will help you.<br />
<br />
<br />
----<br />
=={{C|5}}==<br />
''Related : [[Quotes/Consoles#{{C5}}|Consoles]] [[Quotes/Objectives#{{C5}}|Objectives]] [[Quotes/Diary#{{C5}}|Diary]]''<br />
===Tips===<br />
*06_20_01 Civilian: Thank god you showed up when you did.<br />
*06_20_02 Konoko: I need your help.<br />
*06_20_03 Civilian: Name it.<br />
*06_20_04 Konoko: The man who did this is on his way out. I need a way to track him.<br />
*06_20_05 Civilian: There is an LSI Tracker and harness in the next hangar over.<br />
*06_20_06 Konoko: Perfect...<br />
*06_20_07 Civilian: Be careful, those maniacs are all over the place, and the security systems are all haywire.<br />
===Outro===<br />
*06_21_01 Syndicate Henchman: I've been monitoring the woman tracking us as you instructed. Scanners indicate a standard comlink as well as a second set of sub dermal transmissions. Analysis suggests that she is neurolinked to an SLD.<br />
*06_21_02 Muro: An android? Interesting. They must be using it to monitor her progress. I want it. Tell Barabas to retrieve it for me.<br />
<br />
<br />
----<br />
=={{C|6}}==<br />
''Related : [[Quotes/Consoles#{{C6}}|Consoles]] [[Quotes/Objectives#{{C6}}|Objectives]] [[Quotes/Diary#{{C6}}|Diary]]''<br />
===Level start===<br />
*07_22_01 Konoko: Showtime...<br />
===Syndicate's progress===<br />
*07_23_01 Syndicate Henchman: We've disabled the power substations. Static defenses are down. All units converge.<br />
----<br />
*c00_01_105shinatama Shinatama: Konoko hurry! They've landed on the roof, and they're breaking into the Command Chambers. We can't hold them off for long!<br />
===Welder===<br />
*07_26_19 Civilian: We're trapped! They've blown the access ramps and even tried to blow out the elevator!<br />
*07_26_20 Konoko: Elevator?...<br />
*07_26_21 Civilian: Yes, they stopped access to the high security chambers above and below, but the cables held and so the car didn't fall, thank goodness.<br />
*07_26_22 Konoko: Couldn't blow it free, huh?...<br />
*07_26_02 Konoko: Get me a LASER TORCH, quick!<br />
*07_26_03 Civilian: What for?<br />
*07_26_04 Konoko: You wouldn't believe me if I told you!<br />
*07_26_25 Civilian: Here.<br />
===Barabas grabbing Shinatama===<br />
*07_24_02 Shinatama: No! Stay away! Konoko, help! No!<br />
*07_24_01 Barabas: Got ya!<br />
<br />
*07_26_06 Scientist: They tore through this place like we weren't even here! You should have seen that monster that grabbed Shinatama!<br />
<br />
*07_26_07 Particularly suave scientist: I think they were headed for the roof!<br />
===Barabas===<br />
*07_25_01 Konoko: Shinatama...<br />
*07_25_02 Konoko: You again...<br />
*07_25_03 Barabas: You can't escape me.<br />
*07_25_04 Konoko: Who says I want to escape?<br />
===Outro===<br />
*07_26_01 Konoko: Don't worry Shinatama. I'm on my way.<br />
<br />
===Misc===<br />
*07_26_05 Scientist: Konoko! Its good to see you again but I wish you had shown up just a few minutes sooner.<br />
<br />
*07_26_08 Civilian: Thank god you're here! Take this ______ <br />
<br />
*07_26_09 Civilian: Here take this ______ <br />
<br />
*07_26_10 Scientist: They're maniacs! You got here just in time!<br />
<br />
*07_26_11 Civilian: You may need this.<br />
<br />
*07_26_12 Cop: Thanks for the help. But I think the real fight is on the floors above us.<br />
*07_26_13 Konoko: I'm going after them, can you stay here with these civilians?<br />
*07_26_14 Cop: Yes, but here take this.<br />
*07_26_15 Konoko: Thanks.<br />
<br />
*07_26_16 Konoko: Things aren't looking good.<br />
*07_26_17 Cop: No, we haven't secured a single area -- not even our armory.<br />
<br />
*07_26_18 Civilian: I told them we'd just make things worse if we tried to use these guns. You should be the one using this!<br />
<br />
*07_26_23 TCTF Agent: Thanks for the assist.<br />
*07_26_24 TCTF TROOPER: Hey, good to see you.<br />
<br />
<br />
----<br />
=={{C|7}}==<br />
''Related : [[Quotes/Consoles#{{C7}}|Consoles]] [[Quotes/Objectives#{{C7}}|Objectives]] [[Quotes/Diary#{{C7}}|Diary]]''<br />
===Insubordination===<br />
*08_27_01 Konoko: I'm going after her.<br />
*08_27_02 Griffin: I have dispatched a Strike Team to recover the SLD.<br />
*08_27_03 Konoko: This is personal.<br />
*08_27_04 Griffin: Which is precisely why you should have nothing to do with it.<br />
*08_27_05 Konoko: My mind is made up.<br />
*08_27_06 Griffin: I am your Commanding Officer...<br />
*08_27_07 Konoko: I don't care who you are. My friend is in trouble and I'm going to help her if I can. Stay out of my way.<br />
===Torture===<br />
*08_28_01 Muro: I'm impressed. You're almost human.<br />
*08_28_02 Muro: Curious. Why bother programming you to feel pain so intensely?<br />
*08_28_03 Muro: Of course pain is a necessary response to certain stimuli, but they could have dulled the sensation or given you a threshold that would limit the extent and depth of your agony.<br />
*08_28_04 Muro: I'm glad they didn't.<br />
*08_28_05 Shinatama: Aaaahh!<br />
*08_28_06 Shinatama: Aaaaaahhhh!<br />
===Out of control===<br />
*08_29_01 TCTF Agent: Sir, I'm picking up a power surge from Processor 31-B. It's consistent with the waveforms of a Daodan spike, but far more powerful.<br />
*08_29_02 Griffin: This is getting out of control..<br />
===Misc===<br />
====Power grid====<br />
*08_29_05 Civilian: Who are you?<br />
*08_29_06 Konoko: The person that just saved your life.<br />
*08_29_07 Civilian: Right, yeah. I'm sorry. It's been kind of a rough day.<br />
*08_29_08 Konoko: Tell me about it. I need to get across that power grid out there, any ideas?<br />
*08_29_09 Civilian: Yeah...if I recalibrate these capacitors the power flow will lag for a few cycles until central control reroutes it.<br />
*08_29_10 Konoko: How long is 'a few cycles'?<br />
*08_29_11 Civilian: Not long.<br />
*08_29_12 Konoko: It figures.<br />
====Repurposing====<br />
*08_29_13 Civilian: I noticed those maniacs were making a lot of modifications to the facility before they locked me up. Do you have any idea what the Syndicate wants with an Atmosphere Processor?<br />
*08_29_14 Konoko: Modifications? What kind of modifications?<br />
*08_29_15 Civilian: Hard to tell without getting a look at everything but it looked like they were repurposing it.<br />
*08_29_16 Konoko: Why?<br />
*08_29_17 Civilian: Beats me. All a facility like this can do is suck in air, treat it and then belch it back out.<br />
*08_29_18 Konoko: I don't like the sound of that.<br />
*08_29_19 Civilian: You may need this. '''(UNUSED)'''<br />
====Lost my crew====<br />
*08_29_20 Konoko: Are you alright?<br />
*08_29_21 Civilian: I'm ok, but I lost my crew when these terrorists showed up. Take this, it isn't much but it'll help you find them.<br />
====Cop girl====<br />
*08_29_22 Cop: It's about time! I've been able to keep them from the elevator platform here, but we still have some personnel trapped below.<br />
*08_29_23 Konoko: I'll take care of that.<br />
*08_29_24 Cop: Then take this...<br />
====Good thinking====<br />
*08_29_25 Construction Worker: Yeah. The last thing my foreman told me was to stay out of trouble. And so I am.<br />
*08_29_26 Konoko: Good thinking.<br />
*08_29_27 Construction Worker: Yeah, and in case you're not going to do the same, here...<br />
====Hostage====<br />
*08_29_28 Security Guard: Hey, I saw those killers take a hostage with them into the building -- a little girl, I think.<br />
*08_29_29 Konoko: Shinatama...<br />
*08_29_30 Security Guard: Wait, take this...<br />
====Really really misc====<br />
*08_29_31 Striker: Huh?<br />
<br />
*08_29_03 Scientist: Thank god you're here!<br />
<br />
*08_29_04 Civilian: Here take these ______ <br />
<br />
<br />
----<br />
=={{C|8}}==<br />
''Related : [[Quotes/Consoles#{{C8}}|Consoles]] [[Quotes/Objectives#{{C8}}|Objectives]] [[Quotes/Diary#{{C8}}|Diary]]''<br />
===Shinatama's death===<br />
*09_31_01 Konoko: What did they do to you?<br />
*09_31_02 Shinatama: You are not who you think you are.<br />
*09_31_03 Konoko: What?<br />
*09_31_04 Shinatama: You are Mai Hasegawa. Your father...<br />
*09_31_05 Konoko: You're malfunctioning. Let me get you out of this chair.<br />
*09_31_06 Shinatama: Don't! He...hurt me Konoko. Badly. If you try to move me I will probably die.<br />
*09_31_07 Konoko: But why? Why did they do this to you?<br />
*09_31_08 Shinatama: I am an SLD, an android programmed with your brain engrams. I have seen everything you have seen, felt everything you have felt. They used me to monitor the growth of the Chrysalis inside you...<br />
*09_31_09 Konoko: I don't understand.<br />
----<br />
*09_31_10 Scientist: Sir...bio-readings indicate that the host is in close proximity to the SLD. The Xiox destruct mechanism is charged...<br />
*09_31_11 Griffin: Did you get a waveform reading?<br />
*09_31_12 Scientist: She's all over the charts, and the change rate is unstable. It is safe to assume that her latency will rise steadily from here on out.<br />
*09_31_13 Kerr: You don't know that for sure.<br />
*09_31_14 Griffin: What is the yield of the device?<br />
*09_31_15 Scientist: 1.21 Gigawatts sir. We're confident it will be enough to destroy her at this proximity. Sir...?<br />
*09_31_16 Kerr: Give her a chance...<br />
*09_31_17 Griffin: You heard the readings, Doctor. I can't afford to let her transformation continue uncontrolled. Proceed.<br />
----<br />
*09_31_18 Konoko: Shinatama, what's wrong?<br />
*09_31_19 Shinatama: I have just received a coded self-destruct transmission from TCTF command. I can't stop the sequence, but I can slow it down.<br />
*09_31_20 Konoko: Why! Why are you doing this! Stop it! Stop! '''(UNUSED)'''<br />
*09_31_21 Shinatama: Konoko, I can't delay the self destruct command for long. Get out of here while you can. Doctor Kerr was your father's partner. He has been helping Griffin. He knows everything. Find him. Ask him. '''(UNUSED)'''<br />
*09_31_22 Konoko: I'm not going to abandon you. There has to be something I can do...<br />
*09_31_23 Shinatama: Goodbye Konoko.<br />
*09_31_24 Konoko: No!<br />
*09_31_25 Shinatama: Detonation in twenty, nineteen, eighteen... '''(UNUSED)'''<br />
*09_31_26 Konoko: Goodbye Shinatama.<br />
*09_31_27 Shinatama: Detonation in 30 seconds<br />
*09_31_28 Shinatama: Detonation in 20 seconds<br />
*09_31_29 Shinatama: Detonation in 10,9,8,7,6,5,4,3,2,1....<br />
----<br />
*09_32_01 Konoko: That was close but I'm clear. That access hatch leads to the surface. '''(UNUSED)'''<br />
*09_32_02 Security Guard: No you fool! We're not secured for atmosphere... '''(UNUSED)'''<br />
*09_32_03 TCTF AGENT: If she reaches the access hatch, she'll get away! I know how to stop her!<br />
===Konoko has gone rogue===<br />
*09_33_01 Griffin: Any luck?<br />
*09_33_02 Scientist: Checking broadband...<br />
*09_33_03 Griffin: And?<br />
*09_33_04 Scientist: Registering high frequency waveforms... I have her. The Host survived.<br />
*09_33_05 Griffin: That's it then.<br />
*09_33_06 Kerr: You could have given her a chance.<br />
*09_33_07 Griffin: I gave you both a chance, Doctor. That was my mistake.<br />
*09_33_08 Griffin: I knew it was only a matter of time. It's over. '''(UNUSED)'''<br />
----<br />
*c09_33_09griffin Griffin: All units: Konoko has gone rogue. She is a Class B threat and this is a Code Red situation.<br />
*c09_33_09agriffin Griffin: Take her in or take her down. Use any means necessary.<br />
===Misc===<br />
====Just do it====<br />
*09_34_01 Scientist: He was going to KILL me!<br />
*09_34_02 Konoko: Not any more. Now listen, I have to get across -- shut down the power.<br />
*09_34_03 Scientist: The best I can do is recalibrate---<br />
*09_34_04 Konoko: I know, just do it!<br />
*09_34_05 Scientist: Alright.<br />
*09_34_06 Scientist: Better go now. '''(UNUSED)'''<br />
====Quickest way out====<br />
*09_34_07 Scientist: Is it safe now?<br />
*09_34_08 Konoko: Not yet -- what's the quickest way out of here?<br />
*09_34_09 Scientist: Probably the maintenance route for the main line above. But it isn't easy...<br />
<br />
<br />
----<br />
=={{C|9}}==<br />
''Related : [[Quotes/Consoles#{{C9}}|Consoles]] [[Quotes/Objectives#{{C9}}|Objectives]] [[Quotes/Diary#{{C9}}|Diary]]''<br />
===We'll be ready for her===<br />
*10_34_01 Griffin: Konoko can't hide from us. She is a rogue and she knows it. She can't come in and no one will help her.<br />
*10_34_02 Kerr: She will want to know the truth.<br />
*10_34_03 Griffin: If she's looking for answers she'll try for the secure files in the State Building. And we'll be ready for her.<br />
===I don't have time for this===<br />
*10_34_04 Security Guard: Stop! Don't move a muscle.<br />
*10_34_05 Security Guard: I have two men down over here. Get us some backup, fast!<br />
*10_34_06 Konoko: I don't have time for this.<br />
*10_34_07 Security Guard: Stop or I'll shoot!<br />
*10_34_08 Konoko: Your call.<br />
===Retrieving data===<br />
*10_35_01a Konoko: Here we go...Light security. Nothing special. There it is. My life, all tucked away nice and neat in a classified archive. Time to take back what...<br />
*10_35_01b Konoko: Someone else is in the system. Not good. Stripping away the files I'm trying to download.<br />
*10_35_01c Konoko: Not much more. Just a few seconds... No! Kicked offline. Somebody knew I was going to be poking around in there and sent that hacker after me. I wonder what they're protecting?<br />
===Outro===<br />
*10_37_01 Mukade: I have it. Let's move.<br />
===Misc===<br />
====Basement====<br />
*10_38_01 Civilian: Please...what do you want from us?<br />
*10_38_02 Konoko: The restricted access files. Where are they kept?<br />
*10_38_03 Civilian: They're in the basement data vault.<br />
====Command center====<br />
*10_38_04 Civilian: Don't kill me! I'm just a clerk!<br />
*10_38_05 Konoko: I don't want to kill anyone. I just need some information.<br />
*10_38_06 Civilian: I can't tell you anything. I wish I could but I can't. These terminals are for data entry only. I can't access restricted files from here.<br />
*10_38_07 Konoko: So how do I get what I need?<br />
*10_38_08 Civilian: All the high security access terminals are over in the command center. Please don't hurt me. I have a wife and kids...<br />
====Way out====<br />
*10_38_09 Civilian: You're that terrorist!<br />
*10_38_10 Konoko: Is that what they're saying? Fine. I'm a terrorist and right now I'm looking for a way out.<br />
*10_38_11 Civilian: The underground security passage! It gives us direct access to the command offices! Maybe you could get out over there!<br />
<br />
<br />
----<br />
=={{C|10}}==<br />
''Related : [[Quotes/Objectives#{{C10}}|Objectives]] [[Quotes/Diary#{{C10}}|Diary]]''<br />
===Chase===<br />
*11_39_01 Konoko: Where...? Ah, over there.<br />
*11_39_02 Konoko: It's strange...I can almost feel him out there, creeping from shadow to shadow...<br />
*11_39_03 Konoko: I lost him. Wait...there he is.<br />
*11_39_04 Konoko: He can't escape me, but why?<br />
*11_39_05 Konoko: There is something familiar about him...I can't quite place it.<br />
*11_39_06 Konoko: It's like this is his territory, and I'm invading.<br />
*11_39_07 Konoko: He's angry. I can taste his frustration.<br />
*11_39_08 Konoko: He knows I can feel him...that we are...rivals? Natural enemies?<br />
*11_39_09 Konoko: I'm backing him into a corner. This isn't going to be pretty...<br />
===Faceoff===<br />
*11_40_01 Mukade: All you have done by hunting me is force me to fight. You should have let me go.<br />
*11_40_02 Konoko: Who are you? Why can I feel you inside me?<br />
*11_40_03 Mukade: Does your blood burn when you kill? Mine does.<br />
*11_40_04 Konoko: Stop it...<br />
*11_40_05 Mukade: We writhe inside as we are torn apart to make way for what we will become. Surrender to it. Let the bliss of oblivion free you of all your doubts and fears...<br />
*11_40_06 Konoko: You are one of Muro's thugs, nothing more.<br />
*11_40_07 Mukade: We shall see...<br />
===Neck break===<br />
*c11_41_01konoko Konoko: My father's file. Griffin encouraged me not to look too deeply into my past. It seems like there's a lot he didn't want me to know... I could feel the Ninja and I knew he could feel me. Why? What am I becoming? Are we the same?<br />
*c11_41_01bkonoko Konoko: No! I have nothing in common with him.<br />
*c11_41_02konoko Konoko: Nothing.<br />
<br />
<br />
----<br />
=={{C|11}}==<br />
''Related : [[Quotes/Objectives#{{C11}}|Objectives]]''<br />
===Intro===<br />
*12_42_01 Konoko: My father's lab. It is hard to imagine what it would have been like to have known him. Coming here is like walking with his ghost through the past we never shared.<br />
----<br />
*12_43_01 Hasegawa: Since the loss of my beloved Jamie I have tried to find a way to excuse my survival.<br />
*12_43_02 Hasegawa: Her sacrifice must have some meaning or the tragedy of it will overwhelm me.<br />
*12_43_03 Hasegawa: I met Jamie when she was a student of mine. She was one of my best. It was also obvious that she was an exceptional person. I fell for her from the start.<br />
*12_43_04 Hasegawa: Jamie was an activist. She knew government was concealing the facts about the environmental crisis. She was determined to set things straight no matter what the cost.<br />
*12_43_05 Hasegawa: Jamie convinced me to join in the struggle. We both knew it was dangerous but we were young and thought we were indestructible.<br />
*12_43_06 Hasegawa: I miss her terribly.<br />
*12_43_07 Hasegawa: We never should have left the city. But we wanted proof of what was being allowed to happen.<br />
*12_43_08 Hasegawa: They called it a Wilderness Preserve. It was one of the Contaminated Zones, the dirty secrets that the government made it easy to ignore.<br />
*12_43_09 Hasegawa: We knew that traveling there would brand us as enemies of the state. We thought we were prepared to deal with the consequences of our choice, but what happened was more horrible than anything we could have ever imagined.<br />
*12_43_10 Hasegawa: On our way into the Zone, Jamie cut her leg. The wound became infected almost immediately. I'd never seen anything like it. She was dying in my arms and there was nothing I could do to save her. All I could do was ease her pain.<br />
*12_43_11 Hasegawa: The world outside the Atmospheric Processors is poisonous. If something isn't done we are all doomed. Jamie's death won't be in vain. I'm going to do something about the nightmare that killed her. Her brother will help me. He misses her as much as I do.<br />
----<br />
*12_44_01 Konoko: Jamie Hasegawa. Maiden Name Jamie Kerr. Kerr's sister. Shinatama was right. Kerr worked with my father, but on what?<br />
*12_44_02 Muro: You really don't know?<br />
*12_44_03 Konoko: Tell me...<br />
*12_44_04 Muro: No more time for questions little girl.<br />
===Griffin===<br />
*12_45_01 Griffin: You are such a disappointment.<br />
*12_45_02 Konoko: You lied to me!<br />
*12_45_03 Griffin: I told you what you needed to know.<br />
*12_45_04 Konoko: You used me!<br />
*12_45_05 Griffin: I did my job, which is better than I can say for you.<br />
===Evil Konoko===<br />
*12_46_01 Konoko: Hello Mai.<br />
*12_46_02 Konoko: What?<br />
*12_46_03 Konoko: Mai Hasegawa. That's your name, isn't it?<br />
*12_46_04 Konoko: I'm not sure who I am...<br />
*12_46_05 Konoko: Oh, well let me help you. Ward of the State. TCTF pawn. Murderer. Ring any bells?<br />
*12_46_06 Konoko: Leave me alone...<br />
*12_46_07 Konoko: Can't do that. You are a Rogue Agent. I'm under orders to bring you in.<br />
===Shinatama===<br />
*12_63_01 Shinatama: Konoko...this way...<br />
*12_63_02 Shinatama: Listen to me Konoko... listen...listen...listen '''(UNUSED)'''<br />
*12_63_03 Shinatama: Follow me...<br />
*12_63_04 Shinatama: Over here...<br />
*12_63_05 Shinatama: <giggles><br />
<br />
<br />
----<br />
=={{C|12}}==<br />
''Related : [[Quotes/Consoles#{{C12}}|Consoles]] [[Quotes/Objectives#{{C12}}|Objectives]] [[Quotes/Diary#{{C12}}|Diary]]''<br />
===Griffin's pet doctor===<br />
*13_47_03 Security Guard: Hey, it's me. Let me in.<br />
*13_47_04 Security Guard: All right. Hold on.<br />
<br />
*13_47_01 Security Guard: Where's Griffin's pet doctor today?<br />
*13_47_02 Security Guard: Touring the pod wing I believe.<br />
<br />
===Meeting Kerr===<br />
*13_64_01 Konoko: Hello Uncle.<br />
*13_64_02 Kerr: What are you doing here? Griffin's men are...<br />
*13_64_03 Konoko: Let me worry about Griffin. Right now I need your help.<br />
*13_64_04 Kerr: Yes, you do. Perhaps more than you know...but I'll need my equipment. And they will try to shut me out so I need you to reroute the power manually.<br />
*13_64_05 Konoko: I'm on it.<br />
*13_64_06 Kerr: I'll meet you in my lab.<br />
===Scanner room===<br />
*13_65_01 Kerr: Get into the chair.<br />
*13_65_02 Konoko: Is this absolutely necessary?<br />
*13_65_03 Kerr: Yes. You've been out of contact since Shinatama was kidnapped. I need to know what is going on inside you.<br />
*13_65_04 Konoko: All right.<br />
*13_65_05 Kerr: This may sting a bit...<br />
*13_65_06 Konoko: What are you doing?<br />
*13_65_07 Kerr: I'm taking a look at the Chrysalis and testing to see how far its integration with your body has progressed.<br />
*13_65_08 Konoko: Integration?<br />
*13_65_09 Kerr: You're stable, but the transformation is farther along than I anticipated.<br />
*13_65_10 Konoko: What does that mean? What's happening to me?<br />
*13_65_11 Kerr: How much do you know already?<br />
*13_65_12 Konoko: My birth name is Mai Hasegawa. You worked with my father, but I don't know what you were working on.<br />
*13_65_13 Kerr: The Daodan Chrysalis. Your father believed that the only way to save the human race from the poisonous atmosphere was to change them so they could adapt to the new world.<br />
*13_65_14 Konoko: Shinatama said that you used her to monitor the growth of the Chrysalis. Is there one of those things inside me?<br />
*13_65_15 Kerr: Yes.<br />
*13_65_16 Konoko: What is it doing?<br />
*13_65_17 Kerr: The Chrysalis is the hyper-evolved clone of its host body. As the host experiences stress or harm it grows to reinforce or replace the body's damaged systems.<br />
*13_65_18 Konoko: Who did this to me? You?<br />
*13_65_19 Kerr: Griffin forced me to do it.<br />
*13_65_20 Konoko: Griffin? But why?<br />
*13_65_21 Kerr: Your father and I were criminals, funded by the Syndicate. We couldn't get backing from any legitimate source. They left us alone for the most part. We didn't think they were interested in our work. We were wrong.<br />
*13_65_22 Konoko: Go on.<br />
*13_65_23 Kerr: They had been watching us very closely. When they figured out what the Chrysalis was they raided our lab. We'd only grown two prototypes, based on the genetic codes of you and your brother...<br />
*13_65_24 Konoko: My brother?<br />
*13_65_25 Kerr: Muro.<br />
*13_65_26 Konoko: You've got to be kidding.<br />
*13_65_27 Kerr: The Syndicate captured your father and Muro. We had never intended to implant those Chrysalises. They had other plans.<br />
*13_65_28 Konoko: Where was I?<br />
*13_65_29 Kerr: I managed to escape with you. I took you to the TCTF. There was no other way to ensure your safety.<br />
*13_65_30 Konoko: And Griffin forced you to implant mine. Why? Insurance?<br />
*13_65_31 Kerr: Yes. We weren't sure what kind of mutation the prototypes would produce. Griffin wanted to make sure we had a match for any weapon the Syndicate ended up with. He's a cold hearted man.<br />
*13_65_32 Konoko: He makes you work for him, doesn't he?<br />
*13_65_33 Kerr: Yes, but it's all right. You have been my only project. I owe it to you to look after you however I can.<br />
*13_65_34 Konoko: Muro and his men. They're monsters... What am I?<br />
*13_65_35 Kerr: You are who you have always been. The Chrysalis can't change that. The effect of the mutation is influenced by the subject's nature.<br />
*13_65_36 Konoko: What?<br />
*13_65_37 Kerr: You are changing...into a more powerful, resilient version of yourself. But whatever your final form, it is an expression of your true nature...<br />
*13_65_38 Security Guard: Target acquired. It's her!<br />
*13_65_40 Kerr: (while jumping in front of Konoko to take bullet) Wait! Noooo...... '''(UNUSED)'''<br />
*13_65_39 Konoko: You'll pay for that! You'll all pay!<br />
<br />
===Jump in the goo===<br />
*13_66_01 Konoko: No way out. But something Kerr said. There might be a way. I've got to make it to the biomatter disposal vats.<br />
----<br />
*13_66_02 Konoko: The last acid vat may have a drain wide enough...but I've got to reach the center.<br />
----<br />
*13_66_03 Konoko: The crane controls...<br />
----<br />
*13_66_04 Konoko: I just hope the Chrysalis can keep me alive...<br />
----<br />
*13_66_05 Konoko: Father, I pray you were right...<br />
===Target neutralized===<br />
*13_67_01 Security Guard: What do you think?<br />
*13_67_02 Security Guard: Dead. She has to be.<br />
*13_67_03 Security Guard: Shouldn't we check it out?<br />
*13_67_04 Security Guard: How do you suggest we do that?<br />
*13_67_05 Security Guard: Target neutralized. All clear.<br />
<br />
<br />
----<br />
=={{C|13}}==<br />
''Related : [[Quotes/Consoles#{{C13}}|Consoles]] [[Quotes/Objectives#{{C13}}|Objectives]]''<br />
===Intro===<br />
*14_50_01 Scientist: No waveform readings detected for over 48 hours. Given the magnitude of the last readings we're confident the host was destroyed in the acid.<br />
*14_50_02 Griffin: Continue scanning.<br />
*14_50_03 Scientist: But commander... Yes sir.<br />
----<br />
*14_50_04 Konoko: I want some answers and I want them now.<br />
*14_50_05 Griffin: I'm sorry. I can't help you now. No one can.<br />
===Omega Bunker===<br />
*14_51_01 Konoko: You can't escape me. You saw to that.<br />
*14_51_02 Griffin: You are a failed experiment, a calculated risk. Nothing more. I made sure that I would be ready for this day from the very beginning.<br />
*14_51_03 Griffin: Shinatama was in constant contact with you through every stage of your development. No one knows you better. I have wired her to the control system of this assault pod. You haven't got a chance. You never did.<br />
*14_51_04 Shinatama: All system armed and active.<br />
*14_51_05 Konoko: Shinatama...no...!<br />
----<br />
*14_51_06 Shinatama: I'm sorry...<br />
*c00_01_100shinatama Shinatama: Kill me Konoko...please!<br />
*c00_01_101shinatama Shinatama: I'm sorry...so sorry!<br />
*c00_01_102shinatama Shinatama: Forgive me...<br />
*c00_01_103shinatama Shinatama: Let me out! '''(UNUSED)'''<br />
----<br />
*14_51_07 Shinatama: Level 1 security mode defeated. Switching to level 2.<br />
----<br />
*14_51_08 Shinatama: Level 2 mode neutralized. Engage level 3.<br />
----<br />
*14_51_09 Shinatama: Warning: target neutralization failed. Daodan symbiote organism present. Engaging Omega security mode<br />
*14_52_01 Griffin: Emergency Override Griffin Alpha Zero. Emergency Override... No! Stay back!<br />
===Griffin's fall===<br />
*14_52_02 Konoko: Gotcha.<br />
*14_52_03 Griffin: This is a bad idea. Put the gun down.<br />
*14_52_04 Konoko: I'm a rogue Agent, haven't you heard? Very dangerous. I'm exactly what you wanted me to be.<br />
*14_52_05 Griffin: So how does this end?<br />
*14_52_06 Konoko: For you? Badly.<br />
*14_52_07 Griffin: That's your call. You can pull the trigger or you can walk away. It's up to you.<br />
====Killing Griffin====<br />
*14_53_01 Konoko: No, it was never up to me. YOU did this. YOU made my own uncle put this THING inside of me. YOU lied to me, betrayed me. You are a monster. And now I'll take care of Muro myself.<br />
====Walking away====<br />
*14_54_01 Konoko: I won't be the monster you thought I would be. Just remember what I am: the woman you betrayed because you weren't big enough to take responsibility for your actions.<br />
===Misc===<br />
====Zombie Shinatama====<br />
*14_54_02 Civilian: Konoko, please don't hurt me. They made me do it, I swear.<br />
*14_54_03 Konoko: Do what?<br />
*14_54_04 Civilian: I knew she was more than an android, to you at least...<br />
*14_54_05 Konoko: What did you do?<br />
*14_54_06 Civilian: Griffin wanted something to use against you...<br />
*14_54_07 Konoko: Get out of my sight. Now!<br />
====Ask your boss====<br />
*14_54_08 Civilian: Please...I surrender. Take my weapon.<br />
*14_54_09 Konoko: This will come in handy.<br />
*14_54_10 Civilian: Why are you doing this?<br />
*14_54_11 Konoko: Maybe you should ask your boss. But don't expect him to tell you the truth.<br />
====A medal in your casket====<br />
*14_54_12 Scientist: I refuse to deactivate this substation. You have no right to do this!<br />
*14_54_13 Konoko: Very brave of you. I bet they'll put a medal in your casket.<br />
*14_54_14 Scientist: Fine. I'll let you in. It doesn't make any difference. They'll get you eventually. You can't escape the TCTF.<br />
====Friends====<br />
*14_54_15 Civilian: Konoko, you should be ashamed of yourself, after all Griffin has done for you!<br />
*14_54_16 Konoko: Ashamed of myself? I'm doing all this to pay him back. Now hand them over.<br />
*14_54_17 Civilian: Alright! Take them.<br />
----<br />
*14_54_18 Civilian: Konoko! What's happened to you?<br />
*14_54_19 Konoko: None of your business. Give me the hypos and the force field.<br />
*14_54_20 Civilian: You were one of us. Griffin treated you like a daughter. You should be ashamed of yourself!<br />
*14_54_21 Konoko: Ashamed of myself? Griffin made me a monster when I was 07 years old and imprisoned the only man brave enough to try and protect me. I'm here to settle the score and nobody is going to stand in my way. Now hand them over.<br />
*14_54_22 Civilian: Alright! Take them.<br />
====Shutdown====<br />
*14_54_23 Konoko will need to have some IM talking about how she will disable the power substations in the TCTF HQ so she can get to GRIFFIN. Her interaction with the neutral cha at 530 above is the last step in the process. We'll need three other VO segments: '''(DEV NOTES, UNUSED)'''<br />
----<br />
*14_54_24 Konoko: Griffin's barricaded in a high security locked chamber. The Syndicate disabled the building security systems by knocking out the power substations. I'll do the same.<br />
----<br />
*14_54_25 Konoko: Sub-station 1...<br />
----<br />
*14_54_26 Konoko: Here's that sub-station...<br />
----<br />
*14_54_27 Konoko: One more junction...<br />
====Really really misc====<br />
*14_54_28 Civilian: Hey, I'm just here to replace the equipment.<br />
*14_54_29 Civilian: See I'm a nice guy, no need for violence.<br />
----<br />
*14_54_30 Scientist: Oh Konoko, I am so sorry. I didn't want to be part of this trap.<br />
----<br />
*14_54_31 Konoko: Now what are you doing hiding back here?<br />
*14_54_32 Scientist: Trying to hide.<br />
----<br />
*14_54_33 Konoko: Sorry about the mess.<br />
----<br />
*14_54_34 Civilian: I'm unarmed! This is all I'm carrying, I swear.<br />
<br />
<br />
----<br />
=={{C|14}}==<br />
''Related : [[Quotes/Consoles#{{C14}}|Consoles]] [[Quotes/Objectives#{{C14}}|Objectives]] [[Quotes/Diary#{{C14}}|Diary]]''<br />
===Truck===<br />
*15_57_05 Konoko: I wonder how strong those doors are?<br />
----<br />
*15_57_06 Konoko: I don't see a buzzer. Looks like I'll have to knock.<br />
===Scientists===<br />
====What do you want?====<br />
*15_57_07 Syndicate Scientist: Who are you! You're not authorized to be in here!<br />
*15_57_08 Konoko: Who's going to throw me out...you?<br />
*15_57_09 Syndicate Scientist: What do you want?<br />
*15_57_10 Konoko: I'll take whatever you've got. Right now!<br />
*15_57_11 Syndicate Scientist: Ok, please don't hurt me!<br />
====Are you talking to me?====<br />
*15_57_12 Syndicate Scientist: Hey! Have you finished calibrating the...<br />
*15_57_13 Konoko: Are you talking to me?<br />
*15_57_14 Syndicate Scientist: Do..do I know you?<br />
*15_57_15 Konoko: I don't know...do I look familiar? Remind you of anyone?<br />
*15_57_16 Syndicate Scientist: Oh god...YOU! Here take these! Just leave me alive!<br />
====Is that a yes?====<br />
*15_57_17 Konoko: Excuse me doctor, have you seen my brother around?<br />
*15_57_18 Syndicate Scientist: Your brother? What are you talk..oh no!<br />
*15_57_21 Syndicate Scientist: You...you're the other prime symbiote!<br />
*15_57_19 Konoko: Is that a yes?<br />
*15_57_20 Syndicate Scientist: I'm no threat to you. Just take what you want and leave. Please!<br />
===Hacking Sturmanderung===<br />
*15_57_01 Konoko: The Syndicate has been busy. They've taken control of processors all around the world, but why?<br />
----<br />
*15_57_02 Konoko: Muro's crazy. I think he's going to reverse the atmospheric processors, and poison the atmosphere. He's trying to kill us all!<br />
----<br />
*15_57_03 Konoko: These readings indicate a controlled rise in the toxin levels. I get it: he plans to spill enough poison into the air to kill anyone who won't sell their soul to him for a Chrysalis.<br />
----<br />
*15_57_04 Konoko: There's too many stations: they could never be disarmed before Muro activates them. But there is one chance: if I overload the generators I could blow them up before the atmospheric damage is irreversible.<br />
===Final battle===<br />
====Mutant Muro (Griffin dead)====<br />
*15_59_01 Muro: Welcome sister. I am very impressed with what you have been able to accomplish without drawing on the full power of your Chrysalis. You are capable of so much more. Let me show you...<br />
*15_59_02 Muro: Glorious, isn't it? This is the future. Join me or die like all the others, choking on dead air and foul water. I have accomplished everything our father dreamed of doing.<br />
*15_59_03 Konoko: He dreamed of life. All you know is death.<br />
====Muro & Griffin & friends====<br />
*15_60_01 Muro: You were a fool to come here alone.<br />
*15_60_02 Griffin: She isn't alone. You are under arrest. This ends here and now.<br />
*15_60_03 Muro: He used you. Join me or die like all the others, choking on dead air and foul water. I have accomplished everything our father dreamed of doing.<br />
*15_60_04 Konoko: He dreamed of life. All you know is death.<br />
*15_60_05 Konoko: Surrender. We have you surrounded.<br />
*15_60_06 Muro: Never.<br />
==Outro==<br />
*15_61_01 Konoko: When I blew the processors I bought us some time, but at a horrible cost. The dead and the dying now line the streets but it is impossible to deny the problem any longer. My father's work may prove to be the salvation of the afflicted after all.<br />
*15_61_02 Konoko: Mankind as we knew it is doomed: the Chrysalis will change us all. Let's hope it's for the better.<br />
<br />
<br />
----<br />
==Shinatama==<br />
===Training===<br />
===={{C|1}}====<br />
=====Health meter=====<br />
*00_01_92 Shinatama: Listen Konoko, you weren't in any danger during basic training, but now that you're in the field we'd better review your HEALTH DISPLAY METER.<br />
=====Overpower=====<br />
*00_01_93 Shinatama: Konoko, there's something I have to tell you about hypo sprays. I'm not supposed to talk about this, but data suggests that hypos will work differently on you than on...OTHER people.<br />
*00_01_94 Shinatama: If you use a hypo when you're close to full health you may experience the OVERPOWER effect, a temporary burst of strength and health. It will only last a short time, so try to take advantage of the temporary boost it gives you! But please don't tell Commander Griffin I told you about this.<br />
=====Alarm=====<br />
*00_01_96 Shinatama: Catch him Konoko! Don't let him reach the alarm console and activate it!<br />
=====Civilians=====<br />
*00_01_97 Shinatama: Watch out! If you hurt innocent people then they won't want to help you!<br />
===={{C|0}}====<br />
''Related : [[Quotes/Consoles#{{C0}}|Consoles]] [[Quotes/Moves|Moves]]''<br />
*00_01_29 Shinatama: Hi Konoko, It's me Shinatama!<br />
*00_01_30 Shinatama: I've checked our neural link and it's working perfectly!<br />
*00_01_31 Shinatama: I'm so excited. Commander Griffin has authorized us to run through TCTF training program beta 6!<br />
*00_01_32 Shinatama: That means you're almost ready for field missions!<br />
*00_01_33 Shinatama: But before we begin, you'd better warm-up.<br />
----<br />
*00_01_34 Shinatama: Are you ready to begin? Let's go! '''(UNUSED)'''<br />
----<br />
*00_01_91 Shinatama: You did it! Great job! Now that your basic training is complete you're ready to take on your first mission. I'm sure Commander Griffin will be very pleased with your performance.<br />
=====Praising=====<br />
*00_01_01 Shinatama: Well done!<br />
*00_01_02 Shinatama: Good work!<br />
*00_01_03 Shinatama: Good job!<br />
*00_01_04 Shinatama: Nice work!<br />
*00_01_05 Shinatama: Nice job!<br />
*00_01_06 Shinatama: That's great!<br />
*00_01_07 Shinatama: That's super!<br />
*00_01_08 Shinatama: That's fine!<br />
*00_01_09 Shinatama: Super!<br />
*c00_01_10Shinatama Shinatama: Great!<br />
*00_01_11 Shinatama: O.K.!<br />
*00_01_12 Shinatama: Okay!<br />
<br />
=====Encouraging=====<br />
*00_01_13 Shinatama: You can do it! Keep trying!<br />
*00_01_14 Shinatama: Keep trying!<br />
*00_01_15 Shinatama: This can be tricky, but you can do it!<br />
*00_01_16 Shinatama: Just do your best!<br />
<br />
===Prompting===<br />
*00_01_17 Shinatama: I've uploaded a new objective to your Data Comlink.<br />
*00_01_18 Shinatama: Here's a new objective for you Konoko!<br />
*00_01_19 Shinatama: New mission objective.<br />
*00_01_20 Shinatama: New mission data.<br />
*00_01_21 Shinatama: Incoming objective data, stand by.<br />
*00_01_22 Shinatama: Uploading new objective data.<br />
*00_01_23 Shinatama: Please check your comlink Konoko.<br />
*00_01_24 Shinatama: New compass data.<br />
*00_01_25 Shinatama: New compass target.<br />
*00_01_26 Shinatama: Incoming compass data.<br />
*00_01_27 Shinatama: New compass data for you Konoko.<br />
*00_01_28 Shinatama: I've got a new heading for you.<br />
<br />
<br />
----<br />
<br />
==Misc==<br />
===Character sound events===<br />
This is probably incomplete, even if we leave various dying sounds out.<br />
====Konoko====<br />
*Rising Fury!<br />
*Devil Spin Kick!<br />
*Hmph!<br />
*You're gonna get beat(en) by a girl!<br />
*So there!<br />
*Hahahahaha!<br />
*Ready to lose?<br />
*Show me what you got!<br />
====Muro====<br />
*Maybe i should start trying.<br />
====Barabas====<br />
*Earthquaker!<br />
*Stronger and stronger!<br />
====Mukade====<br />
*Devilstar! (when throwing a "fireball")<br />
*Muahahahahaha! (when teleporting)<br />
====Striker====<br />
*Striker slam!<br />
*Yer going down!<br />
*I'll finish you!<br />
*Now i strike!<br />
<br />
====Elite Striker====<br />
*No one can defeat ''me''!<br />
*You're done!<br />
*It's over!<br />
*C'mon out...<br />
*Cannonball!<br />
<br />
====Fury====<br />
*What was that?!<br />
*Are you hiding from me?<br />
*Oh, please!<br />
*Whatever!<br />
*Ten Shadow Punch!<br />
*Whirl Kick!<br />
*She was weak...<br />
*Oops.<br />
<br />
====Ninja====<br />
*Checking...<br />
*Investigating...<br />
*Sound detected...<br />
*I will find you...<br />
*Neutralized...<br />
====Tanker====<br />
*Can't top Tanker!<br />
*Oh, yeah!<br />
*''Come on''!<br />
*Blockbuster!<br />
*Nuclear tackle!<br />
*Where did you go?<br />
*That hurt!<br />
*How'd ''that'' butt-kicking feel?<br />
<br />
====Comguy====<br />
*Huh?<br />
*What was ''that''?<br />
*Hey!<br />
*Static Fist!<br />
*Radio Saber!<br />
*You're weak!<br />
*OK, OK, ''don't'' frog blast the vent core!<br />
*She's ''everywhere''!<br />
====Bomber====<br />
*I'll ''find'' you!<br />
*Happy to die?<br />
*We're all doomed!<br />
====Sniper====<br />
*Wait till I reload!<br />
*Searching...<br />
====Engineer====<br />
*Don't make me hurt you!<br />
*Hey, come back here!<br />
====Mystery Man====<br />
*Oops! Sorry about that, Konoko!<br />
===Neutral behaviour events etc===<br />
*16_89_01 Civilian: Look out!<br />
*16_89_02 Civilian: Oh no!<br />
*16_89_03 Civilian: Behind you!<br />
*c16_89_04tctfmale TCTF Agent: Incoming!<br />
*c16_89_04civmale1 Civilian: Over here!<br />
*16_89_05 Civilian: Hey, come here!<br />
*16_89_06 Civilian: Hi there!<br />
*16_89_07 TCTF Agent: Hey Konoko!<br />
*16_89_08 Civilian: Where are you going?<br />
*16_89_09 Civilian: Wait! I'm not finished!<br />
*16_89_10 Civilian: Well, excuse me! (indignant)<br />
*16_89_11 TCTF Agent: Check back with me later.<br />
*16_89_12 Civilian: Look out!<br />
*16_89_13 Civilian: Watch out!<br />
*16_89_14 Civilian: Oh no!<br />
*16_89_15 TCTF Agent: Watch yourself!<br />
*16_89_16 Civilian: Over here!<br />
*16_89_17 Civilian: Excuse me!<br />
*16_89_18 Civilian: Hi!<br />
*16_89_19 TCTF Agent: Konoko!<br />
*16_89_20 Civilian: Where are you going?<br />
*16_89_21 Civilian: Wait! I'm not finished!<br />
*16_89_22 Civilian: Oh, sorry!<br />
*16_89_23 TCTF Agent: Check back with me later.<br />
*16_91_01 Civilian: Here, take this hypo.<br />
*16_91_02 Civilian: You might need this hypo.<br />
*16_91_03 Civilian: Here, take this ammo clip.<br />
*16_91_04 Civilian: Take this ammo clip, it'll help you.<br />
*16_91_05 Civilian: Here, use this weapon.<br />
*16_91_06 Civilian: Take this weapon, I'm sure it'll help.<br />
*16_91_07 Civilian: Here, take this force field.<br />
*16_91_08 Civilian: You need this force field, it'll help you.<br />
*16_91_09 Civilian: Here, take these hypos.<br />
*16_91_10 Civilian: Here, you'll need these ammo clips.<br />
*16_91_11 Civilian: Here, take this force field.<br />
*16_91_12 Civilian: Here, take these weapons.<br />
*16_91_13 Civilian: Here, take these force fields.<br />
*16_91_33 Civilian: Here, take this hypo.<br />
*16_91_14 Civilian: Look, take this hypo.<br />
*16_91_15 Civilian: Here, take this ammo clip.<br />
*16_91_16 Civilian: Hey, you can use this ammo clip.<br />
*16_91_17 Civilian: Hey! You can use this force field.<br />
*16_91_18 Civilian: Here, take this force field.<br />
*16_91_19 Civilian: Look, take this force field.<br />
*16_91_20 Civilian: Here, here's a weapon for you.<br />
*16_91_21 Civilian: Hey, why don't you take this weapon?<br />
*16_91_22 Civilian: Go on! Take this weapon.<br />
*16_91_23 Civilian: You may need this.<br />
*16_91_24 Civilian: You may need this.<br />
*16_91_25 Civilian: Here, take this hypo.<br />
*16_91_26 Civilian: You may need this ammo clip.<br />
*16_91_27 Civilian: You better take this weapon.<br />
*16_91_28 Civilian: You're going to need a force field.<br />
*16_91_29 Civilian: Here, have a hypo.<br />
*16_91_30 Civilian: Why don't you take this ammo clip?<br />
*16_91_31 Civilian: This weapon could be helpful.<br />
*16_91_32 Civilian: Here. Take this force field.<br />
<br />
<br />
*civfemale_abort Civilian: Wait! I'm not finished!<br />
*civfem_enemy Civilian: Watch out!<br />
*civfem_gift_ammo Civilian: Here, take this ammo clip.<br />
*civfem_gift_force_field Civilian: You need this force field, it'll help you.<br />
*civfem_gift_hypo Civilian: Here, take this hypo.<br />
*civfem_gift_weapon Civilian: Here, use this weapon.<br />
*civfem_trigger Civilian: Over here!<br />
*civmale1_abort Civilian: Where are you going?<br />
*civmale1_enemy Civilian: Look out!<br />
*civmale1_gift_ammo Civilian: Here, you'll need these ammo clips.<br />
*civmale1_gift_force_field Civilian: Here, take this force field.<br />
*civmale1_gift_force_fields Civilian: Here, take these force fields.<br />
*civmale1_gift_hypos Civilian: Here, take these hypos.<br />
*civmale1_gift_weapons Civilian: Here, take these weapons.<br />
*civmale1_trigger Civilian: Over here!<br />
*civmale2_abort Civilian: Wait! I'm not finished!<br />
*civmale2_enemy Civilian: Oh no!<br />
*civmale2_gift_ammo Civilian: Here, take this ammo clip.<br />
*civmale2_gift_force_field Civilian: Here, take this force field.<br />
*civmale2_gift_hypo Civilian: Look, take this hypo.<br />
*civmale2_gift_weapon Civilian: Here, here's a weapon for you.<br />
*civmale2_trigger Civilian: Hey, come here!<br />
*civmale3_abort Civilian: Well, excuse me!<br />
*civmale3_enemy Civilian: Behind you!<br />
*civmale3_gift_ammo Civilian: You may need this ammo clip.<br />
*civmale3_gift_force_field Civilian: You're going to need a force field.<br />
*civmale3_gift_generic Civilian: You may need this.<br />
*civmale3_gift_hypo Civilian: Here, take this hypo.<br />
*civmale3_gift_weapon Civilian: You better take this weapon.<br />
*civmale3_trigger Civilian: Hi there!</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Flatline&diff=16258Flatline2009-12-08T02:39:39Z<p>Gumby: </p>
<hr />
<div>{|align=right border=1 cellspacing=0<br />
|http://gumby.oni2.net/Flatline/flatline.png<br />
{|cellspacing=3<br />
!colspan="2"|The Development Team<br />
|-<br />
|'''Head Developer:''' ||align="right" |[[User:Gumby|Gumby]]<br />
|-<br />
|'''Resident Coder:''' ||align="right" | [[User:RossyMiles|RossyMiles]]<br />
|-<br />
|'''Advisors:'''||align="right" |[[User:Geyser|geyser]]<br />
|-<br />
| ||align="right" |[[User:Neo|Neo]]<br />
|-<br />
|}<br />
|}<br />
The Flatline Project is the most recent attempt at Multiplayer for Oni. It will combine the knowledge gleaned from projects such as [[OniPlayer]] and Neo's engine hacking with new techniques of controlling AI characters to create the first working Multiplayer since the early days of Oni's development.<br />
<br />
'''Status:'''<br />
Integrating network code into Oni. Progress is great. :)<br />
<br />
==Packets==<br />
For now, all packets are UDP, though some of the less time essential packets (messages, commands, etc...) will probably be moved to TCP.<br />
===Structure===<br />
typedef struct {<br />
char id;<br />
int packet_index;<br />
char data[1080]; <br />
} flatline_packet;<br />
*id is an identifier the specific type of packet being sent (message, character sync, initial connection, etc...)<br />
*packet_index is used to protect against duplicate packets. Each packet gets a unique indentifier, if a duplicate is found, the packet is ignored.<br />
*data contains the actual data for the packet, and is typically cast to another struct. The largest struct needed so far is 1080 bytes. In theory, we can go up to 1400 bytes.<br />
<br />
===Connecting===<br />
#Client sends a packet asking to connect to a server<br />
#Server sends a packet back, saying if the client can connect or not, including a string to display if the connection was rejected<br />
#Client either recieves said packet or times out after 15 seconds if no packet is recieved back (sending a new connection request packet every so often before that).<br />
#Server sends basic game info to client, including a packet containing a mock BINACHAR for each player currently connected to the server.<br />
<br />
#Client sends packets containing keystrokes and other commands<br />
#Server sends back xyz\animation\whatever data<br />
<br />
==Maps==<br />
<br />
Probably done through level plugins that use levels 64-127. This has the advantage of being hidden on the level list. These maps would have specialized CHAR\PART\whatever tailored to MP gameplay. Of course a console map change command would need to be implemented.<br />
(win\lose level, and change current level number, through hex overwriting)<br />
<br />
<br />
==Lag Compensation==<br />
Quick and dirty lag compensation might come from "fast-forwarding" a frame for every 17 ms of lag or so. ( 17ms = 1 frame...damn that's short :( ) Compensating for rotation\movement differences will be a bit harder, and require a bit more calculation.<br />
[[Category:All AE mods]][[Category:Unfinished AE mods]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Flatline/Dev_Diary&diff=16257Flatline/Dev Diary2009-12-08T01:15:26Z<p>Gumby: </p>
<hr />
<div>This is just gonna be where I put all the stuff that is done. I like having a place to write down stuff.<br />
<br />
Happy {{LOCALDAYNAME}}.<br />
{{Divhide|AutoIt Stage|<br />
==Autoit stage==<br />
<br />
===October 16, 2008===<br />
<br />
====Done====<br />
*GameState Offset<br />
*Character Offsetts<br />
*Key+mouse input offsets<br />
*Turning offset (mostly...)<br />
*Local game linking<br />
*Location coordinates<br />
<br />
====To-Do====<br />
*Finish Changing over to moving other characters instead of just the corresponding Konoko<br />
*Fix glitch involving keyboard attack inputs being broken<br />
*Apply rotation pointers to other characters<br />
<br />
===October 17, 2008===<br />
<br />
====Done (Today)====<br />
*Linked Active+Normal Character structs<br />
*Finished transferring over to pointers and other chracters (including rotation)<br />
*Fixed input glitch<br />
<br />
====To-Do====<br />
*Waiting on Rossy to start on network code.<br />
*Transfer over to C and MP logic stuff.<br />
<br />
===October 18, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Tested, found geyser couldn't run it<br />
*Tested more, found Neo also couldn't run it<br />
*Fixed an issue with not linking to ActiveKonoko's struct<br />
*Fixed a pointer I forgot to make >_<<br />
*Is now working on Neo's computer<br />
<br />
====Testing====<br />
*Gumby - works<br />
*Paradox - works, although attacks aren't working. Probably due to slow processor speed.<br />
*Geyser - '''FIXED''' Laggy, but normal.<br />
*Neo - '''FIXED''' is working now, albiet a bit laggy<br />
*Iritscen - works<br />
<br />
===October 19, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Started network code in C. -[[User:RossyMiles|RossyMiles]]<br />
*Got bored, and implemented a second character, that Window Two can control -[[User:Gumby|Gumby]]<br />
<br />
===Octover 30, 2008===<br />
<br />
*Started experimenting with windows in C [[User:Gumby|Gumby]]<br />
}}<br />
==Daodan stage==<br />
<br />
===July 16, 2009===<br />
<br />
After a break to work on other things, we've started up again.<br />
*ONrGameState_NewCharacter() works<br />
*Added structs for Character and Active Character<br />
<br />
===November 28, 2009===<br />
<br />
*Sent data from client to server, inside Oni. Attempting to recieve data as client causes crashes.<br />
<br />
===November 30, 2009===<br />
<br />
*Started work on network protocol<br />
:Things that work (client to server only...):<br />
:*Name changing<br />
:*Message sending<br />
:*Initial connection packet.<br />
<br />
===December 1, 2009===<br />
<br />
*Fixed crash, client can receive now.<br />
*Fixed packet system.<br />
*Messages are relayed to the whole network<br />
*Client now discards duplicate packets<br />
<br />
===December 2, 2009===<br />
<br />
*Client and server have an initial connection packet exchange<br />
<br />
===December 3-6, 2009===<br />
<br />
*Tested an Internet connection<br />
*Refactored a lot of code. ;)<br />
<br />
===December 7, 2009===<br />
<br />
*Sent keystrokes successfully over LAN.<br />
*Did happy dance.<br />
*Sent keystrokes over Internet<br />
*Taunted at Iritscen.</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Flatline/Dev_Diary&diff=16256Flatline/Dev Diary2009-12-08T00:13:23Z<p>Gumby: </p>
<hr />
<div>This is just gonna be where I put all the stuff that is done. I like having a place to write down stuff.<br />
<br />
Happy {{LOCALDAYNAME}}.<br />
{{Divhide|AutoIt Stage|<br />
==Autoit stage==<br />
<br />
===October 16, 2008===<br />
<br />
====Done====<br />
*GameState Offset<br />
*Character Offsetts<br />
*Key+mouse input offsets<br />
*Turning offset (mostly...)<br />
*Local game linking<br />
*Location coordinates<br />
<br />
====To-Do====<br />
*Finish Changing over to moving other characters instead of just the corresponding Konoko<br />
*Fix glitch involving keyboard attack inputs being broken<br />
*Apply rotation pointers to other characters<br />
<br />
===October 17, 2008===<br />
<br />
====Done (Today)====<br />
*Linked Active+Normal Character structs<br />
*Finished transferring over to pointers and other chracters (including rotation)<br />
*Fixed input glitch<br />
<br />
====To-Do====<br />
*Waiting on Rossy to start on network code.<br />
*Transfer over to C and MP logic stuff.<br />
<br />
===October 18, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Tested, found geyser couldn't run it<br />
*Tested more, found Neo also couldn't run it<br />
*Fixed an issue with not linking to ActiveKonoko's struct<br />
*Fixed a pointer I forgot to make >_<<br />
*Is now working on Neo's computer<br />
<br />
====Testing====<br />
*Gumby - works<br />
*Paradox - works, although attacks aren't working. Probably due to slow processor speed.<br />
*Geyser - '''FIXED''' Laggy, but normal.<br />
*Neo - '''FIXED''' is working now, albiet a bit laggy<br />
*Iritscen - works<br />
<br />
===October 19, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Started network code in C. -[[User:RossyMiles|RossyMiles]]<br />
*Got bored, and implemented a second character, that Window Two can control -[[User:Gumby|Gumby]]<br />
<br />
===Octover 30, 2008===<br />
<br />
*Started experimenting with windows in C [[User:Gumby|Gumby]]<br />
}}<br />
==Daodan stage==<br />
<br />
===July 16, 2009===<br />
<br />
After a break to work on other things, we've started up again.<br />
*ONrGameState_NewCharacter() works<br />
*Added structs for Character and Active Character<br />
<br />
===November 28, 2009===<br />
<br />
*Sent data from client to server, inside Oni. Attempting to recieve data as client causes crashes.<br />
<br />
===November 30, 2009===<br />
<br />
*Started work on network protocol<br />
:Things that work (client to server only...):<br />
:*Name changing<br />
:*Message sending<br />
:*Initial connection packet.<br />
<br />
===December 1, 2009===<br />
<br />
*Fixed crash, client can receive now.<br />
*Fixed packet system.<br />
*Messages are relayed to the whole network<br />
*Client now discards duplicate packets<br />
<br />
===December 2, 2009===<br />
<br />
*Client and server have an initial connection packet exchange<br />
<br />
===December 3-6, 2009===<br />
<br />
*Tested an Internet connection<br />
*Refactored a lot of code. ;)<br />
<br />
===December 7, 2009===<br />
<br />
*Sent keystrokes successfully over LAN.<br />
*Did happy dance.</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=BSL_talk:Manual&diff=16255BSL talk:Manual2009-12-08T00:12:42Z<p>Gumby: </p>
<hr />
<div>Tested this code in bio lab. Loop stops after displaying "riddle 4" for no reason. Strange enough: somethingX isn't declared but the code doesn't crash. Riddle me that. =D --[[User:Paradox-01|Paradox-01]] 16:37, 6 December 2009 (UTC)<br />
<br />
var int riddle_counter = 0;<br />
func main<br />
{<br />
chr_wait_animtype 0 punch<br />
#dmsg "Second test in bio lab."<br />
BSL_chaos<br />
}<br />
<br />
<br />
func '''BSL_chaos'''<br />
{<br />
dmsg "hello?"<br />
<br />
riddle_counter = riddle_counter + 1;<br />
if (riddle_counter eq 1)<br />
{<br />
dmsg "[g.riddle 1]"<br />
}<br />
if (riddle_counter eq 2)<br />
{<br />
dmsg "[g.riddle 2]"<br />
}<br />
if (riddle_counter eq 3)<br />
{<br />
dmsg "[g.riddle 3]"<br />
}<br />
if (riddle_counter eq 4)<br />
{<br />
dmsg "[g.riddle 4]"<br />
}<br />
if (riddle_counter eq 5)<br />
{<br />
dmsg "[g.riddle 5]"<br />
#dmsg "[r.ends here in compound level]"<br />
}<br />
if (riddle_counter eq 6)<br />
{<br />
dmsg "[g.riddle 6]"<br />
}<br />
sleep 60<br />
'''something2 = BSL_chaos'''<br />
'''iterate over something2 using somethingX'''<br />
}<br />
<br />
----<br />
:Wow, interesting. Although I don't think it matters that something2 and somethingX are undeclared, because BSL supports weak syntax. But why does it stop at 4? Hmm.... --[[User:Iritscen|Iritscen]] 17:21, 6 December 2009 (UTC)<br />
<br />
::iterate doesn't really work, so I'm not suprised. :) Not sure about the riddle_counter thing. Does it still break when you use else if? BSL is goofy. :) [[User:Gumby|Gumby]] 10:06, 7 December 2009 (UTC)<br />
:::Did you actually notice what paradox is doing here? riddle_counter is tracking how many times iterate works. So asking if riddle_counter works on its own is kinda silly ;-) Anyway, how sure are we that this is how iterate was meant to be used? I mean, it looks like you're setting an iterator to a function pointer or something, which is sort of weird for any language. Wouldn't iterate have been intended for use with arrays? It seems like all those deprecated keywords -- every, for, iterate, over, repeat, and using -- were meant for arrays. Now if only we knew how to make an array! --[[User:Iritscen|Iritscen]] 11:32, 7 December 2009 (UTC)<br />
::::O_o You are right. Two things to check: See what somethingX is at the end. Try setting SomethingX to a value first. [[User:Gumby|Gumby]] 00:12, 8 December 2009 (UTC)</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=BSL_talk:Manual&diff=16253BSL talk:Manual2009-12-07T10:06:48Z<p>Gumby: wtfedit</p>
<hr />
<div>Tested this code in bio lab. Loop stops after displaying "riddle 4" for no reason. Strange enough: somethingX isn't declared but the code doesn't crash. Riddle me that. =D --[[User:Paradox-01|Paradox-01]] 16:37, 6 December 2009 (UTC)<br />
<br />
var int riddle_counter = 0;<br />
func main<br />
{<br />
chr_wait_animtype 0 punch<br />
#dmsg "Second test in bio lab."<br />
BSL_chaos<br />
}<br />
<br />
<br />
func '''BSL_chaos'''<br />
{<br />
dmsg "hello?"<br />
<br />
riddle_counter = riddle_counter + 1;<br />
if (riddle_counter eq 1)<br />
{<br />
dmsg "[g.riddle 1]"<br />
}<br />
if (riddle_counter eq 2)<br />
{<br />
dmsg "[g.riddle 2]"<br />
}<br />
if (riddle_counter eq 3)<br />
{<br />
dmsg "[g.riddle 3]"<br />
}<br />
if (riddle_counter eq 4)<br />
{<br />
dmsg "[g.riddle 4]"<br />
}<br />
if (riddle_counter eq 5)<br />
{<br />
dmsg "[g.riddle 5]"<br />
#dmsg "[r.ends here in compound level]"<br />
}<br />
if (riddle_counter eq 6)<br />
{<br />
dmsg "[g.riddle 6]"<br />
}<br />
sleep 60<br />
'''something2 = BSL_chaos'''<br />
'''iterate over something2 using somethingX'''<br />
}<br />
<br />
----<br />
:Wow, interesting. Although I don't think it matters that something2 and somethingX are undeclared, because BSL supports weak syntax. But why does it stop at 4? Hmm.... --[[User:Iritscen|Iritscen]] 17:21, 6 December 2009 (UTC)<br />
<br />
::iterate doesn't really work, so I'm not suprised. :) Not sure about the riddle_counter thing. Does it still break when you use else if? BSL is goofy. :) [[User:Gumby|Gumby]] 10:06, 7 December 2009 (UTC)<br />
::http://upload.wikimedia.org/wikipedia/en/0/09/Gorshinriddler.JPG</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=BSL_talk:Manual&diff=16252BSL talk:Manual2009-12-07T10:06:21Z<p>Gumby: </p>
<hr />
<div>Tested this code in bio lab. Loop stops after displaying "riddle 4" for no reason. Strange enough: somethingX isn't declared but the code doesn't crash. Riddle me that. =D --[[User:Paradox-01|Paradox-01]] 16:37, 6 December 2009 (UTC)<br />
<br />
var int riddle_counter = 0;<br />
func main<br />
{<br />
chr_wait_animtype 0 punch<br />
#dmsg "Second test in bio lab."<br />
BSL_chaos<br />
}<br />
<br />
<br />
func '''BSL_chaos'''<br />
{<br />
dmsg "hello?"<br />
<br />
riddle_counter = riddle_counter + 1;<br />
if (riddle_counter eq 1)<br />
{<br />
dmsg "[g.riddle 1]"<br />
}<br />
if (riddle_counter eq 2)<br />
{<br />
dmsg "[g.riddle 2]"<br />
}<br />
if (riddle_counter eq 3)<br />
{<br />
dmsg "[g.riddle 3]"<br />
}<br />
if (riddle_counter eq 4)<br />
{<br />
dmsg "[g.riddle 4]"<br />
}<br />
if (riddle_counter eq 5)<br />
{<br />
dmsg "[g.riddle 5]"<br />
#dmsg "[r.ends here in compound level]"<br />
}<br />
if (riddle_counter eq 6)<br />
{<br />
dmsg "[g.riddle 6]"<br />
}<br />
sleep 60<br />
'''something2 = BSL_chaos'''<br />
'''iterate over something2 using somethingX'''<br />
}<br />
<br />
----<br />
:Wow, interesting. Although I don't think it matters that something2 and somethingX are undeclared, because BSL supports weak syntax. But why does it stop at 4? Hmm.... --[[User:Iritscen|Iritscen]] 17:21, 6 December 2009 (UTC)<br />
<br />
::iterate doesn't really work, so I'm not suprised. :) Not sure about the riddle_counter thing. Does it still break when you use else if? BSL is goofy. :) [[User:Gumby|Gumby]] 10:06, 7 December 2009 (UTC)<br />
http://upload.wikimedia.org/wikipedia/en/0/09/Gorshinriddler.JPG<br />
<gallery><br />
<br />
<gallery><br />
Image:Example.jpg|Caption1<br />
Image:Example.jpg|Caption2<br />
</gallery><br />
<gallery><br />
Image:Example.jpg|Caption1<br />
Image:Example.jpg|Caption2<br />
</gallery><br />
</gallery><br />
<gallery><br />
<br />
<gallery><br />
Image:Example.jpg|Caption1<br />
Image:Example.jpg|Caption2<br />
</gallery><br />
<gallery><br />
Image:Example.jpg|Caption1<br />
Image:Example.jpg|Caption2<br />
</gallery><br />
</gallery></div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Flatline/Dev_Diary&diff=16249Flatline/Dev Diary2009-12-06T11:21:32Z<p>Gumby: </p>
<hr />
<div>This is just gonna be where I put all the stuff that is done. I like having a place to write down stuff.<br />
<br />
Happy {{LOCALDAYNAME}}.<br />
{{Divhide|AutoIt Stage|<br />
==Autoit stage==<br />
<br />
===October 16, 2008===<br />
<br />
====Done====<br />
*GameState Offset<br />
*Character Offsetts<br />
*Key+mouse input offsets<br />
*Turning offset (mostly...)<br />
*Local game linking<br />
*Location coordinates<br />
<br />
====To-Do====<br />
*Finish Changing over to moving other characters instead of just the corresponding Konoko<br />
*Fix glitch involving keyboard attack inputs being broken<br />
*Apply rotation pointers to other characters<br />
<br />
===October 17, 2008===<br />
<br />
====Done (Today)====<br />
*Linked Active+Normal Character structs<br />
*Finished transferring over to pointers and other chracters (including rotation)<br />
*Fixed input glitch<br />
<br />
====To-Do====<br />
*Waiting on Rossy to start on network code.<br />
*Transfer over to C and MP logic stuff.<br />
<br />
===October 18, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Tested, found geyser couldn't run it<br />
*Tested more, found Neo also couldn't run it<br />
*Fixed an issue with not linking to ActiveKonoko's struct<br />
*Fixed a pointer I forgot to make >_<<br />
*Is now working on Neo's computer<br />
<br />
====Testing====<br />
*Gumby - works<br />
*Paradox - works, although attacks aren't working. Probably due to slow processor speed.<br />
*Geyser - '''FIXED''' Laggy, but normal.<br />
*Neo - '''FIXED''' is working now, albiet a bit laggy<br />
*Iritscen - works<br />
<br />
===October 19, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Started network code in C. -[[User:RossyMiles|RossyMiles]]<br />
*Got bored, and implemented a second character, that Window Two can control -[[User:Gumby|Gumby]]<br />
<br />
===Octover 30, 2008===<br />
<br />
*Started experimenting with windows in C [[User:Gumby|Gumby]]<br />
}}<br />
==Daodan stage==<br />
<br />
===July 16, 2009===<br />
<br />
After a break to work on other things, we've started up again.<br />
*ONrGameState_NewCharacter() works<br />
*Added structs for Character and Active Character<br />
<br />
===November 28, 2009===<br />
<br />
*Sent data from client to server, inside Oni. Attempting to recieve data as client causes crashes.<br />
<br />
===November 30, 2009===<br />
<br />
*Started work on network protocol<br />
:Things that work (client to server only...):<br />
:*Name changing<br />
:*Message sending<br />
:*Initial connection packet.<br />
<br />
===December 1, 2009===<br />
<br />
*Fixed crash, client can receive now.<br />
*Fixed packet system.<br />
*Messages are relayed to the whole network<br />
*Client now discards duplicate packets<br />
<br />
===December 2, 2009===<br />
<br />
*Client and server have an initial connection packet exchange<br />
<br />
===December 3-6, 2009===<br />
<br />
*Tested an Internet connection<br />
*Refactored a lot of code. ;)</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Flatline&diff=16245Flatline2009-12-03T05:01:44Z<p>Gumby: </p>
<hr />
<div>{|align=right border=1 cellspacing=0<br />
|http://gumby.oni2.net/Flatline/flatline.png<br />
{|cellspacing=3<br />
!colspan="2"|The Development Team<br />
|-<br />
|'''Head Developer:''' ||align="right" |[[User:Gumby|Gumby]]<br />
|-<br />
|'''Resident Coder:''' ||align="right" | [[User:RossyMiles|RossyMiles]]<br />
|-<br />
|'''Advisors:'''||align="right" |[[User:Geyser|geyser]]<br />
|-<br />
| ||align="right" |[[User:Neo|Neo]]<br />
|-<br />
|}<br />
|}<br />
The Flatline Project is the most recent attempt at Multiplayer for Oni. It will combine the knowledge gleaned from projects such as [[OniPlayer]] and Neo's engine hacking with new techniques of controlling AI characters to create the first working Multiplayer since the early days of Oni's development.<br />
<br />
'''Status:'''<br />
Integrating network code into Oni.<br />
<br />
==Packets==<br />
For now, all packets are UDP, though some of the less time essential packets (messages, commands, etc...) will probably be moved to TCP.<br />
===Structure===<br />
typedef struct {<br />
char id;<br />
int packet_index;<br />
char data[1080]; <br />
} flatline_packet;<br />
*id is an identifier the specific type of packet being sent (message, character sync, initial connection, etc...)<br />
*packet_index is used to protect against duplicate packets. Each packet gets a unique indentifier, if a duplicate is found, the packet is ignored.<br />
*data contains the actual data for the packet, and is typically cast to another struct. The largest struct needed so far is 1080 bytes. In theory, we can go up to 1400 bytes.<br />
<br />
===Connecting===<br />
#Client sends a packet asking to connect to a server<br />
#Server sends a packet back, saying if the client can connect or not, including a string to display if the connection was rejected<br />
#Client either recieves said packet or times out after 15 seconds if no packet is recieved back (sending a new connection request packet every so often before that).<br />
#Server sends basic game info to client, including a packet containing a mock BINACHAR for each player currently connected to the server.<br />
<br />
#Client sends packets containing keystrokes and other commands<br />
#Server sends back xyz\animation\whatever data<br />
<br />
==Maps==<br />
<br />
Probably done through level plugins that use levels 64-127. This has the advantage of being hidden on the level list. These maps would have specialized CHAR\PART\whatever tailored to MP gameplay. Of course a console map change command would need to be implemented.<br />
(win\lose level, and change current level number, through hex overwriting)<br />
<br />
<br />
==Lag Compensation==<br />
Quick and dirty lag compensation might come from "fast-forwarding" a frame for every 17 ms of lag or so. ( 17ms = 1 frame...damn that's short :( ) Compensating for rotation\movement differences will be a bit harder, and require a bit more calculation.<br />
[[Category:All AE mods]][[Category:Unfinished AE mods]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Flatline&diff=16244Flatline2009-12-03T04:47:24Z<p>Gumby: Removed a lot of "duh" stuff. Overhauled packets.</p>
<hr />
<div>{|align=right border=1 cellspacing=0<br />
|http://gumby.oni2.net/Flatline/flatline.png<br />
{|cellspacing=3<br />
!colspan="2"|The Development Team<br />
|-<br />
|'''Head Developer:''' ||align="right" |[[User:Gumby|Gumby]]<br />
|-<br />
|'''Resident Coder:''' ||align="right" | [[User:RossyMiles|RossyMiles]]<br />
|-<br />
|'''Advisors:'''||align="right" |[[User:Geyser|geyser]]<br />
|-<br />
| ||align="right" |[[User:Neo|Neo]]<br />
|-<br />
|}<br />
|}<br />
The Flatline Project is the most recent attempt at Multiplayer for Oni. It will combine the knowledge gleaned from projects such as [[OniPlayer]] and Neo's engine hacking with new techniques of controlling AI characters to create the first working Multiplayer since the early days of Oni's development.<br />
<br />
'''Status:'''<br />
Integrating network code into Oni.<br />
<br />
==Packets==<br />
===Structure===<br />
typedef struct {<br />
char id;<br />
int packet_index;<br />
char data[1080]; <br />
} flatline_packet;<br />
*id is an identifier the specific type of packet being sent (message, character sync, initial connection, etc...)<br />
*packet_index is used to protect against duplicate packets. Each packet gets a unique indentifier, if a duplicate is found, the packet is ignored.<br />
*data contains the actual data for the packet, and is typically cast to another struct. The largest struct needed so far is 1080 bytes. In theory, we can go up to 1400 bytes.<br />
<br />
===Connecting===<br />
#Client sends a packet asking to connect to a server<br />
#Server sends a packet back, saying if the client can connect or not, including a string to display if the connection was rejected<br />
#Client either recieves said packet or times out after 15 seconds if no packet is recieved back (sending a new connection request packet every so often before that).<br />
#Server sends basic game info to client, including a packet containing a mock BINACHAR for each player currently connected to the server.<br />
<br />
#Client sends packets containing keystrokes and other commands<br />
#Server sends back xyz\animation\whatever data<br />
<br />
==Maps==<br />
<br />
Probably done through level plugins that use levels 64-127. This has the advantage of being hidden on the level list. These maps would have specialized CHAR\PART\whatever tailored to MP gameplay. Of course a console map change command would need to be implemented.<br />
(win\lose level, and change current level number, through hex overwriting)<br />
<br />
<br />
==Lag Compensation==<br />
Quick and dirty lag compensation might come from "fast-forwarding" a frame for every 17 ms of lag or so. ( 17ms = 1 frame...damn that's short :( ) Compensating for rotation\movement differences will be a bit harder, and require a bit more calculation.<br />
[[Category:All AE mods]][[Category:Unfinished AE mods]]</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Flatline/Dev_Diary&diff=16243Flatline/Dev Diary2009-12-02T10:35:40Z<p>Gumby: </p>
<hr />
<div>This is just gonna be where I put all the stuff that is done. I like having a place to write down stuff.<br />
<br />
Happy {{LOCALDAYNAME}}.<br />
{{Divhide|AutoIt Stage|<br />
==Autoit stage==<br />
<br />
===October 16, 2008===<br />
<br />
====Done====<br />
*GameState Offset<br />
*Character Offsetts<br />
*Key+mouse input offsets<br />
*Turning offset (mostly...)<br />
*Local game linking<br />
*Location coordinates<br />
<br />
====To-Do====<br />
*Finish Changing over to moving other characters instead of just the corresponding Konoko<br />
*Fix glitch involving keyboard attack inputs being broken<br />
*Apply rotation pointers to other characters<br />
<br />
===October 17, 2008===<br />
<br />
====Done (Today)====<br />
*Linked Active+Normal Character structs<br />
*Finished transferring over to pointers and other chracters (including rotation)<br />
*Fixed input glitch<br />
<br />
====To-Do====<br />
*Waiting on Rossy to start on network code.<br />
*Transfer over to C and MP logic stuff.<br />
<br />
===October 18, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Tested, found geyser couldn't run it<br />
*Tested more, found Neo also couldn't run it<br />
*Fixed an issue with not linking to ActiveKonoko's struct<br />
*Fixed a pointer I forgot to make >_<<br />
*Is now working on Neo's computer<br />
<br />
====Testing====<br />
*Gumby - works<br />
*Paradox - works, although attacks aren't working. Probably due to slow processor speed.<br />
*Geyser - '''FIXED''' Laggy, but normal.<br />
*Neo - '''FIXED''' is working now, albiet a bit laggy<br />
*Iritscen - works<br />
<br />
===October 19, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Started network code in C. -[[User:RossyMiles|RossyMiles]]<br />
*Got bored, and implemented a second character, that Window Two can control -[[User:Gumby|Gumby]]<br />
<br />
===Octover 30, 2008===<br />
<br />
*Started experimenting with windows in C [[User:Gumby|Gumby]]<br />
}}<br />
==Daodan stage==<br />
<br />
===July 16, 2009===<br />
<br />
After a break to work on other things, we've started up again.<br />
*ONrGameState_NewCharacter() works<br />
*Added structs for Character and Active Character<br />
<br />
===November 28, 2009===<br />
<br />
*Sent data from client to server, inside Oni. Attempting to recieve data as client causes crashes.<br />
<br />
===November 30, 2009===<br />
<br />
*Started work on network protocol<br />
:Things that work (client to server only...):<br />
:*Name changing<br />
:*Message sending<br />
:*Initial connection packet.<br />
<br />
===December 1, 2009===<br />
<br />
*Fixed crash, client can receive now.<br />
*Fixed packet system.<br />
*Messages are relayed to the whole network<br />
*Client now discards duplicate packets<br />
<br />
===December 2, 2009===<br />
<br />
*Client and server have an initial connection packet exchange</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Flatline/Dev_Diary&diff=16242Flatline/Dev Diary2009-12-02T07:05:27Z<p>Gumby: </p>
<hr />
<div>This is just gonna be where I put all the stuff that is done. I like having a place to write down stuff.<br />
<br />
Happy {{LOCALDAYNAME}}.<br />
{{Divhide|AutoIt Stage|<br />
==Autoit stage==<br />
<br />
===October 16, 2008===<br />
<br />
====Done====<br />
*GameState Offset<br />
*Character Offsetts<br />
*Key+mouse input offsets<br />
*Turning offset (mostly...)<br />
*Local game linking<br />
*Location coordinates<br />
<br />
====To-Do====<br />
*Finish Changing over to moving other characters instead of just the corresponding Konoko<br />
*Fix glitch involving keyboard attack inputs being broken<br />
*Apply rotation pointers to other characters<br />
<br />
===October 17, 2008===<br />
<br />
====Done (Today)====<br />
*Linked Active+Normal Character structs<br />
*Finished transferring over to pointers and other chracters (including rotation)<br />
*Fixed input glitch<br />
<br />
====To-Do====<br />
*Waiting on Rossy to start on network code.<br />
*Transfer over to C and MP logic stuff.<br />
<br />
===October 18, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Tested, found geyser couldn't run it<br />
*Tested more, found Neo also couldn't run it<br />
*Fixed an issue with not linking to ActiveKonoko's struct<br />
*Fixed a pointer I forgot to make >_<<br />
*Is now working on Neo's computer<br />
<br />
====Testing====<br />
*Gumby - works<br />
*Paradox - works, although attacks aren't working. Probably due to slow processor speed.<br />
*Geyser - '''FIXED''' Laggy, but normal.<br />
*Neo - '''FIXED''' is working now, albiet a bit laggy<br />
*Iritscen - works<br />
<br />
===October 19, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Started network code in C. -[[User:RossyMiles|RossyMiles]]<br />
*Got bored, and implemented a second character, that Window Two can control -[[User:Gumby|Gumby]]<br />
<br />
===Octover 30, 2008===<br />
<br />
*Started experimenting with windows in C [[User:Gumby|Gumby]]<br />
}}<br />
==Daodan stage==<br />
<br />
===July 16, 2009===<br />
<br />
After a break to work on other things, we've started up again.<br />
*ONrGameState_NewCharacter() works<br />
*Added structs for Character and Active Character<br />
<br />
===November 28, 2009===<br />
<br />
*Sent data from client to server, inside Oni. Attempting to recieve data as client causes crashes.<br />
<br />
===November 30, 2009===<br />
<br />
*Started work on network protocol<br />
:Things that work (client to server only...):<br />
:*Name changing<br />
:*Message sending<br />
:*Initial connection packet.<br />
<br />
===December 1, 2009===<br />
<br />
*Fixed crash, client can receive now.<br />
*Fixed packet system.<br />
*Messages are relayed to the whole network<br />
*Client now discards duplicate packets</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Flatline/Dev_Diary&diff=16239Flatline/Dev Diary2009-12-01T10:42:56Z<p>Gumby: </p>
<hr />
<div>This is just gonna be where I put all the stuff that is done. I like having a place to write down stuff.<br />
<br />
Happy {{LOCALDAYNAME}}.<br />
{{Divhide|AutoIt Stage|<br />
==Autoit stage==<br />
<br />
===October 16, 2008===<br />
<br />
====Done====<br />
*GameState Offset<br />
*Character Offsetts<br />
*Key+mouse input offsets<br />
*Turning offset (mostly...)<br />
*Local game linking<br />
*Location coordinates<br />
<br />
====To-Do====<br />
*Finish Changing over to moving other characters instead of just the corresponding Konoko<br />
*Fix glitch involving keyboard attack inputs being broken<br />
*Apply rotation pointers to other characters<br />
<br />
===October 17, 2008===<br />
<br />
====Done (Today)====<br />
*Linked Active+Normal Character structs<br />
*Finished transferring over to pointers and other chracters (including rotation)<br />
*Fixed input glitch<br />
<br />
====To-Do====<br />
*Waiting on Rossy to start on network code.<br />
*Transfer over to C and MP logic stuff.<br />
<br />
===October 18, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Tested, found geyser couldn't run it<br />
*Tested more, found Neo also couldn't run it<br />
*Fixed an issue with not linking to ActiveKonoko's struct<br />
*Fixed a pointer I forgot to make >_<<br />
*Is now working on Neo's computer<br />
<br />
====Testing====<br />
*Gumby - works<br />
*Paradox - works, although attacks aren't working. Probably due to slow processor speed.<br />
*Geyser - '''FIXED''' Laggy, but normal.<br />
*Neo - '''FIXED''' is working now, albiet a bit laggy<br />
*Iritscen - works<br />
<br />
===October 19, 2008===<br />
<br />
====Done (Today)====<br />
<br />
*Started network code in C. -[[User:RossyMiles|RossyMiles]]<br />
*Got bored, and implemented a second character, that Window Two can control -[[User:Gumby|Gumby]]<br />
<br />
===Octover 30, 2008===<br />
<br />
*Started experimenting with windows in C [[User:Gumby|Gumby]]<br />
}}<br />
==Daodan stage==<br />
<br />
===July 16, 2009===<br />
<br />
After a break to work on other things, we've started up again.<br />
*ONrGameState_NewCharacter() works<br />
*Added structs for Character and Active Character<br />
<br />
===November 28, 2009===<br />
<br />
*Sent data from client to server, inside Oni. Attempting to recieve data as client causes crashes.<br />
<br />
===November 30, 2009===<br />
<br />
*Started work on network protocol<br />
:Things that work (client to server only...):<br />
:*Name changing<br />
:*Message sending<br />
:*Initial connection packet.<br />
<br />
===December 1, 2009===<br />
<br />
*Fixed crash, client can receive now.</div>Gumbyhttps://wiki.oni2.net/w/index.php?title=Flatline&diff=16237Flatline2009-11-30T23:14:20Z<p>Gumby: </p>
<hr />
<div>{|align=right border=1 cellspacing=0<br />
|http://gumby.oni2.net/Flatline/flatline.png<br />
{|cellspacing=3<br />
!colspan="2"|The Development Team<br />
|-<br />
|'''Head Developer:''' ||align="right" |[[User:Gumby|Gumby]]<br />
|-<br />
|'''Resident Coder:''' ||align="right" | [[User:RossyMiles|RossyMiles]]<br />
|-<br />
|'''Advisors:'''||align="right" |[[User:Geyser|geyser]]<br />
|-<br />
| ||align="right" |[[User:Neo|Neo]]<br />
|-<br />
|}<br />
|}<br />
The Flatline Project is the most recent attempt at Multiplayer for Oni. It will combine the knowledge gleaned from projects such as [[OniPlayer]] and Neo's engine hacking with new techniques of controlling AI characters to create the first working Multiplayer since the early days of Oni's development.<br />
<br />
'''Status:'''<br />
Integrating network code into Oni.<br />
<br />
==Player to Player Communication==<br />
[[Image:Flatline_1.PNG|right|thumb|300px|A mock up of the chat+score system]]<br />
===Scores===<br />
<br />
<br />
Console write, functionality already in Daodan.<br />
<br />
===Chat===<br />
<br />
Chat will probably be handled through an popup input through the daodan.<br />
<br />
==Internal Communication==<br />
<br />
===Player to Server===<br />
<br />
*Key bitset<br />
*Mouse X\Y<br />
<br />
===Server to Player===<br />
<br />
*Bitsets+XY for all other players<br />
*XYZ location <br />
*Rotation<br />
<br />
<br />
==Dev Mode+Cheats==<br />
<br />
Only the server itself would have dev mode enabled. Admins would be able to send commands to the server through chat. All players have cheats disabled. (Enforceable through Daodan etc.)<br />
<br />
==Packets==<br />
;Warning, this isn't the most thought out of sections.<br />
<br />
'''PPPPYYZZZZ…'''<br />
<br />
'''PPPP''' = Destination players. Hex =>Binary etc If player limit was kept at 6, only one byte would be needed. Any more than that requires one more byte. Player => Server communication uses 0000 Server=> All players uses FFFF <br />
{|align=right<br />
|http://gumby.oni2.net/Flatline/flatline2.PNG<br />
|}<br />
'''YY''' =.Datatype <br />
*01 = Dev console command <br />
*02 = Keyboard bitset+XY<br />
*03 = XYZ position<br />
*04 = etc.<br />
<br />
'''ZZZZ…''' = Data used with YY.<br />
<br />
'''Example:'''<br />
<br />
FFFF 01 646D7367282248656C6C6f20576f726C642229<br />
<br />
Server is sending to all players to execute the Dev console command “dmsg("Hello World")”<br />
<br />
==Cycling==<br />
<br />
===Class Changing===<br />
<br />
As dev mode is disabled (along with all cheats), we can use the Daodan to detect F8 being pressed, and not worry about the game also using that input.<br />
<br />
At connection, the server would send a list of available characters. Pressing F8 in game (if allowed by server) sends out a dev mode command to all players to “chr_set_class player nextmodel”. Player being the player name or number, and nextmodel being pulled from the list.<br />
<br />
===Gun Cycling===<br />
<br />
If available (and implemented) gun cycling would work much like the above.<br />
<br />
==Maps==<br />
<br />
Probably done through level plugins that use levels 64-127. This has the advantage of being hidden on the level list. These maps would have specialized CHAR\PART\whatever tailored to MP gameplay. Of course a console map change command would need to be implemented.<br />
(win\lose level, and change current level number, through hex overwriting)<br />
<br />
<br />
==Lag Compensation==<br />
Quick and dirty lag compensation might come from "fast-forwarding" a frame for every 17 ms of lag or so. ( 17ms = 1 frame...damn that's short :( ) Compensating for rotation\movement differences will be a bit harder, and require a bit more calculation.<br />
[[Category:All AE mods]][[Category:Unfinished AE mods]]</div>Gumby