rott/kf_sources/KFMod/Classes/GoldenDualDeagle.uc
2026-07-14 20:27:09 +07:00

136 lines
3.2 KiB
Ucode

//=============================================================================
// Dual golden 50 Cal Inventory class
//=============================================================================
class GoldenDualDeagle extends DualDeagle;
function GiveTo( pawn Other, optional Pickup Pickup )
{
local Inventory I;
local int OldAmmo;
local bool bNoPickup;
MagAmmoRemaining = 0;
For( I = Other.Inventory; I != None; I =I.Inventory )
{
if ( Deagle(I) != none )
{
if( WeaponPickup(Pickup)!= none )
{
WeaponPickup(Pickup).AmmoAmount[0] += Weapon(I).AmmoAmount(0);
}
else
{
OldAmmo = Weapon(I).AmmoAmount(0);
bNoPickup = true;
}
MagAmmoRemaining = Deagle(I).MagAmmoRemaining;
I.Destroyed();
I.Destroy();
Break;
}
}
if ( KFWeaponPickup(Pickup) != None && Pickup.bDropped )
{
MagAmmoRemaining = Clamp(MagAmmoRemaining + KFWeaponPickup(Pickup).MagAmmoRemaining, 0, MagCapacity);
}
else
{
MagAmmoRemaining = Clamp(MagAmmoRemaining + Class'GoldenDeagle'.Default.MagCapacity, 0, MagCapacity);
}
Super(Weapon).GiveTo(Other, Pickup);
if ( bNoPickup )
{
AddAmmo(OldAmmo, 0);
Clamp(Ammo[0].AmmoAmount, 0, MaxAmmo(0));
}
}
function DropFrom(vector StartLocation)
{
local int m;
local Pickup Pickup;
local Inventory I;
local int AmmoThrown, OtherAmmo;
if( !bCanThrow )
return;
AmmoThrown = AmmoAmount(0);
ClientWeaponThrown();
for (m = 0; m < NUM_FIRE_MODES; m++)
{
if (FireMode[m].bIsFiring)
StopFire(m);
}
if ( Instigator != None )
DetachFromPawn(Instigator);
if( Instigator.Health > 0 )
{
OtherAmmo = AmmoThrown / 2;
AmmoThrown -= OtherAmmo;
I = Spawn(Class'GoldenDeagle');
I.GiveTo(Instigator);
Weapon(I).Ammo[0].AmmoAmount = OtherAmmo;
GoldenDeagle(I).MagAmmoRemaining = MagAmmoRemaining / 2;
MagAmmoRemaining = Max(MagAmmoRemaining-GoldenDeagle(I).MagAmmoRemaining,0);
}
Pickup = Spawn(Class'GoldenDeaglePickup',,, StartLocation);
if ( Pickup != None )
{
Pickup.InitDroppedPickupFor(self);
Pickup.Velocity = Velocity;
WeaponPickup(Pickup).AmmoAmount[0] = AmmoThrown;
if( KFWeaponPickup(Pickup)!=None )
KFWeaponPickup(Pickup).MagAmmoRemaining = MagAmmoRemaining;
if (Instigator.Health > 0)
WeaponPickup(Pickup).bThrown = true;
}
Destroyed();
Destroy();
}
simulated function bool PutDown()
{
if ( Instigator.PendingWeapon.class == class'GoldenDeagle' )
{
bIsReloading = false;
}
return super.PutDown();
}
defaultproperties
{
skins(0)=Combiner'KF_Weapons_Gold_T.Weapons.Gold_deagle_cmb'
FireModeClass(0)=Class'KFMod.GoldenDualDeagleFire'
Description="Dual golden .50 calibre action express handgun. Dual golden 50's is double the fun."
PickupClass=Class'KFMod.GoldenDualDeaglePickup'
AttachmentClass=Class'KFMod.GoldenDualDeagleAttachment'
ItemName="Dual Golden Handcannons"
Mesh=SkeletalMesh'KF_Weapons_Trip.Dual50_Trip'
HudImage=Texture'KillingFloor2HUD.WeaponSelect.Gold_Dual_Deagle_unselected'
SelectedHudImage=Texture'KillingFloor2HUD.WeaponSelect.Gold_Dual_Deagle'
TraderInfoTexture=Texture'KillingFloor2HUD.Trader_Weapon_Icons.Trader_Gold_Dual_Deagle'
appID=210944
}