XML:BINA/OBJC/CHAR: Difference between revisions
Jump to navigation
Jump to search
Paradox-01 (talk | contribs) m (changing links to XML pages) |
Paradox-01 (talk | contribs) mNo edit summary |
||
(9 intermediate revisions by 2 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 XML code on this page is based on OniSplit '''v0.9.61.0''' | * 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/level'''X'''_Final.dat). | * '''BINACJBOCharacter.oni''' is level specific (it can be found in AE/AEInstaller/vanilla/level'''X'''_Final.dat). | ||
Line 7: | Line 7: | ||
* 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.) | * 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 139: | Line 137: | ||
| determines some special properties | | determines some special properties | ||
: 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) | : 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]]) Note: if a character has no | : 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) ( | : Spawned (32) (unknown) | ||
: Unkillable (64) (character won't lose more HP if it reaches 1; same as BSL command "chr_unkillable") | : 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) (AI will not forget having seen an enemy, | : 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 a [[LSI|level specific item]]) | : HasLSI (512) (this character drops a [[LSI|level specific item]]) | ||
: Boss (1024) (makes the AI prefer to attack the player; used for Muro in final battle if Griffin's group is present) | : Boss (1024) (makes the AI prefer to attack the player; used for Muro in final battle if Griffin's group is present) | ||
Line 216: | 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 | | 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 248: | Line 246: | ||
|valign=top| <MeleeId> | |valign=top| <MeleeId> | ||
|valign=top| flag | |valign=top| flag | ||
| [[XML:BINA/OBJC/MELE# | | [[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| | |[[XML:BINA/OBJC/NEUT|these profiles are level-specific]] | ||
|- | |- | ||
|valign=top| <Inventory> | |valign=top| <Inventory> | ||
Line 291: | 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 |
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
|