2022-05-11 12:43:39 +00:00
class SpawnListBossWaves extends Object
dependson ( ZedSpawner )
config ( ZedSpawner ) ;
struct S _SpawnEntryCfg
{
var String BossClass ;
var String ZedClass ;
var int Delay ;
var int Probability ;
2022-05-16 02:42:13 +00:00
var int SpawnCountBase ;
var int SingleSpawnLimit ;
2022-05-11 12:43:39 +00:00
var bool bSpawnAtPlayerStart ;
} ;
var config bool bStopRegularSpawn ;
var config Array < S _SpawnEntryCfg > Spawn ;
public static function InitConfig ( )
{
local S _SpawnEntryCfg SpawnEntry ;
default . bStopRegularSpawn = true ;
default . Spawn . Length = 0 ;
SpawnEntry . BossClass = "KFGameContent.KFPawn_ZedFleshpoundKing" ;
SpawnEntry . ZedClass = "SomePackage.SomeFleshpoundClass" ;
2022-05-16 02:42:13 +00:00
SpawnEntry . SpawnCountBase = 2 ;
SpawnEntry . SingleSpawnLimit = 1 ;
2022-05-11 12:43:39 +00:00
SpawnEntry . Delay = 60 ;
2022-05-16 02:42:13 +00:00
SpawnEntry . Probability = 100 ;
2022-05-11 12:43:39 +00:00
SpawnEntry . bSpawnAtPlayerStart = false ;
default . Spawn . AddItem ( SpawnEntry ) ;
StaticSaveConfig ( ) ;
}
public static function Array < S _SpawnEntry > Load ( E _LogLevel LogLevel )
{
local Array < S _SpawnEntry > SpawnList ;
local S _SpawnEntryCfg SpawnEntryCfg ;
local S _SpawnEntry SpawnEntry ;
local int Line ;
local bool Errors ;
` ZS_Info("Load boss waves spawn list:", LogLevel);
foreach default . Spawn ( SpawnEntryCfg , Line )
{
Errors = false ;
SpawnEntry . BossClass = class < KFPawn _Monster > ( DynamicLoadObject ( SpawnEntryCfg . BossClass , class 'Class' ) ) ;
if ( SpawnEntry . BossClass == None )
{
` ZS_Warn("[" $ Line + 1 $ "]" @ "Can't load boss class:" @ SpawnEntryCfg.BossClass, LogLevel);
Errors = true ;
}
SpawnEntry . ZedClass = class < KFPawn _Monster > ( DynamicLoadObject ( SpawnEntryCfg . ZedClass , class 'Class' ) ) ;
if ( SpawnEntry . ZedClass == None )
{
` ZS_Warn("[" $ Line + 1 $ "]" @ "Can't load zed class:" @ SpawnEntryCfg.ZedClass, LogLevel);
Errors = true ;
}
2022-05-16 02:42:13 +00:00
SpawnEntry . RelativeStartDefault = 0. f ;
SpawnEntry . DelayDefault = SpawnEntryCfg . Delay ;
if ( SpawnEntryCfg . Delay <= 0 )
2022-05-11 12:43:39 +00:00
{
2022-05-16 02:42:13 +00:00
` ZS_Warn("[" $ Line + 1 $ "]" @ "Delay" @ "(" $ SpawnEntryCfg.Delay $ ")" @ "must be greater than 0", LogLevel);
2022-05-11 12:43:39 +00:00
Errors = true ;
}
SpawnEntry . Probability = SpawnEntryCfg . Probability / 100. f ;
if ( SpawnEntryCfg . Probability <= 0 || SpawnEntryCfg . Probability > 100 )
{
` ZS_Warn("[" $ Line + 1 $ "]" @ "Probability" @ "(" $ SpawnEntryCfg.Probability $ ")" @ "must be greater than 0 and less than or equal 100", LogLevel);
Errors = true ;
}
2022-05-16 02:42:13 +00:00
SpawnEntry . SpawnCountBase = SpawnEntryCfg . SpawnCountBase ;
if ( SpawnEntry . SpawnCountBase <= 0 )
2022-05-11 12:43:39 +00:00
{
2022-05-16 02:42:13 +00:00
` ZS_Warn("[" $ Line + 1 $ "]" @ "SpawnCountBase" @ "(" $ SpawnEntryCfg.SpawnCountBase $ ")" @ "must be greater than 0", LogLevel);
2022-05-11 12:43:39 +00:00
Errors = true ;
}
2022-05-16 02:42:13 +00:00
SpawnEntry . SingleSpawnLimitDefault = SpawnEntryCfg . SingleSpawnLimit ;
if ( SpawnEntry . SingleSpawnLimit < 0 )
2022-05-11 12:43:39 +00:00
{
2022-05-16 02:42:13 +00:00
` ZS_Warn("[" $ Line + 1 $ "]" @ "SingleSpawnLimit" @ "(" $ SpawnEntryCfg.SingleSpawnLimit $ ")" @ "must be equal or greater than 0", LogLevel);
2022-05-11 12:43:39 +00:00
Errors = true ;
}
SpawnEntry . SpawnAtPlayerStart = SpawnEntryCfg . bSpawnAtPlayerStart ;
if ( ! Errors )
{
SpawnList . AddItem ( SpawnEntry ) ;
` ZS_Info("[" $ Line + 1 $ "]" @ "Loaded successfully:" @ SpawnEntryCfg.BossClass @ SpawnEntryCfg.ZedClass, LogLevel);
}
}
return SpawnList ;
}
defaultproperties
{
}