Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //=============================================================================
- // DynaMag.
- //=============================================================================
- class DynaMag expands AutoMag;
- var rotator SlowRotation;
- var() float SlowFactor;
- simulated event PreRender(Canvas C)
- {
- local int PlayerPitch, NewPitch;
- SlowRotation.Yaw += (Pawn(Owner).ViewRotation-SlowRotation).Yaw*SlowFactor;
- SlowRotation.Yaw = FClamp(SlowRotation.Yaw, Pawn(Owner).ViewRotation.Yaw-4096, Pawn(Owner).ViewRotation.Yaw+4096);
- PlayerPitch = Pawn(Owner).ViewRotation.Pitch;
- if(PlayerPitch > 18000)
- PlayerPitch = -(65536-PlayerPitch);
- NewPitch = SlowRotation.Pitch;
- NewPitch += (PlayerPitch - NewPitch)*SlowFactor;
- SlowRotation.Pitch = NewPitch;
- }
- simulated event RenderOverlays(Canvas C)
- {
- local bool bPlayerOwner;
- local int Hand;
- local rotator NewRot;
- if(bHideWeapon || (Owner == None))
- return;
- if(PlayerPawn(Owner) != None) {
- bPlayerOwner = true;
- Hand = PlayerPawn(Owner).Handedness; }
- if((Level.NetMode == NM_Client) && bPlayerOwner && (Hand == 2))
- { bHideWeapon = true; return; }
- if ( !bPlayerOwner || (PlayerPawn(Owner).Player == None) )
- PlayerPawn(Owner).WalkBob = vect(0,0,0);
- newRot = SlowRotation;
- SetLocation(Owner.Location + CalcWeaponOffset());
- if ( Hand == 0 ) newRot.Roll = -2 * Default.Rotation.Roll;
- else newRot.Roll = Default.Rotation.Roll * Hand;
- setRotation(newRot);
- C.DrawActor(self, false);
- }
- simulated final function vector CalcWeaponOffset()
- {
- local vector DrawOffset, WeaponBob;
- local Pawn PawnOwner;
- PawnOwner = Pawn(Owner);
- DrawOffset = ((0.01 * PlayerViewOffset) >> SlowRotation);
- if ( (Level.NetMode == NM_DedicatedServer)
- || ((Level.NetMode == NM_ListenServer) && (Owner.RemoteRole == ROLE_AutonomousProxy)) )
- DrawOffset += (PawnOwner.BaseEyeHeight * vect(0,0,1));
- else
- {
- DrawOffset += (PawnOwner.EyeHeight * vect(0,0,1));
- WeaponBob = BobDamping * PawnOwner.WalkBob;
- WeaponBob.Z = (0.45 + 0.55 * BobDamping) * PawnOwner.WalkBob.Z;
- DrawOffset += WeaponBob;
- }
- return DrawOffset;
- }
- function TraceFire( float Accuracy )
- {
- local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
- local actor Other;
- local Pawn PawnOwner;
- PawnOwner = Pawn(Owner);
- Owner.MakeNoise(PawnOwner.SoundDampening);
- GetAxes(SlowRotation,X,Y,Z);
- StartTrace = Owner.Location + CalcWeaponOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z;
- AdjustedAim = PawnOwner.AdjustAim(1000000, StartTrace, 2.75*AimError, False, False);
- EndTrace = StartTrace + Accuracy * (FRand() - 0.5 )* Y * 1000
- + Accuracy * (FRand() - 0.5 ) * Z * 1000;
- X = vector(AdjustedAim);
- EndTrace += (10000 * X);
- Other = PawnOwner.TraceShot(HitLocation,HitNormal,EndTrace,StartTrace);
- ProcessTraceHit(Other, HitLocation, HitNormal, X,Y,Z);
- }
- defaultproperties
- {
- SlowFactor=0.300000
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement