AE:Glass: Difference between revisions
Jump to navigation
Jump to search
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 ^^