AE:Glass: Difference between revisions
m (cat.d) |
(check) |
||
| Line 20: | Line 20: | ||
;See it in action | ;See it in action | ||
:[http://video.google.com/videoplay?docid=3161530428428979921 Google video] by [[User:EdT|EdT]] | :[http://video.google.com/videoplay?docid=3161530428428979921 Google video] by [[User:EdT|EdT]] | ||
;Get it as a | ;Get it as a .oni file | ||
: | :http://gumby.oni2.net/AE/oni%20files/glass/BINA3RAPglass_shard.oni (already in AE, does 8 damage) | ||
: | ;Get the XML version | ||
:http://gumby.oni2.net/AE/oni%20files/glass/XML/BINA3RAPglass_shard.xml | |||
;Do it yourself | ;Do it yourself | ||
#Extract the BINA3RAPglass_shard.oni file as .xml. | |||
#Add the part in red | |||
#Change the "8" in <Damage>8</Damage> to what you want the damage to be. | |||
<Font size = 2> | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<Oni Version="0.9.32.0"> | |||
<Particle Name="glass_shard"> | |||
<Options> | |||
<Lifetime>10</Lifetime> | |||
<DisableDetailLevel>Never</DisableDetailLevel> | |||
<Decorative>true</Decorative> | |||
<CollideWithWalls>true</CollideWithWalls> | |||
<CollideWithChars>true</CollideWithChars> | |||
<InitiallyHidden>false</InitiallyHidden> | |||
<DrawAsSky>false</DrawAsSky> | |||
<DontAttractThroughWalls>false</DontAttractThroughWalls> | |||
<ExpireOnCutscene>false</ExpireOnCutscene> | |||
<DieOnCutscene>false</DieOnCutscene> | |||
<LockPositionToLink>false</LockPositionToLink> | |||
<CollisionRadius>0</CollisionRadius> | |||
<AIDodgeRadius>0</AIDodgeRadius> | |||
<AIAlertRadius>0</AIAlertRadius> | |||
<FlyBySoundName /> | |||
</Options> | |||
<Properties> | |||
<HasVelocity>true</HasVelocity> | |||
<HasOrientation>true</HasOrientation> | |||
<HasPositionOffset>false</HasPositionOffset> | |||
<HasAttachmentMatrix>false</HasAttachmentMatrix> | |||
<HasUnknown>false</HasUnknown> | |||
<HasDecalState>false</HasDecalState> | |||
<HasTextureStartTick>true</HasTextureStartTick> | |||
<HasTextureTick>true</HasTextureTick> | |||
<HasDamageOwner>false</HasDamageOwner> | |||
<HasContrailData>false</HasContrailData> | |||
<HasLensFlareState>false</HasLensFlareState> | |||
<HasAttractor>false</HasAttractor> | |||
<HasCollisionCache>false</HasCollisionCache> | |||
</Properties> | |||
<Appearance> | |||
<DisplayType>Flat</DisplayType> | |||
<TexGeom>glass_shard</TexGeom> | |||
<Invisible>false</Invisible> | |||
<IsContrailEmitter>false</IsContrailEmitter> | |||
<ScaleToVelocity>false</ScaleToVelocity> | |||
<Scale>2.8</Scale> | |||
<UseSeparateYScale>false</UseSeparateYScale> | |||
<YScale>1</YScale> | |||
<Rotation>0</Rotation> | |||
<Alpha>1</Alpha> | |||
<XOffset>0</XOffset> | |||
<XShorten>0</XShorten> | |||
<UseSpecialTint>false</UseSpecialTint> | |||
<Tint>128 128 128</Tint> | |||
<FadeOutOnEdge>false</FadeOutOnEdge> | |||
<OneSidedEdgeFade>false</OneSidedEdgeFade> | |||
<EdgeFadeMin>0</EdgeFadeMin> | |||
<EdgeFadeMax>0</EdgeFadeMax> | |||
<MaxContrailDistance>0</MaxContrailDistance> | |||
<LensFlare>false</LensFlare> | |||
<LensFlareDistance>0</LensFlareDistance> | |||
<LensFlareFadeInFrames>0</LensFlareFadeInFrames> | |||
<LensFlareFadeOutFrames>0</LensFlareFadeOutFrames> | |||
<DecalFullBrightness>false</DecalFullBrightness> | |||
<MaxDecals>100</MaxDecals> | |||
<DecalFadeFrames>60</DecalFadeFrames> | |||
<DecalWrapAngle>60</DecalWrapAngle> | |||
</Appearance> | |||
<Attractor> | |||
<Target>None</Target> | |||
<Selector>Distance</Selector> | |||
<Class /> | |||
<MaxDistance>150</MaxDistance> | |||
<MaxAngle>30</MaxAngle> | |||
<AngleSelectMin>3</AngleSelectMin> | |||
<AngleSelectMax>20</AngleSelectMax> | |||
<AngleSelectWeight>3</AngleSelectWeight> | |||
</Attractor> | |||
<Variables> | |||
<Float Name="rotate_x"> | |||
<BellCurve Mean="0" StdDev="50" /> | |||
</Float> | |||
<Float Name="rotate_z"> | |||
<BellCurve Mean="0" StdDev="50" /> | |||
</Float> | |||
</Variables> | |||
<Emitters /> | |||
<Events> | |||
<Update> | |||
<MoveLine /> | |||
<MoveGravity> | |||
<Fraction>0.4</Fraction> | |||
</MoveGravity> | |||
<RotateZ> | |||
<Space>0</Space> | |||
<Rate>rotate_z</Rate> | |||
<RotateVelocity>0</RotateVelocity> | |||
</RotateZ> | |||
<RotateX> | |||
<Space>0</Space> | |||
<Rate>rotate_x</Rate> | |||
<RotateVelocity>0</RotateVelocity> | |||
</RotateX> | |||
</Update> | |||
<HitWall> | |||
<ImpulseSound> | |||
<Sound>glass_small</Sound> | |||
</ImpulseSound> | |||
<CollisionEffect> | |||
<Effect>glass_hit</Effect> | |||
<WallOffset>0.01</WallOffset> | |||
<Orientation>2</Orientation> | |||
<Attach>1</Attach> | |||
</CollisionEffect> | |||
<Die /> | |||
</HitWall><FONT COLOR="red"> | |||
<HitCharacter> | |||
<CollisionEffect> | |||
<Effect>glass_hit</Effect> | |||
<WallOffset>0.01</WallOffset> | |||
<Orientation>2</Orientation> | |||
<Attach>1</Attach> | |||
</CollisionEffect> | |||
<DamageChar> | |||
<Damage>8</Damage> | |||
</DamageChar> | |||
<Die /> | |||
</HitCharacter></FONT> | |||
<Lifetime> | |||
<FadeOut> | |||
<TimeToDie>1</TimeToDie> | |||
</FadeOut> | |||
</Lifetime> | |||
</Events> | |||
</Particle> | |||
</Oni> | |||
</Font> | |||
If you want to get really fancy, try changing <Damage>8</Damage> into something like... | |||
<Font size = 2> | |||
<Damage> | |||
<Random Min="8" Max="10" /> | |||
</Damage> | |||
</Font> | |||
This will make glass do random damage between 8 and 10 health points. | |||
---- | ---- | ||
Revision as of 09:55, 23 November 2008
| Oni ni Kanabô |
|---|
|
This is for various modifications of Oni's glass and its behaviour.
- Glass-breaking combos will be covered here as a specific case of melee modding
- Overview
We all know most of Oni's glass can be shot. However :
- glass can not be broken by combos or thrown/falling enemies
- glass can not be broken by some weapons (most annoyingly, the Scram Cannon)
- not all see-through surfaces are flagged as glass : they can't be shot
Ways of improving the above are :
- to affect glass-breaking particles to TRAM so that specific animations can break glass
- to modify specific projectiles (e.g. Scram missiles) so that they can break glass
- to track down specific parts of the environment, and flag them as (breakable) glass
Deadly glass
- Description
- Glass shards can be modified so that they hurt nearby characters when falling.
- See it in action
- Google video by EdT
- Get it as a .oni file
- http://gumby.oni2.net/AE/oni%20files/glass/BINA3RAPglass_shard.oni (already in AE, does 8 damage)
- Get the XML version
- http://gumby.oni2.net/AE/oni%20files/glass/XML/BINA3RAPglass_shard.xml
- Do it yourself
- Extract the BINA3RAPglass_shard.oni file as .xml.
- Add the part in red
- Change the "8" in <Damage>8</Damage> to what you want the damage to be.
<?xml version="1.0" encoding="utf-8"?>
<Oni Version="0.9.32.0">
<Particle Name="glass_shard">
<Options>
<Lifetime>10</Lifetime>
<DisableDetailLevel>Never</DisableDetailLevel>
<Decorative>true</Decorative>
<CollideWithWalls>true</CollideWithWalls>
<CollideWithChars>true</CollideWithChars>
<InitiallyHidden>false</InitiallyHidden>
<DrawAsSky>false</DrawAsSky>
<DontAttractThroughWalls>false</DontAttractThroughWalls>
<ExpireOnCutscene>false</ExpireOnCutscene>
<DieOnCutscene>false</DieOnCutscene>
<LockPositionToLink>false</LockPositionToLink>
<CollisionRadius>0</CollisionRadius>
<AIDodgeRadius>0</AIDodgeRadius>
<AIAlertRadius>0</AIAlertRadius>
<FlyBySoundName />
</Options>
<Properties>
<HasVelocity>true</HasVelocity>
<HasOrientation>true</HasOrientation>
<HasPositionOffset>false</HasPositionOffset>
<HasAttachmentMatrix>false</HasAttachmentMatrix>
<HasUnknown>false</HasUnknown>
<HasDecalState>false</HasDecalState>
<HasTextureStartTick>true</HasTextureStartTick>
<HasTextureTick>true</HasTextureTick>
<HasDamageOwner>false</HasDamageOwner>
<HasContrailData>false</HasContrailData>
<HasLensFlareState>false</HasLensFlareState>
<HasAttractor>false</HasAttractor>
<HasCollisionCache>false</HasCollisionCache>
</Properties>
<Appearance>
<DisplayType>Flat</DisplayType>
<TexGeom>glass_shard</TexGeom>
<Invisible>false</Invisible>
<IsContrailEmitter>false</IsContrailEmitter>
<ScaleToVelocity>false</ScaleToVelocity>
<Scale>2.8</Scale>
<UseSeparateYScale>false</UseSeparateYScale>
<YScale>1</YScale>
<Rotation>0</Rotation>
<Alpha>1</Alpha>
<XOffset>0</XOffset>
<XShorten>0</XShorten>
<UseSpecialTint>false</UseSpecialTint>
<Tint>128 128 128</Tint>
<FadeOutOnEdge>false</FadeOutOnEdge>
<OneSidedEdgeFade>false</OneSidedEdgeFade>
<EdgeFadeMin>0</EdgeFadeMin>
<EdgeFadeMax>0</EdgeFadeMax>
<MaxContrailDistance>0</MaxContrailDistance>
<LensFlare>false</LensFlare>
<LensFlareDistance>0</LensFlareDistance>
<LensFlareFadeInFrames>0</LensFlareFadeInFrames>
<LensFlareFadeOutFrames>0</LensFlareFadeOutFrames>
<DecalFullBrightness>false</DecalFullBrightness>
<MaxDecals>100</MaxDecals>
<DecalFadeFrames>60</DecalFadeFrames>
<DecalWrapAngle>60</DecalWrapAngle>
</Appearance>
<Attractor>
<Target>None</Target>
<Selector>Distance</Selector>
<Class />
<MaxDistance>150</MaxDistance>
<MaxAngle>30</MaxAngle>
<AngleSelectMin>3</AngleSelectMin>
<AngleSelectMax>20</AngleSelectMax>
<AngleSelectWeight>3</AngleSelectWeight>
</Attractor>
<Variables>
<Float Name="rotate_x">
<BellCurve Mean="0" StdDev="50" />
</Float>
<Float Name="rotate_z">
<BellCurve Mean="0" StdDev="50" />
</Float>
</Variables>
<Emitters />
<Events>
<Update>
<MoveLine />
<MoveGravity>
<Fraction>0.4</Fraction>
</MoveGravity>
<RotateZ>
<Space>0</Space>
<Rate>rotate_z</Rate>
<RotateVelocity>0</RotateVelocity>
</RotateZ>
<RotateX>
<Space>0</Space>
<Rate>rotate_x</Rate>
<RotateVelocity>0</RotateVelocity>
</RotateX>
</Update>
<HitWall>
<ImpulseSound>
<Sound>glass_small</Sound>
</ImpulseSound>
<CollisionEffect>
<Effect>glass_hit</Effect>
<WallOffset>0.01</WallOffset>
<Orientation>2</Orientation>
<Attach>1</Attach>
</CollisionEffect>
<Die />
</HitWall>
<HitCharacter>
<CollisionEffect>
<Effect>glass_hit</Effect>
<WallOffset>0.01</WallOffset>
<Orientation>2</Orientation>
<Attach>1</Attach>
</CollisionEffect>
<DamageChar>
<Damage>8</Damage>
</DamageChar>
<Die />
</HitCharacter>
<Lifetime>
<FadeOut>
<TimeToDie>1</TimeToDie>
</FadeOut>
</Lifetime>
</Events>
</Particle>
</Oni>
If you want to get really fancy, try changing <Damage>8</Damage> into something like...
<Damage>
<Random Min="8" Max="10" />
</Damage>
This will make glass do random damage between 8 and 10 health points.
Glass-breaking combos
- Basic hack description
- The glass can be broken by kicks after modifying the 3RAPh2h_dust_p01.BINA file.
- See it in action
- A few movies by geyser (WMV) :
- A snapshot by EdT :
- Get it as a patch
- No link so far, but there will be downloadable particle files (trails rather than dust) as well as TRAM particle tracks specifically adapted for them.
- Do it yourself (basic hack using the dust spawned by some combos)
- Open level0_Final.dat with OniUnPacker
- Use the Binary.raw editor to select the file 3RAPh2h_dust_p01.BINA
- Look at the chunk between 0x550 and 0x6F8
- Go to the 0x00 at 0x550 (0x00=0 is the ID of the "Linear Change" event)
- change it to 0x1E (0x1E=30 is the ID of the "Glass Charge" event)
- Go to the 0x00 at 0x0x634
- change it to 0x03 (type for the "radius" parameter of "Glass Charge" : float)
- Go to the 0x00000000 at 0x0x638
- change it to 0x00000040 or 0x00000041 (value for the "radius" parameter of "Glass Charge" : 2.0 or 8.0)
- NOTE TO EXPERTS : we've left the first argument of set 2 ("blast-vel" for "Glass Charge") as is. "Linear Change"s "rate" was of the right type (float), and the value (6.0) is nothing extreme.
- Look at the second variable of h2h_dust_p01 : it's the 0x34=52 byte chunk between 0x340 and 0x374.
- There's the name ("alpha") right at the start. The initialisation value you can see at 0x35C (it's a float, since the type at 0x358 is 0x03).
- If we just make this float 0.125 (make the 0x00000000 at 0x35C a 0x0000003E) we'll have 12.5%-transparent dust right away.
The changes will look like this:
Glass-breaking Scram Cannon
Getting there... that's almost a weapon-modding issue.
Flagging environment as glass
Getting there too... Hope to find the flag soon ^^
