Class SRCustomProgress extends ReplicationInfo Abstract; var() localized string ProgressName; var ClientPerkRepLink RepLink; var SRCustomProgress NextLink; replication { reliable if( Role==ROLE_Authority && bNetOwner ) NextLink; } simulated function string GetProgress(); simulated function int GetProgressInt() { return int(GetProgress()); } simulated function string GetDisplayString() { return GetProgress(); } function SetProgress( string S ); function IncrementProgress( int Count ); final function ValueUpdated() { if( RepLink.StatObject!=None ) RepLink.StatObject.NotifyStatChanged(); } simulated final function string GetTimeText( int V ) { local int Hours, Minutes; Minutes = V / 60; Hours = Minutes / 60; V -= (Minutes * 60); Minutes -= (Hours * 60); return Eval(Hours<10,"0"$Hours,string(Hours))$":"$Eval(Minutes<10,"0"$Minutes,string(Minutes))$":"$Eval(V<10,"0"$V,string(V)); } // Called when stat owner killed or was killed by a monster. function NotifyPlayerKill( Pawn Killed, class damageType ); function NotifyPlayerKilled( Pawn Killer, class damageType ); defaultproperties { ProgressName="Lazy modder! Kill him!!" bOnlyRelevantToOwner=True bAlwaysRelevant=False NetUpdateFrequency=2.000000 }