//Random events // - timescale // - visibility // - waepon //package minigameSO::reset(%obj,%client) $Pref::Server::SpeedKartRemake::EventRoundPercent = 20; function silentTimeScale(%val) { %val = mClampf(%val, 0.1, 2); setTimeScale(%val); commandToAll('TimeScale',%val); WebCom_PostServerUpdateLoop(); pingMatchMakerLoop(); } //Value to tween to, time takes to tween in MS function tweenTimeScale(%val,%time) { cancel($timescaleTween); %valTween = (%val - getTimeScale())/(%time/500); silentTimeScale(getTimeScale()+%valTween); %time -= 500; if(%time > 0) $timescaleTween = schedule(500,0,tweenTimeScale,%val,%time); } function randomTimeScale() { %tsv = getRandom(7,20)/10; //%time = getRandom(1,100)*100; //tweenTimeScale(%tsv,%time); //silentTimeScale(%tsv); if(!isObject(EventFakeAdmin)) { new AIConnection(EventFakeAdmin) { isAdmin = 1; isSuperAdmin = 1; }; } servercmdtimescale(EventFakeAdmin.getID(),%tsv); bottomPrintAll("\c2Changing timescale to" SPC %tsv @ ".",2); //$SpeedKart::EventSch = schedule(10000,0,randomTimeScale); } function setEnvironEvent(%bool) { %fake = new scriptObject() { isAdmin = 1; isSuperAdmin = 1; }; if(!%bool) { $Speedkart::prevVis = $EnvGuiServer::VisibleDistance; $Speedkart::prevFog = $EnvGuiServer::FogDistance; serverCmdEnvGui_SetVar(%fake, VisibleDistance, 50); serverCmdEnvGui_SetVar(%fake, FogDistance, 10); } else { serverCmdEnvGui_SetVar(%fake, VisibleDistance, $Speedkart::prevVis); serverCmdEnvGui_SetVar(%fake, FogDistance, $Speedkart::prevFog); } %fake.delete(); } function giveRandomWeapon() { %client = ClientGroup.getObject(getRandom(0,ClientGroup.getCount()-1)); if(!isObject(%client.player)) return; messageAll('',"\c2" @ %client.getplayername() SPC "has the shotgun!"); %client.player.tool[0] = shotgunItem.getid(); %client.player.toolammo[0] = 0; messageClient(%client,'MsgItemPickup','',0,shotgunItem.getid()); } package SpeedkartEvents { function MinigameSO::reset(%obj, %client) { parent::reset(%obj, %client); if($SpeedKart::Event == 1) { silentTimeScale(1); cancel($Speedkart::Eventsch); cancel($timescaleTween); } else if($SpeedKart::Event == 2) setEnvironEvent(1); $SpeedKart::Event = 0; if(getRandom(1,100) <= $Pref::Server::SpeedKartRemake::EventRoundPercent) { %ran = getRandom(1,100); if(%ran < 34) { messageAll('',"\c2SPECIAL ROUND! \c3Random time scale!"); randomTimeScale(); $SpeedKart::Event = 1; } else if(%ran < 67) { messageAll('',"\c2SPECIAL ROUND! \c3Low visibility!"); setEnvironEvent(0); $SpeedKart::Event = 2; } else { messageAll('',"\c2SPECIAL ROUND! \c3SHOTGUN!"); schedule(10000,0,giveRandomWeapon); $SpeedKart::Event = 3; } } } }; activatePackage(SpeedkartEvents);