1
0
This commit is contained in:
GenZmeY 2023-03-18 01:57:42 +03:00
parent 2942d046da
commit 688183c1f1
9 changed files with 102 additions and 8 deletions

View File

@ -747,7 +747,7 @@ function float FillAmmo( out SItemInformation ItemInfo, optional bool bIsGrenade
function int GetFillAmmoCost( out SItemInformation ItemInfo )
{
local int AmmoCount, MaxAmmoCount;
local float MissingAmmo, PricePerMag, MagSize, PricePerRound;
local float MissingAmmo, PricePerMag, MagSize, PricePerRound, TotalFill, Fractional;
local float AmmoCostScale;
local KFGameReplicationInfo KFGRI;
@ -784,8 +784,20 @@ function int GetFillAmmoCost( out SItemInformation ItemInfo )
MissingAmmo = MaxAmmoCount - AmmoCount;
PricePerRound = PricePerMag / MagSize;
TotalFill = MissingAmmo * PricePerRound;
// Use FCeil so you can never buy ammo for 0 Do$h on an int conversion
return FCeil(MissingAmmo * PricePerRound);
// Unreal does a strange thing with a float number that doesn't have decimals, if you ceiling on it it will add 1.0 to it..
Fractional = TotalFill - FFloor(TotalFill);
if (FFloor(TotalFill) != 0 && Fractional < 0.0001f)
{
return FFloor(TotalFill);
}
return FCeil(TotalFill);
}
// auto fill

View File

@ -108,12 +108,20 @@ function UpdateHealer(optional bool bForce)
// Update the Healer charge amount
if( LastHealerAmmoPct != CurrentHealerAmmoPct || bForce)
{
SetInt("playerHealerCharge" , int(CurrentHealerAmmoPct * 100.f));
LastHealerAmmoPct = CurrentHealerAmmoPct;
}
}
function ResetSyringe(float Ammo, float MaxAmmo)
{
local float CurrentHealerAmmoPct;
CurrentHealerAmmoPct = Ammo;
SetInt("playerHealerCharge" , int(CurrentHealerAmmoPct * 100.f));
LastHealerAmmoPct = MaxAmmo;
}
function UpdatePerk()
{
local byte CurrentPerkLevel;

View File

@ -1190,6 +1190,14 @@ function UpdateVIP(ReplicatedVIPGameInfo VIPInfo, bool bIsVIP)
}
}
function ResetSyringe(float Ammo, float MaxAmmo)
{
if (PlayerStatusContainer != none)
{
PlayerStatusContainer.ResetSyringe(Ammo, MaxAmmo);
}
}
//==============================================================
// Input
//==============================================================

View File

@ -208,6 +208,35 @@ simulated function UpdateVIPWidget(ReplicatedVIPGameInfo VIPInfo)
}
}
reliable client function ResetSyringe()
{
local KFInventoryManager InventoryManager;
local KFWeapon CurrentWeapon;
InventoryManager = KFInventoryManager(Pawn.InvManager);
if (InventoryManager.HealerWeapon == none)
{
foreach InventoryManager.InventoryActors ( class'KFWeapon', CurrentWeapon )
{
if (KFWeap_HealerBase(CurrentWeapon) != none)
{
InventoryManager.HealerWeapon = KFWeap_HealerBase(CurrentWeapon);
}
}
}
if (InventoryManager.HealerWeapon != none)
{
InventoryManager.HealerWeapon.AmmoCount[0] = InventoryManager.HealerWeapon.MagazineCapacity[0];
if (MyGFxHUD != none)
{
MyGFxHUD.ResetSyringe(InventoryManager.HealerWeapon.AmmoCount[0], InventoryManager.HealerWeapon.MagazineCapacity[0]);
}
}
}
function bool CanUseHealObject()
{
local KFGameReplicationInfo KFGRI;

View File

@ -28,6 +28,16 @@ event FavoriteWeapon(name WeaponName)
{
// Only add if unique
FavoriteWeapons.AddItem(string(WeaponName));
while (FavoriteWeapons.Length > 12)
{
// There's a crash on the save system because the string this generates is huge
// It usually happens when you start having more than 12 weapons as Favorite
// We are going to cap it then, we remove from the beginning
FavoriteWeapons.Remove(0, 1);
}
Dirty = true;
}
}

