style: empty line between functions

This commit is contained in:
GenZmeY 2020-11-29 00:54:57 +03:00
parent 8fa925e1e5
commit e68d21f1d9
137 changed files with 625 additions and 0 deletions

View File

@ -4,6 +4,7 @@ final function class<KFPerk> GetBasePerk()
{ {
return (ActivePerkManager!=None && ActivePerkManager.CurrentPerk!=None) ? ActivePerkManager.CurrentPerk.BasePerk : None; return (ActivePerkManager!=None && ActivePerkManager.CurrentPerk!=None) ? ActivePerkManager.CurrentPerk.BasePerk : None;
} }
final function Ext_PerkBase GetExtPerk() final function Ext_PerkBase GetExtPerk()
{ {
return ActivePerkManager!=None ? ActivePerkManager.CurrentPerk : None; return ActivePerkManager!=None ? ActivePerkManager.CurrentPerk : None;

View File

@ -27,6 +27,7 @@ final function FMyCustomChar LoadData()
R.AttachmentSkinIndices[2] = AttachmentSkin2; R.AttachmentSkinIndices[2] = AttachmentSkin2;
return R; return R;
} }
final function SaveData(FMyCustomChar R) final function SaveData(FMyCustomChar R)
{ {
HeadMeshIndex = R.HeadMeshIndex; HeadMeshIndex = R.HeadMeshIndex;

View File

@ -52,6 +52,7 @@ function UpdatePerk()
LastEXPValue = CurrentPerkEXP; LastEXPValue = CurrentPerkEXP;
} }
} }
function ShowXPBark(int DeltaXP, string IconPath, bool bIsCurrentPerk) function ShowXPBark(int DeltaXP, string IconPath, bool bIsCurrentPerk)
{ {
ActionScriptVoid("showXPBark"); ActionScriptVoid("showXPBark");

View File

@ -93,6 +93,7 @@ simulated function bool Died(Controller Killer, class<DamageType> damageType, ve
} }
return Super.Died(Killer, DamageType, HitLocation); return Super.Died(Killer, DamageType, HitLocation);
} }
simulated function BroadcastDeathMessage(Controller Killer); simulated function BroadcastDeathMessage(Controller Killer);
function SetBatteryRate(float Rate) function SetBatteryRate(float Rate)
@ -101,6 +102,7 @@ function SetBatteryRate(float Rate)
NVGBatteryDrainRate = Default.NVGBatteryDrainRate*Rate; NVGBatteryDrainRate = Default.NVGBatteryDrainRate*Rate;
ClientSetBatteryRate(Rate); ClientSetBatteryRate(Rate);
} }
simulated reliable client function ClientSetBatteryRate(float Rate) simulated reliable client function ClientSetBatteryRate(float Rate)
{ {
BatteryDrainRate = Default.BatteryDrainRate*Rate; BatteryDrainRate = Default.BatteryDrainRate*Rate;
@ -257,6 +259,7 @@ function PlayHit(float Damage, Controller InstigatedBy, vector HitLocation, clas
} }
Super.PlayHit(Damage,InstigatedBy,HitLocation,damageType,Momentum,HitInfo); Super.PlayHit(Damage,InstigatedBy,HitLocation,damageType,Momentum,HitInfo);
} }
event Landed(vector HitNormal, actor FloorActor) event Landed(vector HitNormal, actor FloorActor)
{ {
local float ExcessSpeed; local float ExcessSpeed;
@ -313,6 +316,7 @@ function bool DoJump(bool bUpdating)
} }
return false; return false;
} }
simulated function ResetBHopAccel(optional bool bSkipRep) // Set on Landed, or Tick if falling 2D speed is too low. simulated function ResetBHopAccel(optional bool bSkipRep) // Set on Landed, or Tick if falling 2D speed is too low.
{ {
if (BHopAccelSpeed>0) if (BHopAccelSpeed>0)
@ -325,6 +329,7 @@ simulated function ResetBHopAccel(optional bool bSkipRep) // Set on Landed, or T
NotifyHasStopped(); NotifyHasStopped();
} }
} }
function UpdateGroundSpeed() function UpdateGroundSpeed()
{ {
local KFInventoryManager InvM; local KFInventoryManager InvM;
@ -384,10 +389,12 @@ function DelayedRagdoll()
{ {
SetFeignDeath(2.f+FRand()*3.f); SetFeignDeath(2.f+FRand()*3.f);
} }
exec function FeignDeath(float Time) exec function FeignDeath(float Time)
{ {
SetFeignDeath(Time); SetFeignDeath(Time);
} }
function SetFeignDeath(float Time) function SetFeignDeath(float Time)
{ {
if (WorldInfo.NetMode!=NM_Client && !bFeigningDeath && Health>0 && bCanBecomeRagdoll && NoRagdollChance<1.f && (NoRagdollChance==0.f || FRand()>NoRagdollChance)) if (WorldInfo.NetMode!=NM_Client && !bFeigningDeath && Health>0 && bCanBecomeRagdoll && NoRagdollChance<1.f && (NoRagdollChance==0.f || FRand()>NoRagdollChance))
@ -397,6 +404,7 @@ function SetFeignDeath(float Time)
SetTimer(Time,false,'UnsetFeignDeath'); SetTimer(Time,false,'UnsetFeignDeath');
} }
} }
function UnsetFeignDeath() function UnsetFeignDeath()
{ {
if (bFeigningDeath) if (bFeigningDeath)
@ -560,6 +568,7 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
SetRotation(NewRotation); SetRotation(NewRotation);
} }
} }
final function vector PickNearestNode() final function vector PickNearestNode()
{ {
local NavigationPoint N,Best; local NavigationPoint N,Best;
@ -576,6 +585,7 @@ final function vector PickNearestNode()
} }
return (Best!=None ? Best.Location : Location); return (Best!=None ? Best.Location : Location);
} }
simulated function bool SetFeignEndLocation(vector HitLocation, vector FeignLocation) simulated function bool SetFeignEndLocation(vector HitLocation, vector FeignLocation)
{ {
local vector NewDest; local vector NewDest;
@ -607,6 +617,7 @@ simulated function bool SetFeignEndLocation(vector HitLocation, vector FeignLoca
return false; return false;
} }
simulated function bool CheckValidLocation(vector FeignLocation) simulated function bool CheckValidLocation(vector FeignLocation)
{ {
local vector HitLocation, HitNormal, DestFinalZ; local vector HitLocation, HitNormal, DestFinalZ;
@ -627,6 +638,7 @@ simulated function bool CheckValidLocation(vector FeignLocation)
} }
return false; return false;
} }
simulated function SetPawnRBChannels(bool bRagdollMode) simulated function SetPawnRBChannels(bool bRagdollMode)
{ {
if (bRagdollMode) if (bRagdollMode)
@ -649,6 +661,7 @@ simulated function SetPawnRBChannels(bool bRagdollMode)
Mesh.SetRBCollidesWithChannel(RBCC_BlockingVolume,FALSE); Mesh.SetRBCollidesWithChannel(RBCC_BlockingVolume,FALSE);
} }
} }
simulated function PlayRagdollDeath(class<DamageType> DamageType, vector HitLoc) simulated function PlayRagdollDeath(class<DamageType> DamageType, vector HitLoc)
{ {
local TraceHitInfo HitInfo; local TraceHitInfo HitInfo;
@ -693,6 +706,7 @@ simulated function PlayRagdollDeath(class<DamageType> DamageType, vector HitLoc)
} }
} }
} }
simulated function StartFeignDeathRecoveryAnim() simulated function StartFeignDeathRecoveryAnim()
{ {
if (FPBodyMesh!=None && !bFPLegsAttached && bOnFirstPerson && Class'ExtPlayerController'.Default.bShowFPLegs) if (FPBodyMesh!=None && !bFPLegsAttached && bOnFirstPerson && Class'ExtPlayerController'.Default.bShowFPLegs)
@ -740,6 +754,7 @@ simulated event FellOutOfWorld(class<DamageType> dmgType)
if (Role==ROLE_Authority && NextRedeemTimer<WorldInfo.TimeSeconds) // Make sure to not to spam deathmessages while ghosting. if (Role==ROLE_Authority && NextRedeemTimer<WorldInfo.TimeSeconds) // Make sure to not to spam deathmessages while ghosting.
Super.FellOutOfWorld(dmgType); Super.FellOutOfWorld(dmgType);
} }
simulated event OutsideWorldBounds() simulated event OutsideWorldBounds()
{ {
if (Role==ROLE_Authority && NextRedeemTimer<WorldInfo.TimeSeconds) if (Role==ROLE_Authority && NextRedeemTimer<WorldInfo.TimeSeconds)

View File

@ -21,6 +21,7 @@ function InitializeMenu(KFGFxMoviePlayer_Manager InManager)
InitCharacterMenu(); InitCharacterMenu();
// TraderItems = KFGameReplicationInfo(GetPC().WorldInfo.GRI).TraderItems; // TraderItems = KFGameReplicationInfo(GetPC().WorldInfo.GRI).TraderItems;
} }
function InitCharacterMenu() function InitCharacterMenu()
{ {
ExtPRI = ExtPlayerReplicationInfo(GetPC().PlayerReplicationInfo); ExtPRI = ExtPlayerReplicationInfo(GetPC().PlayerReplicationInfo);
@ -211,6 +212,7 @@ final function string GetMenuName(Object Obj)
{ {
return Obj==None ? "Empty" : Repl(string(Obj.Name),"_"," "); return Obj==None ? "Empty" : Repl(string(Obj.Name),"_"," ");
} }
final function string GetMenuNameStr(string ObjName) final function string GetMenuNameStr(string ObjName)
{ {
local int i; local int i;

View File

@ -22,6 +22,7 @@ function OnOpen()
ExUpdateContainers(ExtPrevPerk); ExUpdateContainers(ExtPrevPerk);
SetBool("locked", true); SetBool("locked", true);
} }
final function ExUpdateContainers(Ext_PerkBase PerkClass) final function ExUpdateContainers(Ext_PerkBase PerkClass)
{ {
LastPerkLevel = PerkClass.CurrentLevel; LastPerkLevel = PerkClass.CurrentLevel;
@ -68,6 +69,7 @@ function Callback_PerkSelected(byte NewPerkIndex, bool bClickedIndex)
ExtKFPC.PendingPerkClass = ExtPrevPerk.Class; ExtKFPC.PendingPerkClass = ExtPrevPerk.Class;
ExtKFPC.SwitchToPerk(ExtPrevPerk.Class); ExtKFPC.SwitchToPerk(ExtPrevPerk.Class);
} }
function Callback_SkillSelectionOpened(); function Callback_SkillSelectionOpened();
defaultproperties defaultproperties

View File

@ -8,10 +8,12 @@ function InitializeMenu(KFGFxMoviePlayer_Manager InManager)
Super.InitializeMenu(InManager); Super.InitializeMenu(InManager);
ExtKFPC = ExtPlayerController (GetPC()); ExtKFPC = ExtPlayerController (GetPC());
} }
function int GetPerkIndex() function int GetPerkIndex()
{ {
return (ExtKFPC.ActivePerkManager!=None ? Max(ExtKFPC.ActivePerkManager.UserPerks.Find(ExtKFPC.ActivePerkManager.CurrentPerk),0) : 0); return (ExtKFPC.ActivePerkManager!=None ? Max(ExtKFPC.ActivePerkManager.UserPerks.Find(ExtKFPC.ActivePerkManager.CurrentPerk),0) : 0);
} }
function UpdatePlayerInfo() function UpdatePlayerInfo()
{ {
if (ExtKFPC != none && PlayerInfoContainer != none) if (ExtKFPC != none && PlayerInfoContainer != none)

View File

@ -24,6 +24,7 @@ event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget)
return Super.WidgetInitialized(WidgetName,WidgetPath,Widget); return Super.WidgetInitialized(WidgetName,WidgetPath,Widget);
} }
} }
function LaunchMenus(optional bool bForceSkipLobby) function LaunchMenus(optional bool bForceSkipLobby)
{ {
local GFxWidgetBinding WidgetBinding; local GFxWidgetBinding WidgetBinding;

View File

@ -46,6 +46,7 @@ final function SetGrenadeCap(byte AddedCap)
if (RepState==REP_Done) if (RepState==REP_Done)
ClientSetGrenadeCap(MaxGrenadeCount); ClientSetGrenadeCap(MaxGrenadeCount);
} }
simulated reliable client function ClientSetGrenadeCap(byte NewCap) simulated reliable client function ClientSetGrenadeCap(byte NewCap)
{ {
MaxGrenadeCount = NewCap; MaxGrenadeCount = NewCap;
@ -63,6 +64,7 @@ function bool ApplyPerkClass(class<Ext_PerkBase> P)
} }
return false; return false;
} }
function bool ApplyPerkName(string S) function bool ApplyPerkName(string S)
{ {
local int i; local int i;
@ -75,6 +77,7 @@ function bool ApplyPerkName(string S)
} }
return false; return false;
} }
function ApplyPerk(Ext_PerkBase P) function ApplyPerk(Ext_PerkBase P)
{ {
local KFPawn_Human HP; local KFPawn_Human HP;
@ -142,6 +145,7 @@ function ApplyPerk(Ext_PerkBase P)
} }
} }
} }
simulated final function Ext_PerkBase FindPerk(class<Ext_PerkBase> P) simulated final function Ext_PerkBase FindPerk(class<Ext_PerkBase> P)
{ {
local int i; local int i;
@ -186,10 +190,12 @@ simulated function InitPerks()
} }
} }
} }
function CheckPlayTime() function CheckPlayTime()
{ {
++TotalPlayTime; // Stats. ++TotalPlayTime; // Stats.
} }
function ServerInitPerks() function ServerInitPerks()
{ {
local int i; local int i;
@ -209,6 +215,7 @@ simulated function RegisterPerk(Ext_PerkBase P)
UserPerks[UserPerks.Length] = P; UserPerks[UserPerks.Length] = P;
P.PerkManager = Self; P.PerkManager = Self;
} }
simulated function UnregisterPerk(Ext_PerkBase P) simulated function UnregisterPerk(Ext_PerkBase P)
{ {
UserPerks.RemoveItem(P); UserPerks.RemoveItem(P);
@ -415,6 +422,7 @@ function InitiateClientRep()
RepIndex = 0; RepIndex = 0;
SetTimer(0.01,true,'ReplicateTimer'); SetTimer(0.01,true,'ReplicateTimer');
} }
function ReplicateTimer() function ReplicateTimer()
{ {
switch (RepState) switch (RepState)
@ -478,123 +486,150 @@ simulated function ModifySpeed(out float Speed)
if (CurrentPerk!=None) if (CurrentPerk!=None)
Speed *= CurrentPerk.Modifiers[0]; Speed *= CurrentPerk.Modifiers[0];
} }
function ModifyDamageGiven(out int InDamage, optional Actor DamageCauser, optional KFPawn_Monster MyKFPM, optional KFPlayerController DamageInstigator, optional class<KFDamageType> DamageType, optional int HitZoneIdx) function ModifyDamageGiven(out int InDamage, optional Actor DamageCauser, optional KFPawn_Monster MyKFPM, optional KFPlayerController DamageInstigator, optional class<KFDamageType> DamageType, optional int HitZoneIdx)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifyDamageGiven(InDamage,DamageCauser,MyKFPM,DamageInstigator,DamageType,HitZoneIdx); CurrentPerk.ModifyDamageGiven(InDamage,DamageCauser,MyKFPM,DamageInstigator,DamageType,HitZoneIdx);
} }
simulated function ModifyDamageTaken(out int InDamage, optional class<DamageType> DamageType, optional Controller InstigatedBy) simulated function ModifyDamageTaken(out int InDamage, optional class<DamageType> DamageType, optional Controller InstigatedBy)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifyDamageTaken(InDamage,DamageType,InstigatedBy); CurrentPerk.ModifyDamageTaken(InDamage,DamageType,InstigatedBy);
} }
simulated function ModifyRecoil(out float CurrentRecoilModifier, KFWeapon KFW) simulated function ModifyRecoil(out float CurrentRecoilModifier, KFWeapon KFW)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifyRecoil(CurrentRecoilModifier,KFW); CurrentPerk.ModifyRecoil(CurrentRecoilModifier,KFW);
} }
simulated function ModifySpread(out float InSpread) simulated function ModifySpread(out float InSpread)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifySpread(InSpread); CurrentPerk.ModifySpread(InSpread);
} }
simulated function ModifyRateOfFire(out float InRate, KFWeapon KFW) simulated function ModifyRateOfFire(out float InRate, KFWeapon KFW)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifyRateOfFire(InRate,KFW); CurrentPerk.ModifyRateOfFire(InRate,KFW);
} }
simulated function float GetReloadRateScale(KFWeapon KFW) simulated function float GetReloadRateScale(KFWeapon KFW)
{ {
return (CurrentPerk!=None ? CurrentPerk.GetReloadRateScale(KFW) : 1.f); return (CurrentPerk!=None ? CurrentPerk.GetReloadRateScale(KFW) : 1.f);
} }
simulated function bool GetUsingTactialReload(KFWeapon KFW) simulated function bool GetUsingTactialReload(KFWeapon KFW)
{ {
return (CurrentPerk!=None ? CurrentPerk.GetUsingTactialReload(KFW) : false); return (CurrentPerk!=None ? CurrentPerk.GetUsingTactialReload(KFW) : false);
} }
function ModifyHealth(out int InHealth) function ModifyHealth(out int InHealth)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifyHealth(InHealth); CurrentPerk.ModifyHealth(InHealth);
} }
function ModifyArmor(out byte MaxArmor) function ModifyArmor(out byte MaxArmor)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifyArmor(MaxArmor); CurrentPerk.ModifyArmor(MaxArmor);
} }
function float GetKnockdownPowerModifier(optional class<DamageType> DamageType, optional byte BodyPart, optional bool bIsSprinting=false) function float GetKnockdownPowerModifier(optional class<DamageType> DamageType, optional byte BodyPart, optional bool bIsSprinting=false)
{ {
return (CurrentPerk!=None ? CurrentPerk.GetKnockdownPowerModifier() : 1.f); return (CurrentPerk!=None ? CurrentPerk.GetKnockdownPowerModifier() : 1.f);
} }
function float GetStumblePowerModifier(optional KFPawn KFP, optional class<KFDamageType> DamageType, optional out float CooldownModifier, optional byte BodyPart) function float GetStumblePowerModifier(optional KFPawn KFP, optional class<KFDamageType> DamageType, optional out float CooldownModifier, optional byte BodyPart)
{ {
return (CurrentPerk!=None ? CurrentPerk.GetKnockdownPowerModifier() : 1.f); return (CurrentPerk!=None ? CurrentPerk.GetKnockdownPowerModifier() : 1.f);
} }
function float GetStunPowerModifier(optional class<DamageType> DamageType, optional byte HitZoneIdx) function float GetStunPowerModifier(optional class<DamageType> DamageType, optional byte HitZoneIdx)
{ {
return (CurrentPerk!=None ? CurrentPerk.GetStunPowerModifier(DamageType,HitZoneIdx) : 1.f); return (CurrentPerk!=None ? CurrentPerk.GetStunPowerModifier(DamageType,HitZoneIdx) : 1.f);
} }
simulated function ModifyMeleeAttackSpeed(out float InDuration, KFWeapon KFW) simulated function ModifyMeleeAttackSpeed(out float InDuration, KFWeapon KFW)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifyMeleeAttackSpeed(InDuration); CurrentPerk.ModifyMeleeAttackSpeed(InDuration);
} }
simulated function class<KFProj_Grenade> GetGrenadeClass() simulated function class<KFProj_Grenade> GetGrenadeClass()
{ {
return (CurrentPerk!=None ? CurrentPerk.GrenadeClass : GrenadeClass); return (CurrentPerk!=None ? CurrentPerk.GrenadeClass : GrenadeClass);
} }
simulated function ModifyWeldingRate(out float FastenRate, out float UnfastenRate) simulated function ModifyWeldingRate(out float FastenRate, out float UnfastenRate)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifyWeldingRate(FastenRate,UnfastenRate); CurrentPerk.ModifyWeldingRate(FastenRate,UnfastenRate);
} }
simulated function bool HasNightVision() simulated function bool HasNightVision()
{ {
return (CurrentPerk!=None ? CurrentPerk.bHasNightVision : false); return (CurrentPerk!=None ? CurrentPerk.bHasNightVision : false);
} }
function bool RepairArmor(Pawn HealTarget) function bool RepairArmor(Pawn HealTarget)
{ {
return (CurrentPerk!=None ? CurrentPerk.RepairArmor(HealTarget) : false); return (CurrentPerk!=None ? CurrentPerk.RepairArmor(HealTarget) : false);
} }
function bool ModifyHealAmount(out float HealAmount) function bool ModifyHealAmount(out float HealAmount)
{ {
return (CurrentPerk!=None ? CurrentPerk.ModifyHealAmount(HealAmount) : false); return (CurrentPerk!=None ? CurrentPerk.ModifyHealAmount(HealAmount) : false);
} }
function bool CanNotBeGrabbed() function bool CanNotBeGrabbed()
{ {
return (CurrentPerk!=None ? !CurrentPerk.bCanBeGrabbed : false); return (CurrentPerk!=None ? !CurrentPerk.bCanBeGrabbed : false);
} }
simulated function ModifyMagSizeAndNumber(KFWeapon KFW, out int MagazineCapacity, optional array< Class<KFPerk> > WeaponPerkClass, optional bool bSecondary=false, optional name WeaponClassname) simulated function ModifyMagSizeAndNumber(KFWeapon KFW, out int MagazineCapacity, optional array< Class<KFPerk> > WeaponPerkClass, optional bool bSecondary=false, optional name WeaponClassname)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifyMagSizeAndNumber(KFW,MagazineCapacity,WeaponPerkClass,bSecondary,WeaponClassname); CurrentPerk.ModifyMagSizeAndNumber(KFW,MagazineCapacity,WeaponPerkClass,bSecondary,WeaponClassname);
} }
simulated function ModifySpareAmmoAmount(KFWeapon KFW, out int PrimarySpareAmmo, optional const out STraderItem TraderItem, optional bool bSecondary=false) simulated function ModifySpareAmmoAmount(KFWeapon KFW, out int PrimarySpareAmmo, optional const out STraderItem TraderItem, optional bool bSecondary=false)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifySpareAmmoAmount(KFW,PrimarySpareAmmo,TraderItem,bSecondary); CurrentPerk.ModifySpareAmmoAmount(KFW,PrimarySpareAmmo,TraderItem,bSecondary);
} }
simulated function ModifyMaxSpareAmmoAmount(KFWeapon KFW, out int SpareAmmoCapacity, optional const out STraderItem TraderItem, optional bool bSecondary=false) simulated function ModifyMaxSpareAmmoAmount(KFWeapon KFW, out int SpareAmmoCapacity, optional const out STraderItem TraderItem, optional bool bSecondary=false)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifySpareAmmoAmount(KFW,SpareAmmoCapacity,TraderItem,bSecondary); CurrentPerk.ModifySpareAmmoAmount(KFW,SpareAmmoCapacity,TraderItem,bSecondary);
} }
simulated function bool ShouldMagSizeModifySpareAmmo(KFWeapon KFW, optional Class<KFPerk> WeaponPerkClass) simulated function bool ShouldMagSizeModifySpareAmmo(KFWeapon KFW, optional Class<KFPerk> WeaponPerkClass)
{ {
return (CurrentPerk!=None ? CurrentPerk.ShouldMagSizeModifySpareAmmo(KFW,WeaponPerkClass) : false); return (CurrentPerk!=None ? CurrentPerk.ShouldMagSizeModifySpareAmmo(KFW,WeaponPerkClass) : false);
} }
simulated function ModifyHealerRechargeTime(out float RechargeRate) simulated function ModifyHealerRechargeTime(out float RechargeRate)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifyHealerRechargeTime(RechargeRate); CurrentPerk.ModifyHealerRechargeTime(RechargeRate);
} }
simulated function bool CanExplosiveWeld() simulated function bool CanExplosiveWeld()
{ {
return (CurrentPerk!=None ? CurrentPerk.bExplosiveWeld : false); return (CurrentPerk!=None ? CurrentPerk.bExplosiveWeld : false);
} }
simulated function bool IsOnContactActive() simulated function bool IsOnContactActive()
{ {
return (CurrentPerk!=None ? CurrentPerk.bExplodeOnContact : false); return (CurrentPerk!=None ? CurrentPerk.bExplodeOnContact : false);
} }
function bool CanSpreadNapalm() function bool CanSpreadNapalm()
{ {
if (CurrentPerk!=None && CurrentPerk.bNapalmFire && LastNapalmTime!=WorldInfo.TimeSeconds) if (CurrentPerk!=None && CurrentPerk.bNapalmFire && LastNapalmTime!=WorldInfo.TimeSeconds)
@ -604,34 +639,41 @@ function bool CanSpreadNapalm()
} }
return false; return false;
} }
simulated function bool IsRangeActive() simulated function bool IsRangeActive()
{ {
return MyPRI!=None ? MyPRI.bExtraFireRange : false; return MyPRI!=None ? MyPRI.bExtraFireRange : false;
} }
simulated function DrawSpecialPerkHUD(Canvas C) simulated function DrawSpecialPerkHUD(Canvas C)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.DrawSpecialPerkHUD(C); CurrentPerk.DrawSpecialPerkHUD(C);
} }
function PlayerKilled(KFPawn_Monster Victim, class<DamageType> DamageType) function PlayerKilled(KFPawn_Monster Victim, class<DamageType> DamageType)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.PlayerKilled(Victim,DamageType); CurrentPerk.PlayerKilled(Victim,DamageType);
} }
function ModifyBloatBileDoT(out float DoTScaler) function ModifyBloatBileDoT(out float DoTScaler)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.ModifyBloatBileDoT(DoTScaler); CurrentPerk.ModifyBloatBileDoT(DoTScaler);
} }
simulated function bool GetIsUberAmmoActive(KFWeapon KFW) simulated function bool GetIsUberAmmoActive(KFWeapon KFW)
{ {
return (CurrentPerk!=None ? CurrentPerk.GetIsUberAmmoActive(KFW) : false); return (CurrentPerk!=None ? CurrentPerk.GetIsUberAmmoActive(KFW) : false);
} }
function UpdatePerkHeadShots(ImpactInfo Impact, class<DamageType> DamageType, int NumHit) function UpdatePerkHeadShots(ImpactInfo Impact, class<DamageType> DamageType, int NumHit)
{ {
if (CurrentPerk!=None) if (CurrentPerk!=None)
CurrentPerk.UpdatePerkHeadShots(Impact,DamageType,NumHit); CurrentPerk.UpdatePerkHeadShots(Impact,DamageType,NumHit);
} }
function CheckForAirborneAgent(KFPawn HealTarget, class<DamageType> DamType, int HealAmount) function CheckForAirborneAgent(KFPawn HealTarget, class<DamageType> DamType, int HealAmount)
{ {
if (!bCurrentlyHealing && CurrentPerk!=None) if (!bCurrentlyHealing && CurrentPerk!=None)
@ -642,6 +684,7 @@ function CheckForAirborneAgent(KFPawn HealTarget, class<DamageType> DamType, int
bCurrentlyHealing = false; bCurrentlyHealing = false;
} }
} }
simulated function float GetZedTimeModifier(KFWeapon W) simulated function float GetZedTimeModifier(KFWeapon W)
{ {
return (CurrentPerk!=None ? CurrentPerk.GetZedTimeModifier(W) : 0.f); return (CurrentPerk!=None ? CurrentPerk.GetZedTimeModifier(W) : 0.f);
@ -652,6 +695,7 @@ function bool IsAcidicCompoundActive()
{ {
return (CurrentPerk!=None ? CurrentPerk.bToxicDart : false); return (CurrentPerk!=None ? CurrentPerk.bToxicDart : false);
} }
function ModifyACDamage(out int InDamage) function ModifyACDamage(out int InDamage)
{ {
if (CurrentPerk!=None && CurrentPerk.bToxicDart) if (CurrentPerk!=None && CurrentPerk.bToxicDart)
@ -663,10 +707,12 @@ function bool CouldBeZedShrapnel(class<KFDamageType> KFDT)
{ {
return (CurrentPerk!=None ? (CurrentPerk.bFireExplode && class<KFDT_Fire>(KFDT)!=None) : false); return (CurrentPerk!=None ? (CurrentPerk.bFireExplode && class<KFDT_Fire>(KFDT)!=None) : false);
} }
simulated function bool ShouldShrapnel() simulated function bool ShouldShrapnel()
{ {
return (CurrentPerk!=None ? (CurrentPerk.bFireExplode && Rand(3)==0) : false); return (CurrentPerk!=None ? (CurrentPerk.bFireExplode && Rand(3)==0) : false);
} }
function GameExplosion GetExplosionTemplate() function GameExplosion GetExplosionTemplate()
{ {
return class'KFPerk_Firebug'.Default.ExplosionTemplate; return class'KFPerk_Firebug'.Default.ExplosionTemplate;
@ -677,10 +723,12 @@ function OnWaveEnded()
{ {
CurrentPerk.OnWaveEnded(); CurrentPerk.OnWaveEnded();
} }
function NotifyZedTimeStarted() function NotifyZedTimeStarted()
{ {
CurrentPerk.NotifyZedTimeStarted(); CurrentPerk.NotifyZedTimeStarted();
} }
simulated function float GetZedTimeExtensions(byte Level) simulated function float GetZedTimeExtensions(byte Level)
{ {
return CurrentPerk.GetZedTimeExtensions(Level); return CurrentPerk.GetZedTimeExtensions(Level);
@ -691,14 +739,17 @@ simulated function bool HasHeavyArmor()
{ {
return (CurrentPerk!=None && CurrentPerk.bHeavyArmor); return (CurrentPerk!=None && CurrentPerk.bHeavyArmor);
} }
simulated function float GetIronSightSpeedModifier(KFWeapon KFW) simulated function float GetIronSightSpeedModifier(KFWeapon KFW)
{ {
return (CurrentPerk!=None ? CurrentPerk.GetIronSightSpeedModifier(KFW) : 1.f); return (CurrentPerk!=None ? CurrentPerk.GetIronSightSpeedModifier(KFW) : 1.f);
} }
simulated function float GetCrouchSpeedModifier(KFWeapon KFW) simulated function float GetCrouchSpeedModifier(KFWeapon KFW)
{ {
return (CurrentPerk!=None ? CurrentPerk.GetIronSightSpeedModifier(KFW) : 1.f); return (CurrentPerk!=None ? CurrentPerk.GetIronSightSpeedModifier(KFW) : 1.f);
} }
simulated function bool ShouldKnockDownOnBump() simulated function bool ShouldKnockDownOnBump()
{ {
return (CurrentPerk!=None && CurrentPerk.bHasSWATEnforcer); return (CurrentPerk!=None && CurrentPerk.bHasSWATEnforcer);
@ -709,22 +760,27 @@ simulated function bool ShouldRandSirenResist()
{ {
return (Ext_PerkDemolition(CurrentPerk)!=None ? Ext_PerkDemolition(CurrentPerk).bSirenResistance : false); return (Ext_PerkDemolition(CurrentPerk)!=None ? Ext_PerkDemolition(CurrentPerk).bSirenResistance : false);
} }
simulated function bool IsAoEActive() simulated function bool IsAoEActive()
{ {
return (Ext_PerkDemolition(CurrentPerk)!=None ? Ext_PerkDemolition(CurrentPerk).AOEMult > 1.0f : false); return (Ext_PerkDemolition(CurrentPerk)!=None ? Ext_PerkDemolition(CurrentPerk).AOEMult > 1.0f : false);
} }
simulated function bool ShouldSacrifice() simulated function bool ShouldSacrifice()
{ {
return (Ext_PerkDemolition(CurrentPerk)!=None ? (Ext_PerkDemolition(CurrentPerk).bCanUseSacrifice && !Ext_PerkDemolition(CurrentPerk).bUsedSacrifice) : false); return (Ext_PerkDemolition(CurrentPerk)!=None ? (Ext_PerkDemolition(CurrentPerk).bCanUseSacrifice && !Ext_PerkDemolition(CurrentPerk).bUsedSacrifice) : false);
} }
simulated function bool ShouldNeverDud() simulated function bool ShouldNeverDud()
{ {
return (Ext_PerkDemolition(CurrentPerk)!=None ? Ext_PerkDemolition(CurrentPerk).bProfessionalActive : false); return (Ext_PerkDemolition(CurrentPerk)!=None ? Ext_PerkDemolition(CurrentPerk).bProfessionalActive : false);
} }
function NotifyPerkSacrificeExploded() function NotifyPerkSacrificeExploded()
{ {
if (Ext_PerkDemolition(CurrentPerk) != none) Ext_PerkDemolition(CurrentPerk).bUsedSacrifice = true; if (Ext_PerkDemolition(CurrentPerk) != none) Ext_PerkDemolition(CurrentPerk).bUsedSacrifice = true;
} }
simulated function float GetAoERadiusModifier() simulated function float GetAoERadiusModifier()
{ {
return (Ext_PerkDemolition(CurrentPerk)!=None ? Ext_PerkDemolition(CurrentPerk).GetAoERadiusModifier() : 1.0); return (Ext_PerkDemolition(CurrentPerk)!=None ? Ext_PerkDemolition(CurrentPerk).GetAoERadiusModifier() : 1.0);
@ -735,30 +791,37 @@ simulated function bool GetHealingSpeedBoostActive()
{ {
return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).GetHealingSpeedBoostActive() : false); return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).GetHealingSpeedBoostActive() : false);
} }
simulated function bool GetHealingDamageBoostActive() simulated function bool GetHealingDamageBoostActive()
{ {
return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).GetHealingDamageBoostActive() : false); return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).GetHealingDamageBoostActive() : false);
} }
simulated function bool GetHealingShieldActive() simulated function bool GetHealingShieldActive()
{ {
return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).GetHealingShieldActive() : false); return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).GetHealingShieldActive() : false);
} }
simulated function float GetSelfHealingSurgePct() simulated function float GetSelfHealingSurgePct()
{ {
return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).GetSelfHealingSurgePct() : 0.f); return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).GetSelfHealingSurgePct() : 0.f);
} }
function bool IsToxicDmgActive() function bool IsToxicDmgActive()
{ {
return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).bUseToxicDamage : false); return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).bUseToxicDamage : false);
} }
static function class<KFDamageType> GetToxicDmgTypeClass() static function class<KFDamageType> GetToxicDmgTypeClass()
{ {
return class'Ext_PerkFieldMedic'.static.GetToxicDmgTypeClass(); return class'Ext_PerkFieldMedic'.static.GetToxicDmgTypeClass();
} }
static function ModifyToxicDmg(out int ToxicDamage) static function ModifyToxicDmg(out int ToxicDamage)
{ {
ToxicDamage = class'Ext_PerkFieldMedic'.static.ModifyToxicDmg(ToxicDamage); ToxicDamage = class'Ext_PerkFieldMedic'.static.ModifyToxicDmg(ToxicDamage);
} }
simulated function float GetSnarePower(optional class<DamageType> DamageType, optional byte HitZoneIdx) simulated function float GetSnarePower(optional class<DamageType> DamageType, optional byte HitZoneIdx)
{ {
return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).GetSnarePower(DamageType, HitZoneIdx) : 0.f); return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).GetSnarePower(DamageType, HitZoneIdx) : 0.f);
@ -769,6 +832,7 @@ simulated function bool CanRepairDoors()
{ {
return (Ext_PerkSupport(CurrentPerk)!=None ? Ext_PerkSupport(CurrentPerk).CanRepairDoors() : false); return (Ext_PerkSupport(CurrentPerk)!=None ? Ext_PerkSupport(CurrentPerk).CanRepairDoors() : false);
} }
simulated function float GetPenetrationModifier(byte Level, class<KFDamageType> DamageType, optional bool bForce ) simulated function float GetPenetrationModifier(byte Level, class<KFDamageType> DamageType, optional bool bForce )
{ {
return (Ext_PerkSupport(CurrentPerk)!=None ? Ext_PerkSupport(CurrentPerk).GetPenetrationModifier(Level, DamageType, bForce) : 0.f); return (Ext_PerkSupport(CurrentPerk)!=None ? Ext_PerkSupport(CurrentPerk).GetPenetrationModifier(Level, DamageType, bForce) : 0.f);

View File

@ -66,6 +66,7 @@ simulated function PostBeginPlay()
SetTimer(0.1,true,'CheckPerk'); SetTimer(0.1,true,'CheckPerk');
} }
} }
simulated function Destroyed() simulated function Destroyed()
{ {
if (ActivePerkManager!=None) if (ActivePerkManager!=None)
@ -74,6 +75,7 @@ simulated function Destroyed()
if (ActivePerkManager!=None) if (ActivePerkManager!=None)
ActivePerkManager.Destroy(); ActivePerkManager.Destroy();
} }
function CheckPerk() function CheckPerk()
{ {
if (CurrentPerk!=ActivePerkManager) if (CurrentPerk!=ActivePerkManager)
@ -105,21 +107,25 @@ reliable client function AddAdminCmd(string S)
AdminCommands[i].Info = Mid(S,j+1); AdminCommands[i].Info = Mid(S,j+1);
} }
} }
reliable client function ClientSetHUD(class<HUD> newHUDType) reliable client function ClientSetHUD(class<HUD> newHUDType)
{ {
Super.ClientSetHUD(newHUDType); Super.ClientSetHUD(newHUDType);
SendServerSettings(); SendServerSettings();
} }
reliable client function ClientSetBonus(SoundCue C, Object FX) reliable client function ClientSetBonus(SoundCue C, Object FX)
{ {
BonusMusic = C; BonusMusic = C;
BonusFX = FX; BonusFX = FX;
} }
simulated final function SendServerSettings() simulated final function SendServerSettings()
{ {
if (LocalPlayer(Player)!=None) if (LocalPlayer(Player)!=None)
ServerSetSettings(bHideKillMsg,bHideDamageMsg,bHideNumberMsg,bNoMonsterPlayer); ServerSetSettings(bHideKillMsg,bHideDamageMsg,bHideNumberMsg,bNoMonsterPlayer);
} }
reliable server function ServerSetSettings(bool bHideKill, bool bHideDmg, bool bHideNum, bool bNoZ) reliable server function ServerSetSettings(bool bHideKill, bool bHideDmg, bool bHideNum, bool bNoZ)
{ {
bClientHideKillMsg = bHideKill; bClientHideKillMsg = bHideKill;
@ -128,6 +134,7 @@ reliable server function ServerSetSettings(bool bHideKill, bool bHideDmg, bool b
bNoDamageTracking = (bHideDmg && bHideNum); bNoDamageTracking = (bHideDmg && bHideNum);
bClientNoZed = bNoZ; bClientNoZed = bNoZ;
} }
unreliable server function NotifyFixed(byte Mode) unreliable server function NotifyFixed(byte Mode)
{ {
if (Mode==1 && (Pawn==None || (WorldInfo.TimeSeconds-Pawn.SpawnTime)<5.f)) if (Mode==1 && (Pawn==None || (WorldInfo.TimeSeconds-Pawn.SpawnTime)<5.f))
@ -136,6 +143,7 @@ unreliable server function NotifyFixed(byte Mode)
if (Default.bRenderModes && ExtPlayerReplicationInfo(PlayerReplicationInfo)!=None) if (Default.bRenderModes && ExtPlayerReplicationInfo(PlayerReplicationInfo)!=None)
ExtPlayerReplicationInfo(PlayerReplicationInfo).SetFixedData(Mode); ExtPlayerReplicationInfo(PlayerReplicationInfo).SetFixedData(Mode);
} }
delegate OnClientFixed(ExtPlayerController PC, byte Mode); delegate OnClientFixed(ExtPlayerController PC, byte Mode);
reliable client event ReceiveLocalizedMessage(class<LocalMessage> Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) reliable client event ReceiveLocalizedMessage(class<LocalMessage> Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject)
@ -176,10 +184,12 @@ function AddSmallRadiusKill(byte Difficulty, class<KFPerk> PerkClass)
{ {
AwardXP(class'KFPerk_Berserker'.static.GetSmallRadiusKillXP(Difficulty)); AwardXP(class'KFPerk_Berserker'.static.GetSmallRadiusKillXP(Difficulty));
} }
function AddWeldPoints(int PointsWelded) function AddWeldPoints(int PointsWelded)
{ {
AwardXP(PointsWelded,1); AwardXP(PointsWelded,1);
} }
function AddHealPoints(int PointsHealed) function AddHealPoints(int PointsHealed)
{ {
AwardXP(PointsHealed,2); AwardXP(PointsHealed,2);
@ -253,6 +263,7 @@ reliable client function ReceiveServerMOTD(string S, bool bFinal)
ServerMOTD $= S; ServerMOTD $= S;
bMOTDReceived = bFinal; bMOTDReceived = bFinal;
} }
reliable server function ServerSetMOTD(string S, bool bFinal) reliable server function ServerSetMOTD(string S, bool bFinal)
{ {
PendingMOTD $= S; PendingMOTD $= S;
@ -277,6 +288,7 @@ reliable client function ReceiveLevelUp(Ext_PerkBase Perk, int NewLevel)
if (Perk!=None) if (Perk!=None)
MyGFxHUD.LevelUpNotificationWidget.ShowAchievementNotification(class'KFGFxWidget_LevelUpNotification'.Default.LevelUpString, Perk.PerkName, class'KFGFxWidget_LevelUpNotification'.Default.TierUnlockedString, Perk.GetPerkIconPath(NewLevel), false, NewLevel); MyGFxHUD.LevelUpNotificationWidget.ShowAchievementNotification(class'KFGFxWidget_LevelUpNotification'.Default.LevelUpString, Perk.PerkName, class'KFGFxWidget_LevelUpNotification'.Default.TierUnlockedString, Perk.GetPerkIconPath(NewLevel), false, NewLevel);
} }
reliable client function ReceiveKillMessage(class<Pawn> Victim, optional bool bGlobal, optional PlayerReplicationInfo KillerPRI) reliable client function ReceiveKillMessage(class<Pawn> Victim, optional bool bGlobal, optional PlayerReplicationInfo KillerPRI)
{ {
if (bHideKillMsg || (bGlobal && KillerPRI==None)) if (bHideKillMsg || (bGlobal && KillerPRI==None))
@ -291,11 +303,13 @@ reliable client function ReceiveKillMessage(class<Pawn> Victim, optional bool bG
else if (KFExtendedHUD(myHUD)!=None && Victim!=None) else if (KFExtendedHUD(myHUD)!=None && Victim!=None)
KFExtendedHUD(myHUD).AddKillMessage(Victim,1,KillerPRI,byte(bGlobal)); KFExtendedHUD(myHUD).AddKillMessage(Victim,1,KillerPRI,byte(bGlobal));
} }
unreliable client function ReceiveDamageMessage(class<Pawn> Victim, int Damage) unreliable client function ReceiveDamageMessage(class<Pawn> Victim, int Damage)
{ {
if (!bHideDamageMsg && KFExtendedHUD(myHUD)!=None && Victim!=None) if (!bHideDamageMsg && KFExtendedHUD(myHUD)!=None && Victim!=None)
KFExtendedHUD(myHUD).AddKillMessage(Victim,Damage,None,2); KFExtendedHUD(myHUD).AddKillMessage(Victim,Damage,None,2);
} }
unreliable client function ClientNumberMsg(int Count, vector Pos, EDmgMsgType Type) unreliable client function ClientNumberMsg(int Count, vector Pos, EDmgMsgType Type)
{ {
if (!bHideNumberMsg && KFExtendedHUD(myHUD)!=None) if (!bHideNumberMsg && KFExtendedHUD(myHUD)!=None)
@ -356,6 +370,7 @@ reliable client event TeamMessage(PlayerReplicationInfo PRI, coerce string S, na
} }
} }
} }
final function PopScreenMsg(string S) final function PopScreenMsg(string S)
{ {
local int i; local int i;
@ -381,6 +396,7 @@ final function PopScreenMsg(string S)
} }
MyGFxHUD.DisplayPriorityMessage(S,L,T); MyGFxHUD.DisplayPriorityMessage(S,L,T);
} }
reliable client function ClientKillMessage(class<DamageType> DamType, PlayerReplicationInfo Victim, PlayerReplicationInfo KillerPRI, optional class<Pawn> KillerPawn) reliable client function ClientKillMessage(class<DamageType> DamType, PlayerReplicationInfo Victim, PlayerReplicationInfo KillerPRI, optional class<Pawn> KillerPawn)
{ {
local string Msg,S; local string Msg,S;
@ -435,6 +451,7 @@ reliable client function ClientKillMessage(class<DamageType> DamType, PlayerRepl
KFExtendedHUD(myHUD).AddDeathMessage(Msg,S); KFExtendedHUD(myHUD).AddDeathMessage(Msg,S);
ClientMessage(S,'DeathMessage'); ClientMessage(S,'DeathMessage');
} }
reliable client function ClientZedKillMessage(class<DamageType> DamType, string Victim, optional PlayerReplicationInfo KillerPRI, optional class<Pawn> KillerPawn, optional bool bFFKill) reliable client function ClientZedKillMessage(class<DamageType> DamType, string Victim, optional PlayerReplicationInfo KillerPRI, optional class<Pawn> KillerPawn, optional bool bFFKill)
{ {
local string Msg,S; local string Msg,S;
@ -471,6 +488,7 @@ reliable client function ClientZedKillMessage(class<DamageType> DamType, string
KFExtendedHUD(myHUD).AddDeathMessage(Msg,S); KFExtendedHUD(myHUD).AddDeathMessage(Msg,S);
ClientMessage(S,'DeathMessage'); ClientMessage(S,'DeathMessage');
} }
simulated final function string ParseSuicideMsg(string Victim, class<DamageType> DamType) simulated final function string ParseSuicideMsg(string Victim, class<DamageType> DamType)
{ {
local string S; local string S;
@ -487,6 +505,7 @@ simulated final function string ParseSuicideMsg(string Victim, class<DamageType>
return Victim$Chr(6)$"M was blown into pieces"; return Victim$Chr(6)$"M was blown into pieces";
return Victim$Chr(6)$"M had a sudden heart attack"; return Victim$Chr(6)$"M had a sudden heart attack";
} }
simulated final function string ParseKillMsg(string Victim, string Killer, bool bFF, class<DamageType> DamType) simulated final function string ParseKillMsg(string Victim, string Killer, bool bFF, class<DamageType> DamType)
{ {
local string T,S; local string T,S;
@ -514,10 +533,12 @@ reliable server function ServerCamera(name NewMode)
NewMode = 'ThirdPerson'; NewMode = 'ThirdPerson';
SetCameraMode(NewMode); SetCameraMode(NewMode);
} }
exec function Camera(name NewMode) exec function Camera(name NewMode)
{ {
ServerCamera(PlayerCamera.CameraStyle=='FirstPerson' ? 'ThirdPerson' : 'FirstPerson'); ServerCamera(PlayerCamera.CameraStyle=='FirstPerson' ? 'ThirdPerson' : 'FirstPerson');
} }
simulated final function ToggleFPBody(bool bEnable) simulated final function ToggleFPBody(bool bEnable)
{ {
bShowFPLegs = bEnable; bShowFPLegs = bEnable;
@ -537,6 +558,7 @@ exec function Kick(string S)
if (WorldInfo.Game!=None) if (WorldInfo.Game!=None)
WorldInfo.Game.Kick(S); WorldInfo.Game.Kick(S);
} }
reliable server function SkipLobby(); reliable server function SkipLobby();
Delegate OnChangePerk(ExtPlayerController PC, class<Ext_PerkBase> NewPerk); Delegate OnChangePerk(ExtPlayerController PC, class<Ext_PerkBase> NewPerk);
@ -614,6 +636,7 @@ function ShowBossNameplate(KFInterface_MonsterBoss KFBoss, optional string Playe
SetTimer(8,false,'HideBossNameplate'); // MAKE sure it goes hidden. SetTimer(8,false,'HideBossNameplate'); // MAKE sure it goes hidden.
} }
} }
function HideBossNameplate() function HideBossNameplate()
{ {
if (!bNamePlateHidden) if (!bNamePlateHidden)
@ -638,12 +661,14 @@ reliable server function ServerGetUnloadInfo(byte CallID, class<Ext_PerkBase> Pe
{ {
OnRequestUnload(Self,CallID,PerkClass,bUnload); OnRequestUnload(Self,CallID,PerkClass,bUnload);
} }
delegate OnRequestUnload(ExtPlayerController PC, byte CallID, class<Ext_PerkBase> PerkClass, bool bUnload); delegate OnRequestUnload(ExtPlayerController PC, byte CallID, class<Ext_PerkBase> PerkClass, bool bUnload);
reliable client function ClientGotUnloadInfo(byte CallID, byte Code, optional int DataA, optional int DataB) reliable client function ClientGotUnloadInfo(byte CallID, byte Code, optional int DataA, optional int DataB)
{ {
OnClientGetResponse(CallID,Code,DataA,DataB); OnClientGetResponse(CallID,Code,DataA,DataB);
} }
delegate OnClientGetResponse(byte CallID, byte Code, int DataA, int DataB); delegate OnClientGetResponse(byte CallID, byte Code, int DataA, int DataB);
function DefClientResponse(byte CallID, byte Code, int DataA, int DataB); function DefClientResponse(byte CallID, byte Code, int DataA, int DataB);
@ -702,6 +727,7 @@ exec function ViewPlayerID(int ID)
{ {
ServerViewPlayerID(ID); ServerViewPlayerID(ID);
} }
reliable server function ServerViewPlayerID(int ID) reliable server function ServerViewPlayerID(int ID)
{ {
local PlayerReplicationInfo PRI; local PlayerReplicationInfo PRI;
@ -738,6 +764,7 @@ reliable server function SpectateRoaming()
ClientSetLocation(Location,Rotation); ClientSetLocation(Location,Rotation);
} }
} }
reliable client function ClientSetLocation(vector NewLocation, rotator NewRotation) reliable client function ClientSetLocation(vector NewLocation, rotator NewRotation)
{ {
SetLocation(NewLocation); SetLocation(NewLocation);
@ -752,6 +779,7 @@ unreliable server function ServerPlayLevelUpDialog()
Super.ServerPlayLevelUpDialog(); Super.ServerPlayLevelUpDialog();
} }
} }
unreliable server function ServerPlayVoiceCommsDialog(int CommsIndex) unreliable server function ServerPlayVoiceCommsDialog(int CommsIndex)
{ {
if (NextCommTime<WorldInfo.TimeSeconds) if (NextCommTime<WorldInfo.TimeSeconds)
@ -771,6 +799,7 @@ exec function StartFire(optional byte FireModeNum)
bAltFire = 1; bAltFire = 1;
Super.StartFire(FireModeNum); Super.StartFire(FireModeNum);
} }
exec function StopFire(optional byte FireModeNum) exec function StopFire(optional byte FireModeNum)
{ {
if (FireModeNum==0) if (FireModeNum==0)
@ -878,11 +907,13 @@ simulated function EndGameCamFocus(vector Pos)
else if (KFPawn(ViewTarget)!=None) else if (KFPawn(ViewTarget)!=None)
KFPawn(ViewTarget).SetMeshVisibility(true); KFPawn(ViewTarget).SetMeshVisibility(true);
} }
reliable client function ClientFocusView(vector Pos) reliable client function ClientFocusView(vector Pos)
{ {
if (WorldInfo.NetMode==NM_Client) if (WorldInfo.NetMode==NM_Client)
EndGameCamFocus(Pos); EndGameCamFocus(Pos);
} }
final function bool CalcEndGameCam() final function bool CalcEndGameCam()
{ {
local float T,RT; local float T,RT;
@ -923,6 +954,7 @@ final function bool CalcEndGameCam()
} }
return true; return true;
} }
simulated event GetPlayerViewPoint(out vector out_Location, out Rotator out_Rotation) simulated event GetPlayerViewPoint(out vector out_Location, out Rotator out_Rotation)
{ {
if (bEndGameCamFocus && CalcEndGameCam()) if (bEndGameCamFocus && CalcEndGameCam())
@ -933,6 +965,7 @@ simulated event GetPlayerViewPoint(out vector out_Location, out Rotator out_Rota
} }
Super.GetPlayerViewPoint(out_Location,out_Rotation); Super.GetPlayerViewPoint(out_Location,out_Rotation);
} }
exec function DebugRenderMode() exec function DebugRenderMode()
{ {
if (WorldInfo.NetMode!=NM_Client) if (WorldInfo.NetMode!=NM_Client)
@ -953,6 +986,7 @@ reliable server function ServerRequestStats(byte ListNum)
SetTimer(0.001,true,'SendNextList'); SetTimer(0.001,true,'SendNextList');
} }
} }
function SendNextList() function SendNextList()
{ {
if (!OnClientGetStat(Self,TransitListNum,TransitIndex++)) if (!OnClientGetStat(Self,TransitListNum,TransitIndex++))
@ -961,6 +995,7 @@ function SendNextList()
ClearTimer('SendNextList'); ClearTimer('SendNextList');
} }
} }
simulated reliable client function ClientGetStat(byte ListNum, bool bFinal, optional string N, optional UniqueNetId ID, optional int V) simulated reliable client function ClientGetStat(byte ListNum, bool bFinal, optional string N, optional UniqueNetId ID, optional int V)
{ {
OnClientReceiveStat(ListNum,bFinal,N,ID,V); OnClientReceiveStat(ListNum,bFinal,N,ID,V);
@ -973,10 +1008,12 @@ reliable server function ChangeSpectateMode(bool bSpectator)
{ {
OnSpectateChange(Self,bSpectator); OnSpectateChange(Self,bSpectator);
} }
simulated reliable client function ClientSpectateMode(bool bSpectator) simulated reliable client function ClientSpectateMode(bool bSpectator)
{ {
UpdateURL("SpectatorOnly",(bSpectator ? "1" : "0"),false); UpdateURL("SpectatorOnly",(bSpectator ? "1" : "0"),false);
} }
Delegate OnSpectateChange(ExtPlayerController PC, bool bSpectator); Delegate OnSpectateChange(ExtPlayerController PC, bool bSpectator);
state RagdollMove extends PlayerWalking state RagdollMove extends PlayerWalking

View File

@ -7,6 +7,7 @@ exec function StartCrouch()
{ {
bDuck = 1; bDuck = 1;
} }
exec function ToggleCrouch() exec function ToggleCrouch()
{ {
bDuck = (bDuck == 0) ? 1 : 0; bDuck = (bDuck == 0) ? 1 : 0;
@ -28,6 +29,7 @@ simulated exec function IronSights(optional bool bHoldButtonMode)
} }
} }
} }
simulated exec function IronSightsRelease(optional bool bHoldButtonMode) simulated exec function IronSightsRelease(optional bool bHoldButtonMode)
{ {
local KFWeapon KFW; local KFWeapon KFW;

View File

@ -96,6 +96,7 @@ simulated final function bool CanUseSupply(Pawn P)
{ {
return (SupplierLimit.SuppliedPawn!=P || SupplierLimit.NextSupplyTimer<WorldInfo.TimeSeconds); return (SupplierLimit.SuppliedPawn!=P || SupplierLimit.NextSupplyTimer<WorldInfo.TimeSeconds);
} }
simulated final function UsedSupply(Pawn P, float NextTime) simulated final function UsedSupply(Pawn P, float NextTime)
{ {
SupplierLimit.SuppliedPawn = P; SupplierLimit.SuppliedPawn = P;
@ -143,16 +144,19 @@ simulated event ReplicatedEvent(name VarName)
Super.ReplicatedEvent(VarName); Super.ReplicatedEvent(VarName);
} }
} }
function SetPlayerName(string S) function SetPlayerName(string S)
{ {
Super.SetPlayerName(S); Super.SetPlayerName(S);
UpdateNameTag(); UpdateNameTag();
} }
function SetPlayerNameTag(string S) function SetPlayerNameTag(string S)
{ {
NameTag = S; NameTag = S;
UpdateNameTag(); UpdateNameTag();
} }
function OverrideWith(PlayerReplicationInfo PRI) function OverrideWith(PlayerReplicationInfo PRI)
{ {
Super.OverrideWith(PRI); Super.OverrideWith(PRI);
@ -161,12 +165,14 @@ function OverrideWith(PlayerReplicationInfo PRI)
AdminType = ExtPlayerReplicationInfo(PRI).AdminType; AdminType = ExtPlayerReplicationInfo(PRI).AdminType;
UpdateNameTag(); UpdateNameTag();
} }
simulated final function UpdateNameTag() simulated final function UpdateNameTag()
{ {
if (NameTag!="") if (NameTag!="")
TaggedPlayerName = "["$NameTag$"] "$PlayerName; TaggedPlayerName = "["$NameTag$"] "$PlayerName;
else TaggedPlayerName = PlayerName; else TaggedPlayerName = PlayerName;
} }
final function SetLevelProgress(int CurLevel, int CurPrest, int MinLevel, int MaxLevel) final function SetLevelProgress(int CurLevel, int CurPrest, int MinLevel, int MaxLevel)
{ {
local float V; local float V;
@ -180,10 +186,12 @@ final function SetLevelProgress(int CurLevel, int CurPrest, int MinLevel, int Ma
if (WorldInfo.NetMode!=NM_DedicatedServer) if (WorldInfo.NetMode!=NM_DedicatedServer)
HUDPerkColor = PickPerkColor(); HUDPerkColor = PickPerkColor();
} }
simulated final function string GetPerkLevelStr() simulated final function string GetPerkLevelStr()
{ {
return (ECurrentPerkPrestige>0 ? (string(ECurrentPerkPrestige)$"-"$string(ECurrentPerkLevel)) : string(ECurrentPerkLevel)); return (ECurrentPerkPrestige>0 ? (string(ECurrentPerkPrestige)$"-"$string(ECurrentPerkLevel)) : string(ECurrentPerkLevel));
} }
simulated final function color PickPerkColor() simulated final function color PickPerkColor()
{ {
local float P; local float P;
@ -219,6 +227,7 @@ function SetInitPlayTime(int T)
RepPlayTime = T; RepPlayTime = T;
SetTimer(5,false,'UnsetPT'); SetTimer(5,false,'UnsetPT');
} }
function UnsetPT() function UnsetPT()
{ {
bInitialPT = false; bInitialPT = false;
@ -228,6 +237,7 @@ Delegate bool OnRepNextItem(ExtPlayerReplicationInfo PRI, int RepIndex)
{ {
return false; return false;
} }
simulated reliable client function ClientAddTraderItem(int Index, FCustomTraderItem Item) simulated reliable client function ClientAddTraderItem(int Index, FCustomTraderItem Item)
{ {
// Make sure to not execute on server. // Make sure to not execute on server.
@ -254,6 +264,7 @@ simulated static final function KFGFxObject_TraderItems CreateNewList()
return L; return L;
} }
simulated static final function SetWeaponInfo(bool bDedicated, int Index, FCustomTraderItem Item, KFGFxObject_TraderItems List) simulated static final function SetWeaponInfo(bool bDedicated, int Index, FCustomTraderItem Item, KFGFxObject_TraderItems List)
{ {
local array<STraderItemWeaponStats> S; local array<STraderItemWeaponStats> S;
@ -318,6 +329,7 @@ simulated final function bool ShowAdminName()
{ {
return (bAdmin || AdminType<255); return (bAdmin || AdminType<255);
} }
simulated function string GetAdminName() simulated function string GetAdminName()
{ {
switch (AdminType) switch (AdminType)
@ -335,6 +347,7 @@ simulated function string GetAdminName()
return "VIP"; return "VIP";
} }
} }
simulated function string GetAdminNameAbr() simulated function string GetAdminNameAbr()
{ {
switch (AdminType) switch (AdminType)
@ -352,6 +365,7 @@ simulated function string GetAdminNameAbr()
return "V"; return "V";
} }
} }
simulated function string GetAdminColor() simulated function string GetAdminColor()
{ {
switch (AdminType) switch (AdminType)
@ -369,6 +383,7 @@ simulated function string GetAdminColor()
return "FFD700"; return "FFD700";
} }
} }
simulated function color GetAdminColorC() simulated function color GetAdminColorC()
{ {
switch (AdminType) switch (AdminType)
@ -398,10 +413,12 @@ function SetFixedData(byte M)
FixedData = FixedData | M; FixedData = FixedData | M;
SetTimer(5,false,'ClearFixed'); SetTimer(5,false,'ClearFixed');
} }
function ClearFixed() function ClearFixed()
{ {
FixedData = 0; FixedData = 0;
} }
simulated final function string GetDesc() simulated final function string GetDesc()
{ {
local string S; local string S;
@ -418,6 +435,7 @@ simulated final function string GetDesc()
S $= "WA."; S $= "WA.";
return S; return S;
} }
delegate OnModeSet(ExtPlayerReplicationInfo PRI, byte Num); delegate OnModeSet(ExtPlayerReplicationInfo PRI, byte Num);
simulated final function bool LoadPlayerCharacter(byte CharIndex, out FMyCustomChar CharInfo) simulated final function bool LoadPlayerCharacter(byte CharIndex, out FMyCustomChar CharInfo)
@ -437,6 +455,7 @@ simulated final function bool LoadPlayerCharacter(byte CharIndex, out FMyCustomC
CharInfo = SaveDataObjects[CharIndex].LoadData(); CharInfo = SaveDataObjects[CharIndex].LoadData();
return true; return true;
} }
simulated final function bool SavePlayerCharacter() simulated final function bool SavePlayerCharacter()
{ {
local KFCharacterInfo_Human C; local KFCharacterInfo_Human C;
@ -454,6 +473,7 @@ simulated final function bool SavePlayerCharacter()
SaveDataObjects[CustomCharacter.CharacterIndex].SaveData(CustomCharacter); SaveDataObjects[CustomCharacter.CharacterIndex].SaveData(CustomCharacter);
return true; return true;
} }
simulated function ChangeCharacter(byte CharIndex, optional bool bFirstSet) simulated function ChangeCharacter(byte CharIndex, optional bool bFirstSet)
{ {
local FMyCustomChar NewChar; local FMyCustomChar NewChar;
@ -484,6 +504,7 @@ simulated function ChangeCharacter(byte CharIndex, optional bool bFirstSet)
CharacterCustomizationChanged(); CharacterCustomizationChanged();
} }
} }
simulated function UpdateCustomization(byte Type, byte MeshIndex, byte SkinIndex, optional byte SlotIndex) simulated function UpdateCustomization(byte Type, byte MeshIndex, byte SkinIndex, optional byte SlotIndex)
{ {
switch (Type) switch (Type)
@ -506,6 +527,7 @@ simulated function UpdateCustomization(byte Type, byte MeshIndex, byte SkinIndex
if (WorldInfo.NetMode==NM_Client) if (WorldInfo.NetMode==NM_Client)
CharacterCustomizationChanged(); CharacterCustomizationChanged();
} }
simulated final function RemoveAttachments() simulated final function RemoveAttachments()
{ {
local byte i; local byte i;
@ -520,6 +542,7 @@ simulated final function RemoveAttachments()
if (WorldInfo.NetMode==NM_Client) if (WorldInfo.NetMode==NM_Client)
CharacterCustomizationChanged(); CharacterCustomizationChanged();
} }
simulated function ClearCharacterAttachment(int AttachmentIndex) simulated function ClearCharacterAttachment(int AttachmentIndex)
{ {
if (UsesCustomChar()) if (UsesCustomChar())
@ -542,6 +565,7 @@ reliable server final function ServerSetCharacterX(FMyCustomChar NewMeshInfo)
CharacterCustomizationChanged(); CharacterCustomizationChanged();
} }
} }
simulated final function bool IsClientCharLocked(byte Index) simulated final function bool IsClientCharLocked(byte Index)
{ {
if (Index<CharacterArchetypes.Length) if (Index<CharacterArchetypes.Length)
@ -572,6 +596,7 @@ simulated reliable client function AllCharReceived()
bClientInitChars = true; bClientInitChars = true;
} }
} }
simulated final function NotifyCharListDone() simulated final function NotifyCharListDone()
{ {
local KFPawn_Human KFP; local KFPawn_Human KFP;
@ -616,6 +641,7 @@ simulated final function bool ReallyUsingCustomChar()
return false; return false;
return (CustomCharacter.CharacterIndex>=CharacterArchetypes.Length); return (CustomCharacter.CharacterIndex>=CharacterArchetypes.Length);
} }
simulated final function KFCharacterInfo_Human GetSelectedArch() simulated final function KFCharacterInfo_Human GetSelectedArch()
{ {
if (UsesCustomChar()) if (UsesCustomChar())
@ -688,6 +714,7 @@ final function SaveCustomCharacter(ExtSaveDataBase Data)
} }
} }
} }
final function LoadCustomCharacter(ExtSaveDataBase Data) final function LoadCustomCharacter(ExtSaveDataBase Data)
{ {
local string S; local string S;
@ -755,6 +782,7 @@ static final function DummyLoadChar(ExtSaveDataBase Data)
for (i=0; i<n; ++i) for (i=0; i<n; ++i)
Data.SkipBytes(3); Data.SkipBytes(3);
} }
static final function DummySaveChar(ExtSaveDataBase Data) static final function DummySaveChar(ExtSaveDataBase Data)
{ {
Data.SaveStr(""); Data.SaveStr("");

View File

@ -9,6 +9,7 @@ simulated function PostBeginPlay()
Super.PostBeginPlay(); Super.PostBeginPlay();
SetTimer(FuseTime+FRand()*0.25, true, 'ExplodeTimer'); SetTimer(FuseTime+FRand()*0.25, true, 'ExplodeTimer');
} }
simulated function ExplodeTimer() simulated function ExplodeTimer()
{ {
local Actor HitActor; local Actor HitActor;
@ -24,6 +25,7 @@ simulated function ExplodeTimer()
TriggerExplosion(HitLocation, HitNormal, HitActor); TriggerExplosion(HitLocation, HitNormal, HitActor);
else SmallExplosion(HitLocation, HitNormal, HitActor); else SmallExplosion(HitLocation, HitNormal, HitActor);
} }
simulated function SmallExplosion(Vector HitLocation, Vector HitNormal, Actor HitActor) simulated function SmallExplosion(Vector HitLocation, Vector HitNormal, Actor HitActor)
{ {
local vector NudgedHitLocation, ExplosionDirection; local vector NudgedHitLocation, ExplosionDirection;
@ -81,9 +83,11 @@ simulated function SmallExplosion(Vector HitLocation, Vector HitNormal, Actor Hi
} }
} }
} }
simulated function ProcessTouch(Actor Other, Vector HitLocation, Vector HitNormal) simulated function ProcessTouch(Actor Other, Vector HitLocation, Vector HitNormal)
{ {
} }
simulated function Explode(vector HitLocation, vector HitNormal); simulated function Explode(vector HitLocation, vector HitNormal);
defaultproperties defaultproperties

