// if player already has nades, it gives +1 ammo class FragPickup_SE extends FragPickup; auto state pickup { function bool GiveAmmo(KFHumanPawn Receiver) { local Inventory Inv; local KFWeapon W; if ( Receiver == none ) return false; for ( Inv=Receiver.Inventory; Inv!=none; Inv=Inv.Inventory ) { W = KFWeapon(Inv); if ( W != none && ClassIsChildOf(Inv.class, InventoryType) ) { if ( !W.AmmoMaxed(0) ) { KFWeapon(Inv).AddAmmo(AmmoAmount[0], 0); PlaySound( PickupSound,SLOT_Interact ); SetRespawn(); } return true; } } return false; } function Touch(Actor Other) { // if player have nades (weapon) - give him weapon // otherwise - give weapon if ( KFHumanPawn(Other) != none && !GiveAmmo(KFHumanPawn(Other)) ) super.Touch(Other); } } defaultproperties { cost=40 BuyClipSize=1 AmmoAmount(0)=1 }