fix style
This commit is contained in:
parent
47ed596664
commit
7175a6c7b6
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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).
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,4 +7,5 @@ protected function SpecialCringeEffectsfor (Actor Victim, float VictimDist)
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -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')
|
||||||
}
|
}
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -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')
|
||||||
|
@ -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);
|
||||||
}
|
}
|
@ -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);
|
||||||
|
@ -62,4 +62,5 @@ function Callback_Equip(int ItemDefinition)
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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
|
||||||
|
@ -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'))
|
||||||
|
@ -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
|
||||||
|
@ -7,4 +7,5 @@ static simulated event bool IsABoss()
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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");
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -96,4 +96,4 @@ defaultproperties
|
|||||||
FuseTime=0.35
|
FuseTime=0.35
|
||||||
NumCrackers=6
|
NumCrackers=6
|
||||||
bNetTemporary=true
|
bNetTemporary=true
|
||||||
}
|
}
|
||||||
|
@ -58,4 +58,4 @@ defaultproperties
|
|||||||
Damage=170
|
Damage=170
|
||||||
DamageRadius=800
|
DamageRadius=800
|
||||||
End Object
|
End Object
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -9,4 +9,4 @@ defaultproperties
|
|||||||
Damage=40
|
Damage=40
|
||||||
DamageRadius=200
|
DamageRadius=200
|
||||||
End Object
|
End Object
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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;
|
||||||
|
@ -52,4 +52,5 @@ function SetPerkList()
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -7,4 +7,4 @@ defaultproperties
|
|||||||
AmmoPricePerMag=0
|
AmmoPricePerMag=0
|
||||||
|
|
||||||
WeaponClassPath="ServerExt.ExtWeap_Pistol_9mm"
|
WeaponClassPath="ServerExt.ExtWeap_Pistol_9mm"
|
||||||
}
|
}
|
||||||
|
@ -16,4 +16,4 @@ defaultproperties
|
|||||||
UpgradeSellPrice[1] = 0
|
UpgradeSellPrice[1] = 0
|
||||||
UpgradeSellPrice[2] = 0
|
UpgradeSellPrice[2] = 0
|
||||||
UpgradeSellPrice[3] = 0
|
UpgradeSellPrice[3] = 0
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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];
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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"))
|
||||||
|
|
||||||
}
|
}
|
@ -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++);
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -7,6 +7,7 @@ function SpecialMoveStarted(bool bForced, Name PrevMove)
|
|||||||
|
|
||||||
function SpecialMoveEnded(Name PrevMove, Name NextMove)
|
function SpecialMoveEnded(Name PrevMove, Name NextMove)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
}
|
}
|
@ -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')
|
||||||
}
|
}
|
@ -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.
|
||||||
}
|
}
|
@ -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')
|
||||||
}
|
}
|
@ -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
|
||||||
}
|
}
|
@ -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')
|
||||||
}
|
}
|
@ -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';
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
@ -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')
|
||||||
}
|
}
|
@ -2,4 +2,5 @@ class Ext_TGroupMonster extends Ext_TGroupBase;
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -33,4 +33,5 @@ static final function byte GetMaxLimit(Ext_PerkBase Perk)
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -2,4 +2,5 @@ class Ext_TGroupZEDTime extends Ext_TGroupBase;
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
|
@ -24,4 +24,5 @@ function Timer()
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -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)
|
||||||
}
|
}
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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];
|
||||||
|
@ -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];
|
||||||
|
@ -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]);
|
||||||
|
@ -8,4 +8,5 @@ var class<Ext_TraitBase> TraitClass;
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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];
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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'
|
||||||
}
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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'
|
||||||
}
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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];
|
||||||
|
@ -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'))
|
||||||
|
@ -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'))
|
||||||
|
@ -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'))
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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"))
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -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
Loading…
x
Reference in New Issue
Block a user