View File

@ -13,6 +13,7 @@ static final function ExtSpawnPointHelper FindHelper(WorldInfo Level)
return H; return H;
return Level.Spawn(class'ExtSpawnPointHelper'); return Level.Spawn(class'ExtSpawnPointHelper');
} }
final function Actor PickBestSpawn() final function Actor PickBestSpawn()
{ {
local Actor N,BestN; local Actor N,BestN;
@ -76,6 +77,7 @@ function PreBeginPlay()
{ {
SetTimer(0.2,false,'InitChecker'); SetTimer(0.2,false,'InitChecker');
} }
function InitChecker() function InitChecker()
{ {
local PlayerStart PS,Fallback; local PlayerStart PS,Fallback;
@ -94,6 +96,7 @@ function InitChecker()
CheckSpawn(Fallback); CheckSpawn(Fallback);
SetTimer(0.001,true,'NextCheck'); SetTimer(0.001,true,'NextCheck');
} }
function NextCheck() function NextCheck()
{ {
local NavigationPoint N; local NavigationPoint N;
@ -114,6 +117,7 @@ function NextCheck()
CheckedList.Length = 0; CheckedList.Length = 0;
} }
} }
final function CheckSpawn(NavigationPoint N) final function CheckSpawn(NavigationPoint N)
{ {
local vector V; local vector V;

View File

@ -40,6 +40,7 @@ final function Cleanup()
{ {
ConfigList.Length = 0; ConfigList.Length = 0;
} }
final function AddSettingsPage(string PageName, class<Object> Obj, const out array<FWebAdminConfigInfo> Configs, delegate<OnGetValue> GetFunc, delegate<OnSetValue> SetFunc) final function AddSettingsPage(string PageName, class<Object> Obj, const out array<FWebAdminConfigInfo> Configs, delegate<OnGetValue> GetFunc, delegate<OnSetValue> SetFunc)
{ {
local int i; local int i;
@ -56,6 +57,7 @@ final function AddSettingsPage(string PageName, class<Object> Obj, const out arr
ConfigList[i].GetValue = GetFunc; ConfigList[i].GetValue = GetFunc;
ConfigList[i].SetValue = SetFunc; ConfigList[i].SetValue = SetFunc;
} }
final function bool HasConfigfor (class<Object> Obj) final function bool HasConfigfor (class<Object> Obj)
{ {
return (ConfigList.Find('ObjClass',Obj)>=0); return (ConfigList.Find('ObjClass',Obj)>=0);

View File

@ -31,6 +31,7 @@ final function vector PickPointNearOwner()
OwnerPawn = None; OwnerPawn = None;
return V; return V;
} }
final function bool CanSeeOwner() final function bool CanSeeOwner()
{ {
local Pawn P; local Pawn P;

View File

@ -4,6 +4,7 @@ function SpecialMoveStarted(bool bForced, Name PrevMove)
{ {
KFPOwner.EndSpecialMove(); KFPOwner.EndSpecialMove();
} }
function SpecialMoveEnded(Name PrevMove, Name NextMove) function SpecialMoveEnded(Name PrevMove, Name NextMove)
{ {
} }

View File

@ -214,6 +214,7 @@ simulated function PostBeginPlay()
} }
} }
} }
simulated function InitPerk() simulated function InitPerk()
{ {
if (PlayerOwner==None) if (PlayerOwner==None)
@ -227,6 +228,7 @@ simulated function InitPerk()
} }
} }
} }
simulated function Destroyed() simulated function Destroyed()
{ {
local int i; local int i;
@ -291,6 +293,7 @@ reliable client simulated function ClientReceiveStat(int Index, int MaxValue, in
else PerkStats[Index].UIName = string(Type); // Fallback to stat name then... else PerkStats[Index].UIName = string(Type); // Fallback to stat name then...
} }
} }
reliable client simulated function ClientSetStatValue(int Index, int NewValue) reliable client simulated function ClientSetStatValue(int Index, int NewValue)
{ {
if (PerkStats.Length<=Index) if (PerkStats.Length<=Index)
@ -299,6 +302,7 @@ reliable client simulated function ClientSetStatValue(int Index, int NewValue)
if (bPerkNetReady) if (bPerkNetReady)
ApplyEffects(); ApplyEffects();
} }
reliable client simulated function ClientReceiveTrait(int Index, class<Ext_TraitBase> TC, byte Lvl) reliable client simulated function ClientReceiveTrait(int Index, class<Ext_TraitBase> TC, byte Lvl)
{ {
if (PerkTraits.Length<=Index) if (PerkTraits.Length<=Index)
@ -306,11 +310,13 @@ reliable client simulated function ClientReceiveTrait(int Index, class<Ext_Trait
PerkTraits[Index].TraitType = TC; PerkTraits[Index].TraitType = TC;
PerkTraits[Index].CurrentLevel = Lvl; PerkTraits[Index].CurrentLevel = Lvl;
} }
reliable client simulated function ClientReceiveTraitData(int Index, string Data) reliable client simulated function ClientReceiveTraitData(int Index, string Data)
{ {
if (WorldInfo.NetMode==NM_Client) if (WorldInfo.NetMode==NM_Client)
PerkTraits[Index].TraitType.Static.ClientSetRepData(Data); PerkTraits[Index].TraitType.Static.ClientSetRepData(Data);
} }
reliable client simulated function ClientReceiveTraitLvl(int Index, byte NewLevel) reliable client simulated function ClientReceiveTraitLvl(int Index, byte NewLevel)
{ {
PerkTraits[Index].CurrentLevel = NewLevel; PerkTraits[Index].CurrentLevel = NewLevel;
@ -324,6 +330,7 @@ final function SetPerkStat(name Type, int Value)
if (i>=0) if (i>=0)
PerkStats[i].CurrentValue = Value; PerkStats[i].CurrentValue = Value;
} }
final function int GetPerkStat(name Type) final function int GetPerkStat(name Type)
{ {
local int i; local int i;
@ -652,6 +659,7 @@ static function CheckConfig()
T.Static.CheckConfig(); T.Static.CheckConfig();
} }
} }
static function UpdateConfigs(int OldVer) static function UpdateConfigs(int OldVer)
{ {
local int i,j; local int i,j;
@ -716,6 +724,7 @@ static function UpdateConfigs(int OldVer)
Default.TraitClasses[i] = PathName(Default.DefTraitList[i]); Default.TraitClasses[i] = PathName(Default.DefTraitList[i]);
} }
} }
static final function AddStatsCfg(int StartRange) static final function AddStatsCfg(int StartRange)
{ {
local int i,j; local int i,j;
@ -750,6 +759,7 @@ static function InitWebAdmin(ExtWebAdmin_UI UI)
T.Static.InitWebAdmin(UI); T.Static.InitWebAdmin(UI);
} }
} }
static function string GetValue(name PropName, int ElementIndex) static function string GetValue(name PropName, int ElementIndex)
{ {
switch (PropName) switch (PropName)
@ -782,6 +792,7 @@ static function string GetValue(name PropName, int ElementIndex)
return string(Default.PrestigeXPReduce); return string(Default.PrestigeXPReduce);
} }
} }
static function ApplyValue(name PropName, int ElementIndex, string Value) static function ApplyValue(name PropName, int ElementIndex, string Value)
{ {
switch (PropName) switch (PropName)
@ -833,6 +844,7 @@ static function ApplyValue(name PropName, int ElementIndex, string Value)
} }
StaticSaveConfig(); StaticSaveConfig();
} }
static final function FPerkStat ParsePerkStatStr(string S) static final function FPerkStat ParsePerkStatStr(string S)
{ {
local FPerkStat Res; local FPerkStat Res;
@ -959,6 +971,7 @@ simulated unreliable client function ClientAuth()
SetOwner(PlayerOwner); SetOwner(PlayerOwner);
ServerAck(); ServerAck();
} }
unreliable server function ServerAck() unreliable server function ServerAck()
{ {
if (!bClientAuthorized) if (!bClientAuthorized)
@ -969,6 +982,7 @@ unreliable server function ServerAck()
SetTimer(0.01+FRand()*0.025,true,'ReplicateTimer'); SetTimer(0.01+FRand()*0.025,true,'ReplicateTimer');
} }
} }
function ReplicateTimer() function ReplicateTimer()
{ {
switch (RepState) switch (RepState)
@ -1001,11 +1015,13 @@ function ReplicateTimer()
ClientIsReady(); // Notify client were ready. ClientIsReady(); // Notify client were ready.
} }
} }
simulated reliable client function ClientIsReady() simulated reliable client function ClientIsReady()
{ {
bPerkNetReady = true; bPerkNetReady = true;
ApplyEffects(); ApplyEffects();
} }
simulated function string GetStatUIStr(int iStat) simulated function string GetStatUIStr(int iStat)
{ {
local string S; local string S;
@ -1081,6 +1097,7 @@ final function UnloadStats(optional byte Mode)
} }
} }
} }
function FullReset(optional bool bNotPrestige) function FullReset(optional bool bNotPrestige)
{ {
UnloadStats(); UnloadStats();
@ -1236,6 +1253,7 @@ simulated function ModifyDamageGiven(out int InDamage, optional Actor DamageCaus
else if (DamageType==None || DamageType.Name!='KFDT_SuicideExplosive') else if (DamageType==None || DamageType.Name!='KFDT_SuicideExplosive')
InDamage *= Modifiers[12]; InDamage *= Modifiers[12];
} }
simulated function ModifyDamageTaken(out int InDamage, optional class<DamageType> DamageType, optional Controller InstigatedBy) simulated function ModifyDamageTaken(out int InDamage, optional class<DamageType> DamageType, optional Controller InstigatedBy)
{ {
if (InDamage>0) if (InDamage>0)
@ -1252,36 +1270,44 @@ simulated function ModifyDamageTaken(out int InDamage, optional class<DamageType
InDamage = Max(InDamage*Modifiers[18],1); InDamage = Max(InDamage*Modifiers[18],1);
} }
} }
simulated function ModifyRecoil(out float CurrentRecoilModifier, KFWeapon KFW) simulated function ModifyRecoil(out float CurrentRecoilModifier, KFWeapon KFW)
{ {
if (IsWeaponOnPerk(KFW)) if (IsWeaponOnPerk(KFW))
CurrentRecoilModifier *= Modifiers[2]; CurrentRecoilModifier *= Modifiers[2];
} }
simulated function ModifySpread(out float InSpread) simulated function ModifySpread(out float InSpread)
{ {
InSpread *= Modifiers[3]; InSpread *= Modifiers[3];
} }
simulated function ModifyRateOfFire(out float InRate, KFWeapon KFW) simulated function ModifyRateOfFire(out float InRate, KFWeapon KFW)
{ {
if (IsWeaponOnPerk(KFW)) if (IsWeaponOnPerk(KFW))
InRate *= Modifiers[4]; InRate *= Modifiers[4];
} }
simulated function float GetReloadRateScale(KFWeapon KFW) simulated function float GetReloadRateScale(KFWeapon KFW)
{ {
return (IsWeaponOnPerk(KFW) ? Modifiers[5] : 1.f); return (IsWeaponOnPerk(KFW) ? Modifiers[5] : 1.f);
} }
function ModifyHealth(out int InHealth) function ModifyHealth(out int InHealth)
{ {
InHealth *= Modifiers[6]; InHealth *= Modifiers[6];
} }
function ModifyArmor(out byte MaxArmor) function ModifyArmor(out byte MaxArmor)
{ {
MaxArmor = Min(MaxArmor+Modifiers[14],255); MaxArmor = Min(MaxArmor+Modifiers[14],255);
} }
function float GetKnockdownPowerModifier() function float GetKnockdownPowerModifier()
{ {
return Modifiers[7]; return Modifiers[7];
} }
function float GetStunPowerModifier(optional class<DamageType> DamageType, optional byte HitZoneIdx) function float GetStunPowerModifier(optional class<DamageType> DamageType, optional byte HitZoneIdx)
{ {
return Modifiers[7]; return Modifiers[7];
@ -1316,21 +1342,25 @@ function bool RepairArmor(Pawn HealTarget)
{ {
return false; return false;
} }
function bool ModifyHealAmount(out float HealAmount) function bool ModifyHealAmount(out float HealAmount)
{ {
HealAmount*=Modifiers[9]; HealAmount*=Modifiers[9];
return false; return false;
} }
simulated function ModifyMagSizeAndNumber(KFWeapon KFW, out int MagazineCapacity, optional array< Class<KFPerk> > WeaponPerkClass, optional bool bSecondary=false, optional name WeaponClassname) simulated function ModifyMagSizeAndNumber(KFWeapon KFW, out int MagazineCapacity, optional array< Class<KFPerk> > WeaponPerkClass, optional bool bSecondary=false, optional name WeaponClassname)
{ {
if (MagazineCapacity>2 && (KFW==None ? WeaponPerkClass.Find(BasePerk)>=0 : IsWeaponOnPerk(KFW))) // Skip boomstick for this. if (MagazineCapacity>2 && (KFW==None ? WeaponPerkClass.Find(BasePerk)>=0 : IsWeaponOnPerk(KFW))) // Skip boomstick for this.
MagazineCapacity = Min(MagazineCapacity*Modifiers[10],255); MagazineCapacity = Min(MagazineCapacity*Modifiers[10],255);
} }
simulated function ModifySpareAmmoAmount(KFWeapon KFW, out int PrimarySpareAmmo, optional const out STraderItem TraderItem, optional bool bSecondary) simulated function ModifySpareAmmoAmount(KFWeapon KFW, out int PrimarySpareAmmo, optional const out STraderItem TraderItem, optional bool bSecondary)
{ {
if (KFW==None ? TraderItem.AssociatedPerkClasses.Find(BasePerk)>=0 : IsWeaponOnPerk(KFW)) if (KFW==None ? TraderItem.AssociatedPerkClasses.Find(BasePerk)>=0 : IsWeaponOnPerk(KFW))
PrimarySpareAmmo*=Modifiers[11]; PrimarySpareAmmo*=Modifiers[11];
} }
simulated function bool ShouldMagSizeModifySpareAmmo(KFWeapon KFW, optional Class<KFPerk> WeaponPerkClass) simulated function bool ShouldMagSizeModifySpareAmmo(KFWeapon KFW, optional Class<KFPerk> WeaponPerkClass)
{ {
return (KFW==None ? WeaponPerkClass==BasePerk : IsWeaponOnPerk(KFW)); return (KFW==None ? WeaponPerkClass==BasePerk : IsWeaponOnPerk(KFW));

View File

@ -15,6 +15,7 @@ simulated function ModifyMeleeAttackSpeed(out float InDuration)
if (ZedTimeMeleeAtkRate<1.f && WorldInfo.TimeDilation<1.f) if (ZedTimeMeleeAtkRate<1.f && WorldInfo.TimeDilation<1.f)
InDuration *= ZedTimeMeleeAtkRate; InDuration *= ZedTimeMeleeAtkRate;
} }
simulated function ModifyRateOfFire(out float InRate, KFWeapon KFW) simulated function ModifyRateOfFire(out float InRate, KFWeapon KFW)
{ {
if (IsWeaponOnPerk(KFW)) if (IsWeaponOnPerk(KFW))

View File

@ -47,6 +47,7 @@ function bool RepairArmor(Pawn HealTarget)
} }
return false; return false;
} }
function bool ModifyHealAmount(out float HealAmount) function bool ModifyHealAmount(out float HealAmount)
{ {
HealAmount*=Modifiers[9]; HealAmount*=Modifiers[9];
@ -128,50 +129,62 @@ simulated function bool GetHealingSpeedBoostActive()
{ {
return bHealingBoost; return bHealingBoost;
} }
simulated function byte GetHealingSpeedBoost() simulated function byte GetHealingSpeedBoost()
{ {
return byte(HealingSpeedBoostPct); return byte(HealingSpeedBoostPct);
} }
simulated function byte GetMaxHealingSpeedBoost() simulated function byte GetMaxHealingSpeedBoost()
{ {
return MaxHealingSpeedBoost; return MaxHealingSpeedBoost;
} }
simulated function float GetHealingSpeedBoostDuration() simulated function float GetHealingSpeedBoostDuration()
{ {
return HealingSpeedBoostDuration; return HealingSpeedBoostDuration;
} }
simulated function bool GetHealingDamageBoostActive() simulated function bool GetHealingDamageBoostActive()
{ {
return bHealingDamageBoost; return bHealingDamageBoost;
} }
simulated function byte GetHealingDamageBoost() simulated function byte GetHealingDamageBoost()
{ {
return byte(HealingDamageBoostPct); return byte(HealingDamageBoostPct);
} }
simulated function byte GetMaxHealingDamageBoost() simulated function byte GetMaxHealingDamageBoost()
{ {
return MaxHealingDamageBoost; return MaxHealingDamageBoost;
} }
simulated function float GetHealingDamageBoostDuration() simulated function float GetHealingDamageBoostDuration()
{ {
return HealingDamageBoostDuration; return HealingDamageBoostDuration;
} }
simulated function bool GetHealingShieldActive() simulated function bool GetHealingShieldActive()
{ {
return bHealingShield; return bHealingShield;
} }
simulated function byte GetHealingShield() simulated function byte GetHealingShield()
{ {
return byte(HealingShieldPct); return byte(HealingShieldPct);
} }
simulated function byte GetMaxHealingShield() simulated function byte GetMaxHealingShield()
{ {
return MaxHealingShield; return MaxHealingShield;
} }
simulated function float GetHealingShieldDuration() simulated function float GetHealingShieldDuration()
{ {
return HealingShieldDuration; return HealingShieldDuration;
} }
simulated function float GetSelfHealingSurgePct() simulated function float GetSelfHealingSurgePct()
{ {
return SelfHealingSurgePct; return SelfHealingSurgePct;

View File

@ -15,6 +15,7 @@ final function SetMaxRhythm(byte MaxCombo)
{ {
MaxRhythmCombo = MaxCombo; MaxRhythmCombo = MaxCombo;
} }
final function ResetRhythm() final function ResetRhythm()
{ {
MaxRhythmCombo = 0; MaxRhythmCombo = 0;
@ -66,6 +67,7 @@ function UpdatePerkHeadShots(ImpactInfo Impact, class<DamageType> DamageType, in
UpdateDmgScale(true); UpdateDmgScale(true);
} }
} }
reliable client function HeadShotMessage(byte HeadShotNum, bool bMissed, byte MaxHits) reliable client function HeadShotMessage(byte HeadShotNum, bool bMissed, byte MaxHits)
{ {
local AkEvent TempAkEvent; local AkEvent TempAkEvent;

View File

@ -16,6 +16,7 @@ simulated function float GetReloadRateScale(KFWeapon KFW)
return Super.GetReloadRateScale(KFW)*DireReloadSpeed; return Super.GetReloadRateScale(KFW)*DireReloadSpeed;
return Super.GetReloadRateScale(KFW); return Super.GetReloadRateScale(KFW);
} }
function float GetStunPowerModifier(optional class<DamageType> DamageType, optional byte HitZoneIdx) function float GetStunPowerModifier(optional class<DamageType> DamageType, optional byte HitZoneIdx)
{ {
if (ZEDTimeStunPower>0 && HitZoneIdx==HZI_Head && WorldInfo.TimeDilation<1.f && (class<KFDamageType>(DamageType)!=None && class<KFDamageType>(DamageType).Default.ModifierPerkList.Find(BasePerk)>=0)) if (ZEDTimeStunPower>0 && HitZoneIdx==HZI_Head && WorldInfo.TimeDilation<1.f && (class<KFDamageType>(DamageType)!=None && class<KFDamageType>(DamageType).Default.ModifierPerkList.Find(BasePerk)>=0))

View File

@ -9,6 +9,7 @@ static function string GetUIInfo(Ext_PerkBase Perk)
{ {
return (Default.bLimitToOne ? Default.GroupInfo$" (MAX 1)" : Default.GroupInfo); return (Default.bLimitToOne ? Default.GroupInfo$" (MAX 1)" : Default.GroupInfo);
} }
static function string GetUIDesc() static function string GetUIDesc()
{ {
return Default.GroupInfo$" trait group"; return Default.GroupInfo$" trait group";

View File

@ -4,6 +4,7 @@ static function string GetUIInfo(Ext_PerkBase Perk)
{ {
return Default.GroupInfo$" (MAX "$GetMaxLimit(Perk)$")"; return Default.GroupInfo$" (MAX "$GetMaxLimit(Perk)$")";
} }
static function string GetUIDesc() static function string GetUIDesc()
{ {
return Super.GetUIDesc()$"|To buy additional regen abilities:|-Prestige level 1 + Perk level 100 = MAX 2 traits|-Prestige level 5 + Perk level 150 = MAX 3 traits"; return Super.GetUIDesc()$"|To buy additional regen abilities:|-Prestige level 1 + Perk level 100 = MAX 2 traits|-Prestige level 5 + Perk level 150 = MAX 3 traits";

View File

@ -11,6 +11,7 @@ function PostBeginPlay()
Destroy(); Destroy();
else SetTimer(29+FRand(),true); else SetTimer(29+FRand(),true);
} }
function Timer() function Timer()
{ {
local KFWeapon W; local KFWeapon W;

View File

@ -19,11 +19,13 @@ function PostBeginPlay()
Destroy(); Destroy();
else SetTimer(0.5+FRand()*0.4,true); else SetTimer(0.5+FRand()*0.4,true);
} }
function Timer() function Timer()
{ {
if (PawnOwner==None || PawnOwner.Health<=0 || PawnOwner.InvManager==None) if (PawnOwner==None || PawnOwner.Health<=0 || PawnOwner.InvManager==None)
Destroy(); Destroy();
} }
simulated function Tick(float Delta) simulated function Tick(float Delta)
{ {
if (WorldInfo.NetMode==NM_DedicatedServer if (WorldInfo.NetMode==NM_DedicatedServer

View File

@ -11,6 +11,7 @@ function PostBeginPlay()
Destroy(); Destroy();
else SetTimer(9+FRand(),true); else SetTimer(9+FRand(),true);
} }
function Timer() function Timer()
{ {
if (PawnOwner==None || PawnOwner.Health<=0) if (PawnOwner==None || PawnOwner.Health<=0)

View File

@ -21,6 +21,7 @@ simulated event PostBeginPlay()
if (WorldInfo.NetMode!=NM_Client) if (WorldInfo.NetMode!=NM_Client)
SetTimer(1,true); SetTimer(1,true);
} }
simulated event Destroyed() simulated event Destroyed()
{ {
if (OwnerHUD!=None) if (OwnerHUD!=None)
@ -31,6 +32,7 @@ simulated event Destroyed()
if (WorldInfo.GRI != None) if (WorldInfo.GRI != None)
WorldInfo.GRI.RemovePRI(self); WorldInfo.GRI.RemovePRI(self);
} }
simulated event ReplicatedEvent(name VarName) simulated event ReplicatedEvent(name VarName)
{ {
if (VarName=='OwnerPRI' && OwnerPRI!=None) if (VarName=='OwnerPRI' && OwnerPRI!=None)
@ -38,6 +40,7 @@ simulated event ReplicatedEvent(name VarName)
else if (VarName=='MonsterType' && MonsterType!=None) else if (VarName=='MonsterType' && MonsterType!=None)
MonsterName = Class'KFExtendedHUD'.Static.GetNameOf(MonsterType); MonsterName = Class'KFExtendedHUD'.Static.GetNameOf(MonsterType);
} }
simulated function Timer() simulated function Timer()
{ {
if (PawnOwner==None || PawnOwner.Health<=0) if (PawnOwner==None || PawnOwner.Health<=0)
@ -45,6 +48,7 @@ simulated function Timer()
else if (HealthStatus!=PawnOwner.Health) else if (HealthStatus!=PawnOwner.Health)
HealthStatus = PawnOwner.Health; HealthStatus = PawnOwner.Health;
} }
simulated final function NotifyOwner() simulated final function NotifyOwner()
{ {
local PlayerController PC; local PlayerController PC;

View File

@ -119,6 +119,7 @@ simulated function bool GetCanInteract(Pawn User, optional bool bInteractIfTrue
} }
return true; return true;
} }
function CleanupUsers() function CleanupUsers()
{ {
local int i; local int i;
@ -129,6 +130,7 @@ function CleanupUsers()
if (ActiveUsers.Length==0) if (ActiveUsers.Length==0)
ClearTimer('CleanupUsers'); ClearTimer('CleanupUsers');
} }
final function GiveAmmunition(KFPawn_Human Other) final function GiveAmmunition(KFPawn_Human Other)
{ {
local KFWeapon KFW; local KFWeapon KFW;
@ -167,6 +169,7 @@ final function GiveAmmunition(KFPawn_Human Other)
} }
} }
} }
simulated final function UsedOnClient(Pawn User) simulated final function UsedOnClient(Pawn User)
{ {
local ExtPlayerReplicationInfo PRI; local ExtPlayerReplicationInfo PRI;

View File

@ -11,6 +11,7 @@ function PostBeginPlay()
Destroy(); Destroy();
else SetTimer(0.5+FRand()*0.1,true); else SetTimer(0.5+FRand()*0.1,true);
} }
function Timer() function Timer()
{ {
local KFPawn_Monster M; local KFPawn_Monster M;

View File

@ -28,6 +28,7 @@ function PostBeginPlay()
SetTimer(1+(FRand()*0.1),true); SetTimer(1+(FRand()*0.1),true);
} }
} }
function Timer() function Timer()
{ {
if (PawnOwner==None || PawnOwner.Health<=0 || PawnOwner.PlayerReplicationInfo==None) if (PawnOwner==None || PawnOwner.Health<=0 || PawnOwner.PlayerReplicationInfo==None)
@ -64,11 +65,13 @@ function Timer()
} }
else NoLiveCounter = 5; else NoLiveCounter = 5;
} }
function Destroyed() function Destroyed()
{ {
if (LiveHelper!=None && LiveHelper.Health>0) if (LiveHelper!=None && LiveHelper.Health>0)
LiveHelper.Died(None,class'DmgType_Suicided',vect(0,0,0)); LiveHelper.Died(None,class'DmgType_Suicided',vect(0,0,0));
} }
final function bool HasLiveZeds() final function bool HasLiveZeds()
{ {
local KFPawn_Monster M; local KFPawn_Monster M;
@ -81,6 +84,7 @@ final function bool HasLiveZeds()
return true; return true;
return false; return false;
} }
final function SpawnHelper() final function SpawnHelper()
{ {
local class<KFPawn_Monster> MC; local class<KFPawn_Monster> MC;
@ -188,6 +192,7 @@ final function SetDamageScale(float Sc)
if (LiveHelper!=None) if (LiveHelper!=None)
LiveHelper.DamageScaling = DamageScale; LiveHelper.DamageScaling = DamageScale;
} }
final function SetHealthScale(float Sc) final function SetHealthScale(float Sc)
{ {
HPScale = Default.HPScale*Sc; HPScale = Default.HPScale*Sc;
@ -217,6 +222,7 @@ static final function LoadMonsterList()
Default.ZedTypes[i].Zeds[Default.ZedTypes[i].Zeds.Length] = Class'KFPawn_ZedClot_Alpha'; Default.ZedTypes[i].Zeds[Default.ZedTypes[i].Zeds.Length] = Class'KFPawn_ZedClot_Alpha';
} }
} }
static final function class<KFPawn_Monster> PickRandomMonster(byte Level, bool bNotBoss) static final function class<KFPawn_Monster> PickRandomMonster(byte Level, bool bNotBoss)
{ {
local byte i; local byte i;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkFieldMedic(Perk).bUseToxicDamage = true; Ext_PerkFieldMedic(Perk).bUseToxicDamage = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkFieldMedic(Perk).bUseToxicDamage = false; Ext_PerkFieldMedic(Perk).bUseToxicDamage = false;

View File

@ -7,6 +7,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
Ext_PerkFieldMedic(Perk).AirborneAgentHealRate = Default.HealRates[Level-1]; Ext_PerkFieldMedic(Perk).AirborneAgentHealRate = Default.HealRates[Level-1];
Ext_PerkFieldMedic(Perk).AirborneAgentLevel = (Level<4 ? 1 : 2); Ext_PerkFieldMedic(Perk).AirborneAgentLevel = (Level<4 ? 1 : 2);
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkFieldMedic(Perk).AirborneAgentLevel = 0; Ext_PerkFieldMedic(Perk).AirborneAgentLevel = 0;

View File

@ -33,6 +33,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkFieldMedic(Perk).bUseAirborneAgent = true; Ext_PerkFieldMedic(Perk).bUseAirborneAgent = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkFieldMedic(Perk).bUseAirborneAgent = false; Ext_PerkFieldMedic(Perk).bUseAirborneAgent = false;

View File

@ -10,6 +10,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (H!=None) if (H!=None)
H.RegCount = Default.RegenValues[Level-1]; H.RegCount = Default.RegenValues[Level-1];
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local Ext_T_AmmoRegHelp H; local Ext_T_AmmoRegHelp H;

View File

@ -8,6 +8,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (H!=None) if (H!=None)
H.RegCount = Default.RegenValues[Level-1]; H.RegCount = Default.RegenValues[Level-1];
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local Ext_T_ArmorRegHelp H; local Ext_T_ArmorRegHelp H;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkFieldMedic(Perk).RepairArmorRate = float(Level)*0.05f; Ext_PerkFieldMedic(Perk).RepairArmorRate = float(Level)*0.05f;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkFieldMedic(Perk).RepairArmorRate = 0; Ext_PerkFieldMedic(Perk).RepairArmorRate = 0;

View File

@ -7,6 +7,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
H = Player.Spawn(class'Ext_T_AutoFireHelper',Player); H = Player.Spawn(class'Ext_T_AutoFireHelper',Player);
H.AssociatedPerkClass = Perk.BasePerk; H.AssociatedPerkClass = Perk.BasePerk;
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local Ext_T_AutoFireHelper H; local Ext_T_AutoFireHelper H;

View File

@ -96,6 +96,7 @@ static function Ext_TraitDataStore Initializefor (Ext_PerkBase Perk, ExtPlayerCo
} }
return T; return T;
} }
static function CleanupTrait(ExtPlayerController Player, Ext_PerkBase Perk, optional Ext_TraitDataStore Data) static function CleanupTrait(ExtPlayerController Player, Ext_PerkBase Perk, optional Ext_TraitDataStore Data)
{ {
if (Data!=None) if (Data!=None)
@ -130,10 +131,12 @@ static final function string IntToStr(int Value, optional byte MaxVal) // Helper
return Chr((Value & 32767)+1) $ Chr(((Value >> 15) & 32767)+1); return Chr((Value & 32767)+1) $ Chr(((Value >> 15) & 32767)+1);
} }
} }
static final function string InlineString(string Str) // Helper function to append a string line to a text using a length char in front. static final function string InlineString(string Str) // Helper function to append a string line to a text using a length char in front.
{ {
return IntToStr(Len(Str))$Str; return IntToStr(Len(Str))$Str;
} }
static final function int StrToInt(out string Value, optional byte MaxVal) // Reverse. static final function int StrToInt(out string Value, optional byte MaxVal) // Reverse.
{ {
local int Res; local int Res;
@ -151,6 +154,7 @@ static final function int StrToInt(out string Value, optional byte MaxVal) // Re
} }
return Res; return Res;
} }
static final function string GetInlineStr(out string S) // Reverse. static final function string GetInlineStr(out string S) // Reverse.
{ {
local int l; local int l;
@ -172,6 +176,7 @@ static function string GetRepData()
S $= IntToStr(Default.LevelCosts[i]); S $= IntToStr(Default.LevelCosts[i]);
return S; return S;
} }
static function string ClientSetRepData(string S) static function string ClientSetRepData(string S)
{ {
local int i; local int i;
@ -193,6 +198,7 @@ static function CheckConfig()
StaticSaveConfig(); StaticSaveConfig();
} }
} }
static function UpdateConfigs(int OldVer) static function UpdateConfigs(int OldVer)
{ {
if (OldVer==0) if (OldVer==0)
@ -207,6 +213,7 @@ static function InitWebAdmin(ExtWebAdmin_UI UI)
{ {
UI.AddSettingsPage("Trait "$Default.TraitName,Default.Class,Default.WebConfigs,GetValue,ApplyValue); UI.AddSettingsPage("Trait "$Default.TraitName,Default.Class,Default.WebConfigs,GetValue,ApplyValue);
} }
static function string GetValue(name PropName, int ElementIndex) static function string GetValue(name PropName, int ElementIndex)
{ {
switch (PropName) switch (PropName)
@ -219,6 +226,7 @@ static function string GetValue(name PropName, int ElementIndex)
return string(Default.bDisabled); return string(Default.bDisabled);
} }
} }
static function ApplyValue(name PropName, int ElementIndex, string Value) static function ApplyValue(name PropName, int ElementIndex, string Value)
{ {
switch (PropName) switch (PropName)

View File

@ -5,6 +5,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Perk.bExplosiveWeld = true; Perk.bExplosiveWeld = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.bExplosiveWeld = false; Perk.bExplosiveWeld = false;

View File

@ -5,6 +5,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (ExtHumanPawn(Player)!=None) if (ExtHumanPawn(Player)!=None)
ExtHumanPawn(Player).bHasBunnyHop = true; ExtHumanPawn(Player).bHasBunnyHop = true;
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
if (ExtHumanPawn(Player)!=None) if (ExtHumanPawn(Player)!=None)

View File

@ -10,6 +10,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (M!=None) if (M!=None)
M.MaxCarryBlocks = M.Default.MaxCarryBlocks+Default.CarryAdds[Level-1]; M.MaxCarryBlocks = M.Default.MaxCarryBlocks+Default.CarryAdds[Level-1];
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local KFInventoryManager M; local KFInventoryManager M;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Perk.bExplodeOnContact = true; Perk.bExplodeOnContact = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.bExplodeOnContact = false; Perk.bExplodeOnContact = false;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkDemolition(Perk).bCriticalHit = true; Ext_PerkDemolition(Perk).bCriticalHit = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkDemolition(Perk).bCriticalHit = false; Ext_PerkDemolition(Perk).bCriticalHit = false;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkDemolition(Perk).bDirectHit = true; Ext_PerkDemolition(Perk).bDirectHit = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkDemolition(Perk).bDirectHit = false; Ext_PerkDemolition(Perk).bDirectHit = false;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkDemolition(Perk).bCanUseSacrifice = true; Ext_PerkDemolition(Perk).bCanUseSacrifice = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkDemolition(Perk).bCanUseSacrifice = false; Ext_PerkDemolition(Perk).bCanUseSacrifice = false;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkSharpshooter(Perk).bHasDireReload = true; Ext_PerkSharpshooter(Perk).bHasDireReload = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkSharpshooter(Perk).bHasDireReload = false; Ext_PerkSharpshooter(Perk).bHasDireReload = false;

View File

@ -7,6 +7,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (ExtHumanPawn(Player)!=None) if (ExtHumanPawn(Player)!=None)
ExtHumanPawn(Player).SetBatteryRate(Default.BatteryCharges[Level-1]); ExtHumanPawn(Player).SetBatteryRate(Default.BatteryCharges[Level-1]);
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
if (ExtHumanPawn(Player)!=None) if (ExtHumanPawn(Player)!=None)

View File

@ -4,6 +4,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
{ {
Perk.bTacticalReload = true; Perk.bTacticalReload = true;
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.bTacticalReload = false; Perk.bTacticalReload = false;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Perk.EnemyHealthRange = Level; Perk.EnemyHealthRange = Level;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.EnemyHealthRange = 0; Perk.EnemyHealthRange = 0;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkGunslinger(Perk).bHasFanfire = true; Ext_PerkGunslinger(Perk).bHasFanfire = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkGunslinger(Perk).bHasFanfire = false; Ext_PerkGunslinger(Perk).bHasFanfire = false;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Perk.bFireExplode = true; Perk.bFireExplode = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.bFireExplode = false; Perk.bFireExplode = false;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
KFPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo).bExtraFireRange = true; KFPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo).bExtraFireRange = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
KFPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo).bExtraFireRange = false; KFPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo).bExtraFireRange = false;

