//============================================================================= // LightningFix. // To be used as ServerActor on a dedicated server. //============================================================================= class LightningFix expands Actor; var DistanceLightning DL[64]; var int NumDL; var bool bLightning; simulated function PostBeginPlay() { Log("LightningFix: Actor spawned."); NumDL = FindDL(); if ( NumDL == 0 ) { Log("LightningFix: No DistanceLightning found in"@Left(Self,InStr(Self,"."))$"."); Destroy(); } else { Log("LightningFix: Found"@NumDL@"DistanceLightning in"@Left(Self,InStr(Self,"."))$"."); if ( Level.NetMode == NM_Client ) SetTimer(0.1,False); } } simulated function int FindDL() { local Actor A; local int i, k; ForEach AllActors(class'Actor', A) if ( A.IsA('DistanceLightning') ) for ( i = 0; i < ArrayCount(DL); i++ ) if ( DL[i] == None ) { DL[i] = DistanceLightning(A); k++; break; } return k; } simulated function Timer() { ToggleLights(); if ( bLightning ) SetTimer(0.4+FRand()*0.05,False); else SetTimer(10+FRand()*20,False); bLightning = !bLightning; } simulated function ToggleLights() { local int i; for ( i = 0; i < ArrayCount(DL); i++ ) if ( DL[i] != None ) { if ( bLightning ) DL[i].LightType = LT_Flicker; else DL[i].LightType = LT_None; } else break; } defaultproperties { bHidden=True bAlwaysRelevant=True bNetTemporary=True RemoteRole=ROLE_SimulatedProxy }