XML:BINA/OBJC/PART
Jump to navigation
Jump to search
general information
- BINACJBOParticle.oni is level specific. (It can be found in edition/GameDataFolder/levelXX_... )
- See HERE if you don't know how to convert an oni file into XML and vice versa.
- See HERE if you are searching for more general information such as how to handle object coordinates.
BSL support
following command can kill different particle with same tag at once but only one of each, so don't double spawn
- particle particle_name kill (kill counts also as die event)
following command reset particle
- particle particle_name reset
following commands depend on particle events
- particle particle_name update
- particle particle_name pulse
- particle particle_name start
- particle particle_name stop
- particle particle_name bgfx_start
- particle particle_name bgfx_stop
- particle particle_name hit_wall
- particle particle_name hit_char
- particle particle_name lifetime
- particle particle_name explode
- particle particle_name brokenlink
- particle particle_name create (create counts also as update event)
- particle particle_name die
- particle particle_name newattractor
- particle particle_name delay_start
- particle particle_name delay_stop
note about wannabe-damaging particle
Fire and gas particle alone are useless until you try inserting a damage effect right there. In original game it's made with a trigger volume.
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); }
XML structure
<?xml version="1.0" encoding="utf-8"?> <Oni Version="0.9.28.0"> <ObjectCollection> [...] </ObjectCollection> </Oni>
[...] means at least one particle. Paste all particle data into there (this includes <Object ...> and </Object> tag).
example
<Object Id="8463" Type="PART"> <Header> <Flags>0</Flags> <Position>-1050 45 1610</Position> <Rotation>0 0 0</Rotation> </Header> <OSD> <Class>env_fire9_e01</Class> <Tag>auto1fire</Tag> <Flags>13</Flags> <Decal> <XScale>1</XScale> <YScale>1</YScale> </Decal> </OSD> </Object>
tags
- <Flags> : (unknown, usually 0)
- <Position> : (particle is created at this xyz-position)
- <Rotation> : (particle has xyz-rotation (in degrees))
- <Class> : (file name, can have up to 64 characters)
- <Tag> : (name for BSL use, can have up to 48 characters)
- <Flags> : (? = meaning is unknown)
- 4 - ?
- used by <Class>env_shinzom_sound</Class> <Tag>zombient</Tag>
- 5 - ?
- used only once and that's in compound and it doesn't even work because the file is missing (<Class>env_sturm_sound</Class> <Tag>sturm_ambient</Tag>) but nevertheless used in the BSL file
- 7 - not initially created and maybe something else
- used by yellow objective circles, mad bomber particle in level 3 bio lab, dish elavator red warning env_emlite_e01
- 12 - ?
- used for non-animated particles (e.g. lamp lights, images and captions like the level 1 training room captions)
- 13 - initially create and maybe something else
- used for animated images (e.g. fire) and moving particles (e.g. falling snow, forcefield and compound dish particle)
- 15 - ?
- used for <Class>objective_e01</Class> <Tag>fight</Tag> and <Class>env_splash_e02</Class> <Tag>OutroSplash</Tag>
- 4 - ?
- <Decal>
- <XScale> : (horizontal scaling; float value ("1" seems to show image in original size))
- <YScale> : (vertical scaling; float value)
- Paradox, remember this is a bitset. So test each value 1, 2, 4, 8, 16(?)
- So...
- 4 = 4 = ?
- 5 = 4 + 1 = ?
- 7 = 4 + 2 + 1 = ?
- 12 = 8 + 4 = ?
- 13 = 8 + 4 + 1 = ?
- 15 = 8 + 4 + 2 + 1 = ?
- So...
- 1 = Animated/Moving? Probably attaches the particle
- 2 = ?
- 4 = ?
- 8 = ?
- (: Gumby 17:27, 22 May 2009 (UTC)