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'
 | |
| }
 |