major update so that boss rounds also can feature minion zombies that dont count towards winning the round

This commit is contained in:
jenz 2024-02-25 19:33:13 +01:00
parent 8c80d4ac05
commit 8455a1a231
5 changed files with 536 additions and 271 deletions

View File

@ -14,6 +14,7 @@
"jump_height" "1.02"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"blades"
@ -30,6 +31,7 @@
"jump_height" "1.02"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"clown"
@ -46,6 +48,7 @@
"jump_height" "1.02"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"knight"
@ -62,5 +65,74 @@
"jump_height" "1.02"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"t_arctic"
{
"unique name" "public skin terrorist arctic"
"team" "Human"
"group" " "
"sm_flags" " "
"model path" "models/player/t_arctic.mdl"
"no_fall_damage" "NO"
"health" "100"
"speed" "1"
"knockback" "1.0"
"jump_height" "1.02"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"t_guerilla"
{
"unique name" "public skin terrorist guerilla"
"team" "Human"
"group" " "
"sm_flags" " "
"model path" "models/player/t_guerilla.mdl"
"no_fall_damage" "NO"
"health" "100"
"speed" "1"
"knockback" "1.0"
"jump_height" "1.02"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"t_leet"
{
"unique name" "public skin terrorist leet"
"team" "Human"
"group" " "
"sm_flags" " "
"model path" "models/player/t_leet.mdl"
"no_fall_damage" "NO"
"health" "100"
"speed" "1"
"knockback" "1.0"
"jump_height" "1.02"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"t_phoenix"
{
"unique name" "public skin terrorist pheonix"
"team" "Human"
"group" " "
"sm_flags" " "
"model path" "models/player/t_phoenix.mdl"
"no_fall_damage" "NO"
"health" "100"
"speed" "1"
"knockback" "1.0"
"jump_height" "1.02"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
}

View File

@ -10,10 +10,11 @@
"no_fall_damage" "YES"
"health" "40"
"speed" "1"
"knockback" "2.0"
"knockback" "1.0"
"jump_height" "1.1"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"zombie2"
{
@ -25,10 +26,11 @@
"no_fall_damage" "YES"
"health" "50"
"speed" "1"
"knockback" "2.0"
"knockback" "1.0"
"jump_height" "1.1"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"zombie3"
{
@ -39,11 +41,12 @@
"model path" "models/player/zh/zh_corpse002.mdl"
"no_fall_damage" "YES"
"health" "60"
"speed" "0.5"
"knockback" "2.0"
"speed" "1"
"knockback" "1.0"
"jump_height" "1.1"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"biohazard"
{
@ -55,10 +58,11 @@
"no_fall_damage" "YES"
"health" "125"
"speed" "1"
"knockback" "2.0"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"fatty"
{
@ -68,12 +72,13 @@
"sm_flags" " "
"model path" "models/player/elis/fty/fatty.mdl"
"no_fall_damage" "YES"
"health" "800"
"speed" "0.7"
"knockback" "2.0"
"health" "500"
"speed" "0.8"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"verdugo"
{
@ -84,11 +89,12 @@
"model path" "models/player/elis/vd/verdugo.mdl"
"no_fall_damage" "YES"
"health" "150"
"speed" "2"
"knockback" "2.0"
"speed" "1.6"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"spitter"
{
@ -99,11 +105,12 @@
"model path" "models/player/kuristaja/l4d2/spitter/spitter.mdl"
"no_fall_damage" "YES"
"health" "125"
"speed" "2"
"knockback" "2.0"
"speed" "1.4"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"pil_fast_v5"
{
@ -114,11 +121,12 @@
"model path" "models/player/pil/fast_v5/pil_fast_v5.mdl"
"no_fall_damage" "YES"
"health" "150"
"speed" "2.5"
"knockback" "2.0"
"speed" "1.4"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"tyrant_pil"
{
@ -128,12 +136,13 @@
"sm_flags" " "
"model path" "models/player/pil/re1/proto_tyrant/tyrant_pil.mdl"
"no_fall_damage" "YES"
"health" "700"
"health" "500"
"speed" "1"
"knockback" "2.0"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"nemesis_pil"
{
@ -145,10 +154,11 @@
"no_fall_damage" "YES"
"health" "800"
"speed" "1"
"knockback" "2.0"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"majini"
{
@ -159,11 +169,12 @@
"model path" "models/player/slow/amberlyn/re5/tentacle_crap_majini/slow.mdl"
"no_fall_damage" "YES"
"health" "70"
"speed" "3"
"knockback" "2.0"
"speed" "1.4"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"uroboro"
{
@ -174,11 +185,12 @@
"model path" "models/player/slow/amberlyn/re5/uroboro/slow_public.mdl"
"no_fall_damage" "YES"
"health" "75"
"speed" "3"
"knockback" "2.0"
"speed" "1.4"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"babycrab"
{
@ -189,11 +201,12 @@
"model path" "models/player/slow/babycrab_v2/slow_babycrab.mdl"
"no_fall_damage" "YES"
"health" "50"
"speed" "3"
"knockback" "2.0"
"speed" "1.3"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"berserker"
{
@ -203,12 +216,13 @@
"sm_flags" " "
"model path" "models/player/slow/berserkerin/slow_big.mdl"
"no_fall_damage" "YES"
"health" "250"
"speed" "2.5"
"knockback" "2.0"
"health" "2500"
"speed" "1"
"knockback" "0.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "1"
}
"hellknight"
{
@ -219,11 +233,12 @@
"model path" "models/player/ics/hellknight_red/t_guerilla.mdl"
"no_fall_damage" "YES"
"health" "250"
"speed" "2.5"
"knockback" "2.0"
"speed" "1.4"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"centurion"
{
@ -234,11 +249,12 @@
"model path" "models/player/slow/centurion/slow_centurion.mdl"
"no_fall_damage" "YES"
"health" "150"
"speed" "1.5"
"knockback" "2.0"
"speed" "1.2"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"kahn"
{
@ -249,11 +265,12 @@
"model path" "models/player/slow/jamis/mkvsdcu/dark_kahn/slow_pub.mdl"
"no_fall_damage" "YES"
"health" "3000"
"speed" "2.5"
"knockback" "2.0"
"speed" "1.1"
"knockback" "0.0"
"jump_height" "1.5"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "1"
}
"chucky"
{
@ -264,11 +281,12 @@
"model path" "models/player/slow/chucky_v3/slow.mdl"
"no_fall_damage" "YES"
"health" "60"
"speed" "2.4"
"knockback" "2.0"
"speed" "1.4"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"krall"
{
@ -279,11 +297,12 @@
"model path" "models/player/slow/krall/slow.mdl"
"no_fall_damage" "YES"
"health" "4000"
"speed" "2"
"knockback" "2.0"
"speed" "1.1"
"knockback" "0.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "1"
}
"strong"
{
@ -294,11 +313,12 @@
"model path" "models/player/slow/bloodsucker_pack/slow_strong.mdl"
"no_fall_damage" "YES"
"health" "150"
"speed" "2"
"knockback" "2.0"
"speed" "1.6"
"knockback" "1.0"
"jump_height" "1.5"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"gigantev2"
{
@ -309,11 +329,12 @@
"model path" "models/player/slow/gigante/slow_gigante.mdl"
"no_fall_damage" "YES"
"health" "10000"
"speed" "2.5"
"knockback" "2.0"
"speed" "1.2"
"knockback" "0.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "10.0"
"damage_multiplier" "1.5"
"boss_class" "1"
}
"alienv1"
{
@ -324,11 +345,12 @@
"model path" "models/player/slow/aliendrone/slow_alien.mdl"
"no_fall_damage" "YES"
"health" "125"
"speed" "2.5"
"knockback" "2.0"
"speed" "1.5"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"witch"
{
@ -339,11 +361,12 @@
"model path" "models/player/techknow/left4dead/witch.mdl"
"no_fall_damage" "YES"
"health" "120"
"speed" "2"
"knockback" "2.0"
"speed" "1.2"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"bosspider"
{
@ -354,11 +377,12 @@
"model path" "models/player/slow/monster_spider/slow.mdl"
"no_fall_damage" "YES"
"health" "2500"
"speed" "2"
"knockback" "2.0"
"speed" "1.2"
"knockback" "0.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "4.0"
"damage_multiplier" "1.5"
"boss_class" "1"
}
"hunter"
{
@ -369,11 +393,12 @@
"model path" "models/player/techknow/left4dead/hunter.mdl"
"no_fall_damage" "YES"
"health" "100"
"speed" "3"
"knockback" "2.0"
"speed" "1.5"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"doge"
{
@ -384,11 +409,12 @@
"model path" "models/player/slow/amberlyn/zombie_dog/slow_2.mdl"
"no_fall_damage" "YES"
"health" "55"
"speed" "2.8"
"knockback" "2.0"
"speed" "1.5"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"balrog"
{
@ -399,11 +425,12 @@
"model path" "models/player/slow/amberlyn/lotr/balrog/slow.mdl"
"no_fall_damage" "YES"
"health" "12000"
"speed" "3"
"knockback" "2.0"
"speed" "1.1"
"knockback" "0.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "5000.0"
"damage_multiplier" "1.5"
"boss_class" "1"
}
"raam"
{
@ -414,11 +441,12 @@
"model path" "models/player/slow/general_raam/slow.mdl"
"no_fall_damage" "YES"
"health" "2700"
"speed" "2"
"knockback" "2.0"
"speed" "1"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "1"
}
"abaddon"
{
@ -429,11 +457,12 @@
"model path" "models/player/unloze_zr/abaddon.mdl"
"no_fall_damage" "YES"
"health" "300"
"speed" "1.8"
"knockback" "2.0"
"speed" "1.2"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"servo_skull"
{
@ -444,11 +473,12 @@
"model path" "models/player/kodua/servo_skull/servo_skull.mdl"
"no_fall_damage" "YES"
"health" "15"
"speed" "4"
"knockback" "2.0"
"speed" "1.2"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"bahamut"
{
@ -459,11 +489,12 @@
"model path" "models/player/unloze_zr/bahamut.mdl"
"no_fall_damage" "YES"
"health" "6000"
"speed" "2.5"
"knockback" "2.0"
"speed" "1.2"
"knockback" "0.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.5"
"boss_class" "1"
}
"uberevil"
{
@ -474,11 +505,12 @@
"model path" "models/player/unloze_zr/uberevil.mdl"
"no_fall_damage" "YES"
"health" "140"
"speed" "1.8"
"knockback" "2.0"
"speed" "1.2"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"alien_spider"
{
@ -489,11 +521,12 @@
"model path" "models/player/unloze_zr/alien_spider.mdl"
"no_fall_damage" "YES"
"health" "140"
"speed" "1.8"
"knockback" "2.0"
"speed" "1.2"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"akasha"
{
@ -504,11 +537,12 @@
"model path" "models/player/unloze_zr/akasha.mdl"
"no_fall_damage" "YES"
"health" "300"
"speed" "2"
"knockback" "2.0"
"speed" "1.2"
"knockback" "0.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
"theron_guard"
{
@ -519,11 +553,12 @@
"model path" "models/player/unloze_zr/theron_guard.mdl"
"no_fall_damage" "YES"
"health" "2900"
"speed" "2.4"
"knockback" "2.0"
"speed" "1.1"
"knockback" "0.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "1"
}
"antlion"
{
@ -531,14 +566,14 @@
"team" "ZM"
"group" " "
"sm_flags" " "
"model path" "models/player/techknow/antlion.mdl"
"model path" "models/player/techknow/antlion/antlion.mdl"
"no_fall_damage" "YES"
"health" "200"
"speed" "2"
"knockback" "2.0"
"speed" "1.1"
"knockback" "1.0"
"jump_height" "1.4"
"jump_distance" "1.0"
"damage_multiplier" "1.0"
"damage_multiplier" "1.0"
"boss_class" "0"
}
}

View File

@ -15,9 +15,8 @@ Left 4 Doge
BOSS - Krall and Kahn come back
Invaders vs Akasha
MINI BOSS - Spiders Party
Cyborg Skull
BOSS - Raam vs Theron
Nightmares
BOSS RUSH!
Armageddon
BOSS - Bahamut
BOSS - El Gigante

View File

@ -4,6 +4,11 @@
// "bot_static" if you use bot_scaling 0 the plugin will instead use the value given in bot_static to spawn a static amount of bots into the game.
// if bot_scaling is not 0 it will always pick bot_scaling and just ignore bot_static.
// on boss rounds bot_static is used for deciding the amount of bots that will be bosses.
// on boss rounds bot_scaling is used for deciding the amount of bots that will be minions.
// on boss rounds the minion bots do not count towards zombie count, so they can be killed infinite amount of times.
//
// "PlayerScaleAbility"
// Multiplied by the zombie count, the amount of needed kills to add
@ -85,10 +90,13 @@
"HealthScaleAbility" "0.000000"
"Zombie Count" "5"
"Respawns" "99"
"bot_scaling" "5"
"bot_static" "0"
"bot_scaling" "5" //on boss round bot_scaling is for minion bots. minion bots dont count towards Zombie Count
"bot_static" "2" //on boss round bot_static is for boss bots
"wavecommand" " "
"Zombie Class" "berserker"
"Zombie Class" "zombie1"
"Zombie Class" "zombie2"
"Zombie Class" "zombie3"
"Human Class" "@all"
}
// Starkiller
@ -142,11 +150,14 @@
"HealthScaleAbility" "0.000000"
"Zombie Count" "5"
"Respawns" "99"
"bot_scaling" "0"
"bot_static" "3"
"bot_scaling" "5" //on boss round bot_scaling is for minion bots. minion bots dont count towards Zombie Count
"bot_static" "3" //on boss round bot_static is for boss bots
"wavecommand" " "
"Zombie Class" "kahn"
"Zombie Class" "krall"
"Zombie Class" "zombie1"
"Zombie Class" "zombie2"
"Zombie Class" "zombie3"
"Human Class" "@all"
}
// Mix of Madness
@ -238,11 +249,14 @@
"HealthScaleAbility" "0.000000"
"Zombie Count" "5"
"Respawns" "99"
"bot_scaling" "0"
"bot_static" "3"
"bot_scaling" "5" //on boss round bot_scaling is for minion bots. minion bots dont count towards Zombie Count
"bot_static" "3" //on boss round bot_static is for boss bots
"wavecommand" " "
"Zombie Class" "krall"
"Zombie Class" "kahn"
"Zombie Class" "zombie1"
"Zombie Class" "zombie2"
"Zombie Class" "zombie3"
"Human Class" "@all"
}
// Invaders vs Akasha
@ -267,10 +281,13 @@
"HealthScaleAbility" "0.000000"
"Zombie Count" "16"
"Respawns" "99"
"bot_scaling" "5"
"bot_static" "0"
"bot_scaling" "5" //on boss round bot_scaling is for minion bots. minion bots dont count towards Zombie Count
"bot_static" "5" //on boss round bot_static is for boss bots
"wavecommand" " "
"Zombie Class" "bosspider"
"Zombie Class" "zombie1"
"Zombie Class" "zombie2"
"Zombie Class" "zombie3"
"Human Class" "@all"
}
// BOSS - Raam vs Theron
@ -280,40 +297,35 @@
"HealthScaleAbility" "0.000000"
"Zombie Count" "10"
"Respawns" "99"
"bot_scaling" "0"
"bot_static" "3"
"bot_scaling" "5" //on boss round bot_scaling is for minion bots. minion bots dont count towards Zombie Count
"bot_static" "3" //on boss round bot_static is for boss bots
"wavecommand" " "
"Zombie Class" "raam"
"Zombie Class" "theron_guard"
"Zombie Class" "zombie1"
"Zombie Class" "zombie2"
"Zombie Class" "zombie3"
"Human Class" "@all"
}
// Nightmares
// BOSS RUSH!
"Wave 19"
{
"PlayerScaleAbility" "0.1"
"HealthScaleAbility" "0.100000"
"Zombie Count" "225"
"PlayerScaleAbility" "0"
"HealthScaleAbility" "0.500000"
"Zombie Count" "6"
"Respawns" "99"
"bot_scaling" "16"
"bot_static" "0"
"bot_scaling" "5" //on boss round bot_scaling is for minion bots. minion bots dont count towards Zombie Count
"bot_static" "1" //on boss round bot_static is for boss bots
"wavecommand" " "
"Zombie Class" "strong"
"Zombie Class" "verdugo"
"Zombie Class" "hunter"
"Zombie Class" "witch"
"Zombie Class" "doge"
"Zombie Class" "babycrab"
"Zombie Class" "abaddon"
"Zombie Class" "alienv1"
"Zombie Class" "chucky"
"Zombie Class" "servo_skull"
"Zombie Class" "pil_fast_v5"
"Zombie Class" "hellknight"
"Zombie Class" "akasha"
"Zombie Class" "nemesis_pil"
"Zombie Class" "tyrant_pil"
"Zombie Class" "alien_spider"
"Zombie Class" "antlion"
"Zombie Class" "berserker"
"Zombie Class" "krall"
"Zombie Class" "kahn"
"Zombie Class" "theron_guard"
"Zombie Class" "raam"
"Zombie Class" "bosspider"
"Zombie Class" "zombie1"
"Zombie Class" "zombie2"
"Zombie Class" "zombie3"
"Human Class" "@all"
}
// Armageddon
@ -358,12 +370,23 @@
{
"PlayerScaleAbility" "0"
"HealthScaleAbility" "0.500000"
"Zombie Count" "3"
"Zombie Count" "5"
"Respawns" "99"
"bot_scaling" "0"
"bot_static" "3"
"bot_scaling" "5" //on boss round bot_scaling is for minion bots. minion bots dont count towards Zombie Count
"bot_static" "3" //on boss round bot_static is for boss bots
"wavecommand" " "
"Zombie Class" "bahamut"
"Zombie Class" "majini"
"Zombie Class" "uroboro"
"Zombie Class" "babycrab"
"Zombie Class" "chucky"
"Zombie Class" "fatty"
"Zombie Class" "tyrant_pil"
"Zombie Class" "hellknight"
"Zombie Class" "doge"
"Zombie Class" "hunter"
"Zombie Class" "witch"
"Zombie Class" "nemesis_pil"
"Human Class" "@all"
}
// BOSS - El Gigante
@ -373,10 +396,21 @@
"HealthScaleAbility" "0.500000"
"Zombie Count" "1"
"Respawns" "99"
"bot_scaling" "0"
"bot_static" "1"
"bot_scaling" "5" //on boss round bot_scaling is for minion bots. minion bots dont count towards Zombie Count
"bot_static" "1" //on boss round bot_static is for boss bots
"wavecommand" " "
"Zombie Class" "gigantev2"
"Zombie Class" "majini"
"Zombie Class" "uroboro"
"Zombie Class" "babycrab"
"Zombie Class" "chucky"
"Zombie Class" "fatty"
"Zombie Class" "tyrant_pil"
"Zombie Class" "hellknight"
"Zombie Class" "doge"
"Zombie Class" "hunter"
"Zombie Class" "witch"
"Zombie Class" "nemesis_pil"
"Human Class" "@all"
}
// FINAL BOSS - The Balrog
@ -384,12 +418,23 @@
{
"PlayerScaleAbility" "0"
"HealthScaleAbility" "0.500000"
"Zombie Count" "1"
"Zombie Count" "2"
"Respawns" "99"
"bot_scaling" "0"
"bot_static" "1"
"bot_scaling" "5" //on boss round bot_scaling is for minion bots. minion bots dont count towards Zombie Count
"bot_static" "1" //on boss round bot_static is for boss bots
"wavecommand" " "
"Zombie Class" "balrog"
"Zombie Class" "majini"
"Zombie Class" "uroboro"
"Zombie Class" "babycrab"
"Zombie Class" "chucky"
"Zombie Class" "fatty"
"Zombie Class" "tyrant_pil"
"Zombie Class" "hellknight"
"Zombie Class" "doge"
"Zombie Class" "hunter"
"Zombie Class" "witch"
"Zombie Class" "nemesis_pil"
"Human Class" "@all"
}
}

View File

@ -69,6 +69,8 @@ int g_iBotStuckCounts;
int g_iLoadClassesIndex;
int g_iHumanCount;
int g_iZombieCount;
int g_iZombieBossIndex[g_dIndexes];
int g_iBossBotCount;
float g_fKnockBackIndex[g_dIndexes + 1];
float g_fJumpHeightIndex[g_dIndexes + 1];
@ -86,7 +88,8 @@ bool g_bSwitchingIndex;
bool g_bRoundInProgress;
bool g_bFallDamage[g_dIndexes];
bool g_bClientProtection[g_dIndexes];
bool g_bIsBossRound;
bool g_bClientIsBoss[MAXPLAYERS + 1];
Handle g_hClientZMCookie;
Handle g_hClientHumanCookie;
@ -1061,6 +1064,7 @@ public void OnClientPostAdminCheck(int client)
g_fJumpHeightIndex[client] = 1.0;
g_fJumpDistanceIndex[client] = 1.0;
g_fDamageMultiplier[client] = 1.0;
g_bClientIsBoss[client] = false;
g_iClientRespawnCount[client] = g_iClientRespawnCountNum;
char sCookieValue[12];
GetClientCookie(client, g_hClientZMCookie, sCookieValue, sizeof(sCookieValue));
@ -1117,6 +1121,7 @@ public void OnClientDisconnect(int client)
g_fJumpDistanceIndex[client] = 1.0;
g_fDamageMultiplier[client] = 1.0;
g_iClientRespawnCount[client] = 0;
g_bClientIsBoss[client] = false;
SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
SDKUnhook(client, SDKHook_WeaponEquip, OnWeaponEquip);
}
@ -1129,7 +1134,24 @@ public void Event_roundStart(Handle event, const char[] name, bool dontBroadcast
g_iZombieCount = 999;
g_bRoundInProgress = false;
g_bSwitchingIndex = true;
g_iBossBotCount = 0;
CreateTimer(g_fSwitchingTimer, Timer_switchingModel, INVALID_HANDLE);
if (g_hAmbient != null)
delete g_hAmbient;
if (StrContains(g_cDaysTitles[g_iWave - 1], "BOSS", false) != -1) //the daystitle contains the word boss in it
{
g_bIsBossRound = true; //boss rounds need BOSS in the title
EmitAmbience(g_cBossSound); //nobody will ever understand why megalovania was on the servers since 2020.
g_hAmbient = CreateTimer(g_fBossSoundLoopDuration, Timer_Ambient, INVALID_HANDLE, TIMER_REPEAT); // 0.3 seconds without sound
}
else
{
g_bIsBossRound = false; //boss rounds need BOSS in the title
int index = ambient_index();
EmitAmbience(g_cAmbientSOund[index]);
g_hAmbient = CreateTimer(g_fAmbientSoundLoopDuration, Timer_Ambient, INVALID_HANDLE, TIMER_REPEAT); // 0.3 seconds without sound
}
RetrieveWaveSettings(g_iWave);
for (int i = 1; i <= MaxClients; i++)
@ -1138,6 +1160,7 @@ public void Event_roundStart(Handle event, const char[] name, bool dontBroadcast
{
if (IsFakeClient(i))
{
g_bClientIsBoss[i] = false;
CreateTimer(0.3, Timer_delayedSelectWaveBasedZM, GetClientUserId(i));
continue;
}
@ -1148,19 +1171,6 @@ public void Event_roundStart(Handle event, const char[] name, bool dontBroadcast
}
}
}
if (g_hAmbient != null)
delete g_hAmbient;
if (StrContains(g_cDaysTitles[g_iWave - 1], "BOSS", false) != -1) //the daystitle contains the word boss in it
{
EmitAmbience(g_cBossSound); //nobody will ever understand why megalovania was on the servers since 2020.
g_hAmbient = CreateTimer(g_fBossSoundLoopDuration, Timer_Ambient, INVALID_HANDLE, TIMER_REPEAT); // 0.3 seconds without sound
}
else
{
int index = ambient_index();
EmitAmbience(g_cAmbientSOund[index]);
g_hAmbient = CreateTimer(g_fAmbientSoundLoopDuration, Timer_Ambient, INVALID_HANDLE, TIMER_REPEAT); // 0.3 seconds without sound
}
}
public int ambient_index()
@ -1204,7 +1214,6 @@ public Action RetrieveWaveSettings(int wave)
Format(hostname, sizeof(hostname), "UNLOZE | [ZRiot: Day %i/%i] %s | Ranking", wave, total_days, g_cDaysTitles[wave - 1]);
ServerCommand("hostname \"%s\"", hostname);
PrintToChatAll("Day %i: %s", wave, g_cDaysTitles[wave - 1]);
LoadWave(wave);
delete l_hWave;
@ -1276,13 +1285,35 @@ public void LoadWave(int wave)
g_iClientRespawnCountNum = kv.GetNum("Respawns", 5);
l_iBotQuote = kv.GetNum("bot_scaling", 1);
int l_iBotQuoteStatic = kv.GetNum("bot_static", 1);
if (l_iBotQuote == 0) //we use static bot amount instead
l_iPlayers = 0; //counting legit players for bot scaling.
for (int i = 1; i < MaxClients; i++)
{
SettingBotQoute(l_iBotQuoteStatic, true);
if (IsValidClient(i) && !IsFakeClient(i) && CS_TEAM_CT == GetClientTeam(i))
{
l_iPlayers++;
}
}
if (g_bIsBossRound)
{
//its boss round. bot_scaling is used for minion bots. bot_static is used for boss bot amount
// bot_static + bot_scaling
addBots(l_iBotQuoteStatic + (l_iPlayers * l_iBotQuote));
g_iBossBotCount = l_iBotQuoteStatic;
}
else
{
SettingBotQoute(l_iBotQuote, false);
//its not boss round.
if (l_iBotQuote == 0) //we use static bot amount instead of scaling bots based on playercount.
{
addBots(l_iBotQuoteStatic);
}
else
{
//we use bot_scaling.
addBots(l_iPlayers * l_iBotQuote);
}
}
while (!IsEndOfFile(l_hFile) && ReadFileLine(l_hFile, l_cLine, sizeof(l_cLine)))
{
@ -1426,28 +1457,6 @@ public void LoadWave(int wave)
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void SettingBotQoute(int botscale, bool bot_static)
{
int l_iPlayers;
for (int i = 1; i < MaxClients; i++)
{
if (IsValidClient(i) && !IsFakeClient(i) && CS_TEAM_CT == GetClientTeam(i))
{
l_iPlayers++;
}
}
if (bot_static)
{
addBots(botscale);
}
else
{
addBots(l_iPlayers * botscale);
}
}
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void addBots(int botcount)
{
if (botcount > 44)
@ -1472,70 +1481,75 @@ public bool skipIndex(int index)
//----------------------------------------------------------------------------------------------------
public void ReadingClassValuesFromFile(int index, char[] Line)
{
char li_c[g_dLength];
Format(li_c, sizeof(li_c), Line);
if (StrContains(Line, "unique name") > -1)
{
ReplaceStrings(li_c, "unique name");
Format(g_cUniqueName[index][g_iLength], sizeof(g_cUniqueName), li_c);
}
else if (StrContains(Line, "team") > -1)
{
ReplaceStrings(li_c, "team");
Format(g_cTeam[index][g_iLength], sizeof(g_cTeam), li_c);
}
else if (StrContains(Line, "group") > -1)
{
ReplaceStrings(li_c, "group");
Format(g_cGroup[index][g_iLength], sizeof(g_cGroup), li_c);
}
else if (StrContains(Line, "sm_flags") > -1)
{
ReplaceStrings(li_c, "sm_flags");
Format(g_cSMFLAGS[index][g_iLength], sizeof(g_cSMFLAGS), li_c);
}
else if (StrContains(Line, "model path") > -1)
{
ReplaceStrings(li_c, "model path");
Format(g_cModelPath[index][g_iLength], sizeof(g_cModelPath), li_c);
PrecacheModel(li_c);
}
else if (StrContains(Line, "no_fall_damage") > -1)
{
ReplaceStrings(li_c, "no_fall_damage");
Format(g_cNoFallDmg[index][g_iLength], sizeof(g_cNoFallDmg), li_c);
}
else if (StrContains(Line, "health") > -1)
{
ReplaceStrings(li_c, "health");
Format(g_cHealth[index][g_iLength], sizeof(g_cHealth), li_c);
}
else if (StrContains(Line, "speed") > -1)
{
ReplaceStrings(li_c, "speed");
Format(g_cSpeed[index][g_iLength], sizeof(g_cSpeed), li_c);
}
else if (StrContains(Line, "knockback") > -1)
{
ReplaceStrings(li_c, "knockback");
Format(g_cKnockback[index][g_iLength], sizeof(g_cKnockback), li_c);
}
else if (StrContains(Line, "jump_height") > -1)
{
ReplaceStrings(li_c, "jump_height");
Format(g_cJumpHeight[index][g_iLength], sizeof(g_cJumpHeight), li_c);
}
else if (StrContains(Line, "jump_distance") > -1)
{
ReplaceStrings(li_c, "jump_distance");
Format(g_cJumpDistance[index][g_iLength], sizeof(g_cJumpDistance), li_c);
}
else if (StrContains(Line, "damage_multiplier") > -1)
{
ReplaceStrings(li_c, "damage_multiplier");
Format(g_cDamageMultiplier[index][g_iLength], sizeof(g_cDamageMultiplier), li_c);
g_iLoadClassesIndex++;
}
char li_c[g_dLength];
Format(li_c, sizeof(li_c), Line);
if (StrContains(Line, "unique name") > -1)
{
ReplaceStrings(li_c, "unique name");
Format(g_cUniqueName[index][g_iLength], sizeof(g_cUniqueName), li_c);
}
else if (StrContains(Line, "team") > -1)
{
ReplaceStrings(li_c, "team");
Format(g_cTeam[index][g_iLength], sizeof(g_cTeam), li_c);
}
else if (StrContains(Line, "group") > -1)
{
ReplaceStrings(li_c, "group");
Format(g_cGroup[index][g_iLength], sizeof(g_cGroup), li_c);
}
else if (StrContains(Line, "sm_flags") > -1)
{
ReplaceStrings(li_c, "sm_flags");
Format(g_cSMFLAGS[index][g_iLength], sizeof(g_cSMFLAGS), li_c);
}
else if (StrContains(Line, "model path") > -1)
{
ReplaceStrings(li_c, "model path");
Format(g_cModelPath[index][g_iLength], sizeof(g_cModelPath), li_c);
PrecacheModel(li_c);
}
else if (StrContains(Line, "no_fall_damage") > -1)
{
ReplaceStrings(li_c, "no_fall_damage");
Format(g_cNoFallDmg[index][g_iLength], sizeof(g_cNoFallDmg), li_c);
}
else if (StrContains(Line, "health") > -1)
{
ReplaceStrings(li_c, "health");
Format(g_cHealth[index][g_iLength], sizeof(g_cHealth), li_c);
}
else if (StrContains(Line, "speed") > -1)
{
ReplaceStrings(li_c, "speed");
Format(g_cSpeed[index][g_iLength], sizeof(g_cSpeed), li_c);
}
else if (StrContains(Line, "knockback") > -1)
{
ReplaceStrings(li_c, "knockback");
Format(g_cKnockback[index][g_iLength], sizeof(g_cKnockback), li_c);
}
else if (StrContains(Line, "jump_height") > -1)
{
ReplaceStrings(li_c, "jump_height");
Format(g_cJumpHeight[index][g_iLength], sizeof(g_cJumpHeight), li_c);
}
else if (StrContains(Line, "jump_distance") > -1)
{
ReplaceStrings(li_c, "jump_distance");
Format(g_cJumpDistance[index][g_iLength], sizeof(g_cJumpDistance), li_c);
}
else if (StrContains(Line, "damage_multiplier") > -1)
{
ReplaceStrings(li_c, "damage_multiplier");
Format(g_cDamageMultiplier[index][g_iLength], sizeof(g_cDamageMultiplier), li_c);
}
else if (StrContains(Line, "boss_class") > -1)
{
ReplaceStrings(li_c, "boss_class");
g_iZombieBossIndex[index] = StringToInt(li_c);
g_iLoadClassesIndex++; //use this at the last keyvalue to indicate we are done.
}
}
//----------------------------------------------------------------------------------------------------
// Purpose:
@ -1595,26 +1609,111 @@ public Action SelectWaveBasedZM(int client, int state)
if (state == 0)
{
for (int i = 0; i < g_dIndexes; i++)
if (g_bIsBossRound && g_iBossBotCount > 0 && !g_bClientIsBoss[client]) //does not work setting on roundstart. so instead doing when applying ZM skin.
{
if (strlen(g_cZMRoundClasses[i][g_iLength]) > 0 && strlen(g_cGroup[i][g_iLength]) < 1 && strlen(g_cSMFLAGS[i][g_iLength]) < 1)
g_bClientIsBoss[client] = true;
g_iBossBotCount--; //picking certain bots as the boss bots. all other bots are the minions.
}
if (g_bIsBossRound)
{
if (g_bClientIsBoss[client])
{
l_iZMIndex++;
//its boss round and we set class for a boss bot
for (int i = 0; i < g_dIndexes; i++)
{
if (strlen(g_cZMRoundClasses[i][g_iLength]) > 0 && strlen(g_cGroup[i][g_iLength]) < 1 && strlen(g_cSMFLAGS[i][g_iLength]) < 1
&& g_iZombieBossIndex[i])
{
l_iZMIndex++; //we set amount of boss classes that the boss bot can pick between.
}
}
l_ibotIndex = GetRandomInt(0, l_iZMIndex -1);
l_iZMIndex = 0;
for (int i = 0; i < g_dIndexes; i++)
{
if (strlen(g_cZMRoundClasses[i][g_iLength]) > 0 && strlen(g_cGroup[i][g_iLength]) < 1 && strlen(g_cSMFLAGS[i][g_iLength]) < 1)
{
if (!g_iZombieBossIndex[i])
{
continue;
}
else if (l_ibotIndex == l_iZMIndex)
{
g_iClientZMClasses[client] = i;
break;
}
else
{
l_iZMIndex++;
}
}
}
}
else
{
//its boss round and we set class for a minion bot
for (int i = 0; i < g_dIndexes; i++)
{
if (strlen(g_cZMRoundClasses[i][g_iLength]) > 0 && strlen(g_cGroup[i][g_iLength]) < 1 && strlen(g_cSMFLAGS[i][g_iLength]) < 1
&& !g_iZombieBossIndex[i])
{
l_iZMIndex++; //we set amount of normal zombie classes the minion bot can pick between. skipping out the boss classes.
}
}
l_ibotIndex = GetRandomInt(0, l_iZMIndex -1);
l_iZMIndex = 0;
for (int i = 0; i < g_dIndexes; i++)
{
if (strlen(g_cZMRoundClasses[i][g_iLength]) > 0 && strlen(g_cGroup[i][g_iLength]) < 1 && strlen(g_cSMFLAGS[i][g_iLength]) < 1)
{
if (g_iZombieBossIndex[i])
{
continue;
}
else if (l_ibotIndex == l_iZMIndex)
{
g_iClientZMClasses[client] = i;
break;
}
else
{
l_iZMIndex++;
}
}
}
}
}
l_ibotIndex = GetRandomInt(0, l_iZMIndex -1);
l_iZMIndex = 0;
for (int i = 0; i < g_dIndexes; i++)
else
{
if (strlen(g_cZMRoundClasses[i][g_iLength]) > 0 && strlen(g_cGroup[i][g_iLength]) < 1 && strlen(g_cSMFLAGS[i][g_iLength]) < 1)
//its normal round. just setting the classes randomly.
for (int i = 0; i < g_dIndexes; i++)
{
if (l_ibotIndex == l_iZMIndex)
if (strlen(g_cZMRoundClasses[i][g_iLength]) > 0 && strlen(g_cGroup[i][g_iLength]) < 1 && strlen(g_cSMFLAGS[i][g_iLength]) < 1)
{
g_iClientZMClasses[client] = i;
break;
l_iZMIndex++; //here we get to know what the last index is, that way the randomint can pick between index 0 and last index for ZM classes.
}
}
l_ibotIndex = GetRandomInt(0, l_iZMIndex -1);
l_iZMIndex = 0;
for (int i = 0; i < g_dIndexes; i++)
{
if (strlen(g_cZMRoundClasses[i][g_iLength]) > 0 && strlen(g_cGroup[i][g_iLength]) < 1 && strlen(g_cSMFLAGS[i][g_iLength]) < 1)
{
if (l_ibotIndex == l_iZMIndex)
{
g_iClientZMClasses[client] = i;
break;
}
else
{
l_iZMIndex++;
}
}
else
l_iZMIndex++;
}
}
}
@ -1942,10 +2041,25 @@ public Action UpdateWaveCount(int client)
}
}
}
g_iZMCount--;
PrintHintTextToAll("Day %i: %s\nRemaining Zombies: %i\nHumans: %i\nZombies: %i", g_iWave, g_cDaysTitles[g_iWave - 1], g_iZMCount, humanCount, zombieCount);
g_iHumanCount = humanCount;
g_iZombieCount = zombieCount;
if (g_bIsBossRound)
{
//we only reduce zombie count if the killed bot had a boss zombie class.
//if the killed bot instead had a zombie class of a minion we do not reduce the zombie count.
if (g_bClientIsBoss[client])
{
g_iZMCount--;
PrintHintTextToAll("Day %i: %s\nRemaining Zombies: %i\nHumans: %i\nZombies: %i", g_iWave, g_cDaysTitles[g_iWave - 1], g_iZMCount, humanCount, zombieCount);
g_iHumanCount = humanCount;
g_iZombieCount = zombieCount;
}
}
else
{
g_iZMCount--;
PrintHintTextToAll("Day %i: %s\nRemaining Zombies: %i\nHumans: %i\nZombies: %i", g_iWave, g_cDaysTitles[g_iWave - 1], g_iZMCount, humanCount, zombieCount);
g_iHumanCount = humanCount;
g_iZombieCount = zombieCount;
}
}
if (g_iZMCount <= 0 && g_bRoundInProgress)
{