XML:BINA/OBJC/CHAR: Difference between revisions
Script 10k (talk | contribs) m (Fix WasSpawned to Spawned) |
Paradox-01 (talk | contribs) mNo edit summary |
||
| (14 intermediate revisions by 3 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 121: | Line 119: | ||
|valign=top| <Flags> | |valign=top| <Flags> | ||
|valign=top| - | |valign=top| - | ||
| | | obsolete | ||
|- | |- | ||
|valign=top| <Position> | |valign=top| <Position> | ||
| 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]]) | : 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 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#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 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
|
