////////////////////////////////////////////////////////// // Item: Freeze Gun Beam // // Item Type: Weapon Primary Fire // // Description: This will give us our primary fire // // for our Freeze Gun. This will setup the// // effects of being hit by the beam, which // // will freeze them for a certain amount // // of time. // ////////////////////////////////////////////////////////// class FreezeGunBeam extends superShockBeamFire; var FreezeTimer MyFreezeTimer; var xPawn frozenActor; function TracePart(Vector Start, Vector End, Vector X, Rotator Dir, Pawn Ignored) { local Vector HitLocation, HitNormal; local Actor Other; Other = Ignored.Trace(HitLocation, HitNormal, End, Start, true); if ( (Other != None) && (Other != Ignored) ) { frozenActor = xPawn(Other); // set our current pawn as the actor just hit so we can freeze him/her if ( !Other.bWorldGeometry ) // As long as we didn't hit world geometry freeze it still { MyFreezeTimer = Spawn(class'FreezeGun.FreezeTimer',frozenActor); // Create a temporary pawn to store our frozen pawn MyFreezeTimer.freezeActor( frozenActor ); // call our class to freeze the actor just hit } HitNormal = Vect(0,0,0); } else { HitLocation = End; HitNormal = Vect(0,0,0); } /*if ( (Other != None) && (Other != Ignored) ) { if ( !Other.bWorldGeometry ) { Other.TakeDamage(DamageMax, Instigator, HitLocation, Momentum*X, DamageType); if ( Other.IsA( 'Vehicle' ) ) Other.SetPhysics(PHYS_KARMA); else Other.SetPhysics(PHYS_FALLING); HitNormal = Vect(0,0,0); if ( (Pawn(Other) != None) && (HitLocation != Start) && AllowMultiHit() ) TracePart(HitLocation,End,X,Dir,Pawn(Other)); } }*/ SpawnBeamEffect(Start, Dir, HitLocation, HitNormal, 0); } defaultproperties { DamageMin = 0 // The least amount of damage we can do DamageMax = 0 // How much the most damage we can do Momentum = 100 // we do not want our opponents to go flying when hit AmmoPerFire = 0 // we use up no ammo per shot FireRate = 0.5; // allows for faster rate of fire BeamEffectClass=Class'XWeapons.BlueSuperShockBeam' // use the blue beam }