// FreezeRules controls Zed freezing on server side. // FreezeReplicationInfo is used to replciate freezing effects to clients. class FreezeReplicationInfo extends ReplicationInfo; var KFLevelRules KFLevelRules; var byte FrozenCount; var array Frozen; var const material FrozenMaterial; replication { reliable if ( bNetDirty && Role == ROLE_Authority ) FrozenCount; } static function RemoveAnimations(KFMonster M) { local int i; for ( i=0; i 0 && M.OverlayMaterial == FrozenMaterial ) { RemoveAnimations(M); Frozen[i++] = M; } } Frozen.length = i; } simulated function Tick(float DeltaTime) { local int i; // remove dead or unfrozen zeds first while ( i < Frozen.length ) { if ( Frozen[i] == none || Frozen[i].Health <= 0 || Frozen[i].OverlayMaterial != FrozenMaterial ) Frozen.remove(i, 1); else ++i; } if ( Frozen.length != FrozenCount ) LoadFrozen(); for ( i=0; i