class PickupModifier extends Actor
	placeable;
	
var() class<Pickup> 	PickupClass; 	// base pickup class to apply properties on
var() name 				PickupTag;	 	// pickup tag to apply properties on

var() bool 				bRemoveGlow;	 // removes UV2Texture and AmbientGlow 
var() bool 				bRemoveUnlit;	 // sets bUnlit=false (can't see pickups in dark places)
var() int 				SellValue;   	// if > 0 sets weapon's sell value (only for KFWeaponPickup)

replication {
	reliable if ( (bNetInitial || bNetDirty) && Role == ROLE_Authority )
		bRemoveGlow, bRemoveUnlit, SellValue;
}


simulated function PostBeginPlay()
{
	SetTimer(5, false); // give enough time for pickups to spawn
}

simulated function PostNetReceive()
{
	ApplyMod();
}

simulated function Timer()
{
	ApplyMod();
}

simulated function ApplyMod() 
{
	local Actor Other;
	local int count;
	
	foreach DynamicActors(PickupClass, Other, PickupTag) {
		count++;
		
		if ( bRemoveGlow ) {
			Other.ScaleGlow = 0;
			Other.AmbientGlow = 0;
			Pickup(Other).bAmbientGlow = false;
			Other.UV2Texture = none;
		}
		if ( bRemoveUnlit ) {
			SetDisplayProperties(Style, Texture, false); // sets bUnlit
			Other.bStaticLighting = false;
			Other.bUseDynamicLights = true;
		}

		if ( SellValue > 0 && KFWeaponPickup(Other) != none ) {
			KFWeaponPickup(Other).SellValue = SellValue;
		}
	}
	
	Log("PickupModifier: " $ count $ " pickups were modified");
 }
 
 event Trigger( Actor Other, Pawn EventInstigator )
 {
	ApplyMod();
	bClientTrigger = !bClientTrigger;
	NetUpdateTime = Level.TimeSeconds - 1;
 }
 
 
 simulated function ClientTrigger()
 {
	Log("PickupModifier: ClientTrigger()");
	ApplyMod();
 }

	

defaultproperties
{
     PickupClass=Class'KFMod.KFWeaponPickup'
     bHidden=True
     bAlwaysRelevant=True
     bOnlyDirtyReplication=True
     RemoteRole=ROLE_SimulatedProxy
     NetUpdateFrequency=2.000000
     Texture=Texture'Engine.S_Inventory'
     bNetNotify=True
}