View File

@ -7,6 +7,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Perk.PerkManager.SetGrenadeCap(Default.CarryAdds[Level-1]); Perk.PerkManager.SetGrenadeCap(Default.CarryAdds[Level-1]);
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.PerkManager.SetGrenadeCap(0); Perk.PerkManager.SetGrenadeCap(0);

View File

@ -5,6 +5,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
if (Level==1) if (Level==1)
Perk.GrenadeClass = Perk.SuperGrenade; Perk.GrenadeClass = Perk.SuperGrenade;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.GrenadeClass = Perk.Default.GrenadeClass; Perk.GrenadeClass = Perk.Default.GrenadeClass;

View File

@ -6,6 +6,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
return false; return false;
return Super.MeetsRequirements(Lvl,Perk); return Super.MeetsRequirements(Lvl,Perk);
} }
static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
if (Level==1) if (Level==1)
@ -13,6 +14,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
else if (Level==2) else if (Level==2)
Perk.GrenadeClass = Perk.SuperGrenade; Perk.GrenadeClass = Perk.SuperGrenade;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.GrenadeClass = Perk.Default.GrenadeClass; Perk.GrenadeClass = Perk.Default.GrenadeClass;

View File

@ -10,6 +10,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (H!=None) if (H!=None)
H.RegCount = Default.RegenValues[Level-1]; H.RegCount = Default.RegenValues[Level-1];
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local Ext_T_HealthRegHelp H; local Ext_T_HealthRegHelp H;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Perk.bHeavyArmor = true; Perk.bHeavyArmor = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.bHeavyArmor = false; Perk.bHeavyArmor = false;

