| 
				 | 
				
| Line 84: | 
Line 84: | 
 | 
  |  | 
  | 
 | [[User:Gumby|Gumby]] 18:39, 31 August 2008 (CEST)  |  | [[User:Gumby|Gumby]] 18:39, 31 August 2008 (CEST)  | 
 | 
  |  | 
 | 
  |  | 
 | 
  |  | 
 | 
  |  | 
 | ==XML==
  |  | 
 | 
  |  | 
 | {{Template:XMLModdingHints}}
  |  | 
 | {| border=0 cellspacing=20 cellpadding=0 align=center
  |  | 
 | | The xml code on this page is based on onisplit '''v0.9.61.0'''
  |  | 
 | |}
  |  | 
 | 
  |  | 
 | 
  |  | 
 | '''general information'''
  |  | 
 | * '''BINACJBOCharacter.oni''' is level specific. (It can be found in edition/GameDataFolder/level''XX''_... )
  |  | 
 | * An alternative is [[OBD:AISA|AISA]].
  |  | 
 | * All original characters can be seen [http://ssg.oni2.net/subfold/charas/charas.htm HERE.] (The lists include used ONCC, character's BSL name, health, team and BSL function.)
  |  | 
 | 
  |  | 
 | 
  |  | 
 | '''XML structure'''
  |  | 
 | 
  |  | 
 |  <?xml version="1.0" encoding="utf-8"?>
  |  | 
 |  <Oni>
  |  | 
 |     <Objects>
  |  | 
 |         '''''[...]'''''
  |  | 
 |     </Objects>
  |  | 
 |  </Oni>
  |  | 
 | 
  |  | 
 | '''''[...]''''' means at least one character. Paste all character data into there (this includes '''<font color="#0A0"><CHAR Id="..."></font>''' and '''<font color="#0A0"></CHAR></font>''' tag).
  |  | 
 | 
  |  | 
 | '''example'''
  |  | 
 | 
  |  | 
 |         '''<font color="#0A0"><CHAR Id="3860"></font>'''
  |  | 
 |             <Header>
  |  | 
 |                 <Flags></Flags>
  |  | 
 |                 <Position>-543.22 159 -630.0954</Position>
  |  | 
 |                 <Rotation>0 180 0</Rotation>
  |  | 
 |             </Header>
  |  | 
 |             <OSD>
  |  | 
 |                 <Flags>NotInitiallyPresent</Flags>
  |  | 
 |                 <Class>konoko_generic</Class>
  |  | 
 |                 <Name>konoko</Name>
  |  | 
 |                 <Weapon>w1_tap</Weapon>
  |  | 
 |                 <Scripts>
  |  | 
 |                     <Spawn></Spawn>
  |  | 
 |                     <Die>you_lose</Die>
  |  | 
 |                     <Combat></Combat>
  |  | 
 |                     <Alarm></Alarm>
  |  | 
 |                     <Hurt></Hurt>
  |  | 
 |                     <Defeated></Defeated>
  |  | 
 |                     <OutOfAmmo></OutOfAmmo>
  |  | 
 |                     <NoPath></NoPath>
  |  | 
 |                 </Scripts>
  |  | 
 |                 <AdditionalHealth>0</AdditionalHealth>
  |  | 
 |                 <Job>
  |  | 
 |                     <Type>None</Type>
  |  | 
 |                     <PatrolPathId>0</PatrolPathId>
  |  | 
 |                 </Job>
  |  | 
 |                 <Behaviors>
  |  | 
 |                     <CombatId>0</CombatId>
  |  | 
 |                     <MeleeId>0</MeleeId>
  |  | 
 |                     <NeutralId>0</NeutralId>
  |  | 
 |                 </Behaviors>
  |  | 
 |                 <Inventory>
  |  | 
 |                     <Ammo>
  |  | 
 |                         <Use>3</Use>
  |  | 
 |                         <Drop>0</Drop>
  |  | 
 |                     </Ammo>
  |  | 
 |                     <EnergyCell>
  |  | 
 |                         <Use>0</Use>
  |  | 
 |                         <Drop>0</Drop>
  |  | 
 |                     </EnergyCell>
  |  | 
 |                     <Hypo>
  |  | 
 |                         <Use>0</Use>
  |  | 
 |                         <Drop>0</Drop>
  |  | 
 |                     </Hypo>
  |  | 
 |                     <Shield>
  |  | 
 |                         <Use>0</Use>
  |  | 
 |                         <Drop>0</Drop>
  |  | 
 |                     </Shield>
  |  | 
 |                     <Invisibility>
  |  | 
 |                         <Use>0</Use>
  |  | 
 |                         <Drop>0</Drop>
  |  | 
 |                     </Invisibility>
  |  | 
 |                 </Inventory>
  |  | 
 |                 <Team>Konoko</Team>
  |  | 
 |                 <AmmoPercentage>100</AmmoPercentage>
  |  | 
 |                 <Alert>
  |  | 
 |                     <Initial>Lull</Initial>
  |  | 
 |                     <Minimal>Lull</Minimal>
  |  | 
 |                     <JobStart>Low</JobStart>
  |  | 
 |                     <Investigate>Medium</Investigate>
  |  | 
 |                 </Alert>
  |  | 
 |                 <AlarmGroups>0</AlarmGroups>
  |  | 
 |                 <Pursuit>
  |  | 
 |                     <StrongUnseen>Look</StrongUnseen>
  |  | 
 |                     <WeakUnseen>Forget</WeakUnseen>
  |  | 
 |                     <StrongSeen>Look</StrongSeen>
  |  | 
 |                     <WeakSeen>Look</WeakSeen>
  |  | 
 |                     <Lost>ReturnToJob</Lost>
  |  | 
 |                 </Pursuit>
  |  | 
 |             </OSD>
  |  | 
 |         '''<font color="#0A0"></CHAR></font>'''
  |  | 
 | 
  |  | 
 | 
  |  | 
 | {| class="wikitable" width="100%"
  |  | 
 | !width=200px| XML tag
  |  | 
 | !width=200px| content type
  |  | 
 | ! description
  |  | 
 | |-
  |  | 
 | |valign=top| <?xml version="1.0" encoding="utf-8"?>
  |  | 
 | |valign=top| string
  |  | 
 | | There's no reason to change this.
  |  | 
 | |-
  |  | 
 | |valign=top| <Oni>
  |  | 
 | |valign=top| -
  |  | 
 | |
  |  | 
 | |-
  |  | 
 | |valign=top| <Objects>
  |  | 
 | |valign=top| -
  |  | 
 | |
  |  | 
 | |-
  |  | 
 | |valign=top| <CHAR Id="3860">
  |  | 
 | |valign=top| integer
  |  | 
 | | Id doesn't matter.
  |  | 
 | |-
  |  | 
 | | <Header>
  |  | 
 | |valign=top| -
  |  | 
 | |
  |  | 
 | |-
  |  | 
 | |valign=top| <Flags>
  |  | 
 | |valign=top| -
  |  | 
 | | unknown; usually empty
  |  | 
 | |-
  |  | 
 | |valign=top| <Position>
  |  | 
 | |valign=top| float x3
  |  | 
 | | character is spawned at this xyz-position
  |  | 
 | |-
  |  | 
 | |valign=top| <Rotation>
  |  | 
 | |valign=top| float x3
  |  | 
 | | character is spawned with this xyz-rotation, only y is useful
  |  | 
 | |-
  |  | 
 | |valign=top| <OSD>
  |  | 
 | |valign=top| -
  |  | 
 | |
  |  | 
 | |-
  |  | 
 | |valign=top| <Flags>
  |  | 
 | |valign=top| flag
  |  | 
 | | determines some special properties
  |  | 
 | : IsPlayer (1) (if you have two of them then delete one and spawn the other one at same time, if not made simultaneously camera glitch can appear)
  |  | 
 | : RandomCostume (2) (flag belongs to [[OBD_talk:ONCV|ONCV]])
  |  | 
 | : NotInitiallyPresent (4)
  |  | 
 | : NonCombatant (8)
  |  | 
 | : CanSpawnMultiple (16) (needs WasSpawned)
  |  | 
 | : WasSpawned (32) (...)
  |  | 
 | : Unkillable (64) (character won't loss more life points if it reaches 1, same as BSL command "chr_unkillable")
  |  | 
 | : InfiniteAmmo (128) (Raiden: "You got enough ?" Snake points to his head. "Infinite ammo...")
  |  | 
 | : Omniscient (256) ('''?'''; tested ideas: doesn't unlock moves for player)
  |  | 
 | : HasLSI (512) (this character drops an level specific item like truck keys in [[CHAPTER_14_._DAWN_OF_THE_CHRYSALIS|level 19]])
  |  | 
 | : Boss (1024) (used for boss mode fights. makes the AI ignore this character unless there is nobody else around)
  |  | 
 | : UpgradeDifficulty (2048) (spawns a stronger enemy if you play on medium or hard)
  |  | 
 | : NoAutoDrop (4096) (doesn't drop "used" shield, "used" invisibility and LSI when killed)
  |  | 
 | 
  |  | 
 | '''After onisplit v0.9.54.0, merged integer flags can appear.'''
  |  | 
 | 
  |  | 
 | Let's say you encounter a 6180, then it's actually 4096 + 2048 + 32 + 4.
  |  | 
 | |-
  |  | 
 | |valign=top| <Class>
  |  | 
 | |valign=top| link
  |  | 
 | | ONCC file name without file pre- and suffix. Character can change appearance with "chr_set_class".
  |  | 
 | |-
  |  | 
 | |valign=top| <Name>
  |  | 
 | |valign=top| string
  |  | 
 | | used by BSL commands
  |  | 
 | |-
  |  | 
 | |valign=top| <Weapon>
  |  | 
 | |valign=top| link
  |  | 
 | | ONWC file name without file pre- and suffix. The character is spawned with that weapon. 
  |  | 
 | 
  |  | 
 | Original weapon classes:
  |  | 
 | : w1_tap (TCTF pistol)
  |  | 
 | : w2_sap (Syndicate uzi)
  |  | 
 | : w3_phr (plasma rifle)
  |  | 
 | : w4_psm (phase stream projector)
  |  | 
 | : w5_sbg (super ball gun)
  |  | 
 | : w6_vdg (shocker)
  |  | 
 | : w7_scc (scram cannon (mini-rockets))
  |  | 
 | : w8_mbo (mercury bow)
  |  | 
 | : w9_scr (screamer gun)
  |  | 
 | : w10_sni (Mukade's firework)
  |  | 
 | : w11_ba1 (Barabas' gun)
  |  | 
 | : w12_ba2 (-)
  |  | 
 | |-
  |  | 
 | |valign=top| <Scripts>
  |  | 
 | |valign=top| string
  |  | 
 | | BSL function
  |  | 
 | : <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)
  |  | 
 | : <font style="color:#777"><NoPath> (should be called when a character has trouble pathfinding, but isn't</font>)
  |  | 
 | |-
  |  | 
 | |valign=top| <AdditionalHealth>
  |  | 
 | |valign=top| integer
  |  | 
 | | ''main'' health is stored in ONCC, "additional health" will be added to that ''main'' health; also negative value possible here (which would then reduce main health)
  |  | 
 | |-
  |  | 
 | |valign=top| <Job>
  |  | 
 | |valign=top| -
  |  | 
 | |
  |  | 
 | |-
  |  | 
 | |valign=top| <Type>
  |  | 
 | |valign=top| flag
  |  | 
 | |
  |  | 
 | : None
  |  | 
 | : Idle
  |  | 
 | : <font color="#777">Guard (never used in Oni)</font>
  |  | 
 | : Patrol
  |  | 
 | : <font color="#777">Teambattle (never used in Oni)</font>
  |  | 
 | : Combat (not tested)
  |  | 
 | : Melee (not tested)
  |  | 
 | : Alarm (not tested)
  |  | 
 | : Neutral (not tested)
  |  | 
 | : Panic (not tested)
  |  | 
 | |-
  |  | 
 | |valign=top| [[OBD_talk:BINA/OBJC/PATR|<PatrolPathId>]]
  |  | 
 | |valign=top| integer
  |  | 
 | |
  |  | 
 | |-
  |  | 
 | |valign=top| <Behaviors>
  |  | 
 | |valign=top| -
  |  | 
 | | specified by IDs linking to melee, combat and neutral profile collection file
  |  | 
 | |-
  |  | 
 | |valign=top| [[OBD_talk:BINA/OBJC/CMBT|<CombatId>]]
  |  | 
 | |valign=top| flag
  |  | 
 | |
  |  | 
 | : 0 (Stand_and_Fire)
  |  | 
 | : 1 (Murder)
  |  | 
 | : 2 (Shoot_And_Fight)
  |  | 
 | : 3 (Take_my_Big_Black_Stuff)
  |  | 
 | : 4 (Assault)
  |  | 
 | : 5 (Civilian)
  |  | 
 | : 6 (Pursuit)
  |  | 
 | : 7 (Group_battle)
  |  | 
 | : 8 (Watchman)
  |  | 
 | : 9 (Barabbas_TCTF)
  |  | 
 | : 10 (COMGUY)
  |  | 
 | : 11 (SuperNinja)
  |  | 
 | : 12 (Griffin)
  |  | 
 | : 13 (Mutant_Muro)
  |  | 
 | : 14 (Alarm Guard)
  |  | 
 | : 15 (Non-Combatant)
  |  | 
 | : 16 (Griffin_Final)
  |  | 
 | : 207 (Sniper)
  |  | 
 | : 208 (Sniper For Joe)
  |  | 
 | : 17 (Average_striker; new profile for AE)
  |  | 
 | |-
  |  | 
 | |valign=top| <MeleeId>
  |  | 
 | |valign=top| flag
  |  | 
 | | [[OBD:BINA/OBJC/MELE#All_profiles_sorted_by_ID|here are all melee IDs sorted by ID]]
  |  | 
 | |-
  |  | 
 | |valign=top| <NeutralId>
  |  | 
 | |valign=top| flag
  |  | 
 | |[[OBD:BINA/OBJC/NEUT|...]] (no overview so far)
  |  | 
 | |-
  |  | 
 | |valign=top| <Inventory>
  |  | 
 | |valign=top| -
  |  | 
 | |
  |  | 
 | |-
  |  | 
 | |valign=top| <Ammo>
  |  | 
 | |valign=top| integer
  |  | 
 | |
  |  | 
 | : <Use> (Player becomes spawned with ammo clips, here you set the amount.)
  |  | 
 | : <Drop> (AI drop these items when defeated.)
  |  | 
 | |-
  |  | 
 | |valign=top| <EnergyCell>
  |  | 
 | |valign=top| integer
  |  | 
 | |
  |  | 
 | : <Use>
  |  | 
 | : <Drop>
  |  | 
 | |-
  |  | 
 | |valign=top| <Hypo>
  |  | 
 | |valign=top| integer
  |  | 
 | | 
  |  | 
 | : <Use>
  |  | 
 | : <Drop> (AI cannot use hypos.)
  |  | 
 | |-
  |  | 
 | |valign=top| <Shield>
  |  | 
 | |valign=top| integer
  |  | 
 | |
  |  | 
 | : <Use>
  |  | 
 | : <Drop>
  |  | 
 | |-
  |  | 
 | |valign=top| <Invisibility>
  |  | 
 | |valign=top| integer
  |  | 
 | |
  |  | 
 | : <Use>
  |  | 
 | : <Drop>
  |  | 
 | |-
  |  | 
 | |valign=top| <Team>
  |  | 
 | |valign=top| flag
  |  | 
 | |
  |  | 
 | : Konoko
  |  | 
 | : TCTF
  |  | 
 | : Syndicate
  |  | 
 | : Neutral
  |  | 
 | : SecurityGuard
  |  | 
 | : RogueKonoko
  |  | 
 | : Switzlerland (is melee-immune)
  |  | 
 | : SyndicateAccessory
  |  | 
 | |-
  |  | 
 | |valign=top| <AmmoPercentage>
  |  | 
 | |valign=top| integer
  |  | 
 | | ammo in weapon, percent value: 0 - 100, ''overload'' not tested
  |  | 
 | |-
  |  | 
 | |valign=top| <Alert>
  |  | 
 | |valign=top| -
  |  | 
 | | [[Tricks_behind_Oni_A.I.|HERE]] you get some helpful information on how to use "Alert" and "Pursuit".
  |  | 
 | : Lull
  |  | 
 | : Low
  |  | 
 | : Medium
  |  | 
 | : High
  |  | 
 | : Combat
  |  | 
 | |-
  |  | 
 | |valign=top| <Initial>
  |  | 
 | |valign=top| flag
  |  | 
 | | initial alert level, see <Alert> for all flags
  |  | 
 | |-
  |  | 
 | |valign=top| <Minimal>
  |  | 
 | |valign=top| flag
  |  | 
 | | minimal alert level, see <Alert> for all flags
  |  | 
 | |-
  |  | 
 | |valign=top| <JobStarting>
  |  | 
 | |valign=top| flag
  |  | 
 | | alert level when starting a job, see <Alert> for all flags
  |  | 
 | |-
  |  | 
 | |valign=top| <Investigating>
  |  | 
 | |valign=top| flag
  |  | 
 | | alert level when investigating, see <Alert> for all flags
  |  | 
 | |-
  |  | 
 | |valign=top| <AlarmGroups>
  |  | 
 | |valign=top| integer
  |  | 
 | |It's a bitset32 converted to int32. If Ns bit = TRUE then a bot gets highest alert level by a console command ai2_tripalarm(N)
  |  | 
 | : <AlarmGroups>VAR</AlarmGroups>
  |  | 
 | :: VAR = 2^N1 + 2^N2 + 2^N3 etc.
  |  | 
 | |-
  |  | 
 | |valign=top| <Pursuit>
  |  | 
 | |valign=top| -
  |  | 
 | |
  |  | 
 | : None
  |  | 
 | : Forget
  |  | 
 | : GoTo
  |  | 
 | : Wait
  |  | 
 | : Look
  |  | 
 | : Move
  |  | 
 | : Hunt
  |  | 
 | : Glanc
  |  | 
 | |-
  |  | 
 | |valign=top| <nowiki><StrongUnseen></nowiki>
  |  | 
 | |valign=top| flag
  |  | 
 | | usually ''Look'', see <Pursuit> for all flags
  |  | 
 | |-
  |  | 
 | |valign=top| <WeakUnseen>
  |  | 
 | |valign=top| flag
  |  | 
 | | usually ''Forget'', see <Pursuit> for all flags
  |  | 
 | |-
  |  | 
 | |valign=top| <StrongSeen>
  |  | 
 | |valign=top| flag
  |  | 
 | | usually ''Look'', see <Pursuit> for all flags
  |  | 
 | |-
  |  | 
 | |valign=top| <WeakSeen>
  |  | 
 | |valign=top| flag
  |  | 
 | | usually ''Look'', see <Pursuit> for all flags
  |  | 
 | |-
  |  | 
 | |valign=top| <Lost>
  |  | 
 | |valign=top| flag
  |  | 
 | | usually ''ReturnToJob''
  |  | 
 | : ReturnToJob
  |  | 
 | : KeepLooking
  |  | 
 | : FindAlarm
  |  | 
 | |}
  |  |