rott/kf_sources/ScrnBalanceSrv/Classes/ScrnMapInfo.uc
2026-07-14 20:27:09 +07:00

118 lines
4.0 KiB
Ucode

// moved from ScrnBalanceSrv to avoid in-game changes to ScrnBalanceSrv.ini
class ScrnMapInfo extends Info
Config(ScrnMapInfo);
struct SMapInfo {
var String MapName;
var int MaxZombiesOnce;
var float Difficulty; // map difficulty, where 0 is normal difficulty, -1.0 - easiest, 2.0 - twice harder that normal
var byte ForceEventNum; // use event zeds for this map. 0 - don't force
};
var config array<SMapInfo> MapInfo;
/* Searches MapInfo array for a given map
* @param bCreateNew [default = false] : should new record be created, if it doesn't exist?
* @param MapName [default = <current map>] : map file name without extension
* @return record index in MapInfo array or -1 if map info not found nad bCreateNew=false
*/
function int FindMapInfo(optional bool bCreateNew, optional string MapName)
{
local int i;
if ( MapName == "" )
MapName = class'KFGameType'.static.GetCurrentMapName(Level);
for ( i = 0; i < MapInfo.length; ++i ) {
if ( MapInfo[i].MapName ~= MapName )
return i;
}
// if we reached here, then MapInfo doesn't exist
if ( bCreateNew ) {
MapInfo.insert(i, 1);
MapInfo[i].MapName = MapName;
return i;
}
return -1;
}
function bool SetMapZeds(int value, PlayerController Sender)
{
local int i;
i = FindMapInfo(false);
if ( value == 0 ) {
if ( i == -1 || MapInfo[i].MaxZombiesOnce == 0 )
Sender.ClientMessage("Map-zeds-at-once = DEFAULT");
else
Sender.ClientMessage("Map-zeds-at-once = " $ MapInfo[i].MaxZombiesOnce);
return false;
}
if ( value < 32 || value > 192 ) {
Sender.ClientMessage("Map-zeds-at-once must be in range [32..192], e.g. 'MUTATE MAPZEDS 64'");
return false;
}
if ( i == -1 )
i = FindMapInfo(true);
MapInfo[i].MaxZombiesOnce = value;
Sender.ClientMessage("Map-zeds-at-once set to "$value$".");
SaveConfig();
return true;
}
function bool SetMapDifficulty(string StrDiff, PlayerController Sender)
{
local int i;
local float d;
i = FindMapInfo(false);
if ( StrDiff == "" ) {
if ( i != -1 )
d = MapInfo[i].Difficulty;
Sender.ClientMessage("Map Difficulty = "$d$". (-1.0 = easiest; 0.0 = normal; 1.0 = hardest)");
return false;
}
if ( StrDiff != "0" && StrDiff != "0.0" && StrDiff != "0.00" ) {
d = float(StrDiff);
if ( d == 0.0 ) {
Sender.ClientMessage("Map Difficulty must be a number between -1.0 and 1.0! (-1.0 = easiest; 0.0 = normal; 1.0 = hardest)");
return false;
}
}
if ( d < -1.0 || d > 1.0 ) {
Sender.ClientMessage("Map Difficulty must be a number between -1.0 and 1.0! (-1.0 = easiest; 0.0 = normal; 1.0 = hardest)");
return false;
}
if ( i == -1 )
i = FindMapInfo(true);
MapInfo[i].Difficulty = d;
Sender.ClientMessage("Map Difficulty set to "$d$".");
SaveConfig();
return true;
}
defaultproperties
{
MapInfo(0)=(MapName="KF-AbusementPark",Difficulty=0.500000,ForceEventNum=1)
MapInfo(1)=(MapName="KF-Steamland",ForceEventNum=1)
MapInfo(2)=(MapName="KF-Hellride",Difficulty=-0.250000,ForceEventNum=1)
MapInfo(3)=(MapName="KF-HillbillyHorror",ForceEventNum=2)
MapInfo(4)=(MapName="KF-FrightYard",ForceEventNum=2)
MapInfo(5)=(MapName="KF-Clandestine",ForceEventNum=2)
MapInfo(6)=(MapName="KF-EvilSantasLair",ForceEventNum=3)
MapInfo(7)=(MapName="KF-IceCave",Difficulty=0.250000,ForceEventNum=3)
MapInfo(8)=(MapName="KF-ThrillsChills",ForceEventNum=3)
MapInfo(9)=(MapName="KF-BioticsLab",ForceEventNum=255)
MapInfo(10)=(MapName="KF-Farm",Difficulty=-0.250000,ForceEventNum=255)
MapInfo(11)=(MapName="KF-Manor",ForceEventNum=255)
MapInfo(12)=(MapName="KF-Offices",ForceEventNum=255)
MapInfo(13)=(MapName="KF-WestLondon",ForceEventNum=255)
}