fix style

This commit is contained in:
GenZmeY 2023-05-14 05:49:12 +03:00
parent 47ed596664
commit 7175a6c7b6
181 changed files with 979 additions and 1882 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -24,7 +24,7 @@ The full changelog is available [url=https://steamcommunity.com/sharedfiles/file
[h1]Usage (single player)[/h1] [h1]Usage (single player)[/h1]
[olist] [olist]
[*]Subscribe to this mutator; [*]Subscribe to this mutator;
[*]Start KF2; [*]Start KF2;
[*]Open console (`) and input: [*]Open console (`) and input:
[code]open KF-BioticsLab?Mutator=ServerExtMut.ServerExtMut[/code] [code]open KF-BioticsLab?Mutator=ServerExtMut.ServerExtMut[/code]
(You can add some options or replace KF-BioticsLab with the map you want) (You can add some options or replace KF-BioticsLab with the map you want)
@ -44,7 +44,7 @@ The full changelog is available [url=https://steamcommunity.com/sharedfiles/file
[/olist] [/olist]
[h1]Mutator setup[/h1] [h1]Mutator setup[/h1]
[url=https://steamcommunity.com/workshop/filedetails/discussion/2085786712/4241773359646835902/][u]Look here[/u][/url] [url=https://steamcommunity.com/workshop/filedetails/discussion/2085786712/4241773359646835902/][u]Look here[/u][/url]
[h1]Is it possible to make the game harder?[/h1] [h1]Is it possible to make the game harder?[/h1]
It will be more efficient to use ServerExt together with other mutators (which add new zeds or game modes). It will be more efficient to use ServerExt together with other mutators (which add new zeds or game modes).

View File

@ -48,7 +48,7 @@ function DoAutoPurchase()
PotentialDosh = GetPotentialDosh(); PotentialDosh = GetPotentialDosh();
bUpgradeSuccess = AttemptUpgrade(PotentialDosh+TotalDosh, OnPerkWeapons); bUpgradeSuccess = AttemptUpgrade(PotentialDosh+TotalDosh, OnPerkWeapons);
} }
bAutoFillPurchasedItem = StartAutoFill(); bAutoFillPurchasedItem = StartAutoFill();
if (DoIOwnThisWeapon(TopTierWeapon)) if (DoIOwnThisWeapon(TopTierWeapon))
{ {
@ -56,7 +56,7 @@ function DoAutoPurchase()
{ {
bSecondaryWeaponPurchased = true; bSecondaryWeaponPurchased = true;
AttemptToPurchaseNextLowerTier(TotalDosh, OnPerkWeapons); AttemptToPurchaseNextLowerTier(TotalDosh, OnPerkWeapons);
} }
} }
MyKFIM.ServerCloseTraderMenu(); MyKFIM.ServerCloseTraderMenu();
@ -73,11 +73,11 @@ function DoAutoPurchase()
{ {
AutoFillMessageString = class'KFCommon_LocalizedStrings'.default.AutoFillCompleteString; AutoFillMessageString = class'KFCommon_LocalizedStrings'.default.AutoFillCompleteString;
} }
else else
{ {
AutoFillMessageString = class'KFCommon_LocalizedStrings'.default.NoItemsPurchasedString; AutoFillMessageString = class'KFCommon_LocalizedStrings'.default.NoItemsPurchasedString;
} }
if (MyGFxHUD != none) if (MyGFxHUD != none)
{ {
@ -89,7 +89,7 @@ function SellOnPerkWeapons()
{ {
local int i; local int i;
local class<KFPerk> Perk; local class<KFPerk> Perk;
Perk = GetBasePerk(); Perk = GetBasePerk();
if (Perk!=None) if (Perk!=None)
{ {
@ -108,7 +108,7 @@ function SellOffPerkWeapons()
{ {
local int i; local int i;
local Ext_PerkBase EP; local Ext_PerkBase EP;
EP = GetExtPerk(); EP = GetExtPerk();
for (i = 0; i < OwnedItemList.length; i++) for (i = 0; i < OwnedItemList.length; i++)
@ -166,7 +166,7 @@ function InitializeOwnedItemList()
if (MyGfxManager != none && MyGfxManager.TraderMenu != none) if (MyGfxManager != none && MyGfxManager.TraderMenu != none)
{ {
MyGfxManager.TraderMenu.OwnedItemList = OwnedItemList; MyGfxManager.TraderMenu.OwnedItemList = OwnedItemList;
} }
} }
} }
@ -177,7 +177,7 @@ function int AddItemByPriority(out SItemInformation WeaponInfo)
local byte WeaponGroup, WeaponPriority; local byte WeaponGroup, WeaponPriority;
local byte BestIndex; local byte BestIndex;
local class<KFPerk> Perk; local class<KFPerk> Perk;
Perk = GetBasePerk(); Perk = GetBasePerk();
BestIndex = 0; BestIndex = 0;
@ -225,7 +225,7 @@ function int AddItemByPriority(out SItemInformation WeaponInfo)
if (MyGfxManager != none && MyGfxManager.TraderMenu != none) if (MyGfxManager != none && MyGfxManager.TraderMenu != none)
{ {
MyGfxManager.TraderMenu.OwnedItemList = OwnedItemList; MyGfxManager.TraderMenu.OwnedItemList = OwnedItemList;
} }
return BestIndex; return BestIndex;
@ -234,7 +234,7 @@ function int AddItemByPriority(out SItemInformation WeaponInfo)
function bool CanCarry(const out STraderItem Item, optional int OverrideLevelValue = INDEX_NONE) function bool CanCarry(const out STraderItem Item, optional int OverrideLevelValue = INDEX_NONE)
{ {
local int Result; local int Result;
Result = TotalBlocks + MyKFIM.GetDisplayedBlocksRequiredfor (Item); Result = TotalBlocks + MyKFIM.GetDisplayedBlocksRequiredfor (Item);
if (Result > MaxBlocks) if (Result > MaxBlocks)
{ {

View File

@ -8,7 +8,7 @@ var config int HeadMeshIndex,HeadSkinIndex,BodyMeshIndex,BodySkinIndex,Attachmen
final function FMyCustomChar LoadData() final function FMyCustomChar LoadData()
{ {
local FMyCustomChar R; local FMyCustomChar R;
if (HasInit==0) if (HasInit==0)
{ {
AttachmentMesh0 = `CLEARED_ATTACHMENT_INDEX; AttachmentMesh0 = `CLEARED_ATTACHMENT_INDEX;
@ -46,4 +46,5 @@ final function SaveData(FMyCustomChar R)
defaultproperties defaultproperties
{ {
} }

View File

@ -5,7 +5,7 @@ class ExtCharacterInfo extends Object
static final function Object SafeLoadObject(string S, Class ObjClass) static final function Object SafeLoadObject(string S, Class ObjClass)
{ {
local Object O; local Object O;
O = FindObject(S,ObjClass); O = FindObject(S,ObjClass);
return O!=None ? O : DynamicLoadObject(S,ObjClass); return O!=None ? O : DynamicLoadObject(S,ObjClass);
} }
@ -46,7 +46,7 @@ static function InitCharacterMICs(KFCharacterInfo_Human C, KFPawn P, optional bo
{ {
P.CharacterMICs.AddItem(P.ThirdPersonAttachments[i].CreateAndSetMaterialInstanceConstant(0)); P.CharacterMICs.AddItem(P.ThirdPersonAttachments[i].CreateAndSetMaterialInstanceConstant(0));
} }
if (P.FirstPersonAttachments[i] != none) if (P.FirstPersonAttachments[i] != none)
{ {
P.CharacterMICs.AddItem(P.FirstPersonAttachments[i].CreateAndSetMaterialInstanceConstant(0)); P.CharacterMICs.AddItem(P.FirstPersonAttachments[i].CreateAndSetMaterialInstanceConstant(0));
@ -86,7 +86,7 @@ static final function SetCharacterMeshFromArch(KFCharacterInfo_Human C, KFPawn K
// skip dedicated for purely cosmetic stuff // skip dedicated for purely cosmetic stuff
if (KFP.WorldInfo.NetMode != NM_DedicatedServer) if (KFP.WorldInfo.NetMode != NM_DedicatedServer)
{ {
// Must clear all attachments before trying to attach new ones, // Must clear all attachments before trying to attach new ones,
// otherwise we might accidentally remove things we're not supposed to // otherwise we might accidentally remove things we're not supposed to
for (AttachmentIdx=0; AttachmentIdx < `MAX_COSMETIC_ATTACHMENTS; AttachmentIdx++) for (AttachmentIdx=0; AttachmentIdx < `MAX_COSMETIC_ATTACHMENTS; AttachmentIdx++)
{ {
@ -136,7 +136,7 @@ static final function SetBodyMeshAndSkin(KFCharacterInfo_Human C,
{ {
// Assign a skin to the body mesh as a material override // Assign a skin to the body mesh as a material override
CurrentBodyMeshIndex = (CurrentBodyMeshIndex < C.BodyVariants.length) ? CurrentBodyMeshIndex : 0; CurrentBodyMeshIndex = (CurrentBodyMeshIndex < C.BodyVariants.length) ? CurrentBodyMeshIndex : 0;
if (KFPRI.StartLoadCosmeticContent(C, ECOSMETICTYPE_Body, CurrentBodyMeshIndex)) if (KFPRI.StartLoadCosmeticContent(C, ECOSMETICTYPE_Body, CurrentBodyMeshIndex))
{ {
return; return;
@ -224,7 +224,7 @@ static final function SetHeadMeshAndSkin(KFCharacterInfo_Human C,
if (C.HeadVariants.length > 0) if (C.HeadVariants.length > 0)
{ {
CurrentHeadMeshIndex = (CurrentHeadMeshIndex < C.HeadVariants.length) ? CurrentHeadMeshIndex : 0; CurrentHeadMeshIndex = (CurrentHeadMeshIndex < C.HeadVariants.length) ? CurrentHeadMeshIndex : 0;
if (KFPRI.StartLoadCosmeticContent(C, ECOSMETICTYPE_Head, CurrentHeadMeshIndex)) if (KFPRI.StartLoadCosmeticContent(C, ECOSMETICTYPE_Head, CurrentHeadMeshIndex))
{ {
return; return;
@ -332,7 +332,7 @@ static final function SetAttachmentMeshAndSkin(KFCharacterInfo_Human C,
//DetachConflictingAttachments(CurrentAttachmentMeshIndex, KFP, KFPRI); //DetachConflictingAttachments(CurrentAttachmentMeshIndex, KFP, KFPRI);
// Get a slot where this attachment could fit // Get a slot where this attachment could fit
AttachmentSlotIndex = GetAttachmentSlotIndex(C, CurrentAttachmentMeshIndex, KFP, KFPRI); AttachmentSlotIndex = GetAttachmentSlotIndex(C, CurrentAttachmentMeshIndex, KFP, KFPRI);
if (AttachmentSlotIndex == INDEX_NONE) if (AttachmentSlotIndex == INDEX_NONE)
{ {
return; return;
@ -347,7 +347,7 @@ static final function SetAttachmentMeshAndSkin(KFCharacterInfo_Human C,
{ {
return; return;
} }
// Cache values from character info // Cache values from character info
CharAttachmentMeshName = bIsFirstPerson ? C.Get1pMeshByIndex(CurrentAttachmentMeshIndex) : C.GetMeshByIndex(CurrentAttachmentMeshIndex); CharAttachmentMeshName = bIsFirstPerson ? C.Get1pMeshByIndex(CurrentAttachmentMeshIndex) : C.GetMeshByIndex(CurrentAttachmentMeshIndex);
CharAttachmentSocketName = bIsFirstPerson ? C.CosmeticVariants[CurrentAttachmentMeshIndex].AttachmentItem.SocketName1p : C.CosmeticVariants[CurrentAttachmentMeshIndex].AttachmentItem.SocketName; CharAttachmentSocketName = bIsFirstPerson ? C.CosmeticVariants[CurrentAttachmentMeshIndex].AttachmentItem.SocketName1p : C.CosmeticVariants[CurrentAttachmentMeshIndex].AttachmentItem.SocketName;
@ -517,8 +517,8 @@ static final function SetAttachmentMesh(KFCharacterInfo_Human C, int CurrentAtta
} }
/** /**
* Removes any attachments that exist in the same socket or have overriding cases * Removes any attachments that exist in the same socket or have overriding cases
* Network: Local Player * Network: Local Player
*/ */
static final function DetachConflictingAttachments(KFCharacterInfo_Human C, int NewAttachmentMeshIndex, KFPawn KFP, optional KFPlayerReplicationInfo KFPRI, optional out array<int> out_RemovedAttachments) static final function DetachConflictingAttachments(KFCharacterInfo_Human C, int NewAttachmentMeshIndex, KFPawn KFP, optional KFPlayerReplicationInfo KFPRI, optional out array<int> out_RemovedAttachments)
{ {
@ -546,7 +546,7 @@ static final function DetachConflictingAttachments(KFCharacterInfo_Human C, int
if (KFP.ThirdPersonAttachmentSocketNames[i] != '' && if (KFP.ThirdPersonAttachmentSocketNames[i] != '' &&
KFP.ThirdPersonAttachmentSocketNames[i] == NewAttachmentSocketName) KFP.ThirdPersonAttachmentSocketNames[i] == NewAttachmentSocketName)
{ {
C.RemoveAttachmentMeshAndSkin(i, KFP, KFPRI); C.RemoveAttachmentMeshAndSkin(i, KFP, KFPRI);
out_RemovedAttachments.AddItem(i); out_RemovedAttachments.AddItem(i);
continue; continue;
} }
@ -585,14 +585,14 @@ static final function SetFirstPersonArmsFromArch(KFCharacterInfo_Human C, KFPawn
EPRI = ExtPlayerReplicationInfo(KFPRI); EPRI = ExtPlayerReplicationInfo(KFPRI);
bCustom = (EPRI!=None ? EPRI.UsesCustomChar() : false); bCustom = (EPRI!=None ? EPRI.UsesCustomChar() : false);
// First person arms mesh and skin are based on body mesh & skin. // First person arms mesh and skin are based on body mesh & skin.
// Index of 255 implies use index 0 (default). // Index of 255 implies use index 0 (default).
C.SetArmsMeshAndSkin( C.SetArmsMeshAndSkin(
bCustom ? EPRI.CustomCharacter.BodyMeshIndex : KFPRI.RepCustomizationInfo.BodyMeshIndex, bCustom ? EPRI.CustomCharacter.BodyMeshIndex : KFPRI.RepCustomizationInfo.BodyMeshIndex,
bCustom ? EPRI.CustomCharacter.BodySkinIndex : KFPRI.RepCustomizationInfo.BodySkinIndex, bCustom ? EPRI.CustomCharacter.BodySkinIndex : KFPRI.RepCustomizationInfo.BodySkinIndex,
KFP, KFP,
KFPRI); KFPRI);
for (AttachmentIdx = 0; AttachmentIdx < `MAX_COSMETIC_ATTACHMENTS; AttachmentIdx++) for (AttachmentIdx = 0; AttachmentIdx < `MAX_COSMETIC_ATTACHMENTS; AttachmentIdx++)
{ {
CosmeticMeshIdx = bCustom ? EPRI.CustomCharacter.AttachmentMeshIndices[AttachmentIdx] : KFPRI.RepCustomizationInfo.AttachmentMeshIndices[AttachmentIdx]; CosmeticMeshIdx = bCustom ? EPRI.CustomCharacter.AttachmentMeshIndices[AttachmentIdx] : KFPRI.RepCustomizationInfo.AttachmentMeshIndices[AttachmentIdx];
@ -623,10 +623,10 @@ static function int GetAttachmentSlotIndex(
`warn("GetAttachmentSlotIndex - NO KFPRI"); `warn("GetAttachmentSlotIndex - NO KFPRI");
return INDEX_NONE; return INDEX_NONE;
} }
EPRI = ExtPlayerReplicationInfo(KFPRI); EPRI = ExtPlayerReplicationInfo(KFPRI);
bCustom = (EPRI!=None ? EPRI.UsesCustomChar() : false); bCustom = (EPRI!=None ? EPRI.UsesCustomChar() : false);
// Return the next available attachment index or the index that matches this mesh // Return the next available attachment index or the index that matches this mesh
for (AttachmentIdx = 0; AttachmentIdx < `MAX_COSMETIC_ATTACHMENTS; AttachmentIdx++) for (AttachmentIdx = 0; AttachmentIdx < `MAX_COSMETIC_ATTACHMENTS; AttachmentIdx++)
{ {
@ -647,4 +647,4 @@ static function bool IsAttachmentAvailable(KFCharacterInfo_Human C, const out At
} }
return true; return true;
} }

View File

@ -8,16 +8,16 @@ static final function name GetUnlockedEmote(int ItemId, ExtPlayerController PC)
local int i; local int i;
local name Anim; local name Anim;
local ExtPlayerReplicationInfo PRI; local ExtPlayerReplicationInfo PRI;
i = default.Emotes.Find('Id', ItemId); i = default.Emotes.Find('Id', ItemId);
if (i > -1) if (i > -1)
{ {
Anim = default.Emotes[i].AnimName; Anim = default.Emotes[i].AnimName;
PRI = ExtPlayerReplicationInfo(PC.PlayerReplicationInfo); PRI = ExtPlayerReplicationInfo(PC.PlayerReplicationInfo);
if (PRI == None) if (PRI == None)
return Anim; return Anim;
else return Anim; else return Anim;
} }
@ -28,7 +28,7 @@ static final function SaveEquippedEmote(int ItemId, ExtPlayerController PC)
{ {
if (PC == None) if (PC == None)
return; return;
PC.SelectedEmoteIndex = ItemId; PC.SelectedEmoteIndex = ItemId;
PC.SaveConfig(); PC.SaveConfig();
} }
@ -52,7 +52,7 @@ static final function int GetEquippedEmoteId(ExtPlayerController PC)
{ {
if (PC == None) if (PC == None)
return -1; return -1;
return PC.SelectedEmoteIndex; return PC.SelectedEmoteIndex;
} }

View File

@ -7,4 +7,5 @@ protected function SpecialCringeEffectsfor (Actor Victim, float VictimDist)
defaultproperties defaultproperties
{ {
} }

View File

@ -4,10 +4,10 @@ function InitMenu()
{ {
local byte i; local byte i;
local KFGUI_Button B; local KFGUI_Button B;
PageSwitcher = KFGUI_SwitchMenuBar(FindComponentID('Pager')); PageSwitcher = KFGUI_SwitchMenuBar(FindComponentID('Pager'));
Super(KFGUI_Page).InitMenu(); Super(KFGUI_Page).InitMenu();
for (i=0; i<Pages.Length; ++i) for (i=0; i<Pages.Length; ++i)
{ {
PageSwitcher.AddPage(Pages[i],B).InitMenu(); PageSwitcher.AddPage(Pages[i],B).InitMenu();
@ -23,9 +23,9 @@ function PreDraw()
{ {
local GameViewportClient Viewport; local GameViewportClient Viewport;
local ExtMoviePlayer_Manager MovieManager; local ExtMoviePlayer_Manager MovieManager;
Super.PreDraw(); Super.PreDraw();
Viewport = LocalPlayer(GetPlayer().Player).ViewportClient; Viewport = LocalPlayer(GetPlayer().Player).ViewportClient;
MovieManager = ExtMoviePlayer_Manager(KFPlayerController(GetPlayer()).MyGFxManager); MovieManager = ExtMoviePlayer_Manager(KFPlayerController(GetPlayer()).MyGFxManager);
if (CaptureMouse()) if (CaptureMouse())
@ -39,7 +39,7 @@ function PreDraw()
{ {
Viewport.bDisplayHardwareMouseCursor = false; Viewport.bDisplayHardwareMouseCursor = false;
Viewport.ForceUpdateMouseCursor(true); Viewport.ForceUpdateMouseCursor(true);
MovieManager.SetMovieCanReceiveInput(true); MovieManager.SetMovieCanReceiveInput(true);
} }
} }
@ -52,7 +52,7 @@ defaultproperties
XPosition=0.01 XPosition=0.01
XSize=0.73 XSize=0.73
YSize=0.73 YSize=0.73
Pages.Empty Pages.Empty
Pages.Add(Class'UIP_PerkSelectionLobby') Pages.Add(Class'UIP_PerkSelectionLobby')
} }

View File

@ -14,7 +14,7 @@ function UpdateGrenades()
if (ExtPlayerController(MyKFPC)!=None) if (ExtPlayerController(MyKFPC)!=None)
{ {
PM = ExtPlayerController(MyKFPC).ActivePerkManager; PM = ExtPlayerController(MyKFPC).ActivePerkManager;
if (PM!=None && PM.CurrentPerk!=None && EPerkClass!=PM.CurrentPerk.Class) if (PM!=None && PM.CurrentPerk!=None && EPerkClass!=PM.CurrentPerk.Class)
{ {
SetString("backpackGrenadeType", "img://"$PM.CurrentPerk.GrenadeWeaponDef.Static.GetImagePath()); SetString("backpackGrenadeType", "img://"$PM.CurrentPerk.GrenadeWeaponDef.Static.GetImagePath());
@ -31,4 +31,5 @@ function UpdateGrenades()
defaultproperties defaultproperties
{ {
} }

View File

@ -22,16 +22,16 @@ function UpdatePerk()
CurrentPerk = ExPC.ActivePerkManager.CurrentPerk; CurrentPerk = ExPC.ActivePerkManager.CurrentPerk;
CurrentPerkLevel = CurrentPerk.CurrentLevel; CurrentPerkLevel = CurrentPerk.CurrentLevel;
CurrentPerkEXP = CurrentPerk.CurrentEXP; CurrentPerkEXP = CurrentPerk.CurrentEXP;
// Update the perk class. // Update the perk class.
if ((ExLastPerkClass != CurrentPerk.Class) || (LastPerkLevel != CurrentPerkLevel)) if ((ExLastPerkClass != CurrentPerk.Class) || (LastPerkLevel != CurrentPerkLevel))
{ {
CurPerkPath = CurrentPerk.GetPerkIconPath(CurrentPerkLevel); CurPerkPath = CurrentPerk.GetPerkIconPath(CurrentPerkLevel);
PerkIconObject = CreateObject("Object"); PerkIconObject = CreateObject("Object");
PerkIconObject.SetString("perkIcon", CurPerkPath); PerkIconObject.SetString("perkIcon", CurPerkPath);
SetObject("playerPerkIcon", PerkIconObject); SetObject("playerPerkIcon", PerkIconObject);
SetInt("playerPerkXPPercent", CurrentPerk.GetProgressPercent() * 100.f); SetInt("playerPerkXPPercent", CurrentPerk.GetProgressPercent() * 100.f);
if (LastPerkLevel != CurrentPerkLevel && ExLastPerkClass==CurrentPerk.Class) if (LastPerkLevel != CurrentPerkLevel && ExLastPerkClass==CurrentPerk.Class)
{ {

View File

@ -19,10 +19,10 @@ function UpdatePlayerInfo(optional bool bForceUpdate)
{ {
local GFxObject TempObject; local GFxObject TempObject;
local ExtPlayerReplicationInfo E; local ExtPlayerReplicationInfo E;
if (SpectatedKFPRI == None) if (SpectatedKFPRI == None)
return; return;
E = ExtPlayerReplicationInfo(SpectatedKFPRI); E = ExtPlayerReplicationInfo(SpectatedKFPRI);
if (LastPerkLevel != E.ECurrentPerkLevel || LastPerkLevel != E.ECurrentPerkLevel || bForceUpdate) if (LastPerkLevel != E.ECurrentPerkLevel || LastPerkLevel != E.ECurrentPerkLevel || bForceUpdate)
@ -44,4 +44,5 @@ function UpdatePlayerInfo(optional bool bForceUpdate)
defaultproperties defaultproperties
{ {
} }

View File

@ -57,7 +57,7 @@ simulated function SetWeaponGroupList(out array<KFWeapon> WeaponList, byte Group
TempObj.SetString("weaponName", WeaponGroup[i].static.GetItemLocalization("ItemName")); TempObj.SetString("weaponName", WeaponGroup[i].static.GetItemLocalization("ItemName"));
TempObj.SetString("texturePath", "img://"$WeaponGroup[i].static.GetImagePath()); TempObj.SetString("texturePath", "img://"$WeaponGroup[i].static.GetImagePath());
} }
else else
{ {
TempObj.SetString("weaponName", WeaponList[i].ItemName); TempObj.SetString("weaponName", WeaponList[i].ItemName);
TempObj.SetString("texturePath", "img://"$PathName(WeaponList[i].WeaponSelectTexture)); TempObj.SetString("texturePath", "img://"$PathName(WeaponList[i].WeaponSelectTexture));
@ -88,4 +88,5 @@ simulated function SetWeaponGroupList(out array<KFWeapon> WeaponList, byte Group
defaultproperties defaultproperties
{ {
} }

View File

@ -79,10 +79,10 @@ simulated function bool Died(Controller Killer, class<DamageType> damageType, ve
if (Controller != None) if (Controller != None)
WorldInfo.Game.Killed(Killer, Controller, self, damageType); WorldInfo.Game.Killed(Killer, Controller, self, damageType);
else WorldInfo.Game.Killed(Killer, Controller(Owner), self, damageType); else WorldInfo.Game.Killed(Killer, Controller(Owner), self, damageType);
if (InvManager != None) if (InvManager != None)
InvManager.OwnerDied(); InvManager.OwnerDied();
Health = 1; Health = 1;
if (!bFeigningDeath) if (!bFeigningDeath)
PlayFeignDeath(true,,true); PlayFeignDeath(true,,true);
@ -124,10 +124,10 @@ event bool HealDamage(int Amount, Controller Healer, class<DamageType> DamageTyp
InstigatorPC = ExtPlayerController(Healer); InstigatorPC = ExtPlayerController(Healer);
InstigatorPerk = InstigatorPC.GetPerk(); InstigatorPerk = InstigatorPC.GetPerk();
if (InstigatorPerk != None && bCanRepairArmor) if (InstigatorPerk != None && bCanRepairArmor)
bRepairedArmor = InstigatorPC.GetPerk().RepairArmor(self); bRepairedArmor = InstigatorPC.GetPerk().RepairArmor(self);
EPRI = ExtPlayerReplicationInfo(InstigatorPC.PlayerReplicationInfo); EPRI = ExtPlayerReplicationInfo(InstigatorPC.PlayerReplicationInfo);
if (EPRI != none) if (EPRI != none)
{ {
@ -432,7 +432,7 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
} }
WeaponAttachmentTemplate = None; WeaponAttachmentTemplate = None;
WeaponAttachmentChanged(); WeaponAttachmentChanged();
bPlayingFeignDeathRecovery = false; bPlayingFeignDeathRecovery = false;
ClearTimer('OnWakeUpFinished'); ClearTimer('OnWakeUpFinished');
if (!bTransformMode) if (!bTransformMode)
@ -452,21 +452,21 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
// Move into post so that we are hitting physics from last frame, rather than animated from this // Move into post so that we are hitting physics from last frame, rather than animated from this
SetTickGroup(TG_PostAsyncWork); SetTickGroup(TG_PostAsyncWork);
// Turn collision on for skelmeshcomp and off for cylinder // Turn collision on for skelmeshcomp and off for cylinder
CylinderComponent.SetActorCollision(false, false); CylinderComponent.SetActorCollision(false, false);
Mesh.SetActorCollision(true, true); Mesh.SetActorCollision(true, true);
Mesh.SetTraceBlocking(true, true); Mesh.SetTraceBlocking(true, true);
Mesh.SetHasPhysicsAssetInstance(false); Mesh.SetHasPhysicsAssetInstance(false);
if (!InitRagdoll()) // Ragdoll error! if (!InitRagdoll()) // Ragdoll error!
{ {
if (PlayerController(Controller)!=None) if (PlayerController(Controller)!=None)
PlayerController(Controller).ClientMessage("Error: InitRagdoll() failed!"); PlayerController(Controller).ClientMessage("Error: InitRagdoll() failed!");
return; return;
} }
// Ensure we are always updating kinematic // Ensure we are always updating kinematic
Mesh.MinDistFactorForKinematicUpdate = 0.0; Mesh.MinDistFactorForKinematicUpdate = 0.0;
@ -516,7 +516,7 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
return; return;
} }
} }
PreRagdollCollisionComponent = None; PreRagdollCollisionComponent = None;
// Calculate how far we just moved the actor up. // Calculate how far we just moved the actor up.
@ -530,7 +530,7 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
UnfeignFailedCount = 0; UnfeignFailedCount = 0;
bPlayingFeignDeathRecovery = true; bPlayingFeignDeathRecovery = true;
// Reset collision. // Reset collision.
Mesh.SetActorCollision(true, false); Mesh.SetActorCollision(true, false);
Mesh.SetTraceBlocking(true, false); Mesh.SetTraceBlocking(true, false);
@ -545,7 +545,7 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
// physics weight interpolated to 0 in C++, then StartFeignDeathRecoveryAnim() is called // physics weight interpolated to 0 in C++, then StartFeignDeathRecoveryAnim() is called
Mesh.PhysicsWeight = 1.0; Mesh.PhysicsWeight = 1.0;
// force rotation to match the body's direction so the blend to the getup animation looks more natural // force rotation to match the body's direction so the blend to the getup animation looks more natural
NewRotation = Rotation; NewRotation = Rotation;
NewRotation.Yaw = rotator(Mesh.GetBoneAxis(HeadBoneName, AXIS_X)).Yaw; NewRotation.Yaw = rotator(Mesh.GetBoneAxis(HeadBoneName, AXIS_X)).Yaw;
@ -558,13 +558,13 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
FeignRecoverAnim = 'Getup_B_V1'; FeignRecoverAnim = 'Getup_B_V1';
} }
else FeignRecoverAnim = 'Getup_F_V1'; else FeignRecoverAnim = 'Getup_F_V1';
// Init wakeup anim. // Init wakeup anim.
if (Mesh.AnimSets.Find(WakeUpAnimSet)==-1) if (Mesh.AnimSets.Find(WakeUpAnimSet)==-1)
Mesh.AnimSets.AddItem(WakeUpAnimSet); Mesh.AnimSets.AddItem(WakeUpAnimSet);
BodyStanceNodes[EAS_FullBody].bNoNotifies = true; BodyStanceNodes[EAS_FullBody].bNoNotifies = true;
BodyStanceNodes[EAS_FullBody].PlayCustomAnim(FeignRecoverAnim,0.025f,,,,true); BodyStanceNodes[EAS_FullBody].PlayCustomAnim(FeignRecoverAnim,0.025f,,,,true);
SetRotation(NewRotation); SetRotation(NewRotation);
} }
} }
@ -573,7 +573,7 @@ final function vector PickNearestNode()
{ {
local NavigationPoint N,Best; local NavigationPoint N,Best;
local float Dist,BestDist; local float Dist,BestDist;
foreach WorldInfo.AllNavigationPoints(class'NavigationPoint',N) foreach WorldInfo.AllNavigationPoints(class'NavigationPoint',N)
{ {
Dist = VSizeSq(N.Location-Location); Dist = VSizeSq(N.Location-Location);
@ -674,7 +674,7 @@ simulated function PlayRagdollDeath(class<DamageType> DamageType, vector HitLoc)
bFPLegsAttached = false; bFPLegsAttached = false;
DetachComponent(FPBodyMesh); DetachComponent(FPBodyMesh);
} }
// Ensure we are always updating kinematic // Ensure we are always updating kinematic
Mesh.MinDistFactorForKinematicUpdate = 0.0; Mesh.MinDistFactorForKinematicUpdate = 0.0;
@ -935,7 +935,7 @@ ignores FaceRotation, SetMovementPhysics;
{ {
bNoWeaponFiring = default.bNoWeaponFiring; bNoWeaponFiring = default.bNoWeaponFiring;
bCanPickupInventory = default.bCanPickupInventory; bCanPickupInventory = default.bCanPickupInventory;
UTWeap = KFWeapon(Weapon); UTWeap = KFWeapon(Weapon);
if (UTWeap != None) if (UTWeap != None)
{ {
@ -952,7 +952,7 @@ ignores FaceRotation, SetMovementPhysics;
else if (Controller!=None) else if (Controller!=None)
Controller.ReplicatedEvent('EndRagdollMove'); Controller.ReplicatedEvent('EndRagdollMove');
} }
Global.WeaponAttachmentChanged(); Global.WeaponAttachmentChanged();
} }
} }
@ -1027,11 +1027,11 @@ simulated final function InitFPLegs()
local int i; local int i;
bFPLegsInit = true; bFPLegsInit = true;
FPBodyMesh.AnimSets = CharacterArch.AnimSets; FPBodyMesh.AnimSets = CharacterArch.AnimSets;
FPBodyMesh.SetAnimTreeTemplate(CharacterArch.AnimTreeTemplate); FPBodyMesh.SetAnimTreeTemplate(CharacterArch.AnimTreeTemplate);
FPBodyMesh.SetSkeletalMesh(Mesh.SkeletalMesh); FPBodyMesh.SetSkeletalMesh(Mesh.SkeletalMesh);
FPBodyMesh.SetActorCollision(false, false); FPBodyMesh.SetActorCollision(false, false);
FPBodyMesh.SetNotifyRigidBodyCollision(false); FPBodyMesh.SetNotifyRigidBodyCollision(false);
FPBodyMesh.SetTraceBlocking(false, false); FPBodyMesh.SetTraceBlocking(false, false);
@ -1067,7 +1067,7 @@ simulated final function UpdateFPLegs()
{ {
bFPLegsAttached = true; bFPLegsAttached = true;
AttachComponent(FPBodyMesh); AttachComponent(FPBodyMesh);
if (!bFPLegsInit && CharacterArch!=None) if (!bFPLegsInit && CharacterArch!=None)
InitFPLegs(); InitFPLegs();
} }
@ -1106,12 +1106,12 @@ simulated final function SetBackpackWeapon(class<KFWeapon> WC)
{ {
AttachedBackItem.SetMaterial(i, WC.Default.AttachmentArchetype.SkelMesh.Materials[i]); AttachedBackItem.SetMaterial(i, WC.Default.AttachmentArchetype.SkelMesh.Materials[i]);
} }
Mesh.DetachComponent(AttachedBackItem); Mesh.DetachComponent(AttachedBackItem);
MyCharacter = KFPlayerReplicationInfo(PlayerReplicationInfo).CharacterArchetypes[KFPlayerReplicationInfo(PlayerReplicationInfo).RepCustomizationInfo.CharacterIndex]; MyCharacter = KFPlayerReplicationInfo(PlayerReplicationInfo).CharacterArchetypes[KFPlayerReplicationInfo(PlayerReplicationInfo).RepCustomizationInfo.CharacterIndex];
WM = WC.Default.AttachmentArchetype.SkelMesh.Name; WM = WC.Default.AttachmentArchetype.SkelMesh.Name;
if (ClassIsChildOf(WC, class'KFWeap_Edged_Knife')) if (ClassIsChildOf(WC, class'KFWeap_Edged_Knife'))
{ {
MyPos = vect(0,0,10); MyPos = vect(0,0,10);
@ -1129,10 +1129,10 @@ simulated final function SetBackpackWeapon(class<KFWeapon> WC)
{ {
MyPos = vect(-5,15,0); MyPos = vect(-5,15,0);
MyRot = rot(0,0,0); MyRot = rot(0,0,0);
if (class<KFWeap_Edged_Katana>(WC) != none || class<KFWeap_Edged_Zweihander>(WC) != none) if (class<KFWeap_Edged_Katana>(WC) != none || class<KFWeap_Edged_Zweihander>(WC) != none)
MyPos.Z = -20; MyPos.Z = -20;
B = 'Spine'; B = 'Spine';
} }
else else
@ -1142,7 +1142,7 @@ simulated final function SetBackpackWeapon(class<KFWeapon> WC)
if (MyCharacter == KFCharacterInfo_Human'CHR_Playable_ARCH.chr_DJSkully_archetype') if (MyCharacter == KFCharacterInfo_Human'CHR_Playable_ARCH.chr_DJSkully_archetype')
MyRot.Roll = 8192; MyRot.Roll = 8192;
switch (WM) switch (WM)
{ {
case 'Wep_3rdP_MB500_Rig': case 'Wep_3rdP_MB500_Rig':
@ -1159,7 +1159,7 @@ simulated final function SetBackpackWeapon(class<KFWeapon> WC)
MyPos.X = 10; MyPos.X = 10;
break; break;
} }
B = 'Spine2'; B = 'Spine2';
} }
@ -1211,14 +1211,14 @@ simulated function PlayWeaponswitch (Weapon OldWeapon, Weapon NewWeapon)
simulated function UpdateHealingSpeedBoostMod(ExtPlayerController Healer) simulated function UpdateHealingSpeedBoostMod(ExtPlayerController Healer)
{ {
local Ext_PerkFieldMedic MedPerk; local Ext_PerkFieldMedic MedPerk;
MedPerk = GetMedicPerk(Healer); MedPerk = GetMedicPerk(Healer);
if (MedPerk == None) if (MedPerk == None)
return; return;
HealingSpeedBoostMod = Min(HealingSpeedBoostMod + MedPerk.GetHealingSpeedBoost(), MedPerk.GetMaxHealingSpeedBoost()); HealingSpeedBoostMod = Min(HealingSpeedBoostMod + MedPerk.GetHealingSpeedBoost(), MedPerk.GetMaxHealingSpeedBoost());
SetTimer(MedPerk.GetHealingSpeedBoostDuration(),, nameOf(ResetHealingSpeedBoost)); SetTimer(MedPerk.GetHealingSpeedBoostDuration(),, nameOf(ResetHealingSpeedBoost));
UpdateGroundSpeed(); UpdateGroundSpeed();
} }
@ -1239,11 +1239,11 @@ simulated function ResetHealingSpeedBoost()
simulated function UpdateHealingDamageBoostMod(ExtPlayerController Healer) simulated function UpdateHealingDamageBoostMod(ExtPlayerController Healer)
{ {
local Ext_PerkFieldMedic MedPerk; local Ext_PerkFieldMedic MedPerk;
MedPerk = GetMedicPerk(Healer); MedPerk = GetMedicPerk(Healer);
if (MedPerk == None) if (MedPerk == None)
return; return;
HealingDamageBoostMod = Min(HealingDamageBoostMod + MedPerk.GetHealingDamageBoost(), MedPerk.GetMaxHealingDamageBoost()); HealingDamageBoostMod = Min(HealingDamageBoostMod + MedPerk.GetHealingDamageBoost(), MedPerk.GetMaxHealingDamageBoost());
SetTimer(MedPerk.GetHealingDamageBoostDuration(),, nameOf(ResetHealingDamageBoost)); SetTimer(MedPerk.GetHealingDamageBoostDuration(),, nameOf(ResetHealingDamageBoost));
} }
@ -1263,11 +1263,11 @@ simulated function ResetHealingDamageBoost()
simulated function UpdateHealingShieldMod(ExtPlayerController Healer) simulated function UpdateHealingShieldMod(ExtPlayerController Healer)
{ {
local Ext_PerkFieldMedic MedPerk; local Ext_PerkFieldMedic MedPerk;
MedPerk = GetMedicPerk(Healer); MedPerk = GetMedicPerk(Healer);
if (MedPerk == None) if (MedPerk == None)
return; return;
HealingShieldMod = Min(HealingShieldMod + MedPerk.GetHealingShield(), MedPerk.GetMaxHealingShield()); HealingShieldMod = Min(HealingShieldMod + MedPerk.GetHealingShield(), MedPerk.GetMaxHealingShield());
SetTimer(MedPerk.GetHealingShieldDuration(),, nameOf(ResetHealingShield)); SetTimer(MedPerk.GetHealingShieldDuration(),, nameOf(ResetHealingShield));
} }
@ -1287,9 +1287,9 @@ simulated function ResetHealingShield()
function SacrificeExplode() function SacrificeExplode()
{ {
local Ext_PerkDemolition DemoPerk; local Ext_PerkDemolition DemoPerk;
Super.SacrificeExplode(); Super.SacrificeExplode();
DemoPerk = Ext_PerkDemolition(ExtPlayerController(Controller).ActivePerkManager.CurrentPerk); DemoPerk = Ext_PerkDemolition(ExtPlayerController(Controller).ActivePerkManager.CurrentPerk);
if (DemoPerk != none) if (DemoPerk != none)
DemoPerk.bUsedSacrifice = true; DemoPerk.bUsedSacrifice = true;
@ -1298,23 +1298,23 @@ function SacrificeExplode()
simulated function Ext_PerkFieldMedic GetMedicPerk(ExtPlayerController Healer) simulated function Ext_PerkFieldMedic GetMedicPerk(ExtPlayerController Healer)
{ {
local Ext_PerkFieldMedic MedPerk; local Ext_PerkFieldMedic MedPerk;
MedPerk = Ext_PerkFieldMedic(ExtPlayerController(Controller).ActivePerkManager.CurrentPerk); MedPerk = Ext_PerkFieldMedic(ExtPlayerController(Controller).ActivePerkManager.CurrentPerk);
if (MedPerk != None) if (MedPerk != None)
return MedPerk; return MedPerk;
return None; return None;
} }
function ThrowActiveWeapon(optional bool bDestroyWeap) function ThrowActiveWeapon(optional bool bDestroyWeap)
{ {
local KFWeapon TempWeapon; local KFWeapon TempWeapon;
if( Role < ROLE_Authority ) if( Role < ROLE_Authority )
{ {
return; return;
} }
if (Health <= 0 && bThrowAllWeaponsOnDeath) if (Health <= 0 && bThrowAllWeaponsOnDeath)
{ {
if (InvManager != none) if (InvManager != none)
@ -1337,11 +1337,11 @@ defaultproperties
bCanBecomeRagdoll=true bCanBecomeRagdoll=true
InventoryManagerClass=class'ExtInventoryManager' InventoryManagerClass=class'ExtInventoryManager'
WakeUpAnimSet=AnimSet'ZED_Clot_Anim.Alpha_Clot_Master' WakeUpAnimSet=AnimSet'ZED_Clot_Anim.Alpha_Clot_Master'
Begin Object Name=SpecialMoveHandler_0 Begin Object Name=SpecialMoveHandler_0
SpecialMoveClasses(SM_Emote)=class'ServerExt.ExtSM_Player_Emote' SpecialMoveClasses(SM_Emote)=class'ServerExt.ExtSM_Player_Emote'
End Object End Object
DefaultInventory.Empty() DefaultInventory.Empty()
DefaultInventory.Add(class'ExtWeap_Pistol_9mm') DefaultInventory.Add(class'ExtWeap_Pistol_9mm')
// DefaultInventory.Add(class'KFWeap_Pistol_9mm') // DefaultInventory.Add(class'KFWeap_Pistol_9mm')

View File

@ -25,10 +25,10 @@ simulated function Inventory CreateInventory(class<Inventory> NewInventoryItemCl
{ {
local KFWeapon Wep; local KFWeapon Wep;
local Inventory SupClass; local Inventory SupClass;
SupClass = Super.CreateInventory(NewInventoryItemClass, bDoNotActivate); SupClass = Super.CreateInventory(NewInventoryItemClass, bDoNotActivate);
Wep = KFWeapon(SupClass); Wep = KFWeapon(SupClass);
if (Wep != none) if (Wep != none)
{ {
if (KFWeap_Pistol_Dual9mm(Wep) != None && ExtWeap_Pistol_Dual9mm(Wep) == None) if (KFWeap_Pistol_Dual9mm(Wep) != None && ExtWeap_Pistol_Dual9mm(Wep) == None)
@ -36,17 +36,17 @@ simulated function Inventory CreateInventory(class<Inventory> NewInventoryItemCl
Wep.Destroy(); Wep.Destroy();
return Super.CreateInventory(class'ExtWeap_Pistol_Dual9mm', bDoNotActivate); return Super.CreateInventory(class'ExtWeap_Pistol_Dual9mm', bDoNotActivate);
} }
return Wep; return Wep;
} }
return SupClass; return SupClass;
} }
simulated function CheckForExcessRemoval(KFWeapon NewWeap) simulated function CheckForExcessRemoval(KFWeapon NewWeap)
{ {
local Inventory RemoveInv, Inv; local Inventory RemoveInv, Inv;
if (KFWeap_Pistol_Dual9mm(NewWeap) != None) if (KFWeap_Pistol_Dual9mm(NewWeap) != None)
{ {
for (Inv = InventoryChain; Inv != None; Inv = Inv.Inventory) for (Inv = InventoryChain; Inv != None; Inv = Inv.Inventory)
@ -59,6 +59,6 @@ simulated function CheckForExcessRemoval(KFWeapon NewWeap)
} }
} }
} }
Super.CheckForExcessRemoval(NewWeap); Super.CheckForExcessRemoval(NewWeap);
} }

View File

@ -23,7 +23,7 @@ function InitializeMenu(KFGFxMoviePlayer_Manager InManager)
function InitCharacterMenu() function InitCharacterMenu()
{ {
ExtPRI = ExtPlayerReplicationInfo(GetPC().PlayerReplicationInfo); ExtPRI = ExtPlayerReplicationInfo(GetPC().PlayerReplicationInfo);
if (ExtPRI!=None && ExtPRI.bClientInitChars) if (ExtPRI!=None && ExtPRI.bClientInitChars)
CharListRecieved(); CharListRecieved();
else if (ExtPRI==None) else if (ExtPRI==None)
@ -43,7 +43,7 @@ function InitCharacterMenu()
} }
event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget) event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget)
{ {
switch (WidgetName) switch (WidgetName)
{ {
case 'perkSelectionContainer': case 'perkSelectionContainer':
@ -65,9 +65,9 @@ function OnOpen()
PC = GetPC(); PC = GetPC();
if (PC == none) if (PC == none)
return; return;
CheckForCustomizationPawn(PC); CheckForCustomizationPawn(PC);
if (PC.PlayerReplicationInfo.bReadyToPlay && PC.WorldInfo.GRI.bMatchHasBegun) if (PC.PlayerReplicationInfo.bReadyToPlay && PC.WorldInfo.GRI.bMatchHasBegun)
{ {
// Players cannot change characters if they are in a game // Players cannot change characters if they are in a game
@ -87,7 +87,7 @@ function CheckForCustomizationPawn(PlayerController PC)
{ {
KFPC.SpawnMidGameCustomizationPawn(); KFPC.SpawnMidGameCustomizationPawn();
} }
} }
} }
function LocalizeText() function LocalizeText()
@ -114,7 +114,7 @@ function LocalizeText()
simulated function CharListRecieved() simulated function CharListRecieved()
{ {
UpdateCharacterList(); UpdateCharacterList();
UpdateGear(); UpdateGear();
} }
@ -145,7 +145,7 @@ function UpdateEmoteList()
//`log(MyKFPRI.EmoteList[i] @ "is not purchased."); //`log(MyKFPRI.EmoteList[i] @ "is not purchased.");
} }
} }
SetObject("emoteArray", DataProvider); SetObject("emoteArray", DataProvider);
} }
@ -183,7 +183,7 @@ function UpdateCharacterList()
ItemIndex++; ItemIndex++;
} }
} }
SetObject("characterArray", DataProvider); SetObject("characterArray", DataProvider);
} }
@ -202,7 +202,7 @@ function UpdateGear()
UpdateMeshList(class'KFGFxMenu_Gear'.Default.HeadMeshKey, class'KFGFxMenu_Gear'.Default.HeadSkinKey, CurrentCharInfo.HeadVariants, "headsArray"); UpdateMeshList(class'KFGFxMenu_Gear'.Default.HeadMeshKey, class'KFGFxMenu_Gear'.Default.HeadSkinKey, CurrentCharInfo.HeadVariants, "headsArray");
// Set the list of usable attachments for this character // Set the list of usable attachments for this character
UpdateAttachmentsList(CurrentCharInfo.CosmeticVariants); UpdateAttachmentsList(CurrentCharInfo.CosmeticVariants);
UpdateEmoteList(); UpdateEmoteList();
SetCurrentCharacterButtons(); SetCurrentCharacterButtons();
@ -216,7 +216,7 @@ final function string GetMenuName(Object Obj)
final function string GetMenuNameStr(string ObjName) final function string GetMenuNameStr(string ObjName)
{ {
local int i; local int i;
i = InStr(ObjName,".",true); i = InStr(ObjName,".",true);
if (i!=-1) if (i!=-1)
ObjName = Mid(ObjName,i+1); ObjName = Mid(ObjName,i+1);
@ -230,20 +230,20 @@ function UpdateMeshList(string OutfitKey, string SkinKey, array<OutfitVariants>
local string TexturePath, OutfitName; local string TexturePath, OutfitName;
local OutfitVariants Outfit; local OutfitVariants Outfit;
local SkinVariant FirstSkin; local SkinVariant FirstSkin;
ItemIndex = 0; ItemIndex = 0;
DataProvider = CreateArray(); DataProvider = CreateArray();
for (i = 0; i < Outfits.Length; i++) for (i = 0; i < Outfits.Length; i++)
{ {
Outfit = Outfits[i]; Outfit = Outfits[i];
OutfitName = Localize(CharInfoPath, OutfitKey$i, class'KFGFxMenu_Gear'.Default.KFCharacterInfoString); OutfitName = Localize(CharInfoPath, OutfitKey$i, class'KFGFxMenu_Gear'.Default.KFCharacterInfoString);
if (bIsCustomChar) if (bIsCustomChar)
OutfitName = GetMenuNameStr(Outfit.MeshName); OutfitName = GetMenuNameStr(Outfit.MeshName);
if (InStr(OutfitName, "?INT?") != -1) if (InStr(OutfitName, "?INT?") != -1)
continue; continue;
SlotObject = CreateObject("Object"); SlotObject = CreateObject("Object");
SlotObject.SetInt("ItemIndex", i); SlotObject.SetInt("ItemIndex", i);
SlotObject.SetString("label", OutfitName); SlotObject.SetString("label", OutfitName);
@ -251,14 +251,14 @@ function UpdateMeshList(string OutfitKey, string SkinKey, array<OutfitVariants>
FirstSkin = UpdateOutfitVariants(OutfitKey, SkinKey, Outfit.SkinVariations, i, SlotObject); FirstSkin = UpdateOutfitVariants(OutfitKey, SkinKey, Outfit.SkinVariations, i, SlotObject);
if (string(FirstSkin.UITexture) == "Bad") if (string(FirstSkin.UITexture) == "Bad")
continue; continue;
TexturePath = "img://"$PathName(FirstSkin.UITexture); TexturePath = "img://"$PathName(FirstSkin.UITexture);
SlotObject.SetString("source", TexturePath); SlotObject.SetString("source", TexturePath);
DataProvider.SetElementObject(ItemIndex, SlotObject); DataProvider.SetElementObject(ItemIndex, SlotObject);
ItemIndex++; ItemIndex++;
} }
SetObject(DataArrayString, DataProvider); SetObject(DataArrayString, DataProvider);
} }
@ -274,7 +274,7 @@ function SkinVariant UpdateOutfitVariants(string OutfitKey, string KeyName, out
ItemIndex = 0; ItemIndex = 0;
DataProvider = CreateArray(); DataProvider = CreateArray();
SectionPath = CharInfoPath$"."$OutfitKey$OutfitIndex; SectionPath = CharInfoPath$"."$OutfitKey$OutfitIndex;
for (i = 0; i < SkinVariations.length; i++) for (i = 0; i < SkinVariations.length; i++)
{ {
@ -308,7 +308,7 @@ function UpdateAttachmentsList(array<AttachmentVariants> Attachments)
local Pawn MyPawn; local Pawn MyPawn;
local SkinVariant FirstSkin; local SkinVariant FirstSkin;
local string AttachmentName; local string AttachmentName;
ItemIndex = 0; ItemIndex = 0;
DataProvider = CreateArray(); DataProvider = CreateArray();
MyPawn = GetPC().Pawn; MyPawn = GetPC().Pawn;
@ -335,12 +335,12 @@ function UpdateAttachmentsList(array<AttachmentVariants> Attachments)
SlotObject.SetBool("enabled", true); SlotObject.SetBool("enabled", true);
TexturePath = "img://"$PathName(FirstSkin.UITexture); TexturePath = "img://"$PathName(FirstSkin.UITexture);
SlotObject.SetString("source", TexturePath); SlotObject.SetString("source", TexturePath);
DataProvider.SetElementObject(ItemIndex, SlotObject); DataProvider.SetElementObject(ItemIndex, SlotObject);
ItemIndex++; ItemIndex++;
} }
} }
SetObject("attachmentsArray", DataProvider); SetObject("attachmentsArray", DataProvider);
} }
@ -389,7 +389,7 @@ function SetCurrentCharacterButtons()
bCustom = ExtPRI.UsesCustomChar(); bCustom = ExtPRI.UsesCustomChar();
DataObject = CreateObject("Object"); DataObject = CreateObject("Object");
CharacterIndex = ExtPRI.RepCustomizationInfo.CharacterIndex; CharacterIndex = ExtPRI.RepCustomizationInfo.CharacterIndex;
HeadMeshIndex = ExtPRI.RepCustomizationInfo.HeadMeshIndex; HeadMeshIndex = ExtPRI.RepCustomizationInfo.HeadMeshIndex;
HeadSkinIndex = ExtPRI.RepCustomizationInfo.HeadSkinIndex; HeadSkinIndex = ExtPRI.RepCustomizationInfo.HeadSkinIndex;
@ -416,7 +416,7 @@ function SetCurrentCharacterButtons()
SetGearButtons(BodyMeshIndex, BodySkinIndex, class'KFGFxMenu_Gear'.Default.BodyMeshKey, class'KFGFxMenu_Gear'.Default.BodySkinKey, class'KFGFxMenu_Gear'.Default.BodyFunctionKey); SetGearButtons(BodyMeshIndex, BodySkinIndex, class'KFGFxMenu_Gear'.Default.BodyMeshKey, class'KFGFxMenu_Gear'.Default.BodySkinKey, class'KFGFxMenu_Gear'.Default.BodyFunctionKey);
//set attachments //set attachments
SetAttachmentButtons(class'KFGFxMenu_Gear'.Default.AttachmentKey, class'KFGFxMenu_Gear'.Default.AttachmentFunctionKey); SetAttachmentButtons(class'KFGFxMenu_Gear'.Default.AttachmentKey, class'KFGFxMenu_Gear'.Default.AttachmentFunctionKey);
SetEmoteButton(); SetEmoteButton();
} }
@ -438,7 +438,7 @@ function SetEmoteButton()
DataObject.SetString("selectedEmote", Localize(EmoteList[EmoteIndex].ItemName, "EmoteName", class'KFGFxMenu_Gear'.Default.KFCharacterInfoString)); DataObject.SetString("selectedEmote", Localize(EmoteList[EmoteIndex].ItemName, "EmoteName", class'KFGFxMenu_Gear'.Default.KFCharacterInfoString));
DataObject.SetInt("selectedEmoteIndex", 0); DataObject.SetInt("selectedEmoteIndex", 0);
} }
SetObject("selectedEmote", DataObject); SetObject("selectedEmote", DataObject);
} }
@ -472,7 +472,7 @@ function SetGearButtons(int MeshIndex, int SkinIndex, string MeshKey, string Ski
SkinName = GetMenuName(CurrentCharInfo.BodyVariants[MeshIndex].SkinVariations[SkinIndex].Skin); SkinName = GetMenuName(CurrentCharInfo.BodyVariants[MeshIndex].SkinVariations[SkinIndex].Skin);
MeshName = GetMenuNameStr(CurrentCharInfo.BodyVariants[MeshIndex].MeshName); MeshName = GetMenuNameStr(CurrentCharInfo.BodyVariants[MeshIndex].MeshName);
} }
DataObject.SetString(sectionFunctionName, MeshName @"\n" @SkinName); DataObject.SetString(sectionFunctionName, MeshName @"\n" @SkinName);
} }
else else
@ -497,16 +497,16 @@ function SetAttachmentButtons(string AttachmentMeshKey, string sectionFunctionNa
local GFxObject DataObject; local GFxObject DataObject;
local int i, AttachmentIndex; local int i, AttachmentIndex;
local bool bCustom; local bool bCustom;
if (bWaitingCharList) if (bWaitingCharList)
return; return;
bCustom = ExtPRI.UsesCustomChar(); bCustom = ExtPRI.UsesCustomChar();
DataObject = CreateObject("Object"); DataObject = CreateObject("Object");
for (i = 0; i < `MAX_COSMETIC_ATTACHMENTS; i++) for (i = 0; i < `MAX_COSMETIC_ATTACHMENTS; i++)
{ {
AttachmentIndex = bCustom ? ExtPRI.CustomCharacter.AttachmentMeshIndices[i] : ExtPRI.RepCustomizationInfo.AttachmentMeshIndices[i]; AttachmentIndex = bCustom ? ExtPRI.CustomCharacter.AttachmentMeshIndices[i] : ExtPRI.RepCustomizationInfo.AttachmentMeshIndices[i];
if (AttachmentIndex == `CLEARED_ATTACHMENT_INDEX) if (AttachmentIndex == `CLEARED_ATTACHMENT_INDEX)
{ {
DataObject.SetString("selectedAttachment_"$i, "----"); DataObject.SetString("selectedAttachment_"$i, "----");
@ -515,7 +515,7 @@ function SetAttachmentButtons(string AttachmentMeshKey, string sectionFunctionNa
{ {
DataObject.SetString("selectedAttachment_"$i, bIsCustomChar ? GetMenuNameStr(CurrentCharInfo.CosmeticVariants[AttachmentIndex].MeshName) : Localize(string(CurrentCharInfo.CosmeticVariants[AttachmentIndex].AttachmentItem.Name), AttachmentMeshKey, class'KFGFxMenu_Gear'.default.KFCharacterInfoString)); DataObject.SetString("selectedAttachment_"$i, bIsCustomChar ? GetMenuNameStr(CurrentCharInfo.CosmeticVariants[AttachmentIndex].MeshName) : Localize(string(CurrentCharInfo.CosmeticVariants[AttachmentIndex].AttachmentItem.Name), AttachmentMeshKey, class'KFGFxMenu_Gear'.default.KFCharacterInfoString));
} }
} }
SetObject(sectionFunctionName, DataObject); SetObject(sectionFunctionName, DataObject);
} }
@ -578,7 +578,7 @@ function Callback_Emote(int Index)
function Callback_RotateCamera(int RotationDirection) function Callback_RotateCamera(int RotationDirection)
{ {
local KFPlayerCamera PlayerCamera; local KFPlayerCamera PlayerCamera;
PlayerCamera = KFPlayerCamera(GetPC().PlayerCamera); PlayerCamera = KFPlayerCamera(GetPC().PlayerCamera);
if (PlayerCamera != none) if (PlayerCamera != none)
PlayerCamera.CustomizationCam.RotatedCamera(RotationDirection); PlayerCamera.CustomizationCam.RotatedCamera(RotationDirection);
@ -632,9 +632,9 @@ function Callback_Body(int MeshIndex, int SkinIndex)
{ {
if (!ExtPRI.UsesCustomChar()) // Force client to setup custom character now for this server. if (!ExtPRI.UsesCustomChar()) // Force client to setup custom character now for this server.
ExtPRI.ChangeCharacter(ExtPRI.RepCustomizationInfo.CharacterIndex,true); ExtPRI.ChangeCharacter(ExtPRI.RepCustomizationInfo.CharacterIndex,true);
ExtPRI.UpdateCustomization(CO_Body, MeshIndex, SkinIndex); ExtPRI.UpdateCustomization(CO_Body, MeshIndex, SkinIndex);
// When assigning a new body mesh we may need to remove certain attachments // When assigning a new body mesh we may need to remove certain attachments
// refresh filters, and update the equipped accessories list // refresh filters, and update the equipped accessories list
UpdateAttachmentsList(CurrentCharInfo.CosmeticVariants); UpdateAttachmentsList(CurrentCharInfo.CosmeticVariants);
@ -698,7 +698,7 @@ function Callback_Attachment(int MeshIndex, int SkinIndex)
{ {
return; return;
} }
ExtPRI.UpdateCustomization(CO_Attachment, MeshIndex, SkinIndex, SlotIndex); ExtPRI.UpdateCustomization(CO_Attachment, MeshIndex, SkinIndex, SlotIndex);
} }
SetAttachmentButtons(class'KFGFxMenu_Gear'.Default.AttachmentKey, class'KFGFxMenu_Gear'.Default.AttachmentFunctionKey); SetAttachmentButtons(class'KFGFxMenu_Gear'.Default.AttachmentKey, class'KFGFxMenu_Gear'.Default.AttachmentFunctionKey);

View File

@ -62,4 +62,5 @@ function Callback_Equip(int ItemDefinition)
defaultproperties defaultproperties
{ {
} }

View File

@ -19,7 +19,7 @@ function OnOpen()
if (ExtPrevPerk==None) if (ExtPrevPerk==None)
ExtPrevPerk = ExtKFPC.ActivePerkManager.CurrentPerk; ExtPrevPerk = ExtKFPC.ActivePerkManager.CurrentPerk;
ExUpdateContainers(ExtPrevPerk); ExUpdateContainers(ExtPrevPerk);
SetBool("locked", true); SetBool("locked", true);
} }
@ -65,7 +65,7 @@ function Callback_PerkSelected(byte NewPerkIndex, bool bClickedIndex)
{ {
ExtPrevPerk = ExtKFPC.ActivePerkManager.UserPerks[NewPerkIndex]; ExtPrevPerk = ExtKFPC.ActivePerkManager.UserPerks[NewPerkIndex];
ExUpdateContainers(ExtPrevPerk); ExUpdateContainers(ExtPrevPerk);
ExtKFPC.PendingPerkClass = ExtPrevPerk.Class; ExtKFPC.PendingPerkClass = ExtPrevPerk.Class;
ExtKFPC.SwitchToPerk(ExtPrevPerk.Class); ExtKFPC.SwitchToPerk(ExtPrevPerk.Class);
} }

View File

@ -34,7 +34,7 @@ function Callback_PerkChanged(int PerkIndex)
{ {
ExtKFPC.PendingPerkClass = ExtKFPC.ActivePerkManager.UserPerks[PerkIndex].Class; ExtKFPC.PendingPerkClass = ExtKFPC.ActivePerkManager.UserPerks[PerkIndex].Class;
ExtKFPC.SwitchToPerk(ExtKFPC.PendingPerkClass); ExtKFPC.SwitchToPerk(ExtKFPC.PendingPerkClass);
if (PlayerInventoryContainer != none) if (PlayerInventoryContainer != none)
{ {
PlayerInventoryContainer.UpdateLock(); PlayerInventoryContainer.UpdateLock();

View File

@ -13,9 +13,9 @@ final function ShowKillMessageX(PlayerReplicationInfo PRI1, PlayerReplicationInf
{ {
local GFxObject DataObject; local GFxObject DataObject;
local bool bHumanDeath; local bool bHumanDeath;
local string KilledName, KillerName, KilledIconpath, KillerIconPath; local string KilledName, KillerName, KilledIconpath, KillerIconPath;
local string KillerTextColor, KilledTextColor; local string KillerTextColor, KilledTextColor;
if (KFPC == none) if (KFPC == none)
return; return;
@ -47,14 +47,14 @@ final function ShowKillMessageX(PlayerReplicationInfo PRI1, PlayerReplicationInf
if (ExtPlayerReplicationInfo(PRI1)!=None && ExtPlayerReplicationInfo(PRI1).ECurrentPerk!=None) if (ExtPlayerReplicationInfo(PRI1)!=None && ExtPlayerReplicationInfo(PRI1).ECurrentPerk!=None)
KillerIconpath = ExtPlayerReplicationInfo(PRI1).ECurrentPerk.static.GetPerkIconPath(0); KillerIconpath = ExtPlayerReplicationInfo(PRI1).ECurrentPerk.static.GetPerkIconPath(0);
} }
KillerName = PRI1.PlayerName; KillerName = PRI1.PlayerName;
} }
if (PRI2 != none) if (PRI2 != none)
{ {
if (PRI2.GetTeamNum() == class'KFTeamInfo_Human'.default.TeamIndex) if (PRI2.GetTeamNum() == class'KFTeamInfo_Human'.default.TeamIndex)
{ {
bHumanDeath = true; bHumanDeath = true;
KilledTextColor = HumanTeamTextColor; KilledTextColor = HumanTeamTextColor;
} }
else else

View File

@ -73,14 +73,14 @@ function LaunchMenus(optional bool bForceSkipLobby)
function OpenMenu(byte NewMenuIndex, optional bool bShowWidgets = true) function OpenMenu(byte NewMenuIndex, optional bool bShowWidgets = true)
{ {
local KF2GUIController GUIController; local KF2GUIController GUIController;
GUIController = class'KF2GUIController'.Static.GetGUIController(GetPC()); GUIController = class'KF2GUIController'.Static.GetGUIController(GetPC());
Super.OpenMenu(NewMenuIndex, bShowWidgets); Super.OpenMenu(NewMenuIndex, bShowWidgets);
if (bAfterLobby) if (bAfterLobby)
return; return;
if (NewMenuIndex == UI_Perks) if (NewMenuIndex == UI_Perks)
{ {
PerksPage = GUIController.OpenMenu(class'ExtGUI_PerkSelectionPage'); PerksPage = GUIController.OpenMenu(class'ExtGUI_PerkSelectionPage');
@ -93,20 +93,20 @@ function OpenMenu(byte NewMenuIndex, optional bool bShowWidgets = true)
function CloseMenus(optional bool bForceClose=false) function CloseMenus(optional bool bForceClose=false)
{ {
local KF2GUIController GUIController; local KF2GUIController GUIController;
if (PerksPage != None) if (PerksPage != None)
{ {
GUIController = class'KF2GUIController'.Static.GetGUIController(GetPC()); GUIController = class'KF2GUIController'.Static.GetGUIController(GetPC());
GUIController.CloseMenu(class'ExtGUI_PerkSelectionPage'); GUIController.CloseMenu(class'ExtGUI_PerkSelectionPage');
} }
Super.CloseMenus(bForceClose); Super.CloseMenus(bForceClose);
} }
function OnMenuOpen(name WidgetPath, KFGFxObject_Menu Widget) function OnMenuOpen(name WidgetPath, KFGFxObject_Menu Widget)
{ {
Super.OnMenuOpen(WidgetPath, Widget); Super.OnMenuOpen(WidgetPath, Widget);
if (!bAfterLobby && Widget == PerksMenu) if (!bAfterLobby && Widget == PerksMenu)
PerksMenu.ActionScriptVoid("closeContainer"); PerksMenu.ActionScriptVoid("closeContainer");
} }
@ -114,10 +114,10 @@ function OnMenuOpen(name WidgetPath, KFGFxObject_Menu Widget)
defaultproperties defaultproperties
{ {
InGamePartyWidgetClass=class'ExtWidget_PartyInGame' InGamePartyWidgetClass=class'ExtWidget_PartyInGame'
WidgetPaths.Remove("../UI_Widgets/PartyWidget_SWF.swf") WidgetPaths.Remove("../UI_Widgets/PartyWidget_SWF.swf")
WidgetPaths.Add("../UI_Widgets/VersusLobbyWidget_SWF.swf") WidgetPaths.Add("../UI_Widgets/VersusLobbyWidget_SWF.swf")
WidgetBindings.Remove((WidgetName="PerksMenu",WidgetClass=class'KFGFxMenu_Perks')) WidgetBindings.Remove((WidgetName="PerksMenu",WidgetClass=class'KFGFxMenu_Perks'))
WidgetBindings.Add((WidgetName="PerksMenu",WidgetClass=class'ExtMenu_Perks')) WidgetBindings.Add((WidgetName="PerksMenu",WidgetClass=class'ExtMenu_Perks'))
WidgetBindings.Remove((WidgetName="gearMenu",WidgetClass=class'KFGFxMenu_Gear')) WidgetBindings.Remove((WidgetName="gearMenu",WidgetClass=class'KFGFxMenu_Gear'))

View File

@ -54,7 +54,7 @@ simulated function PlayEmoteAnimation(optional bool bNewCharacter)
local name AnimName; local name AnimName;
local float BlendInTime; local float BlendInTime;
AnimName = class'ExtEmoteList'.static.GetUnlockedEmote(class'ExtEmoteList'.static.GetEquippedEmoteId(ExtPlayerController(Controller)), ExtPlayerController(Controller)); AnimName = class'ExtEmoteList'.static.GetUnlockedEmote(class'ExtEmoteList'.static.GetEquippedEmoteId(ExtPlayerController(Controller)), ExtPlayerController(Controller));
BlendInTime = (bNewCharacter) ? 0.f : 0.4; BlendInTime = (bNewCharacter) ? 0.f : 0.4;
@ -88,17 +88,16 @@ function AttachWeaponByItemDefinition(int ItemDefinition)
return; return;
} }
//load in and add object . //load in and add object .
WeaponPreview = KFWeaponAttachment (DynamicLoadObject(WeaponDef.default.AttachmentArchtypePath, class'KFWeaponAttachment')); WeaponPreview = KFWeaponAttachment (DynamicLoadObject(WeaponDef.default.AttachmentArchtypePath, class'KFWeaponAttachment'));
//attatch it to player //attatch it to player
WeaponAttachmentTemplate = WeaponPreview; WeaponAttachmentTemplate = WeaponPreview;
WeaponAttachmentChanged(); WeaponAttachmentChanged();
//setweapon skin //setweapon skin
WeaponAttachment.SetWeaponSkin(ItemDefinition); WeaponAttachment.SetWeaponSkin(ItemDefinition);
} }
defaultproperties defaultproperties

View File

@ -7,4 +7,5 @@ static simulated event bool IsABoss()
defaultproperties defaultproperties
{ {
} }

View File

@ -62,7 +62,7 @@ simulated reliable client function ClientSetGrenadeCap(byte NewCap)
function bool ApplyPerkClass(class<Ext_PerkBase> P) function bool ApplyPerkClass(class<Ext_PerkBase> P)
{ {
local int i; local int i;
for (i=0; i<UserPerks.Length; ++i) for (i=0; i<UserPerks.Length; ++i)
if (UserPerks[i].Class==P) if (UserPerks[i].Class==P)
{ {
@ -75,7 +75,7 @@ function bool ApplyPerkClass(class<Ext_PerkBase> P)
function bool ApplyPerkName(string S) function bool ApplyPerkName(string S)
{ {
local int i; local int i;
for (i=0; i<UserPerks.Length; ++i) for (i=0; i<UserPerks.Length; ++i)
if (string(UserPerks[i].Class.Name)~=S) if (string(UserPerks[i].Class.Name)~=S)
{ {
@ -91,39 +91,39 @@ function ApplyPerk(Ext_PerkBase P)
local KFInventoryManager InvMan; local KFInventoryManager InvMan;
local Ext_T_ZEDHelper H; local Ext_T_ZEDHelper H;
local int i; local int i;
if (P==None) if (P==None)
return; return;
if (PlayerOwner.Pawn != None) if (PlayerOwner.Pawn != None)
{ {
InvMan = KFInventoryManager(PlayerOwner.Pawn.InvManager); InvMan = KFInventoryManager(PlayerOwner.Pawn.InvManager);
if (InvMan != None) if (InvMan != None)
InvMan.MaxCarryBlocks = InvMan.Default.MaxCarryBlocks; InvMan.MaxCarryBlocks = InvMan.Default.MaxCarryBlocks;
foreach PlayerOwner.Pawn.ChildActors(class'Ext_T_ZEDHelper',H) foreach PlayerOwner.Pawn.ChildActors(class'Ext_T_ZEDHelper',H)
{ {
H.Destroy(); H.Destroy();
} }
HP = KFPawn_Human(PlayerOwner.Pawn); HP = KFPawn_Human(PlayerOwner.Pawn);
if (HP != None) if (HP != None)
HP.DefaultInventory = HP.Default.DefaultInventory; HP.DefaultInventory = HP.Default.DefaultInventory;
} }
if (CurrentPerk != None) if (CurrentPerk != None)
{ {
CurrentPerk.DeactivateTraits(); CurrentPerk.DeactivateTraits();
for (i=0; i<CurrentPerk.PerkTraits.Length; ++i) for (i=0; i<CurrentPerk.PerkTraits.Length; ++i)
{ {
CurrentPerk.PerkTraits[i].TraitType.Static.CancelEffectOn(KFPawn_Human(PlayerOwner.Pawn),CurrentPerk,CurrentPerk.PerkTraits[i].CurrentLevel,CurrentPerk.PerkTraits[i].Data); CurrentPerk.PerkTraits[i].TraitType.Static.CancelEffectOn(KFPawn_Human(PlayerOwner.Pawn),CurrentPerk,CurrentPerk.PerkTraits[i].CurrentLevel,CurrentPerk.PerkTraits[i].Data);
} }
} }
bStatsDirty = true; bStatsDirty = true;
CurrentPerk = P; CurrentPerk = P;
if (PRIOwner!=None) if (PRIOwner!=None)
{ {
PRIOwner.ECurrentPerk = P.Class; PRIOwner.ECurrentPerk = P.Class;
@ -131,11 +131,11 @@ function ApplyPerk(Ext_PerkBase P)
PRIOwner.CurrentPerkClass = P.BasePerk; PRIOwner.CurrentPerkClass = P.BasePerk;
P.UpdatePRILevel(); P.UpdatePRILevel();
} }
if (CurrentPerk!=None) if (CurrentPerk!=None)
{ {
CurrentPerk.ActivateTraits(); CurrentPerk.ActivateTraits();
if (PlayerOwner.Pawn != None) if (PlayerOwner.Pawn != None)
{ {
HP = KFPawn_Human(PlayerOwner.Pawn); HP = KFPawn_Human(PlayerOwner.Pawn);
@ -143,11 +143,11 @@ function ApplyPerk(Ext_PerkBase P)
{ {
HP.HealthMax = HP.default.Health; HP.HealthMax = HP.default.Health;
HP.MaxArmor = HP.default.MaxArmor; HP.MaxArmor = HP.default.MaxArmor;
ModifyHealth(HP.HealthMax); ModifyHealth(HP.HealthMax);
ModifyArmor(HP.MaxArmor); ModifyArmor(HP.MaxArmor);
CurrentPerk.UpdateAmmoStatus(HP.InvManager); CurrentPerk.UpdateAmmoStatus(HP.InvManager);
if (HP.Health > HP.HealthMax) HP.Health = HP.HealthMax; if (HP.Health > HP.HealthMax) HP.Health = HP.HealthMax;
if (HP.Armor > HP.MaxArmor) HP.Armor = HP.MaxArmor; if (HP.Armor > HP.MaxArmor) HP.Armor = HP.MaxArmor;
} }
@ -158,7 +158,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;
for (i=0; i<UserPerks.Length; ++i) for (i=0; i<UserPerks.Length; ++i)
if (UserPerks[i].Class==P) if (UserPerks[i].Class==P)
return UserPerks[i]; return UserPerks[i];
@ -175,7 +175,7 @@ simulated function PostBeginPlay()
simulated function InitPerks() simulated function InitPerks()
{ {
local Ext_PerkBase P; local Ext_PerkBase P;
if (WorldInfo.NetMode==NM_Client) if (WorldInfo.NetMode==NM_Client)
{ {
foreach DynamicActors(class'Ext_PerkBase',P) foreach DynamicActors(class'Ext_PerkBase',P)
@ -209,7 +209,7 @@ function CheckPlayTime()
function ServerInitPerks() function ServerInitPerks()
{ {
local int i; local int i;
for (i=0; i<UserPerks.Length; ++i) for (i=0; i<UserPerks.Length; ++i)
UserPerks[i].SetInitialLevel(); UserPerks[i].SetInitialLevel();
bServerReady = true; bServerReady = true;
@ -235,7 +235,7 @@ simulated function UnregisterPerk(Ext_PerkBase P)
function Destroyed() function Destroyed()
{ {
local int i; local int i;
for (i=(UserPerks.Length-1); i>=0; --i) for (i=(UserPerks.Length-1); i>=0; --i)
{ {
UserPerks[i].PerkManager = None; UserPerks[i].PerkManager = None;
@ -310,7 +310,7 @@ function SaveData(ExtSaveDataBase Data)
Data.SaveInt(TotalEXP,3); Data.SaveInt(TotalEXP,3);
Data.SaveInt(TotalKills,3); Data.SaveInt(TotalKills,3);
Data.SaveInt(TotalPlayTime,3); Data.SaveInt(TotalPlayTime,3);
// Write character. // Write character.
if (PRIOwner!=None) if (PRIOwner!=None)
PRIOwner.SaveCustomCharacter(Data); PRIOwner.SaveCustomCharacter(Data);
@ -326,10 +326,10 @@ function SaveData(ExtSaveDataBase Data)
for (i=0; i<UserPerks.Length; ++i) for (i=0; i<UserPerks.Length; ++i)
if (UserPerks[i].HasAnyProgress()) if (UserPerks[i].HasAnyProgress())
++o; ++o;
// Then write count we have. // Then write count we have.
Data.SaveInt(o); Data.SaveInt(o);
// Then perk stats. // Then perk stats.
for (i=0; i<UserPerks.Length; ++i) for (i=0; i<UserPerks.Length; ++i)
{ {
@ -508,7 +508,7 @@ simulated function ModifyRecoil(out float CurrentRecoilModifier, KFWeapon KFW)
} }
simulated function float GetCameraViewShakeModifier(KFWeapon KFW) simulated function float GetCameraViewShakeModifier(KFWeapon KFW)
{ {
return (CurrentPerk!=None ? CurrentPerk.GetCameraViewShakeModifier(KFW) : 1.f); return (CurrentPerk!=None ? CurrentPerk.GetCameraViewShakeModifier(KFW) : 1.f);
} }
@ -855,7 +855,7 @@ simulated function bool GetHealingShieldActive()
} }
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);
} }
@ -889,7 +889,7 @@ simulated function float GetPenetrationModifier(byte Level, class<KFDamageType>
{ {
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);
} }
simulated function float GetTightChokeModifier() simulated function float GetTightChokeModifier()
{ {
return (CurrentPerk!=None ? CurrentPerk.GetTightChokeModifier() : 1.f); return (CurrentPerk!=None ? CurrentPerk.GetTightChokeModifier() : 1.f);
@ -921,7 +921,7 @@ defaultproperties
{ {
bTickIsDisabled=false bTickIsDisabled=false
NetPriority=3.5 NetPriority=3.5
// SWAT bumping // SWAT bumping
BumpCooldown = 0.1f BumpCooldown = 0.1f
BumpMomentum=1.f BumpMomentum=1.f

View File

@ -1,7 +1,7 @@
class ExtPerksContainer_Header extends KFGFxPerksContainer_Header; class ExtPerksContainer_Header extends KFGFxPerksContainer_Header;
final function ExUpdatePerkHeader(Ext_PerkBase PerkClass) final function ExUpdatePerkHeader(Ext_PerkBase PerkClass)
{ {
local GFxObject PerkDataProvider; local GFxObject PerkDataProvider;
PerkDataProvider = CreateObject("Object"); PerkDataProvider = CreateObject("Object");

View File

@ -8,7 +8,7 @@ function UpdatePerkSelection(byte SelectedPerkIndex)
local GFxObject DataProvider; local GFxObject DataProvider;
local GFxObject TempObj; local GFxObject TempObj;
local ExtPlayerController KFPC; local ExtPlayerController KFPC;
local Ext_PerkBase PerkClass; local Ext_PerkBase PerkClass;
KFPC = ExtPlayerController(GetPC()); KFPC = ExtPlayerController(GetPC());
@ -21,12 +21,12 @@ function UpdatePerkSelection(byte SelectedPerkIndex)
PerkClass = KFPC.ActivePerkManager.UserPerks[i]; PerkClass = KFPC.ActivePerkManager.UserPerks[i];
TempObj = CreateObject("Object"); TempObj = CreateObject("Object");
TempObj.SetInt("PerkLevel", PerkClass.CurrentLevel); TempObj.SetInt("PerkLevel", PerkClass.CurrentLevel);
TempObj.SetString("Title", PerkClass.PerkName); TempObj.SetString("Title", PerkClass.PerkName);
TempObj.SetString("iconSource", PerkClass.GetPerkIconPath(PerkClass.CurrentLevel)); TempObj.SetString("iconSource", PerkClass.GetPerkIconPath(PerkClass.CurrentLevel));
TempObj.SetBool("bTierUnlocked", true); TempObj.SetBool("bTierUnlocked", true);
DataProvider.SetElementObject(i, TempObj); DataProvider.SetElementObject(i, TempObj);
} }
SetObject("perkData", DataProvider); SetObject("perkData", DataProvider);
SetInt("SelectedIndex", SelectedPerkIndex); SetInt("SelectedIndex", SelectedPerkIndex);

View File

@ -108,7 +108,7 @@ function CheckPerk()
reliable client function AddAdminCmd(string S) reliable client function AddAdminCmd(string S)
{ {
local int i,j; local int i,j;
j = InStr(S,":"); j = InStr(S,":");
i = AdminCommands.Length; i = AdminCommands.Length;
AdminCommands.Length = i+1; AdminCommands.Length = i+1;
@ -344,7 +344,7 @@ reliable client event TeamMessage(PlayerReplicationInfo PRI, coerce string S, na
S = PRI.GetHumanReadableName()$": "$S; S = PRI.GetHumanReadableName()$": "$S;
LocalPlayer(Player).ViewportClient.ViewportConsole.OutputText("("$Type$") "$S); LocalPlayer(Player).ViewportClient.ViewportConsole.OutputText("("$Type$") "$S);
} }
if (MyGFxManager != none && MyGFxManager.PartyWidget != none) if (MyGFxManager != none && MyGFxManager.PartyWidget != none)
{ {
if (!MyGFxManager.PartyWidget.ReceiveMessage(S)) //Fails if message is for updating perks in a steam lobby if (!MyGFxManager.PartyWidget.ReceiveMessage(S)) //Fails if message is for updating perks in a steam lobby
@ -392,16 +392,16 @@ final function PopScreenMsg(string S)
local int i; local int i;
local string L; local string L;
local float T; local float T;
T = 4.f; T = 4.f;
// Get lower part. // Get lower part.
i = InStr(S,"|"); i = InStr(S,"|");
if (i!=-1) if (i!=-1)
{ {
L = Mid(S,i+1); L = Mid(S,i+1);
S = Left(S,i); S = Left(S,i);
// Get time. // Get time.
i = InStr(L,"|"); i = InStr(L,"|");
if (i!=-1) if (i!=-1)
@ -420,7 +420,7 @@ reliable client function ClientKillMessage(class<DamageType> DamType, PlayerRepl
if (Player==None || Victim==None) if (Player==None || Victim==None)
return; return;
if (bUseKF2DeathMessages && MyGFxHUD!=None) if (bUseKF2DeathMessages && MyGFxHUD!=None)
{ {
if (Victim==KillerPRI || (KillerPRI==None && KillerPawn==None)) // Suicide if (Victim==KillerPRI || (KillerPRI==None && KillerPawn==None)) // Suicide
@ -559,7 +559,7 @@ simulated final function ToggleFPBody(bool bEnable)
{ {
bShowFPLegs = bEnable; bShowFPLegs = bEnable;
Class'ExtPlayerController'.Default.bShowFPLegs = bEnable; Class'ExtPlayerController'.Default.bShowFPLegs = bEnable;
if (ExtHumanPawn(Pawn)!=None) if (ExtHumanPawn(Pawn)!=None)
ExtHumanPawn(Pawn).UpdateFPLegs(); ExtHumanPawn(Pawn).UpdateFPLegs();
} }
@ -654,7 +654,7 @@ function ShowBossNameplate(KFInterface_MonsterBoss KFBoss, optional string Playe
} }
function HideBossNameplate() function HideBossNameplate()
{ {
if (!bNamePlateHidden) if (!bNamePlateHidden)
{ {
bNamePlateHidden = false; bNamePlateHidden = false;
@ -759,7 +759,7 @@ reliable server function ServerViewPlayerID(int ID)
} }
if (PRI==None || PRI.PlayerID!=ID || Controller(PRI.Owner)==None || Controller(PRI.Owner).Pawn==None || !WorldInfo.Game.CanSpectate(self, PRI)) if (PRI==None || PRI.PlayerID!=ID || Controller(PRI.Owner)==None || Controller(PRI.Owner).Pawn==None || !WorldInfo.Game.CanSpectate(self, PRI))
return; return;
SetViewTarget(PRI); SetViewTarget(PRI);
ClientMessage(NowViewingFrom@PRI.GetHumanReadableName()); ClientMessage(NowViewingFrom@PRI.GetHumanReadableName());
if (CurrentSpectateMode==SMODE_Roaming) if (CurrentSpectateMode==SMODE_Roaming)
@ -769,7 +769,7 @@ reliable server function ServerViewPlayerID(int ID)
reliable server function SpectateRoaming() reliable server function SpectateRoaming()
{ {
local Pawn P; local Pawn P;
P = Pawn(ViewTarget); P = Pawn(ViewTarget);
ClientMessage(ViewingFromOwnCamera); ClientMessage(ViewingFromOwnCamera);
Super.SpectateRoaming(); Super.SpectateRoaming();
@ -851,7 +851,7 @@ state Spectating
if (Role < ROLE_Authority) // then save this move and replicate it if (Role < ROLE_Authority) // then save this move and replicate it
{ {
ReplicateMove(DeltaTime, Acceleration, DCLICK_None, rot(0,0,0)); ReplicateMove(DeltaTime, Acceleration, DCLICK_None, rot(0,0,0));
// only done for clients, as LastActiveTime only affects idle kicking // only done for clients, as LastActiveTime only affects idle kicking
if ((!IsZero(Acceleration) || OldRotation != Rotation) && LastUpdateSpectatorActiveTime<WorldInfo.TimeSeconds) if ((!IsZero(Acceleration) || OldRotation != Rotation) && LastUpdateSpectatorActiveTime<WorldInfo.TimeSeconds)
{ {
@ -917,7 +917,7 @@ simulated function EndGameCamFocus(vector Pos)
EndGameCamFocusPos[1] = CamPos; EndGameCamFocusPos[1] = CamPos;
EndGameCamRot = CamRot; EndGameCamRot = CamRot;
EndGameCamTimer = WorldInfo.RealTimeSeconds; EndGameCamTimer = WorldInfo.RealTimeSeconds;
if (LocalPlayer(Player)==None) if (LocalPlayer(Player)==None)
ClientFocusView(Pos); ClientFocusView(Pos);
else if (KFPawn(ViewTarget)!=None) else if (KFPawn(ViewTarget)!=None)
@ -939,7 +939,7 @@ final function bool CalcEndGameCam()
return true; return true;
T = WorldInfo.RealTimeSeconds-EndGameCamTimer; T = WorldInfo.RealTimeSeconds-EndGameCamTimer;
if (T>=20.f) // Finished view. if (T>=20.f) // Finished view.
{ {
bEndGameCamFocus = false; bEndGameCamFocus = false;
@ -1090,7 +1090,7 @@ Ignores NotifyPhysicsVolumeChange,ServerCamera,ResetCameraMode;
TheViewTarget = Self; TheViewTarget = Self;
out_Location = TheViewTarget.Location; out_Location = TheViewTarget.Location;
EndOffset = out_Location-vector(Rotation)*250.f; EndOffset = out_Location-vector(Rotation)*250.f;
if (TheViewTarget.Trace(HL,HN,EndOffset,out_Location,false,vect(16,16,16))!=None) if (TheViewTarget.Trace(HL,HN,EndOffset,out_Location,false,vect(16,16,16))!=None)
out_Location = HL; out_Location = HL;
else out_Location = EndOffset; else out_Location = EndOffset;
@ -1174,7 +1174,7 @@ state Dead
bPressedJump = false; bPressedJump = false;
FindGoodView(); FindGoodView();
CleanOutSavedMoves(); CleanOutSavedMoves();
if (KFPawn(ViewTarget)!=none) if (KFPawn(ViewTarget)!=none)
{ {
KFPawn(ViewTarget).SetMeshVisibility(true); KFPawn(ViewTarget).SetMeshVisibility(true);
@ -1213,7 +1213,7 @@ state Dead
TheViewTarget = Self; TheViewTarget = Self;
out_Location = TheViewTarget.Location; out_Location = TheViewTarget.Location;
EndOffset = out_Location-vector(Rotation)*400.f; EndOffset = out_Location-vector(Rotation)*400.f;
if (TheViewTarget.Trace(HL,HN,EndOffset,out_Location,false,vect(16,16,16))!=None) if (TheViewTarget.Trace(HL,HN,EndOffset,out_Location,false,vect(16,16,16))!=None)
out_Location = HL; out_Location = HL;
else out_Location = EndOffset; else out_Location = EndOffset;
@ -1239,7 +1239,7 @@ defaultproperties
MidGameMenuClass=class'UI_MidGameMenu' MidGameMenuClass=class'UI_MidGameMenu'
PerkList.Empty() PerkList.Empty()
PerkList.Add((PerkClass=Class'ExtPerkManager')) PerkList.Add((PerkClass=Class'ExtPerkManager'))
NVG_DOF_FocalDistance=3800.0 NVG_DOF_FocalDistance=3800.0
NVG_DOF_SharpRadius=2500.0 NVG_DOF_SharpRadius=2500.0
NVG_DOF_FocalRadius=3500.0 NVG_DOF_FocalRadius=3500.0

View File

@ -9,7 +9,7 @@ struct FCustomCharEntry
struct FMyCustomChar // Now without constant. struct FMyCustomChar // Now without constant.
{ {
var int CharacterIndex,HeadMeshIndex,HeadSkinIndex,BodyMeshIndex,BodySkinIndex,AttachmentMeshIndices[`MAX_COSMETIC_ATTACHMENTS],AttachmentSkinIndices[`MAX_COSMETIC_ATTACHMENTS]; var int CharacterIndex,HeadMeshIndex,HeadSkinIndex,BodyMeshIndex,BodySkinIndex,AttachmentMeshIndices[`MAX_COSMETIC_ATTACHMENTS],AttachmentSkinIndices[`MAX_COSMETIC_ATTACHMENTS];
structdefaultproperties structdefaultproperties
{ {
AttachmentMeshIndices[0]=`CLEARED_ATTACHMENT_INDEX AttachmentMeshIndices[0]=`CLEARED_ATTACHMENT_INDEX
@ -101,7 +101,7 @@ simulated function ClientInitialize(Controller C)
local ExtPlayerReplicationInfo PRI; local ExtPlayerReplicationInfo PRI;
Super.ClientInitialize(C); Super.ClientInitialize(C);
if (WorldInfo.NetMode!=NM_DedicatedServer) if (WorldInfo.NetMode!=NM_DedicatedServer)
{ {
LocalOwnerPRI = Self; LocalOwnerPRI = Self;
@ -189,7 +189,7 @@ simulated final function color PickPerkColor()
{ {
local float P; local float P;
local byte i; local byte i;
if (RepLevelProgress==0) if (RepLevelProgress==0)
return MakeColor(255,255,255,255); return MakeColor(255,255,255,255);
P = float(RepLevelProgress) / 255.f; P = float(RepLevelProgress) / 255.f;
@ -331,7 +331,7 @@ function ClearFixed()
simulated final function string GetDesc() simulated final function string GetDesc()
{ {
local string S; local string S;
if ((FixedData & 1)!=0) if ((FixedData & 1)!=0)
S = "A."; S = "A.";
if ((FixedData & 2)!=0) if ((FixedData & 2)!=0)
@ -595,13 +595,13 @@ final function SaveCustomCharacter(ExtSaveDataBase Data)
Data.SaveStr(S); Data.SaveStr(S);
if (S=="") if (S=="")
return; return;
// Write selected accessories. // Write selected accessories.
Data.SaveInt(CustomCharacter.HeadMeshIndex); Data.SaveInt(CustomCharacter.HeadMeshIndex);
Data.SaveInt(CustomCharacter.HeadSkinIndex); Data.SaveInt(CustomCharacter.HeadSkinIndex);
Data.SaveInt(CustomCharacter.BodyMeshIndex); Data.SaveInt(CustomCharacter.BodyMeshIndex);
Data.SaveInt(CustomCharacter.BodySkinIndex); Data.SaveInt(CustomCharacter.BodySkinIndex);
c = 0; c = 0;
for (i=0; i<`MAX_COSMETIC_ATTACHMENTS; ++i) for (i=0; i<`MAX_COSMETIC_ATTACHMENTS; ++i)
{ {
@ -611,7 +611,7 @@ final function SaveCustomCharacter(ExtSaveDataBase Data)
// Write attachments count. // Write attachments count.
Data.SaveInt(c); Data.SaveInt(c);
// Write attachments. // Write attachments.
for (i=0; i<`MAX_COSMETIC_ATTACHMENTS; ++i) for (i=0; i<`MAX_COSMETIC_ATTACHMENTS; ++i)
{ {
@ -639,7 +639,7 @@ final function LoadCustomCharacter(ExtSaveDataBase Data)
if (string(CharacterArchetypes[i].Name)~=S) if (string(CharacterArchetypes[i].Name)~=S)
break; break;
} }
if (i==CharacterArchetypes.Length) if (i==CharacterArchetypes.Length)
{ {
for (i=0; i<CustomCharList.Length; ++i) for (i=0; i<CustomCharList.Length; ++i)
@ -741,4 +741,4 @@ defaultproperties
RespawnCounter=-1 RespawnCounter=-1
AdminType=AT_Player AdminType=AT_Player
TaggedPlayerName="Player" TaggedPlayerName="Player"
} }

View File

@ -96,4 +96,4 @@ defaultproperties
FuseTime=0.35 FuseTime=0.35
NumCrackers=6 NumCrackers=6
bNetTemporary=true bNetTemporary=true
} }

View File

@ -58,4 +58,4 @@ defaultproperties
Damage=170 Damage=170
DamageRadius=800 DamageRadius=800
End Object End Object
} }

View File

@ -9,13 +9,13 @@ defaultproperties
bCanDisintegrate=false bCanDisintegrate=false
DrawScale=2.5 DrawScale=2.5
NumResidualFlames=10 NumResidualFlames=10
ResidualFlameProjClass=class'ExtProj_SUPERMolotovS' ResidualFlameProjClass=class'ExtProj_SUPERMolotovS'
// explosion // explosion
Begin Object Name=ExploTemplate0 Begin Object Name=ExploTemplate0
Damage=750 Damage=750
DamageRadius=500 DamageRadius=500
End Object End Object
} }

View File

@ -9,4 +9,4 @@ defaultproperties
Damage=40 Damage=40
DamageRadius=200 DamageRadius=200
End Object End Object
} }

View File

@ -12,7 +12,7 @@ function PlayAnimation()
PlaySpecialMoveAnim(AnimName, AnimStance, BlendInTime, BlendOutTime, 1.f); PlaySpecialMoveAnim(AnimName, AnimStance, BlendInTime, BlendOutTime, 1.f);
if (KFPOwner.Role == ROLE_Authority) if (KFPOwner.Role == ROLE_Authority)
{ {
KFGameInfo(KFPOwner.WorldInfo.Game).DialogManager.PlayDialogEvent(KFPOwner, 31); KFGameInfo(KFPOwner.WorldInfo.Game).DialogManager.PlayDialogEvent(KFPOwner, 31);
} }
@ -47,4 +47,5 @@ function PlayAnimation()
defaultproperties defaultproperties
{ {
} }

View File

@ -8,9 +8,9 @@ function SpawnProjectileShield()
defaultproperties defaultproperties
{ {
ExplosionActorClass=class'ExtExplosion_SirenScream' ExplosionActorClass=class'ExtExplosion_SirenScream'
// explosion // explosion
Begin Object Name=ExploTemplate0 Begin Object Name=ExploTemplate0
ActorClassToIgnoreForDamage=class'KFPawn_ZedSirenX' ActorClassToIgnoreForDamage=class'KFPawn_ZedSirenX'
End Object End Object
} }

View File

@ -8,7 +8,7 @@ var array<Actor> ValidSpawnSpots;
static final function ExtSpawnPointHelper FindHelper(WorldInfo Level) static final function ExtSpawnPointHelper FindHelper(WorldInfo Level)
{ {
local ExtSpawnPointHelper H; local ExtSpawnPointHelper H;
foreach Level.DynamicActors(class'ExtSpawnPointHelper',H) foreach Level.DynamicActors(class'ExtSpawnPointHelper',H)
return H; return H;
return Level.Spawn(class'ExtSpawnPointHelper'); return Level.Spawn(class'ExtSpawnPointHelper');
@ -20,7 +20,7 @@ final function Actor PickBestSpawn()
local KFPawn P; local KFPawn P;
local float Score,BestScore,Dist; local float Score,BestScore,Dist;
local KFPawn_Human H; local KFPawn_Human H;
BestN = None; BestN = None;
BestScore = 0; BestScore = 0;
foreach ValidSpawnSpots(N) foreach ValidSpawnSpots(N)
@ -132,7 +132,7 @@ final function CheckSpawn(NavigationPoint N)
ValidSpawnSpots.AddItem(N); ValidSpawnSpots.AddItem(N);
} }
CheckedList.AddItem(N); CheckedList.AddItem(N);
foreach N.PathList(R) foreach N.PathList(R)
{ {
E = R.GetEnd(); E = R.GetEnd();

View File

@ -2,7 +2,7 @@ class ExtTraderContainer_Filter extends KFGFxTraderContainer_Filter;
function SetPerkFilterData(byte FilterIndex) function SetPerkFilterData(byte FilterIndex)
{ {
local int i; local int i;
local GFxObject DataProvider; local GFxObject DataProvider;
local GFxObject FilterObject; local GFxObject FilterObject;
local ExtPlayerController KFPC; local ExtPlayerController KFPC;

View File

@ -52,4 +52,5 @@ function SetPerkList()
defaultproperties defaultproperties
{ {
} }

View File

@ -52,11 +52,11 @@ function RefreshWeaponListByPerk(byte FilterIndex, const out array<STraderItem>
case 0: //primary perk case 0: //primary perk
OnPerkWeapons.AddItem(ItemList[i]); OnPerkWeapons.AddItem(ItemList[i]);
break; break;
case 1: //secondary perk case 1: //secondary perk
SecondaryWeapons.AddItem(ItemList[i]); SecondaryWeapons.AddItem(ItemList[i]);
break; break;
default: //off perk default: //off perk
OffPerkWeapons.AddItem(ItemList[i]); OffPerkWeapons.AddItem(ItemList[i]);
break; break;
@ -68,7 +68,7 @@ function RefreshWeaponListByPerk(byte FilterIndex, const out array<STraderItem>
for (i = 0; i < OnPerkWeapons.length; i++) for (i = 0; i < OnPerkWeapons.length; i++)
{ {
SetItemInfo(ItemDataArray, OnPerkWeapons[i], SlotIndex); SetItemInfo(ItemDataArray, OnPerkWeapons[i], SlotIndex);
SlotIndex++; SlotIndex++;
} }
for (i = 0; i < SecondaryWeapons.length; i++) for (i = 0; i < SecondaryWeapons.length; i++)
@ -81,7 +81,7 @@ function RefreshWeaponListByPerk(byte FilterIndex, const out array<STraderItem>
{ {
SetItemInfo(ItemDataArray, OffPerkWeapons[i], SlotIndex); SetItemInfo(ItemDataArray, OffPerkWeapons[i], SlotIndex);
SlotIndex++; SlotIndex++;
} }
SetObject("shopData", ItemDataArray); SetObject("shopData", ItemDataArray);
} }

View File

@ -7,4 +7,4 @@ defaultproperties
AmmoPricePerMag=0 AmmoPricePerMag=0
WeaponClassPath="ServerExt.ExtWeap_Pistol_9mm" WeaponClassPath="ServerExt.ExtWeap_Pistol_9mm"
} }

View File

@ -16,4 +16,4 @@ defaultproperties
UpgradeSellPrice[1] = 0 UpgradeSellPrice[1] = 0
UpgradeSellPrice[2] = 0 UpgradeSellPrice[2] = 0
UpgradeSellPrice[3] = 0 UpgradeSellPrice[3] = 0
} }

View File

@ -4,7 +4,7 @@ defaultproperties
{ {
SpareAmmoCapacity[0]=-1 SpareAmmoCapacity[0]=-1
InitialSpareMags[0]=0 InitialSpareMags[0]=0
bInfiniteSpareAmmo=True bInfiniteSpareAmmo=True
// DualClass=class'ServerExt.ExtWeap_Pistol_MedicS' // DualClass=class'ServerExt.ExtWeap_Pistol_MedicS'
@ -35,4 +35,4 @@ simulated function KFPerk GetPerk()
if (KFPlayer != None) if (KFPlayer != None)
return KFPlayer.GetPerk(); return KFPlayer.GetPerk();
return super.GetPerk(); return super.GetPerk();
} }

View File

@ -4,7 +4,7 @@ defaultproperties
{ {
SpareAmmoCapacity[0]=-1 SpareAmmoCapacity[0]=-1
InitialSpareMags[0]=0 InitialSpareMags[0]=0
bInfiniteSpareAmmo=True bInfiniteSpareAmmo=True
SingleClass=class'ExtWeap_Pistol_9mm' SingleClass=class'ExtWeap_Pistol_9mm'
@ -19,7 +19,7 @@ simulated static function bool AllowedForAllPerks()
simulated function ConsumeAmmo(byte FireModeNum) simulated function ConsumeAmmo(byte FireModeNum)
{ {
} }
simulated static event class<KFPerk> GetWeaponPerkClass(class<KFPerk> InstigatorPerkClass) simulated static event class<KFPerk> GetWeaponPerkClass(class<KFPerk> InstigatorPerkClass)
@ -28,4 +28,4 @@ simulated static event class<KFPerk> GetWeaponPerkClass(class<KFPerk> Instigator
return InstigatorPerkClass; return InstigatorPerkClass;
return default.AssociatedPerkClasses[0]; return default.AssociatedPerkClasses[0];
} }

View File

@ -3,14 +3,14 @@ class ExtWeap_Pistol_MedicS extends KFWeap_Pistol_Medic;
defaultproperties defaultproperties
{ {
bCanThrow=false bCanThrow=false
SpareAmmoCapacity[0]=-1 SpareAmmoCapacity[0]=-1
InitialSpareMags[0]=0 InitialSpareMags[0]=0
bInfiniteSpareAmmo=True bInfiniteSpareAmmo=True
// Remove weight bcs of replacing 9mm // Remove weight bcs of replacing 9mm
InventorySize=0 InventorySize=0
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'ExtDT_Ballistic_Pistol_Medic' InstantHitDamageTypes(DEFAULT_FIREMODE)=class'ExtDT_Ballistic_Pistol_Medic'
WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.7f), (Stat=EWUS_HealFullRecharge, Scale=0.9f))) WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.7f), (Stat=EWUS_HealFullRecharge, Scale=0.9f)))
@ -43,4 +43,4 @@ simulated function KFPerk GetPerk()
if (KFPlayer != None) if (KFPlayer != None)
return KFPlayer.GetPerk(); return KFPlayer.GetPerk();
return super.GetPerk(); return super.GetPerk();
} }

View File

@ -25,7 +25,7 @@ static function array<MaterialInterface> GetWeaponSkin(int ItemId, EWeaponSkinTy
local array<MaterialInterface> Mats; local array<MaterialInterface> Mats;
local MaterialInterface LoadedMat; local MaterialInterface LoadedMat;
local string FirstPMat; local string FirstPMat;
i = default.Skins.Find('Id', ItemId); i = default.Skins.Find('Id', ItemId);
if (i > -1) if (i > -1)
{ {
@ -38,38 +38,38 @@ static function array<MaterialInterface> GetWeaponSkin(int ItemId, EWeaponSkinTy
if (LoadedMat != None) if (LoadedMat != None)
Mats.AddItem(LoadedMat); Mats.AddItem(LoadedMat);
} }
break; break;
case WST_ThirdPerson: case WST_ThirdPerson:
LoadedMat = MaterialInterface(DynamicLoadObject(default.Skins[i].MIC_3P, class'MaterialInterface')); LoadedMat = MaterialInterface(DynamicLoadObject(default.Skins[i].MIC_3P, class'MaterialInterface'));
if (LoadedMat != None) if (LoadedMat != None)
Mats.AddItem(LoadedMat); Mats.AddItem(LoadedMat);
break; break;
case WST_Pickup: case WST_Pickup:
LoadedMat = MaterialInterface(DynamicLoadObject(default.Skins[i].MIC_Pickup, class'MaterialInterface')); LoadedMat = MaterialInterface(DynamicLoadObject(default.Skins[i].MIC_Pickup, class'MaterialInterface'));
if (LoadedMat != None) if (LoadedMat != None)
Mats.AddItem(LoadedMat); Mats.AddItem(LoadedMat);
break; break;
} }
} }
return Mats; return Mats;
} }
static function SaveWeaponSkin(class<KFWeaponDefinition> WeaponDef, int ID, ExtPlayerController PC) static function SaveWeaponSkin(class<KFWeaponDefinition> WeaponDef, int ID, ExtPlayerController PC)
{ {
local int ALen, i; local int ALen, i;
i = PC.SavedWeaponSkins.Find('WepDef', WeaponDef); i = PC.SavedWeaponSkins.Find('WepDef', WeaponDef);
if (i > -1) if (i > -1)
PC.SavedWeaponSkins.Remove(i, 1); PC.SavedWeaponSkins.Remove(i, 1);
ALen = PC.SavedWeaponSkins.Length; ALen = PC.SavedWeaponSkins.Length;
PC.SavedWeaponSkins[ALen].ID = ID; PC.SavedWeaponSkins[ALen].ID = ID;
PC.SavedWeaponSkins[ALen].WepDef = WeaponDef; PC.SavedWeaponSkins[ALen].WepDef = WeaponDef;
PC.SaveConfig(); PC.SaveConfig();
} }
@ -1107,7 +1107,7 @@ defaultproperties
Skins.Add((Id=4815, Weapondef=class'KFWeapDef_FlareGun', MIC_1P=("WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_1P_Mint_MIC"), MIC_3P="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Pickup_MIC")) Skins.Add((Id=4815, Weapondef=class'KFWeapDef_FlareGun', MIC_1P=("WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_1P_Mint_MIC"), MIC_3P="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Pickup_MIC"))
Skins.Add((Id=4814, Weapondef=class'KFWeapDef_FlareGun', MIC_1P=("WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Pickup_MIC")) Skins.Add((Id=4814, Weapondef=class'KFWeapDef_FlareGun', MIC_1P=("WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Pickup_MIC"))
Skins.Add((Id=4813, Weapondef=class'KFWeapDef_FlareGun', MIC_1P=("WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Pickup_MIC")) Skins.Add((Id=4813, Weapondef=class'KFWeapDef_FlareGun', MIC_1P=("WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Pickup_MIC"))
//Vietnam AK12 //Vietnam AK12
Skins.Add((Id=4970, Weapondef=class'KFWeapDef_Ak12', MIC_1P=("WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_1P_Mint_MIC", "WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_Pickup_MIC")) Skins.Add((Id=4970, Weapondef=class'KFWeapDef_Ak12', MIC_1P=("WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_1P_Mint_MIC", "WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_Pickup_MIC"))
Skins.Add((Id=4969, Weapondef=class'KFWeapDef_Ak12', MIC_1P=("WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_1P_FieldTested_MIC", "WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_Pickup_MIC")) Skins.Add((Id=4969, Weapondef=class'KFWeapDef_Ak12', MIC_1P=("WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_1P_FieldTested_MIC", "WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_Pickup_MIC"))
@ -1347,5 +1347,4 @@ defaultproperties
Skins.Add((Id=5303, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_1P_Mint_MIC"), MIC_3P="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Pickup_MIC")) Skins.Add((Id=5303, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_1P_Mint_MIC"), MIC_3P="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Pickup_MIC"))
Skins.Add((Id=5302, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Pickup_MIC")) Skins.Add((Id=5302, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Pickup_MIC"))
Skins.Add((Id=5301, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Pickup_MIC")) Skins.Add((Id=5301, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Pickup_MIC"))
} }

View File

@ -15,7 +15,7 @@ struct FWebAdminConfigInfo
var name PropName; var name PropName;
var string UIName,UIDesc; var string UIName,UIDesc;
var int NumElements; var int NumElements;
structdefaultproperties structdefaultproperties
{ {
NumElements=1 NumElements=1
@ -44,7 +44,7 @@ final function Cleanup()
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;
i = ConfigList.Find('PageName',PageName); i = ConfigList.Find('PageName',PageName);
if (i>=0) // Make sure no dupe pages. if (i>=0) // Make sure no dupe pages.
PageName $= "_"$(ConfigList[i].Dupes++); PageName $= "_"$(ConfigList[i].Dupes++);

View File

@ -6,7 +6,7 @@ var byte PPerkLevels[6];
struct ExtMemberSlotStruct struct ExtMemberSlotStruct
{ {
var class<Ext_PerkBase> PerkClass; var class<Ext_PerkBase> PerkClass;
structdefaultproperties structdefaultproperties
{ {
PerkClass=none PerkClass=none
@ -16,7 +16,7 @@ var ExtMemberSlotStruct ExtMemberSlots[13];
function GFxObject RefreshSlot(int SlotIndex, KFPlayerReplicationInfo KFPRI) function GFxObject RefreshSlot(int SlotIndex, KFPlayerReplicationInfo KFPRI)
{ {
local string PlayerName; local string PlayerName;
local UniqueNetId AdminId; local UniqueNetId AdminId;
local bool bIsLeader; local bool bIsLeader;
local bool bIsMyPlayer; local bool bIsMyPlayer;
@ -26,7 +26,7 @@ function GFxObject RefreshSlot(int SlotIndex, KFPlayerReplicationInfo KFPRI)
PlayerInfoObject = CreateObject("Object"); PlayerInfoObject = CreateObject("Object");
EPC = ExtPlayerController(GetPC()); EPC = ExtPlayerController(GetPC());
if (KFPRI != none) if (KFPRI != none)
{ {
EPRI = ExtPlayerReplicationInfo(KFPRI); EPRI = ExtPlayerReplicationInfo(KFPRI);
@ -45,12 +45,12 @@ function GFxObject RefreshSlot(int SlotIndex, KFPlayerReplicationInfo KFPRI)
PerkIconObject = CreateObject("Object"); PerkIconObject = CreateObject("Object");
PerkIconObject.SetString("perkIcon", ExtMemberSlots[SlotIndex].PerkClass.static.GetPerkIconPath(EPRI.ECurrentPerkLevel)); PerkIconObject.SetString("perkIcon", ExtMemberSlots[SlotIndex].PerkClass.static.GetPerkIconPath(EPRI.ECurrentPerkLevel));
PlayerInfoObject.SetObject("perkImageSource", PerkIconObject); PlayerInfoObject.SetObject("perkImageSource", PerkIconObject);
PlayerInfoObject.SetString("perkLevel", string(EPRI.ECurrentPerkLevel)); PlayerInfoObject.SetString("perkLevel", string(EPRI.ECurrentPerkLevel));
} }
if (!bIsMyPlayer) if (!bIsMyPlayer)
{ {
PlayerInfoObject.SetBool("muted", EPC.IsPlayerMuted(EPRI.UniqueId)); PlayerInfoObject.SetBool("muted", EPC.IsPlayerMuted(EPRI.UniqueId));
} }
if (class'WorldInfo'.static.IsE3Build()) if (class'WorldInfo'.static.IsE3Build())
{ {
@ -68,13 +68,13 @@ function GFxObject RefreshSlot(int SlotIndex, KFPlayerReplicationInfo KFPRI)
else else
{ {
PlayerInfoObject.SetString("profileImageSource", "img://"$KFPC.GetSteamAvatar(EPRI.UniqueId)); PlayerInfoObject.SetString("profileImageSource", "img://"$KFPC.GetSteamAvatar(EPRI.UniqueId));
} }
if (KFGRI != none) if (KFGRI != none)
{ {
PlayerInfoObject.SetBool("ready", EPRI.bReadyToPlay && !KFGRI.bMatchHasBegun); PlayerInfoObject.SetBool("ready", EPRI.bReadyToPlay && !KFGRI.bMatchHasBegun);
} }
return PlayerInfoObject; return PlayerInfoObject;
} }
defaultproperties defaultproperties

View File

@ -7,7 +7,7 @@ final function vector PickPointNearOwner()
{ {
local byte i; local byte i;
local vector V,HL,HN,Start; local vector V,HL,HN,Start;
Start = OwnerPawn.Location; Start = OwnerPawn.Location;
if (OwnerPawn.Physics==PHYS_Falling) if (OwnerPawn.Physics==PHYS_Falling)
{ {
@ -20,10 +20,10 @@ final function vector PickPointNearOwner()
V.X = FRand()-0.5; V.X = FRand()-0.5;
V.Y = FRand()-0.5; V.Y = FRand()-0.5;
V = Start + Normal2D(V) * (100.f+FRand()*500.f); V = Start + Normal2D(V) * (100.f+FRand()*500.f);
if (i<20 && !FastTrace(V,Start)) // Destination is inside a wall. if (i<20 && !FastTrace(V,Start)) // Destination is inside a wall.
continue; continue;
if (i<20 && FastTrace(V-vect(0,0,100),V)) // Destination is above a pit. if (i<20 && FastTrace(V-vect(0,0,100),V)) // Destination is above a pit.
continue; continue;
break; break;
@ -35,7 +35,7 @@ final function vector PickPointNearOwner()
final function bool CanSeeOwner() final function bool CanSeeOwner()
{ {
local Pawn P; local Pawn P;
NextSightCheckTime = WorldInfo.TimeSeconds+1.f + FRand(); NextSightCheckTime = WorldInfo.TimeSeconds+1.f + FRand();
P = Ext_T_MonsterPRI(PlayerReplicationInfo)!=None ? Ext_T_MonsterPRI(PlayerReplicationInfo).OwnerController.Pawn : None; P = Ext_T_MonsterPRI(PlayerReplicationInfo)!=None ? Ext_T_MonsterPRI(PlayerReplicationInfo).OwnerController.Pawn : None;
if (P!=None && !LineOfSightTo(P)) if (P!=None && !LineOfSightTo(P))
@ -66,7 +66,7 @@ Begin:
UpdateHistoryString("[Attacking : "$DoorEnemy$" at "$WorldInfo.TimeSeconds$"]"); UpdateHistoryString("[Attacking : "$DoorEnemy$" at "$WorldInfo.TimeSeconds$"]");
class'AICommand_Attack_Melee'.static.Melee(Outer, DoorEnemy); class'AICommand_Attack_Melee'.static.Melee(Outer, DoorEnemy);
} }
// See if we are close to our owner // See if we are close to our owner
RecheckOwner: RecheckOwner:
OwnerPawn = None; OwnerPawn = None;
@ -80,7 +80,7 @@ RecheckOwner:
if (Enemy!=None && LineOfSightTo(OwnerPawn) && LineOfSightTo(Enemy)) // We have sight to our owner and can see enemy, go for it! if (Enemy!=None && LineOfSightTo(OwnerPawn) && LineOfSightTo(Enemy)) // We have sight to our owner and can see enemy, go for it!
{ {
OwnerPawn = None; OwnerPawn = None;
bWaitingOnMovementPlugIn = true; bWaitingOnMovementPlugIn = true;
SetEnemyMoveGoal(self, true,,, ShouldAttackWhileMoving()); SetEnemyMoveGoal(self, true,,, ShouldAttackWhileMoving());
NextSightCheckTime = WorldInfo.TimeSeconds+2.f; NextSightCheckTime = WorldInfo.TimeSeconds+2.f;

View File

@ -7,6 +7,7 @@ function SpecialMoveStarted(bool bForced, Name PrevMove)
function SpecialMoveEnded(Name PrevMove, Name NextMove) function SpecialMoveEnded(Name PrevMove, Name NextMove)
{ {
} }
defaultproperties defaultproperties

View File

@ -155,7 +155,7 @@ simulated final function bool IsWeaponOnPerk(KFWeapon W)
//if (W.AllowedForAllPerks()) //if (W.AllowedForAllPerks())
// return true; // return true;
return W!=None && W.GetWeaponPerkClass(BasePerk)==BasePerk; return W!=None && W.GetWeaponPerkClass(BasePerk)==BasePerk;
} }
@ -186,7 +186,7 @@ simulated function PostBeginPlay()
return; return;
} }
bOwnerNetClient = (PlayerController(Owner)!=None && LocalPlayer(PlayerController(Owner).Player)==None); bOwnerNetClient = (PlayerController(Owner)!=None && LocalPlayer(PlayerController(Owner).Player)==None);
// Load trait classes. // Load trait classes.
j = 0; j = 0;
for (i=0; i<TraitClasses.Length; ++i) for (i=0; i<TraitClasses.Length; ++i)
@ -198,7 +198,7 @@ simulated function PostBeginPlay()
PerkTraits[j].TraitType = T; PerkTraits[j].TraitType = T;
++j; ++j;
} }
// Setup serverside stat info (for XML log files). // Setup serverside stat info (for XML log files).
for (j=0; j<PerkStats.Length; ++j) for (j=0; j<PerkStats.Length; ++j)
{ {
@ -327,7 +327,7 @@ reliable client simulated function ClientReceiveTraitLvl(int Index, byte NewLeve
final function SetPerkStat(name Type, int Value) final function SetPerkStat(name Type, int Value)
{ {
local int i; local int i;
i = PerkStats.Find('StatType',Type); i = PerkStats.Find('StatType',Type);
if (i>=0) if (i>=0)
PerkStats[i].CurrentValue = Value; PerkStats[i].CurrentValue = Value;
@ -336,7 +336,7 @@ final function SetPerkStat(name Type, int Value)
final function int GetPerkStat(name Type) final function int GetPerkStat(name Type)
{ {
local int i; local int i;
i = PerkStats.Find('StatType',Type); i = PerkStats.Find('StatType',Type);
if (i==-1) if (i==-1)
return 0; return 0;
@ -385,7 +385,7 @@ function OutputXML(ExtStatWriter Data)
Data.WriteValue("points",string(CurrentSP)); Data.WriteValue("points",string(CurrentSP));
Data.WriteValue("exptilnext",string(NextLevelEXP)); Data.WriteValue("exptilnext",string(NextLevelEXP));
Data.WriteValue("exponprev",string(LastLevelEXP)); Data.WriteValue("exponprev",string(LastLevelEXP));
for (i=0; i<PerkStats.Length; ++i) for (i=0; i<PerkStats.Length; ++i)
{ {
if (PerkStats[i].CurrentValue>0) if (PerkStats[i].CurrentValue>0)
@ -397,7 +397,7 @@ function OutputXML(ExtStatWriter Data)
Data.EndIntendent(); Data.EndIntendent();
} }
} }
for (i=0; i<PerkTraits.Length; ++i) for (i=0; i<PerkTraits.Length; ++i)
{ {
if (PerkTraits[i].CurrentLevel>0) if (PerkTraits[i].CurrentLevel>0)
@ -416,10 +416,10 @@ function OutputXML(ExtStatWriter Data)
function SaveData(ExtSaveDataBase Data) function SaveData(ExtSaveDataBase Data)
{ {
local int i,j; local int i,j;
// Write current EXP. // Write current EXP.
Data.SaveInt(CurrentEXP,3); Data.SaveInt(CurrentEXP,3);
// Write current prestige // Write current prestige
Data.SaveInt(CurrentPrestige,3); Data.SaveInt(CurrentPrestige,3);
@ -439,7 +439,7 @@ function SaveData(ExtSaveDataBase Data)
Data.SaveInt(PerkStats[i].CurrentValue,1); Data.SaveInt(PerkStats[i].CurrentValue,1);
} }
} }
// Count bought traits. // Count bought traits.
j = 0; j = 0;
for (i=0; i<PerkTraits.Length; ++i) for (i=0; i<PerkTraits.Length; ++i)
@ -471,7 +471,7 @@ function LoadData(ExtSaveDataBase Data)
// if (i > CurrentEXP) // if (i > CurrentEXP)
// CurrentEXP = i // CurrentEXP = i
// } // }
if (Data.GetArVer()>=1) if (Data.GetArVer()>=1)
CurrentPrestige = Data.ReadInt(3); CurrentPrestige = Data.ReadInt(3);
@ -487,7 +487,7 @@ function LoadData(ExtSaveDataBase Data)
break; break;
} }
} }
l = Data.ReadInt(); // Traits stats length. l = Data.ReadInt(); // Traits stats length.
for (i=0; i<l; ++i) for (i=0; i<l; ++i)
{ {
@ -543,7 +543,7 @@ function SetInitialLevel()
CurrentSP = CurrentLevel*(StarPointsPerLevel+CurrentPrestige*PrestigeSPIncrease); CurrentSP = CurrentLevel*(StarPointsPerLevel+CurrentPrestige*PrestigeSPIncrease);
NextLevelEXP = GetNeededExp(CurrentLevel); NextLevelEXP = GetNeededExp(CurrentLevel);
LastLevelEXP = (CurrentLevel>MinimumLevel ? GetNeededExp(CurrentLevel-1) : 0); LastLevelEXP = (CurrentLevel>MinimumLevel ? GetNeededExp(CurrentLevel-1) : 0);
// Now verify the points player used on individual stats. // Now verify the points player used on individual stats.
for (i=0; i<PerkStats.Length; ++i) for (i=0; i<PerkStats.Length; ++i)
{ {
@ -571,7 +571,7 @@ function SetInitialLevel()
if (PerkTraits[i].CurrentLevel>0) if (PerkTraits[i].CurrentLevel>0)
{ {
PerkTraits[i].CurrentLevel = Min(PerkTraits[i].CurrentLevel,PerkTraits[i].TraitType.Default.NumLevels); PerkTraits[i].CurrentLevel = Min(PerkTraits[i].CurrentLevel,PerkTraits[i].TraitType.Default.NumLevels);
if (PerkTraits[i].TraitType.Default.LoadPriority>0) if (PerkTraits[i].TraitType.Default.LoadPriority>0)
MT = Max(MT,PerkTraits[i].TraitType.Default.LoadPriority); MT = Max(MT,PerkTraits[i].TraitType.Default.LoadPriority);
else else
@ -596,7 +596,7 @@ function SetInitialLevel()
if (PerkTraits[i].CurrentLevel==0 && PerkTraits[i].Data!=None) if (PerkTraits[i].CurrentLevel==0 && PerkTraits[i].Data!=None)
PerkTraits[i].TraitType.Static.CleanupTrait(ExtPlayerController(Owner),Self,PerkTraits[i].Data); PerkTraits[i].TraitType.Static.CleanupTrait(ExtPlayerController(Owner),Self,PerkTraits[i].Data);
} }
// Delayed loads. // Delayed loads.
for (j=1; j<=MT; ++j) for (j=1; j<=MT; ++j)
{ {
@ -674,14 +674,14 @@ static function UpdateConfigs(int OldVer)
Default.MinimumLevel = 0; Default.MinimumLevel = 0;
Default.MaximumLevel = 150; Default.MaximumLevel = 150;
Default.StarPointsPerLevel = 15; Default.StarPointsPerLevel = 15;
// Prestige. // Prestige.
Default.MinLevelForPrestige = 140; Default.MinLevelForPrestige = 140;
Default.PrestigeSPIncrease = 1; Default.PrestigeSPIncrease = 1;
Default.MaxPrestige = 20; Default.MaxPrestige = 20;
Default.MinimalDataLevel = 0; Default.MinimalDataLevel = 0;
Default.PrestigeXPReduce = 0.05; Default.PrestigeXPReduce = 0.05;
Default.PerkStats.Length = 0; Default.PerkStats.Length = 0;
AddStatsCfg(0); AddStatsCfg(0);
Default.TraitClasses.Length = Default.DefTraitList.Length; Default.TraitClasses.Length = Default.DefTraitList.Length;
@ -754,7 +754,7 @@ static function InitWebAdmin(ExtWebAdmin_UI UI)
local int i; local int i;
UI.AddSettingsPage("Perk "$Default.PerkName,Default.Class,Default.WebConfigs,GetValue,ApplyValue); UI.AddSettingsPage("Perk "$Default.PerkName,Default.Class,Default.WebConfigs,GetValue,ApplyValue);
for (i=0; i<Default.TraitClasses.Length; ++i) for (i=0; i<Default.TraitClasses.Length; ++i)
{ {
T = class<Ext_TraitBase>(DynamicLoadObject(Default.TraitClasses[i],Class'Class')); T = class<Ext_TraitBase>(DynamicLoadObject(Default.TraitClasses[i],Class'Class'));
@ -887,7 +887,7 @@ function bool IncrementStat(int iStat, int Amount)
simulated function ApplyEffects() simulated function ApplyEffects()
{ {
local int i; local int i;
for (i=0; i<PerkStats.Length; ++i) for (i=0; i<PerkStats.Length; ++i)
{ {
if (PerkStats[i].CurrentValue!=PerkStats[i].OldValue) if (PerkStats[i].CurrentValue!=PerkStats[i].OldValue)
@ -903,7 +903,7 @@ function ApplyEffectsTo(KFPawn_Human P)
{ {
local int i; local int i;
local bool bSec; local bool bSec;
for (i=0; i<PerkTraits.Length; ++i) for (i=0; i<PerkTraits.Length; ++i)
{ {
if (PerkTraits[i].CurrentLevel>0) if (PerkTraits[i].CurrentLevel>0)
@ -929,7 +929,7 @@ function ActivateTraits()
local int i; local int i;
local KFPawn_Human KFP; local KFPawn_Human KFP;
local bool bSec; local bool bSec;
KFP = KFPawn_Human(PlayerOwner.Pawn); KFP = KFPawn_Human(PlayerOwner.Pawn);
if (KFP!=None && !KFP.IsAliveAndWell()) if (KFP!=None && !KFP.IsAliveAndWell())
KFP = None; KFP = None;
@ -961,7 +961,7 @@ function ActivateTraits()
function DeactivateTraits() function DeactivateTraits()
{ {
local int i; local int i;
for (i=0; i<PerkTraits.Length; ++i) for (i=0; i<PerkTraits.Length; ++i)
{ {
if (PerkTraits[i].CurrentLevel>0) if (PerkTraits[i].CurrentLevel>0)
@ -1114,7 +1114,7 @@ function FullReset(optional bool bNotPrestige)
CurrentSP = CurrentLevel*(StarPointsPerLevel+CurrentPrestige*PrestigeSPIncrease); CurrentSP = CurrentLevel*(StarPointsPerLevel+CurrentPrestige*PrestigeSPIncrease);
NextLevelEXP = GetNeededExp(CurrentLevel); NextLevelEXP = GetNeededExp(CurrentLevel);
LastLevelEXP = 0; LastLevelEXP = 0;
if (PerkManager.CurrentPerk==Self && PerkManager.PRIOwner!=None) if (PerkManager.CurrentPerk==Self && PerkManager.PRIOwner!=None)
{ {
PerkManager.PRIOwner.SetLevelProgress(CurrentLevel,CurrentPrestige,MinimumLevel,MaximumLevel); PerkManager.PRIOwner.SetLevelProgress(CurrentLevel,CurrentPrestige,MinimumLevel,MaximumLevel);
@ -1127,7 +1127,7 @@ function FullReset(optional bool bNotPrestige)
function bool PreventDeath(KFPawn_Human Player, Controller Killer, Class<DamageType> DamType) function bool PreventDeath(KFPawn_Human Player, Controller Killer, Class<DamageType> DamType)
{ {
local int i; local int i;
// Doing 2 passes of this so that things don't go out of order (spawn retaliation effect when you get redeemed etc) // Doing 2 passes of this so that things don't go out of order (spawn retaliation effect when you get redeemed etc)
for (i=0; i<PerkTraits.Length; ++i) for (i=0; i<PerkTraits.Length; ++i)
{ {
@ -1160,7 +1160,7 @@ simulated function PlayerDied()
simulated function float ApplyEffect(name Type, float Value, float Progress) simulated function float ApplyEffect(name Type, float Value, float Progress)
{ {
local bool bActivePerk; local bool bActivePerk;
bActivePerk = (PerkManager!=None && PerkManager.CurrentPerk==Self); bActivePerk = (PerkManager!=None && PerkManager.CurrentPerk==Self);
switch (Type) switch (Type)
{ {
@ -1243,7 +1243,7 @@ simulated function float ApplyEffect(name Type, float Value, float Progress)
break; break;
case 'Switch': case 'Switch':
Modifiers[21] = 1.f / (1.f+Value*Progress); Modifiers[21] = 1.f / (1.f+Value*Progress);
break; break;
} }
return (Value*Progress); return (Value*Progress);
} }
@ -1301,7 +1301,7 @@ simulated function float GetReloadRateScale(KFWeapon KFW)
} }
simulated function float GetCameraViewShakeModifier(KFWeapon KFW) simulated function float GetCameraViewShakeModifier(KFWeapon KFW)
{ {
return Modifiers[2]; return Modifiers[2];
} }
@ -1341,7 +1341,7 @@ function AddDefaultInventory(KFPawn P)
P.DefaultInventory.AddItem(PrimaryMelee); P.DefaultInventory.AddItem(PrimaryMelee);
if (KFInventoryManager(P.InvManager)!=None) if (KFInventoryManager(P.InvManager)!=None)
KFInventoryManager(P.InvManager).MaxCarryBlocks = KFInventoryManager(P.InvManager).Default.MaxCarryBlocks+Modifiers[10]; KFInventoryManager(P.InvManager).MaxCarryBlocks = KFInventoryManager(P.InvManager).Default.MaxCarryBlocks+Modifiers[10];
for (i=0; i<PerkTraits.Length; ++i) for (i=0; i<PerkTraits.Length; ++i)
{ {
if (PerkTraits[i].CurrentLevel>0) if (PerkTraits[i].CurrentLevel>0)
@ -1409,7 +1409,7 @@ simulated final function DrawEnemyHealth(Canvas C)
{ {
local KFPawn_Monster KFPM; local KFPawn_Monster KFPM;
local vector X,CameraLocation; local vector X,CameraLocation;
X = vector(PlayerOwner.Pawn.GetViewRotation()); X = vector(PlayerOwner.Pawn.GetViewRotation());
CameraLocation = PlayerOwner.Pawn.GetPawnViewLocation(); CameraLocation = PlayerOwner.Pawn.GetPawnViewLocation();
@ -1515,11 +1515,11 @@ defaultproperties
WeldExpUpNum=180 WeldExpUpNum=180
ToxicDartDamage=15 ToxicDartDamage=15
NetPriority=4 NetPriority=4
SecondaryWeaponDef=class'KFWeapDef_9mm' SecondaryWeaponDef=class'KFWeapDef_9mm'
KnifeWeaponDef=class'KFWeapDef_Knife_Commando' KnifeWeaponDef=class'KFWeapDef_Knife_Commando'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Support' GrenadeWeaponDef=class'KFWeapDef_Grenade_Support'
DefTraitList.Add(class'Ext_TraitGrenadeUpg') DefTraitList.Add(class'Ext_TraitGrenadeUpg')
DefTraitList.Add(class'Ext_TraitNightvision') DefTraitList.Add(class'Ext_TraitNightvision')
DefTraitList.Add(class'Ext_TraitAmmoReg') DefTraitList.Add(class'Ext_TraitAmmoReg')
@ -1553,7 +1553,7 @@ defaultproperties
WebConfigs.Add((PropType=0,PropName="MaxPrestige",UIName="Max Prestige",UIDesc="Maximum prestige level")) WebConfigs.Add((PropType=0,PropName="MaxPrestige",UIName="Max Prestige",UIDesc="Maximum prestige level"))
WebConfigs.Add((PropType=0,PropName="PrestigeXPReduce",UIName="Prestige XP Reduce",UIDesc="Percent amount of XP cost is reduced for each prestige (1.0 = 1/2, or 50 % of XP)")) WebConfigs.Add((PropType=0,PropName="PrestigeXPReduce",UIName="Prestige XP Reduce",UIDesc="Percent amount of XP cost is reduced for each prestige (1.0 = 1/2, or 50 % of XP)"))
// WebConfigs.Add((PropType=0,PropName="MinimalDataLevel",UIName="Minimal Real Level",UIDesc="Minimal level for new players or who loads from saves")) // WebConfigs.Add((PropType=0,PropName="MinimalDataLevel",UIName="Minimal Real Level",UIDesc="Minimal level for new players or who loads from saves"))
DefPerkStats(0)=(MaxValue=50,CostPerValue=1,StatType="Speed",Progress=0.4) DefPerkStats(0)=(MaxValue=50,CostPerValue=1,StatType="Speed",Progress=0.4)
DefPerkStats(1)=(MaxValue=1000,CostPerValue=1,StatType="Damage",Progress=0.5) DefPerkStats(1)=(MaxValue=1000,CostPerValue=1,StatType="Damage",Progress=0.5)
DefPerkStats(2)=(MaxValue=90,CostPerValue=1,StatType="Recoil",Progress=1) DefPerkStats(2)=(MaxValue=90,CostPerValue=1,StatType="Recoil",Progress=1)
@ -1599,7 +1599,7 @@ defaultproperties
Modifiers.Add(0.f) Modifiers.Add(0.f)
Modifiers.Add(1.f) Modifiers.Add(1.f)
Modifiers.Add(1.f) Modifiers.Add(1.f)
EnemyDistDraw.Add(500) EnemyDistDraw.Add(500)
EnemyDistDraw.Add(700) EnemyDistDraw.Add(700)
EnemyDistDraw.Add(1000) EnemyDistDraw.Add(1000)

View File

@ -45,12 +45,12 @@ defaultproperties
PrimaryMelee=class'KFWeap_Knife_Berserker' PrimaryMelee=class'KFWeap_Knife_Berserker'
PrimaryWeapon=class'KFWeap_Blunt_Crovel' PrimaryWeapon=class'KFWeap_Blunt_Crovel'
PerkGrenade=class'KFProj_EMPGrenade' PerkGrenade=class'KFProj_EMPGrenade'
PrimaryWeaponDef=class'KFWeapDef_Crovel' PrimaryWeaponDef=class'KFWeapDef_Crovel'
KnifeWeaponDef=class'KFweapDef_Knife_Berserker' KnifeWeaponDef=class'KFweapDef_Knife_Berserker'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Berserker' GrenadeWeaponDef=class'KFWeapDef_Grenade_Berserker'
AutoBuyLoadOutPath=(class'KFWeapDef_Crovel', class'KFWeapDef_Nailgun', class'KFWeapDef_Pulverizer', class'KFWeapDef_Eviscerator') AutoBuyLoadOutPath=(class'KFWeapDef_Crovel', class'KFWeapDef_Nailgun', class'KFWeapDef_Pulverizer', class'KFWeapDef_Eviscerator')
ZedTimeMeleeAtkRate=1.0 ZedTimeMeleeAtkRate=1.0
} }

View File

@ -22,7 +22,7 @@ simulated function ModifyDamageGiven(out int InDamage, optional Actor DamageCaus
if (bUseMachineGunner && WorldInfo.TimeDilation < 1.f) if (bUseMachineGunner && WorldInfo.TimeDilation < 1.f)
InDamage += InDamage * 0.03; InDamage += InDamage * 0.03;
} }
Super.ModifyDamageGiven(InDamage, DamageCauser, MyKFPM, DamageInstigator, DamageType, HitZoneIdx); Super.ModifyDamageGiven(InDamage, DamageCauser, MyKFPM, DamageInstigator, DamageType, HitZoneIdx);
} }
@ -61,7 +61,7 @@ defaultproperties
DefTraitList.Add(class'Ext_TraitTactician') DefTraitList.Add(class'Ext_TraitTactician')
DefTraitList.Add(class'Ext_TraitMachineGunner') DefTraitList.Add(class'Ext_TraitMachineGunner')
BasePerk=class'KFPerk_Commando' BasePerk=class'KFPerk_Commando'
ZTExtCount=1.f; ZTExtCount=1.f;
PrimaryMelee=class'KFWeap_Knife_Commando' PrimaryMelee=class'KFWeap_Knife_Commando'
@ -71,6 +71,6 @@ defaultproperties
PrimaryWeaponDef=class'KFWeapDef_AR15' PrimaryWeaponDef=class'KFWeapDef_AR15'
KnifeWeaponDef=class'KFweapDef_Knife_Commando' KnifeWeaponDef=class'KFweapDef_Knife_Commando'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Commando' GrenadeWeaponDef=class'KFWeapDef_Grenade_Commando'
AutoBuyLoadOutPath=(class'KFWeapDef_AR15', class'KFWeapDef_Bullpup', class'KFWeapDef_AK12', class'KFWeapDef_SCAR') AutoBuyLoadOutPath=(class'KFWeapDef_AR15', class'KFWeapDef_Bullpup', class'KFWeapDef_AK12', class'KFWeapDef_SCAR')
} }

View File

@ -25,13 +25,13 @@ simulated function float ApplyEffect(name Type, float Value, float Progress)
{ {
local KFPlayerReplicationInfo MyPRI; local KFPlayerReplicationInfo MyPRI;
local float DefValue; local float DefValue;
DefValue = Super.ApplyEffect(Type, Value, Progress); DefValue = Super.ApplyEffect(Type, Value, Progress);
MyPRI = KFPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo); MyPRI = KFPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo);
if (MyPRI != None && Type == 'KnockDown') if (MyPRI != None && Type == 'KnockDown')
MyPRI.bConcussiveActive = Modifiers[7] > 1.5; MyPRI.bConcussiveActive = Modifiers[7] > 1.5;
return DefValue; return DefValue;
} }
@ -50,10 +50,10 @@ simulated function ModifyDamageGiven(out int InDamage, optional Actor DamageCaus
if (bCriticalHit && MyKFPM != none && IsCriticalHitZone(MyKFPM, HitZoneIdx)) if (bCriticalHit && MyKFPM != none && IsCriticalHitZone(MyKFPM, HitZoneIdx))
InDamage *= 1.5f; InDamage *= 1.5f;
} }
if (class<KFDT_DemoNuke_Toxic_Lingering>(DamageType) != None) if (class<KFDT_DemoNuke_Toxic_Lingering>(DamageType) != None)
InDamage *= NukeDamageMult; InDamage *= NukeDamageMult;
Super.ModifyDamageGiven(InDamage, DamageCauser, MyKFPM, DamageInstigator, DamageType, HitZoneIdx); Super.ModifyDamageGiven(InDamage, DamageCauser, MyKFPM, DamageInstigator, DamageType, HitZoneIdx);
} }
@ -69,7 +69,7 @@ simulated function ModifySpareAmmoAmount(KFWeapon KFW, out int PrimarySpareAmmo,
{ {
if (KFW != None && KFWeap_Thrown_C4(KFW) != None) if (KFW != None && KFWeap_Thrown_C4(KFW) != None)
PrimarySpareAmmo += (1 + Modifiers[11]); PrimarySpareAmmo += (1 + Modifiers[11]);
Super.ModifySpareAmmoAmount(KFW, PrimarySpareAmmo, TraderItem, bSecondary); Super.ModifySpareAmmoAmount(KFW, PrimarySpareAmmo, TraderItem, bSecondary);
} }
@ -88,20 +88,20 @@ defaultproperties
DefTraitList.Add(class'Ext_TraitDemoNuke') DefTraitList.Add(class'Ext_TraitDemoNuke')
DefTraitList.Add(class'Ext_TraitDemoProfessional') DefTraitList.Add(class'Ext_TraitDemoProfessional')
BasePerk=class'KFPerk_Demolitionist' BasePerk=class'KFPerk_Demolitionist'
AOEMult=1.0f AOEMult=1.0f
NukeDamageMult=1.0f NukeDamageMult=1.0f
PrimaryMelee=class'KFWeap_Knife_Demolitionist' PrimaryMelee=class'KFWeap_Knife_Demolitionist'
PrimaryWeapon=class'KFWeap_GrenadeLauncher_HX25' PrimaryWeapon=class'KFWeap_GrenadeLauncher_HX25'
PerkGrenade=class'KFProj_DynamiteGrenade' PerkGrenade=class'KFProj_DynamiteGrenade'
PrimaryWeaponDef=class'KFWeapDef_HX25' PrimaryWeaponDef=class'KFWeapDef_HX25'
KnifeWeaponDef=class'KFWeapDef_Knife_Demo' KnifeWeaponDef=class'KFWeapDef_Knife_Demo'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Demo' GrenadeWeaponDef=class'KFWeapDef_Grenade_Demo'
AutoBuyLoadOutPath=(class'KFWeapDef_HX25', class'KFWeapDef_M79', class'KFWeapDef_M16M203', class'KFWeapDef_RPG7') AutoBuyLoadOutPath=(class'KFWeapDef_HX25', class'KFWeapDef_M79', class'KFWeapDef_M16M203', class'KFWeapDef_RPG7')
DefPerkStats(10)=(bHiddenConfig=true) // No support for mag size on demo. DefPerkStats(10)=(bHiddenConfig=true) // No support for mag size on demo.
DefPerkStats(13)=(bHiddenConfig=false) // Self damage. DefPerkStats(13)=(bHiddenConfig=false) // Self damage.
} }

View File

@ -22,7 +22,7 @@ simulated function ModifyDamageGiven(out int InDamage, optional Actor DamageCaus
TempDamage += InDamage * 100; TempDamage += InDamage * 100;
InDamage = Round(TempDamage); InDamage = Round(TempDamage);
Super.ModifyDamageGiven(InDamage, DamageCauser, MyKFPM, DamageInstigator, DamageType, HitZoneIdx); Super.ModifyDamageGiven(InDamage, DamageCauser, MyKFPM, DamageInstigator, DamageType, HitZoneIdx);
} }
@ -57,7 +57,7 @@ function bool ModifyHealAmount(out float HealAmount)
// Di // Di
// simulated function ModifyHealerRechargeTime(out float RechargeRate) // simulated function ModifyHealerRechargeTime(out float RechargeRate)
// { // {
// super.ModifyHealerRechargeTime(RechargeRate) // super.ModifyHealerRechargeTime(RechargeRate)
// RechargeRate /= Clamp(Modifiers[9] * 2, 1.f, 3.f); // RechargeRate /= Clamp(Modifiers[9] * 2, 1.f, 3.f);
// } // }
@ -79,7 +79,7 @@ function GiveMedicAirborneAgentHealth(KFPawn HealTarget, class<DamageType> DamTy
if (KFP.IsAliveAndWell() && WorldInfo.GRI.OnSameTeam(HealTarget, KFP)) if (KFP.IsAliveAndWell() && WorldInfo.GRI.OnSameTeam(HealTarget, KFP))
{ {
if (HealTarget == KFP) if (HealTarget == KFP)
KFP.HealDamage(RoundedExtraHealAmount, PlayerOwner, DamType); KFP.HealDamage(RoundedExtraHealAmount, PlayerOwner, DamType);
else KFP.HealDamage(RoundedExtraHealAmount + HealAmount, PlayerOwner, DamType); else KFP.HealDamage(RoundedExtraHealAmount + HealAmount, PlayerOwner, DamType);
} }
} }
@ -101,9 +101,9 @@ static function int ModifyToxicDmg(int ToxicDamage)
function NotifyZedTimeStarted() function NotifyZedTimeStarted()
{ {
local KFPawn_Human HPawn; local KFPawn_Human HPawn;
HPawn = KFPawn_Human(PlayerOwner.Pawn); HPawn = KFPawn_Human(PlayerOwner.Pawn);
if (bUseAirborneAgent && HPawn != none && HPawn.IsAliveAndWell()) if (bUseAirborneAgent && HPawn != none && HPawn.IsAliveAndWell())
HPawn.StartAirBorneAgentEvent(); HPawn.StartAirBorneAgentEvent();
} }
@ -186,8 +186,8 @@ simulated function float GetHealingShieldDuration()
} }
simulated function float GetSelfHealingSurgePct() simulated function float GetSelfHealingSurgePct()
{ {
return SelfHealingSurgePct; return SelfHealingSurgePct;
} }
defaultproperties defaultproperties
@ -205,13 +205,13 @@ defaultproperties
DefTraitList.Add(class'Ext_TraitArmorRep') DefTraitList.Add(class'Ext_TraitArmorRep')
BasePerk=class'KFPerk_FieldMedic' BasePerk=class'KFPerk_FieldMedic'
HealExpUpNum=3 HealExpUpNum=3
HealingSpeedBoostPct = 10.0f HealingSpeedBoostPct = 10.0f
HealingDamageBoostPct = 5.0f HealingDamageBoostPct = 5.0f
HealingShieldPct = 10.0f HealingShieldPct = 10.0f
ToxicDmgTypeClass=class'KFDT_Toxic_AcidicRounds' ToxicDmgTypeClass=class'KFDT_Toxic_AcidicRounds'
SelfHealingSurgePct=0.1f SelfHealingSurgePct=0.1f
MaxHealingSpeedBoost=30 MaxHealingSpeedBoost=30
@ -219,26 +219,26 @@ defaultproperties
MaxHealingDamageBoost=20 MaxHealingDamageBoost=20
HealingDamageBoostDuration=5.f HealingDamageBoostDuration=5.f
MaxHealingShield=30 MaxHealingShield=30
HealingShieldDuration=5.0f HealingShieldDuration=5.0f
DefPerkStats(0)=(MaxValue=70) DefPerkStats(0)=(MaxValue=70)
DefPerkStats(9)=(bHiddenConfig=false) // Heal efficiency DefPerkStats(9)=(bHiddenConfig=false) // Heal efficiency
DefPerkStats(15)=(bHiddenConfig=false) // Toxic resistance DefPerkStats(15)=(bHiddenConfig=false) // Toxic resistance
DefPerkStats(16)=(bHiddenConfig=false) // Sonic resistance DefPerkStats(16)=(bHiddenConfig=false) // Sonic resistance
DefPerkStats(17)=(bHiddenConfig=false) // Fire resistance DefPerkStats(17)=(bHiddenConfig=false) // Fire resistance
DefPerkStats(20)=(bHiddenConfig=false) // Heal recharge DefPerkStats(20)=(bHiddenConfig=false) // Heal recharge
PrimaryMelee=class'KFWeap_Knife_FieldMedic' PrimaryMelee=class'KFWeap_Knife_FieldMedic'
PrimaryWeapon=None PrimaryWeapon=None
PerkGrenade=class'KFProj_MedicGrenade' PerkGrenade=class'KFProj_MedicGrenade'
SuperGrenade=class'ExtProj_SUPERMedGrenade' SuperGrenade=class'ExtProj_SUPERMedGrenade'
SecondaryWeaponDef=class'ExtWeapDef_MedicPistol' SecondaryWeaponDef=class'ExtWeapDef_MedicPistol'
PrimaryWeaponDef=None PrimaryWeaponDef=None
KnifeWeaponDef=class'KFWeapDef_Knife_Medic' KnifeWeaponDef=class'KFWeapDef_Knife_Medic'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Medic' GrenadeWeaponDef=class'KFWeapDef_Grenade_Medic'
AutoBuyLoadOutPath=(class'KFWeapDef_MedicSMG', class'KFWeapDef_MedicShotgun', class'KFWeapDef_MedicRifle') AutoBuyLoadOutPath=(class'KFWeapDef_MedicSMG', class'KFWeapDef_MedicShotgun', class'KFWeapDef_MedicRifle')
} }

View File

@ -17,9 +17,9 @@ defaultproperties
PrimaryWeaponDef=class'KFWeapDef_CaulkBurn' PrimaryWeaponDef=class'KFWeapDef_CaulkBurn'
KnifeWeaponDef=class'KFWeapDef_Knife_Firebug' KnifeWeaponDef=class'KFWeapDef_Knife_Firebug'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Firebug' GrenadeWeaponDef=class'KFWeapDef_Grenade_Firebug'
AutoBuyLoadOutPath=(class'KFWeapDef_CaulkBurn', class'KFWeapDef_DragonsBreath', class'KFWeapDef_FlameThrower', class'KFWeapDef_MicrowaveGun') AutoBuyLoadOutPath=(class'KFWeapDef_CaulkBurn', class'KFWeapDef_DragonsBreath', class'KFWeapDef_FlameThrower', class'KFWeapDef_MicrowaveGun')
DefPerkStats(13)=(Progress=3,bHiddenConfig=false) // Self damage. DefPerkStats(13)=(Progress=3,bHiddenConfig=false) // Self damage.
DefPerkStats(17)=(bHiddenConfig=false) // Fire resistance DefPerkStats(17)=(bHiddenConfig=false) // Fire resistance
} }

View File

@ -22,7 +22,7 @@ simulated function bool GetIsUberAmmoActive(KFWeapon KFW)
simulated function float GetZedTimeModifier(KFWeapon W) simulated function float GetZedTimeModifier(KFWeapon W)
{ {
local name StateName; local name StateName;
if (bHasFanfire && IsWeaponOnPerk(W)) if (bHasFanfire && IsWeaponOnPerk(W))
{ {
StateName = W.GetStateName(); StateName = W.GetStateName();
@ -45,10 +45,10 @@ defaultproperties
PrimaryMelee=class'KFWeap_Knife_Gunslinger' PrimaryMelee=class'KFWeap_Knife_Gunslinger'
PrimaryWeapon=class'KFWeap_Revolver_DualRem1858' PrimaryWeapon=class'KFWeap_Revolver_DualRem1858'
PerkGrenade=class'KFProj_NailBombGrenade' PerkGrenade=class'KFProj_NailBombGrenade'
PrimaryWeaponDef=class'KFWeapDef_Remington1858Dual' PrimaryWeaponDef=class'KFWeapDef_Remington1858Dual'
KnifeWeaponDef=class'KFWeapDef_Knife_Gunslinger' KnifeWeaponDef=class'KFWeapDef_Knife_Gunslinger'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Gunslinger' GrenadeWeaponDef=class'KFWeapDef_Grenade_Gunslinger'
AutoBuyLoadOutPath=(class'KFWeapDef_Remington1858', class'KFWeapDef_Remington1858Dual', class'KFWeapDef_Colt1911', class'KFWeapDef_Colt1911Dual',class'KFWeapDef_Deagle', class'KFWeapDef_DeagleDual', class'KFWeapDef_SW500', class'KFWeapDef_SW500Dual') AutoBuyLoadOutPath=(class'KFWeapDef_Remington1858', class'KFWeapDef_Remington1858Dual', class'KFWeapDef_Colt1911', class'KFWeapDef_Colt1911Dual',class'KFWeapDef_Deagle', class'KFWeapDef_DeagleDual', class'KFWeapDef_SW500', class'KFWeapDef_SW500Dual')
} }

View File

@ -52,16 +52,16 @@ final function UpdateDmgScale(bool bUp)
function UpdatePerkHeadShots(ImpactInfo Impact, class<DamageType> DamageType, int NumHit) function UpdatePerkHeadShots(ImpactInfo Impact, class<DamageType> DamageType, int NumHit)
{ {
local int HitZoneIdx; local int HitZoneIdx;
local KFPawn_Monster KFPM; local KFPawn_Monster KFPM;
if (MaxRhythmCombo<=0) if (MaxRhythmCombo<=0)
return; return;
KFPM = KFPawn_Monster(Impact.HitActor); KFPM = KFPawn_Monster(Impact.HitActor);
if (KFPM==none || KFPM.GetTeamNum()==0) if (KFPM==none || KFPM.GetTeamNum()==0)
return; return;
HitZoneIdx = KFPM.HitZones.Find('ZoneName', Impact.HitInfo.BoneName); HitZoneIdx = KFPM.HitZones.Find('ZoneName', Impact.HitInfo.BoneName);
if (HitZoneIdx == HZI_Head && KFPM.IsAliveAndWell()) if (HitZoneIdx == HZI_Head && KFPM.IsAliveAndWell())
{ {
if (class<KFDamageType>(DamageType)!=None && (class<KFDamageType>(DamageType).Default.ModifierPerkList.Find(BasePerk)>=0)) if (class<KFDamageType>(DamageType)!=None && (class<KFDamageType>(DamageType).Default.ModifierPerkList.Find(BasePerk)>=0))
UpdateDmgScale(true); UpdateDmgScale(true);
@ -87,7 +87,7 @@ reliable client function HeadShotMessage(byte HeadShotNum, bool bMissed, byte Ma
else if (HeadShotNum<MaxHits) else if (HeadShotNum<MaxHits)
{ {
if (!bMissed) if (!bMissed)
{ {
//PC.ClientSpawnCameraLensEffect(class'KFCameraLensEmit_RackemHeadShot'); //PC.ClientSpawnCameraLensEffect(class'KFCameraLensEmit_RackemHeadShot');
TempAkEvent = AkEvent'WW_UI_PlayerCharacter.Play_R_Method_Hit'; TempAkEvent = AkEvent'WW_UI_PlayerCharacter.Play_R_Method_Hit';
} }

View File

@ -38,12 +38,12 @@ defaultproperties
PrimaryMelee=class'KFWeap_Knife_Sharpshooter' PrimaryMelee=class'KFWeap_Knife_Sharpshooter'
PrimaryWeapon=class'KFWeap_Rifle_Winchester1894' PrimaryWeapon=class'KFWeap_Rifle_Winchester1894'
PerkGrenade=class'KFProj_FreezeGrenade' PerkGrenade=class'KFProj_FreezeGrenade'
PrimaryWeaponDef=class'KFWeapDef_Winchester1894' PrimaryWeaponDef=class'KFWeapDef_Winchester1894'
KnifeWeaponDef=class'KFWeapDef_Knife_Sharpshooter' KnifeWeaponDef=class'KFWeapDef_Knife_Sharpshooter'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Sharpshooter' GrenadeWeaponDef=class'KFWeapDef_Grenade_Sharpshooter'
AutoBuyLoadOutPath=(class'KFWeapDef_Winchester1894', class'KFWeapDef_Crossbow', class'KFWeapDef_M14EBR', class'KFWeapDef_RailGun') AutoBuyLoadOutPath=(class'KFWeapDef_Winchester1894', class'KFWeapDef_Crossbow', class'KFWeapDef_M14EBR', class'KFWeapDef_RailGun')
DireReloadSpeed=0.25f DireReloadSpeed=0.25f
} }

View File

@ -54,10 +54,10 @@ defaultproperties
PrimaryMelee=class'KFWeap_Knife_Support' PrimaryMelee=class'KFWeap_Knife_Support'
PrimaryWeapon=class'KFWeap_Shotgun_MB500' PrimaryWeapon=class'KFWeap_Shotgun_MB500'
PrimaryWeaponDef=class'KFWeapDef_MB500' PrimaryWeaponDef=class'KFWeapDef_MB500'
KnifeWeaponDef=class'KFWeapDef_Knife_Support' KnifeWeaponDef=class'KFWeapDef_Knife_Support'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Support' GrenadeWeaponDef=class'KFWeapDef_Grenade_Support'
AutoBuyLoadOutPath=(class'KFWeapDef_MB500', class'KFWeapDef_DoubleBarrel', class'KFWeapDef_M4', class'KFWeapDef_AA12') AutoBuyLoadOutPath=(class'KFWeapDef_MB500', class'KFWeapDef_DoubleBarrel', class'KFWeapDef_M4', class'KFWeapDef_AA12')
} }

View File

@ -2,4 +2,5 @@ class Ext_TGroupMonster extends Ext_TGroupBase;
defaultproperties defaultproperties
{ {
} }

View File

@ -33,4 +33,5 @@ static final function byte GetMaxLimit(Ext_PerkBase Perk)
defaultproperties defaultproperties
{ {
} }

View File

@ -2,4 +2,5 @@ class Ext_TGroupZEDTime extends Ext_TGroupBase;
defaultproperties defaultproperties
{ {
} }

View File

@ -34,7 +34,7 @@ simulated function Tick(float Delta)
|| KFWeapon(PawnOwner.Weapon)==None || KFWeapon(PawnOwner.Weapon)==None
|| (KFWeapon(PawnOwner.Weapon).GetWeaponPerkClass(AssociatedPerkClass) != AssociatedPerkClass && AssociatedPerkClass != class'KFPerk_Survivalist')) || (KFWeapon(PawnOwner.Weapon).GetWeaponPerkClass(AssociatedPerkClass) != AssociatedPerkClass && AssociatedPerkClass != class'KFPerk_Survivalist'))
return; return;
// Find local playercontroller. // Find local playercontroller.
if (LocalPC==None) if (LocalPC==None)
{ {

View File

@ -9,7 +9,7 @@ var bool bTeleporting,bIsDelayed;
function bool CanResPlayer(KFPawn_Human Other, byte Level) function bool CanResPlayer(KFPawn_Human Other, byte Level)
{ {
local Actor SpawnPoint; local Actor SpawnPoint;
if (bTeleporting) if (bTeleporting)
{ {
if (LastDied!=None) if (LastDied!=None)
@ -27,14 +27,14 @@ function bool CanResPlayer(KFPawn_Human Other, byte Level)
if (SpawnPointer==None) if (SpawnPointer==None)
SpawnPointer = class'ExtSpawnPointHelper'.Static.FindHelper(WorldInfo); SpawnPointer = class'ExtSpawnPointHelper'.Static.FindHelper(WorldInfo);
SpawnPoint = SpawnPointer.PickBestSpawn(); SpawnPoint = SpawnPointer.PickBestSpawn();
if (SpawnPoint == None) if (SpawnPoint == None)
return false; return false;
LastDied = Other; LastDied = Other;
bTeleporting = true; bTeleporting = true;
ResPoint = SpawnPoint.Location; ResPoint = SpawnPoint.Location;
LastDied.FindSpot(vect(36,36,86),ResPoint); LastDied.FindSpot(vect(36,36,86),ResPoint);
if (VSizeSq(LastDied.Location-ResPoint)<1.f) // Prevent division by zero errors in future. if (VSizeSq(LastDied.Location-ResPoint)<1.f) // Prevent division by zero errors in future.
@ -49,7 +49,7 @@ final function StartResurrect()
TeleStartPoint = LastDied.Location; TeleStartPoint = LastDied.Location;
LastDied.Health = 9999; LastDied.Health = 9999;
LastDied.LastStartTime = WorldInfo.TimeSeconds; LastDied.LastStartTime = WorldInfo.TimeSeconds;
if (ExtHumanPawn(LastDied)!=None) if (ExtHumanPawn(LastDied)!=None)
{ {
ExtHumanPawn(LastDied).bCanBecomeRagdoll = false; ExtHumanPawn(LastDied).bCanBecomeRagdoll = false;

View File

@ -24,4 +24,5 @@ function Timer()
defaultproperties defaultproperties
{ {
} }

View File

@ -84,12 +84,12 @@ simulated function bool GetCanInteract(Pawn User, optional bool bInteractIfTrue
PRI = ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo); PRI = ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo);
if (!User.IsLocallyControlled() || PRI==None || !PRI.CanUseSupply(User)) if (!User.IsLocallyControlled() || PRI==None || !PRI.CanUseSupply(User))
return false; return false;
if (bInteractIfTrue) if (bInteractIfTrue)
{ {
PRI.UsedSupply(User,ReuseTime); PRI.UsedSupply(User,ReuseTime);
SetTimer(ReuseTime+0.1,false,'RecheckUser'); SetTimer(ReuseTime+0.1,false,'RecheckUser');
if (KFPlayerController(User.Controller)!=None) if (KFPlayerController(User.Controller)!=None)
KFPlayerController(User.Controller).SetPendingInteractionMessage(); KFPlayerController(User.Controller).SetPendingInteractionMessage();
} }
@ -99,7 +99,7 @@ simulated function bool GetCanInteract(Pawn User, optional bool bInteractIfTrue
i = ActiveUsers.Find('Player',User); i = ActiveUsers.Find('Player',User);
if (i>=0 && ActiveUsers[i].NextUseTime>WorldInfo.TimeSeconds) if (i>=0 && ActiveUsers[i].NextUseTime>WorldInfo.TimeSeconds)
return false; return false;
if (bInteractIfTrue) if (bInteractIfTrue)
{ {
if (i==-1) if (i==-1)
@ -112,7 +112,7 @@ simulated function bool GetCanInteract(Pawn User, optional bool bInteractIfTrue
ActiveUsers[i].NextUseTime = WorldInfo.TimeSeconds+ReuseTime; ActiveUsers[i].NextUseTime = WorldInfo.TimeSeconds+ReuseTime;
} }
} }
if (bInteractIfTrue && WorldInfo.NetMode!=NM_Client) if (bInteractIfTrue && WorldInfo.NetMode!=NM_Client)
{ {
GiveAmmunition(KFPawn_Human(User)); GiveAmmunition(KFPawn_Human(User));
@ -123,7 +123,7 @@ simulated function bool GetCanInteract(Pawn User, optional bool bInteractIfTrue
function CleanupUsers() function CleanupUsers()
{ {
local int i; local int i;
for (i=(ActiveUsers.Length-1); i>=0; --i) for (i=(ActiveUsers.Length-1); i>=0; --i)
if (ActiveUsers[i].Player==None || ActiveUsers[i].Player.Health<=0 || ActiveUsers[i].NextUseTime<WorldInfo.TimeSeconds) if (ActiveUsers[i].Player==None || ActiveUsers[i].Player.Health<=0 || ActiveUsers[i].NextUseTime<WorldInfo.TimeSeconds)
ActiveUsers.Remove(i,1); ActiveUsers.Remove(i,1);
@ -178,7 +178,7 @@ simulated final function UsedOnClient(Pawn User)
if (PRI!=None) if (PRI!=None)
PRI.UsedSupply(User,ReuseTime); PRI.UsedSupply(User,ReuseTime);
SetTimer(ReuseTime+0.1,false,'RecheckUser'); SetTimer(ReuseTime+0.1,false,'RecheckUser');
if (WorldInfo.NetMode==NM_Client && KFPlayerController(User.Controller)!=None) if (WorldInfo.NetMode==NM_Client && KFPlayerController(User.Controller)!=None)
KFPlayerController(User.Controller).SetPendingInteractionMessage(); KFPlayerController(User.Controller).SetPendingInteractionMessage();
} }
@ -202,7 +202,7 @@ defaultproperties
bHidden=false bHidden=false
ReuseTime=90 ReuseTime=90
bProjTarget=false bProjTarget=false
Components.Empty() Components.Empty()
Components.Add(CollisionCylinder) Components.Add(CollisionCylinder)
} }

View File

@ -75,7 +75,7 @@ function Destroyed()
final function bool HasLiveZeds() final function bool HasLiveZeds()
{ {
local KFPawn_Monster M; local KFPawn_Monster M;
if (KFGameReplicationInfo(WorldInfo.GRI).WaveNum>=KFGameReplicationInfo(WorldInfo.GRI).WaveMax) // No pets on possible bonus waves. if (KFGameReplicationInfo(WorldInfo.GRI).WaveNum>=KFGameReplicationInfo(WorldInfo.GRI).WaveMax) // No pets on possible bonus waves.
return false; return false;
@ -95,7 +95,7 @@ final function SpawnHelper()
local Ext_T_MonsterPRI PRI; local Ext_T_MonsterPRI PRI;
local AkBaseSoundObject TempSound; local AkBaseSoundObject TempSound;
local bool bFinalWave; local bool bFinalWave;
if (PawnOwner.PlayerReplicationInfo==None || !HasLiveZeds()) if (PawnOwner.PlayerReplicationInfo==None || !HasLiveZeds())
{ {
RespawnHelperTime = 3; RespawnHelperTime = 3;
@ -137,7 +137,7 @@ final function SpawnHelper()
// Downscale. // Downscale.
LiveHelper.SetDrawScale(LiveHelper.DrawScale*FriendlyScalar); LiveHelper.SetDrawScale(LiveHelper.DrawScale*FriendlyScalar);
LiveHelper.SetCollisionSize(LiveHelper.GetCollisionRadius()*FriendlyScalar,LiveHelper.GetCollisionHeight()*FriendlyScalar); LiveHelper.SetCollisionSize(LiveHelper.GetCollisionRadius()*FriendlyScalar,LiveHelper.GetCollisionHeight()*FriendlyScalar);
// Setup AI // Setup AI
C = Spawn(LiveHelper.ControllerClass); C = Spawn(LiveHelper.ControllerClass);
if (KFAIController(C)!=None) if (KFAIController(C)!=None)
@ -157,7 +157,7 @@ final function SpawnHelper()
LiveHelper.SetWeakGrabCoolDown(28800.f); // Never get grabbed (for 80 hours). LiveHelper.SetWeakGrabCoolDown(28800.f); // Never get grabbed (for 80 hours).
LiveHelper.bWeakZedGrab = true; LiveHelper.bWeakZedGrab = true;
LiveHelper.bCanGrabAttack = false; LiveHelper.bCanGrabAttack = false;
// Scale by previous zed HP. // Scale by previous zed HP.
if (PrevMonster!=None) if (PrevMonster!=None)
{ {
@ -203,14 +203,14 @@ static final function LoadMonsterList()
local int i,j; local int i,j;
local array<string> SA; local array<string> SA;
local class<KFPawn_Monster> C; local class<KFPawn_Monster> C;
Default.ZedTypes.Length = class'Ext_TraitZED_Summon'.Default.ZedTypes.Length; Default.ZedTypes.Length = class'Ext_TraitZED_Summon'.Default.ZedTypes.Length;
for (i=0; i<Default.ZedTypes.Length; ++i) for (i=0; i<Default.ZedTypes.Length; ++i)
{ {
SA.Length = 0; SA.Length = 0;
ParseStringIntoArray(class'Ext_TraitZED_Summon'.Default.ZedTypes[i],SA,",",true); ParseStringIntoArray(class'Ext_TraitZED_Summon'.Default.ZedTypes[i],SA,",",true);
for (j=0; j<SA.Length; ++j) for (j=0; j<SA.Length; ++j)
{ {
C = class<KFPawn_Monster>(DynamicLoadObject(SA[j],Class'Class')); C = class<KFPawn_Monster>(DynamicLoadObject(SA[j],Class'Class'));
@ -227,7 +227,7 @@ static final function class<KFPawn_Monster> PickRandomMonster(byte Level, bool b
{ {
local byte i; local byte i;
local class<KFPawn_Monster> Res; local class<KFPawn_Monster> Res;
Level = Min(Default.ZedTypes.Length-1,Level); Level = Min(Default.ZedTypes.Length-1,Level);
for (i=0; i<5; ++i) for (i=0; i<5; ++i)
{ {

View File

@ -17,7 +17,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<1) if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<1)
return false; return false;
for (i=0; i<Perk.PerkTraits.Length; ++i) for (i=0; i<Perk.PerkTraits.Length; ++i)
{ {
if (Perk.PerkTraits[i].TraitType==Class'Ext_TraitGrenadeUpg') if (Perk.PerkTraits[i].TraitType==Class'Ext_TraitGrenadeUpg')
@ -27,7 +27,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
else break; else break;
} }
} }
return true; return true;
} }

View File

@ -5,7 +5,7 @@ var array<float> RegenValues;
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_AmmoRegHelp H; local Ext_T_AmmoRegHelp H;
H = Player.Spawn(class'Ext_T_AmmoRegHelp',Player); H = Player.Spawn(class'Ext_T_AmmoRegHelp',Player);
if (H!=None) if (H!=None)
H.RegCount = Default.RegenValues[Level-1]; H.RegCount = Default.RegenValues[Level-1];

View File

@ -3,7 +3,7 @@ Class Ext_TraitArmorReg extends Ext_TraitHealthReg;
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_ArmorRegHelp H; local Ext_T_ArmorRegHelp H;
H = Player.Spawn(class'Ext_T_ArmorRegHelp',Player); H = Player.Spawn(class'Ext_T_ArmorRegHelp',Player);
if (H!=None) if (H!=None)
H.RegCount = Default.RegenValues[Level-1]; H.RegCount = Default.RegenValues[Level-1];

View File

@ -42,7 +42,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
// First check level. // First check level.
if (Perk.CurrentLevel<Default.MinLevel) if (Perk.CurrentLevel<Default.MinLevel)
return false; return false;
// Then check grouping. // Then check grouping.
if (Lvl==0 && Default.TraitGroup!=None && Default.TraitGroup.Static.GroupLimited(Perk,Default.Class)) if (Lvl==0 && Default.TraitGroup!=None && Default.TraitGroup.Static.GroupLimited(Perk,Default.Class))
return false; return false;
@ -54,7 +54,7 @@ function string GetPerkDescription()
{ {
local string S; local string S;
local byte i; local byte i;
for (i=0; i<Default.NumLevels; ++i) for (i=0; i<Default.NumLevels; ++i)
{ {
if (i==0) if (i==0)
@ -163,7 +163,7 @@ static final function string GetInlineStr(out string S) // Reverse.
{ {
local int l; local int l;
local string Res; local string Res;
l = StrToInt(S); l = StrToInt(S);
Res = Left(S,l); Res = Left(S,l);
S = Mid(S,l); S = Mid(S,l);
@ -174,7 +174,7 @@ static function string GetRepData()
{ {
local string S; local string S;
local int i; local int i;
S = IntToStr(Default.MinLevel)$IntToStr(Default.LevelCosts.Length); S = IntToStr(Default.MinLevel)$IntToStr(Default.LevelCosts.Length);
for (i=0; i<Default.LevelCosts.Length; ++i) for (i=0; i<Default.LevelCosts.Length; ++i)
S $= IntToStr(Default.LevelCosts[i]); S $= IntToStr(Default.LevelCosts[i]);

View File

@ -8,4 +8,5 @@ var class<Ext_TraitBase> TraitClass;
defaultproperties defaultproperties
{ {
} }

View File

@ -17,25 +17,25 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<3) if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<3)
return false; return false;
if (Lvl==0) if (Lvl==0)
{ {
i = Perk.PerkStats.Find('StatType','Damage'); i = Perk.PerkStats.Find('StatType','Damage');
if (i>=0) if (i>=0)
return (Perk.PerkStats[i].CurrentValue>=30); return (Perk.PerkStats[i].CurrentValue>=30);
} }
return true; return true;
} }
static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local ExtPlayerReplicationInfo MyPRI; local ExtPlayerReplicationInfo MyPRI;
MyPRI = ExtPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo); MyPRI = ExtPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo);
if (MyPRI == None || Ext_PerkDemolition(Perk) == None) if (MyPRI == None || Ext_PerkDemolition(Perk) == None)
return; return;
MyPRI.bNukeActive = true; MyPRI.bNukeActive = true;
Ext_PerkDemolition(Perk).NukeDamageMult = 1.0 + (((float(Level) - 1.f) * 5.f) / 100.f); Ext_PerkDemolition(Perk).NukeDamageMult = 1.0 + (((float(Level) - 1.f) * 5.f) / 100.f);
} }
@ -43,11 +43,11 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local ExtPlayerReplicationInfo MyPRI; local ExtPlayerReplicationInfo MyPRI;
MyPRI = ExtPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo); MyPRI = ExtPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo);
if (MyPRI == None || Ext_PerkDemolition(Perk) == None) if (MyPRI == None || Ext_PerkDemolition(Perk) == None)
return; return;
MyPRI.bNukeActive = false; MyPRI.bNukeActive = false;
Ext_PerkDemolition(Perk).NukeDamageMult = 1.0; Ext_PerkDemolition(Perk).NukeDamageMult = 1.0;
} }

View File

@ -17,14 +17,14 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<3) if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<3)
return false; return false;
if (Lvl==0) if (Lvl==0)
{ {
i = Perk.PerkStats.Find('StatType','Reload'); i = Perk.PerkStats.Find('StatType','Reload');
if (i>=0) if (i>=0)
return (Perk.PerkStats[i].CurrentValue>=30); return (Perk.PerkStats[i].CurrentValue>=30);
} }
return true; return true;
} }

View File

@ -5,7 +5,7 @@ var array<byte> RegenValues;
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_HealthRegHelp H; local Ext_T_HealthRegHelp H;
H = Player.Spawn(class'Ext_T_HealthRegHelp',Player); H = Player.Spawn(class'Ext_T_HealthRegHelp',Player);
if (H!=None) if (H!=None)
H.RegCount = Default.RegenValues[Level-1]; H.RegCount = Default.RegenValues[Level-1];

View File

@ -14,7 +14,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
{ {
if (Level <= 1) if (Level <= 1)
return; return;
Level == 2 ? Player.AddArmor(50) : Player.AddArmor(Player.MaxArmor); Level == 2 ? Player.AddArmor(50) : Player.AddArmor(Player.MaxArmor);
} }

View File

@ -17,7 +17,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<2) if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<2)
return false; return false;
for (i=0; i<Perk.PerkTraits.Length; ++i) for (i=0; i<Perk.PerkTraits.Length; ++i)
{ {
if (Perk.PerkTraits[i].TraitType==Class'Ext_TraitAPShots') if (Perk.PerkTraits[i].TraitType==Class'Ext_TraitAPShots')
@ -27,7 +27,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
else break; else break;
} }
} }
return true; return true;
} }

View File

@ -21,7 +21,7 @@ defaultproperties
DefLevelCosts(1)=30 DefLevelCosts(1)=30
DefLevelCosts(2)=40 DefLevelCosts(2)=40
DefMinLevel=100 DefMinLevel=100
ChanceValues(0)=0.2 ChanceValues(0)=0.2
ChanceValues(1)=0.5 ChanceValues(1)=0.5
ChanceValues(2)=0.8 ChanceValues(2)=0.8

View File

@ -3,7 +3,7 @@ Class Ext_TraitRetali extends Ext_TraitBase;
static function bool PreventDeath(KFPawn_Human Player, Controller Instigator, Class<DamageType> DamType, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) static function bool PreventDeath(KFPawn_Human Player, Controller Instigator, Class<DamageType> DamType, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{ {
local ExtProj_SUPERGrenade P; local ExtProj_SUPERGrenade P;
P = Player.Spawn(class'ExtProj_SUPERGrenade'); P = Player.Spawn(class'ExtProj_SUPERGrenade');
if (P!=None) if (P!=None)
{ {

View File

@ -21,6 +21,6 @@ defaultproperties
{ {
DefLevelCosts(0)=50 DefLevelCosts(0)=50
TraitData=class'Ext_TraitSupplyData' TraitData=class'Ext_TraitSupplyData'
SupplyIcon=Texture2D'UI_World_TEX.Support_Supplier_HUD' SupplyIcon=Texture2D'UI_World_TEX.Support_Supplier_HUD'
} }

View File

@ -12,7 +12,7 @@ final function SpawnSupplier(KFPawn_Human H, optional bool bGrenades)
SupplyInteraction.PlayerOwner = H; SupplyInteraction.PlayerOwner = H;
SupplyInteraction.PerkOwner = Perk; SupplyInteraction.PerkOwner = Perk;
SupplyInteraction.bGrenades = bGrenades; SupplyInteraction.bGrenades = 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);
} }
@ -21,7 +21,7 @@ final function RemoveSupplier()
{ {
if (SupplyInteraction!=None) if (SupplyInteraction!=None)
SupplyInteraction.Destroy(); SupplyInteraction.Destroy();
if (PlayerOwner!=None && ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo)!=None) if (PlayerOwner!=None && ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo)!=None)
ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo).HasSupplier = None; ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo).HasSupplier = None;
} }

View File

@ -6,6 +6,6 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
} }
defaultproperties defaultproperties
{ {
SupplyIcon=Texture2D'UI_World_TEX.Demolitionist_Supplier_HUD' SupplyIcon=Texture2D'UI_World_TEX.Demolitionist_Supplier_HUD'
} }

View File

@ -17,14 +17,14 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<1) if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<1)
return false; return false;
if (Lvl==0) if (Lvl==0)
{ {
i = Perk.PerkStats.Find('StatType','Damage'); i = Perk.PerkStats.Find('StatType','Damage');
if (i>=0) if (i>=0)
return (Perk.PerkStats[i].CurrentValue>=30); return (Perk.PerkStats[i].CurrentValue>=30);
} }
return true; return true;
} }

View File

@ -5,7 +5,7 @@ var array<float> RadiusValues;
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_UnCloakHelper H; local Ext_T_UnCloakHelper H;
H = Player.Spawn(class'Ext_T_UnCloakHelper',Player); H = Player.Spawn(class'Ext_T_UnCloakHelper',Player);
if (H!=None) if (H!=None)
H.HandleRadius = Default.RadiusValues[Level-1]; H.HandleRadius = Default.RadiusValues[Level-1];

View File

@ -1,7 +1,7 @@
Class Ext_TraitWPBers extends Ext_TraitWeapons; Class Ext_TraitWPBers extends Ext_TraitWeapons;
defaultproperties defaultproperties
{ {
LevelEffects(0)=(LoadoutClasses=(class'KFWeap_Blunt_Pulverizer')) LevelEffects(0)=(LoadoutClasses=(class'KFWeap_Blunt_Pulverizer'))
LevelEffects(1)=(LoadoutClasses=(class'KFWeap_Shotgun_Nailgun')) LevelEffects(1)=(LoadoutClasses=(class'KFWeap_Shotgun_Nailgun'))
LevelEffects(2)=(LoadoutClasses=(class'KFWeap_Eviscerator')) LevelEffects(2)=(LoadoutClasses=(class'KFWeap_Eviscerator'))

View File

@ -1,7 +1,7 @@
Class Ext_TraitWPDemo extends Ext_TraitWeapons; Class Ext_TraitWPDemo extends Ext_TraitWeapons;
defaultproperties defaultproperties
{ {
LevelEffects(0)=(LoadoutClasses=(class'KFWeap_Thrown_C4')) LevelEffects(0)=(LoadoutClasses=(class'KFWeap_Thrown_C4'))
LevelEffects(1)=(LoadoutClasses=(class'KFWeap_GrenadeLauncher_M79')) LevelEffects(1)=(LoadoutClasses=(class'KFWeap_GrenadeLauncher_M79'))
LevelEffects(2)=(LoadoutClasses=(class'KFWeap_RocketLauncher_RPG7')) LevelEffects(2)=(LoadoutClasses=(class'KFWeap_RocketLauncher_RPG7'))

View File

@ -1,7 +1,7 @@
Class Ext_TraitWPFire extends Ext_TraitWeapons; Class Ext_TraitWPFire extends Ext_TraitWeapons;
defaultproperties defaultproperties
{ {
LevelEffects(0)=(LoadoutClasses=(class'KFWeap_Shotgun_DragonsBreath')) LevelEffects(0)=(LoadoutClasses=(class'KFWeap_Shotgun_DragonsBreath'))
LevelEffects(1)=(LoadoutClasses=(class'KFWeap_Flame_Flamethrower')) LevelEffects(1)=(LoadoutClasses=(class'KFWeap_Flame_Flamethrower'))
LevelEffects(2)=(LoadoutClasses=(class'KFWeap_Beam_Microwave')) LevelEffects(2)=(LoadoutClasses=(class'KFWeap_Beam_Microwave'))

View File

@ -18,7 +18,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
static final function bool HasMaxCarry(Ext_PerkBase Perk) static final function bool HasMaxCarry(Ext_PerkBase Perk)
{ {
local int i; local int i;
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);
} }

View File

@ -10,7 +10,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
// First check level. // First check level.
if (Perk.CurrentLevel<Default.MinLevel) if (Perk.CurrentLevel<Default.MinLevel)
return false; return false;
// Then check stats. // Then check stats.
if (Lvl==0 && Default.BaseTrait!=None) if (Lvl==0 && Default.BaseTrait!=None)
{ {

View File

@ -27,7 +27,7 @@ defaultproperties
DefLevelCosts(3)=40 DefLevelCosts(3)=40
DefLevelCosts(4)=60 DefLevelCosts(4)=60
bPostApplyEffect=true bPostApplyEffect=true
DamList.Add(1.1) DamList.Add(1.1)
DamList.Add(1.25) DamList.Add(1.25)
DamList.Add(1.5) DamList.Add(1.5)

View File

@ -27,7 +27,7 @@ defaultproperties
DefLevelCosts(2)=25 DefLevelCosts(2)=25
DefLevelCosts(3)=40 DefLevelCosts(3)=40
DefLevelCosts(4)=60 DefLevelCosts(4)=60
HPList.Add(1.25) HPList.Add(1.25)
HPList.Add(1.5) HPList.Add(1.5)
HPList.Add(1.75) HPList.Add(1.75)

View File

@ -74,7 +74,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
// First check level. // First check level.
if (Perk.CurrentLevel<Default.MinLevel || (Lvl>=5 && Perk.CurrentPrestige<Default.FinalLevelPrestige)) if (Perk.CurrentLevel<Default.MinLevel || (Lvl>=5 && Perk.CurrentPrestige<Default.FinalLevelPrestige))
return false; return false;
// Then check base trait. // Then check base trait.
if (Lvl==0 && Default.BaseTrait!=None) if (Lvl==0 && Default.BaseTrait!=None)
{ {
@ -93,7 +93,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
H = Player.Spawn(class'Ext_T_ZEDHelper',Player); H = Player.Spawn(class'Ext_T_ZEDHelper',Player);
if (H!=None) if (H!=None)
H.CurLevel = Level-1; H.CurLevel = Level-1;
// Make other traits refresh (apply HP/damage scalers). // Make other traits refresh (apply HP/damage scalers).
for (i=0; i<Perk.PerkTraits.Length; ++i) for (i=0; i<Perk.PerkTraits.Length; ++i)
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)
@ -113,7 +113,7 @@ static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Leve
static function string GetRepData() static function string GetRepData()
{ {
local string S; local string S;
S = Super.GetRepData(); S = Super.GetRepData();
S $= IntToStr(Default.FinalLevelPrestige); S $= IntToStr(Default.FinalLevelPrestige);
return S; return S;
@ -173,14 +173,14 @@ defaultproperties
DefLevelCosts(4)=30 DefLevelCosts(4)=30
DefLevelCosts(5)=100 DefLevelCosts(5)=100
DefMinLevel=20 DefMinLevel=20
DefZedTypes.Add((Zeds=(Class'KFPawn_ZedClot_Alpha',Class'KFPawn_ZedClot_Slasher',Class'KFPawn_ZedClot_Cyst',Class'KFPawn_ZedCrawler'))) DefZedTypes.Add((Zeds=(Class'KFPawn_ZedClot_Alpha',Class'KFPawn_ZedClot_Slasher',Class'KFPawn_ZedClot_Cyst',Class'KFPawn_ZedCrawler')))
DefZedTypes.Add((Zeds=(Class'KFPawn_ZedClot_Slasher',Class'KFPawn_ZedGorefast',Class'KFPawn_ZedStalker'))) DefZedTypes.Add((Zeds=(Class'KFPawn_ZedClot_Slasher',Class'KFPawn_ZedGorefast',Class'KFPawn_ZedStalker')))
DefZedTypes.Add((Zeds=(Class'KFPawn_ZedBloat',Class'KFPawn_ZedStalker',Class'KFPawn_ZedGorefast'))) DefZedTypes.Add((Zeds=(Class'KFPawn_ZedBloat',Class'KFPawn_ZedStalker',Class'KFPawn_ZedGorefast')))
DefZedTypes.Add((Zeds=(Class'KFPawn_ZedHusk',Class'KFPawn_ZedSirenX',Class'KFPawn_ZedScrake'))) DefZedTypes.Add((Zeds=(Class'KFPawn_ZedHusk',Class'KFPawn_ZedSirenX',Class'KFPawn_ZedScrake')))
DefZedTypes.Add((Zeds=(Class'KFPawn_ZedSirenX',Class'KFPawn_ZedFleshpound',Class'KFPawn_ZedScrake'))) DefZedTypes.Add((Zeds=(Class'KFPawn_ZedSirenX',Class'KFPawn_ZedFleshpound',Class'KFPawn_ZedScrake')))
DefZedTypes.Add((Zeds=(Class'ExtPawn_ZedHans_Pet'))) DefZedTypes.Add((Zeds=(Class'ExtPawn_ZedHans_Pet')))
WebConfigs.Add((PropType=2,PropName="ZedTypes",UIName="Zed Types",UIDesc="Type of zeds each level can spawn (separate types with a comma)",NumElements=-1)) WebConfigs.Add((PropType=2,PropName="ZedTypes",UIName="Zed Types",UIDesc="Type of zeds each level can spawn (separate types with a comma)",NumElements=-1))
WebConfigs.Add((PropType=0,PropName="ZedRespawnTime",UIName="Zed RespawnTime",UIDesc="Time in seconds it takes for zeds to respawn")) WebConfigs.Add((PropType=0,PropName="ZedRespawnTime",UIName="Zed RespawnTime",UIDesc="Time in seconds it takes for zeds to respawn"))
WebConfigs.Add((PropType=0,PropName="FinalLevelPrestige",UIName="Final Level Prestige",UIDesc="Prestige level required for this perks final level")) WebConfigs.Add((PropType=0,PropName="FinalLevelPrestige",UIName="Final Level Prestige",UIDesc="Prestige level required for this perks final level"))

View File

@ -26,7 +26,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
AddHelperType(MaxLevel*0.8,Player); AddHelperType(MaxLevel*0.8,Player);
break; break;
} }
// Make other traits refresh (apply HP/damage scalers). // Make other traits refresh (apply HP/damage scalers).
for (i=0; i<Perk.PerkTraits.Length; ++i) for (i=0; i<Perk.PerkTraits.Length; ++i)
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)
@ -45,7 +45,7 @@ static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Leve
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;
H = Player.Spawn(class'Ext_T_ZEDHelper',Player); H = Player.Spawn(class'Ext_T_ZEDHelper',Player);
if (H!=None) if (H!=None)
{ {

View File

@ -17,14 +17,14 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<2) if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<2)
return false; return false;
if (Lvl==0) if (Lvl==0)
{ {
i = Perk.PerkStats.Find('StatType','Heal'); i = Perk.PerkStats.Find('StatType','Heal');
if (i>=0) if (i>=0)
return (Perk.PerkStats[i].CurrentValue>=25); return (Perk.PerkStats[i].CurrentValue>=25);
} }
return true; return true;
} }

View File

@ -50,7 +50,7 @@ function PickDefaultFontSize(float YRes)
final function DrawText(byte Res, string S) final function DrawText(byte Res, string S)
{ {
local float Scale; local float Scale;
Canvas.Font = PickFont(Res,Scale); Canvas.Font = PickFont(Res,Scale);
Canvas.DrawText(S,,Scale,Scale); Canvas.DrawText(S,,Scale,Scale);
} }
@ -105,7 +105,7 @@ final function DrawRectBox(int X, int Y, int XS, int YS, int Edge, optional byte
// Top left // Top left
Canvas.SetPos(X,Y); Canvas.SetPos(X,Y);
DrawCornerTex(Edge,0); DrawCornerTex(Edge,0);
if (Extrav<=1) if (Extrav<=1)
{ {
if (Extrav==0) if (Extrav==0)
@ -113,11 +113,11 @@ final function DrawRectBox(int X, int Y, int XS, int YS, int Edge, optional byte
// Top right // Top right
Canvas.SetPos(X+XS-Edge,Y); Canvas.SetPos(X+XS-Edge,Y);
DrawCornerTex(Edge,1); DrawCornerTex(Edge,1);
// Bottom right // Bottom right
Canvas.SetPos(X+XS-Edge,Y+YS-Edge); Canvas.SetPos(X+XS-Edge,Y+YS-Edge);
DrawCornerTex(Edge,3); DrawCornerTex(Edge,3);
// Fill // Fill
Canvas.SetPos(X+Edge,Y); Canvas.SetPos(X+Edge,Y);
DrawWhiteBox(XS-Edge*2,YS); DrawWhiteBox(XS-Edge*2,YS);
@ -131,7 +131,7 @@ final function DrawRectBox(int X, int Y, int XS, int YS, int Edge, optional byte
// Top right // Top right
Canvas.SetPos(X+XS,Y); Canvas.SetPos(X+XS,Y);
DrawCornerTex(Edge,3); DrawCornerTex(Edge,3);
// Bottom right // Bottom right
Canvas.SetPos(X+XS,Y+YS-Edge); Canvas.SetPos(X+XS,Y+YS-Edge);
DrawCornerTex(Edge,1); DrawCornerTex(Edge,1);
@ -142,7 +142,7 @@ final function DrawRectBox(int X, int Y, int XS, int YS, int Edge, optional byte
Canvas.SetPos(X,Y+Edge); Canvas.SetPos(X,Y+Edge);
DrawWhiteBox(Edge,YS-Edge*2); DrawWhiteBox(Edge,YS-Edge*2);
} }
// Bottom left // Bottom left
Canvas.SetPos(X,Y+YS-Edge); Canvas.SetPos(X,Y+YS-Edge);
DrawCornerTex(Edge,2); DrawCornerTex(Edge,2);
@ -152,15 +152,15 @@ final function DrawRectBox(int X, int Y, int XS, int YS, int Edge, optional byte
// Top right // Top right
Canvas.SetPos(X+XS-Edge,Y); Canvas.SetPos(X+XS-Edge,Y);
DrawCornerTex(Edge,1); DrawCornerTex(Edge,1);
// Bottom right // Bottom right
Canvas.SetPos(X+XS-Edge,Y+YS); Canvas.SetPos(X+XS-Edge,Y+YS);
DrawCornerTex(Edge,2); DrawCornerTex(Edge,2);
// Bottom left // Bottom left
Canvas.SetPos(X,Y+YS); Canvas.SetPos(X,Y+YS);
DrawCornerTex(Edge,3); DrawCornerTex(Edge,3);
// Fill // Fill
Canvas.SetPos(X,Y+Edge); Canvas.SetPos(X,Y+Edge);
DrawWhiteBox(XS,YS-Edge); DrawWhiteBox(XS,YS-Edge);

View File

@ -58,7 +58,7 @@ simulated function HandleDrawMenu()
{ {
OrgConsole = ClientViewport.ViewportConsole; OrgConsole = ClientViewport.ViewportConsole;
ClientViewport.ViewportConsole = HackConsole; ClientViewport.ViewportConsole = HackConsole;
// Make sure nothing overrides these settings while menu is being open. // Make sure nothing overrides these settings while menu is being open.
PlayerOwner.PlayerInput = CustomInput; PlayerOwner.PlayerInput = CustomInput;
if (!ClientViewport.bDisplayHardwareMouseCursor) if (!ClientViewport.bDisplayHardwareMouseCursor)
@ -111,7 +111,7 @@ simulated function RenderMenu(Canvas C)
} }
C.SetOrigin(OrgX,OrgY); C.SetOrigin(OrgX,OrgY);
C.SetClip(ClipX,ClipY); C.SetClip(ClipX,ClipY);
if (OrgConsole!=None) if (OrgConsole!=None)
OrgConsole.PostRender_Console(C); OrgConsole.PostRender_Console(C);
OrgConsole = None; OrgConsole = None;
@ -194,7 +194,7 @@ simulated function MenuInput(float DeltaTime)
InputFocus.MenuTick(DeltaTime); InputFocus.MenuTick(DeltaTime);
for (i=0; i<ActiveMenus.Length; ++i) for (i=0; i<ActiveMenus.Length; ++i)
ActiveMenus[i].MenuTick(DeltaTime); ActiveMenus[i].MenuTick(DeltaTime);
// Check idle. // Check idle.
if (Abs(MousePosition.X-OldMousePos.X)>5.f || Abs(MousePosition.Y-OldMousePos.Y)>5.f || (bMouseWasIdle && MousePauseTime<0.5f)) if (Abs(MousePosition.X-OldMousePos.X)>5.f || Abs(MousePosition.Y-OldMousePos.Y)>5.f || (bMouseWasIdle && MousePauseTime<0.5f))
{ {
@ -223,9 +223,9 @@ simulated function MouseMove(float MouseX, float MouseY)
local int i; local int i;
local KFGUI_Base F; local KFGUI_Base F;
// Handle mouse // Handle mouse
MousePosition.X = Clamp(MouseX, 0, ScreenSize.X); MousePosition.X = Clamp(MouseX, 0, ScreenSize.X);
MousePosition.Y = Clamp(MouseY, 0, ScreenSize.Y); MousePosition.Y = Clamp(MouseY, 0, ScreenSize.Y);
// Capture mouse for GUI // Capture mouse for GUI
if (InputFocus!=None && InputFocus.bCanFocus) if (InputFocus!=None && InputFocus.bCanFocus)
@ -280,7 +280,7 @@ simulated function MouseMove(float MouseX, float MouseY)
simulated final function int GetFreeIndex(bool bNewAlwaysTop) // Find first allowed top index of the stack. simulated final function int GetFreeIndex(bool bNewAlwaysTop) // Find first allowed top index of the stack.
{ {
local int i; local int i;
for (i=0; i<ActiveMenus.Length; ++i) for (i=0; i<ActiveMenus.Length; ++i)
if (bNewAlwaysTop || !ActiveMenus[i].bAlwaysTop) if (bNewAlwaysTop || !ActiveMenus[i].bAlwaysTop)
{ {
@ -296,7 +296,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
{ {
local int i; local int i;
local KFGUI_Page M; local KFGUI_Page M;
if (MenuClass==None) if (MenuClass==None)
return None; return None;
@ -310,7 +310,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
// Enable mouse on UI if disabled. // Enable mouse on UI if disabled.
SetMenuState(true); SetMenuState(true);
// Check if should use pre-excisting menu. // Check if should use pre-excisting menu.
if (MenuClass.Default.bUnique) if (MenuClass.Default.bUnique)
{ {
@ -326,7 +326,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
} }
return M; return M;
} }
if (MenuClass.Default.bPersistant) if (MenuClass.Default.bPersistant)
{ {
for (i=0; i<PersistentMenus.Length; ++i) for (i=0; i<PersistentMenus.Length; ++i)
@ -345,7 +345,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
if (M==None) // Probably abstract class. if (M==None) // Probably abstract class.
return None; return None;
i = GetFreeIndex(M.bAlwaysTop); i = GetFreeIndex(M.bAlwaysTop);
ActiveMenus[i] = M; ActiveMenus[i] = M;
M.Owner = Self; M.Owner = Self;
@ -361,7 +361,7 @@ simulated function CloseMenu(class<KFGUI_Page> MenuClass, optional bool bCloseAl
if (!bCloseAll && MenuClass==None) if (!bCloseAll && MenuClass==None)
return; return;
if (KeyboardFocus!=None) if (KeyboardFocus!=None)
GrabInputFocus(None); GrabInputFocus(None);
if (InputFocus!=None) if (InputFocus!=None)
@ -375,7 +375,7 @@ simulated function CloseMenu(class<KFGUI_Page> MenuClass, optional bool bCloseAl
M = ActiveMenus[i]; M = ActiveMenus[i];
ActiveMenus.Remove(i,1); ActiveMenus.Remove(i,1);
M.CloseMenu(); M.CloseMenu();
// Cache menu. // Cache menu.
if (M.bPersistant && M.bUnique) if (M.bPersistant && M.bUnique)
PersistentMenus[PersistentMenus.Length] = M; PersistentMenus[PersistentMenus.Length] = M;
@ -391,7 +391,7 @@ simulated function PopCloseMenu(KFGUI_Base Item)
if (Item==None) if (Item==None)
return; return;
if (KeyboardFocus!=None) if (KeyboardFocus!=None)
GrabInputFocus(None); GrabInputFocus(None);
if (InputFocus!=None) if (InputFocus!=None)
@ -405,7 +405,7 @@ simulated function PopCloseMenu(KFGUI_Base Item)
M = ActiveMenus[i]; M = ActiveMenus[i];
ActiveMenus.Remove(i,1); ActiveMenus.Remove(i,1);
M.CloseMenu(); M.CloseMenu();
// Cache menu. // Cache menu.
if (M.bPersistant && M.bUnique) if (M.bPersistant && M.bUnique)
PersistentMenus[PersistentMenus.Length] = M; PersistentMenus[PersistentMenus.Length] = M;
@ -418,7 +418,7 @@ simulated function PopCloseMenu(KFGUI_Base Item)
simulated function BringMenuToFront(KFGUI_Page Page) simulated function BringMenuToFront(KFGUI_Page Page)
{ {
local int i; local int i;
if (ActiveMenus[0].bAlwaysTop && !Page.bAlwaysTop) if (ActiveMenus[0].bAlwaysTop && !Page.bAlwaysTop)
return; // Can't override this menu. return; // Can't override this menu.
@ -431,7 +431,7 @@ simulated function BringMenuToFront(KFGUI_Page Page)
} }
if (i==-1) if (i==-1)
return; // Page isn't open. return; // Page isn't open.
// Put on front of stack. // Put on front of stack.
ActiveMenus.Insert(0,1); ActiveMenus.Insert(0,1);
ActiveMenus[0] = Page; ActiveMenus[0] = Page;
@ -440,7 +440,7 @@ simulated function BringMenuToFront(KFGUI_Page 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;
for (i=(ActiveMenus.Length-1); i>=0; --i) for (i=(ActiveMenus.Length-1); i>=0; --i)
if (MenuClass==None || ActiveMenus[i].Class==MenuClass) if (MenuClass==None || ActiveMenus[i].Class==MenuClass)
return true; return true;
@ -473,7 +473,7 @@ simulated final function GUI_InputMouse(bool bPressed, bool bRight)
local byte i; local byte i;
MousePauseTime = 0; MousePauseTime = 0;
if (bPressed) if (bPressed)
{ {
if (KeyboardFocus!=None && KeyboardFocus!=MouseFocus) if (KeyboardFocus!=None && KeyboardFocus!=MouseFocus)
@ -606,4 +606,4 @@ defaultproperties
{ {
DefaultStyle=class'KF2Style' DefaultStyle=class'KF2Style'
bAbsorbInput=true bAbsorbInput=true
} }

View File

@ -21,7 +21,7 @@ function PlayerInput(float DeltaTime)
{ {
// Do not move. // Do not move.
ControllerOwner.MenuInput(DeltaTime); ControllerOwner.MenuInput(DeltaTime);
if (!ControllerOwner.bAbsorbInput) if (!ControllerOwner.bAbsorbInput)
{ {
aMouseX = 0; aMouseX = 0;
@ -59,4 +59,5 @@ function PreClientTravel(string PendingURL, ETravelType TravelType, bool bIsSeam
defaultproperties defaultproperties
{ {
} }

View File

@ -9,7 +9,7 @@ var bool bLocalClient;
static function OpenMenuForClient(PlayerController PC, class<KFGUI_Page> Page) static function OpenMenuForClient(PlayerController PC, class<KFGUI_Page> Page)
{ {
local KF2GUINetwork G; local KF2GUINetwork G;
foreach PC.ChildActors(class'KF2GUINetwork',G) foreach PC.ChildActors(class'KF2GUINetwork',G)
break; break;
if (G==None) if (G==None)
@ -20,7 +20,7 @@ static function OpenMenuForClient(PlayerController PC, class<KFGUI_Page> 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;
foreach PC.ChildActors(class'KF2GUINetwork',G) foreach PC.ChildActors(class'KF2GUINetwork',G)
break; break;
if (G==None) if (G==None)
@ -61,4 +61,4 @@ defaultproperties
{ {
bAlwaysRelevant=false bAlwaysRelevant=false
bOnlyRelevantToOwner=true bOnlyRelevantToOwner=true
} }

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