XML:BINA/OBJC/PART

From OniGalore
< XML:BINA‎ | OBJC
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
PART : Particle
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

NEUT << Other OBJC >> PATR

switch to OBD page

General information

  • The XML on this page is based on OniSplit v0.9.61.0.
  • BINACJBOParticle is level-specific (levelx_Final.dat).

BSL support

The following command kills a particle with a given name, but only the first one of that name, so don't double-spawn the particle:

  • particle BSL_name kill (kill counts also as die event)

The following command resets a particle:

  • particle BSL_name reset

The following commands utilize the defined particle events.

BSL_name = <Tag> in BINACJBOParticle.xml / <Name> in ENVP
file_name = <Class> in BINACJBOParticle.xml / <ParticleClass> in ENVP
particle BSL_name update p3_callevent file_name 0
particle BSL_name pulse p3_callevent file_name 1
particle BSL_name start p3_callevent file_name 2
particle BSL_name stop p3_callevent file_name 3
particle BSL_name bgfx_start p3_callevent file_name 4
particle BSL_name bgfx_stop p3_callevent file_name 5
particle BSL_name hit_wall p3_callevent file_name 6
particle BSL_name hit_char p3_callevent file_name 7
particle BSL_name lifetime p3_callevent file_name 8
particle BSL_name explode p3_callevent file_name 9
particle BSL_name brokenlink p3_callevent file_name 10
particle BSL_name create (create counts also as update event) p3_callevent file_name 11
particle BSL_name die p3_callevent file_name 12
particle BSL_name newattractor p3_callevent file_name 13
particle BSL_name delay_start p3_callevent file_name 14
particle BSL_name delay_stop p3_callevent file_name 15

Note about damaging particles

Damaging particles will make characters "flinch" no matter how little the damage. So particles are responsible for visualizing the danger and a trigger volume is responsible for dealing the damage.

particle auto1fire start
### TV inside function
func void fire_damage(string ai_name)
{
	dprint fire_hurt_konoko
	### ignore the "fire_hurt_konoko"
	### all characters get damage because the TV is registered for all teams (255)
	### ps: this damage cannot be absorbed by a shield
	chr_poison (ai_name, 5, 30, 30);
}

File structure

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

[...] means at least one particle. Paste all your particle data in there (this includes <PART Id="..."> and </PART> tag).

Example

Fire particle.jpg
       <PART Id="8463">
           <Header>
               <Flags></Flags>
               <Position>-1050 45 1610</Position>
               <Rotation>0 0 0</Rotation>
           </Header>
           <OSD>
               <Class>env_fire9_e01</Class>
               <Tag>auto1fire</Tag>
               <Flags>13</Flags>
               <DecalScale>1 1</DecalScale>
           </OSD>
       </PART>

Tags

  • <Flags>: unknown, usually empty
  • <Position>: particle is created at this XYZ position
  • <Rotation>: particle has this XYZ rotation in degrees
  • <Class>: file name, can have up to 64 characters
  • <Tag>: name for use in BSL, can have up to 48 characters
  • <Flags>:
NotInitiallyCreated
  • <Decal>: first comes the X (horizontal) scaling (float value), then a space, then the Y (vertical) scaling (float value); "1" seems to show the image at its original size, which can be rather small in-game if the actual decal file uses also a small scale