View File

@ -5,6 +5,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (ExtHumanPawn(Player)!=None) if (ExtHumanPawn(Player)!=None)
ExtHumanPawn(Player).KnockbackResist = Default.ChanceValues[Level-1]; ExtHumanPawn(Player).KnockbackResist = Default.ChanceValues[Level-1];
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
if (ExtHumanPawn(Player)!=None) if (ExtHumanPawn(Player)!=None)

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Perk.bNapalmFire = true; Perk.bNapalmFire = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.bNapalmFire = false; Perk.bNapalmFire = false;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Perk.bHasNightVision = true; Perk.bHasNightVision = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.bHasNightVision = false; Perk.bHasNightVision = false;

View File

@ -6,6 +6,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkRhythmPerkBase(Perk).SetMaxRhythm(Default.ComboSize[Level-1]); Ext_PerkRhythmPerkBase(Perk).SetMaxRhythm(Default.ComboSize[Level-1]);
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkRhythmPerkBase(Perk).ResetRhythm(); Ext_PerkRhythmPerkBase(Perk).ResetRhythm();

View File

@ -7,6 +7,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (ExtHumanPawn(Player)!=None) if (ExtHumanPawn(Player)!=None)
ExtHumanPawn(Player).NoRagdollChance = Default.ChanceValues[Level-1]; ExtHumanPawn(Player).NoRagdollChance = Default.ChanceValues[Level-1];
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
if (ExtHumanPawn(Player)!=None) if (ExtHumanPawn(Player)!=None)

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkSharpshooter(Perk).ZEDTimeStunPower = 4.f; Ext_PerkSharpshooter(Perk).ZEDTimeStunPower = 4.f;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkSharpshooter(Perk).ZEDTimeStunPower = 0.f; Ext_PerkSharpshooter(Perk).ZEDTimeStunPower = 0.f;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkSWAT(Perk).bRapidAssault = true; Ext_PerkSWAT(Perk).bRapidAssault = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkSWAT(Perk).bRapidAssault = false; Ext_PerkSWAT(Perk).bRapidAssault = false;

