XML:AISA: Difference between revisions

From OniGalore
Jump to navigation Jump to search
mNo edit summary
m (putting nav header parameters in more logical order (some already are this way))
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{XML_File_Header | type=AISA | prev=AGQR | next=AITR | name=AI Character Setup Array | family=Generic | align=center}}
{{XML_File_Header | prev=WPge | type=AISA | next=AKEV | name=AI Character Setup Array}}
 
{| style="margin-left:auto; margin-right:auto;"
| The xml code on this page is based on onisplit '''v0.9.61.0'''
|}
 


__TOC__


'''general information'''
===General information===
* AISAlevel'''''N'''''_scripts.oni is level specific. (It can be found in edition/GameDataFolder/level'''''N'''''_... )
* The XML code on this page is based on OniSplit '''v0.9.61.0'''.
* AISA is still used for a few cutscene characters, even though [[OBD_talk:BINA/OBJC/CHAR#XML|BINACJBOCharacters]] has made it redundant.
* AISAlevel'''''N'''''_scripts.oni is level specific (it can be found in AE/AEInstaller/vanilla/level'''N'''_Final.dat).
* if you upload an AE package containing an AISA file include also the corresponding [[XML:ONLV|ONLV]] or else Oni will crash
* AISA is still used for a few cutscene characters, even though [[XML:BINA/OBJC/CHAR|BINACJBOCharacters]] has made it redundant.
 
* If you make an AE package containing an AISA file, you must also include the corresponding [[XML:ONLV|ONLV]] or else Oni will crash.
 
'''XML structure'''


===File structure===
  <?xml version="1.0" encoding="utf-8"?>
  <?xml version="1.0" encoding="utf-8"?>
  <Oni>
  <Oni>
Line 49: Line 44:
             '''<font color="#0A0"></AISACharacter></font>'''
             '''<font color="#0A0"></AISACharacter></font>'''


 
===Tags===
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
|valign=top| <?xml version="1.0" encoding="utf-8"?>
|valign=top| <?xml version="1.0" encoding="utf-8"?>
|valign=top| string
|valign=top| string
| There's no reason to change this.
| there's no reason to change this
|-
|-
|valign=top| <Oni>
|valign=top| <Oni>
Line 65: Line 60:
|valign=top| <AISA id="0">
|valign=top| <AISA id="0">
|valign=top| integer
|valign=top| integer
| instance id, don't change it
| instance id, do not change
|-
|-
|valign=top| <Characters>
|valign=top| <Characters>
Line 81: Line 76:
|valign=top| <ScriptId>
|valign=top| <ScriptId>
|valign=top| integer
|valign=top| integer
| ID of the character, which you can spawn with the script command chr_create.
| ID of the character, which you can spawn with the scripting command "chr_create"




;Player character
;Player character


If the Id 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.
If the ID 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.




Line 95: Line 90:
|valign=top| <FlagId>
|valign=top| <FlagId>
|valign=top| integer
|valign=top| integer
| flag where character is spawned; must be a valid flag ID (from the BINACJBOFlag collection)
| flag where character is spawned; must be a valid flag ID (from the BINACJBOFlag list)


In the level Atmospheric Conversion Center (exterior) Bungie used [[OBD_talk:FILM|FILM]] files to teleport AI Konoko and Griffin.
In the level Atmospheric Conversion Center (exterior), Bungie used [[XML:FILM|FILM]] files to teleport AI Konoko and Griffin.




;Missing [[OBD_talk:BINA/OBJC/FLAG|FLAG]] issue
;Missing [[XML:BINA/OBJC/FLAG|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.
If the flag ID requested by "chr_create" is obsolete or otherwise unavailable, "chr_create" will fail with a message to the console.
|-
|-
|valign=top| <Flags>
|valign=top| <Flags>
Line 130: Line 125:




;Missing [[OBD_talk:ONCC|ONCC]] issue
;Missing [[XML:ONCC|ONCC]] issue


Missing ONCCs are resolved by picking the first available 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 [[OBD_talk:BINA/OBJC/CHAR#XML|CHAR]] a.k.a. ai2_spawn, AISA a.k.a. chr_create, and ai2_chump (hardcoded to spawn ONCCstriker_easy_1).
Missing ONCCs are resolved by picking the first available 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 [[XML:BINA/OBJC/CHAR|CHAR]] a.k.a. "ai2_spawn", AISA a.k.a. "chr_create", and "ai2_chump" (hardcoded to spawn ONCCstriker_easy_1).
|-
|-
|valign=top| <Scripts>
|valign=top| <Scripts>
Line 148: Line 143:
;Inventory and script events.
;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 [[OBD_talk:BINA/OBJC/CHAR#XML|CHAR]].
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 NoPath function doesn't seem to work, neither does it seem to work for [[XML:BINA/OBJC/CHAR|CHAR]].
|-
|-
|valign=top| <WeaponClass>
|valign=top| <WeaponClass>
Line 160: Line 155:
: ONWCw4_psm (phase stream projector)
: ONWCw4_psm (phase stream projector)
: ONWCw5_sbg (super ball gun)
: ONWCw5_sbg (super ball gun)
: ONWCw6_vdg (shocker)
: ONWCw6_vdg (van de graaff pistol)
: ONWCw7_scc (scram cannon (mini-rockets))
: ONWCw7_scc (scram cannon (mini-rockets))
: ONWCw8_mbo (mercury bow)
: ONWCw8_mbo (mercury bow)
: ONWCw9_scr (screamer gun)
: ONWCw9_scr (screamer gun)
: ONWCw10_sni (Mukade's firework)
: ONWCw10_sni (Mukade's fireball)
: ONWCw11_ba1 (Barabas' gun)
: ONWCw11_ba1 (Barabas' gun)
: ONWCw12_ba2 (-)
: ONWCw12_ba2 (-)
Line 172: Line 167:
| percentage; 0 - empty, 100 - fully loaded ?
| percentage; 0 - empty, 100 - fully loaded ?
|}
|}
{{XML}}

Latest revision as of 16:54, 27 March 2021

AISA : AI Character Setup Array
XML modding tips
  • See HERE to start learning about XML modding.
  • See HERE if you are searching for information on how to handle object coordinates.
  • See HERE for some typical modding errors and their causes.
XML.png
XML

WPge << Other file types >> AKEV

switch to OBD page

General information

  • The XML code on this page is based on OniSplit v0.9.61.0.
  • AISAlevelN_scripts.oni is level specific (it can be found in AE/AEInstaller/vanilla/levelN_Final.dat).
  • AISA is still used for a few cutscene characters, even though BINACJBOCharacters has made it redundant.
  • If you make an AE package containing an AISA file, you must also include the corresponding ONLV or else Oni will crash.

File structure

<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <AISA id="0">
       <Characters>
       [...]
       </Characters>
   </AISA>
</Oni>

[...] means at least one character. Paste all character data into there (this includes <AISACharacter> and </AISACharacter> tag).

example

           <AISACharacter>
               <Name></Name>
               <ScriptId>1000</ScriptId>
               <FlagId>100</FlagId>
               <Flags></Flags>
               <Team>Konoko</Team>
               <Class>ONCCgriffin_generic</Class>
               <Scripts>
                   <Spawn></Spawn>
                   <Die></Die>
                   <Combat></Combat>
                   <Alarm></Alarm>
                   <Hurt></Hurt>
                   <Defeated></Defeated>
                   <OutOfAmmo></OutOfAmmo>
                   <NoPath></NoPath>
               </Scripts>
               <WeaponClass></WeaponClass>
               <Ammo>0</Ammo>
           </AISACharacter>

Tags

XML tag Content type Description
<?xml version="1.0" encoding="utf-8"?> string there's no reason to change this
<Oni> -
<AISA id="0"> integer instance id, do not change
<Characters> -
<AISACharacter> - start tag of a character data
<Name> char[32] name of AISA character
<ScriptId> integer ID of the character, which you can spawn with the scripting command "chr_create"


Player character

If the ID 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", ...

<FlagId> integer flag where character is spawned; must be a valid flag ID (from the BINACJBOFlag list)

In the level Atmospheric Conversion Center (exterior), Bungie used FILM files to teleport AI Konoko and Griffin.


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.

<Flags> flag these flags can be also found via onisplit -help enums
AI
AutoFreeze
Neutral
TurnGuard
<Team> flag these flags can be also found via onisplit -help enums
Konoko
TCTF
Syndicate
Neutral
SecurityGuard
RogueKonoko
Switzerland
SyndicateAccessory
<Class> link must be a valid ONCC; replaced with first available ONCC if missing
ONCCname (without file suffix .oni)


Missing ONCC issue

Missing ONCCs are resolved by picking the first available 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).

<Scripts> char[32] BSL functions
<Spawn> (called when character is spawned)
<Die> (called when character dies (health reaches 0); can work multiple times)
<Combat> (called when character notices an enemy; works only once)
<Alarm> (called when character is alarmed)
<Hurt> (called when character is hurt for the first time; works only once)
<Defeated> (called when character is "defeated" (health reaches 1); works only once)
<OutOfAmmo> (called when character runs out of ammo (reloads a weapon with the last clip/cell); works only once, and the character must have the ammo at spawn-time)
<NoPath> (should be called when a character has trouble pathfinding, but isn't)
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 NoPath function doesn't seem to work, neither does it seem to work for CHAR.

<WeaponClass> link ONWCname (without file suffix .oni)

Original weapon classes:

ONWCw1_tap (TCTF pistol)
ONWCw2_sap (Syndicate uzi)
ONWCw3_phr (plasma rifle)
ONWCw4_psm (phase stream projector)
ONWCw5_sbg (super ball gun)
ONWCw6_vdg (van de graaff pistol)
ONWCw7_scc (scram cannon (mini-rockets))
ONWCw8_mbo (mercury bow)
ONWCw9_scr (screamer gun)
ONWCw10_sni (Mukade's fireball)
ONWCw11_ba1 (Barabas' gun)
ONWCw12_ba2 (-)
<Ammo> integer percentage; 0 - empty, 100 - fully loaded ?