--Script By: BERKYT
--Links: VK: https://vk.com/b_e_r_k_y_t Discord: https://discord.gg/amMreCC YouTube: https://www.youtube.com/channel/UCaPBjmrAYO6p-ksHNaymwLg?view_as=subscriber
--The script is distributed freely, provided that the author of the script is indicated - BERKYT
import("ScarUtil.scar")
import("WXPScarUtil.scar")
function OnGameSetup()
--Players
g_Player1 = World_GetPlayerAt(0)
g_Player2 = World_GetPlayerAt(1)
g_Player3 = World_GetPlayerAt(2)
Setup_Player(1, "BERKYT", "tau_race", 1)
Setup_Player(2, "BERKYT", "npc_race", 0)
--Warriors
g_light_infantry = "guard_squad_guardsmen"
g_base_warrior = "guard_squad_hellhound"
g_base_warrior_2 = "guard_squad_guardsmen"
g_support_warrior = "guard_squad_psyker"
g_support_warrior_2 = "guard_squad_kasrkin"
g_heavy_support_warrior = "guard_squad_ogryns"
g_heavy_warrior = "guard_squad_sentinel_advance_sp"
g_super_heavy_warrior = "guard_squad_ogryns"
g_light_tank = "guard_squad_chimera"
g_light_tank_2 = "guard_squad_basilisk"
g_heavy_tank = "guard_squad_lemanruss"
g_relic_warrior = "guard_squad_baneblade"
g_hero = "guard_squad_command_squad"
g_hero_2 = "guard_squad_assassin"
--Reinforcement warriors
g_reinforcement_light_warrior = "guard_squad_guardsmen"
g_reinforcement_heavy_warrior = "guard_squad_kasrkin"
g_reinforcement_tank = "guard_squad_lemanruss"
--Interval
g_interval = 60
g_interval_s_s = 60 * 3
--Squads
g_sg_wave_troops = "sg_wave_troops"
--Markers
g_mkr_spawn_wave = "mkr_spawn_from"
g_mkr_attack_wave = "mkr_attack_to"
--Integer
g_timer_wave = 0
g_timer_s_s = 0
g_count_waves = 20
--Boolean
g_check_exists_wave = false
g_check_s_s = false
g_check_s_s_bool = false
--Varios
g_check = 0
g_check_s_s_hp = nil
g_check_s_s_hp_2 = nil
g_sgroupid = nil
end
function GuardInit()
Rule_SetupMusicPlaylist()
FOW_RevealAll()
Fade_Start(2, true)
Cpu_Enable(g_Player2, false)
Rule_AddInterval(WebMoney, 60 * 2)
Rule_AddInterval(Sberbank, 60 * 2 + 15)
Rule_AddInterval(Wave, 1)
Rule_AddInterval(Timer, 1)
Rule_AddInterval(CheckingSquadStuck, 1)
Rule_Add(CheckingLose)
Util_CreateSquadsAtMarkerEx(g_Player3, "sg_BERKYT_SCRIPT", "space_marine_squad_servitor_sp", g_mkr_attack_wave, 1, 9)
end
Scar_AddInit(GuardInit)
function Rule_SetupMusicPlaylist()
Util_MissionTitle("By: BERKYT")
--set the music
t_IG_stronghold_music = { "MU_IG_STR_ImpGd_perc_brass", "MU_IG_STR_ImpGd", "MU_IG_STR_ImpGd_perc", "MU_IG_STR_ImpGd_perc_str",
"MU_IG_STR_ImpGd_perc_voice"}
Playlist_Manager( PC_Music, t_IG_stronghold_music, true, true , {2, 4})
end
function WebMoney()
Util_MissionTitle("WebMoney: R515364081475(RUB) or Z262863085617(USD)(Check ReadMe - file)")
end
function Sberbank()
Util_MissionTitle("Sberbank: 5469 4000 2976 6750 (Check ReadMe - file)")
end
function GameOver()
World_SetGameOver()
end
function Wave()
if (g_check > g_count_waves or g_check == g_count_waves) and check == nil then
check = false
Fade_Start(2, false)
Util_MissionTitle("You win!")
GameOver()
end
if g_check_exists_wave and g_timer_wave == g_interval and SGroup_GetAvgHealth(g_sg_wave_troops) == 0 then
g_check_s_s = true
g_check_s_s_bool = true
g_check_exists_wave = false
g_timer_s_s = 0
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_light_infantry, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_base_warrior, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
g_check = g_check + 1
Util_MissionTitle("Wave number "..g_check)
if g_check > World_GetRand(2, 5) then
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_base_warrior, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_base_warrior_2, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
end
if g_check > World_GetRand(5, 7) then
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_support_warrior, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_support_warrior_2, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
end
if g_check > World_GetRand(7, 10) then
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_heavy_support_warrior, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_light_tank, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
end
if g_check > World_GetRand(10, 15) then
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_super_heavy_warrior, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_heavy_warrior, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
end
if g_check > World_GetRand(14, 17) then
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_light_tank_2, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_heavy_tank, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
end
if g_check > World_GetRand(17, 20) then
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_relic_warrior, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_hero, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
end
if g_check > World_GetRand(18, 21) then
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_hero_2, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
Util_CreateSquadsAtMarkerEx(g_Player2, g_sg_wave_troops, g_base_warrior, g_mkr_spawn_wave, World_GetRand(1, 3 + g_check), World_GetRand(4, 13) + g_check)
end
SGroup_AddLeaders(g_sg_wave_troops)
Cmd_AttackMoveMarker(g_sg_wave_troops, g_mkr_attack_wave)
end
end
function Timer()
SGroup_CreateIfNotFound(g_sg_wave_troops)
if SGroup_GetAvgHealth(g_sg_wave_troops) == 0 then
g_check_exists_wave = true
g_timer_wave = g_timer_wave + 1
if g_timer_wave > g_interval then
g_timer_wave = 0
end
end
end
function CheckingSquadStuck()
if g_check_s_s then
SGroup_CreateIfNotFound(g_sg_wave_troops)
if SGroup_IsUnderAttack(g_sg_wave_troops, false) == false then
g_timer_s_s = g_timer_s_s + 1
if g_timer_s_s == g_interval_s_s then
g_check_s_s = false
SGroup_DestroyAllSquads(g_sg_wave_troops)
end
else
g_timer_s_s = 0
g_check_s_s_hp = SGroup_GetAvgHealth(g_sg_wave_troops)
end
end
end
function CheckingLose()
if SGroup_GetAvgHealth("sg_BERKYT_SCRIPT") == 0 and check == nil then
check = false
Fade_Start(2, false)
Util_MissionTitle("You lose!")
GameOver()
end
end