AE:Glass
Jump to navigation
Jump to search
This page documents old modding efforts and is obsolete. Search the AEI for "Dangerous Glass" and "Glass Breaking Moves" to find mod packages that encompass most of what is discussed here. |
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
- 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
See OBD:BINA/TMBD