View File

@ -5,15 +5,18 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (ExtHumanPawn(Player)!=None) if (ExtHumanPawn(Player)!=None)
ExtHumanPawn(Player).bMovesFastInZedTime = true; ExtHumanPawn(Player).bMovesFastInZedTime = true;
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
if (ExtHumanPawn(Player)!=None) if (ExtHumanPawn(Player)!=None)
ExtHumanPawn(Player).bMovesFastInZedTime = false; ExtHumanPawn(Player).bMovesFastInZedTime = false;
} }
static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.bHasSWATEnforcer = true; Perk.bHasSWATEnforcer = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.bHasSWATEnforcer = false; Perk.bHasSWATEnforcer = false;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkDemolition(Perk).bSirenResistance = true; Ext_PerkDemolition(Perk).bSirenResistance = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkDemolition(Perk).bSirenResistance = false; Ext_PerkDemolition(Perk).bSirenResistance = false;

View File

@ -8,6 +8,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
ExtHumanPawn(Player).bMovesFastInZedTime = true; ExtHumanPawn(Player).bMovesFastInZedTime = true;
Ext_PerkBerserker(Perk).ZedTimeMeleeAtkRate = 1.f/Default.AtkRates[Level-1]; Ext_PerkBerserker(Perk).ZedTimeMeleeAtkRate = 1.f/Default.AtkRates[Level-1];
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
if (ExtHumanPawn(Player)!=None) if (ExtHumanPawn(Player)!=None)

