65 lines
2.6 KiB
Ucode
65 lines
2.6 KiB
Ucode
class NiceFlareRevolverPickup extends ScrnFlareRevolverPickup;
|
|
function inventory SpawnCopy( pawn Other ) {
|
|
local Inventory CurInv;
|
|
local KFWeapon PistolInInventory;
|
|
For( CurInv=Other.Inventory; CurInv!=none; CurInv=CurInv.Inventory ) {
|
|
PistolInInventory = KFWeapon(CurInv);
|
|
if( PistolInInventory != none && PistolInInventory.class == default.InventoryType ) {
|
|
// destroy the inventory to force parent SpawnCopy() to make a new instance of class
|
|
// we specified below
|
|
if( Inventory!=none )
|
|
Inventory.Destroy();
|
|
// spawn dual guns instead of another instance of single
|
|
InventoryType = DualInventoryType;
|
|
// Make dualies to cost twice of lowest value in case of PERKED+UNPERKED pistols
|
|
SellValue = 2 * min(SellValue, PistolInInventory.SellValue);
|
|
AmmoAmount[0]+= PistolInInventory.AmmoAmount(0);
|
|
MagAmmoRemaining+= PistolInInventory.MagAmmoRemaining;
|
|
CurInv.Destroyed();
|
|
CurInv.Destroy();
|
|
Return Super(KFWeaponPickup).SpawnCopy(Other);
|
|
}
|
|
}
|
|
InventoryType = Default.InventoryType;
|
|
Return Super(KFWeaponPickup).SpawnCopy(Other);
|
|
}
|
|
function bool CheckCanCarry(KFHumanPawn Hm) {
|
|
local Inventory CurInv;
|
|
local bool bHasSinglePistol;
|
|
local float AddWeight;
|
|
AddWeight = class<KFWeapon>(default.InventoryType).default.Weight;
|
|
for ( CurInv = Hm.Inventory; CurInv != none; CurInv = CurInv.Inventory ) {
|
|
if ( CurInv.class == default.DualInventoryType ) {
|
|
//already have duals, can't carry a single
|
|
if ( LastCantCarryTime < Level.TimeSeconds && PlayerController(Hm.Controller) != none )
|
|
{
|
|
LastCantCarryTime = Level.TimeSeconds + 0.5;
|
|
PlayerController(Hm.Controller).ReceiveLocalizedMessage(Class'KFMainMessages', 2);
|
|
}
|
|
return false;
|
|
}
|
|
else if ( CurInv.class == default.InventoryType ) {
|
|
bHasSinglePistol = true;
|
|
AddWeight = default.DualInventoryType.default.Weight - AddWeight;
|
|
break;
|
|
}
|
|
}
|
|
if ( !Hm.CanCarry(AddWeight) ) {
|
|
if ( LastCantCarryTime < Level.TimeSeconds && PlayerController(Hm.Controller) != none )
|
|
{
|
|
LastCantCarryTime = Level.TimeSeconds + 0.5;
|
|
PlayerController(Hm.Controller).ReceiveLocalizedMessage(Class'KFMainMessages', 2);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
defaultproperties
|
|
{
|
|
DualInventoryType=class'NiceDualFlareRevolver'
|
|
ItemName="Flare Revolver NW"
|
|
ItemShortName="Flare Rev. NW"
|
|
InventoryType=class'NiceFlareRevolver'
|
|
}
|