OBD:AISA: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(whatever)
(took a moment to check whether ONWC links work at all)
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{OBD_File_Header | type=AISA | prev=AGQR | next=AITR | name=AI Character Setup Array | family=Level | desc=The '''AISA''' contains character creation information for the chr_create script command. | align=center}}
{{OBD_File_Header | type=AISA | prev=AGQR | next=AITR | name=AI Character Setup Array | family=Level | onistuff=aisa | align=center}}




Line 17: Line 17:
{{OBDtr | 0x024 | int16    |C8FFFF| 00 00      | 0    | ignored }}
{{OBDtr | 0x024 | int16    |C8FFFF| 00 00      | 0    | ignored }}
{{OBDtr | 0x026 | int16    |FFC8FF| 00 00      | 0    | team ID (see [[CHAR]] for possible values) }}
{{OBDtr | 0x026 | int16    |FFC8FF| 00 00      | 0    | team ID (see [[CHAR]] for possible values) }}
{{OBDtr | 0x028 | link    |FFC800| 01 DF 03 00 | 991  | link to [[OBD:ONCC|00991-ONCCkonoko_generic]] }}
{{OBDtr | 0x028 | link    |FFC800| 01 DF 03 00 | 991  | link to [[OBD:ONCC|00991-ONCCkonoko_generic]]; must be a valid ONCC; replaced with first available ONCC if missing }}
{{OBDtr2| 0x02C | char[32] |C87C64| unused            | ignored  }}
{{OBDtr2| 0x02C | char[32] |C87C64| unused            | ignored  }}
{{OBDtr | 0x04C | int32    |C800C8| 00 00 00 00 | 0    | ignored  }}
{{OBDtr | 0x04C | int32    |C800C8| 00 00 00 00 | 0    | ignored  }}
{{OBDtr2| 0x050 | char[32] |B0C3D4| intro              | name of the function which is called up when Oni spawns the character }}
{{OBDtr2| 0x050 | char[32] |B0C3D4| intro              | script event called when character is created; see [[CHAR]] }}
{{OBDtr2| 0x070 | char[32] |E7CEA5| unused            | name of the function which is called up when the character dies }}
{{OBDtr2| 0x070 | char[32] |E7CEA5| unused            | script event called when the character dies; see [[CHAR]]... }}
{{OBDtr2| 0x090 | char[32] |FFDDDD| unused            | name of the function which is called up when the character notices the player }}
{{OBDtr2| 0x090 | char[32] |FFDDDD| unused            | script event called when the character first notices an enemy }}
{{OBDtr2| 0x0B0 | char[32] |64AAAA| unused            | alarm function name; see [[CHAR]] }}
{{OBDtr2| 0x0B0 | char[32] |64AAAA| unused            | script event called when the character is alarmed (group event)}}
{{OBDtr2| 0x0D0 | char[32] |EBEBEB| unused            | name of the function, which is called up when someone hits the character the first time }}
{{OBDtr2| 0x0D0 | char[32] |EBEBEB| unused            | script event called when the character is hurt for the first time }}
{{OBDtr2| 0x0F0 | char[32] |8C8CCC| unused            | name of the function, which is called up when the health of the character is equal 1 }}
{{OBDtr2| 0x0F0 | char[32] |8C8CCC| unused            | script event called when the health of the character reaches 1 for the first time }}
{{OBDtr2| 0x110 | char[32] |FF00C8| unused            | name of the function, which is called up when the character reloads its weapon with its last ammo/cell; works only, if the character has some ammo/cells when Oni spawns it }}
{{OBDtr2| 0x110 | char[32] |FF00C8| unused            | script event called when the character uses up its initial ammo clips or cells }}
{{OBDtr2| 0x130 | char[32] |F0F096| unused            | no path function name; see [[CHAR]] }}
{{OBDtr2| 0x130 | char[32] |F0F096| unused            | script event supposed to be called when the character can't pathfind }}
{{OBDtr | 0x150 | link    |00C864| 00 00 00 00 |unused| link to an [[OBD:ONWC|ONWC]] file }}
{{OBDtr | 0x150 | link    |00C864| 00 00 00 00 |unused| link to an [[OBD:ONWC|ONWC]] file }}
{{OBDtr | 0x154 | int16    |00C8FF| 00 00      | 0    | weapon ammo }}
{{OBDtr | 0x154 | int16    |00C8FF| 00 00      | 0    | weapon ammo (in %?) }}
{{OBDtr | 0x156 | int16    |C80040| FF FF      | -1  | ignored  }}
{{OBDtr | 0x156 | int16    |C80040| FF FF      | -1  | ignored  }}
{{OBDtr | 0x158 | int16    |FFCD96| 00 00      | 0    | ignored  }}
{{OBDtr | 0x158 | int16    |FFCD96| 00 00      | 0    | ignored  }}
Line 37: Line 37:
{{OBDtr | 0x15F | int8    |C8C864| 00          | 0    | ignored  }}
{{OBDtr | 0x15F | int8    |C8C864| 00          | 0    | ignored  }}
|}
|}
;Player character
:If the index is 0, the character is spawned as a player character, stealing controls (but not focus) from the current player. Focus is transferred as well if the old player is deleted ''immediately before'' the new one is created.
;Automatic naming
:If the name field is left blank, the engine will generate an automatic name "ai_#", where # is the runtime ID of the character (first empty slot in memory at the time of the spawning). The ID is not zero-padded: "ai_0, "ai_1", ...
;Missing [[FLAG]] issue
:If the flag ID requested by [[chr_create]] is obsolete or otherwise unavailable, chr_create will fail with a message to the console.
;Missing [[ONCC]] issue
:Missing ONCCs are resolved by picking the first available ONCC (in ASCII order, i.e., '''SH_generic''' comes before '''barabus'''). In Vanilla Oni this only happens once (for AISA): "lab" scripts use <tt>chr_create 1004</tt> in the bomber cutscene (for the cop who talks to Konoko on the radio): the missing ONCC TCL_2 is luckily resolved as the close-enough TCTF_lite_1. In the [[Anniversary Edition]], the custom ONCC Cop_generic was added to take care of this situation (both to prevent the Vanilla "lab" logic from resolving to '''CopfemA1''' and to give some screen time to TRBSTCL_2, which is present in Vanilla Oni, but somehow doesn't have a matching ONCC).
:If the eventually used ONCC is invalid (e.g., if it has a missing TRAC or if its ONCV is missing from ONVL), Oni will crash. This applies to [[CHAR]] a.k.a. [[ai2_spawn]], [[AISA]] a.k.a. [[chr_create]], and [[ai2_chump]] (hardcoded to spawn ONCCstriker_easy_1; in Vanilla Oni there are three levels where ai2_chump's ONCC is resolved due to a missing striker_easy_1: to CopfemA1 in '''state''' and '''tctf_II''', and to TCTF_swat_blackops_1 in '''compound'''; in '''neuro''' the full set of Strikers is available, as well as comguys, the mad bomber, and Muro).
;Missing [[ONWC]] issue
:Some of the vanilla AISA entries contain a link to an invalid (obsolete) ONWC: two Strikers in '''tctf''' (in the cutscene where Barabas kidnaps Shinatama) have a link to ONWCp_rifle; there are eleven more AISA characters (not used in Vanilla scripts) who have links to ONWCautopistol, ONWCsmg, ONWCp_rifle and ONWCp_stream. The engine resolves such bad links by not giving any weapon to the character. (There are no valid ONWC links in Vanilla AISA, but providing a valid link in a modified AISA shows that the weapon field is interpreted by the engine, unlike other inventory fields which are ignored.)
;Inventory and script events.
:Since nearly all the inventory fields are ignored, AISA characters can't be created with inventory items, and so the "out of ammo" script function is irrelevant. The inventory can still be set with scripting (items that the character can use, not what they drop when killed). The "no path" function doesn't seem to work, neither does it seem to work for [[CHAR]].




{{OBD_File_Footer | type=AISA | prev=AGQR | next=AITR | name=AI Character Setup Array | family=Level}}


{{OBD_File_Footer | type=ASIA | prev=AGQR | next=AITR | name=AI Character Setup Array | family=Level}}
{{OBD}}

Latest revision as of 22:03, 8 September 2020

ONI BINARY DATA
AGQR << Other file types >> AITR
AISA : AI Character Setup Array
switch to XML:AISA page
Overview @ Oni Stuff
OBD.png


Aisa a.gif


Offset Type Raw Hex Value Description
0x000 res_id 01 9C 02 00 668 00668-level3_scripts.AISA
0x004 lev_id 01 00 00 06 3 level 3
0x008 char[22]   dead unused; you can set all to whatever you want
0x01E int16 0D 00 13 array size
First element (black outline)
0x000 char[32] unused name of AISA character
0x020 int16 00 00 0 ID of the character, which you can spawn with the script command chr_create
0x022 int16 00 00 0 flag where character is spawned; must be a valid flag ID (from the BINACJBOFlag collection)
0x024 int16 00 00 0 ignored
0x026 int16 00 00 0 team ID (see CHAR for possible values)
0x028 link 01 DF 03 00 991 link to 00991-ONCCkonoko_generic; must be a valid ONCC; replaced with first available ONCC if missing
0x02C char[32] unused ignored
0x04C int32 00 00 00 00 0 ignored
0x050 char[32] intro script event called when character is created; see CHAR
0x070 char[32] unused script event called when the character dies; see CHAR...
0x090 char[32] unused script event called when the character first notices an enemy
0x0B0 char[32] unused script event called when the character is alarmed (group event)
0x0D0 char[32] unused script event called when the character is hurt for the first time
0x0F0 char[32] unused script event called when the health of the character reaches 1 for the first time
0x110 char[32] unused script event called when the character uses up its initial ammo clips or cells
0x130 char[32] unused script event supposed to be called when the character can't pathfind
0x150 link 00 00 00 00 unused link to an ONWC file
0x154 int16 00 00 0 weapon ammo (in %?)
0x156 int16 FF FF -1 ignored
0x158 int16 00 00 0 ignored
0x15A int16 00 00 0 ignored
0x15C int16 00 00 0 ignored
0x15E int8 00 0 ignored
0x15F int8 00 0 ignored
Player character
If the index is 0, the character is spawned as a player character, stealing controls (but not focus) from the current player. Focus is transferred as well if the old player is deleted immediately before the new one is created.
Automatic naming
If the name field is left blank, the engine will generate an automatic name "ai_#", where # is the runtime ID of the character (first empty slot in memory at the time of the spawning). The ID is not zero-padded: "ai_0, "ai_1", ...
Missing FLAG issue
If the flag ID requested by chr_create is obsolete or otherwise unavailable, chr_create will fail with a message to the console.
Missing ONCC issue
Missing ONCCs are resolved by picking the first available ONCC (in ASCII order, i.e., SH_generic comes before barabus). In Vanilla Oni this only happens once (for AISA): "lab" scripts use chr_create 1004 in the bomber cutscene (for the cop who talks to Konoko on the radio): the missing ONCC TCL_2 is luckily resolved as the close-enough TCTF_lite_1. In the Anniversary Edition, the custom ONCC Cop_generic was added to take care of this situation (both to prevent the Vanilla "lab" logic from resolving to CopfemA1 and to give some screen time to TRBSTCL_2, which is present in Vanilla Oni, but somehow doesn't have a matching ONCC).
If the eventually used ONCC is invalid (e.g., if it has a missing TRAC or if its ONCV is missing from ONVL), Oni will crash. This applies to CHAR a.k.a. ai2_spawn, AISA a.k.a. chr_create, and ai2_chump (hardcoded to spawn ONCCstriker_easy_1; in Vanilla Oni there are three levels where ai2_chump's ONCC is resolved due to a missing striker_easy_1: to CopfemA1 in state and tctf_II, and to TCTF_swat_blackops_1 in compound; in neuro the full set of Strikers is available, as well as comguys, the mad bomber, and Muro).
Missing ONWC issue
Some of the vanilla AISA entries contain a link to an invalid (obsolete) ONWC: two Strikers in tctf (in the cutscene where Barabas kidnaps Shinatama) have a link to ONWCp_rifle; there are eleven more AISA characters (not used in Vanilla scripts) who have links to ONWCautopistol, ONWCsmg, ONWCp_rifle and ONWCp_stream. The engine resolves such bad links by not giving any weapon to the character. (There are no valid ONWC links in Vanilla AISA, but providing a valid link in a modified AISA shows that the weapon field is interpreted by the engine, unlike other inventory fields which are ignored.)
Inventory and script events.
Since nearly all the inventory fields are ignored, AISA characters can't be created with inventory items, and so the "out of ammo" script function is irrelevant. The inventory can still be set with scripting (items that the character can use, not what they drop when killed). The "no path" function doesn't seem to work, neither does it seem to work for CHAR.


ONI BINARY DATA
AGQR << Other file types >> AITR
AISA : AI Character Setup Array
Level file