upload
This commit is contained in:
@ -43,7 +43,7 @@ defaultproperties
|
||||
//KDeathUpKick=120
|
||||
//KDeathVel=10
|
||||
|
||||
StumblePower=12
|
||||
StumblePower=48 //12
|
||||
GunHitPower=12
|
||||
|
||||
OverrideImpactEffect=ParticleSystem'WEP_HRG_BlastBrawlers_EMIT.FX_BlastBrawlers_Impact'
|
||||
|
@ -87,6 +87,7 @@ protected simulated function AffectsPawn(Pawn Victim, float DamageScale)
|
||||
if( HumanVictim != none && HumanVictim.GetExposureTo(Location) > 0 )
|
||||
{
|
||||
OwnerProjectile = KFProj_MedicGrenade(Owner);
|
||||
|
||||
if( OwnerProjectile != none )
|
||||
{
|
||||
bCanRepairArmor = OwnerProjectile.HealedPawns.Find( HumanVictim ) == INDEX_NONE;
|
||||
|
@ -180,7 +180,7 @@ protected simulated function bool DoExplosionDamage(bool bCauseDamage, bool bCau
|
||||
|
||||
if( bOnlyDamagePawns )
|
||||
{
|
||||
return ExplodePawns();
|
||||
return ExplodePawns(bCauseDamage);
|
||||
}
|
||||
|
||||
return super(KFExplosionActor).DoExplosionDamage(bCauseDamage, bCauseEffects);
|
||||
|
@ -62,7 +62,7 @@ function UpdateHealer(Optional bool bForce)
|
||||
}
|
||||
|
||||
|
||||
function ShowActiveIndicators( array<string> IconPathStrings )
|
||||
function ShowActiveIndicators( array<ActiveSkill> ActiveSkills )
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -48,6 +48,8 @@ var protected transient bool bWaveStarted;
|
||||
// When this is true next wave will be last
|
||||
var protected bool bGunGamePlayerOnLastGun;
|
||||
|
||||
var transient array<KFBarmwichBonfireVolume> BonfireVolumes;
|
||||
|
||||
/** Whether this game mode should play music from the get-go (lobby) */
|
||||
static function bool ShouldPlayMusicAtStart()
|
||||
{
|
||||
@ -75,6 +77,8 @@ event PostBeginPlay()
|
||||
TimeBetweenWaves = GetTraderTime();
|
||||
|
||||
bGunGamePlayerOnLastGun = false;
|
||||
|
||||
UpdateBonfires();
|
||||
}
|
||||
|
||||
/** Set up the spawning */
|
||||
@ -1144,6 +1148,8 @@ function WaveEnded(EWaveEndCondition WinCondition)
|
||||
return;
|
||||
}
|
||||
|
||||
ClearAllActorsFromBonfire();
|
||||
|
||||
if (WorldInfo.NetMode == NM_DedicatedServer)
|
||||
{
|
||||
scripttrace();
|
||||
@ -1202,28 +1208,9 @@ function WaveEnded(EWaveEndCondition WinCondition)
|
||||
}
|
||||
}
|
||||
|
||||
if (OutbreakEvent != none && OutbreakEvent.ActiveEvent.bGunGameMode)
|
||||
if (OutbreakEvent != none)
|
||||
{
|
||||
MyKFGRI.GunGameWavesCurrent += 1;
|
||||
|
||||
// If we unlocked last weapon we only finish if we completed the boss wave
|
||||
// If we didn't unlock to last weapon and we just finished last wave (before BOSS), repeat
|
||||
if (bGunGamePlayerOnLastGun)
|
||||
{
|
||||
MyKFGRI.bWaveGunGameIsFinal = true;
|
||||
|
||||
if (WaveNum < WaveMax)
|
||||
{
|
||||
WaveNum = WaveMax - 1;
|
||||
}
|
||||
}
|
||||
else if (WaveNum >= WaveMax - 1)
|
||||
{
|
||||
// Repeat wave before BOSS till forever
|
||||
WaveNum = WaveMax - 2;
|
||||
}
|
||||
|
||||
MyKFGRI.bNetDirty = true;
|
||||
OnOutbreakWaveWon();
|
||||
}
|
||||
|
||||
if (WaveNum < WaveMax)
|
||||
@ -1873,6 +1860,38 @@ function DebugKillZeds()
|
||||
}
|
||||
}
|
||||
|
||||
function OnOutbreakWaveWon() {}
|
||||
|
||||
function UpdateBonfires()
|
||||
{
|
||||
local KFBarmwichBonfireVolume BonfireVolume;
|
||||
|
||||
foreach AllActors(class'KFBarmwichBonfireVolume', BonfireVolume)
|
||||
{
|
||||
BonfireVolumes.AddItem(BonfireVolume);
|
||||
}
|
||||
}
|
||||
|
||||
function ClearAllActorsFromBonfire()
|
||||
{
|
||||
local KFBarmwichBonfireVolume BonfireVolume;
|
||||
|
||||
foreach BonfireVolumes(BonfireVolume)
|
||||
{
|
||||
BonfireVolume.ClearAllActors();
|
||||
}
|
||||
}
|
||||
|
||||
function ClearActorFromBonfire(Actor Other)
|
||||
{
|
||||
local KFBarmwichBonfireVolume BonfireVolume;
|
||||
|
||||
foreach BonfireVolumes(BonfireVolume)
|
||||
{
|
||||
BonfireVolume.ClearActor(Other);
|
||||
}
|
||||
}
|
||||
|
||||
DefaultProperties
|
||||
{
|
||||
TimeBetweenWaves=60 //This is going to be a difficulty setting later
|
||||
|
@ -607,7 +607,7 @@ function EndOfMatch(bool bVictory)
|
||||
KFPC.CompletedWeeklySurvival();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
super.EndOfMatch(bVictory);
|
||||
}
|
||||
|
||||
@ -988,7 +988,7 @@ function LoadGunGameWeapons(Controller NewPlayer)
|
||||
Weapon = KFWeapon(Inv);
|
||||
if (Weapon != none)
|
||||
{
|
||||
Weapon.GunGameRemove();
|
||||
Weapon.RemoveGun();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1108,37 +1108,43 @@ function ResetGunGame(KFPlayerController_WeeklySurvival KFPC_WS)
|
||||
function NotifyKilled(Controller Killer, Controller Killed, Pawn KilledPawn, class<DamageType> damageType )
|
||||
{
|
||||
local KFPawn_Monster KFPM;
|
||||
local KFPlayerController_WeeklySurvival KFPC_WS;
|
||||
local KFPlayerController_WeeklySurvival KFPC_WS_Killer, KFPC_WS_Killed;
|
||||
|
||||
super.NotifyKilled(Killer, Killed, KilledPawn, damageType);
|
||||
|
||||
if (!OutbreakEvent.ActiveEvent.bGunGameMode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// If pawn is monster increase gun game score for that monster
|
||||
|
||||
KFPM = KFPawn_Monster(KilledPawn);
|
||||
KFPC_WS = KFPlayerController_WeeklySurvival(Killer);
|
||||
KFPM = KFPawn_Monster(KilledPawn);
|
||||
KFPC_WS_Killer = KFPlayerController_WeeklySurvival(Killer);
|
||||
KFPC_WS_Killed = KFPlayerController_WeeklySurvival(Killed);
|
||||
|
||||
if (KFPM != none && KFPC_WS != none)
|
||||
{
|
||||
if (KFPC_WS.Pawn.Health > 0)
|
||||
if (OutbreakEvent.ActiveEvent.bGunGameMode)
|
||||
{
|
||||
// If pawn is monster increase gun game score for that monster
|
||||
|
||||
if (KFPM != none && KFPC_WS_Killer != none)
|
||||
{
|
||||
KFPC_WS.GunGameData.Score += KFPM.GunGameKilledScore;
|
||||
UpdateGunGameLevel(KFPC_WS);
|
||||
if (KFPC_WS_Killer.Pawn.Health > 0)
|
||||
{
|
||||
KFPC_WS_Killer.GunGameData.Score += KFPM.GunGameKilledScore;
|
||||
UpdateGunGameLevel(KFPC_WS_Killer);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// If pawn is human reset game score (we can just check Killed exists as Controller
|
||||
if (KFPC_WS_Killed != none)
|
||||
{
|
||||
ResetGunGame(KFPC_WS_Killed);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
if (OutbreakEvent.ActiveEvent.bVIPGameMode)
|
||||
{
|
||||
// If pawn is human reset game score (we can just check Killed exists as Controller)
|
||||
|
||||
KFPC_WS = KFPlayerController_WeeklySurvival(Killed);
|
||||
|
||||
if (KFPC_WS != none)
|
||||
if (KFPC_WS_Killed != none && KFPC_WS_Killed.VIPGameData.isVIP)
|
||||
{
|
||||
ResetGunGame(KFPC_WS);
|
||||
// UnregisterPlayer is done on the same frame but this function comes first..
|
||||
// we queue a petition to end the game if no vip is found
|
||||
SetTimer(1.5f, false, 'OnVIPDiesEndMatch');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1240,7 +1246,7 @@ function UpdateGunGameLevel(KFPlayerController_WeeklySurvival KFPC_WS)
|
||||
{
|
||||
// To prevent audio/vfx lock, while firing when removing the equipped weapon we do a proper gun remove
|
||||
// This new function manages it's state internally
|
||||
CurrentWeapon.GunGameRemove();
|
||||
CurrentWeapon.RemoveGun();
|
||||
}
|
||||
|
||||
if (class'KFPerk_SWAT'.static.Is9mm(CurrentWeapon))
|
||||
@ -1278,6 +1284,222 @@ function UpdateGunGameLevel(KFPlayerController_WeeklySurvival KFPC_WS)
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
function UnregisterPlayer(PlayerController PC)
|
||||
{
|
||||
local KFPlayerController_WeeklySurvival KFPC_WS;
|
||||
|
||||
super.UnregisterPlayer(PC);
|
||||
|
||||
KFPC_WS = KFPlayerController_WeeklySurvival(PC);
|
||||
if (OutbreakEvent.ActiveEvent.bVIPGameMode)
|
||||
{
|
||||
if (KFPC_WS != none && KFPC_WS.VIPGameData.IsVIP)
|
||||
{
|
||||
ChooseVIP(false, KFPC_WS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function WaveStarted()
|
||||
{
|
||||
Super.WaveStarted();
|
||||
|
||||
if (OutbreakEvent.ActiveEvent.bVIPGameMode)
|
||||
{
|
||||
if (WaveNum <= 1)
|
||||
{
|
||||
ChooseVIP(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function OnVIPDiesEndMatch()
|
||||
{
|
||||
local KFPlayerController KFPC;
|
||||
|
||||
foreach WorldInfo.AllControllers(class'KFPlayerController', KFPC)
|
||||
{
|
||||
KFPC.SetCameraMode('ThirdPerson');
|
||||
}
|
||||
|
||||
WaveEnded(WEC_TeamWipedOut);
|
||||
}
|
||||
|
||||
function ChooseVIP_SetupVIP()
|
||||
{
|
||||
local KFPlayerController_WeeklySurvival KFPC_WS, NewVIP;
|
||||
local KFGameReplicationInfo KFGRI;
|
||||
|
||||
NewVIP = none;
|
||||
KFGRI = KFGameReplicationInfo(WorldInfo.GRI);
|
||||
|
||||
foreach WorldInfo.AllControllers(class'KFPlayerController_WeeklySurvival', KFPC_WS)
|
||||
{
|
||||
if (KFPC_WS != none)
|
||||
{
|
||||
if (KFPC_WS.VIPGameData.IsVIP)
|
||||
{
|
||||
NewVIP = KFPC_WS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (NewVIP != none)
|
||||
{
|
||||
//`Log("Setup new VIP: " $NewVIP);
|
||||
|
||||
if (NewVIP.Pawn != none)
|
||||
{
|
||||
//`Log("Finished setup new VIP: " $NewVIP);
|
||||
|
||||
NewVIP.GetPerk().PerkSetOwnerHealthAndArmor(false);
|
||||
|
||||
if (NewVIP.VIPGameData.PendingHealthReset)
|
||||
{
|
||||
NewVIP.VIPGameData.PendingHealthReset = false;
|
||||
|
||||
// Change current health directly, Pawn.HealDamage does a lot of other stuff that can block the healing
|
||||
NewVIP.Pawn.Health = NewVIP.Pawn.HealthMax;
|
||||
}
|
||||
|
||||
// Replicate new data to clients
|
||||
KFGRI.UpdateVIPPlayer(KFPlayerReplicationInfo(NewVIP.PlayerReplicationInfo));
|
||||
KFGRI.UpdateVIPMaxHealth(NewVIP.Pawn.HealthMax);
|
||||
KFGRI.UpdateVIPCurrentHealth(NewVIP.Pawn.Health);
|
||||
|
||||
NewVIP.PlayVIPGameChosenSound(3.5f);
|
||||
|
||||
ClearTimer('ChooseVIP_SetupVIP');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ChooseVIP(bool ForceAddHealth, optional KFPlayerController_WeeklySurvival PlayerJustLeft = none)
|
||||
{
|
||||
local int RandomNumber;
|
||||
local KFPlayerController_WeeklySurvival KFPC_WS, CurrentVIP, NewVIP;
|
||||
local array<KFPlayerController_WeeklySurvival> PotentialVIP;
|
||||
local KFGameReplicationInfo KFGRI;
|
||||
|
||||
//`Log("ChooseVIP!!!!!");
|
||||
|
||||
ClearTimer('ChooseVIP_SetupVIP');
|
||||
|
||||
KFGRI = KFGameReplicationInfo(WorldInfo.GRI);
|
||||
|
||||
foreach WorldInfo.AllControllers(class'KFPlayerController_WeeklySurvival', KFPC_WS)
|
||||
{
|
||||
if (KFPC_WS != none)
|
||||
{
|
||||
if (KFPC_WS.VIPGameData.IsVIP == false && KFPC_WS.VIPGameData.WasVIP == false)
|
||||
{
|
||||
PotentialVIP.AddItem(KFPC_WS);
|
||||
}
|
||||
|
||||
if (KFPC_WS.VIPGameData.IsVIP)
|
||||
{
|
||||
CurrentVIP = KFPC_WS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (CurrentVIP != none)
|
||||
{
|
||||
//`Log("Remove old VIP: " $CurrentVIP);
|
||||
|
||||
CurrentVIP.VIPGameData.IsVIP = false;
|
||||
|
||||
CurrentVIP.GetPerk().PerkSetOwnerHealthAndArmor(false);
|
||||
}
|
||||
|
||||
// If there's no potential VIP we restart
|
||||
if (PotentialVIP.Length == 0)
|
||||
{
|
||||
foreach WorldInfo.AllControllers(class'KFPlayerController_WeeklySurvival', KFPC_WS)
|
||||
{
|
||||
if (KFPC_WS != none)
|
||||
{
|
||||
KFPC_WS.VIPGameData.WasVIP = false;
|
||||
|
||||
if (PlayerJustLeft == none
|
||||
|| PlayerJustLeft != KFPC_WS)
|
||||
{
|
||||
PotentialVIP.AddItem(KFPC_WS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (PotentialVIP.Length > 0)
|
||||
{
|
||||
RandomNumber = Rand(PotentialVIP.Length);
|
||||
|
||||
NewVIP = PotentialVIP[RandomNumber];
|
||||
|
||||
NewVIP.VIPGameData.IsVIP = true;
|
||||
NewVIP.VIPGameData.WasVIP = true;
|
||||
}
|
||||
|
||||
if (NewVIP != none)
|
||||
{
|
||||
if (ForceAddHealth || (KFGRI != none && KFGRI.bWaveIsActive == false))
|
||||
{
|
||||
NewVIP.VIPGameData.PendingHealthReset = true;
|
||||
}
|
||||
|
||||
// If there's no Pawn we have to wait on a Timer function
|
||||
if (NewVIP.Pawn != none)
|
||||
{
|
||||
ChooseVIP_SetupVIP();
|
||||
}
|
||||
else
|
||||
{
|
||||
SetTimer(0.25f, true, 'ChooseVIP_SetupVIP');
|
||||
}
|
||||
|
||||
ClearTimer('OnVIPDiesEndMatch');
|
||||
}
|
||||
}
|
||||
|
||||
function OnOutbreakWaveWon()
|
||||
{
|
||||
Super.OnOutbreakWaveWon();
|
||||
|
||||
// GunGame Mode
|
||||
if (OutbreakEvent.ActiveEvent.bGunGameMode)
|
||||
{
|
||||
MyKFGRI.GunGameWavesCurrent += 1;
|
||||
|
||||
// If we unlocked last weapon we only finish if we completed the boss wave
|
||||
// If we didn't unlock to last weapon and we just finished last wave (before BOSS), repeat
|
||||
if (bGunGamePlayerOnLastGun)
|
||||
{
|
||||
MyKFGRI.bWaveGunGameIsFinal = true;
|
||||
|
||||
if (WaveNum < WaveMax)
|
||||
{
|
||||
WaveNum = WaveMax - 1;
|
||||
}
|
||||
}
|
||||
else if (WaveNum >= WaveMax - 1)
|
||||
{
|
||||
// Repeat wave before BOSS till forever
|
||||
WaveNum = WaveMax - 2;
|
||||
}
|
||||
|
||||
MyKFGRI.bNetDirty = true;
|
||||
}
|
||||
|
||||
// VIP Mode
|
||||
if (OutbreakEvent.ActiveEvent.bVIPGameMode)
|
||||
{
|
||||
ChooseVIP(true);
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
//Overrides
|
||||
|
@ -198,19 +198,32 @@ simulated function bool CanActivateObjectiveByWeekly()
|
||||
{
|
||||
if (Role == Role_Authority)
|
||||
{
|
||||
if (KFGameInfo(WorldInfo.Game).OutbreakEvent != none
|
||||
&& KFGameInfo(WorldInfo.Game).OutbreakEvent.ActiveEvent.bGunGameMode)
|
||||
if (KFGameInfo(WorldInfo.Game).OutbreakEvent != none)
|
||||
{
|
||||
return false;
|
||||
if (KFGameInfo(WorldInfo.Game).OutbreakEvent.ActiveEvent.bGunGameMode)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (KFGameInfo(WorldInfo.Game).OutbreakEvent.ActiveEvent.bVIPGameMode)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (KFGameReplicationInfo(WorldInfo.GRI) != none
|
||||
&& KFGameReplicationInfo(WorldInfo.GRI).bIsWeeklyMode
|
||||
&& KFGameReplicationInfo(WorldInfo.GRI).CurrentWeeklyIndex == 16)
|
||||
if (KFGameReplicationInfo(WorldInfo.GRI) != none && KFGameReplicationInfo(WorldInfo.GRI).bIsWeeklyMode)
|
||||
{
|
||||
return false;
|
||||
if (KFGameReplicationInfo(WorldInfo.GRI).CurrentWeeklyIndex == 16)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (KFGameReplicationInfo(WorldInfo.GRI).CurrentWeeklyIndex == 17)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -920,7 +920,6 @@ defaultproperties
|
||||
bSpawnWeaponListAffectsSecondaryWeapons=true,
|
||||
OverrideItemPickupModifier= 0.5f, //1.0f, //2.0f, // 0.f,
|
||||
OverrideAmmoPickupModifier= 1.0f, //2.0f, //3.0f, // 0.01f,
|
||||
bOnlyArmorItemPickup=true,
|
||||
TraderTimeModifier=1.0f, // 0.1f,
|
||||
TimeBetweenWaves=30.f,
|
||||
bDisableAddDosh=true,
|
||||
@ -1190,6 +1189,37 @@ defaultproperties
|
||||
|
||||
)}
|
||||
|
||||
// VIP
|
||||
SetEvents[17]={(
|
||||
EventDifficulty=2,
|
||||
GameLength=GL_Normal,
|
||||
bVIPGameMode=true,
|
||||
VIPTargetting=(class'KFGameContent.KFPawn_ZedScrake'
|
||||
, class'KFGameContent.KFPawn_ZedFleshpound'
|
||||
, class'KFGameContent.KFPawn_ZedFleshpoundMini'
|
||||
, class'KFGameContent.KFPawn_ZedGorefast'
|
||||
, class'KFGameContent.KFPawn_ZedGorefastDualBlade'
|
||||
, class'KFGameContent.KFPawn_ZedClot_Cyst'
|
||||
, class'KFGameContent.KFPawn_ZedClot_Slasher'
|
||||
, class'KFGameContent.KFPawn_ZedClot_Alpha'
|
||||
, class'KFGameContent.KFPawn_ZedClot_AlphaKing'
|
||||
, class'KFGameContent.KFPawn_ZedBloat'
|
||||
, class'KFGameContent.KFPawn_ZedHusk'
|
||||
, class'KFGameContent.KFPawn_ZedSiren'
|
||||
, class'KFGameContent.KFPawn_ZedCrawler'
|
||||
, class'KFGameContent.KFPawn_ZedCrawlerKing'
|
||||
, class'KFGameContent.KFPawn_ZedStalker'
|
||||
, class'KFGameContent.KFPawn_ZedDAR_EMP'
|
||||
, class'KFGameContent.KFPawn_ZedDAR_Laser'
|
||||
, class'KFGameContent.KFPawn_ZedDAR_Rocket'
|
||||
, class'KFGameContent.KFPawn_ZedMatriarch'
|
||||
, class'KFGameContent.KFPawn_ZedPatriarch'
|
||||
, class'KFGameContent.KFPawn_ZedBloatKing'
|
||||
, class'KFGameContent.KFPawn_ZedBloatKingSubspawn'
|
||||
, class'KFGameContent.KFPawn_ZedFleshpoundKing'
|
||||
, class'KFGameContent.KFPawn_ZedHans'),
|
||||
)}
|
||||
|
||||
//Test events from here down. These don't end up in the regular rotation.
|
||||
// The override ID starts from one higher than the last SetEvents entry above.
|
||||
// Ex: Big head = 7, Horde = 8
|
||||
|
@ -440,7 +440,7 @@ function AdjustDamage(out int InDamage, out vector Momentum, Controller Instigat
|
||||
}
|
||||
}
|
||||
|
||||
function HandleAfflictionsOnHit(Controller DamageInstigator, vector HitDir, class<DamageType> DamageType, Actor DamageCauser)
|
||||
function HandleAfflictionsOnHit(Controller DamageInstigator, vector HitDir, class<KFDamageType> DamageType, Actor DamageCauser)
|
||||
{
|
||||
if (ShieldHealthPctByte == 0)
|
||||
{
|
||||
|
@ -39,6 +39,7 @@ state WaveState
|
||||
local TraceHitInfo HitInfo;
|
||||
local float Radius;
|
||||
local float DamageHead;
|
||||
local name HitBoneName;
|
||||
|
||||
if(bWaveActive)
|
||||
{
|
||||
@ -54,9 +55,17 @@ state WaveState
|
||||
if(DamageHead > 0)
|
||||
{
|
||||
//`Log("Take: "$Victim);
|
||||
//HitInfo.BoneName = 'head';
|
||||
|
||||
HitBoneName = Victim.HeadBoneName;
|
||||
|
||||
if(HitBoneName != `NAME_NONE)
|
||||
{
|
||||
HitInfo.BoneName = HitBoneName;
|
||||
}
|
||||
|
||||
//`Log("HitInfo.BoneName: "$HitInfo.BoneName);
|
||||
|
||||
Victim.TakeDamage(DamageHead * UpgradeDamageMod, InstigatorController, Victim.Location, Normal(Victim.Location - Instigator.Location), MyDamageType, HitInfo, (Owner != None) ? Owner : self);
|
||||
//Monster.PlayDismemberment(0, MyDamageType, WaveImpactMomentum);
|
||||
|
||||
if (Victim.Health <= 0)
|
||||
{
|
||||
|
@ -886,8 +886,8 @@ defaultproperties
|
||||
|
||||
// Camera Shake
|
||||
CamShake=CameraShake'WEP_Mine_Reconstructor_Arch.Camera_Shake'
|
||||
CamShakeInnerRadius=200
|
||||
CamShakeOuterRadius=400
|
||||
CamShakeInnerRadius=0
|
||||
CamShakeOuterRadius=0
|
||||
CamShakeFalloff=1.f
|
||||
bOrientCameraShakeTowardsEpicenter=true
|
||||
End Object
|
||||
@ -905,8 +905,8 @@ defaultproperties
|
||||
MaxDamageRadiusPerPercentage=340
|
||||
MinDamageRadiusPerPercentage=160
|
||||
|
||||
MaxDamagePerPercentage=350 //300
|
||||
MinDamagePerPercentage=35 //30
|
||||
MaxDamagePerPercentage=400 //350 //300
|
||||
MinDamagePerPercentage=40 //35 //30
|
||||
|
||||
MaxCollisionRadius=20
|
||||
MinCollisionRadius=10
|
||||
|
@ -998,7 +998,7 @@ defaultproperties
|
||||
|
||||
// Zooming/Position
|
||||
PlayerViewOffset = (X = 3.0, Y = 10, Z = -1)
|
||||
IronSightPosition = (X = 0, Y = 0, Z = 0)
|
||||
IronSightPosition = (X = 0, Y = 0.037, Z = 0.11)
|
||||
|
||||
// Ammo
|
||||
MagazineCapacity[0] = 50
|
||||
|
@ -73,7 +73,7 @@ defaultproperties
|
||||
DOF_FG_MaxNearBlurSize=2.5
|
||||
|
||||
// Zooming/Position
|
||||
IronSightPosition=(X=10,Y=0,Z=0) //x20
|
||||
IronSightPosition=(X=10,Y=-0.015,Z=0.09) //x20
|
||||
PlayerViewOffset=(X=30.0,Y=10,Z=-2.5) //x18 y9 z0
|
||||
|
||||
// Content
|
||||
|
@ -176,7 +176,7 @@ simulated function GetTurretSpawnLocationAndDir(out vector SpawnLocation, out ve
|
||||
}
|
||||
|
||||
/** Detonates the oldest turret */
|
||||
simulated function Detonate()
|
||||
simulated function Detonate(optional bool bKeepTurret = false)
|
||||
{
|
||||
local int i;
|
||||
local array<Actor> TurretsCopy;
|
||||
@ -187,10 +187,15 @@ simulated function Detonate()
|
||||
TurretsCopy = KFPC.DeployedTurrets;
|
||||
for (i = 0; i < TurretsCopy.Length; i++)
|
||||
{
|
||||
if (bKeepTurret && i == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
KFPawn_AutoTurret(TurretsCopy[i]).SetTurretState(ETS_Detonate);
|
||||
}
|
||||
|
||||
KFPC.DeployedTurrets.Remove(0, KFPC.DeployedTurrets.Length);
|
||||
KFPC.DeployedTurrets.Remove(bKeepTurret ? 1 : 0, KFPC.DeployedTurrets.Length);
|
||||
|
||||
SetReadyToUse(true);
|
||||
|
||||
@ -231,7 +236,17 @@ function SetOriginalValuesFromPickup( KFWeapon PickedUpWeapon )
|
||||
|
||||
if (PickedUpWeapon.KFPlayer != none && PickedUpWeapon.KFPlayer != KFPC)
|
||||
{
|
||||
KFPC.DeployedTurrets = PickedUpWeapon.KFPlayer.DeployedTurrets;
|
||||
for (i = 0; i < PickedUpWeapon.KFPlayer.DeployedTurrets.Length; i++)
|
||||
{
|
||||
KFPC.DeployedTurrets.AddItem(PickedUpWeapon.KFPlayer.DeployedTurrets[i]);
|
||||
}
|
||||
|
||||
PickedUpWeapon.KFPlayer.DeployedTurrets.Remove(0, PickedUpWeapon.KFPlayer.DeployedTurrets.Length);
|
||||
}
|
||||
|
||||
if (KFPC.DeployedTurrets.Length > 1)
|
||||
{
|
||||
Detonate(true);
|
||||
}
|
||||
|
||||
PickedUpWeapon.KFPlayer = none;
|
||||
|
@ -184,7 +184,7 @@ defaultproperties
|
||||
PlayerIronSightFOV=80
|
||||
|
||||
// Zooming/Position
|
||||
IronSightPosition=(X=3,Y=0,Z=0)
|
||||
IronSightPosition=(X=3,Y=-0.032,Z=-0.03)
|
||||
PlayerViewOffset=(X=5.0,Y=9,Z=-3)
|
||||
|
||||
// Depth of field
|
||||
|
@ -396,8 +396,13 @@ simulated protected function PrepareExplosion()
|
||||
KFPC = KFPlayerController(Instigator.Controller);
|
||||
if (KFPC != none)
|
||||
{
|
||||
`Log("RADIUS BEFORE: " $ExplosionTemplate.DamageRadius);
|
||||
|
||||
InstigatorPerk = KFPC.GetPerk();
|
||||
ExplosionTemplate.DamageRadius *= InstigatorPerk.GetAoERadiusModifier();
|
||||
|
||||
`Log("RADIUS BEFORE: " $ExplosionTemplate.DamageRadius);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -448,6 +453,9 @@ simulated function SpawnExplosionFromTemplate(KFGameExplosion Template)
|
||||
|
||||
ExploActor.Explode(Template, vector(SpawnRot));
|
||||
}
|
||||
|
||||
// Reset damage radius
|
||||
ExplosionTemplate.DamageRadius = StartingDamageRadius;
|
||||
}
|
||||
|
||||
simulated function CustomFire()
|
||||
|
@ -138,6 +138,8 @@ simulated function CustomFire()
|
||||
// tell remote clients that we fired, to trigger effects in third person
|
||||
IncrementFlashCount();
|
||||
|
||||
ExplosionTemplate.DamageRadius = StartingDamageRadius;
|
||||
|
||||
if ( bDebug )
|
||||
{
|
||||
DrawDebugCone(SpawnLoc, vector(SpawnRot), ExplosionTemplate.DamageRadius, ExplosionTemplate.DirectionalExplosionAngleDeg * DegToRad,
|
||||
|
@ -366,8 +366,8 @@ defaultproperties
|
||||
//WeaponUpgrades[1]=(IncrementDamage=1.4f,IncrementWeight=1, IncrementHealFullRecharge=.8)
|
||||
//WeaponUpgrades[2]=(IncrementDamage=1.8f,IncrementWeight=2, IncrementHealFullRecharge=.6)
|
||||
|
||||
WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.15f), (Stat=EWUS_Weight, Add=1), (Stat=EWUS_HealFullRecharge, Scale=0.9f)))
|
||||
WeaponUpgrades[2]=(Stats=((Stat=EWUS_Damage0, Scale=1.3f), (Stat=EWUS_Weight, Add=2), (Stat=EWUS_HealFullRecharge, Scale=0.8f)))
|
||||
WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.15f), (Stat=EWUS_Weight, Add=1)))
|
||||
WeaponUpgrades[2]=(Stats=((Stat=EWUS_Damage0, Scale=1.3f), (Stat=EWUS_Weight, Add=2)))
|
||||
|
||||
// From original KFWeap_RifleBase base class
|
||||
AimCorrectionSize=40.f
|
||||
|
@ -746,7 +746,7 @@ defaultproperties
|
||||
PlayerIronSightFOV=80
|
||||
|
||||
// Zooming/Position
|
||||
IronSightPosition=(X=3,Y=0,Z=0)
|
||||
IronSightPosition=(X=3,Y=-0.032,Z=-0.03)
|
||||
PlayerViewOffset=(X=5.0,Y=9,Z=-3)
|
||||
|
||||
// Depth of field
|
||||
|
@ -842,8 +842,8 @@ defaultproperties
|
||||
ValueIncreaseTime=0.2
|
||||
|
||||
//FOR LERPING DAMANGE
|
||||
MaxDamageByCharge=300 //250 //200 //120
|
||||
MinDamageByCharge=30 //25 //30
|
||||
MaxDamageByCharge=350 //300 //250 //200 //120
|
||||
MinDamageByCharge=35 //30 //25 //30
|
||||
// FOV
|
||||
Meshfov=80
|
||||
MeshIronSightFOV=65 //52
|
||||
@ -895,7 +895,7 @@ defaultproperties
|
||||
HippedRecoilModifier=1.5
|
||||
|
||||
// Inventory
|
||||
InventorySize=8
|
||||
InventorySize=7 //8
|
||||
GroupPriority=80 //75
|
||||
WeaponSelectTexture=Texture2D'WEP_UI_Mine_Reconstructor_TEX.UI_WeaponSelect_HMTechMineReconstructor' //@TODO: Replace me
|
||||
|
||||
|
@ -492,7 +492,7 @@ defaultproperties
|
||||
|
||||
// Zooming/Position
|
||||
PlayerViewOffset=(X=-15,Y=12,Z=-6)
|
||||
IronSightPosition=(X=-3,Y=0,Z=0)
|
||||
IronSightPosition=(X=-3,Y=0.145,Z=0)
|
||||
|
||||
// Content
|
||||
PackageKey="Blunderbuss"
|
||||
|
@ -121,7 +121,7 @@ defaultproperties
|
||||
|
||||
// Zooming/Position [FFERRANDO NEEDS TO BE UPDATED TO G18]
|
||||
PlayerViewOffset=(X=-15,Y=12,Z=-6)
|
||||
IronSightPosition=(X=0,Y=0,Z=0) //(X=-3,Y=-0.38,Z=-0.2)
|
||||
IronSightPosition=(X=0,Y=-0.12,Z=-0.1) //(X=-3,Y=-0.38,Z=-0.2)
|
||||
|
||||
// Content [FFERRANDO NEEDS TO BE UPDATED TO G18]
|
||||
PackageKey="G18C"
|
||||
|
@ -91,7 +91,7 @@ defaultproperties
|
||||
|
||||
// Zooming/Position
|
||||
PlayerViewOffset=(X=20.0,Y=11.0,Z=-2) //(X=15.0,Y=11.5,Z=-4)
|
||||
IronSightPosition=(X=30.0,Y=0,Z=0)
|
||||
IronSightPosition=(X=30.0,Y=-0.035,Z=-0.07)
|
||||
|
||||
// AI warning system
|
||||
bWarnAIWhenAiming=true
|
||||
|
@ -57,7 +57,7 @@ defaultproperties
|
||||
|
||||
// Zooming/Position
|
||||
PlayerViewOffset=(X=15.0,Y=11.5,Z=-4)
|
||||
IronSightPosition=(X=0.0,Y=0,Z=0)
|
||||
IronSightPosition=(X=0.0,Y=-0.016,Z=-0.016)
|
||||
|
||||
// AI warning system
|
||||
bWarnAIWhenAiming=true
|
||||
|
@ -509,7 +509,7 @@ defaultproperties
|
||||
|
||||
// Zooming/Position
|
||||
PlayerViewOffset=(X=3.0,Y=7,Z=-2)
|
||||
IronSightPosition=(X=-0.25,Y=0,Z=0) // any further back along X and the scope clips through the camera during firing
|
||||
IronSightPosition=(X=-0.25,Y=0.005,Z=-0.005) // any further back along X and the scope clips through the camera during firing
|
||||
|
||||
// AI warning system
|
||||
bWarnAIWhenAiming=true
|
||||
|
@ -137,7 +137,7 @@ simulated function bool FindTargets( out Pawn RecentlyLocked )
|
||||
local byte TeamNum;
|
||||
local vector AimStart, AimDir, TargetLoc, Projection, DirToPawn, LinePoint;
|
||||
local Actor HitActor;
|
||||
local float PointDistSQ, Score, BestScore;
|
||||
local float PointDistSQ, Score, BestScore, TargetSizeSQ;
|
||||
|
||||
TeamNum = Instigator.GetTeamNum();
|
||||
AimStart = GetSafeStartTraceLocation();
|
||||
@ -172,7 +172,11 @@ simulated function bool FindTargets( out Pawn RecentlyLocked )
|
||||
// Check to make sure target isn't too far from center
|
||||
PointDistToLine( TargetLoc, AimDir, AimStart, LinePoint );
|
||||
PointDistSQ = VSizeSQ( LinePoint - P.Location );
|
||||
if( PointDistSQ > MinTargetDistFromCrosshairSQ )
|
||||
|
||||
TargetSizeSQ = P.GetCollisionRadius() * 2.f;
|
||||
TargetSizeSQ *= TargetSizeSQ;
|
||||
|
||||
if( PointDistSQ > (TargetSizeSQ + MinTargetDistFromCrosshairSQ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ defaultproperties
|
||||
PlayerIronSightFOV=75
|
||||
|
||||
// Zooming/Position
|
||||
IronSightPosition=(X=15.f,Y=0.f,Z=0.0f)
|
||||
IronSightPosition=(X=15.f,Y=0.03f,Z=0.1f)
|
||||
PlayerViewOffset=(X=20.f,Y=9.5f,Z=-3.0f)
|
||||
|
||||
// Content
|
||||
|
@ -38,7 +38,7 @@ defaultproperties
|
||||
PlayerIronSightFOV=70
|
||||
|
||||
// Zooming/Position
|
||||
IronSightPosition=(X=8,Y=0,Z=0)
|
||||
IronSightPosition=(X=8,Y=0.01,Z=-0.04)
|
||||
PlayerViewOffset=(X=22,Y=10,Z=-4.5)
|
||||
|
||||
// Content
|
||||
|
@ -72,7 +72,7 @@ defaultproperties
|
||||
|
||||
// Zooming/Position
|
||||
PlayerViewOffset=(X=14.0,Y=6.5,Z=-3.5)
|
||||
IronSightPosition=(X=12.0,Y=0,Z=0)
|
||||
IronSightPosition=(X=12.0,Y=-0.03,Z=-0.07)
|
||||
|
||||
// Content
|
||||
PackageKey="Medic_Shotgun"
|
||||
|
Reference in New Issue
Block a user