View File

@ -117,6 +117,8 @@ function GivenTo(Pawn NewOwner, optional bool bDoNotActivate)
KFInvManger = KFInventoryManager(InvManager);
if( InvManager != none && KFInvManger != none )
{
`Log("GivenToGivenToGivenToGivenToGivenToGivenToGivenToGivenToGivenToGivenToGivenToGivenTo");
KFInvManger.HealerWeapon = self;
}
}

View File

@ -6086,9 +6086,12 @@ simulated state WeaponEquipping
ScaledRate = 1.0f;
CurrentPerk = GetPerk();
if( CurrentPerk != none )
{
if( CurrentPerk.IsWeaponOnPerk( self,, CurrentPerk.class ) )
{
CurrentPerk.ModifyWeaponSwitchTime( ScaledRate );
}
}
return 1.f / ScaledRate;
}
@ -6112,9 +6115,12 @@ simulated function TimeWeaponEquipping()
InstigatorPerk = GetPerk();
if( InstigatorPerk != none )
{
if( InstigatorPerk.IsWeaponOnPerk( self,, InstigatorPerk.class ) )
{
InstigatorPerk.ModifyWeaponSwitchTime( ModifiedEquipTime );
}
}
// Play the animation
PlayWeaponEquip( ModifiedEquipTime );
@ -6189,9 +6195,12 @@ simulated state WeaponPuttingDown
ScaledRate = 1.0f;
CurrentPerk = GetPerk();
if( CurrentPerk != none )
{
if( CurrentPerk.IsWeaponOnPerk( self,, CurrentPerk.class ) )
{
CurrentPerk.ModifyWeaponSwitchTime( ScaledRate );
}
}
return 1.f / ScaledRate;
}
@ -6365,9 +6374,12 @@ simulated function TimeWeaponPutDown()
InstigatorPerk = GetPerk();
if( InstigatorPerk != none )
{
if( InstigatorPerk.IsWeaponOnPerk( self,, InstigatorPerk.class ) )
{
InstigatorPerk.ModifyWeaponSwitchTime( ModifiedPutDownTime );
}
}
SetTimer( ModifiedPutDownTime > 0 ? ModifiedPutDownTime : 0.01, false, nameof(WeaponIsDown) );

View File

@ -1646,6 +1646,7 @@ function PerkRoulette_InventoryCustomDelegate()
local KFPerk Perk;
local int i;
local byte NewPerk;
local KFInventoryManager InventoryManager;
for (i = PerkRoulette_PlayersDelegateInventory.Length - 1 ; i >= 0 ; --i)
{
@ -1680,6 +1681,16 @@ function PerkRoulette_InventoryCustomDelegate()
AddDefaultInventory(KFPC_WS.Pawn);
PerkRoulette_PlayersDelegateInventory.Remove(i, 1);
// Force fill syringe
InventoryManager = KFInventoryManager(KFPC_WS.Pawn.InvManager);
if (InventoryManager.HealerWeapon != none)
{
InventoryManager.HealerWeapon.AmmoCount[0] = InventoryManager.HealerWeapon.MagazineCapacity[0];
}
KFPC_WS.ResetSyringe();
}
}

View File

@ -77,6 +77,8 @@ simulated protected function PrepareExplosionTemplate()
super(KFProjectile).PrepareExplosionTemplate();
ExplosionTemplate.bIgnoreInstigator = true;
OwnerWeapon = Weapon(Owner);
if (OwnerWeapon != none)
{