View File

@ -6,10 +6,12 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
{ {
Ext_TraitSupplyData(Data).SpawnSupplier(Player); Ext_TraitSupplyData(Data).SpawnSupplier(Player);
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_TraitSupplyData(Data).RemoveSupplier(); Ext_TraitSupplyData(Data).RemoveSupplier();
} }
static function PlayerDied(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function PlayerDied(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_TraitSupplyData(Data).RemoveSupplier(); Ext_TraitSupplyData(Data).RemoveSupplier();

View File

@ -16,6 +16,7 @@ final function SpawnSupplier(KFPawn_Human H, optional bool bGrenades)
if (PlayerOwner!=None && ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo)!=None) if (PlayerOwner!=None && ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo)!=None)
ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo).HasSupplier = class<Ext_TraitSupply>(TraitClass); ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo).HasSupplier = class<Ext_TraitSupply>(TraitClass);
} }
final function RemoveSupplier() final function RemoveSupplier()
{ {
if (SupplyInteraction!=None) if (SupplyInteraction!=None)
@ -24,6 +25,7 @@ final function RemoveSupplier()
if (PlayerOwner!=None && ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo)!=None) if (PlayerOwner!=None && ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo)!=None)
ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo).HasSupplier = None; ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo).HasSupplier = None;
} }
function Destroyed() function Destroyed()
{ {
RemoveSupplier(); RemoveSupplier();

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkSWAT(Perk).RepTacticalMove = Level; Ext_PerkSWAT(Perk).RepTacticalMove = Level;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkSWAT(Perk).RepTacticalMove = 0; Ext_PerkSWAT(Perk).RepTacticalMove = 0;

View File

@ -7,6 +7,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
Perk.ToxicDartDamage = Default.DartDamages[Level-1]; Perk.ToxicDartDamage = Default.DartDamages[Level-1];
Perk.bToxicDart = true; Perk.bToxicDart = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.bToxicDart = false; Perk.bToxicDart = false;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkGunslinger(Perk).bHasUberAmmo = true; Ext_PerkGunslinger(Perk).bHasUberAmmo = true;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkGunslinger(Perk).bHasUberAmmo = false; Ext_PerkGunslinger(Perk).bHasUberAmmo = false;

View File

@ -10,6 +10,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (H!=None) if (H!=None)
H.HandleRadius = Default.RadiusValues[Level-1]; H.HandleRadius = Default.RadiusValues[Level-1];
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local Ext_T_UnCloakHelper H; local Ext_T_UnCloakHelper H;

View File

@ -4,6 +4,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Perk.bCanBeGrabbed = false; Perk.bCanBeGrabbed = false;
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.bCanBeGrabbed = true; Perk.bCanBeGrabbed = true;

View File

@ -6,6 +6,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Ext_PerkBerserker(Perk).VampRegenRate = Default.RegenRate[Level-1]; Ext_PerkBerserker(Perk).VampRegenRate = Default.RegenRate[Level-1];
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Ext_PerkBerserker(Perk).VampRegenRate = 0; Ext_PerkBerserker(Perk).VampRegenRate = 0;

View File

@ -13,6 +13,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
return false; return false;
return Super.MeetsRequirements(Lvl,Perk); return Super.MeetsRequirements(Lvl,Perk);
} }
static final function bool HasMaxCarry(Ext_PerkBase Perk) static final function bool HasMaxCarry(Ext_PerkBase Perk)
{ {
local int i; local int i;
@ -20,6 +21,7 @@ static final function bool HasMaxCarry(Ext_PerkBase Perk)
i = Perk.PerkTraits.Find('TraitType',Class'Ext_TraitCarryCap'); i = Perk.PerkTraits.Find('TraitType',Class'Ext_TraitCarryCap');
return (i==-1 || Perk.PerkTraits[i].CurrentLevel>=3); return (i==-1 || Perk.PerkTraits[i].CurrentLevel>=3);
} }
static function string GetPerkDescription() static function string GetPerkDescription()
{ {
return Super.GetPerkDescription()$"|- Level 4 requires perk level 50 and level 3 carry capacity trait!"; return Super.GetPerkDescription()$"|- Level 4 requires perk level 50 and level 3 carry capacity trait!";
@ -29,6 +31,7 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
{ {
Perk.PrimaryWeapon = None; // Give a new primary weapon. Perk.PrimaryWeapon = None; // Give a new primary weapon.
} }
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
Perk.PrimaryWeapon = Perk.Default.PrimaryWeapon; Perk.PrimaryWeapon = Perk.Default.PrimaryWeapon;
@ -56,6 +59,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (M!=None) if (M!=None)
M.bInfiniteWeight = false; M.bInfiniteWeight = false;
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local class<Inventory> IC; local class<Inventory> IC;

View File

@ -10,6 +10,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
foreach Player.ChildActors(class'Ext_T_ZEDHelper',H) foreach Player.ChildActors(class'Ext_T_ZEDHelper',H)
H.SetDamageScale(Default.DamList[Level-1]); H.SetDamageScale(Default.DamList[Level-1]);
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local Ext_T_ZEDHelper H; local Ext_T_ZEDHelper H;

View File

@ -10,6 +10,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
foreach Player.ChildActors(class'Ext_T_ZEDHelper',H) foreach Player.ChildActors(class'Ext_T_ZEDHelper',H)
H.SetHealthScale(Default.HPList[Level-1]); H.SetHealthScale(Default.HPList[Level-1]);
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local Ext_T_ZEDHelper H; local Ext_T_ZEDHelper H;

View File

@ -83,6 +83,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
} }
return true; return true;
} }
static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local Ext_T_ZEDHelper H; local Ext_T_ZEDHelper H;
@ -97,6 +98,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (Perk.PerkTraits[i].CurrentLevel>0 && Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType)!=None && !Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType).Default.bIsSummoner) if (Perk.PerkTraits[i].CurrentLevel>0 && Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType)!=None && !Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType).Default.bIsSummoner)
Perk.PerkTraits[i].TraitType.Static.ApplyEffectOn(Player,Perk,Level,Data); Perk.PerkTraits[i].TraitType.Static.ApplyEffectOn(Player,Perk,Level,Data);
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local Ext_T_ZEDHelper H; local Ext_T_ZEDHelper H;
@ -115,6 +117,7 @@ static function string GetRepData()
S $= IntToStr(Default.FinalLevelPrestige); S $= IntToStr(Default.FinalLevelPrestige);
return S; return S;
} }
static function string ClientSetRepData(string S) static function string ClientSetRepData(string S)
{ {
S = Super.ClientSetRepData(S); S = Super.ClientSetRepData(S);
@ -136,6 +139,7 @@ static function string GetValue(name PropName, int ElementIndex)
return Super.GetValue(PropName,ElementIndex); return Super.GetValue(PropName,ElementIndex);
} }
} }
static function ApplyValue(name PropName, int ElementIndex, string Value) static function ApplyValue(name PropName, int ElementIndex, string Value)
{ {
switch (PropName) switch (PropName)

View File

@ -33,6 +33,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
if (Perk.PerkTraits[i].CurrentLevel>0 && Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType)!=None && !Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType).Default.bIsSummoner) if (Perk.PerkTraits[i].CurrentLevel>0 && Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType)!=None && !Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType).Default.bIsSummoner)
Perk.PerkTraits[i].TraitType.Static.ApplyEffectOn(Player,Perk,Level,Data); Perk.PerkTraits[i].TraitType.Static.ApplyEffectOn(Player,Perk,Level,Data);
} }
static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local Ext_T_ZEDHelper H; local Ext_T_ZEDHelper H;
@ -41,6 +42,7 @@ static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Leve
if (H.bIsExtra) if (H.bIsExtra)
H.Destroy(); H.Destroy();
} }
static final function AddHelperType(byte Lv, KFPawn_Human Player) static final function AddHelperType(byte Lv, KFPawn_Human Player)
{ {
local Ext_T_ZEDHelper H; local Ext_T_ZEDHelper H;

View File

@ -13,6 +13,7 @@ function InitStyle()
if (ItemTex==None) if (ItemTex==None)
ItemTex = Texture2D'EngineMaterials.DefaultWhiteGrid'; ItemTex = Texture2D'EngineMaterials.DefaultWhiteGrid';
} }
function RenderFramedWindow(KFGUI_FloatingWindow P); function RenderFramedWindow(KFGUI_FloatingWindow P);
function RenderWindow(KFGUI_Page P); function RenderWindow(KFGUI_Page P);
function RenderToolTip(KFGUI_Tooltip TT); function RenderToolTip(KFGUI_Tooltip TT);
@ -45,6 +46,7 @@ function PickDefaultFontSize(float YRes)
PickFont(DefaultFontSize,YRes).GetStringHeightAndWidth(S,YL,XL); PickFont(DefaultFontSize,YRes).GetStringHeightAndWidth(S,YL,XL);
DefaultHeight = float(YL)*YRes; DefaultHeight = float(YL)*YRes;
} }
final function DrawText(byte Res, string S) final function DrawText(byte Res, string S)
{ {
local float Scale; local float Scale;
@ -70,6 +72,7 @@ final function DrawCornerTexNU(int SizeX, int SizeY, byte Dir) // Draw non-unifo
Canvas.DrawTile(ItemTex,SizeX,SizeY,11,73,66,-58); Canvas.DrawTile(ItemTex,SizeX,SizeY,11,73,66,-58);
} }
} }
final function DrawCornerTex(int Size, byte Dir) final function DrawCornerTex(int Size, byte Dir)
{ {
switch (Dir) switch (Dir)
@ -87,6 +90,7 @@ final function DrawCornerTex(int Size, byte Dir)
Canvas.DrawTile(ItemTex,Size,Size,11,73,66,-58); Canvas.DrawTile(ItemTex,Size,Size,11,73,66,-58);
} }
} }
final function DrawWhiteBox(int XS, int YS) final function DrawWhiteBox(int XS, int YS)
{ {
Canvas.DrawTile(ItemTex,XS,YS,19,45,1,1); Canvas.DrawTile(ItemTex,XS,YS,19,45,1,1);

View File

@ -68,6 +68,7 @@ simulated function HandleDrawMenu()
} }
} }
} }
simulated function RenderMenu(Canvas C) simulated function RenderMenu(Canvas C)
{ {
local int i; local int i;
@ -290,6 +291,7 @@ simulated final function int GetFreeIndex(bool bNewAlwaysTop) // Find first allo
ActiveMenus.Length = i+1; ActiveMenus.Length = i+1;
return i; return i;
} }
simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass) simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
{ {
local int i; local int i;
@ -351,6 +353,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
M.ShowMenu(); M.ShowMenu();
return M; return M;
} }
simulated function CloseMenu(class<KFGUI_Page> MenuClass, optional bool bCloseAll) simulated function CloseMenu(class<KFGUI_Page> MenuClass, optional bool bCloseAll)
{ {
local int i; local int i;
@ -380,6 +383,7 @@ simulated function CloseMenu(class<KFGUI_Page> MenuClass, optional bool bCloseAl
if (ActiveMenus.Length==0) if (ActiveMenus.Length==0)
SetMenuState(false); SetMenuState(false);
} }
simulated function PopCloseMenu(KFGUI_Base Item) simulated function PopCloseMenu(KFGUI_Base Item)
{ {
local int i; local int i;
@ -410,6 +414,7 @@ simulated function PopCloseMenu(KFGUI_Base Item)
if (ActiveMenus.Length==0) if (ActiveMenus.Length==0)
SetMenuState(false); SetMenuState(false);
} }
simulated function BringMenuToFront(KFGUI_Page Page) simulated function BringMenuToFront(KFGUI_Page Page)
{ {
local int i; local int i;
@ -431,6 +436,7 @@ simulated function BringMenuToFront(KFGUI_Page Page)
ActiveMenus.Insert(0,1); ActiveMenus.Insert(0,1);
ActiveMenus[0] = Page; ActiveMenus[0] = Page;
} }
simulated final function bool MenuIsOpen(optional class<KFGUI_Page> MenuClass) simulated final function bool MenuIsOpen(optional class<KFGUI_Page> MenuClass)
{ {
local int i; local int i;
@ -440,6 +446,7 @@ simulated final function bool MenuIsOpen(optional class<KFGUI_Page> MenuClass)
return true; return true;
return false; return false;
} }
simulated final function GrabInputFocus(KFGUI_Base Comp, optional bool bForce) simulated final function GrabInputFocus(KFGUI_Base Comp, optional bool bForce)
{ {
if (Comp==KeyboardFocus && !bForce) if (Comp==KeyboardFocus && !bForce)
@ -515,6 +522,7 @@ simulated final function GUI_InputMouse(bool bPressed, bool bRight)
MouseFocus.MouseRelease(bRight); MouseFocus.MouseRelease(bRight);
} }
} }
simulated final function bool CheckMouse(name Key, EInputEvent Event) simulated final function bool CheckMouse(name Key, EInputEvent Event)
{ {
if (Event == IE_Pressed) if (Event == IE_Pressed)
@ -543,6 +551,7 @@ simulated final function bool CheckMouse(name Key, EInputEvent Event)
} }
return false; return false;
} }
simulated function bool ReceivedInputKey(int ControllerId, name Key, EInputEvent Event, optional float AmountDepressed=1.f, optional bool bGamepad) simulated function bool ReceivedInputKey(int ControllerId, name Key, EInputEvent Event, optional float AmountDepressed=1.f, optional bool bGamepad)
{ {
if (!bIsInMenuState) if (!bIsInMenuState)
@ -565,6 +574,7 @@ simulated function bool ReceivedInputKey(int ControllerId, name Key, EInputEvent
} }
return true; return true;
} }
simulated function bool ReceivedInputChar(int ControllerId, string Unicode) simulated function bool ReceivedInputChar(int ControllerId, string Unicode)
{ {
if (!bIsInMenuState) if (!bIsInMenuState)
@ -576,14 +586,17 @@ simulated Delegate bool OnInputKey(int ControllerId, name Key, EInputEvent Event
{ {
return false; return false;
} }
simulated Delegate bool OnReceivedInputChar(int ControllerId, string Unicode) simulated Delegate bool OnReceivedInputChar(int ControllerId, string Unicode)
{ {
return false; return false;
} }
simulated Delegate bool InternalInputKey(int ControllerId, name Key, EInputEvent Event, optional float AmountDepressed=1.f, optional bool bGamepad) simulated Delegate bool InternalInputKey(int ControllerId, name Key, EInputEvent Event, optional float AmountDepressed=1.f, optional bool bGamepad)
{ {
return false; return false;
} }
simulated Delegate bool InternalReceivedInputChar(int ControllerId, string Unicode) simulated Delegate bool InternalReceivedInputChar(int ControllerId, string Unicode)
{ {
return false; return false;

View File

@ -8,6 +8,7 @@ function DrawHUD(HUD H)
{ {
//ControllerOwner.RenderMenu(H.Canvas); //ControllerOwner.RenderMenu(H.Canvas);
} }
function PostRender(Canvas Canvas) function PostRender(Canvas Canvas)
{ {
if (ControllerOwner.bIsInMenuState) if (ControllerOwner.bIsInMenuState)

View File

@ -16,6 +16,7 @@ static function OpenMenuForClient(PlayerController PC, class<KFGUI_Page> Page)
G = PC.Spawn(class'KF2GUINetwork',PC); G = PC.Spawn(class'KF2GUINetwork',PC);
G.ClientOpenMenu(Page); G.ClientOpenMenu(Page);
} }
static function CloseMenuForClient(PlayerController PC, class<KFGUI_Page> Page, optional bool bCloseAll) static function CloseMenuForClient(PlayerController PC, class<KFGUI_Page> Page, optional bool bCloseAll)
{ {
local KF2GUINetwork G; local KF2GUINetwork G;
@ -35,6 +36,7 @@ simulated reliable client function ClientOpenMenu(class<KFGUI_Page> Page)
GUIController = Class'KF2GUIController'.Static.GetGUIController(PlayerOwner); GUIController = Class'KF2GUIController'.Static.GetGUIController(PlayerOwner);
GUIController.OpenMenu(Page); GUIController.OpenMenu(Page);
} }
simulated reliable client function ClientCloseMenu(class<KFGUI_Page> Page, bool bCloseAll) simulated reliable client function ClientCloseMenu(class<KFGUI_Page> Page, bool bCloseAll)
{ {
if (!bLocalClient) if (!bLocalClient)

View File

@ -26,6 +26,7 @@ function InitStyle()
DrawFonts[i] = class'Engine'.Static.GetMediumFont(); DrawFonts[i] = class'Engine'.Static.GetMediumFont();
} }
} }
function RenderFramedWindow(KFGUI_FloatingWindow P) function RenderFramedWindow(KFGUI_FloatingWindow P)
{ {
local int XS,YS,CornerSlope,TitleHeight; local int XS,YS,CornerSlope,TitleHeight;
@ -83,6 +84,7 @@ function RenderFramedWindow(KFGUI_FloatingWindow P)
DrawText(DefaultFontSize,P.WindowTitle); DrawText(DefaultFontSize,P.WindowTitle);
} }
} }
function RenderWindow(KFGUI_Page P) function RenderWindow(KFGUI_Page P)
{ {
local int XS,YS,CornerSlope; local int XS,YS,CornerSlope;
@ -112,6 +114,7 @@ function RenderWindow(KFGUI_Page P)
Canvas.SetPos(XS-CornerSlope,CornerSlope); Canvas.SetPos(XS-CornerSlope,CornerSlope);
DrawWhiteBox(CornerSlope,YS-(CornerSlope*2)); DrawWhiteBox(CornerSlope,YS-(CornerSlope*2));
} }
function RenderToolTip(KFGUI_Tooltip TT) function RenderToolTip(KFGUI_Tooltip TT)
{ {
local int i; local int i;
@ -168,6 +171,7 @@ function RenderToolTip(KFGUI_Tooltip TT)
Y+=DefaultHeight; Y+=DefaultHeight;
} }
} }
function RenderButton(KFGUI_Button B) function RenderButton(KFGUI_Button B)
{ {
local float XL,YL,TS; local float XL,YL,TS;
@ -217,6 +221,7 @@ function RenderButton(KFGUI_Button B)
Canvas.DrawText(B.ButtonText,,TS,TS,B.TextFontInfo); Canvas.DrawText(B.ButtonText,,TS,TS,B.TextFontInfo);
} }
} }
function RenderEditBox(KFGUI_EditBox E) function RenderEditBox(KFGUI_EditBox E)
{ {
local color C; local color C;
@ -249,6 +254,7 @@ function RenderEditBox(KFGUI_EditBox E)
Canvas.DrawColor = C; Canvas.DrawColor = C;
DrawWhiteBox(E.CompPos[2]-6,E.CompPos[3]-6); DrawWhiteBox(E.CompPos[2]-6,E.CompPos[3]-6);
} }
function RenderScrollBar(KFGUI_ScrollBarBase S) function RenderScrollBar(KFGUI_ScrollBarBase S)
{ {
local float A; local float A;
@ -303,6 +309,7 @@ function RenderScrollBar(KFGUI_ScrollBarBase S)
DrawWhiteBox(S.SliderScale,S.CompPos[3]); DrawWhiteBox(S.SliderScale,S.CompPos[3]);
} }
} }
function RenderColumnHeader(KFGUI_ColumnTop C, float XPos, float Width, int Index, bool bFocus, bool bSort) function RenderColumnHeader(KFGUI_ColumnTop C, float XPos, float Width, int Index, bool bFocus, bool bSort)
{ {
local int XS; local int XS;
@ -329,6 +336,7 @@ function RenderColumnHeader(KFGUI_ColumnTop C, float XPos, float Width, int Inde
Canvas.SetPos(XPos+XS,(C.CompPos[3]-C.ListOwner.TextHeight)*0.5f); Canvas.SetPos(XPos+XS,(C.CompPos[3]-C.ListOwner.TextHeight)*0.5f);
C.ListOwner.DrawStrClipped(C.ListOwner.Columns[Index].Text); C.ListOwner.DrawStrClipped(C.ListOwner.Columns[Index].Text);
} }
function RenderCheckbox(KFGUI_CheckBox C) function RenderCheckbox(KFGUI_CheckBox C)
{ {
if (C.bDisabled) if (C.bDisabled)
@ -351,6 +359,7 @@ function RenderCheckbox(KFGUI_CheckBox C)
Canvas.DrawTile(LoadedTex[1],C.CompPos[2],C.CompPos[3],0,0,LoadedTex[1].GetSurfaceWidth(),LoadedTex[1].GetSurfaceHeight()); Canvas.DrawTile(LoadedTex[1],C.CompPos[2],C.CompPos[3],0,0,LoadedTex[1].GetSurfaceWidth(),LoadedTex[1].GetSurfaceHeight());
} }
} }
function RenderComboBox(KFGUI_ComboBox C) function RenderComboBox(KFGUI_ComboBox C)
{ {
if (C.bDisabled) if (C.bDisabled)
@ -375,6 +384,7 @@ function RenderComboBox(KFGUI_ComboBox C)
Canvas.PopMaskRegion(); Canvas.PopMaskRegion();
} }
} }
function RenderComboList(KFGUI_ComboSelector C) function RenderComboList(KFGUI_ComboSelector C)
{ {
local float X,Y,YL,YP,Edge; local float X,Y,YL,YP,Edge;
@ -430,6 +440,7 @@ function RenderComboList(KFGUI_ComboSelector C)
C.PlayMenuSound(MN_DropdownChange); C.PlayMenuSound(MN_DropdownChange);
} }
} }
function RenderRightClickMenu(KFGUI_RightClickMenu C) function RenderRightClickMenu(KFGUI_RightClickMenu C)
{ {
local float X,Y,YP,Edge,TextScale; local float X,Y,YP,Edge,TextScale;

View File

@ -79,11 +79,13 @@ simulated function PostBeginPlay()
SetTimer(300 + FRand()*120.f,false,'CheckForItems'); SetTimer(300 + FRand()*120.f,false,'CheckForItems');
} }
simulated function Destroyed() simulated function Destroyed()
{ {
Super.Destroyed(); Super.Destroyed();
NotifyLevelChange(); NotifyLevelChange();
} }
simulated final function NotifyLevelChange(optional bool bMapswitch) simulated final function NotifyLevelChange(optional bool bMapswitch)
{ {
if (OnlineSub!=None) if (OnlineSub!=None)
@ -96,6 +98,7 @@ simulated final function NotifyLevelChange(optional bool bMapswitch)
if (bMapswitch) if (bMapswitch)
SetTimer(0.5,false,'PendingMapSwitch'); SetTimer(0.5,false,'PendingMapSwitch');
} }
simulated function PendingMapswitch () simulated function PendingMapswitch ()
{ {
// Make sure we dont garbage collect the game: // Make sure we dont garbage collect the game:
@ -132,6 +135,7 @@ final function AddKillMessage(class<Pawn> Victim, int Value, PlayerReplicationIn
KillMessages[i].Name = GetNameOf(Victim); KillMessages[i].Name = GetNameOf(Victim);
KillMessages[i].MsgColor = GetMsgColor(bDmg,Value); KillMessages[i].MsgColor = GetMsgColor(bDmg,Value);
} }
final function AddDeathMessage(string S, string StrippedMsg) final function AddDeathMessage(string S, string StrippedMsg)
{ {
DeathMessages.Insert(0,1); DeathMessages.Insert(0,1);
@ -139,6 +143,7 @@ final function AddDeathMessage(string S, string StrippedMsg)
DeathMessages[0].SMsg = StrippedMsg; DeathMessages[0].SMsg = StrippedMsg;
DeathMessages[0].MsgTime = WorldInfo.TimeSeconds; DeathMessages[0].MsgTime = WorldInfo.TimeSeconds;
} }
final function ShowProgressMsg(string S, optional bool bDis) final function ShowProgressMsg(string S, optional bool bDis)
{ {
if (S=="") if (S=="")
@ -156,6 +161,7 @@ final function ShowProgressMsg(string S, optional bool bDis)
LocalPlayer(KFPlayerOwner.Player).ViewportClient.ViewportConsole.OutputText(Repl(S,"|","\n")); LocalPlayer(KFPlayerOwner.Player).ViewportClient.ViewportConsole.OutputText(Repl(S,"|","\n"));
} }
} }
static final function string GetNameOf(class<Pawn> Other) static final function string GetNameOf(class<Pawn> Other)
{ {
local string S; local string S;
@ -178,6 +184,7 @@ static final function string GetNameOf(class<Pawn> Other)
S = Repl(S,"_"," "); S = Repl(S,"_"," ");
return S; return S;
} }
static final function string GetNameArticle(string S) static final function string GetNameArticle(string S)
{ {
switch (Caps(Left(S,1))) // Check if a vowel, then an. switch (Caps(Left(S,1))) // Check if a vowel, then an.
@ -191,6 +198,7 @@ static final function string GetNameArticle(string S)
} }
return "a"; return "a";
} }
static final function string StripMsgColors(string S) static final function string StripMsgColors(string S)
{ {
local int i; local int i;
@ -204,6 +212,7 @@ static final function string StripMsgColors(string S)
} }
return S; return S;
} }
final function color GetMsgColor(bool bDamage, int Count) final function color GetMsgColor(bool bDamage, int Count)
{ {
local float T; local float T;
@ -298,6 +307,7 @@ event PostRender()
if (PlayerOwner.Player==None && OnlineSub!=None) if (PlayerOwner.Player==None && OnlineSub!=None)
NotifyLevelChange(); NotifyLevelChange();
} }
simulated function CancelConnection() simulated function CancelConnection()
{ {
if (!bConfirmDisconnect) if (!bConfirmDisconnect)
@ -307,6 +317,7 @@ simulated function CancelConnection()
} }
else class'Engine'.Static.GetEngine().GameViewport.ConsoleCommand("Disconnect"); else class'Engine'.Static.GetEngine().GameViewport.ConsoleCommand("Disconnect");
} }
final function DrawRespawnCounter() final function DrawRespawnCounter()
{ {
local float Sc,XL,YL; local float Sc,XL,YL;
@ -319,6 +330,7 @@ final function DrawRespawnCounter()
Canvas.SetPos((Canvas.ClipX-XL)*0.5,Canvas.ClipY*0.075); Canvas.SetPos((Canvas.ClipX-XL)*0.5,Canvas.ClipY*0.075);
Canvas.DrawText(S,,Sc,Sc); Canvas.DrawText(S,,Sc,Sc);
} }
exec function SetShowScores(bool bNewValue) exec function SetShowScores(bool bNewValue)
{ {
bShowScores = bNewValue; bShowScores = bNewValue;
@ -329,6 +341,7 @@ exec function SetShowScores(bool bNewValue)
else GUIController.CloseMenu(class'UI_Scoreboard_CD'); else GUIController.CloseMenu(class'UI_Scoreboard_CD');
} }
} }
final function RenderKillMsg() final function RenderKillMsg()
{ {
local float Sc,YL,T,X,Y; local float Sc,YL,T,X,Y;
@ -363,6 +376,7 @@ final function RenderKillMsg()
Y+=YL; Y+=YL;
} }
} }
final function RenderDMMessages() final function RenderDMMessages()
{ {
local float Sc,YL,XL,T,Y,X; local float Sc,YL,XL,T,Y,X;
@ -424,6 +438,7 @@ final function RenderDMMessages()
} }
} }
} }
final function RenderProgress() final function RenderProgress()
{ {
local float Y,XL,YL,Sc; local float Y,XL,YL,Sc;
@ -627,6 +642,7 @@ simulated static final function color GetHPColorScale(Pawn P)
C.B = 25; C.B = 25;
return C; return C;
} }
simulated function DrawFriendlyHUDZ(KFPawn_Monster KFPH) simulated function DrawFriendlyHUDZ(KFPawn_Monster KFPH)
{ {
local float Percentage; local float Percentage;
@ -662,6 +678,7 @@ simulated function DrawFriendlyHUDZ(KFPawn_Monster KFPH)
Canvas.SetPos(ScreenPos.X - (BarLength *0.5f), ScreenPos.Y - BarHeight * 2); Canvas.SetPos(ScreenPos.X - (BarLength *0.5f), ScreenPos.Y - BarHeight * 2);
Canvas.DrawText(KFPH.PlayerReplicationInfo.PlayerName,,FontScale,FontScale, MyFontRenderInfo); Canvas.DrawText(KFPH.PlayerReplicationInfo.PlayerName,,FontScale,FontScale, MyFontRenderInfo);
} }
simulated function bool DrawFriendlyHumanPlayerInfo(KFPawn_Human KFPH) simulated function bool DrawFriendlyHumanPlayerInfo(KFPawn_Human KFPH)
{ {
local float Percentage; local float Percentage;
@ -781,6 +798,7 @@ simulated function bool DrawFriendlyHumanPlayerInfo(KFPawn_Human KFPH)
return true; return true;
} }
simulated final function DrawPlayerInfoBar(KFPawn P, float BarPercentage, float BarLength, float BarHeight, float XPos, float YPos, Color BarColor, byte FadeAlpha, optional bool bDrawingHealth) simulated final function DrawPlayerInfoBar(KFPawn P, float BarPercentage, float BarLength, float BarHeight, float XPos, float YPos, Color BarColor, byte FadeAlpha, optional bool bDrawingHealth)
{ {
//background for status bar //background for status bar
@ -811,6 +829,7 @@ simulated final function DrawPlayerInfoBar(KFPawn P, float BarPercentage, float
Canvas.DrawTileStretched(PlayerStatusBarBGTexture, BarLength * BarPercentage, BarHeight, 0, 0, 32, 32); Canvas.DrawTileStretched(PlayerStatusBarBGTexture, BarLength * BarPercentage, BarHeight, 0, 0, 32, 32);
} }
} }
simulated function DrawPerkIcons(KFPawn_Human KFPH, float PerkIconSize, float PerkIconPosX, float PerkIconPosY, float SupplyIconPosX, float SupplyIconPosY, bool bDropShadow) simulated function DrawPerkIcons(KFPawn_Human KFPH, float PerkIconSize, float PerkIconPosX, float PerkIconPosY, float SupplyIconPosX, float SupplyIconPosY, bool bDropShadow)
{ {
local byte PrestigeLevel; local byte PrestigeLevel;
@ -876,6 +895,7 @@ simulated function DrawPerkIcons(KFPawn_Human KFPH, float PerkIconSize, float Pe
Canvas.DrawTile(KFPRI.ECurrentPerk.default.BasePerk.static.GetInteractIcon(), (PlayerStatusIconSize * 0.75) * ResModifier, (PlayerStatusIconSize * 0.75) * ResModifier, 0, 0, 256, 256); Canvas.DrawTile(KFPRI.ECurrentPerk.default.BasePerk.static.GetInteractIcon(), (PlayerStatusIconSize * 0.75) * ResModifier, (PlayerStatusIconSize * 0.75) * ResModifier, 0, 0, 256, 256);
} }
} }
simulated function DrawMonsterHUD(KFPawn KFPH) simulated function DrawMonsterHUD(KFPawn KFPH)
{ {
local float Percentage; local float Percentage;
@ -917,6 +937,7 @@ simulated function DrawMonsterHUD(KFPawn KFPH)
Canvas.SetPos(ScreenPos.X - (BarLength * 0.75), ScreenPos.Y - BarHeight * 2); Canvas.SetPos(ScreenPos.X - (BarLength * 0.75), ScreenPos.Y - BarHeight * 2);
Canvas.DrawRect(PlayerStatusIconSize * FriendlyHudScale,PlayerStatusIconSize * FriendlyHudScale,HealthIconTex); Canvas.DrawRect(PlayerStatusIconSize * FriendlyHudScale,PlayerStatusIconSize * FriendlyHudScale,HealthIconTex);
} }
simulated function DrawPetInfo() simulated function DrawPetInfo()
{ {
local float X,Y,Sc,XL,YL,YS; local float X,Y,Sc,XL,YL,YS;
@ -1110,6 +1131,7 @@ simulated function SearchInventoryForNewItem()
} }
bLoadedInitItems = true; bLoadedInitItems = true;
} }
simulated final function string RarityStr(byte R) simulated final function string RarityStr(byte R)
{ {
switch (R) switch (R)

View File

@ -43,6 +43,7 @@ function PreDraw()
Canvas.SetClip(CompPos[0]+CompPos[2],CompPos[1]+CompPos[3]); Canvas.SetClip(CompPos[0]+CompPos[2],CompPos[1]+CompPos[3]);
DrawMenu(); DrawMenu();
} }
function DrawMenu(); // Draw menu now. function DrawMenu(); // Draw menu now.
function CloseMenu(); // Menu was closed. function CloseMenu(); // Menu was closed.
@ -56,6 +57,7 @@ function MenuTick(float DeltaTime)
Timer(); Timer();
} }
} }
final function SetTimer(float Rate, optional bool bLoop) final function SetTimer(float Rate, optional bool bLoop)
{ {
bTimerActive = (Rate>0.f); bTimerActive = (Rate>0.f);
@ -66,6 +68,7 @@ final function SetTimer(float Rate, optional bool bLoop)
TimerCounter = Rate; TimerCounter = Rate;
} }
} }
function Timer(); function Timer();
function MouseEnter() function MouseEnter()
@ -73,11 +76,13 @@ function MouseEnter()
bFocused = true; bFocused = true;
OnFocus(Self,True); OnFocus(Self,True);
} }
function MouseLeave() function MouseLeave()
{ {
bFocused = false; bFocused = false;
OnFocus(Self,False); OnFocus(Self,False);
} }
function MouseClick(bool bRight); function MouseClick(bool bRight);
function MouseRelease(bool bRight); function MouseRelease(bool bRight);
function DoubleMouseClick(bool bRight) // User rapidly double clicked this component. function DoubleMouseClick(bool bRight) // User rapidly double clicked this component.
@ -139,16 +144,19 @@ function UserPressedEsc() // user pressed escape while this menu was active.
ParentComponent.UserPressedEsc(); ParentComponent.UserPressedEsc();
else DoClose(); else DoClose();
} }
function bool BringPageToFront() function bool BringPageToFront()
{ {
if (ParentComponent!=None) if (ParentComponent!=None)
return ParentComponent.BringPageToFront(); return ParentComponent.BringPageToFront();
return true; // Allow user to bring this page to front. return true; // Allow user to bring this page to front.
} }
final function bool IsTopMenu() final function bool IsTopMenu()
{ {
return (Owner.ActiveMenus.Length>0 && GetPageTop()==Owner.ActiveMenus[0]); return (Owner.ActiveMenus.Length>0 && GetPageTop()==Owner.ActiveMenus[0]);
} }
final function KFGUI_Page GetPageTop() final function KFGUI_Page GetPageTop()
{ {
local KFGUI_Base M; local KFGUI_Base M;
@ -157,17 +165,20 @@ final function KFGUI_Page GetPageTop()
{} {}
return KFGUI_Page(M); return KFGUI_Page(M);
} }
function KFGUI_Base FindComponentID(name InID) function KFGUI_Base FindComponentID(name InID)
{ {
if (ID==InID) if (ID==InID)
return Self; return Self;
return None; return None;
} }
function FindAllComponentID(name InID, out array<KFGUI_Base> Res) function FindAllComponentID(name InID, out array<KFGUI_Base> Res)
{ {
if (ID==InID) if (ID==InID)
Res[Res.Length] = Self; Res[Res.Length] = Self;
} }
function RemoveComponent(KFGUI_Base B); function RemoveComponent(KFGUI_Base B);
function GetInputFocus() function GetInputFocus()
@ -176,6 +187,7 @@ function GetInputFocus()
Owner.InputFocus.LostInputFocus(); Owner.InputFocus.LostInputFocus();
Owner.InputFocus = Self; Owner.InputFocus = Self;
} }
function DropInputFocus() function DropInputFocus()
{ {
if (Owner.InputFocus==Self) if (Owner.InputFocus==Self)
@ -184,6 +196,7 @@ function DropInputFocus()
Owner.InputFocus = None; Owner.InputFocus = None;
} }
} }
function LostInputFocus(); function LostInputFocus();
// Obtain keyboard focus. // Obtain keyboard focus.
@ -191,17 +204,20 @@ final function GrabKeyFocus()
{ {
Owner.GrabInputFocus(Self); Owner.GrabInputFocus(Self);
} }
final function ReleaseKeyFocus() final function ReleaseKeyFocus()
{ {
if (Owner.KeyboardFocus==Self) if (Owner.KeyboardFocus==Self)
Owner.GrabInputFocus(None); Owner.GrabInputFocus(None);
} }
function LostKeyFocus(); function LostKeyFocus();
function bool NotifyInputKey(int ControllerId, name Key, EInputEvent Event, float AmountDepressed, bool bGamepad) function bool NotifyInputKey(int ControllerId, name Key, EInputEvent Event, float AmountDepressed, bool bGamepad)
{ {
return false; return false;
} }
function bool NotifyInputChar(int ControllerId, string Unicode) function bool NotifyInputChar(int ControllerId, string Unicode)
{ {
return false; return false;
@ -218,6 +234,7 @@ final function GetActualPos(out float X, out float Y)
X = ((XPosition+X)*InputPos[2]) + InputPos[0]; X = ((XPosition+X)*InputPos[2]) + InputPos[0];
Y = ((YPosition+Y)*InputPos[3]) + InputPos[1]; Y = ((YPosition+Y)*InputPos[3]) + InputPos[1];
} }
final function GetRealtivePos(out float X, out float Y) final function GetRealtivePos(out float X, out float Y)
{ {
X = X / CompPos[2]; X = X / CompPos[2];

View File

@ -14,6 +14,7 @@ function InitMenu()
Super.InitMenu(); Super.InitMenu();
bClickable = !bDisabled; bClickable = !bDisabled;
} }
function MouseClick(bool bRight) function MouseClick(bool bRight)
{ {
if (!bDisabled) if (!bDisabled)
@ -22,6 +23,7 @@ function MouseClick(bool bRight)
bPressedDown = true; bPressedDown = true;
} }
} }
function MouseRelease(bool bRight) function MouseRelease(bool bRight)
{ {
if (!bDisabled && PressedDown[byte(bRight)]==1) if (!bDisabled && PressedDown[byte(bRight)]==1)
@ -31,6 +33,7 @@ function MouseRelease(bool bRight)
HandleMouseClick(bRight); HandleMouseClick(bRight);
} }
} }
function MouseLeave() function MouseLeave()
{ {
Super.MouseLeave(); Super.MouseLeave();
@ -40,6 +43,7 @@ function MouseLeave()
PressedDown[1] = 0; PressedDown[1] = 0;
bPressedDown = false; bPressedDown = false;
} }
function MouseEnter() function MouseEnter()
{ {
Super.MouseEnter(); Super.MouseEnter();
@ -74,6 +78,7 @@ function NotifyMousePaused()
ToolTipItem.GetInputFocus(); ToolTipItem.GetInputFocus();
} }
} }
final function ChangeToolTip(string S) final function ChangeToolTip(string S)
{ {
if (ToolTipItem!=None) if (ToolTipItem!=None)

View File

@ -120,6 +120,7 @@ function KFGUI_ListItem AddLine(string Value, optional int iValue, optional stri
return N; return N;
} }
final function RemoveLine(KFGUI_ListItem I) final function RemoveLine(KFGUI_ListItem I)
{ {
local KFGUI_ListItem N; local KFGUI_ListItem N;
@ -153,6 +154,7 @@ final function RemoveLine(KFGUI_ListItem I)
UpdateListSize(); UpdateListSize();
} }
final function EmptyList() final function EmptyList()
{ {
local KFGUI_ListItem N,I; local KFGUI_ListItem N,I;
@ -403,11 +405,13 @@ function PreDraw()
CompPos[2] += SpaceX; CompPos[2] += SpaceX;
CompPos[3] += ColumnComp.CompPos[3]; CompPos[3] += ColumnComp.CompPos[3];
} }
function InternalClickedItem(int Index, bool bRight, int MouseX, int MouseY) function InternalClickedItem(int Index, bool bRight, int MouseX, int MouseY)
{ {
SelectedRowIndex = Index; SelectedRowIndex = Index;
OnSelectedRow(GetFromIndex(Index),Index,bRight,false); OnSelectedRow(GetFromIndex(Index),Index,bRight,false);
} }
function InternalDblClickedItem(int Index, bool bRight, int MouseX, int MouseY) function InternalDblClickedItem(int Index, bool bRight, int MouseX, int MouseY)
{ {
SelectedRowIndex = Index; SelectedRowIndex = Index;

View File

@ -132,6 +132,7 @@ function MouseClick(bool bRight)
} }
} }
} }
function MouseRelease(bool bRight) function MouseRelease(bool bRight)
{ {
if (bScaleColumn && !bRight) if (bScaleColumn && !bRight)
@ -155,12 +156,14 @@ function MouseRelease(bool bRight)
} }
} }
} }
function byte GetCursorStyle() function byte GetCursorStyle()
{ {
if (bClickable) if (bClickable)
return (bMouseScaler ? 2 : 1); return (bMouseScaler ? 2 : 1);
return 0; return 0;
} }
function MouseLeave() function MouseLeave()
{ {
Super.MouseLeave(); Super.MouseLeave();
@ -171,6 +174,7 @@ function MouseLeave()
bPressedDown = false; bPressedDown = false;
} }
} }
function MouseEnter() function MouseEnter()
{ {
Super.MouseEnter(); Super.MouseEnter();

View File

@ -38,12 +38,14 @@ function HandleMouseClick(bool bRight)
Selection.YPosition-=((Selection.YPosition+Selection.YSize)-1.f); Selection.YPosition-=((Selection.YPosition+Selection.YSize)-1.f);
Selection.GetInputFocus(); Selection.GetInputFocus();
} }
final function string GetCurrent() final function string GetCurrent()
{ {
if (SelectedIndex<Values.Length) if (SelectedIndex<Values.Length)
return Values[SelectedIndex]; return Values[SelectedIndex];
return ""; return "";
} }
final function bool SetValue(string S) final function bool SetValue(string S)
{ {
local int i; local int i;
@ -54,6 +56,7 @@ final function bool SetValue(string S)
SelectedIndex = i; SelectedIndex = i;
return true; return true;
} }
Delegate OnComboChanged(KFGUI_ComboBox Sender); Delegate OnComboChanged(KFGUI_ComboBox Sender);
defaultproperties defaultproperties

