TacoServer/Classic/scripts/autoexec/MapRepetitionChecker.cs

143 lines
4.2 KiB
C#
Raw Normal View History

//To help decrease the chances of a repeated map in the map rotation by correcting repeated maps thru script
2019-02-17 18:58:19 -05:00
//$EvoCachedNextMission = "RoundTheMountain";
//
2019-02-17 18:58:19 -05:00
//Run in GetTeamCounts.cs
function MapRepetitionChecker( %game )
{
2019-02-18 01:58:56 -05:00
//Debug
//%MapRepetitionCheckerDebug = true;
2019-02-17 18:58:19 -05:00
if( $CurrentMissionType $= "CTF" && !$Host::TournamentMode && $MapRepetitionCheckerRunOnce !$= 1 )
{
2019-02-18 01:58:56 -05:00
//First map
if($PreviousMission1back $= "")
2019-02-17 18:58:19 -05:00
{
2019-02-18 01:58:56 -05:00
//Set vars
$PreviousMission1back = $CurrentMission;
//Debug
if(%MapRepetitionCheckerDebug)
echo("PM1: " @ $PreviousMission1back);
2019-02-17 18:58:19 -05:00
return;
}
//1 map back
2019-02-18 01:58:56 -05:00
//Second map
else if($PreviousMission2back $= "")
{
2019-02-18 02:38:08 -05:00
if( $PreviousMission1back $= $EvoCachedNextMission )
MapRepetitionCheckerFindRandom();
2019-02-18 01:58:56 -05:00
//Set vars
$PreviousMission2back = $PreviousMission1back;
$PreviousMission1back = $CurrentMission;
//Debug
if(%MapRepetitionCheckerDebug)
{
2019-02-18 01:58:56 -05:00
echo("PM1: " @ $PreviousMission1back);
echo("PM2: " @ $PreviousMission2back);
}
2019-02-17 18:58:19 -05:00
return;
}
//2 maps back
2019-02-18 01:58:56 -05:00
//Third map
else if($PreviousMission3back $= "")
{
2019-02-18 02:38:08 -05:00
if( $PreviousMission1back $= $EvoCachedNextMission || $PreviousMission2back $= $EvoCachedNextMission )
MapRepetitionCheckerFindRandom();
2019-02-18 01:58:56 -05:00
//Set vars
$PreviousMission3back = $PreviousMission2back;
$PreviousMission2back = $PreviousMission1back;
$PreviousMission1back = $CurrentMission;
//Debug
if(%MapRepetitionCheckerDebug)
{
2019-02-18 01:58:56 -05:00
echo("PM1: " @ $PreviousMission1back);
echo("PM2: " @ $PreviousMission2back);
echo("PM3: " @ $PreviousMission3back);
}
2019-02-17 18:58:19 -05:00
return;
}
//3 maps back
2019-02-18 01:58:56 -05:00
//Forth map
else if($PreviousMission4back $= "")
{
2019-02-18 02:38:08 -05:00
if( $PreviousMission1back $= $EvoCachedNextMission || $PreviousMission2back $= $EvoCachedNextMission || $PreviousMission3back $= $EvoCachedNextMission )
MapRepetitionCheckerFindRandom();
2019-02-18 01:58:56 -05:00
//Set vars
$PreviousMission4back = $PreviousMission3back;
$PreviousMission3back = $PreviousMission2back;
$PreviousMission2back = $PreviousMission1back;
$PreviousMission1back = $CurrentMission;
//Debug
if(%MapRepetitionCheckerDebug)
{
echo("PM1: " @ $PreviousMission1back);
echo("PM2: " @ $PreviousMission2back);
echo("PM3: " @ $PreviousMission3back);
echo("PM4: " @ $PreviousMission4back);
}
return;
}
//4 maps back
//Fifth map
else
{
2019-02-18 02:38:08 -05:00
if( $PreviousMission1back $= $EvoCachedNextMission || $PreviousMission2back $= $EvoCachedNextMission || $PreviousMission3back $= $EvoCachedNextMission || $PreviousMission4back $= $EvoCachedNextMission )
MapRepetitionCheckerFindRandom();
2019-02-18 01:58:56 -05:00
//Set vars
$PreviousMission4back = $PreviousMission3back;
$PreviousMission3back = $PreviousMission2back;
$PreviousMission2back = $PreviousMission1back;
$PreviousMission1back = $CurrentMission;
//Debug
if(%MapRepetitionCheckerDebug)
{
2019-02-18 01:58:56 -05:00
echo("PM1: " @ $PreviousMission1back);
echo("PM2: " @ $PreviousMission2back);
echo("PM3: " @ $PreviousMission3back);
echo("PM4: " @ $PreviousMission4back);
}
2019-02-17 18:58:19 -05:00
return;
}
2019-02-17 18:58:19 -05:00
$MapRepetitionCheckerRunOnce = 1;
}
}
function MapRepetitionCheckerFindRandom()
{
SetNextMapGetRandoms( %client );
%MapCheckerRandom = getRandom(1,6);
if(%MapCheckerRandom $= 1) $EvoCachedNextMission = $SetNextMissionMapSlot1;
else if(%MapCheckerRandom $= 2) $EvoCachedNextMission = $SetNextMissionMapSlot2;
else if(%MapCheckerRandom $= 3) $EvoCachedNextMission = $SetNextMissionMapSlot3;
else if(%MapCheckerRandom $= 4) $EvoCachedNextMission = $SetNextMissionMapSlot4;
else if(%MapCheckerRandom $= 5) $EvoCachedNextMission = $SetNextMissionMapSlot5;
else if(%MapCheckerRandom $= 6) $EvoCachedNextMission = $SetNextMissionMapSlot6;
2019-02-17 18:58:19 -05:00
2019-02-18 02:38:08 -05:00
if($EvoCachedNextMission $= $PreviousMission1back || $EvoCachedNextMission $= $PreviousMission2back || $EvoCachedNextMission $= $PreviousMission3back || $EvoCachedNextMission $= $PreviousMission4back)
2019-02-17 18:58:19 -05:00
MapRepetitionCheckerFindRandom();
2019-02-18 02:38:08 -05:00
else
2019-02-17 18:58:19 -05:00
messageAll('MsgNoBaseRapeNotify', '\crMap Repetition Corrected: Next mission set to %1.', $EvoCachedNextMission);
}
//Once per match
//Called in DefaultGame::gameOver(%game) in defaultGame.ovl evo
function MapRepetitionCheckerReset( %game )
{
$MapRepetitionCheckerRunOnce = 0;
}