XML:BINA/OBJC/CHAR: Difference between revisions
Jump to navigation
Jump to search
Paradox-01 (talk | contribs) mNo edit summary |
Paradox-01 (talk | contribs) mNo edit summary |
||
(24 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{XML_OBJC_Header | type=CHAR | {{XML_OBJC_Header | prev=WEAP | type=CHAR | next=CMBT | name=Character}} | ||
==General information== | |||
* The | * The XML code on this page is based on OniSplit '''v0.9.61.0''' | ||
* '''BINACJBOCharacter.oni''' is level specific | * '''BINACJBOCharacter.oni''' is level specific (it can be found in AE/AEInstaller/vanilla/level'''X'''_Final.dat). | ||
* An alternative is [[XML:AISA|AISA]]. | * An alternative method for creating characters is [[XML:AISA|AISA]]. | ||
* All original characters can be seen [http://ssg.oni2.net/subfold/charas/charas.htm HERE. | * All original characters can be seen [http://ssg.oni2.net/subfold/charas/charas.htm HERE]. (The lists include the ONCC name, character's BSL name, health, team and attached BSL event function names.) | ||
==XML structure== | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||
<Oni> | <Oni> | ||
Line 96: | Line 94: | ||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
!width=200px| XML tag | !width=200px| XML tag | ||
!width=200px| | !width=200px| Content type | ||
! | ! Description | ||
|- | |- | ||
|valign=top| <?xml version="1.0" encoding="utf-8"?> | |valign=top| <?xml version="1.0" encoding="utf-8"?> | ||
Line 113: | Line 111: | ||
|valign=top| <CHAR Id="3860"> | |valign=top| <CHAR Id="3860"> | ||
|valign=top| integer | |valign=top| integer | ||
| | | ID doesn't matter. -- For [[XML:ONLV|level import]] use <CHAR>. | ||
|- | |- | ||
| <Header> | | <Header> | ||
Line 121: | Line 119: | ||
|valign=top| <Flags> | |valign=top| <Flags> | ||
|valign=top| - | |valign=top| - | ||
| | | obsolete | ||
|- | |- | ||
|valign=top| <Position> | |valign=top| <Position> | ||
|valign=top| float x3 | |valign=top| float x3 | ||
| character is spawned at this | | character is spawned at this XYZ position | ||
|- | |- | ||
|valign=top| <Rotation> | |valign=top| <Rotation> | ||
|valign=top| float x3 | |valign=top| float x3 | ||
| character is spawned with this | | character is spawned with this XYZ rotation; only Y (facing) is useful | ||
|- | |- | ||
|valign=top| <OSD> | |valign=top| <OSD> | ||
Line 138: | Line 136: | ||
|valign=top| flag | |valign=top| flag | ||
| determines some special properties | | determines some special properties | ||
: IsPlayer (1) (if you have two of them | : IsPlayer (1) (if you have two of them, and delete one and then spawn the other, if not done simultaneously a camera glitch can appear) | ||
: RandomCostume (2) (flag belongs to [[XML:ONCV|ONCV]]) | : RandomCostume (2) (flag belongs to [[XML:ONCV|ONCV]]) Note: if a character has no alternate costumes, a random ONCC will be picked by the engine! | ||
: NotInitiallyPresent (4) | : NotInitiallyPresent (4) (not spawned at level load; must be called from BSL) | ||
: NonCombatant (8) | : NonCombatant (8) (character doesn't fight; character panics if enemy (team) is in range) | ||
: CanSpawnMultiple (16 | : CanSpawnMultiple (16) | ||
: | : Spawned (32) (unknown) | ||
: Unkillable (64) (character won't | : Unkillable (64) (character won't lose more HP if it reaches 1; same as BSL command "chr_unkillable") | ||
: InfiniteAmmo (128) (Raiden: "You got enough ?" Snake points to his head. "Infinite ammo...") | : InfiniteAmmo (128) (Raiden: "You got enough?" Snake points to his head. "Infinite ammo...") | ||
: Omniscient (256) ( | : Omniscient (256) (AI will not forget having seen an enemy, and will know enemy's position even if they are not visible to it) | ||
: HasLSI (512) (this character drops | : HasLSI (512) (this character drops a [[LSI|level specific item]]) | ||
: Boss (1024) ( | : Boss (1024) (makes the AI prefer to attack the player; used for Muro in final battle if Griffin's group is present) | ||
: UpgradeDifficulty (2048) (spawns a stronger enemy if you play on | : UpgradeDifficulty (2048) (spawns a stronger enemy if you play on Normal or Hard) | ||
: NoAutoDrop (4096) (doesn't drop "used" shield, "used" invisibility and LSI when killed) | : NoAutoDrop (4096) (doesn't drop "used" shield, "used" invisibility and LSI when killed) | ||
'''After | '''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. | ||
Let's say you encounter a 6180 | |||
|- | |- | ||
|valign=top| <Class> | |valign=top| <Class> | ||
|valign=top| char[64] | |valign=top| char[64] | ||
| ONCC file name without file | | ONCC file name without file prefix and suffix. Character can change appearance with "chr_set_class". | ||
|- | |- | ||
|valign=top| <Name> | |valign=top| <Name> | ||
Line 166: | Line 162: | ||
|valign=top| <Weapon> | |valign=top| <Weapon> | ||
|valign=top| char[64] | |valign=top| char[64] | ||
| ONWC file name without file | | ONWC file name without file prefix and suffix. The character is spawned with that weapon. | ||
Original weapon classes: | Original weapon classes: | ||
Line 174: | Line 170: | ||
: w4_psm (phase stream projector) | : w4_psm (phase stream projector) | ||
: w5_sbg (super ball gun) | : w5_sbg (super ball gun) | ||
: w6_vdg ( | : w6_vdg (van de graaff pistol) | ||
: w7_scc (scram cannon (mini-rockets)) | : w7_scc (scram cannon (mini-rockets)) | ||
: w8_mbo (mercury bow) | : w8_mbo (mercury bow) | ||
: w9_scr (screamer gun) | : w9_scr (screamer gun) | ||
: w10_sni (Mukade's | : w10_sni (Mukade's fireball) | ||
: w11_ba1 (Barabas' gun) | : w11_ba1 (Barabas' gun) | ||
: w12_ba2 (-) | : w12_ba2 (-) | ||
Line 196: | Line 192: | ||
|valign=top| <AdditionalHealth> | |valign=top| <AdditionalHealth> | ||
|valign=top| integer | |valign=top| integer | ||
| '' | | ''Base'' health is stored in ONCC; AdditionalHealth will be added to that base health; a negative value is allowed here, which would reduce base health | ||
|- | |- | ||
|valign=top| <Job> | |valign=top| <Job> | ||
Line 209: | Line 205: | ||
: <font color="#777">Guard (never used in Oni)</font> | : <font color="#777">Guard (never used in Oni)</font> | ||
: Patrol | : Patrol | ||
: <font color="#777"> | : <font color="#777">Team Battle (never used in Oni)</font> | ||
: Combat (not tested) | : Combat (not tested) | ||
: Melee (not tested) | : Melee (not tested) | ||
Line 218: | Line 214: | ||
|valign=top| [[XML:BINA/OBJC/PATR|<PatrolPathId>]] | |valign=top| [[XML:BINA/OBJC/PATR|<PatrolPathId>]] | ||
|valign=top| integer | |valign=top| integer | ||
| | | Use '''''<Type>None''''' if you don't want a character to have a patrol path; otherwise the character won't fight. | ||
|- | |- | ||
|valign=top| <Behaviors> | |valign=top| <Behaviors> | ||
Line 250: | Line 246: | ||
|valign=top| <MeleeId> | |valign=top| <MeleeId> | ||
|valign=top| flag | |valign=top| flag | ||
| [[ | | [[XML:BINA/OBJC/MELE#Melee_IDs|here are all melee IDs sorted by ID]] | ||
|- | |- | ||
|valign=top| <NeutralId> | |valign=top| <NeutralId> | ||
|valign=top| flag | |valign=top| flag | ||
|[[ | |[[XML:BINA/OBJC/NEUT|these profiles are level-specific]] | ||
|- | |- | ||
|valign=top| <Inventory> | |valign=top| <Inventory> | ||
Line 263: | Line 259: | ||
|valign=top| integer | |valign=top| integer | ||
| | | | ||
: <Use> (Player | : <Use> (Player is spawned with this many ammo clips.) | ||
: <Drop> (AI | : <Drop> (AI drops these items when defeated.) | ||
|- | |- | ||
|valign=top| <EnergyCell> | |valign=top| <EnergyCell> | ||
Line 275: | Line 271: | ||
|valign=top| integer | |valign=top| integer | ||
| | | | ||
: <Use | : <Use> (AI cannot use hypos.) | ||
: <Drop> | |||
|- | |- | ||
|valign=top| <Shield> | |valign=top| <Shield> | ||
Line 293: | Line 289: | ||
|valign=top| flag | |valign=top| flag | ||
| | | | ||
'''Characters of the same team''' can be made to ''attack'' each other via ai2_attack aiNameAttacker aiNameDefender 1 although melee damage is only dealt when team flags of both characters create a '''[[OBD_talk:BINA/OBJC/CHAR#Teams|hostile match]]'''. | |||
: Konoko | : Konoko | ||
: TCTF | : TCTF | ||
Line 299: | Line 296: | ||
: SecurityGuard | : SecurityGuard | ||
: RogueKonoko | : RogueKonoko | ||
: | : Switzerland (is melee-immune) | ||
: SyndicateAccessory | : SyndicateAccessory | ||
|- | |- | ||
Line 308: | Line 305: | ||
|valign=top| <Alert> | |valign=top| <Alert> | ||
|valign=top| - | |valign=top| - | ||
| [[ | | [[AI|HERE]] you get some helpful information on how to use "Alert" and "Pursuit". | ||
: Lull | : Lull | ||
: Low | : Low | ||
Line 333: | Line 330: | ||
|valign=top| <AlarmGroups> | |valign=top| <AlarmGroups> | ||
|valign=top| integer | |valign=top| integer | ||
|It's a bitset32 converted to int32. | |It's a bitset32 converted to int32. For any bit ("N") that is 1, the scripting command "ai2_tripalarm N" is called, alerting the AI with that scripting ID | ||
: <AlarmGroups>VAR</AlarmGroups> | : <AlarmGroups>VAR</AlarmGroups> | ||
:: VAR = 2^N1 + 2^N2 + 2^N3 etc. | :: VAR = 2^N1 + 2^N2 + 2^N3 etc. |
Latest revision as of 17:07, 2 November 2023
CHAR : Character | ||
---|---|---|
XML
AKEV << Other file types >> CONS TMBD << Other BINA >> ONIE WEAP << Other OBJC >> CMBT |
General information
- The XML code on this page is based on OniSplit v0.9.61.0
- BINACJBOCharacter.oni is level specific (it can be found in AE/AEInstaller/vanilla/levelX_Final.dat).
- An alternative method for creating characters is AISA.
- All original characters can be seen HERE. (The lists include the ONCC name, character's BSL name, health, team and attached BSL event function names.)
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 <CHAR Id="..."> and </CHAR> tag).
example
<CHAR Id="3860"> <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> </CHAR>
XML tag | Content type | Description |
---|---|---|
<?xml version="1.0" encoding="utf-8"?> | float, flag | There's no reason to change this. |
<Oni> | - | |
<Objects> | - | |
<CHAR Id="3860"> | integer | ID doesn't matter. -- For level import use <CHAR>. |
<Header> | - | |
<Flags> | - | obsolete |
<Position> | float x3 | character is spawned at this XYZ position |
<Rotation> | float x3 | character is spawned with this XYZ rotation; only Y (facing) is useful |
<OSD> | - | |
<Flags> | flag | determines some special properties
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. |
<Class> | char[64] | ONCC file name without file prefix and suffix. Character can change appearance with "chr_set_class". |
<Name> | char[32] | used by BSL commands |
<Weapon> | char[64] | ONWC file name without file prefix and suffix. The character is spawned with that weapon.
Original weapon classes:
|
<Scripts> | string | BSL function
|
<AdditionalHealth> | integer | Base health is stored in ONCC; AdditionalHealth will be added to that base health; a negative value is allowed here, which would reduce base health |
<Job> | - | |
<Type> | flag |
|
<PatrolPathId> | integer | Use <Type>None if you don't want a character to have a patrol path; otherwise the character won't fight. |
<Behaviors> | - | specified by IDs linking to melee, combat and neutral profile collection file |
<CombatId> | flag |
|
<MeleeId> | flag | here are all melee IDs sorted by ID |
<NeutralId> | flag | these profiles are level-specific |
<Inventory> | - | |
<Ammo> | integer |
|
<EnergyCell> | integer |
|
<Hypo> | integer |
|
<Shield> | integer |
|
<Invisibility> | integer |
|
<Team> | flag |
Characters of the same team can be made to attack each other via ai2_attack aiNameAttacker aiNameDefender 1 although melee damage is only dealt when team flags of both characters create a hostile match.
|
<AmmoPercentage> | integer | ammo in weapon, percent value: 0 - 100, overload not tested |
<Alert> | - | HERE you get some helpful information on how to use "Alert" and "Pursuit".
|
<Initial> | flag | initial alert level, see <Alert> for all flags |
<Minimal> | flag | minimal alert level, see <Alert> for all flags |
<JobStarting> | flag | alert level when starting a job, see <Alert> for all flags |
<Investigating> | flag | alert level when investigating, see <Alert> for all flags |
<AlarmGroups> | integer | It's a bitset32 converted to int32. For any bit ("N") that is 1, the scripting command "ai2_tripalarm N" is called, alerting the AI with that scripting ID
|
<Pursuit> | - |
|
<StrongUnseen> | flag | usually Look, see <Pursuit> for all flags |
<WeakUnseen> | flag | usually Forget, see <Pursuit> for all flags |
<StrongSeen> | flag | usually Look, see <Pursuit> for all flags |
<WeakSeen> | flag | usually Look, see <Pursuit> for all flags |
<Lost> | flag | usually ReturnToJob
|