View File

@ -112,6 +112,7 @@ function MouseLeave()
{ {
Super(KFGUI_Base).MouseLeave(); Super(KFGUI_Base).MouseLeave();
} }
function MouseEnter() function MouseEnter()
{ {
Super(KFGUI_Base).MouseEnter(); Super(KFGUI_Base).MouseEnter();
@ -129,6 +130,7 @@ function bool CaptureMouse()
} }
return Super.CaptureMouse(); return Super.CaptureMouse();
} }
function CloseMenu() function CloseMenu()
{ {
local int i; local int i;
@ -137,6 +139,7 @@ function CloseMenu()
ItemComponents[i].CloseMenu(); ItemComponents[i].CloseMenu();
Super.CloseMenu(); Super.CloseMenu();
} }
function NotifyLevelChange() function NotifyLevelChange()
{ {
local int i; local int i;
@ -145,6 +148,7 @@ function NotifyLevelChange()
ItemComponents[i].NotifyLevelChange(); ItemComponents[i].NotifyLevelChange();
Super.NotifyLevelChange(); Super.NotifyLevelChange();
} }
function MenuTick(float DeltaTime) function MenuTick(float DeltaTime)
{ {
local int i; local int i;

View File

@ -188,6 +188,7 @@ function bool NotifyInputKey(int ControllerId, name Key, EInputEvent Event, floa
} }
return true; return true;
} }
final function PasteText() final function PasteText()
{ {
local string S; local string S;
@ -207,6 +208,7 @@ final function PasteText()
else Value = Left(Value,TypePos) $ S $ Mid(Value,TypePos); else Value = Left(Value,TypePos) $ S $ Mid(Value,TypePos);
TypePos+=Len(S); TypePos+=Len(S);
} }
function bool NotifyInputChar(int ControllerId, string Unicode) function bool NotifyInputChar(int ControllerId, string Unicode)
{ {
if ((!bAllSelected && Len(Value)>=MaxTextLength) || (bHoldCtrl && (Unicode~="C" || Unicode~="X" || Unicode~="V"))) if ((!bAllSelected && Len(Value)>=MaxTextLength) || (bHoldCtrl && (Unicode~="C" || Unicode~="X" || Unicode~="V")))

View File

@ -12,6 +12,7 @@ function InitMenu()
HeaderComp = new (Self) class'KFGUI_FloatingWindowHeader'; HeaderComp = new (Self) class'KFGUI_FloatingWindowHeader';
AddComponent(HeaderComp); AddComponent(HeaderComp);
} }
function DrawMenu() function DrawMenu()
{ {
Owner.CurrentStyle.RenderFramedWindow(Self); Owner.CurrentStyle.RenderFramedWindow(Self);
@ -22,6 +23,7 @@ function DrawMenu()
HeaderComp.YSize = HeaderComp.CompPos[3] / CompPos[3]; // Keep header height fit the window height. HeaderComp.YSize = HeaderComp.CompPos[3] / CompPos[3]; // Keep header height fit the window height.
} }
} }
function SetWindowDrag(bool bDrag) function SetWindowDrag(bool bDrag)
{ {
bDragWindow = bDrag; bDragWindow = bDrag;
@ -31,6 +33,7 @@ function SetWindowDrag(bool bDrag)
DragOffset[1] = Owner.MousePosition.Y-CompPos[1]; DragOffset[1] = Owner.MousePosition.Y-CompPos[1];
} }
} }
function bool CaptureMouse() function bool CaptureMouse()
{ {
if (bDragWindow && HeaderComp!=None) // Always keep focus on window frame now! if (bDragWindow && HeaderComp!=None) // Always keep focus on window frame now!
@ -40,6 +43,7 @@ function bool CaptureMouse()
} }
return Super.CaptureMouse(); return Super.CaptureMouse();
} }
function PreDraw() function PreDraw()
{ {
if (bDragWindow) if (bDragWindow)

View File

@ -6,11 +6,13 @@ function PreDraw()
{ {
ComputeCoords(); ComputeCoords();
} }
function MouseClick(bool bRight) function MouseClick(bool bRight)
{ {
if (!bRight) if (!bRight)
KFGUI_FloatingWindow(ParentComponent).SetWindowDrag(true); KFGUI_FloatingWindow(ParentComponent).SetWindowDrag(true);
} }
function MouseRelease(bool bRight) function MouseRelease(bool bRight)
{ {
if (!bRight) if (!bRight)

View File

@ -107,6 +107,7 @@ function PreDraw()
} }
} }
} }
function UpdateListVis() function UpdateListVis()
{ {
if (ListCount<=ListItemsPerPage) if (ListCount<=ListItemsPerPage)
@ -120,6 +121,7 @@ function UpdateListVis()
ScrollBar.SetDisabled(false); ScrollBar.SetDisabled(false);
} }
} }
function ChangeListSize(int NewSize) function ChangeListSize(int NewSize)
{ {
if (ListCount==NewSize) if (ListCount==NewSize)
@ -127,6 +129,7 @@ function ChangeListSize(int NewSize)
ListCount = NewSize; ListCount = NewSize;
UpdateListVis(); UpdateListVis();
} }
final function int GetListSize() final function int GetListSize()
{ {
return ListCount; return ListCount;
@ -142,6 +145,7 @@ function DoubleMouseClick(bool bRight)
OnDblClickedItem(FocusMouseItem,bRight,Owner.MousePosition.X-CompPos[0],MouseYHit); OnDblClickedItem(FocusMouseItem,bRight,Owner.MousePosition.X-CompPos[0],MouseYHit);
} }
} }
function MouseClick(bool bRight) function MouseClick(bool bRight)
{ {
if (!bDisabled && bClickable) if (!bDisabled && bClickable)
@ -150,6 +154,7 @@ function MouseClick(bool bRight)
bPressedDown = true; bPressedDown = true;
} }
} }
function MouseRelease(bool bRight) function MouseRelease(bool bRight)
{ {
if (!bDisabled && bClickable && PressedDown[byte(bRight)]==1) if (!bDisabled && bClickable && PressedDown[byte(bRight)]==1)
@ -160,6 +165,7 @@ function MouseRelease(bool bRight)
OnClickedItem(FocusMouseItem,bRight,Owner.MousePosition.X-CompPos[0],MouseYHit); OnClickedItem(FocusMouseItem,bRight,Owner.MousePosition.X-CompPos[0],MouseYHit);
} }
} }
function MouseLeave() function MouseLeave()
{ {
Super.MouseLeave(); Super.MouseLeave();
@ -169,6 +175,7 @@ function MouseLeave()
PressedDown[1] = 0; PressedDown[1] = 0;
bPressedDown = false; bPressedDown = false;
} }
function MouseEnter() function MouseEnter()
{ {
Super.MouseEnter(); Super.MouseEnter();

View File

@ -13,6 +13,7 @@ function InitMenu()
Components[i].InitMenu(); Components[i].InitMenu();
} }
} }
function ShowMenu() function ShowMenu()
{ {
local int i; local int i;
@ -20,6 +21,7 @@ function ShowMenu()
for (i=0; i<Components.Length; ++i) for (i=0; i<Components.Length; ++i)
Components[i].ShowMenu(); Components[i].ShowMenu();
} }
function PreDraw() function PreDraw()
{ {
local int i; local int i;
@ -38,6 +40,7 @@ function PreDraw()
Components[i].PreDraw(); Components[i].PreDraw();
} }
} }
function MenuTick(float DeltaTime) function MenuTick(float DeltaTime)
{ {
local int i; local int i;
@ -62,6 +65,7 @@ function CloseMenu()
for (i=0; i<Components.Length; ++i) for (i=0; i<Components.Length; ++i)
Components[i].CloseMenu(); Components[i].CloseMenu();
} }
function bool CaptureMouse() function bool CaptureMouse()
{ {
local int i; local int i;
@ -75,6 +79,7 @@ function bool CaptureMouse()
MouseArea = None; MouseArea = None;
return Super.CaptureMouse(); // check with frame itself. return Super.CaptureMouse(); // check with frame itself.
} }
function KFGUI_Base FindComponentID(name InID) function KFGUI_Base FindComponentID(name InID)
{ {
local int i; local int i;
@ -89,6 +94,7 @@ function KFGUI_Base FindComponentID(name InID)
} }
return Result; return Result;
} }
function FindAllComponentID(name InID, out array<KFGUI_Base> Res) function FindAllComponentID(name InID, out array<KFGUI_Base> Res)
{ {
local int i; local int i;
@ -98,6 +104,7 @@ function FindAllComponentID(name InID, out array<KFGUI_Base> Res)
for (i=0; i<Components.Length; ++i) for (i=0; i<Components.Length; ++i)
Components[i].FindAllComponentID(InID,Res); Components[i].FindAllComponentID(InID,Res);
} }
function RemoveComponent(KFGUI_Base B) function RemoveComponent(KFGUI_Base B)
{ {
local int i; local int i;
@ -112,6 +119,7 @@ function RemoveComponent(KFGUI_Base B)
for (i=0; i<Components.Length; ++i) for (i=0; i<Components.Length; ++i)
Components[i].RemoveComponent(B); Components[i].RemoveComponent(B);
} }
function NotifyLevelChange() function NotifyLevelChange()
{ {
local int i; local int i;

View File

@ -8,10 +8,12 @@ function InitMenu()
Super.InitMenu(); Super.InitMenu();
ValidateValue(); ValidateValue();
} }
final function int GetValueInt() final function int GetValueInt()
{ {
return int(Value); return int(Value);
} }
final function float GetValueFloat() final function float GetValueFloat()
{ {
return float(Value); return float(Value);
@ -22,6 +24,7 @@ function ChangeValue(string V)
Super.ChangeValue(V); Super.ChangeValue(V);
ValidateValue(); ValidateValue();
} }
final function ValidateValue() final function ValidateValue()
{ {
if (bFloatValue) if (bFloatValue)

View File

@ -26,6 +26,7 @@ function OpenMenu(KFGUI_Base Menu)
YPosition-=((YPosition+YSize)-1.f); // Move up until fit on screen. YPosition-=((YPosition+YSize)-1.f); // Move up until fit on screen.
GetInputFocus(); GetInputFocus();
} }
final function ComputeSize() final function ComputeSize()
{ {
local float XS,YS,Scalar; local float XS,YS,Scalar;
@ -55,6 +56,7 @@ final function ComputeSize()
XSize = (XS+(EdgeSize*2)) / Owner.ScreenSize.X; XSize = (XS+(EdgeSize*2)) / Owner.ScreenSize.X;
YSize = (YS+(EdgeSize*2)) / Owner.ScreenSize.Y; YSize = (YS+(EdgeSize*2)) / Owner.ScreenSize.Y;
} }
final function AddRow(string Text, bool bDisable) final function AddRow(string Text, bool bDisable)
{ {
local int i; local int i;
@ -69,10 +71,12 @@ final function AddRow(string Text, bool bDisable)
ItemRows[i].bDisabled = bDisable; ItemRows[i].bDisabled = bDisable;
} }
} }
function DrawMenu() function DrawMenu()
{ {
Owner.CurrentStyle.RenderRightClickMenu(Self); Owner.CurrentStyle.RenderRightClickMenu(Self);
} }
function HandleMouseClick(bool bRight) function HandleMouseClick(bool bRight)
{ {
if (CurrentRow>=0 && (ItemRows[CurrentRow].bSplitter || ItemRows[CurrentRow].bDisabled)) if (CurrentRow>=0 && (ItemRows[CurrentRow].bSplitter || ItemRows[CurrentRow].bDisabled))
@ -82,6 +86,7 @@ function HandleMouseClick(bool bRight)
if (CurrentRow>=0) if (CurrentRow>=0)
OnSelectedItem(CurrentRow); OnSelectedItem(CurrentRow);
} }
function LostInputFocus() function LostInputFocus()
{ {
OnBecameHidden(Self); OnBecameHidden(Self);

Some files were not shown because too many files have changed in this diff Show More