From 235e02cbb098794c07019a9ef0fb2d77d7fbfcbe Mon Sep 17 00:00:00 2001 From: Forrest Keller Date: Sat, 28 Oct 2017 18:39:01 -0500 Subject: [PATCH] Further improvments to the Demo system Alot of these did not work when they were made but seem to work now. --- ServerExt/Classes/ExtInventoryManager.uc | 21 --- ServerExt/Classes/ExtPlayerReplicationInfo.uc | 6 - ServerExt/Classes/ExtProj_DynamiteGrenade.uc | 154 ------------------ .../Classes/ExtProj_HighExplosive_M16M203.uc | 154 ------------------ .../Classes/ExtProj_HighExplosive_M79.uc | 154 ------------------ ServerExt/Classes/ExtProj_Rocket_RPG7.uc | 154 ------------------ ServerExt/Classes/ExtProj_Rocket_Seeker6.uc | 154 ------------------ ServerExt/Classes/ExtProj_Thrown_C4.uc | 154 ------------------ ServerExt/Classes/ExtWeapDef_Grenade_Demo.uc | 11 -- ServerExt/Classes/Ext_PerkDemolition.uc | 26 +-- ServerExt/Classes/Ext_TraitDemoNuke.uc | 12 +- 11 files changed, 13 insertions(+), 987 deletions(-) delete mode 100644 ServerExt/Classes/ExtProj_DynamiteGrenade.uc delete mode 100644 ServerExt/Classes/ExtProj_HighExplosive_M16M203.uc delete mode 100644 ServerExt/Classes/ExtProj_HighExplosive_M79.uc delete mode 100644 ServerExt/Classes/ExtProj_Rocket_RPG7.uc delete mode 100644 ServerExt/Classes/ExtProj_Rocket_Seeker6.uc delete mode 100644 ServerExt/Classes/ExtProj_Thrown_C4.uc delete mode 100644 ServerExt/Classes/ExtWeapDef_Grenade_Demo.uc diff --git a/ServerExt/Classes/ExtInventoryManager.uc b/ServerExt/Classes/ExtInventoryManager.uc index 7936904..5f6fc0d 100644 --- a/ServerExt/Classes/ExtInventoryManager.uc +++ b/ServerExt/Classes/ExtInventoryManager.uc @@ -37,27 +37,6 @@ simulated function Inventory CreateInventory(class NewInventoryItemCl return Super.CreateInventory(class'ExtWeap_Pistol_Dual9mm', bDoNotActivate); } - Switch(Wep.Class.Name) - { - Case 'KFWeap_GrenadeLauncher_M79': - Wep.WeaponProjectiles[0] = class'ExtProj_HighExplosive_M79'; - break; - Case 'KFWeap_RocketLauncher_RPG7': - Wep.WeaponProjectiles[0] = class'ExtProj_Rocket_RPG7'; - break; - Case 'KFWeap_AssaultRifle_M16M203': - Wep.WeaponProjectiles[1] = class'ExtProj_HighExplosive_M16M203'; - break; - Case 'KFWeap_Thrown_C4': - Wep.WeaponProjectiles[0] = class'ExtProj_Thrown_C4'; - break; - Case 'KFWeap_RocketLauncher_Seeker6': - Wep.WeaponProjectiles[0] = class'ExtProj_Rocket_Seeker6'; - break; - default: - break; - } - return Wep; } diff --git a/ServerExt/Classes/ExtPlayerReplicationInfo.uc b/ServerExt/Classes/ExtPlayerReplicationInfo.uc index a8c1bc8..83b356c 100644 --- a/ServerExt/Classes/ExtPlayerReplicationInfo.uc +++ b/ServerExt/Classes/ExtPlayerReplicationInfo.uc @@ -49,10 +49,6 @@ var transient color HUDPerkColor; var byte FixedData; var int RepPlayTime,RepKills,RepEXP; -// Perk related -var bool bNukeIsOn,bConcussiveIsOn,bForScienceOn,bHasSciEMP; -var float NukeTimeMult; - // Custom character stuff. var array CustomCharList; var repnotify FMyCustomChar CustomCharacter; @@ -78,8 +74,6 @@ replication RespawnCounter,AdminType,ECurrentPerk,ECurrentPerkLevel,ECurrentPerkPrestige,RepKills,RepEXP,RepLevelProgress,bIsDev,NameTag,FixedData,bHiddenUser,CustomCharacter,HasSupplier; if (bNetInitial || bInitialPT) RepPlayTime; - if ( true ) - bNukeIsOn, bConcussiveIsOn, NukeTimeMult; } simulated function PostBeginPlay() diff --git a/ServerExt/Classes/ExtProj_DynamiteGrenade.uc b/ServerExt/Classes/ExtProj_DynamiteGrenade.uc deleted file mode 100644 index a7fc326..0000000 --- a/ServerExt/Classes/ExtProj_DynamiteGrenade.uc +++ /dev/null @@ -1,154 +0,0 @@ -class ExtProj_DynamiteGrenade extends KFProj_DynamiteGrenade; - -simulated protected function PrepareExplosionTemplate() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super.PrepareExplosionTemplate(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - { - ExplosionTemplate = class'KFPerk_Demolitionist'.static.GetNukeExplosionTemplate(); - ExplosionTemplate.Damage = default.ExplosionTemplate.Damage * class'KFPerk_Demolitionist'.static.GetNukeDamageModifier(); - ExplosionTemplate.DamageRadius = default.ExplosionTemplate.DamageRadius * class'KFPerk_Demolitionist'.static.GetNukeRadiusModifier(); - ExplosionTemplate.DamageFalloffExponent = default.ExplosionTemplate.DamageFalloffExponent; - } - else if( MyPRI.bConcussiveIsOn ) - { - ExplosionTemplate.ExplosionEffects = AltExploEffects; - ExplosionTemplate.ExplosionSound = class'KFPerk_Demolitionist'.static.GetConcussiveExplosionSound(); - } - } -} - -simulated protected function SetExplosionActorClass() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super(KFProjectile).SetExplosionActorClass(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - ExplosionActorClass = class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass(); - } -} - -simulated function TriggerExplosion(Vector HitLocation, Vector HitNormal, Actor HitActor) -{ - local vector NudgedHitLocation, ExplosionDirection; - local Pawn P; - local ExtPlayerReplicationInfo MyPRI; - - if( bHasDisintegrated ) - { - return; - } - if (!bHasExploded) - { - // On local player or server, we cache off our time dilation setting here - if( WorldInfo.NetMode == NM_ListenServer || WorldInfo.NetMode == NM_DedicatedServer || InstigatorController != None ) - { - bWasTimeDilated = WorldInfo.TimeDilation < 1.f; - } - - // Stop ambient sounds when this projectile explodes - if( bStopAmbientSoundOnExplode ) - { - StopAmbientSound(); - } - - if (ExplosionTemplate != None) - { - StopSimulating(); - - // using a hit location slightly away from the impact point is nice for certain things - NudgedHitLocation = HitLocation + (HitNormal * 32.f); - - SetExplosionActorClass(); - if( ExplosionActorClass == class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass() ) - { - P = Pawn(HitActor); - if( P != none ) - { - NudgedHitLocation = P.Location - vect(0,0,1) * P.GetCollisionHeight(); - } - } - - ExplosionActor = Spawn(ExplosionActorClass, self,, NudgedHitLocation, rotator(HitNormal)); - if (ExplosionActor != None) - { - ExplosionActor.Instigator = Instigator; - ExplosionActor.InstigatorController = InstigatorController; - - PrepareExplosionTemplate(); - - // If the locations are zero (probably because this exploded in the air) set defaults - if( IsZero(HitLocation) ) - { - HitLocation = Location; - } - - if( IsZero(HitNormal) ) - { - HitNormal = vect(0,0,1); - } - - // these are needed for the decal tracing later in GameExplosionActor.Explode() - ExplosionTemplate.HitLocation = HitLocation;// NudgedHitLocation - ExplosionTemplate.HitNormal = HitNormal; - - // If desired, attach to mover if we hit one - if(bAttachExplosionToHitMover && InterpActor(HitActor) != None) - { - ExplosionActor.Attachee = HitActor; - ExplosionTemplate.bAttachExplosionEmitterToAttachee = TRUE; - ExplosionActor.SetBase(HitActor); - } - - // directional? - if (ExplosionTemplate.bDirectionalExplosion) - { - ExplosionDirection = GetExplosionDirection(HitNormal); - //DrawDebugLine(ExplosionActor.Location, ExplosionActor.Location+ExplosionDirection*64, 255, 255, 0, TRUE); - } - - // @todo: make this function responsible for setting explosion instance parameters, and take instance parameters - // out of GearExplosion (e.g. Attachee) - PrepareExplosionActor(ExplosionActor); - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none && KFExplosionActorLingering(ExplosionActor) != None ) - { - KFExplosionActorLingering(ExplosionActor).MaxTime *= MyPRI.NukeTimeMult; - KFExplosionActorLingering(ExplosionActor).LifeSpan *= MyPRI.NukeTimeMult; - } - - ExplosionActor.Explode(ExplosionTemplate, ExplosionDirection); // go bewm - } - - // done with it - if (!bPendingDelete && !bDeleteMe) - { - // defer destruction so any replication of explosion stuff can happen if necessary - DeferredDestroy(PostExplosionLifetime); - } - } - - bHasExploded = true; - } -} - -defaultproperties -{ -} \ No newline at end of file diff --git a/ServerExt/Classes/ExtProj_HighExplosive_M16M203.uc b/ServerExt/Classes/ExtProj_HighExplosive_M16M203.uc deleted file mode 100644 index cde24a4..0000000 --- a/ServerExt/Classes/ExtProj_HighExplosive_M16M203.uc +++ /dev/null @@ -1,154 +0,0 @@ -class ExtProj_HighExplosive_M16M203 extends KFProj_HighExplosive_M16M203; - -simulated protected function PrepareExplosionTemplate() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super.PrepareExplosionTemplate(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - { - ExplosionTemplate = class'KFPerk_Demolitionist'.static.GetNukeExplosionTemplate(); - ExplosionTemplate.Damage = default.ExplosionTemplate.Damage * class'KFPerk_Demolitionist'.static.GetNukeDamageModifier(); - ExplosionTemplate.DamageRadius = default.ExplosionTemplate.DamageRadius * class'KFPerk_Demolitionist'.static.GetNukeRadiusModifier(); - ExplosionTemplate.DamageFalloffExponent = default.ExplosionTemplate.DamageFalloffExponent; - } - else if( MyPRI.bConcussiveIsOn ) - { - ExplosionTemplate.ExplosionEffects = AltExploEffects; - ExplosionTemplate.ExplosionSound = class'KFPerk_Demolitionist'.static.GetConcussiveExplosionSound(); - } - } -} - -simulated protected function SetExplosionActorClass() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super(KFProjectile).SetExplosionActorClass(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - ExplosionActorClass = class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass(); - } -} - -simulated function TriggerExplosion(Vector HitLocation, Vector HitNormal, Actor HitActor) -{ - local vector NudgedHitLocation, ExplosionDirection; - local Pawn P; - local ExtPlayerReplicationInfo MyPRI; - - if( bHasDisintegrated ) - { - return; - } - if (!bHasExploded) - { - // On local player or server, we cache off our time dilation setting here - if( WorldInfo.NetMode == NM_ListenServer || WorldInfo.NetMode == NM_DedicatedServer || InstigatorController != None ) - { - bWasTimeDilated = WorldInfo.TimeDilation < 1.f; - } - - // Stop ambient sounds when this projectile explodes - if( bStopAmbientSoundOnExplode ) - { - StopAmbientSound(); - } - - if (ExplosionTemplate != None) - { - StopSimulating(); - - // using a hit location slightly away from the impact point is nice for certain things - NudgedHitLocation = HitLocation + (HitNormal * 32.f); - - SetExplosionActorClass(); - if( ExplosionActorClass == class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass() ) - { - P = Pawn(HitActor); - if( P != none ) - { - NudgedHitLocation = P.Location - vect(0,0,1) * P.GetCollisionHeight(); - } - } - - ExplosionActor = Spawn(ExplosionActorClass, self,, NudgedHitLocation, rotator(HitNormal)); - if (ExplosionActor != None) - { - ExplosionActor.Instigator = Instigator; - ExplosionActor.InstigatorController = InstigatorController; - - PrepareExplosionTemplate(); - - // If the locations are zero (probably because this exploded in the air) set defaults - if( IsZero(HitLocation) ) - { - HitLocation = Location; - } - - if( IsZero(HitNormal) ) - { - HitNormal = vect(0,0,1); - } - - // these are needed for the decal tracing later in GameExplosionActor.Explode() - ExplosionTemplate.HitLocation = HitLocation;// NudgedHitLocation - ExplosionTemplate.HitNormal = HitNormal; - - // If desired, attach to mover if we hit one - if(bAttachExplosionToHitMover && InterpActor(HitActor) != None) - { - ExplosionActor.Attachee = HitActor; - ExplosionTemplate.bAttachExplosionEmitterToAttachee = TRUE; - ExplosionActor.SetBase(HitActor); - } - - // directional? - if (ExplosionTemplate.bDirectionalExplosion) - { - ExplosionDirection = GetExplosionDirection(HitNormal); - //DrawDebugLine(ExplosionActor.Location, ExplosionActor.Location+ExplosionDirection*64, 255, 255, 0, TRUE); - } - - // @todo: make this function responsible for setting explosion instance parameters, and take instance parameters - // out of GearExplosion (e.g. Attachee) - PrepareExplosionActor(ExplosionActor); - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none && KFExplosionActorLingering(ExplosionActor) != None ) - { - KFExplosionActorLingering(ExplosionActor).MaxTime *= MyPRI.NukeTimeMult; - KFExplosionActorLingering(ExplosionActor).LifeSpan *= MyPRI.NukeTimeMult; - } - - ExplosionActor.Explode(ExplosionTemplate, ExplosionDirection); // go bewm - } - - // done with it - if (!bPendingDelete && !bDeleteMe) - { - // defer destruction so any replication of explosion stuff can happen if necessary - DeferredDestroy(PostExplosionLifetime); - } - } - - bHasExploded = true; - } -} - -defaultproperties -{ -} \ No newline at end of file diff --git a/ServerExt/Classes/ExtProj_HighExplosive_M79.uc b/ServerExt/Classes/ExtProj_HighExplosive_M79.uc deleted file mode 100644 index 13b22bb..0000000 --- a/ServerExt/Classes/ExtProj_HighExplosive_M79.uc +++ /dev/null @@ -1,154 +0,0 @@ -class ExtProj_HighExplosive_M79 extends KFProj_HighExplosive_M79; - -simulated protected function PrepareExplosionTemplate() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super.PrepareExplosionTemplate(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - { - ExplosionTemplate = class'KFPerk_Demolitionist'.static.GetNukeExplosionTemplate(); - ExplosionTemplate.Damage = default.ExplosionTemplate.Damage * class'KFPerk_Demolitionist'.static.GetNukeDamageModifier(); - ExplosionTemplate.DamageRadius = default.ExplosionTemplate.DamageRadius * class'KFPerk_Demolitionist'.static.GetNukeRadiusModifier(); - ExplosionTemplate.DamageFalloffExponent = default.ExplosionTemplate.DamageFalloffExponent; - } - else if( MyPRI.bConcussiveIsOn ) - { - ExplosionTemplate.ExplosionEffects = AltExploEffects; - ExplosionTemplate.ExplosionSound = class'KFPerk_Demolitionist'.static.GetConcussiveExplosionSound(); - } - } -} - -simulated protected function SetExplosionActorClass() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super(KFProjectile).SetExplosionActorClass(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - ExplosionActorClass = class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass(); - } -} - -simulated function TriggerExplosion(Vector HitLocation, Vector HitNormal, Actor HitActor) -{ - local vector NudgedHitLocation, ExplosionDirection; - local Pawn P; - local ExtPlayerReplicationInfo MyPRI; - - if( bHasDisintegrated ) - { - return; - } - if (!bHasExploded) - { - // On local player or server, we cache off our time dilation setting here - if( WorldInfo.NetMode == NM_ListenServer || WorldInfo.NetMode == NM_DedicatedServer || InstigatorController != None ) - { - bWasTimeDilated = WorldInfo.TimeDilation < 1.f; - } - - // Stop ambient sounds when this projectile explodes - if( bStopAmbientSoundOnExplode ) - { - StopAmbientSound(); - } - - if (ExplosionTemplate != None) - { - StopSimulating(); - - // using a hit location slightly away from the impact point is nice for certain things - NudgedHitLocation = HitLocation + (HitNormal * 32.f); - - SetExplosionActorClass(); - if( ExplosionActorClass == class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass() ) - { - P = Pawn(HitActor); - if( P != none ) - { - NudgedHitLocation = P.Location - vect(0,0,1) * P.GetCollisionHeight(); - } - } - - ExplosionActor = Spawn(ExplosionActorClass, self,, NudgedHitLocation, rotator(HitNormal)); - if (ExplosionActor != None) - { - ExplosionActor.Instigator = Instigator; - ExplosionActor.InstigatorController = InstigatorController; - - PrepareExplosionTemplate(); - - // If the locations are zero (probably because this exploded in the air) set defaults - if( IsZero(HitLocation) ) - { - HitLocation = Location; - } - - if( IsZero(HitNormal) ) - { - HitNormal = vect(0,0,1); - } - - // these are needed for the decal tracing later in GameExplosionActor.Explode() - ExplosionTemplate.HitLocation = HitLocation;// NudgedHitLocation - ExplosionTemplate.HitNormal = HitNormal; - - // If desired, attach to mover if we hit one - if(bAttachExplosionToHitMover && InterpActor(HitActor) != None) - { - ExplosionActor.Attachee = HitActor; - ExplosionTemplate.bAttachExplosionEmitterToAttachee = TRUE; - ExplosionActor.SetBase(HitActor); - } - - // directional? - if (ExplosionTemplate.bDirectionalExplosion) - { - ExplosionDirection = GetExplosionDirection(HitNormal); - //DrawDebugLine(ExplosionActor.Location, ExplosionActor.Location+ExplosionDirection*64, 255, 255, 0, TRUE); - } - - // @todo: make this function responsible for setting explosion instance parameters, and take instance parameters - // out of GearExplosion (e.g. Attachee) - PrepareExplosionActor(ExplosionActor); - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none && KFExplosionActorLingering(ExplosionActor) != None ) - { - KFExplosionActorLingering(ExplosionActor).MaxTime *= MyPRI.NukeTimeMult; - KFExplosionActorLingering(ExplosionActor).LifeSpan *= MyPRI.NukeTimeMult; - } - - ExplosionActor.Explode(ExplosionTemplate, ExplosionDirection); // go bewm - } - - // done with it - if (!bPendingDelete && !bDeleteMe) - { - // defer destruction so any replication of explosion stuff can happen if necessary - DeferredDestroy(PostExplosionLifetime); - } - } - - bHasExploded = true; - } -} - -defaultproperties -{ -} \ No newline at end of file diff --git a/ServerExt/Classes/ExtProj_Rocket_RPG7.uc b/ServerExt/Classes/ExtProj_Rocket_RPG7.uc deleted file mode 100644 index 99c1610..0000000 --- a/ServerExt/Classes/ExtProj_Rocket_RPG7.uc +++ /dev/null @@ -1,154 +0,0 @@ -class ExtProj_Rocket_RPG7 extends KFProj_Rocket_RPG7; - -simulated protected function PrepareExplosionTemplate() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super.PrepareExplosionTemplate(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - { - ExplosionTemplate = class'KFPerk_Demolitionist'.static.GetNukeExplosionTemplate(); - ExplosionTemplate.Damage = default.ExplosionTemplate.Damage * class'KFPerk_Demolitionist'.static.GetNukeDamageModifier(); - ExplosionTemplate.DamageRadius = default.ExplosionTemplate.DamageRadius * class'KFPerk_Demolitionist'.static.GetNukeRadiusModifier(); - ExplosionTemplate.DamageFalloffExponent = default.ExplosionTemplate.DamageFalloffExponent; - } - else if( MyPRI.bConcussiveIsOn ) - { - ExplosionTemplate.ExplosionEffects = AltExploEffects; - ExplosionTemplate.ExplosionSound = class'KFPerk_Demolitionist'.static.GetConcussiveExplosionSound(); - } - } -} - -simulated protected function SetExplosionActorClass() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super(KFProjectile).SetExplosionActorClass(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - ExplosionActorClass = class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass(); - } -} - -simulated function TriggerExplosion(Vector HitLocation, Vector HitNormal, Actor HitActor) -{ - local vector NudgedHitLocation, ExplosionDirection; - local Pawn P; - local ExtPlayerReplicationInfo MyPRI; - - if( bHasDisintegrated ) - { - return; - } - if (!bHasExploded) - { - // On local player or server, we cache off our time dilation setting here - if( WorldInfo.NetMode == NM_ListenServer || WorldInfo.NetMode == NM_DedicatedServer || InstigatorController != None ) - { - bWasTimeDilated = WorldInfo.TimeDilation < 1.f; - } - - // Stop ambient sounds when this projectile explodes - if( bStopAmbientSoundOnExplode ) - { - StopAmbientSound(); - } - - if (ExplosionTemplate != None) - { - StopSimulating(); - - // using a hit location slightly away from the impact point is nice for certain things - NudgedHitLocation = HitLocation + (HitNormal * 32.f); - - SetExplosionActorClass(); - if( ExplosionActorClass == class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass() ) - { - P = Pawn(HitActor); - if( P != none ) - { - NudgedHitLocation = P.Location - vect(0,0,1) * P.GetCollisionHeight(); - } - } - - ExplosionActor = Spawn(ExplosionActorClass, self,, NudgedHitLocation, rotator(HitNormal)); - if (ExplosionActor != None) - { - ExplosionActor.Instigator = Instigator; - ExplosionActor.InstigatorController = InstigatorController; - - PrepareExplosionTemplate(); - - // If the locations are zero (probably because this exploded in the air) set defaults - if( IsZero(HitLocation) ) - { - HitLocation = Location; - } - - if( IsZero(HitNormal) ) - { - HitNormal = vect(0,0,1); - } - - // these are needed for the decal tracing later in GameExplosionActor.Explode() - ExplosionTemplate.HitLocation = HitLocation;// NudgedHitLocation - ExplosionTemplate.HitNormal = HitNormal; - - // If desired, attach to mover if we hit one - if(bAttachExplosionToHitMover && InterpActor(HitActor) != None) - { - ExplosionActor.Attachee = HitActor; - ExplosionTemplate.bAttachExplosionEmitterToAttachee = TRUE; - ExplosionActor.SetBase(HitActor); - } - - // directional? - if (ExplosionTemplate.bDirectionalExplosion) - { - ExplosionDirection = GetExplosionDirection(HitNormal); - //DrawDebugLine(ExplosionActor.Location, ExplosionActor.Location+ExplosionDirection*64, 255, 255, 0, TRUE); - } - - // @todo: make this function responsible for setting explosion instance parameters, and take instance parameters - // out of GearExplosion (e.g. Attachee) - PrepareExplosionActor(ExplosionActor); - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none && KFExplosionActorLingering(ExplosionActor) != None ) - { - KFExplosionActorLingering(ExplosionActor).MaxTime *= MyPRI.NukeTimeMult; - KFExplosionActorLingering(ExplosionActor).LifeSpan *= MyPRI.NukeTimeMult; - } - - ExplosionActor.Explode(ExplosionTemplate, ExplosionDirection); // go bewm - } - - // done with it - if (!bPendingDelete && !bDeleteMe) - { - // defer destruction so any replication of explosion stuff can happen if necessary - DeferredDestroy(PostExplosionLifetime); - } - } - - bHasExploded = true; - } -} - -defaultproperties -{ -} \ No newline at end of file diff --git a/ServerExt/Classes/ExtProj_Rocket_Seeker6.uc b/ServerExt/Classes/ExtProj_Rocket_Seeker6.uc deleted file mode 100644 index 8d36751..0000000 --- a/ServerExt/Classes/ExtProj_Rocket_Seeker6.uc +++ /dev/null @@ -1,154 +0,0 @@ -class ExtProj_Rocket_Seeker6 extends KFProj_Rocket_Seeker6; - -simulated protected function PrepareExplosionTemplate() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super.PrepareExplosionTemplate(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - { - ExplosionTemplate = class'KFPerk_Demolitionist'.static.GetNukeExplosionTemplate(); - ExplosionTemplate.Damage = default.ExplosionTemplate.Damage * class'KFPerk_Demolitionist'.static.GetNukeDamageModifier(); - ExplosionTemplate.DamageRadius = default.ExplosionTemplate.DamageRadius * class'KFPerk_Demolitionist'.static.GetNukeRadiusModifier(); - ExplosionTemplate.DamageFalloffExponent = default.ExplosionTemplate.DamageFalloffExponent; - } - else if( MyPRI.bConcussiveIsOn ) - { - ExplosionTemplate.ExplosionEffects = AltExploEffects; - ExplosionTemplate.ExplosionSound = class'KFPerk_Demolitionist'.static.GetConcussiveExplosionSound(); - } - } -} - -simulated protected function SetExplosionActorClass() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super(KFProjectile).SetExplosionActorClass(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - ExplosionActorClass = class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass(); - } -} - -simulated function TriggerExplosion(Vector HitLocation, Vector HitNormal, Actor HitActor) -{ - local vector NudgedHitLocation, ExplosionDirection; - local Pawn P; - local ExtPlayerReplicationInfo MyPRI; - - if( bHasDisintegrated ) - { - return; - } - if (!bHasExploded) - { - // On local player or server, we cache off our time dilation setting here - if( WorldInfo.NetMode == NM_ListenServer || WorldInfo.NetMode == NM_DedicatedServer || InstigatorController != None ) - { - bWasTimeDilated = WorldInfo.TimeDilation < 1.f; - } - - // Stop ambient sounds when this projectile explodes - if( bStopAmbientSoundOnExplode ) - { - StopAmbientSound(); - } - - if (ExplosionTemplate != None) - { - StopSimulating(); - - // using a hit location slightly away from the impact point is nice for certain things - NudgedHitLocation = HitLocation + (HitNormal * 32.f); - - SetExplosionActorClass(); - if( ExplosionActorClass == class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass() ) - { - P = Pawn(HitActor); - if( P != none ) - { - NudgedHitLocation = P.Location - vect(0,0,1) * P.GetCollisionHeight(); - } - } - - ExplosionActor = Spawn(ExplosionActorClass, self,, NudgedHitLocation, rotator(HitNormal)); - if (ExplosionActor != None) - { - ExplosionActor.Instigator = Instigator; - ExplosionActor.InstigatorController = InstigatorController; - - PrepareExplosionTemplate(); - - // If the locations are zero (probably because this exploded in the air) set defaults - if( IsZero(HitLocation) ) - { - HitLocation = Location; - } - - if( IsZero(HitNormal) ) - { - HitNormal = vect(0,0,1); - } - - // these are needed for the decal tracing later in GameExplosionActor.Explode() - ExplosionTemplate.HitLocation = HitLocation;// NudgedHitLocation - ExplosionTemplate.HitNormal = HitNormal; - - // If desired, attach to mover if we hit one - if(bAttachExplosionToHitMover && InterpActor(HitActor) != None) - { - ExplosionActor.Attachee = HitActor; - ExplosionTemplate.bAttachExplosionEmitterToAttachee = TRUE; - ExplosionActor.SetBase(HitActor); - } - - // directional? - if (ExplosionTemplate.bDirectionalExplosion) - { - ExplosionDirection = GetExplosionDirection(HitNormal); - //DrawDebugLine(ExplosionActor.Location, ExplosionActor.Location+ExplosionDirection*64, 255, 255, 0, TRUE); - } - - // @todo: make this function responsible for setting explosion instance parameters, and take instance parameters - // out of GearExplosion (e.g. Attachee) - PrepareExplosionActor(ExplosionActor); - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none && KFExplosionActorLingering(ExplosionActor) != None ) - { - KFExplosionActorLingering(ExplosionActor).MaxTime *= MyPRI.NukeTimeMult; - KFExplosionActorLingering(ExplosionActor).LifeSpan *= MyPRI.NukeTimeMult; - } - - ExplosionActor.Explode(ExplosionTemplate, ExplosionDirection); // go bewm - } - - // done with it - if (!bPendingDelete && !bDeleteMe) - { - // defer destruction so any replication of explosion stuff can happen if necessary - DeferredDestroy(PostExplosionLifetime); - } - } - - bHasExploded = true; - } -} - -defaultproperties -{ -} \ No newline at end of file diff --git a/ServerExt/Classes/ExtProj_Thrown_C4.uc b/ServerExt/Classes/ExtProj_Thrown_C4.uc deleted file mode 100644 index c692b2b..0000000 --- a/ServerExt/Classes/ExtProj_Thrown_C4.uc +++ /dev/null @@ -1,154 +0,0 @@ -class ExtProj_Thrown_C4 extends KFProj_Thrown_C4; - -simulated protected function PrepareExplosionTemplate() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super.PrepareExplosionTemplate(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - { - ExplosionTemplate = class'KFPerk_Demolitionist'.static.GetNukeExplosionTemplate(); - ExplosionTemplate.Damage = default.ExplosionTemplate.Damage * class'KFPerk_Demolitionist'.static.GetNukeDamageModifier(); - ExplosionTemplate.DamageRadius = default.ExplosionTemplate.DamageRadius * class'KFPerk_Demolitionist'.static.GetNukeRadiusModifier(); - ExplosionTemplate.DamageFalloffExponent = default.ExplosionTemplate.DamageFalloffExponent; - } - else if( MyPRI.bConcussiveIsOn ) - { - ExplosionTemplate.ExplosionEffects = AltExploEffects; - ExplosionTemplate.ExplosionSound = class'KFPerk_Demolitionist'.static.GetConcussiveExplosionSound(); - } - } -} - -simulated protected function SetExplosionActorClass() -{ - local ExtPlayerReplicationInfo MyPRI; - - Super(KFProjectile).SetExplosionActorClass(); - - if(Instigator == None) - return; - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none ) - { - if( bWasTimeDilated && MyPRI.bNukeIsOn && class'KFPerk_Demolitionist'.static.ProjectileShouldNuke( self ) ) - ExplosionActorClass = class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass(); - } -} - -simulated function TriggerExplosion(Vector HitLocation, Vector HitNormal, Actor HitActor) -{ - local vector NudgedHitLocation, ExplosionDirection; - local Pawn P; - local ExtPlayerReplicationInfo MyPRI; - - if( bHasDisintegrated ) - { - return; - } - if (!bHasExploded) - { - // On local player or server, we cache off our time dilation setting here - if( WorldInfo.NetMode == NM_ListenServer || WorldInfo.NetMode == NM_DedicatedServer || InstigatorController != None ) - { - bWasTimeDilated = WorldInfo.TimeDilation < 1.f; - } - - // Stop ambient sounds when this projectile explodes - if( bStopAmbientSoundOnExplode ) - { - StopAmbientSound(); - } - - if (ExplosionTemplate != None) - { - StopSimulating(); - - // using a hit location slightly away from the impact point is nice for certain things - NudgedHitLocation = HitLocation + (HitNormal * 32.f); - - SetExplosionActorClass(); - if( ExplosionActorClass == class'KFPerk_Demolitionist'.static.GetNukeExplosionActorClass() ) - { - P = Pawn(HitActor); - if( P != none ) - { - NudgedHitLocation = P.Location - vect(0,0,1) * P.GetCollisionHeight(); - } - } - - ExplosionActor = Spawn(ExplosionActorClass, self,, NudgedHitLocation, rotator(HitNormal)); - if (ExplosionActor != None) - { - ExplosionActor.Instigator = Instigator; - ExplosionActor.InstigatorController = InstigatorController; - - PrepareExplosionTemplate(); - - // If the locations are zero (probably because this exploded in the air) set defaults - if( IsZero(HitLocation) ) - { - HitLocation = Location; - } - - if( IsZero(HitNormal) ) - { - HitNormal = vect(0,0,1); - } - - // these are needed for the decal tracing later in GameExplosionActor.Explode() - ExplosionTemplate.HitLocation = HitLocation;// NudgedHitLocation - ExplosionTemplate.HitNormal = HitNormal; - - // If desired, attach to mover if we hit one - if(bAttachExplosionToHitMover && InterpActor(HitActor) != None) - { - ExplosionActor.Attachee = HitActor; - ExplosionTemplate.bAttachExplosionEmitterToAttachee = TRUE; - ExplosionActor.SetBase(HitActor); - } - - // directional? - if (ExplosionTemplate.bDirectionalExplosion) - { - ExplosionDirection = GetExplosionDirection(HitNormal); - //DrawDebugLine(ExplosionActor.Location, ExplosionActor.Location+ExplosionDirection*64, 255, 255, 0, TRUE); - } - - // @todo: make this function responsible for setting explosion instance parameters, and take instance parameters - // out of GearExplosion (e.g. Attachee) - PrepareExplosionActor(ExplosionActor); - - MyPRI = ExtPlayerReplicationInfo(Instigator.PlayerReplicationInfo); - if( MyPRI != none && KFExplosionActorLingering(ExplosionActor) != None ) - { - KFExplosionActorLingering(ExplosionActor).MaxTime *= MyPRI.NukeTimeMult; - KFExplosionActorLingering(ExplosionActor).LifeSpan *= MyPRI.NukeTimeMult; - } - - ExplosionActor.Explode(ExplosionTemplate, ExplosionDirection); // go bewm - } - - // done with it - if (!bPendingDelete && !bDeleteMe) - { - // defer destruction so any replication of explosion stuff can happen if necessary - DeferredDestroy(PostExplosionLifetime); - } - } - - bHasExploded = true; - } -} - -defaultproperties -{ -} \ No newline at end of file diff --git a/ServerExt/Classes/ExtWeapDef_Grenade_Demo.uc b/ServerExt/Classes/ExtWeapDef_Grenade_Demo.uc deleted file mode 100644 index aabd6a5..0000000 --- a/ServerExt/Classes/ExtWeapDef_Grenade_Demo.uc +++ /dev/null @@ -1,11 +0,0 @@ -class ExtWeapDef_Grenade_Demo extends KFWeapDef_Grenade_Demo; - -static function string GetItemLocalization(string KeyName) -{ - return class'KFWeapDef_Grenade_Demo'.Static.GetItemLocalization(KeyName); -} - -DefaultProperties -{ - WeaponClassPath="ServerExt.ExtProj_DynamiteGrenade" -} diff --git a/ServerExt/Classes/Ext_PerkDemolition.uc b/ServerExt/Classes/Ext_PerkDemolition.uc index a5812cc..c9e0c88 100644 --- a/ServerExt/Classes/Ext_PerkDemolition.uc +++ b/ServerExt/Classes/Ext_PerkDemolition.uc @@ -21,26 +21,18 @@ simulated function bool GetUsingTactialReload( KFWeapon KFW ) return (IsWeaponOnPerk(KFW) ? Modifiers[5]<0.85 : false); } -simulated function bool IsConcussiveForceActive() -{ - return Modifiers[7] > 1.5; -} - simulated function float ApplyEffect( name Type, float Value, float Progress ) { - local ExtPlayerReplicationInfo MyPRI; + local KFPlayerReplicationInfo MyPRI; + local float DefValue; - MyPRI = ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo); + DefValue = Super.ApplyEffect(Type, Value, Progress); + MyPRI = KFPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo); - switch( Type ) - { - case 'KnockDown': - if( MyPRI != none ) - MyPRI.bConcussiveIsOn = IsConcussiveForceActive(); - break; - } + if( MyPRI != None && Type == 'KnockDown' ) + MyPRI.bConcussiveActive = Modifiers[7] > 1.5; - return Super.ApplyEffect(Type, Value, Progress); + return DefValue; } function OnWaveEnded() @@ -100,11 +92,11 @@ defaultproperties PrimaryMelee=class'KFWeap_Knife_Demolitionist' PrimaryWeapon=class'KFWeap_GrenadeLauncher_HX25' - PerkGrenade=class'ExtProj_DynamiteGrenade' + PerkGrenade=class'KFProj_DynamiteGrenade' PrimaryWeaponDef=class'KFWeapDef_HX25' KnifeWeaponDef=class'KFWeapDef_Knife_Demo' - GrenadeWeaponDef=class'ExtWeapDef_Grenade_Demo' + GrenadeWeaponDef=class'KFWeapDef_Grenade_Demo' AutoBuyLoadOutPath=(class'KFWeapDef_HX25', class'KFWeapDef_M79', class'KFWeapDef_M16M203', class'KFWeapDef_RPG7') diff --git a/ServerExt/Classes/Ext_TraitDemoNuke.uc b/ServerExt/Classes/Ext_TraitDemoNuke.uc index cb88375..b5fb5fa 100644 --- a/ServerExt/Classes/Ext_TraitDemoNuke.uc +++ b/ServerExt/Classes/Ext_TraitDemoNuke.uc @@ -31,12 +31,10 @@ static function TraitActivate( Ext_PerkBase Perk, byte Level, optional Ext_Trait local ExtPlayerReplicationInfo MyPRI; MyPRI = ExtPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo); - if( MyPRI == None ) + if( MyPRI == None || Ext_PerkDemolition(Perk) == None ) return; - MyPRI.bNukeIsOn = true; - MyPRI.NukeTimeMult = 1.0 + (((float(Level) - 1.f) * 2.f) / 100.f); - + MyPRI.bNukeActive = true; Ext_PerkDemolition(Perk).NukeDamageMult = 1.0 + (((float(Level) - 1.f) * 5.f) / 100.f); } @@ -45,12 +43,10 @@ static function TraitDeActivate( Ext_PerkBase Perk, byte Level, optional Ext_Tra local ExtPlayerReplicationInfo MyPRI; MyPRI = ExtPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo); - if( MyPRI == None ) + if( MyPRI == None || Ext_PerkDemolition(Perk) == None ) return; - MyPRI.bNukeIsOn = false; - MyPRI.NukeTimeMult = 1.0; - + MyPRI.bNukeActive = false; Ext_PerkDemolition(Perk).NukeDamageMult = 1.0; }