AE:Glass
Jump to navigation
Jump to search
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 how much damage the glass should do
- Convert the xml back into a .oni file and import it back into your game data
<?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 ^^