XML:BINA/OBJC/CMBT

From OniGalore
< XML:BINA‎ | OBJC
Revision as of 10:15, 4 June 2013 by Paradox-01 (talk | contribs) (bad combination of link and background color, for better visibility let's use a text here)
Jump to navigation Jump to search
CMBT : Combat profiles
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

AKEV << Other file types >> CONS

TMBD << Other BINA >> ONIE

CONS << Other OBJC >> DOOR

switch to OBD page

general information

  • The xml code on this page is compatible with onisplit v0.9.61.0
  • BINACJBOCombat.oni is global (It's stored in level0_...)


file structure

<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <Objects>
   [...]
   </Objects>
</Oni>

[...] stands for a combat profile. You can add new profiles between the <Objects> </Objects> tags.

example: Id 0 (Stand_and_Fire)

combat ranges

ai2_showcombatranges_tn.png

       <CMBT Id="368">
           <Header>
               <Flags></Flags>
               <Position>-223.332321 17.8324356 -116.511253</Position>
               <Rotation>0 0 0</Rotation>
           </Header>
           <OSD>
               <Name>Stand_and_Fire</Name>
               <CombatId>0</CombatId>
               <Behaviors>
                   <LongRange>HoldAndFire</LongRange>
                   <MediumRange>HoldAndFire</MediumRange>
                   <ShortRange>HoldAndFire</ShortRange>
                   <MediumRetreat>HoldAndFire</MediumRetreat>
                   <LongRetreat>HoldAndFire</LongRetreat>
               </Behaviors>
               <Combat>
                   <MediumRange>120</MediumRange>
                   <MeleeOverride>IfPunched</MeleeOverride>
                   <NoGunBehavior>Melee</NoGunBehavior>
                   <ShortRange>40</ShortRange>
                   <PursuitDistance>200</PursuitDistance>
               </Combat>
               <Panic>
                   <Hurt>600</Hurt>
                   <GunFire>900</GunFire>
                   <Melee>600</Melee>
                   <Sight>1200</Sight>
               </Panic>
               <Alarm>
                   <SearchDistance>300</SearchDistance>
                   <EnemyIgnoreDistance>80</EnemyIgnoreDistance>
                   <EnemyAttackDistance>0</EnemyAttackDistance>
                   <DamageThreshold>30</DamageThreshold>
                   <FightTimer>360</FightTimer>
               </Alarm>
           </OSD>
       </CMBT>


tags

XML tag content type description
<?xml version="1.0" encoding="utf-8"?> float, flag Ignore this.
<Oni> -
<Objects> - Encloses the profiles, starting with <CMBT Id="..."> and ending with </CMBT>.
<CMBT Id="..."> integer Ignore this.
<Header> -
<Flags> flag Ignore this.
<Position> float x3 Ignore this.
<Rotation> float x3 Ignore this.
<OSD> -
<Name> char[64] Name of the profile (making it easier to remember what the content does).
<CombatId> integer Used by CHAR and ONCC.
A table of combat Ids can be found HERE.
<Behaviors> - Behavior at different ranges.
<LongRange> flag
None
Stare
HoldAndFire
FiringCharge
Melee
BarabasShoot
BarabasAdvance
BarabasMelee
SuperNinjaFireball
SuperNinjaAdvance
SuperNinjaMelee
RunForAlarm
MutantMuroMelee
MuroThunderbolt
<MediumRange> flag the flags are identical with <LongRange>
<ShortRange> flag the flags are identical with <LongRange>
<MediumRetreat> flag the flags are identical with <LongRange>
<LongRetreat> flag the flags are identical with <LongRange>
<Combat> -
<MediumRange> float you can make it visible with the script command ai2_showcombatranges = 1
<MeleeOverride> flag
None
IfPunched
Cancelled
ShortRange
MediumRange
AlwaysMelee
<NoGunBehavior> flag
Melee
Retreat
RunForAlarm
<ShortRange> float you can make it visible with the script command ai2_showcombatranges = 1
<PursuitDistance> float
<Panic> -
<Hurt> integer frame number (60 frames = 1 second)
<GunFire> integer frame number
<Melee> integer frame number
<Sight> integer frame number
<Alarm> -
<SearchDistance> float Area around AI, where engine checks if there is some alarm console.
<EnemyIgnoreDistance> float Enemies which are inside this range are not ignored but AI doesn't attack them.
<EnemyAttackDistance> float This one specifies an "attack range" around an AI running for an alarm. When there is an enemy inside, AI stops running for the console and attack the enemy (if AI knows about him, of course). Nevertheless AI still keeps in mind that it should run for the console. So when there is no enemy inside this range and fight timer runs out, AI resumes running to the specified console.
<DamageThreshold> integer Specifies how long AI, which is running for the console, remembers someone hurt it. Until this timer runs away, AI doesn't tend to use console. It only stays in fight stance near console, ready to fight. If someone hurts AI which is running for the console, then escapes and then tries to hurt it again while this timer isn't finished yet, AI remembers him and imitatively attacks him the moment he steps inside <EnemyAttackDistance>.
<FightTimer> integer

When AI, which is running for the console, is engaged in a fight and enemy manages to disappear (either by phase-cloak or simply by hiding behind some corner), AI tries to chase him or looks for him. Alarm timer specifies how long should AI chase/look for the enemy. For chasing, timer starts when the enemy is outside <EnemyAttackDistance>. Of course when the enemy escapes even from <EnemyIgnoreDistance>, AI abandons him automatically.