Mission event file for Order mission 2
Gidsen
/
Mission event file for Order mission 2
Geüpdatet 3 years ago door Merric

--[[ IMPORTS ]]

import("ScarUtil.scar") import("WXPScarUtil.scar")


--[[ GAME SETUP ]]

--[[ the OnGameSetup() function is mandatory! ]] function OnGameSetup()

g_Player1 = Setup_Player(0,"$690080", "guard_race", 1)
Player_DoNotPrecache(g_Player1, _t_MSO2_Player1)

g_Player2 = Setup_Player(1,"$690083", "eldar_race", 1)
Misc_PlayerTeamColor(g_Player2,"default_5")
Player_DoNotPrecache(g_Player2, _t_MSO2_Player2)
	
g_Player3 = Setup_Player(2, "$690085", "space_marine_race", 1)
Misc_PlayerTeamColor(g_Player3,"default_1")
Player_DoNotPrecache(g_Player3, _t_MSO2_Player3)

g_Player4 = Setup_Player(3,"$690088", "chaos_marine_race", 4)
Misc_PlayerTeamColor(g_Player4,"default_6")
Player_DoNotPrecache(g_Player4, _t_MSO2_Player4)

g_Player5 = Setup_Player(4,"$810011", "ork_race", 5)
Misc_PlayerTeamColor(g_Player5,"default_4")
Player_DoNotPrecache(g_Player5, _t_MSO2_Player5)

g_Player6 = Setup_Player(5,"$810010", "npc_race", TEAM_NEUTRAL)
Player_DoNotPrecache(g_Player6, _t_MSO2_Player6)

g_Player7 = Setup_Player(6,"$810010", "guard_race", 1)
Player_DoNotPrecache(g_Player7, _t_MSO2_Player7)

--[[ DEFINE VARIABLES AND TABLES - define any preset values here for later use]]
g_firstrun = true

g_Imperial_Guard_Army_iter = 1
g_Chaos_Army_iter = 1
g_Ork_Army_iter = 1
g_Eldar_Army_iter = 1
g_Nis_Army_iter = 1
g_Allied_Army_iter = 1
g_Chaos_Assaulting_Cultist_Army_iter = 1
g_Cultist_Generators = 1
g_Chimera = 0
g_Sentinel = 0
g_Horror_Raiding_Army_iter = 1
g_Ork_Assault_Army_iter = 1
g_Ork_Base_Assault_Army_iter = 1

g_sentinels = 3
g_pillbox = 0
g_Repair = 0
g_Establish_Foothold = 0
g_Distraction1_Fire = false
g_Distraction2_Fire = false
g_Distraction3_Fire = false
g_tunnel = nil
g_tunnel2 = nil
g_Intrusion = false

Objective_Distraction2 = { title_id = 811015, short_desc_id = 811016, help_tip_id = 811017 }
Objective_Distraction1 = { title_id = 811012, short_desc_id = 811013, help_tip_id = 811014 }
Objective_Distraction3 = { title_id = 811018, short_desc_id = 811019, help_tip_id = 811020 }

--[[ define the "enemy" who will win if the player 'loses' ]]
g_enemy = g_Player4

end

--[[ the OnGameRestore() function is mandatory!, this will only get called after loading a game ]] function OnGameRestore()

end


--[[ ON INITIALIZATION ]]

function OnInit()

--[[ RESEARCH LEVEL ]]
-- sets the research level of the mission, locks researches, squads, and buildings
Rule_SetResearchLevel( 4 )

--[[ NIS PRESETS ]]
-- turn off event cues, set the viewable space to black (faded out) and preset letterboxing ]]
WXP_OpeningNISPreset()

--[[ START THE MUSIC ]]
-- call the function to load the jukebox with tunes]]
Rule_SetupMusicPlaylist()

--[[ SET AI ]]
-- call the function to set the pregame state of the AI ]]
Rule_PresetAI()		

--[[ START NIS ]]
-- calls the NIS function located in the MissionName.nis file ]]
Util_StartNIS( EVENTS.NIS_Opening ) 	

--[[ GET THE START PLAY MISSION READY TO ROLL ]]
Rule_Add( Rule_GameStart )	

end

--[[ the Scar_AddInit(OnInit) function is mandatory! This registers your init function with scar. ]] Scar_AddInit(OnInit)


--[[ GAME RESTRICTIONS ]]

--[[ Disables, enables, and grants research items ]] function Rule_SetResearchLevel( resLevel )

--[[ WXP Specific ]]
WXP_Restrict( resLevel )

end

function Rule_Restrict_Research()

t_Player_Restrict = {
	guard_egroup_name = {"guard_mars_pattern", "guard_mechanized","guard_thermo_plasma"}, 
	eldar_egroup_name = { "eldar_mine_field", "eldar_soul_shrine","eldar_support_platform_scatterlaser", "eldar_support_portal", "eldar_advanced_warp_generator", "eldar_aspect_portal"},
}

Player_RestrictBuildingList(g_Player1, t_Player_Restrict.guard_egroup_name)
Player_RestrictBuildingList(g_Player2, t_Player_Restrict.eldar_egroup_name)

Player_RestrictSquad(g_Player1, "guard_squad_lemanruss")
Player_RestrictSquad(g_Player1, "guard_squad_hellhound")
Player_RestrictSquad(g_Player1, "guard_squad_basilisk")
Player_RestrictAddOn(g_Player1, "addon_guard_hellhound_depot")
Player_RestrictAddOn(g_Player1, "addon_guard_lemanruss_depot")
Player_RestrictAddOn(g_Player1, "addon_guard_vindicare_temple")
Player_RestrictAddOn(g_Player1, "addon_guard_ministorum_temple")
Player_RestrictAddOn(g_Player1, "addon_guard_basilisk_depot")
Player_RestrictAddOn(g_Player1, "addon_guard_telepathica_temple")
Player_RestrictAddOn(g_Player1, "addon_guard_sentinel_depot")
Player_RestrictAddOn(g_Player1, "addon_guard_ogryn_quarters")
Player_RestrictAddOn(g_Player1, "addon_guard_kasrkin_quarters")
Player_RestrictAddOn(g_Player1, "addon_guard_hq_2")


EGroup_ForceAddOn("eg_Guard_Mechanized2","addon_guard_sentinel_depot")

Player_RestrictResearch(g_Player2, "eldar_requisition_research_1")
Player_RestrictResearch(g_Player2, "eldar_power_research_1")
Player_RestrictResearch(g_Player2, "eldar_shroud_ability_research")
Player_RestrictResearch(g_Player2, "eldar_bonesinger_ability_research_3")

Player_RestrictResearch(g_Player2, "eldar_warlock_ability_research")
Player_RestrictResearch(g_Player2, "guard_upgrade_requisition_1")
Player_RestrictResearch(g_Player2, "eldar_haywire_bomb_research")

Player_RestrictResearch(g_Player1, "guard_enable_strafing_run")
Player_RestrictResearch(g_Player1, "guard_research_kasrkin_armor")
Player_RestrictResearch(g_Player1, "guard_research_kasrkin_speed")
Player_RestrictResearch(g_Player1, "guard_upgrade_ogryn_melee")
Player_RestrictResearch(g_Player1, "guard_full_scale_war")
Player_RestrictResearch(g_Player1, "guard_upgrade_power_2")
Player_RestrictResearch(g_Player1, "guard_upgrade_requisition_2")

Player_RestrictAddOn(g_Player2, "eldar_support_platform_addon")
Player_RestrictAddOn(g_Player2, "eldar_aspect_stone_warp_spider")
Player_RestrictAddOn(g_Player2, "eldar_aspect_stone_fire_dragon")


Player_RestrictAddOn(g_Player1, "eldar_aspect_stone_fire_dragon")
Player_RestrictSquad(g_Player2, "eldar_squad_seer_council")
Player_RestrictSquad(g_Player2, "eldar_squad_seer_council")
Player_RestrictSquad(g_Player2, "eldar_squad_bonesinger")
Player_RestrictSquad(g_Player2, "eldar_squad_farseer")
Player_RestrictSquad(g_Player2, "eldar_squad_grav_platform_brightlance")
Player_RestrictSquad(g_Player2, "eldar_squad_grav_platform")
Player_RestrictSquad(g_Player2, "eldar_squad_avatar")
Player_RestrictSquad(g_Player1, "guard_squad_command_squad")
Player_RestrictSquad(g_Player1, "guard_squad_chimera")

Player_RestrictAbility(g_Player1, "earthshaker_round")
Player_RestrictAbility(g_Player6, "earthshaker_round")
Player_RestrictAbility(g_Player7, "earthshaker_round")
Player_RestrictAbility(g_Player1, "guard_priest_fanatical")
Player_RestrictAbility(g_Player1, "guard_strafing_run")



EGroup_ForceAddOn("eg_Eldar_Aspect_Portal", "eldar_aspect_stone_banshees")
EGroup_ForceAddOn("eg_Eldar_Aspect_Portal", "eldar_aspect_stone_dark_reapers")

Player_GrantResearch(g_Player2, "eldar_warlock_ability_research")
Player_GrantResearch(g_Player2, "eldar_fleet_of_foot_research")
Player_GrantResearch(g_Player2, "eldar_farseer_ability_research_3")
Player_GrantResearch(g_Player2, "eldar_webway_gate_relocation_research")
Player_GrantResearch(g_Player2, "eldar_webway_gate_healing_research")

local ModID = Modifier_Create(MAT_EntityType , "health_maximum_modifier", MUT_Multiplication, false, 4 , "guard_leaders_captain")
Modifier_ApplyToPlayer( ModID, g_Player1  )

local ModID2 = Modifier_Create(MAT_EntityType, "health_maximum_modifier", MUT_Multiplication, false, 4 , "eldar_farseer")
Modifier_ApplyToPlayer( ModID2, g_Player2)
	

end


--[[ MUSIC ]]

function Rule_SetupMusicPlaylist()

t_music = {"music_mso2", "music_imperial_guard_theme", "music_theme_chaos_01", "music_ork_theme", "music_coming_of_chaos" }
t_music_intro_nis = {"stinger_mso2_theultramarines", "music_mso2_orch"}
t_music_intro_nis_end = {"music_mso2_perc_choir"}
t_music_field_command = {"music_imperial_guard_theme", "music_imperial_guard_theme_perc"}
t_music_first_chaos_base = {"music_msd1_perc_choir"}
t_music_first_chaos_base_doa = {"music_mso2", "music_mso2_perc_choir"}
t_music_switch_eldar ={"playerswitch_eldar"}
t_music_mid_nis_done = {"music_mso3", "music_mso3_perc_brs"}
t_music_artillery_doa = {"stinger_mso2_thebasilisks", "music_mso2"}

Playlist_Manager( PC_Music, t_music, true, true , {20, 40})

t_ambient = {"Snowy_wind_1", "Warhammer_XP_battle_BG" }
Playlist_Manager( PC_Ambient, t_ambient, true, true , {5, 10})

end


--[[ PRESET AI ]]

function Rule_PresetAI()

Cpu_EnableAll(false)	

end


--[[ START PLAY ]]

--[[ NOW TO KICK OFF THE ACTUAL MISSION ONCE THE OPENING NIS IS DONE ]]

function Rule_GameStart()

if g_firstrun then
	
	--[[ SET RESOURCES ]]
	Player_SetAllResources(g_Player1, 1000, 1000)
	Player_SetAllResources(g_Player2, 2500, 1000)
	
	--[[ PREACTION ]]
	-- Use this space to add core mission functions that should be in place during the opening NIS
	
	--[[ DIFFICULTY LEVEL ]]
	-- gets the difficulty level from the UI and passes it into the function
	Rule_SetDifficultyLevel( Difficulty_Get() )
	
	g_firstrun = false
	
elseif Event_IsAnyRunning() == false then		
	
	--[[ Get the AI doing whatever after the NIS is over ]]
	Rule_StartAI()
	
	--[[ FOW ]]
	World_EnablePlayerToPlayerFOW(g_Player2, g_Player1, true)
	
	--[[ WIN CHECK ]]

-- Rule_AddInterval(Rule_EndGameWin, 1)

	--[[ LOSE CHECK ]]

-- Rule_AddInterval(Rule_EndGameLose, 1)

	--[[ ASSIGN OBJECTIVES ]]
	Rule_AddInterval(Rule_Objective_Enginseer, 1)
	
	
	--[[ AUTOSAVE AFTER NIS ]]
	Rule_Add(Rule_Autosave_MissionStart)
	
	--[[ GENERATE ACTION ]]
	-- Use this space to add all core mission functions
	
	--[[ Clean up ]]
	Rule_Remove(Rule_GameStart)

	

	Rule_AddInterval(Rule_Chaos_Army_Creation, 0)
	Rule_AddInterval(Rule_Ork_Army_Creation, 0)
	Rule_AddInterval(Rule_Allied_Army_Creation, 1)

	Rule_AddOneShot(Rule_Restrict_Research, 0)
	
	--[[create the ork artillery]]
	Rule_AddOneShot(Rule_Create_Artillery, 0) 
				
	Rule_AddOneShot(Rule_Hide, 1)
end

end


--[[ DIFFICULTY ]]

function Rule_SetDifficultyLevel( difficultyLevel )

--[[ STATIC MODIFIERS ]]
-- Use this space to set any Static Modifiers. Modifiers that will not change with the difficulty setting.

-- Difficulty_SetForAll( difficultyLevel ) Difficulty_SetForPlayer(g_Player4, difficultyLevel) Difficulty_SetForPlayer(g_Player5, difficultyLevel) --[[ DIFFICULTY GENERAL RULES ]] --[[ Types of things that can me done include: a) adding resource values b) changing variables for the number of starting units a player recieves b) or even activating new objectives (although we refrained from this in DoW as the increased testing requirements it dictates) ]] -- easy if difficultyLevel == DIFFICULTY_EASY then

	--Cpu_SetDifficulty( g_Player2, AD_Standard )
	
-- medium
elseif difficultyLevel == DIFFICULTY_NORMAL then
	
-- hard
elseif difficultyLevel == DIFFICULTY_HARD then
	
end

end


--[[ AI ]]

function Rule_StartAI()

end


--[[ CORE GAME ]]

function Rule_Timer() g_time = g_time+1 end


--[[ Moment]]

function Rule_Prepare_moment()

if Player_AreSquadsNearMarker(g_Player1, "mkr_End_Moment") == true then
	g_Marine = true
	Rule_Remove(Rule_Prepare_moment)
end

end


--[[ Ork Assaults ]]

function Rule_Ork_Cave_Rampage()

	Util_CreateSquadsAtMarkerEx(g_Player5, "sg_Ork_Assault", "ork_squad_slugga", "mkr_Ork_Cave", 1, 9)
	Cmd_AttackMoveMarker("sg_Ork_Assault", "mkr_Ork_Attack_Destination")
			

end

function Rule_Cave()

EGroup_DeSpawn("eg_Rubble")

end

function Rule_Cave2()

if EGroup_GetAvgHealth("eg_Ork_Cave") == 0 then

	EGroup_ReSpawn("eg_Rubble")
	Rule_Remove(Rule_Cave2)
	Rule_Remove(Rule_Ork_Cave_Rampage)
end

end


--[[ Ork Army ]]

function Rule_Distraction()

Rule_Add(Rule_Distraction1)
Rule_Add(Rule_Distraction2)
Rule_Add(Rule_Distraction3)

end

function Rule_Distraction1()

if EGroup_Exists("eg_Ork_Distract1") and EGroup_IsEmpty("eg_Ork_Distract1") then
	Cmd_AttackMoveMarker("sg_Ork_Army1", "mkr_Ork_Distraction1")

	if g_Distraction1_Fire == true then
		
		g_Distraction1 = true
		Util_StartIntel(EVENTS.IE_Ork_Army_Moving)
		Rule_Add(Rule_Autosave_Generator1_Destroyed)
		Rule_Add(Rule_Distraction_Destruction1)
		Rule_Remove(Rule_Distraction1)
		
	elseif g_Distraction1_Fire == false then
		g_Distraction1 = true
		Util_StartIntel(EVENTS.IE_Ork_Army_Moving)
		Rule_Add(Rule_Autosave_Generator1_Destroyed)
		Rule_AddInterval(Rule_Objective_Distraction1, 2)
		Rule_Add(Rule_Distraction_Destruction1)
		Rule_Remove(Rule_Distraction1)
	end

elseif EGroup_Exists("eg_Ork_Distract1") == false then

	if g_Distraction1_Fire == true then
		
		Cmd_AttackMoveMarker("sg_Ork_Army1", "mkr_Ork_Distraction1")
		
		g_Distraction1 = true
		Util_StartIntel(EVENTS.IE_Ork_Army_Moving)
		Rule_Add(Rule_Distraction_Destruction1)
		Rule_Remove(Rule_Distraction1)
		
	elseif g_Distraction1_Fire == false then

		Cmd_AttackMoveMarker("sg_Ork_Army1", "mkr_Ork_Distraction1")
		
		g_Distraction1 = true
		Rule_AddInterval(Rule_Objective_Distraction1, 2)
		Util_StartIntel(EVENTS.IE_Ork_Army_Moving)
		Rule_Add(Rule_Autosave_Generator1_Destroyed)
		Rule_Add(Rule_Distraction_Destruction1)
		Rule_Remove(Rule_Distraction1)
	end
else
	
end

end

function Rule_Distraction_Destruction1()

if	Objective_Exists(Objective_Distraction1.title_id) then

	g_Distraction1 = true
	g_Ork_Move1 = true
	
	Rule_Check_AddInterval(Ork_Armies_Mover, 15)
	Rule_Remove(Rule_Distraction_Destruction1)

end

end

function Rule_Distraction2()

if EGroup_Exists("eg_Ork_Distract2") and EGroup_IsEmpty("eg_Ork_Distract2") then
	
	if g_Distraction2_Fire == true then
		
		Cmd_AttackMoveMarker("sg_Ork_Army2", "mkr_Ork_Distraction2")

		g_Distraction2 = true
		Rule_Add(Rule_Autosave_Generator2_Destroyed)
		Rule_Add(Rule_Distraction_Destruction2)
		Rule_Remove(Rule_Distraction2)
		
	elseif g_Distraction2_Fire == false then
	
		Cmd_AttackMoveMarker("sg_Ork_Army2", "mkr_Ork_Distraction2")

		g_Distraction2 = true
		Rule_Add(Rule_Autosave_Generator2_Destroyed)
		Rule_AddInterval(Rule_Objective_Distraction2, 2)
		Rule_Add(Rule_Distraction_Destruction2)
		Rule_Remove(Rule_Distraction2)
	end
	
elseif EGroup_Exists("eg_Ork_Distract2")  == false then

	if g_Distraction2_Fire == true then
	
		Cmd_AttackMoveMarker("sg_Ork_Army2", "mkr_Ork_Distraction2")

		g_Distraction2 = true
		Rule_Add(Rule_Autosave_Generator2_Destroyed)
		Rule_Add(Rule_Distraction_Destruction2)
		Rule_Remove(Rule_Distraction2)
	
	elseif g_Distraction2_Fire == false then

		Cmd_AttackMoveMarker("sg_Ork_Army2", "mkr_Ork_Distraction2")

		g_Distraction2 = true
		Rule_Add(Rule_Autosave_Generator2_Destroyed)
		Rule_AddInterval(Rule_Objective_Distraction2, 2)
		Rule_Add(Rule_Distraction_Destruction2)
		Rule_Remove(Rule_Distraction2)
	
	end
	
else

end

end

function Rule_Distraction_Destruction2()

if	Objective_Exists(Objective_Distraction2.title_id) then

	g_Ork_Move2 = true
	g_Distraction2 = true
	
	Rule_Check_AddInterval(Ork_Armies_Mover, 15)
	Rule_Remove(Rule_Distraction_Destruction2)

end

end

function Rule_Distraction3()

if EGroup_Exists("eg_Ork_Distract3") and EGroup_IsEmpty("eg_Ork_Distract3") then
	
	if g_Distraction3_Fire == true then
				
		Cmd_AttackMoveMarker("sg_Ork_Army3", "mkr_Ork_Distraction3")
		g_Distraction3 = true
		Rule_Add(Rule_Autosave_Generator3_Destroyed)
		Rule_Add(Rule_Distraction_Destruction3)
		Rule_Remove(Rule_Distraction3)	
	
	elseif g_Distraction3_Fire == false then
		Cmd_AttackMoveMarker("sg_Ork_Army3", "mkr_Ork_Distraction3")
		g_Distraction3 = true
		Rule_Add(Rule_Autosave_Generator3_Destroyed)
		Rule_AddInterval(Rule_Objective_Distraction3, 2)
		Rule_Add(Rule_Distraction_Destruction3)
		Rule_Remove(Rule_Distraction3)
	end
	
elseif 	EGroup_Exists("eg_Ork_Distract3") == false then

	if g_Distraction3_Fire == true then
	
	Cmd_AttackMoveMarker("sg_Ork_Army3", "mkr_Ork_Distraction3")
	g_Distraction3 = true
	Rule_Add(Rule_Autosave_Generator3_Destroyed)
	Rule_Add(Rule_Distraction_Destruction3)
	Rule_Remove(Rule_Distraction3)
	
	elseif g_Distraction3_Fire == false then

	Cmd_AttackMoveMarker("sg_Ork_Army3", "mkr_Ork_Distraction3")
	g_Distraction3 = true
	Rule_Add(Rule_Autosave_Generator3_Destroyed)
	Rule_AddInterval(Rule_Objective_Distraction3, 2)
	Rule_Add(Rule_Distraction_Destruction3)
	Rule_Remove(Rule_Distraction3)
	end
else


end

end

function Rule_Distraction_Destruction3()

if	Objective_Exists(Objective_Distraction3.title_id) then

	g_Ork_Move3 = true
	g_Distraction3 = true
	
	Rule_Check_AddInterval(Ork_Armies_Mover, 15)
	Rule_Remove(Rule_Distraction_Destruction3)

end

end


--[[ Ork Artillery Nis ]]

function Rule_Boom()

Rule_AddOneShot(Rule_Create_Artillery, 0) 

end

function Rule_Create_Artillery()

local sgroupID = Util_CreateSquadsAtMarkerEx(g_Player5, "sg_Ork_Artillery1", "ork_squad_wartrak", "mkr_Ork_Artillery1", 1, 1)
Squad_ForceUpgradeWeapons(SGroup_GetSpawnedSquadAt(sgroupID, 1), "ork_bomb_chucka_wartrack", 1)
SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Big_Guns"), SGroup_CreateIfNotFound("sg_Ork_Artillery1"))

local sgroupID2 = Util_CreateSquadsAtMarkerEx(g_Player5, "sg_Ork_Artillery2", "ork_squad_wartrak", "mkr_Ork_Artillery2", 1, 1)
Squad_ForceUpgradeWeapons(SGroup_GetSpawnedSquadAt(sgroupID2, 1), "ork_bomb_chucka_wartrack", 1)
SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Big_Guns"), SGroup_CreateIfNotFound("sg_Ork_Artillery2"))

local sgroupID3 = Util_CreateSquadsAtMarkerEx(g_Player5, "sg_Ork_Artillery3", "ork_squad_wartrak", "mkr_Ork_Artillery3", 1, 1)
Squad_ForceUpgradeWeapons(SGroup_GetSpawnedSquadAt(sgroupID3, 1), "ork_bomb_chucka_wartrack", 1)
SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Big_Guns"), SGroup_CreateIfNotFound("sg_Ork_Artillery3"))

local sgroupID4 = Util_CreateSquadsAtMarkerEx(g_Player5, "sg_Ork_Artillery4", "ork_squad_wartrak", "mkr_Ork_Artillery4", 1, 1)
Squad_ForceUpgradeWeapons(SGroup_GetSpawnedSquadAt(sgroupID4, 1), "ork_bomb_chucka_wartrack", 1)
SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Big_Guns"), SGroup_CreateIfNotFound("sg_Ork_Artillery4"))
	

SGroup_DeSpawn("sg_Ork_Big_Guns")

	

end

function Rule_Big_Guns()

if SGroup_Exists("sg_Ork_Big_Guns") and  SGroup_IsEmpty("sg_Ork_Big_Guns")  then
	
	g_Ork_Artillery = true
	Rule_Remove(Rule_Temp_Guard)
	Rule_Remove(Rule_Big_Guns)

elseif SGroup_Exists("sg_Ork_Big_Guns") == false then

	g_Ork_Artillery = true
	Rule_Remove(Rule_Temp_Guard)
	Rule_Remove(Rule_Big_Guns)

end

end

function Rule_SwitchBack()

Util_StartNIS(EVENTS.NIS_TwistBack)
Rule_Remove(Rule_SwitchBack)

end

function Rule_Switch()

if Player_AreSquadsNearMarker(g_Player1, "mkr_Switch") == true then

	Util_StartNIS(EVENTS.NIS_Twist)
	Rule_Remove(Rule_Switch2)
	Rule_Remove(Rule_Switch)
end

end

function Rule_Switch2()

if Player_AreSquadsNearMarker(g_Player1, "mkr_Switch2") == true then
	Util_StartNIS(EVENTS.NIS_Twist)
	Rule_Remove(Rule_Switch)
	Rule_Remove(Rule_Switch2)
end

end

function Rule_Temp_Guard()

Util_CreateSquadsAtMarkerEx(g_Player1, "sg_Guard_Run", "guard_squad_guardsmen", "mkr_TempGuard", 2, 9)
Cmd_SetStance("sg_Guard_Run", STANCE_CeaseFire)
SGroup_SetAvgHealth("sg_Guard_Run", 0.1)
SGroup_SetMoraleInvulnerable("sg_Guard_Run", true)
Cmd_MoveToMarker("sg_Guard_Run", "mkr_Guard_Run_Destination")

end


--[[ Eldar Army ]]

function Rule_Hide()

EGroup_DeSpawn("eg_Eldar_Base")

end

function Rule_Eldar_Army_Creation()

t_Eldar_Army = {
	sgroup_name = { --[[1]]"sg_Eldar_Troops1", --[[2]]"sg_Eldar_Troops2", --[[3]]"sg_Eldar_Troops3",  --[[4]]"sg_Eldar_Troops5" },  
	blueprint = {--[[1]]"eldar_squad_banshees", --[[2]]"eldar_squad_dark_reapers", --[[3]]"eldar_squad_dark_reapers", --[[4]]"eldar_squad_banshees"},
	marker_spawn = {--[[1]]"mkr_Eldar1", --[[2]]"mkr_Eldar2", --[[3]]"mkr_Eldar3", --[[4]]"mkr_Eldar5"}, 
	squad_num = {--[[1]] 1, --[[2]] 1, --[[3]] 1 , --[[4]] 1}, 
	squad_size = {--[[1]] 9, --[[2]] 6, --[[3]] 6, --[[4]] 9}, 
}

local i = g_Eldar_Army_iter 
if g_Eldar_Army_iter <= table.getn(t_Eldar_Army.sgroup_name) and (SGroup_Exists(t_Eldar_Army.sgroup_name[i]) == false or SGroup_IsEmpty(t_Eldar_Army.sgroup_name[i])) then
	local sgroupID = Util_CreateSquadsAtMarkerEx(g_Player2, t_Eldar_Army.sgroup_name[i], t_Eldar_Army.blueprint[i], t_Eldar_Army.marker_spawn[i], t_Eldar_Army.squad_num[i], t_Eldar_Army.squad_size[i])
	World_FXEventSquad("data:Art/Events/Unit_Upgrade_Morale_FX/Reinforce_Trooper", SGroup_FromName(t_Eldar_Army.sgroup_name[i]))
	
elseif g_Eldar_Army_iter > table.getn(t_Eldar_Army.sgroup_name) then
		g_Eldar_Army_iter = 0
		
		Rule_AddInterval(Rule_Objective_Ork_Artillery, 2)			
		
		Rule_Remove(Rule_Eldar_Army_Creation)

	
end
g_Eldar_Army_iter = g_Eldar_Army_iter+1

end

--[[- rule added in the nis]] function Rule_Taldeer_Track()

local blueprinttable = Util_MakeBlueprintTable("eldar_squad_farseer")

--[[ check to see if the group is empty AND if the boolean has been returned to false - this prevents duplicate rule adds ]]
if g_taldeerreturn ~= true and SGroup_Exists("sg_Eldar_Farseer") and ( SGroup_IsEmpty("sg_Eldar_Farseer") or SGroup_ContainsBlueprints( "sg_Eldar_Farseer", blueprinttable, false) == false) then
	
	--[[ prevents duplicate rule adds ]]
	g_taldeerreturn = true
	
	--[[ 6 second delay, keeps it from being instantaneous ]]
	Rule_AddOneShot(Rule_Taldeer_Return, 6)
	

end

end

function Rule_Taldeer_Return()

--[[ recreate the unit ]]
Util_CreateSquadsAtMarker(g_Player2, "sg_Eldar_Farseer", "eldar_squad_farseer","mkr_Eldar_Farseer", 1)

--[[ play the fx ]]
World_FXEventSquad("data:Art/Events/Unit_Upgrade_Morale_FX/Reinforce_Trooper", SGroup_FromName("sg_Eldar_Farseer"))

--[[ reset the flag ]]
g_taldeerreturn = false

--[[ if no messages have played recently, play the Intel Event - this keeps messages from flooding the player ]]
if Event_TimeSinceLast() > 15 then
	Util_StartIntel(EVENTS.IE_Eldar_ImBack)
end
EventCue_DoEvent( "recruit_commander", "/Races/Shared/Upgrade_weapon", "$42890", "$42892" )

end

--[[ Player Army ]]

function Rule_Imperial_Guard_Army_Creation()

local i = g_Imperial_Guard_Army_iter 

t_Imperial_Guard_Army = {

	sgroup_name = { --[[1]]"sg_Guard1", --[[2]]"sg_Guard2", --[[3]]"sg_Guard3", --[[4]]"sg_Guard4"},  
	
	blueprint = {--[[1]]"guard_squad_guardsmen", --[[2]]"guard_squad_guardsmen", --[[3]]"guard_squad_guardsmen", --[[4]]"guard_squad_guardsmen"},
	
	marker_spawn = {"mkr_Plane_Spawn"},
	
	marker_destination = {--[[1]]"mkr_Spawn_Grav1", --[[2]]"mkr_Spawn_Grav2", --[[3]]"mkr_Spawn_Grav3", --[[4]]"mkr_Spawn_Grav4"}, 
	
	squad_num = {--[[1]] 1, --[[2]] 1, --[[3]] 1, --[[4]] 1}, 
	
	squad_size = {--[[1]] 9, --[[2]] 9, --[[3]] 9, --[[4]] 9}, 
	
}
		
if g_Imperial_Guard_Army_iter <= table.getn(t_Imperial_Guard_Army.sgroup_name) and (SGroup_Exists(t_Imperial_Guard_Army.sgroup_name[i]) == false or SGroup_IsEmpty(t_Imperial_Guard_Army.sgroup_name[i])) then

	local sgroupID = Util_CreateSquadsAtMarkerEx(g_Player1, t_Imperial_Guard_Army.sgroup_name[i], t_Imperial_Guard_Army.blueprint[i], t_Imperial_Guard_Army.marker_spawn[1], t_Imperial_Guard_Army.squad_num[i], t_Imperial_Guard_Army.squad_size[i])
	SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Original_Guardsmen"), SGroup_FromName(t_Imperial_Guard_Army.sgroup_name[i]))
	Cmd_MoveToMarker(t_Imperial_Guard_Army.sgroup_name[i], t_Imperial_Guard_Army.marker_destination[i])
	elseif g_Imperial_Guard_Army_iter > table.getn(t_Imperial_Guard_Army.sgroup_name) then
			g_Imperial_Guard_Army_iter = 0
			
							
			EGroup_ForceAddOn("eg_Pillbox2","addon_guard_turret")
			EGroup_ForceAddOn("eg_Pillbox4","addon_guard_turret")
			EGroup_ForceAddOn("eg_Pillbox16","addon_guard_turret")
			EGroup_ForceAddOn("eg_Pillbox17","addon_guard_turret")
			EGroup_ForceAddOn("eg_Pillbox21","addon_guard_turret")
			EGroup_ForceAddOn("eg_Pillbox24","addon_guard_turret")
			EGroup_ForceAddOn("eg_Rocket_Turret1","addon_guard_turret") --[[pillbox10]]
			EGroup_ForceAddOn("eg_Rocket_Turret2","addon_guard_turret")  --[[pillbox11]]
			
			EGroup_ForceAddOn("eg_Ork_Strat_Points", "ork_gork_totem_addon_1")		
			EGroup_ForceAddOn("eg_Chaos_Strat_Points", "chaos_list_post_addon_1")
			
			Rule_AddInterval(Rule_Sturnn_Track, 4)				
			Rule_AddOneShot(Rule_Bunker_Pillbox, 1)
			Rule_Add(Rule_Check_Originals)
			Rule_Remove(Rule_Imperial_Guard_Army_Creation)
			Anim_PlaySGroupAnim(SGroup_FromName("sg_Landing_Valkyrie"), "sp_take_off")
			
			Rule_AddOneShot(Rule_Remove_Plane, 8)
	
		
	end
g_Imperial_Guard_Army_iter = g_Imperial_Guard_Army_iter+1

end

function Rule_Remove_Plane()

SGroup_DeSpawn("sg_Landing_Valkyrie")
SGroup_DestroyAllSquads("sg_Landing_Valkyrie")
Rule_Remove(Rule_Remove_Plane)

end

--[[ - this rule is there to assure that the player does not remain stuck at the beginning if his guardsmen die. If they do die and he has not completed the first objective then he loses]] function Rule_Check_Originals()

if SGroup_Exists("sg_Original_Guardsmen") and SGroup_IsEmpty("sg_Original_Guardsmen") then
	
	g_free_enginseer = false
	Rule_Remove(Rule_Check_Originals)
	
elseif EGroup_IsEmpty("eg_Initial_Command1") or EGroup_IsEmpty("eg_Initial_Command2") then
	
	g_free_enginseer = false
	Rule_Remove(Rule_Check_Originals)
	
else	

end

end

function Rule_Sturnn_Track()

--[[ check to see if the group is empty AND if the boolean has been returned to false - this prevents duplicate rule adds ]]
if g_sturnnreturn ~= true and SGroup_Exists("sg_Sturnn") and SGroup_IsEmpty("sg_Sturnn") and g_free_enginseer == true then
	
	--[[ prevents duplicate rule adds ]]
	g_sturnnreturn = true
	
	--[[ 6 second delay, keeps it from being instantaneous ]]
	Rule_AddOneShot(Rule_Sturnn_Return, 6)
	
	
	
elseif g_sturnnreturn ~= true and SGroup_Exists("sg_Sturnn") and SGroup_IsEmpty("sg_Sturnn") and g_free_enginseer == nil then		
	
	--[[ prevents duplicate rule adds ]]
	g_sturnnreturn = true
	
	--[[ 6 second delay, keeps it from being instantaneous ]]
	Rule_AddOneShot(Rule_Sturnn_Return2, 6)
	
	
end

end

function Rule_Sturnn_Return()

--[[ recreate the unit ]]

Util_CreateSquadsAtMarker(g_Player1, "sg_Sturnn", "guard_squad_command_squad","mkr_Spawn_Sturnn_base", 1)

--[[ play the fx ]]
World_FXEventSquad("data:Art/Events/Unit_Upgrade_Morale_FX/Reinforce_Trooper", SGroup_FromName("sg_Sturnn"))


--[[ reset the flag ]]
g_sturnnreturn = false

--[[ if no messages have played recently, play the Intel Event - this keeps messages from flooding the player ]]
if Event_TimeSinceLast() > 15 then
	Util_StartIntel(EVENTS.IE_Guard_ImBack)
end
EventCue_DoEvent( "recruit_commander", "/Races/Shared/Upgrade_weapon", "$42890", "$42892" )

end

function Rule_Sturnn_Return2()

--[[ recreate the unit ]]

Util_CreateSquadsAtMarker(g_Player1, "sg_Sturnn", "guard_squad_command_squad", "mkr_Spawn_Sturnn", 1)

--[[ play the fx ]]
World_FXEventSquad("data:Art/Events/Unit_Upgrade_Morale_FX/Reinforce_Trooper", SGroup_FromName("sg_Sturnn"))

--[[ reset the flag ]] g_sturnnreturn = false

--[[ if no messages have played recently, play the Intel Event - this keeps messages from flooding the player ]]
if Event_TimeSinceLast() > 15 then
	Util_StartIntel(EVENTS.IE_Guard_ImBack)
end
EventCue_DoEvent( "recruit_commander", "/Races/Shared/Upgrade_weapon", "$42890", "$42892" )

end


--[[ Allied Army ]]

--[[ - these are the units that the player can repair and use to his advantage. The sentinels are given to g_Player6 at the start so as not to be attacked by the AI. when the human player nears them they are transfered to g_Player7]]

function Rule_Allied_Army_Creation()

local i = g_Allied_Army_iter 

t_Allied_Army = {
	sgroup_name = { --[[1]]"sg_Broken_Sentinel1", --[[2]]"sg_Broken_Sentinel2", --[[3]]"sg_Broken_Sentinel3", --[[4]]"sg_Broken_Chimera1", --[[5]]"sg_Broken_Chimera2", --[[6]]"sg_Broken_Chimera3", --[[7]]"sg_Basilisk1", --[[8]]"sg_Basilisk2",
	--[[9]]"sg_Basilisk3", --[[10]]"sg_Basilisk4", --[[11]]"sg_Basilisk5", --[[12]]"sg_Basilisk6"},  
	
	blueprint = {--[[1]]"guard_squad_sentinel", --[[2]]"guard_squad_sentinel", --[[3]]"guard_squad_sentinel", --[[4]]"guard_squad_chimera", --[[5]]"guard_squad_chimera", --[[6]]"guard_squad_chimera", --[[7]]"guard_squad_basilisk_sp_mso2", --[[8]]"guard_squad_basilisk_sp_mso2", 
	--[[9]]"guard_squad_basilisk_sp_mso2", --[[10]]"guard_squad_basilisk_sp_mso2", --[[11]]"guard_squad_basilisk_sp_mso2", --[[12]]"guard_squad_basilisk_sp_mso2"},
	
	marker_spawn = {--[[1]]"mkr_Sentinel1", --[[2]]"mkr_Sentinel2", --[[3]]"mkr_Sentinel3", --[[4]]"mkr_Chimera1", --[[5]]"mkr_Chimera2", --[[6]]"mkr_Chimera3", --[[7]]"mkr_Basilisk1", --[[8]]"mkr_Basilisk2",
	--[[9]]"mkr_Basilisk3", --[[10]]"mkr_Basilisk4", --[[11]]"mkr_Basilisk5", --[[12]]"mkr_Basilisk6"}, 

	squad_num = {--[[1]] 1, --[[2]] 1, --[[3]] 1, --[[4]] 1, --[[5]] 1, --[[6]] 1, --[[7]] 1, --[[8]] 1, --[[9]] 1, --[[10]] 1, --[[11]] 1, --[[12]] 1}, 

	squad_size = {--[[1]] 1, --[[2]] 1, --[[3]] 1, --[[4]] 1, --[[5]] 1, --[[6]] 1, --[[7]] 1, --[[8]] 1, --[[9]] 1, --[[10]] 1, --[[11]] 1, --[[12]] 1}, 
}
		
if g_Allied_Army_iter <= table.getn(t_Allied_Army.sgroup_name) and (SGroup_Exists(t_Allied_Army.sgroup_name[i]) == false or SGroup_IsEmpty(t_Allied_Army.sgroup_name[i])) then

	local sgroupID = Util_CreateSquadsAtMarkerEx(g_Player6, t_Allied_Army.sgroup_name[i], t_Allied_Army.blueprint[i], t_Allied_Army.marker_spawn[i], t_Allied_Army.squad_num[i], t_Allied_Army.squad_size[i])
		SGroup_SetAvgHealth(t_Allied_Army.sgroup_name[i], 0.3)
		Cmd_SetStance(t_Allied_Army.sgroup_name[i], STANCE_CeaseFire)
		
		
	elseif g_Allied_Army_iter > table.getn(t_Allied_Army.sgroup_name) then
		g_Allied_Army_iter = 0

		local ModID = Modifier_Create(MAT_EntityType, "health_regeneration_modifier", MUT_Multiplication, false, 0.001, "guard_vehicles_sentinel")
		local ModID = Modifier_Create(MAT_EntityType, "health_regeneration_modifier", MUT_Multiplication, false, 0.001, "guard_squad_chimera")
		
		for i = 1, 6 do
		
			SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Basilisks"),SGroup_CreateIfNotFound("sg_Basilisk"..i))
		end
		Modifier_ApplyToPlayer(ModID, g_Player6)
		Rule_Remove(Rule_Allied_Army_Creation)
	
		
	end
g_Allied_Army_iter = g_Allied_Army_iter+1

end


--[[Reparing Sentinels and Chimeras ]]

function Rule_Sentinel_Transfer()

if Player_AreSquadsNearMarker(g_Player1, "mkr_Sentinel_Check") == true then
	for i = 1, 3 do
	
		SGroup_SetPlayerOwner("sg_Broken_Sentinel"..i, g_Player7)
		
			
	end
	
	Util_StartIntel(EVENTS.IE_Sentinel_Repair)
	Rule_Add(Rule_Objective_Repair_Sentinels)
	Rule_AddInterval(Rule_Sentinel_Repair_Check1, 2)
	Rule_AddInterval(Rule_Sentinel_Repair_Check2, 2)
	Rule_AddInterval(Rule_Sentinel_Repair_Check3, 2)
	Rule_Add(Rule_Check_Sentinel_Use)
	Rule_Remove(Rule_Sentinel_Transfer)
end

end

function Rule_Chimera_Transfer()

if Player_AreSquadsNearMarker(g_Player1, "mkr_Chimera_Check") == true then
	for i = 1, 3 do
	
		SGroup_SetPlayerOwner("sg_Broken_Chimera"..i, g_Player7)
				
	end
	
	Util_StartIntel(EVENTS.IE_Chimera_Repair)
	Rule_Add(Rule_Objective_Repair_Chimeras)
	Rule_AddInterval(Rule_Chimera_Repair_Check1, 2)
	Rule_AddInterval(Rule_Chimera_Repair_Check2, 2)
	Rule_AddInterval(Rule_Chimera_Repair_Check3, 2)
	Rule_Add(Rule_Check_Chimera_Use)
	Rule_Remove(Rule_Chimera_Transfer)
end

end


function Rule_Sentinel_Repair_Check1()

if SGroup_GetAvgHealth("sg_Broken_Sentinel1") == 1 then

	SGroup_SetPlayerOwner("sg_Broken_Sentinel1", g_Player1)
	Cmd_SetStance("sg_Broken_Sentinel1", STANCE_Hold)
	Sound_PlayStinger("stinger_newigunit")
	Rule_Remove(Rule_Sentinel_Repair_Check1)
	g_Sentinel = g_Sentinel + 1
end
	

end

function Rule_Sentinel_Repair_Check2()

if SGroup_GetAvgHealth("sg_Broken_Sentinel2") == 1 then

	SGroup_SetPlayerOwner("sg_Broken_Sentinel2", g_Player1)
	Cmd_SetStance("sg_Broken_Sentinel2", STANCE_Hold)
	Sound_PlayStinger("stinger_newigunit")
	Rule_Remove(Rule_Sentinel_Repair_Check2)
	g_Sentinel = g_Sentinel + 1
end
	

end

function Rule_Sentinel_Repair_Check3()

if SGroup_GetAvgHealth("sg_Broken_Sentinel3") == 1 then

	SGroup_SetPlayerOwner("sg_Broken_Sentinel3", g_Player1)
	Cmd_SetStance("sg_Broken_Sentinel3", STANCE_Hold)
	Sound_PlayStinger("stinger_newigunit")
	Rule_Remove(Rule_Sentinel_Repair_Check3)
	g_Sentinel = g_Sentinel + 1

end

end


function Rule_Chimera_Repair_Check1()

if SGroup_GetAvgHealth("sg_Broken_Chimera1") == 1 then

	SGroup_SetPlayerOwner("sg_Broken_Chimera1", g_Player1)
	Cmd_SetStance("sg_Broken_Chimera1", STANCE_Hold)
	Sound_PlayStinger("stinger_newigunit")
	Rule_Remove(Rule_Chimera_Repair_Check1)
	g_Chimera = g_Chimera + 1
end
	

end

function Rule_Chimera_Repair_Check2()

if SGroup_GetAvgHealth("sg_Broken_Chimera2") == 1 then

	SGroup_SetPlayerOwner("sg_Broken_Chimera2", g_Player1)
	Cmd_SetStance("sg_Broken_Chimera2", STANCE_Hold)
	Sound_PlayStinger("stinger_newigunit")
	Rule_Remove(Rule_Chimera_Repair_Check2)
	g_Chimera = g_Chimera + 1
end
	

end

function Rule_Chimera_Repair_Check3()

if SGroup_GetAvgHealth("sg_Broken_Chimera3") == 1 then

	SGroup_SetPlayerOwner("sg_Broken_Chimera3", g_Player1)
	Cmd_SetStance("sg_Broken_Chimera3", STANCE_Hold)
	Sound_PlayStinger("stinger_newigunit")
	Rule_Remove(Rule_Chimera_Repair_Check3)
	g_Chimera = g_Chimera + 1

end

end

function Rule_Check_Sentinel_Use()

if Player_AreSquadsNearMarker(g_Player1, "mkr_Sentinel_Use") then
	
	Util_StartIntel(EVENTS.IE_Sentinel_Use)
	Rule_Remove(Rule_Check_Sentinel_Use)
	
end

end


function Rule_Check_Chimera_Use()

if Player_AreSquadsNearMarker(g_Player1, "mkr_Chimera_Use") then
	
	Util_StartIntel(EVENTS.IE_Chimera_Use)
	Util_CreateSquadsAtMarkerEx(g_Player4, "sg_Point9_Raptor_Raid", "chaos_squad_raptor","mkr_Chaos15", 1, 10)
	Rule_AddIntervalDelay(Rule_Raptor_Point9_Jump, 2, 5)
	Rule_Remove(Rule_Check_Chimera_Use)
	
end

end

--[[ Chaos Army ]]

function Rule_Chaos_Army_Creation()

local i = g_Chaos_Army_iter 

t_Chaos_Army = {
	sgroup_name = { --[[1]]"sg_Chaos1", --[[2]]"sg_Chaos2", --[[3]]"sg_Chaos3", --[[4]] --[[5]]"sg_Chaos5", --[[6]]"sg_Chaos6", --[[7]]"sg_Chaos_Predator1", --[[8]] --[[9]]"sg_Chaos_Rhino2", --[[10]]"sg_Chaos7", 
	--[[11]]"sg_Chaos8", --[[12]]"sg_Chaos9", --[[13]]"sg_Chaos10", --[[14]]"sg_Chaos_Predator2", --[[15]]"sg_Chaos11", --[[16]]"sg_Chaos12", --[[17]] --[[18]]"sg_Chaos14", --[[19]]"sg_Chaos15",
	--[[20]]"sg_Chaos16", --[[21]]--[[22]] --[[23]]"sg_Chaos19", --[[24]]"sg_Chaos20"},
	
	blueprint = {--[[1]]"chaos_marine_squad", --[[2]]"chaos_squad_cultist", --[[3]]"chaos_marine_squad", --[[4]] --[[5]]"chaos_marine_squad", --[[6]]"chaos_marine_squad", --[[7]]"chaos_squad_predator", --[[8]] --[[9]]"chaos_squad_raptor", --[[10]]"chaos_squad_cultist", 
	--[[11]]"chaos_marine_squad", --[[12]]"chaos_marine_squad", --[[13]]"chaos_marine_squad", --[[14]]"chaos_squad_predator", --[[15]]"chaos_marine_squad", --[[16]]"chaos_squad_cultist", --[[17]] --[[18]]"chaos_marine_squad", --[[19]]"chaos_squad_khorne_berserker",
	--[[20]]"chaos_squad_khorne_berserker", --[[21]] --[[22]] --[[23]]"chaos_marine_squad", --[[24]]"chaos_squad_raptor"},
	
	marker_spawn = {--[[1]]"mkr_Chaos1", --[[2]]"mkr_Chaos2", --[[3]]"mkr_Chaos3", --[[4]] --[[5]]"mkr_Chaos5", --[[6]]"mkr_Chaos6", --[[7]]"mkr_Chaos7", --[[8]]--[[9]]"mkr_Chaos9", --[[10]]"mkr_Chaos11", 
	--[[11]]"mkr_Chaos14", --[[12]]"mkr_Chaos15", --[[13]]"mkr_Chaos18", --[[14]]"mkr_Chaos20", --[[15]]"mkr_Chaos21", --[[16]]"mkr_Chaos22", --[[17]] --[[18]]"mkr_Chaos_Base_Defender2", --[[19]]"mkr_Chaos_Base_Defender3",
	--[[20]]"mkr_Chaos_Base_Defender4", --[[21]] --[[22]] --[[23]]"mkr_Chaos_Base_Defender7", --[[24]]"mkr_Chaos_Raptor_Passage_Raid"}, 
	
	stance = {--[[1]]STANCE_Attack, --[[2]]STANCE_Attack, --[[3]]STANCE_StandGround, --[[4]] --[[5]]STANCE_StandGround, --[[6]]STANCE_StandGround, --[[7]]STANCE_Hold, --[[8]] --[[9]]STANCE_CeaseFire,
	--[[10]]STANCE_Hold, --[[11]]STANCE_Hold, --[[12]]STANCE_Hold, --[[13]]STANCE_Attack, --[[14]]STANCE_StandGround, --[[15]]STANCE_Hold, --[[16]]STANCE_Hold, --[[17]] --[[18]]STANCE_StandGround, --[[19]]STANCE_Attack,
	--[[20]]STANCE_Attack, --[[21]]--[[22]] --[[23]]STANCE_StandGround, --[[24]]STANCE_Attack},
	
	melee_stance = {--[[1]]MSTANCE_Ranged, --[[2]]MSTANCE_Ranged, --[[3]]MSTANCE_Ranged, --[[4]] --[[5]]MSTANCE_Ranged, --[[6]]MSTANCE_Ranged, --[[7]]MSTANCE_Assault, --[[8]] --[[9]]MSTANCE_Assault, --[[10]]MSTANCE_Assault, 
	--[[11]]MSTANCE_Assault, --[[12]]MSTANCE_Assault, --[[13]]MSTANCE_Ranged, --[[14]]MSTANCE_Ranged, --[[15]]MSTANCE_Ranged, --[[16]]MSTANCE_Assault, --[[17]] --[[18]]MSTANCE_Ranged, --[[19]]MSTANCE_Assault,
	--[[20]]MSTANCE_Assault, --[[21]] --[[22]] --[[23]]MSTANCE_Ranged, --[[24]]MSTANCE_Assault},
	
	squad_num = {--[[1]] 1, --[[2]] 1, --[[3]] 1, --[[4]]  --[[5]] 1, --[[6]] 1, --[[7]] 1, --[[8]]  --[[9]] 1, --[[10]] 1, --[[11]] 1, --[[12]] 1, --[[13]] 1, --[[14]] 2, --[[15]] 1, --[[16]] 1, --[[17]] 1, --[[18]] 1, --[[19]] 1, --[[20]] 1, --[[21]]  --[[22]] --[[23]] 1, --[[24]] 1}, 
	
	squad_size = {--[[1]] 9, --[[2]] 9, --[[3]] 6, --[[4]]  --[[5]] 5, --[[6]] 7, --[[7]] 1, --[[8]]  --[[9]] 6, --[[10]] 9, --[[11]] 6, --[[12]] 5, --[[13]] 5, --[[14]] 2, --[[15]] 5, --[[16]] 7, --[[17]] 9, --[[18]] 9, --[[19]] 5, --[[20]] 9, --[[21]]  --[[22]]  --[[23]] 6, --[[24]] 6}, 
}
		
if g_Chaos_Army_iter <= table.getn(t_Chaos_Army.sgroup_name) and (SGroup_Exists(t_Chaos_Army.sgroup_name[i]) == false or SGroup_IsEmpty(t_Chaos_Army.sgroup_name[i])) then

	local sgroupID = Util_CreateSquadsAtMarkerEx(g_Player4, t_Chaos_Army.sgroup_name[i], t_Chaos_Army.blueprint[i], t_Chaos_Army.marker_spawn[i], t_Chaos_Army.squad_num[i], t_Chaos_Army.squad_size[i])
		Cmd_SetStance(t_Chaos_Army.sgroup_name[i], t_Chaos_Army.stance[i])
		Cmd_SetMeleeStance(t_Chaos_Army.sgroup_name[i], t_Chaos_Army.melee_stance[i])
		
		
	elseif g_Chaos_Army_iter > table.getn(t_Chaos_Army.sgroup_name) then
			g_Chaos_Army_iter = 0
			EGroup_ForceAddOn("eg_Chaos_Base_Turret8","space_marine_turret_addon")
			EGroup_ForceAddOn("eg_Chaos_Base_Turret2","space_marine_turret_addon")
			EGroup_ForceAddOn("eg_Chaos_Base_Turret5","space_marine_turret_addon")
			EGroup_ForceAddOn("eg_Chaos_Base_Turret6","space_marine_turret_addon")
			
			--[[put the units defending the final chaos in a group together]]
			SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Final_Chaos"), SGroup_FromName("sg_Chaos14"))
			SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Final_Chaos"), SGroup_FromName("sg_Chaos15"))
			SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Final_Chaos"), SGroup_FromName("sg_Chaos16"))
			SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Final_Chaos"), SGroup_FromName("sg_Chaos19"))
			
			--[[despawn the units defending the final chaos base]]
			SGroup_DeSpawn("sg_Final_Chaos")
			
			--[[group together units to be despawned until player has destroyed first chaos base]]
			SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Chaos_Trench2"), SGroup_FromName("sg_Chaos3"))
			SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Chaos_Trench2"), SGroup_FromName("sg_Chaos5"))
			SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Chaos_Trench2"), SGroup_FromName("sg_Chaos6"))
			SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Chaos_Trench2"), SGroup_FromName("sg_Chaos7"))
			SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Chaos_Trench2"), SGroup_FromName("sg_Chaos8"))
			
			--[[despawn chaos units in second trench]]
			SGroup_DeSpawn("sg_Chaos_Trench2")
			
			Rule_Remove(Rule_Chaos_Army_Creation)
			
		
	end
g_Chaos_Army_iter = g_Chaos_Army_iter+1

end


--[[ Chaos Assaulting Cultist Army ]]

function Rule_Cultist_Table()

t_Chaos_Assaulting_Cultist_Army = {
	sgroup_name = { --[[1]]"sg_Chaos_Assault1", --[[2]]"sg_Chaos_Assault2", --[[3]]"sg_Chaos_Assault3", --[[4]]"sg_Chaos_Assault4"},
	
	blueprint = {--[[1]]"chaos_squad_cultist", --[[2]]"chaos_squad_cultist", --[[3]]"chaos_marine_squad", --[[4]]"chaos_squad_cultist"},
	
	marker_spawn = {--[[1]]"mkr_Chaos4A", --[[2]]"mkr_Chaos4B", --[[3]]"mkr_Chaos4C", --[[4]]"mkr_Chaos4D"}, 
	
	stance = {--[[1]]STANCE_Attack, --[[2]]STANCE_Attack, --[[3]]STANCE_Attack, --[[4]]STANCE_Attack},
	
	melee_stance = {--[[1]]MSTANCE_Ranged, --[[2]]MSTANCE_Assault, --[[3]]MSTANCE_Ranged, --[[4]]MSTANCE_Assault},
	
	squad_num = {--[[1]] 1, --[[12]] 1, --[[3]] 1, --[[4]] 1}, 
	
	squad_size = {--[[1]] 7, --[[2]] 7, --[[3]] 7, --[[4]] 7}, 
}


t_Cultist_Generators = {--[[1]]"eg_Cultist_GeneratorA", --[[2]]"eg_Cultist_GeneratorB", --[[3]]"eg_Cultist_GeneratorC", --[[4]]"eg_Cultist_GeneratorD"}

end

function Rule_Chaos_Assaulting_Cultist_Army_Creation()

local i = g_Chaos_Assaulting_Cultist_Army_iter 


if g_Chaos_Assaulting_Cultist_Army_iter <= table.getn(t_Chaos_Assaulting_Cultist_Army.sgroup_name) and (SGroup_Exists(t_Chaos_Assaulting_Cultist_Army.sgroup_name[i]) == false or SGroup_IsEmpty(t_Chaos_Assaulting_Cultist_Army.sgroup_name[i])) then

	local sgroupID = Util_CreateSquadsAtMarkerEx(g_Player4, t_Chaos_Assaulting_Cultist_Army.sgroup_name[i], t_Chaos_Assaulting_Cultist_Army.blueprint[i], t_Chaos_Assaulting_Cultist_Army.marker_spawn[i], t_Chaos_Assaulting_Cultist_Army.squad_num[i], t_Chaos_Assaulting_Cultist_Army.squad_size[i])
		Cmd_SetStance(t_Chaos_Assaulting_Cultist_Army.sgroup_name[i], t_Chaos_Assaulting_Cultist_Army.stance[i])
		Cmd_SetMeleeStance(t_Chaos_Assaulting_Cultist_Army.sgroup_name[i], t_Chaos_Assaulting_Cultist_Army.melee_stance[i])
		Cmd_AttackMoveMarker(t_Chaos_Assaulting_Cultist_Army.sgroup_name[i], "mkr_ping_enginseer")
		
	elseif g_Chaos_Assaulting_Cultist_Army_iter > table.getn(t_Chaos_Assaulting_Cultist_Army.sgroup_name) then
			g_Chaos_Assaulting_Cultist_Army_iter = 0
			Rule_AddOneShot(Rule_Assault_Adder, 5)
			Rule_Remove(Rule_Chaos_Assaulting_Cultist_Army_Creation)
			
		
	end
g_Chaos_Assaulting_Cultist_Army_iter = g_Chaos_Assaulting_Cultist_Army_iter+1

end

function Rule_Assault_Adder()

Rule_AddIntervalDelay(Rule_Chaos_Assaulting_Cultist_Army_Creation, 5, 50)

end

function Rule_Checking_Generators()

Rule_AddInterval(Rule_Assaulting_Cultists_Checker, 3)
Rule_AddInterval(Rule_Assaulting_Cultists_CheckerA, 3)
Rule_AddOneShot(Rule_Cultist_Table, 0)

end

function Rule_Assaulting_Cultists_Checker()

if EGroup_IsEmpty("eg_Cultists_Generators")  then

	Rule_AddInterval(Rule_Raptor_Passage_Order, 2)
	Cmd_JumpToMarker("sg_Chaos20", "mkr_Passage_Jump_Target")

	Rule_Remove(Rule_Chaos_Assaulting_Cultist_Army_Creation)
	Rule_Remove(Rule_Assault_Adder)
	Rule_Remove(Rule_Assaulting_Cultists_Checker)
	Rule_Remove(Rule_Assaulting_Cultists_CheckerA)
	
	Playlist_Manager( PC_Music, t_music_first_chaos_base_doa, true, false , {20, 40})
	
	
end

end

function Rule_Assaulting_Cultists_CheckerA()

local i = g_Cultist_Generators
if g_Cultist_Generators <= table.getn(t_Cultist_Generators) and EGroup_IsEmpty(t_Cultist_Generators[i])  then

	table.remove(t_Chaos_Assaulting_Cultist_Army.sgroup_name, i)
	table.remove(t_Chaos_Assaulting_Cultist_Army.blueprint, i)
	table.remove(t_Chaos_Assaulting_Cultist_Army.marker_spawn, i)
	table.remove(t_Chaos_Assaulting_Cultist_Army.stance, i)
	table.remove(t_Chaos_Assaulting_Cultist_Army.melee_stance, i)
	table.remove(t_Chaos_Assaulting_Cultist_Army.squad_num, i)
	table.remove(t_Chaos_Assaulting_Cultist_Army.squad_size, i)
	
	
	table.remove(t_Cultist_Generators, i)

elseif g_Cultist_Generators > table.getn(t_Cultist_Generators) then

	g_Cultist_Generators = 0
	
end

g_Cultist_Generators = g_Cultist_Generators +1

end

--[[ Ork Army 2 ]]

function Rule_Ork_Army_Creation()

local i = g_Ork_Army_iter 

t_Ork_Army = {
	sgroup_name = { --[[1]] "sg_Ork5", --[[2]]"sg_Ork2", --[[3]] --[[4]]"sg_Ork3", --[[5]] --[[6]]"sg_Ork16", --[[7]] --[[8]]"sg_Ork_Mek2", --[[9]] --[[10]]"sg_Ork6", --[[11]]"sg_Ork7", 
	--[[12]]"sg_Ork8", --[[13]]"sg_Ork9", --[[14]]--[[15]] --[[16]]"sg_Ork_Armor2", --[[17]]"sg_Ork12", --[[18]] --[[19]]"sg_Ork_Army1", --[[20]] --[[21]]"sg_Ork15",
	--[[22]] --[[23]] --[[24]] --[[25]]"sg_Ork20", --[[26]]"sg_Ork_Army2", --[[27]]"sg_Ork_Army3", --[[28]]"sg_Ork21", --[[29]]"sg_Ork22", --[[30]] --[[31]] --[[32]]"sg_Ork25", --[[33]]"sg_Ork26", --[[34]] --[[35]]"sg_Ork28", --[[36]]"sg_Ork29",
	--[[37]]"sg_Ork30", --[[38]] --[[39]]"sg_Ork32", --[[40]]"sg_Ork33", --[[41]]"sg_Ork34", --[[42]]"sg_Ork35", --[[43]]"sg_Ork36", --[[44]]"sg_Ork37", --[[45]]"sg_Ork38", --[[46]]"sg_Ork_Environment_Boyz"},
	
	blueprint = {--[[1]]"ork_squad_shoota_boy", --[[2]]"ork_squad_shoota_boy", --[[3]] --[[4]]"ork_squad_slugga", --[[5]] --[[6]]"ork_squad_slugga", --[[7]] --[[8]]"ork_squad_slugga", --[[9]] --[[10]]"ork_squad_slugga", 
	--[[11]]"ork_squad_tankbusta", --[[12]]"ork_squad_shoota_boy", --[[13]]"ork_squad_looted_tank", --[[14]]--[[15]] --[[16]]"ork_squad_nob", --[[17]]"ork_squad_slugga", --[[18]] --[[19]]"ork_squad_killa_kan",--[[20]] 
	--[[21]]"ork_squad_slugga",--[[22]] --[[23]] --[[24]] --[[25]]"ork_squad_shoota_boy", --[[26]]"ork_squad_killa_kan", --[[27]]"ork_squad_killa_kan", --[[28]]"ork_squad_slugga", --[[29]]"ork_squad_slugga", --[[30]] 
	--[[31]] --[[32]]"ork_squad_slugga", --[[33]]"ork_squad_tankbusta", --[[34]] --[[35]]"ork_squad_shoota_boy", --[[36]]"ork_squad_slugga", --[[37]]"ork_squad_slugga", --[[38]] --[[39]]"ork_squad_shoota_boy", --[[40]]"ork_squad_stormboy", 
	--[[41]]"ork_squad_slugga", --[[42]]"ork_squad_nob", --[[43]]"ork_squad_nob", --[[44]]"ork_squad_stormboy", --[[45]]"ork_squad_stormboy", --[[46]]"ork_squad_stormboy"},
	
	marker_spawn = {--[[1]]"mkr_Ork28",--[[2]]"mkr_Ork2", --[[3]] --[[4]]"mkr_Ork5", --[[5]] --[[6]]"mkr_Ork8", --[[7]] --[[8]]"mkr_Ork11", --[[9]] --[[10]]"mkr_Ork13", 
	--[[11]]"mkr_Ork14", --[[12]]"mkr_Ork16", --[[13]]"mkr_Ork15", --[[14]]--[[15]] --[[16]]"mkr_Ork21", --[[17]]"mkr_Ork22", --[[18]] --[[19]]"mkr_Ork24", --[[20]] --[[21]]"mkr_Ork26",
	--[[22]] --[[23]] --[[24]] --[[25]]"mkr_Ork29", --[[26]]"mkr_Ork30", --[[27]]"mkr_Ork31", --[[28]]"mkr_Ork32", --[[29]]"mkr_Ork33", --[[30]] --[[31]] --[[32]]"mkr_Ork36", --[[33]]"mkr_Ork37", --[[34]]--[[35]]"mkr_Ork39",
	--[[36]]"mkr_Ork40", --[[37]]"mkr_Ork41", --[[38]] --[[39]]"mkr_Ork43", --[[40]]"mkr_Ork44", --[[41]]"mkr_Ork45", --[[42]]"mkr_Ork46", --[[43]]"mkr_Ork47", --[[44]]"mkr_Ork_Strat_Jumpers", --[[45]]"mkr_Ork48", --[[46]]"mkr_Environment_Ork"}, 
	
	stance = {--[[1]] STANCE_StandGround, --[[2]]STANCE_Hold, --[[3]] --[[4]]STANCE_Hold, --[[5]] --[[6]]STANCE_Hold, --[[7]] --[[8]]STANCE_Hold, --[[9]]
	--[[10]]STANCE_Hold, --[[11]]STANCE_Hold, --[[12]]STANCE_Hold, --[[13]]STANCE_StandGround, --[[14]]--[[15]] --[[16]]STANCE_Hold, --[[17]]STANCE_StandGround, --[[18]]--[[19]]STANCE_Hold, --[[20]]
	--[[21]]STANCE_Hold, --[[22]] --[[23]] --[[24]]--[[25]]STANCE_Attack, --[[26]]STANCE_Hold, --[[27]]STANCE_Hold, --[[28]]STANCE_Attack, --[[29]]STANCE_Hold, --[[30]] --[[31]] --[[32]]STANCE_Hold, --[[33]]STANCE_Attack, 
	--[[34]]--[[35]]STANCE_Hold, --[[36]]STANCE_Hold, --[[37]]STANCE_Hold, --[[38]] --[[39]]STANCE_Attack, --[[40]]STANCE_Attack, --[[41]]STANCE_Attack,--[[42]]STANCE_Attack,--[[43]]STANCE_Attack, --[[44]]STANCE_Attack, --[[45]]STANCE_Attack, --[[46]]STANCE_CeaseFire},
	
	melee_stance = {--[[1]] MSTANCE_Ranged, --[[2]]MSTANCE_Ranged, --[[3]] --[[4]]MSTANCE_Assault, --[[5]] --[[6]]MSTANCE_Assault, --[[7]] --[[8]]MSTANCE_Assault, --[[9]] --[[10]]MSTANCE_Assault, 
	--[[11]]MSTANCE_Assault, --[[12]]MSTANCE_Ranged, --[[13]]MSTANCE_Ranged, --[[14]] --[[15]] --[[16]]MSTANCE_Assault, --[[17]]MSTANCE_Assault, --[[18]] --[[19]]MSTANCE_Ranged, --[[20]]
	--[[21]]MSTANCE_Assault, --[[22]] --[[23]] --[[24]] --[[25]]MSTANCE_Ranged, --[[26]]MSTANCE_Assault, --[[27]]MSTANCE_Assault, --[[28]]MSTANCE_Assault, --[[29]]MSTANCE_Ranged, --[[30]] --[[31]] 
	--[[32]]MSTANCE_Assault, --[[33]]MSTANCE_Ranged, --[[34]] --[[35]]MSTANCE_Ranged, --[[36]]MSTANCE_Assault, --[[37]]MSTANCE_Assault, --[[38]] --[[39]]MSTANCE_Ranged, --[[40]]MSTANCE_Assault, --[[41]]MSTANCE_Assault, --[[42]]MSTANCE_Assault, 
	--[[43]]MSTANCE_Assault, --[[44]]MSTANCE_Assault, --[[45]]MSTANCE_Assault, --[[46]]MSTANCE_Assault},
	
	squad_num = {--[[1]]1, --[[2]] 1, --[[3]] --[[4]] 1, --[[5]]  --[[6]] 1, --[[7]]  --[[8]] 1, --[[9]]  --[[10]] 1, --[[11]] 1, --[[12]] 1, --[[13]] 1, --[[14]]  --[[15]] --[[16]] 1, --[[17]] 1, --[[18]] --[[19]] 4, --[[20]] --[[21]] 1, --[[22]]  --[[23]] --[[24]] --[[25]] 1, --[[26]] 4, --[[27]] 3, --[[28]] 1, --[[29]] 1, --[[30]]  --[[31]]--[[31]] 1, --[[32]] 1, --[[33]] 1, 
	--[[34]]  --[[35]] 1, --[[36]] 1, --[[37]] 1, --[[38]]  --[[39]] 1, --[[40]] 1, --[[41]] 1, --[[42]] 1, --[[43]] 1, --[[44]]1, --[[45]] 1, --[[46]] 1}, 
	
	squad_size = {--[[1]] 7, --[[2]] 10, --[[3]] --[[4]] 9, --[[5]]  --[[6]] 9, --[[7]]  --[[8]] 9, --[[9]]  --[[10]] 9, --[[11]] 3, --[[12]] 9, --[[13]] 1, --[[14]]  --[[15]]  --[[16]] 7, --[[17]] 10, --[[18]]  --[[19]] 1, --[[20]]  --[[21]] 10, --[[22]]  --[[23]] --[[24]]  --[[25]] 11, --[[26]] 1, --[[27]] 1, --[[28]] 6, --[[29]] 10, --[[30]]  --[[31]] --[[32]] 7, --[[33]] 7, 
	--[[34]]  --[[35]] 10, --[[36]] 9, --[[37]] 8, --[[38]]  --[[39]] 9, --[[40]] 7, --[[41]] 7, --[[42]] 5, --[[43]] 5, --[[44]] 12, --[[45]] 4, --[[46]] 7}, 
}
		
if g_Ork_Army_iter <= table.getn(t_Ork_Army.sgroup_name) and (SGroup_Exists(t_Ork_Army.sgroup_name[i]) == false or SGroup_IsEmpty(t_Ork_Army.sgroup_name[i])) then

	local sgroupID = Util_CreateSquadsAtMarkerEx(g_Player5, t_Ork_Army.sgroup_name[i], t_Ork_Army.blueprint[i], t_Ork_Army.marker_spawn[i], t_Ork_Army.squad_num[i], t_Ork_Army.squad_size[i])
	Cmd_SetStance(t_Ork_Army.sgroup_name[i], t_Ork_Army.stance[i])
	Cmd_SetMeleeStance(t_Ork_Army.sgroup_name[i], t_Ork_Army.melee_stance[i])
	
	elseif g_Ork_Army_iter > table.getn(t_Ork_Army.sgroup_name) then
		g_Ork_Army_iter = 0
		Rule_AddInterval(Rule_Engineseer_Freeing, 3)
		Rule_AddInterval(Rule_Check_Player_Intrusion, 1)
		
		--[[putting all the squads defending the eldar portion of the map in a group]]
		SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Base_Defenders"), SGroup_FromName("sg_Ork21"))
		SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Base_Defenders"), SGroup_FromName("sg_Ork25"))
		SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Base_Defenders"), SGroup_FromName("sg_Ork26"))
		SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Base_Defenders"), SGroup_FromName("sg_Ork32"))
		SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Base_Defenders"), SGroup_FromName("sg_Ork33"))
		SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Base_Defenders"), SGroup_FromName("sg_Ork35"))
		SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Base_Defenders"), SGroup_FromName("sg_Ork36"))
		SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Base_Defenders"), SGroup_FromName("sg_Ork_Army1"))
		SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Base_Defenders"), SGroup_FromName("sg_Ork_Army2"))
		SGroup_AddGroup(SGroup_CreateIfNotFound("sg_Ork_Base_Defenders"), SGroup_FromName("sg_Ork_Army3"))
		
		--[[despawning the units defending the eldar portion of the map]]
		SGroup_DeSpawn("sg_Ork_Base_Defenders")
		
		
		Rule_Remove(Rule_Ork_Army_Creation)
		
	end
g_Ork_Army_iter = g_Ork_Army_iter+1

end


--[[ Horror Raiding Army ]]

function Rule_Horror_Raiding_Army_Creation()

local i = g_Horror_Raiding_Army_iter 
local j = World_GetRand(1, 3)
t_Horror_Raiding_Army = {
	sgroup_name = { --[[1]]"sg_Horror1"},
					
	marker_spawn = {--[[1]]"mkr_Horror_Spawn1", --[[2]]"mkr_Horror_Spawn2", --[[3]]"mkr_Horror_Spawn3"}, 
	
	marker_target = {--[[1]]"mkr_Horror_Attack_Target1"},
	
	stance = {--[[1]]STANCE_Burn},
	
	squad_num = {--[[]]}, 
	
	squad_size = {--[[random value between 2 and 6]]}, 
}
		
if g_Horror_Raiding_Army_iter <= table.getn(t_Horror_Raiding_Army.sgroup_name) and (SGroup_Exists(t_Horror_Raiding_Army.sgroup_name[i]) == false or SGroup_IsEmpty(t_Horror_Raiding_Army.sgroup_name[i])) then

	local sgroupID = Util_CreateHorrorsAndSummon(g_Player5, t_Horror_Raiding_Army.sgroup_name[i], Marker_GetPosition(Marker_FromName(t_Horror_Raiding_Army.marker_spawn[j], "basic_marker")), 1, World_GetRand(2, 6))
	Cmd_SetStance(t_Horror_Raiding_Army.sgroup_name[i], t_Horror_Raiding_Army.stance[i])
	Cmd_AttackMoveMarker(t_Horror_Raiding_Army.sgroup_name[i], t_Horror_Raiding_Army.marker_target[i])
	
	elseif g_Horror_Raiding_Army_iter > table.getn(t_Horror_Raiding_Army.sgroup_name) then
		g_Horror_Raiding_Army_iter = 0
		Rule_Remove(Rule_Horror_Raiding_Army_Creation)
	end
g_Horror_Raiding_Army_iter = g_Horror_Raiding_Army_iter+1

end

--[[this rule is turned off for switch to the eldar player and then turned back on for the switch to the guard player]]

function Rule_Horror_Creation_Check()

if EGroup_Exists("eg_Sacrificial_Horror_Maker") and EGroup_IsEmpty("eg_Sacrificial_Horror_Maker") == false then
	Rule_Add(Rule_Horror_Raiding_Army_Creation)

elseif EGroup_Exists("eg_Sacrificial_Horror_Maker") == false then

	Rule_Remove(Rule_Horror_Creation_Check)
	
end

end


--[[ proximity check for player intrusion ]]

function Rule_Check_Player_Intrusion()

if g_free_enginseer == nil and Player_AreSquadsNearMarker(g_Player1, "mkr_Passage_Jump_Target") then
	g_Intrusion = true
	Rule_AddInterval(Rule_Objective_Marine, 1)
	Rule_AddOneShot(Rule_Raptor_Raid_HQ, 120)
	Rule_AddIntervalDelay(Rule_Chaos_Assaulting_Cultist_Army_Creation, 5,  30)
	Rule_AddOneShot(Rule_Checking_Generators, 1)
	Rule_Remove(Rule_Check_Player_Intrusion)
	
	

elseif g_free_enginseer == true then

	Rule_Remove(Rule_Check_Player_Intrusion)

end

end


--[[ Bunker/webway ]]

function Rule_Bunker_Pillbox()

Rule_AddIntervalDelay(Rule_Bunker1, 1, 2)
Rule_AddIntervalDelay(Rule_Strat_Point5, 3, 5)
Rule_AddIntervalDelay(Rule_Strat_Point6, 3, 1)
Rule_AddIntervalDelay(Rule_Strat_Point7, 3, 2)
Rule_AddIntervalDelay(Rule_Strat_Point8, 3, 3)
Rule_AddIntervalDelay(Rule_Strat_Point9, 3, 4)
Rule_AddIntervalDelay(Rule_Strat_Point10, 3, 5)
Rule_AddIntervalDelay(Rule_Strat_Point10_Enemy, 3, 1)
Rule_AddIntervalDelay(Rule_Strat_Point11, 3, 2)
Rule_AddIntervalDelay(Rule_Strat_Point12, 3, 3)
Rule_AddIntervalDelay(Rule_Strat_Point12_Enemy, 3, 4)
Rule_AddIntervalDelay(Rule_Strat_Point13, 3, 5)
Rule_AddIntervalDelay(Rule_Strat_Point13_Enemy, 3, 1)
Rule_AddIntervalDelay(Rule_Strat_Point14, 3, 2)
Rule_AddIntervalDelay(Rule_Strat_Point15, 3, 3)
Rule_AddIntervalDelay(Rule_Strat_Point15_Enemy, 3, 4)
Rule_AddIntervalDelay(Rule_Strat_Point17, 3, 1)
Rule_AddIntervalDelay(Rule_Strat_Point18, 3, 2)
Rule_AddIntervalDelay(Rule_Strat_Point18_Enemy, 3, 3)
Rule_AddIntervalDelay(Rule_Strat_Point19, 3, 10)
	

end

function Rule_Bunker1()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point1")) == true then

	EGroup_SetPlayerOwner("eg_Bunker1", g_Player1)
	
	--[[pinging bunkers]]
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Bunker1A", "mkr_Ping_Barrack1A")
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Bunker1B", "mkr_Ping_Barrack1B")
	
	
	g_control_bunker = true
	Rule_AddInterval(Rule_Capture_Interrupt2, 7)
	Rule_AddIntervalDelay(Rule_Bunker2, 1, 1)
					
	Rule_Remove(Rule_Bunker1)
end

end


function Rule_Bunker2()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point2")) == true then

	--[[respawn the chaos units in the second trench]]
	SGroup_ReSpawn("sg_Chaos_Trench2")

	--[[pinging bunkers]]
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Bunker2A", "mkr_Ping_Barrack2A")
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Bunker2B", "mkr_Ping_Barrack2B")
	
	--[[remove ping in x seconds]]
	Rule_AddOneShot(Rule_Bunker_Ping_Remove2, 120)
	
	Rule_AddInterval(Rule_Objective_Use_Tunnels_Secondary, 1)

	EGroup_SetPlayerOwner("eg_Bunker2", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox20", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox21", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox24", g_Player1)
	Rule_AddIntervalDelay(Rule_Bunker4, 1, 2)
	Rule_AddIntervalDelay(Rule_Bunker3, 1, 3)
	Rule_AddIntervalDelay(Rule_Chimera_Transfer, 5, 20)
	Rule_AddIntervalDelay(Rule_Sentinel_Transfer, 5, 20)
	Rule_AddInterval(Rule_Horror_Creation_Check, 500)
	Rule_AddInterval(Rule_Trigger_Ork_Assault, 5)
	Rule_Add(Rule_Ork__Base_Assault_Army_Creation)
	Rule_AddOneShot(Rule_Stormboz_Jump1, 20)
	Rule_AddInterval(Rule_Switch, 3)
	Rule_AddInterval(Rule_Switch2, 3)
	
	Rule_AddInterval(Rule_Bunker2A_Health, 2)
	Rule_AddInterval(Rule_Bunker2B_Health, 2)
	Rule_Add(Rule_Objective_Imperial_Machinery)
	Rule_Remove(Rule_Bunker2)
end

end

function Rule_Bunker_Ping_Remove2()

MSO2_SwitchPings_RemovePing("pg_Bunker2A")
MSO2_SwitchPings_RemovePing("pg_Bunker2B")
Rule_Remove(Rule_Bunker_Ping_Remove2)

end

function Rule_Bunker2A_Health()

if EGroup_Exists("eg_Bunker2A") and EGroup_IsEmpty("eg_Bunker2A") then
	
	g_Marine = false
	Rule_Remove(Rule_Bunker2A_Health)
else
	
end

end

function Rule_Bunker2B_Health()

if EGroup_Exists("eg_Bunker2B") and EGroup_IsEmpty("eg_Bunker2B") then
	
	g_Marine = false
	Rule_Remove(Rule_Bunker2B_Health)
else
	
end
	

end

function Rule_Bunker3()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point8")) == true then

	--[[pinging bunkers]]
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Bunker3", "mkr_Ping_Barrack3")
	
	--[[remove ping in x seconds]]
	Rule_AddOneShot(Rule_Bunker_Ping_Remove3, 120)

	EGroup_SetPlayerOwner("eg_Bunker3", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox7", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox8", g_Player1)
	
	Rule_Remove(Rule_Bunker3)
	
end

end

function Rule_Bunker_Ping_Remove3()

MSO2_SwitchPings_RemovePing("pg_Bunker3")
Rule_Remove(Rule_Bunker_Ping_Remove3)

end

function Rule_Bunker4()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point4")) == true then

	--[[pinging bunkers]]
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Bunker4", "mkr_Ping_Barrack4")
	
	--[[remove ping in x seconds]]
	Rule_AddOneShot(Rule_Bunker_Ping_Remove4, 120)


	EGroup_SetPlayerOwner("eg_Bunker4", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox23", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox25", g_Player1)
	Rule_AddInterval(Rule_Cultist_Assault, 5)
	Rule_Remove(Rule_Bunker4)
end

end

function Rule_Bunker_Ping_Remove4()

MSO2_SwitchPings_RemovePing("pg_Bunker4")
Rule_Remove(Rule_Bunker_Ping_Remove4)

end

function Rule_Strat_Point5()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point5")) == true then

	EGroup_SetPlayerOwner("eg_Pillbox1", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox17", g_Player1)
		
	Rule_Remove(Rule_Strat_Point5)
end

end


function Rule_Strat_Point6()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point6")) == true then

	EGroup_SetPlayerOwner("eg_Pillbox3", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox4", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox18", g_Player1)
	
	g_control_pillbox = true

	Rule_Remove(Rule_Strat_Point6)
end

end


function Rule_Strat_Point7()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point7")) == true then

	EGroup_SetPlayerOwner("eg_Pillbox2", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox19", g_Player1)
		
	Rule_Remove(Rule_Strat_Point7)
end

end


function Rule_Strat_Point8()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point8")) == true then

	EGroup_SetPlayerOwner("eg_Pillbox7", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox8", g_Player1)
		
	Rule_Remove(Rule_Strat_Point8)
end

end


function Rule_Strat_Point9()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point9")) == true then

	EGroup_SetPlayerOwner("eg_Pillbox10", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox11", g_Player1)
		
	Rule_Remove(Rule_Strat_Point9)
end

end


function Rule_Strat_Point10()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point10")) == true then

	--[[pinging bunkers]]
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Bunker7", "mkr_Ping_Barrack7")
	
	--[[remove ping in x seconds]]
	Rule_AddOneShot(Rule_Bunker_Ping_Remove7, 120)

	EGroup_SetPlayerOwner("eg_Enemy_Pillbox1", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox2", g_Player1)
	EGroup_SetPlayerOwner("eg_Bunker7", g_Player1)
		
	Rule_Remove(Rule_Strat_Point10)
end

end

function Rule_Bunker_Ping_Remove7()

MSO2_SwitchPings_RemovePing("pg_Bunker7")
Rule_Remove(Rule_Bunker_Ping_Remove7)

end

function Rule_Strat_Point10_Enemy()

if Player_OwnsEGroup(g_Player4, EGroup_CreateIfNotFound("eg_Strat_Point10")) == false then

	EGroup_SetPlayerOwner("eg_Enemy_Pillbox1", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox2", g_Player6)
		
	Rule_Remove(Rule_Strat_Point10_Enemy)
end

end


function Rule_Strat_Point11()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point11")) == true then

	EGroup_SetPlayerOwner("eg_Enemy_Pillbox3", g_Player1)
		
	Rule_Remove(Rule_Strat_Point11)
end

end


function Rule_Strat_Point12()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point12")) == true then


	EGroup_SetPlayerOwner("eg_Enemy_Pillbox4", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox5", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox14", g_Player1)
		
	Rule_Remove(Rule_Strat_Point12)
end

end


function Rule_Strat_Point12_Enemy()

if Player_OwnsEGroup(g_Player5, EGroup_CreateIfNotFound("eg_Strat_Point12")) == false then


	EGroup_SetPlayerOwner("eg_Enemy_Pillbox4", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox5", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox14", g_Player6)
		
	Rule_Remove(Rule_Strat_Point12_Enemy)
end

end


function Rule_Strat_Point13()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point13")) == true then


	--[[pinging bunkers]]
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Bunker5", "mkr_Ping_Barrack5")
	
	--[[remove ping in x seconds]]
	Rule_AddOneShot(Rule_Bunker_Ping_Remove5, 120)

	EGroup_SetPlayerOwner("eg_Enemy_Pillbox6", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox7", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox13", g_Player1)
	EGroup_SetPlayerOwner("eg_Bunker5", g_Player1)
		
	Rule_Remove(Rule_Strat_Point13)
end

end

function Rule_Bunker_Ping_Remove5()

MSO2_SwitchPings_RemovePing("pg_Bunker5")
Rule_Remove(Rule_Bunker_Ping_Remove5)

end

function Rule_Strat_Point13_Enemy()

if Player_OwnsEGroup(g_Player5, EGroup_CreateIfNotFound("eg_Strat_Point13")) == false  then

	EGroup_SetPlayerOwner("eg_Enemy_Pillbox6", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox7", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox13", g_Player6)
		
	Rule_Remove(Rule_Strat_Point13_Enemy)
end

end


function Rule_Strat_Point14()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point14")) == true then

	--[[pinging bunkers]]
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Bunker8", "mkr_Ping_Barrack8")
	
	--[[remove ping in x seconds]]
	Rule_AddOneShot(Rule_Bunker_Ping_Remove8, 120)

	EGroup_SetPlayerOwner("eg_Bunker8", g_Player1)
		
	Rule_Remove(Rule_Strat_Point14)
end

end

function Rule_Bunker_Ping_Remove8()

MSO2_SwitchPings_RemovePing("pg_Bunker8")
Rule_Remove(Rule_Bunker_Ping_Remove8)

end

function Rule_Strat_Point15()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point15")) == true then


	EGroup_SetPlayerOwner("eg_Enemy_Pillbox9", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox10", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox11", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox12", g_Player1)
		
	Rule_Remove(Rule_Strat_Point15)
end

end


function Rule_Strat_Point15_Enemy()

if Player_OwnsEGroup(g_Player4, EGroup_CreateIfNotFound("eg_Strat_Point15")) == false then


	EGroup_SetPlayerOwner("eg_Enemy_Pillbox9", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox10", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox11", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox12", g_Player6)
		
	Rule_Remove(Rule_Strat_Point15_Enemy)
end

end


function Rule_Strat_Point17()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point17")) == true then

	EGroup_SetPlayerOwner("eg_Pillbox5", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox6", g_Player1)

		
	Rule_Remove(Rule_Strat_Point17)
end

end


function Rule_Strat_Point18()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point18")) == true then


	EGroup_SetPlayerOwner("eg_Enemy_Pillbox15", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox16", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox17", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox18", g_Player1)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox19", g_Player1)
		
	Rule_Remove(Rule_Strat_Point18)
end

end


function Rule_Strat_Point18_Enemy()

if Player_OwnsEGroup(g_Player4, EGroup_CreateIfNotFound("eg_Strat_Point18")) == false then


	EGroup_SetPlayerOwner("eg_Enemy_Pillbox15", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox16", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox17", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox18", g_Player6)
	EGroup_SetPlayerOwner("eg_Enemy_Pillbox19", g_Player6)
		
	Rule_Remove(Rule_Strat_Point18_Enemy)
end

end


function Rule_Strat_Point19()

if Player_OwnsEGroup(g_Player1, EGroup_CreateIfNotFound("eg_Strat_Point19")) == true then

	EGroup_SetPlayerOwner("eg_Pillbox16", g_Player1)
	EGroup_SetPlayerOwner("eg_Pillbox22", g_Player1)
		
	Rule_Remove(Rule_Strat_Point19)
end

end


--[[ Free the engineseer ]]

function Rule_Engineseer_Freeing()

if   SGroup_IsEmpty("sg_Ork5")  then
	g_free_enginseer = true			
	
	EGroup_SetPlayerOwner("eg_Guard_HQ", g_Player1)
	
	Playlist_Manager( PC_Music, t_music_field_command, true, false , {20, 40})
	Rule_AddInterval(Rule_HQ_Health, 1)
	Rule_Add(Rule_Autosave_HQ_Liberated)
	
	--[[removing map and mini-map pings]]
	MSO2_SwitchPings_RemovePing("pg_Free_Enginseer")
	Objective_PingRemove(Objective_Free_Enginseer.title_id, g_ping_freeenginseer)	
	g_Establish_Foothold = g_Establish_Foothold + 1

	if g_Intrusion  == false then
		
		Rule_AddOneShot(Rule_Raptor_Raid_HQ, 120)
		Rule_AddIntervalDelay(Rule_Chaos_Assaulting_Cultist_Army_Creation, 5,  50)
		Rule_AddOneShot(Rule_Checking_Generators, 1)
		Rule_AddInterval(Rule_Objective_Marine, 1)
		
	end
	
	Rule_Remove(Rule_Engineseer_Freeing)
end

end


--[[ Hold the HQ ]]

function Rule_HQ_Health()

if EGroup_Exists("eg_Guard_HQ") == false then

	Rule_RemoveAll()
	Fade_Start(4, false)
	World_SetTeamWin( g_enemy, "" )
	Rule_AddIntervalEx( Rule_GameOver,5,1 )


elseif EGroup_Exists("eg_Guard_HQ")  and EGroup_IsEmpty("eg_Guard_HQ") then

	Rule_RemoveAll()
	Fade_Start(4, false)
	World_SetTeamWin( g_enemy, "" )
	Rule_AddIntervalEx( Rule_GameOver,5,1 )

else

end

end


--[[ Raptor & stomrboyz raids ]]

function Rule_Raptor_Raid_HQ()

Cmd_JumpToMarker("sg_Chaos_Rhino2", "mkr_Raptor_Jump_Destination1")
Cmd_JumpToMarker("sg_Ork_Environment_Boyz", "mkr_Raptor_Jump_Destination1")
Cmd_SetStance("sg_Chaos_Rhino2", STANCE_Attack)
Cmd_SetStance("sg_Ork_Environment_Boyz", STANCE_Attack)

end


function Rule_Raptor_Passage_Order()

	if Prox_AllSquadsNearMarker("sg_Chaos20", "mkr_Passage_Jump_Target") then
		
		Cmd_AttackMoveMarker("sg_Chaos20", "mkr_Chaos4B")
		Rule_Remove(Rule_Raptor_Passage_Order)
	end

end


function Rule_Stormboz_Jump1()

Cmd_JumpToMarker("sg_Ork37", "mkr_Stormboyz_Destination1")
Rule_Add(Rule_Recapture_Strat_Point1)
Rule_Remove(Rule_Stormboz_Jump1)

end

function Rule_Recapture_Strat_Point1()

if Prox_AllSquadsNearMarker("sg_Ork37", "mkr_Stormboyz_Destination1") then
	Cmd_Capture("sg_Ork37", "eg_Strat_Point1")
	Rule_AddInterval(Rule_Stormboz_Jump2, 2)
	Rule_Remove(Rule_Recapture_Strat_Point1)
end

end

function Rule_Stormboz_Jump2()

if SGroup_IsEmpty("sg_Ork37") then 

	Rule_Remove(Rule_Stormboz_Jump2)

elseif Player_OwnsEGroup(g_Player5, EGroup_FromName("eg_Strat_Point1")) then

	Cmd_JumpToMarker("sg_Ork37", "mkr_Stormboyz_Destination2")
	Rule_Add(Rule_Recapture_Strat_Point6)
	Rule_Remove(Rule_Stormboz_Jump2)
end

end

function Rule_Recapture_Strat_Point6() --[[ - strat point 6 is the second strat point the player captures]]

if SGroup_IsEmpty("sg_Ork37") then 
	
	Rule_Remove(Rule_Recapture_Strat_Point6)

elseif Prox_AllSquadsNearMarker("sg_Ork37", "mkr_Stormboyz_Destination2") then
	Cmd_Capture("sg_Ork37", "eg_Strat_Point6")
	Rule_Remove(Rule_Recapture_Strat_Point6)
end

end


function Rule_Cultist_Assault()

if Player_AreSquadsNearMarker(g_Player1, "mkr_Cultists_Attack_Trigger") then

	Cmd_AttackMoveMarker("sg_Chaos9", "mkr_Cultist_Attack_Target")

	Rule_Remove(Rule_Cultist_Assault)

end

end


--[[ - raptor raid to recapture strat point9. only triggered if player moves through the chimera pass]]

function Rule_Raptor_Point9_Jump()

Cmd_JumpToMarker("sg_Point9_Raptor_Raid", "mkr_Raptor_Point9_Jump_Target")
Rule_Add(Rule_Recapture_Strat_Point9)
Rule_Remove(Rule_Raptor_Point9_Jump)

end

function Rule_Recapture_Strat_Point9()

if Prox_AllSquadsNearMarker("sg_Point9_Raptor_Raid", "mkr_Raptor_Point9_Jump_Target") then
	Cmd_Capture("sg_Point9_Raptor_Raid", "eg_Strat_Point9")
	Rule_Remove(Rule_Recapture_Strat_Point9)
end

end


--[[- stormboyz raid on the player's base when he's captured strat point 2]]

function Rule_Ork__Base_Assault_Army_Creation()

local i = g_Ork_Base_Assault_Army_iter 

t_Ork_Base_Assault_Army = {
	sgroup_name = { --[[1]]"sg_Ork_Base_Assault1", --[[2]]"sg_Ork_Base_Assault2", --[[3]]"sg_Ork_Base_Assault3", --[[4]]"sg_Ork_Base_Assault4", --[[5]]"sg_Ork_Base_Assault5"},
	
	blueprint = {--[[1]]"ork_squad_stormboy", --[[2]]"ork_squad_stormboy", --[[3]]"ork_squad_stormboy", --[[4]]"ork_squad_stormboy", --[[5]]"ork_squad_stormboy"},
		
	marker_spawn = {--[[1]]"mkr_Environment_Ork", --[[2]]"mkr_Environment_Ork", --[[3]]"mkr_Environment_Ork", --[[4]]"mkr_Environment_Ork", --[[5]]"mkr_Environment_Ork"}, 
		
	stance = {--[[1]]STANCE_Attack, --[[2]]STANCE_Attack, --[[3]]STANCE_Attack, --[[4]]STANCE_Attack, --[[5]]STANCE_Attack},
	
	melee_stance = {--[[1]]MSTANCE_Assault, --[[2]]MSTANCE_Assault, --[[3]]MSTANCE_Assault, --[[4]]MSTANCE_Assault, --[[5]]MSTANCE_Assault},
	
	squad_num = {--[[1]] 1, --[[2]] 1, --[[3]] 1, --[[4]] 1, --[[5]] 1}, 
	
	squad_size = {--[[1]] 4, --[[2]] 5, --[[3]] 3, --[[4]] 4, --[[5]] 4}, 
}
		
if g_Ork_Base_Assault_Army_iter <= table.getn(t_Ork_Base_Assault_Army.sgroup_name) and (SGroup_Exists(t_Ork_Base_Assault_Army.sgroup_name[i]) == false or SGroup_IsEmpty(t_Ork_Base_Assault_Army.sgroup_name[i])) then

	local sgroupID = Util_CreateSquadsAtMarkerEx(g_Player5, t_Ork_Base_Assault_Army.sgroup_name[i], t_Ork_Base_Assault_Army.blueprint[i], t_Ork_Base_Assault_Army.marker_spawn[i], t_Ork_Base_Assault_Army.squad_num[i], t_Ork_Base_Assault_Army.squad_size[i])
	Cmd_SetStance(t_Ork_Base_Assault_Army.sgroup_name[i], t_Ork_Base_Assault_Army.stance[i])
	Cmd_SetMeleeStance(t_Ork_Base_Assault_Army.sgroup_name[i], t_Ork_Base_Assault_Army.melee_stance[i])
	SGroup_AddGroup(SGroup_CreateIfNotFound"Sg_Stomrboy_Raiders", SGroup_FromName(t_Ork_Base_Assault_Army.sgroup_name[i]))
	
	elseif g_Ork_Base_Assault_Army_iter > table.getn(t_Ork_Base_Assault_Army.sgroup_name) then
		g_Ork_Base_Assault_Army_iter = 0

		Rule_AddInterval(Rule_Attack_Imperial_Base, 15)
		Rule_Add(Rule_Base_Stormboyz_Raid)
		Rule_Remove(Rule_Ork__Base_Assault_Army_Creation)
		
	end
g_Ork_Base_Assault_Army_iter = g_Ork_Base_Assault_Army_iter+1

end

function Rule_Base_Stormboyz_Raid()

for i = 1, 5 do

	Cmd_JumpToMarker("sg_Ork_Base_Assault"..i, "mkr_Raptor_Jump_Destination1")
end


Rule_Remove(Rule_Base_Stormboyz_Raid)

end

function Rule_Attack_Imperial_Base()

for i = 1, 5 do
	if Prox_AllSquadsNearMarker("sg_Ork_Base_Assault"..i, "mkr_Raptor_Jump_Destination1") and SGroup_Exists("sg_Ork_Base_Assault"..i) then
		Cmd_AttackMoveMarker("sg_Ork_Base_Assault"..i,"mkr_Horror_Attack_Target1")
	elseif SGroup_IsEmpty("Sg_Stomrboy_Raiders") then
	
		Rule_Remove(Rule_Attack_Imperial_Base)
	
	end
end

end


--[[ - ork units move in to attack when player starts capturing strat point 6]]

function Rule_Capture_Interrupt2()

if Player_AreSquadsNearMarker(g_Player1, "mkr_Proximity_Check") then
	
		Cmd_AttackMoveMarker("sg_Ork15", "mkr_Horror_Spawn2")
					
		Rule_Remove(Rule_Capture_Interrupt2)
end

end


--[[ Environmental combat ]]

function Rule_Ork_Assault_Army_Creation()

local i = g_Ork_Assault_Army_iter 

t_Ork_Assault_Army = {
	sgroup_name = { --[[1]]"sg_Ork_Assault1", --[[2]]"sg_Ork_Assault2", --[[3]]"sg_Ork_Assault3", --[[4]]"sg_Ork_Assault4", --[[5]]"sg_Ork_Assault5", --[[6]]"sg_Ork_Assault6", --[[7]]"sg_Ork_Assault7"},
	
	blueprint = {--[[1]]"ork_squad_slugga", --[[2]]"ork_squad_nob", --[[3]]"ork_squad_nob", --[[4]]"ork_squad_tankbusta", --[[5]]"ork_squad_tankbusta", --[[6]]"ork_squad_tankbusta", --[[7]]"ork_squad_shoota_boy"},
	
	marker_spawn = {--[[1]]"mkr_Ork_Show_Assault_Creator", --[[2]]"mkr_Ork_Show_Assault_Creator", --[[3]]"mkr_Ork_Show_Assault_Creator", --[[4]]"mkr_Ork_Show_Assault_Creator", --[[5]]"mkr_Ork_Show_Assault_Creator", 
	--[[6]]"mkr_Ork_Show_Assault_Creator", --[[7]]"mkr_Ork_Show_Assault_Creator"}, 
	
	marker_target = {--[[1]]"mkr_Ork_Assault_Trigger", --[[2]]"mkr_Ork_Assault_Trigger", --[[3]]"mkr_Ork_Assault_Trigger", --[[4]]"mkr_Ork_Assault_Trigger", --[[5]]"mkr_Ork_Assault_Trigger", --[[6]]"mkr_Ork_Assault_Trigger",
	--[[7]]"mkr_Ork_Assault_Trigger"},
	
	stance = {--[[1]]STANCE_Attack, --[[2]]STANCE_Attack, --[[3]]STANCE_Attack, --[[4]]STANCE_Attack, --[[5]]STANCE_Attack, --[[6]]STANCE_Attack, --[[7]]STANCE_Attack},
	
	melee_stance = {--[[1]]MSTANCE_Assault, --[[2]]MSTANCE_Assault, --[[3]]MSTANCE_Assault, --[[4]]MSTANCE_Assault, --[[5]]MSTANCE_Ranged, --[[6]]MSTANCE_Ranged, --[[7]]MSTANCE_Ranged },
	
	squad_num = {--[[1]] 1, --[[2]] 1, --[[3]] 1, --[[4]] 1, --[[5]] 1, --[[6]] 1, --[[7]] 1}, 
	
	squad_size = {--[[1]] 9, --[[2]] 9, --[[3]] 9, --[[4]] 9, --[[5]] 9, --[[6]] 9, --[[7]] 9}, 
}
		
if g_Ork_Assault_Army_iter <= table.getn(t_Ork_Assault_Army.sgroup_name) and (SGroup_Exists(t_Ork_Assault_Army.sgroup_name[i]) == false or SGroup_IsEmpty(t_Ork_Assault_Army.sgroup_name[i])) then

	local sgroupID = Util_CreateSquadsAtMarkerEx(g_Player5, t_Ork_Assault_Army.sgroup_name[i], t_Ork_Assault_Army.blueprint[i], t_Ork_Assault_Army.marker_spawn[i], t_Ork_Assault_Army.squad_num[i], t_Ork_Assault_Army.squad_size[i])
	Cmd_SetStance(t_Ork_Assault_Army.sgroup_name[i], t_Ork_Assault_Army.stance[i])
	Cmd_SetMeleeStance(t_Ork_Assault_Army.sgroup_name[i], t_Ork_Assault_Army.melee_stance[i])
	Cmd_AttackMoveMarker(t_Ork_Assault_Army.sgroup_name[i], t_Ork_Assault_Army.marker_target[i])
	
	elseif g_Ork_Assault_Army_iter > table.getn(t_Ork_Assault_Army.sgroup_name) then
		g_Ork_Assault_Army_iter = 0
		
		Cmd_AttackMoveMarker("sg_Chaos8", "mkr_Ork42")
		Cmd_AttackMoveMarker("sg_Chaos5", "mkr_Ork42")
		
		Rule_Remove(Rule_Ork_Assault_Army_Creation)
		
	end
g_Ork_Assault_Army_iter = g_Ork_Assault_Army_iter+1

end

function Rule_Trigger_Ork_Assault()

if Player_AreSquadsNearMarker(g_Player1, "mkr_Ork_Assault_Trigger") then

	Rule_AddInterval(Rule_Ork_Assault_Army_Creation, 1)
	Rule_Remove(Rule_Trigger_Ork_Assault)
end

end


--[[ Chaos assault on ultramarines ]]

function Rule_Harrass_Marines()

	if EGroup_Exists("eg_Last_Chaos_Base1") == false and EGroup_Exists("eg_Last_Chaos_Base2") == false then
			
		Rule_Remove(Rule_Harrass_Marines)
		
	end
	
	if EGroup_Exists("eg_Last_Chaos_Base1") and EGroup_IsEmpty("eg_Last_Chaos_Base1") == false then
		
		Util_CreateSquadsAtMarkerEx(g_Player4, "sg_Assaulting_cultists1", "chaos_squad_cultist", "mkr_Chaos_Base_Assaulters1", 1, 8)
		Cmd_SetStance("sg_Assaulting_cultists1", STANCE_StandGround)
		Cmd_SetMeleeStance("sg_Assaulting_cultists1", MSTANCE_Ranged)
		Cmd_AttackMoveMarker("sg_Assaulting_cultists1", "mkr_Face2")
	end
	
	
	if EGroup_Exists("eg_Last_Chaos_Base2")  and EGroup_IsEmpty("eg_Last_Chaos_Base2") == false then
		
		Util_CreateSquadsAtMarkerEx(g_Player4, "sg_Assaulting_cultists2", "chaos_squad_cultist", "mkr_Chaos_Base_Assaulters2", 1, 8)
		Cmd_SetStance("sg_Assaulting_cultists2", STANCE_StandGround)
		Cmd_SetMeleeStance("sg_Assaulting_cultists2", MSTANCE_Ranged)
		Cmd_AttackMoveMarker("sg_Assaulting_cultists2", "mkr_Face3")
	end
	

end


--[[ GAME OVER - Player Wins ]]

--[[ function Rule_EndGameWin()

if Objective_Exists(Objective_Name.title_id) and Objective_GetState(Objective_Name.title_id) == OS_Complete then
	Rule_RemoveAll()
	Util_StartNIS(EVENTS.NIS_Closing)
end

end ]]

--[[ GAME OVER - Player Loses ]]

--[[ The Player Loses condition will be mission specific this version of the function detects if the player has lost their base and has no servitors left ]]

function Rule_EndGameLose()

g_building_exceptions = 
{
	"eldar_webway_gate",
	"space_marine_listening_post",
	"space_marine_turret_bolter"
}

g_unit_exceptions = 
{
	"space_marine_squad_terminator",
	"space_marine_squad_assault",
	"space_marine_squad_tactical",
	"space_marine_squad_rhino",
}

--[[ Lose because of Annihilation ]]	
if( Player_HasBuildingsExcept(g_Player1, g_building_exceptions) == false ) then
	if( Player_HasSquadsExcept(g_Player1, g_unit_exceptions ) == false ) and SGroup_CountDeSpawned(g_sgroupID0) == 0 then
		Rule_RemoveAll()
		Fade_Start(4, false)
		World_SetTeamWin( g_enemy, "" )
		Rule_AddIntervalEx( Rule_GameOver,5,1 )
		Rule_Remove( Rule_EndGameLose )
	end
end

--[[ Lose because of the Objectives Failed ]]
if Objective_Exists(Objective_Name.title_id) == true and Objective_GetState(Objective_Name.title_id) == OS_Failed then
	Rule_RemoveAll()
	Fade_Start(4, false)
	World_SetTeamWin( g_enemy, "" )
	Rule_AddIntervalEx( Rule_GameOver,5,1 )
	Rule_Remove( Rule_EndGameLose )
end

end

--[[ call this with an interval to ensure the mission ends ]] function Rule_GameOver() World_SetGameOver() end


--[[ OBJECTIVES ]]

--[[ Capture a Pillbox ]] function Rule_Objective_Pillbox()

Objective_Pillbox_Capture = { title_id = 811000, short_desc_id = 811001, help_tip_id = 811002 }

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Pillbox_Capture.title_id) == false then
	
	Util_WXP_ObjectiveSubCreate( Objective_Pillbox_Capture, 811009 )

	--[[adding the map and mini-map pings]]
	Rule_AddOneShot(Rule_Pillbox_Ping, 1)
	g_ping_capturepillbox = Objective_PingMarker(Objective_Pillbox_Capture.title_id, "mkr_Proximity_Check", true, "attack")
	
	Util_StartNIS(EVENTS.IE_Pillbox_Useful)
	g_control_pillbox = nil
	
elseif Event_IsAnyRunning() == false and g_control_pillbox == true  then
	
	Util_ObjectiveComplete(Objective_Pillbox_Capture.title_id)
	
	--[[removing the map and mini-map pings]]
	MSO2_SwitchPings_RemovePing("pg_Control_Pillbox1")
	Objective_PingRemove(Objective_Pillbox_Capture.title_id, g_ping_capturepillbox)
	
	g_Establish_Foothold = g_Establish_Foothold + 1
	Rule_Remove(Rule_Objective_Pillbox)
	
elseif Event_IsAnyRunning() == false and g_control_pillbox == false then
	
	Util_ObjectiveFail(Objective_Pillbox_Capture.title_id)

	Rule_Remove(Rule_Objective_Pillbox)
	
end

end

function Rule_Pillbox_Ping()

MSO2_SwitchPings_Add(g_Player1, nil, "pg_Control_Pillbox1", "mkr_Proximity_Check")

end


--[[ Capture a Bunker ]] function Rule_Objective_Bunker()

Objective_Bunker_Capture = { title_id = 811003, short_desc_id = 811004, help_tip_id = 811005 }

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Bunker_Capture.title_id) == false then
	
	Util_WXP_ObjectiveSubCreate( Objective_Bunker_Capture, 811009 )
	
	--[[adding map and mini-map pings]]
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Control_Bunker", "mkr_Bunker_Objective1")
	g_ping_capturebunker = Objective_PingMarker(Objective_Bunker_Capture.title_id, "mkr_Bunker_Objective1", true, "attack")
	
	g_control_bunker = nil
	
elseif Event_IsAnyRunning() == false and g_control_bunker == true  then
	Util_ObjectiveComplete(Objective_Bunker_Capture.title_id)
	Util_StartNIS(EVENTS.NIS_Tunnels)
			
	--[[removing map and mini-map pings]]
	MSO2_SwitchPings_RemovePing("pg_Control_Bunker")
	Objective_PingRemove(Objective_Bunker_Capture.title_id, g_ping_capturebunker)
	
	g_Establish_Foothold = g_Establish_Foothold + 1
	Rule_Remove(Rule_Objective_Bunker)
	
elseif Event_IsAnyRunning() == false and g_control_bunker == false then
	
	Util_ObjectiveFail(Objective_Bunker_Capture.title_id)
	Rule_RemoveAll()
	Fade_Start(4, false)
	World_SetTeamWin( g_enemy, "" )
	Rule_AddIntervalEx( Rule_GameOver,5,1 )
		
	Rule_Remove(Rule_Objective_Bunker)
	
end

end


--[[ Free enginseer ]] function Rule_Objective_Enginseer()

Objective_Free_Enginseer = { title_id = 811009, short_desc_id = 811010, help_tip_id = 811011 }

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Free_Enginseer.title_id) == false then
	

	Util_WXP_ObjectiveCreate(Objective_Free_Enginseer, true, g_Player1)
	Rule_AddInterval(Rule_Objective_Bunker, 1)
	
	--[[adding map and mini-map pings]]
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Free_Enginseer", "mkr_ping_enginseer")
	g_ping_freeenginseer = Objective_PingMarker(Objective_Free_Enginseer.title_id, "mkr_ping_enginseer", true, "attack")
	
	g_free_enginseer = nil
	
elseif Event_IsAnyRunning() == false and g_Establish_Foothold == 3  then
	
	Util_ObjectiveComplete(Objective_Free_Enginseer.title_id)
	
	
	Rule_Remove(Rule_Objective_Enginseer)
	
elseif Event_IsAnyRunning() == false and g_free_enginseer == false then
	
	Util_ObjectiveFail(Objective_Bunker_Capture.title_id)
	Rule_RemoveAll()
	Fade_Start(4, false)
	World_SetTeamWin( g_enemy, "" )
	Rule_AddIntervalEx( Rule_GameOver,5,1 )
	

	Rule_Remove(Rule_Objective_Enginseer)
	
end

end


--[[ Reach Space Marines ]] function Rule_Objective_Marine()

Objective_Marine = { title_id = 811006, short_desc_id = 811007, help_tip_id = 811008 }

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Marine.title_id) == false then
	

	Util_WXP_ObjectiveCreate(Objective_Marine, true, g_Player1)

	--[[adding map and mini-map pings]]
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Space_Marine", "mkr_Crash_Site")
	g_ping_objectivemarine = Objective_PingMarker(Objective_Marine.title_id, "mkr_Crash_Site", true, "attack")
	
	g_Marine = nil
	
elseif Event_IsAnyRunning() == false and g_Marine == true  and EGroup_IsEmpty("eg_Chaos_Base") then
	
	Util_ObjectiveComplete(Objective_Marine.title_id)
	
	--[[removing map and mini-map pings]]
	MSO2_SwitchPings_RemovePing("pg_Space_Marine")
	Objective_PingRemove(Objective_Marine.title_id, g_ping_objectivemarine)
	
	Util_StartNIS(EVENTS.NIS_Closing)	
	Rule_Remove(Rule_Objective_Marine)
	
elseif Event_IsAnyRunning() == false and g_Marine == false then
	
	Util_ObjectiveFail(Objective_Marine.title_id)
	Rule_RemoveAll()
	Fade_Start(4, false)
	World_SetTeamWin( g_enemy, "" )
	Rule_AddIntervalEx( Rule_GameOver,5,1 )

	Rule_Remove(Rule_Objective_Marine)
	
end

end


--[[ Destroy building A ]] function Rule_Objective_Distraction1()

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Distraction1.title_id) == false then
	
	Util_WXP_ObjectiveSubCreate( Objective_Distraction1, 811030 )
	
	--[[adding map and mini-map pings]]
	MSO2_SwitchPings_Add(g_Player2, nil, "pg_Distraction1", "mkr_Ork_Distraction1")
	g_ping_distraction1 = Objective_PingMarker(Objective_Distraction1.title_id, "mkr_Ork_Distraction1", true, "attack")
			
	g_Distraction1 = nil
	g_Distraction1_Fire = true
	
elseif Event_IsAnyRunning() == false and g_Distraction1 == true  then
	
	Util_ObjectiveComplete(Objective_Distraction1.title_id)
	
	--[[removing map and mini-map pings]]
	MSO2_SwitchPings_RemovePing("pg_Distraction1")
	Objective_PingRemove(Objective_Distraction1.title_id, g_ping_distraction1)		
	
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army1"))
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army2"))
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army3"))
	Rule_Remove(Rule_Objective_Distraction1)
	if g_Distraction2_Fire == false then
		Rule_AddInterval(Rule_Objective_Distraction2, 2)
	end
--	Rule_AddOneShot(Rule_Objective_Distraction1, 2)
	
elseif Event_IsAnyRunning() == false and g_Distraction1 == false then
	
	Util_ObjectiveFail(Objective_Distraction1.title_id)

	Rule_Remove(Rule_Objective_Distraction1)
	
end

end

function Ork_Armies_Mover()

if g_Ork_Move1 then

	Cmd_AttackMoveMarker("sg_Ork_Army1", "mkr_Ork_Distraction1")
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army1"))
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army2"))
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army3"))

end

if g_Ork_Move2 then

	Cmd_AttackMoveMarker("sg_Ork_Army2", "mkr_Ork_Distraction2")
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army1"))
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army2"))
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army3"))

end

if g_Ork_Move3 then

	Cmd_AttackMoveMarker("sg_Ork_Army3", "mkr_Ork_Distraction3")
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army1"))
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army2"))
	FOW_TagSGroup(g_Player2, SGroup_FromName("sg_Ork_Army3"))

end

end


--[[ Destroy building B ]] function Rule_Objective_Distraction2()

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Distraction2.title_id) == false then
	
Util_WXP_ObjectiveSubCreate( Objective_Distraction2, 811030 )

	--[[adding map and mini-map pings]]
	MSO2_SwitchPings_Add(g_Player2, nil, "pg_Distraction2", "mkr_Ork_Distraction2")
	g_ping_distraction2 = Objective_PingMarker(Objective_Distraction2.title_id, "mkr_Ork_Distraction2", true, "attack")
	
	g_Distraction2 = nil
	g_Distraction2_Fire = true
	
elseif Event_IsAnyRunning() == false and g_Distraction2 == true  then
	
	Util_ObjectiveComplete(Objective_Distraction2.title_id)
	
	--[[removing map and mini-map pings]]
	MSO2_SwitchPings_RemovePing("pg_Distraction2")
	Objective_PingRemove(Objective_Distraction2.title_id, g_ping_distraction2)		
	
	if g_Distraction3_Fire == false then
		Rule_AddInterval(Rule_Objective_Distraction3, 2)
	end
	Rule_Remove(Rule_Objective_Distraction2)
			
elseif Event_IsAnyRunning() == false and g_Distraction2 == false then
	
	Util_ObjectiveFail(Objective_Distraction2.title_id)

	Rule_Remove(Rule_Objective_Distraction2)
	
end

end


--[[ Destroy building C ]] function Rule_Objective_Distraction3()

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Distraction3.title_id) == false then
	
	Util_WXP_ObjectiveSubCreate( Objective_Distraction3, 811030 )

	--[[adding map and mini-mao pings]]
	MSO2_SwitchPings_Add(g_Player2, nil, "pg_Distraction3", "mkr_Ork_Distraction3")
	g_ping_distraction3 = Objective_PingMarker(Objective_Distraction3.title_id, "mkr_Ork_Distraction3", true, "attack")
	
	
	g_Distraction3 = nil
	g_Distraction3_Fire = true
	
elseif Event_IsAnyRunning() == false and g_Distraction3 == true  then
	
	Util_ObjectiveComplete(Objective_Distraction3.title_id)
	
	--[[removing map and mini-map pings]]
	MSO2_SwitchPings_RemovePing("pg_Distraction3")
	Objective_PingRemove(Objective_Distraction3.title_id, g_ping_distraction3)		
	
	--[[adding ping for the destroy ork artillery objective]]
	MSO2_SwitchPings_Add(g_Player2, nil, "pg_Ork_Artillery", "mkr_Eldar_Scout_Watching")
	
	
	Rule_Remove(Rule_Objective_Distraction3)
			
elseif Event_IsAnyRunning() == false and g_Distraction3 == false then
	
	Util_ObjectiveFail(Objective_Distraction3.title_id)

	Rule_Remove(Rule_Objective_Distraction3)
	
end

end


--[[ Destroy Ork Artillery ]] function Rule_Objective_Ork_Artillery()

Objective_Ork_Artillery = { title_id = 811030, short_desc_id = 811031, help_tip_id = 811032 }

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Ork_Artillery.title_id) == false then
	
	Util_WXP_ObjectiveCreate(Objective_Ork_Artillery, true, g_Player2)
	Rule_Add(Rule_Big_Guns)	
	Rule_AddInterval(Rule_Objective_Distraction1, 2)
	
	--[[adding map and mini map ping]]
	g_ping_artillery = Objective_PingMarker(Objective_Ork_Artillery.title_id, "mkr_Eldar_Scout_Watching", true, "attack")
	
	g_Ork_Artillery = nil
	
elseif Event_IsAnyRunning() == false and g_Ork_Artillery == true  then
	
	Util_ObjectiveComplete(Objective_Ork_Artillery.title_id)
	
	--[[removing ping]]
	MSO2_SwitchPings_RemovePing("pg_Ork_Artillery")
	Objective_PingRemove(Objective_Ork_Artillery.title_id, g_ping_artillery)
	
	
	Rule_AddOneShot(Rule_SwitchBack, 0)
	Rule_Remove(Rule_Objective_Ork_Artillery)
	Rule_Remove(Rule_Objective_Distraction1)
	Rule_Remove(Rule_Objective_Distraction2)
	Rule_Remove(Rule_Objective_Distraction3)
	Rule_Remove(Rule_Distraction1)
	Rule_Remove(Rule_Distraction2)
	Rule_Remove(Rule_Distraction3)
	
	--[[removing ping]]
	MSO2_SwitchPings_RemovePing("pg_Distraction1")
	MSO2_SwitchPings_RemovePing("pg_Distraction2")
	MSO2_SwitchPings_RemovePing("pg_Distraction3")

	
elseif Event_IsAnyRunning() == false and g_Ork_Artillery == false then
	
	Util_ObjectiveFail(Objective_Ork_Artillery.title_id)

	Rule_Remove(Rule_Objective_Ork_Artillery)
	
end

end


--[[Repair Sentinels ]] function Rule_Objective_Repair_Sentinels()

Objective_Repair_Sentinels = { title_id = 811021, short_desc_id = 811022, help_tip_id = 811023 }

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Repair_Sentinels.title_id) == false then
	
	Util_WXP_ObjectiveSubCreate( Objective_Repair_Sentinels, 811027 )
	
	--[[adding map and mini map ping]]
	g_ping_sentinel = Objective_PingMarker(Objective_Repair_Sentinels.title_id, "mkr_Sentinel_Check", true, "attack")
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Sentinel", "mkr_Sentinel_Check")		
	
	Rule_AddIntervalDelay(Rule_Remove_Sentinel_Ping, 2, 9)
	
elseif Event_IsAnyRunning() == false and g_Sentinel == 3  then
	
	Util_ObjectiveComplete(Objective_Repair_Sentinels.title_id)
	EGroup_SetPlayerOwner("eg_Guard_Mechanized2", g_Player1)		
	Player_UnRestrictBuilding(g_Player1, "guard_mechanized")
	Player_UnRestrictSquad(g_Player1, "guard_squad_sentinel")
	EGroup_ForceAddOn("eg_Guard_Mechanized1","addon_guard_sentinel_depot")
	
	
	--[[removing ping]]
	Objective_PingRemove(Objective_Repair_Sentinels.title_id, g_ping_sentinel)
	
	Util_StartIntel(EVENTS.IE_Sentinel_Buildable)

	Rule_Add(Rule_Autosave_Sentinel_Repaired) 
	g_Repair = g_Repair + 1
	Rule_Remove(Rule_Objective_Repair_Sentinels)

	
end

end

function Rule_Remove_Sentinel_Ping()

MSO2_SwitchPings_RemovePing("pg_Sentinel")
Rule_Remove(Rule_Remove_Sentinel_Ping)

end


--[[Repair Chimeras ]] function Rule_Objective_Repair_Chimeras()

Objective_Repair_Chimeras = { title_id = 811024, short_desc_id = 811025, help_tip_id = 811026 }

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Repair_Chimeras.title_id) == false then

	Util_WXP_ObjectiveSubCreate( Objective_Repair_Chimeras, 811027 )

	--[[adding map and mini map ping]]
	g_ping_chimeras = Objective_PingMarker(Objective_Repair_Chimeras.title_id, "mkr_Chimera_Check", true, "attack")
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Chimera", "mkr_Chimera_Check")

	Rule_AddIntervalDelay(Rule_Remove_Chimera_Ping, 2, 9)

	g_Repair_Chimeras = nil
	
elseif Event_IsAnyRunning() == false and g_Chimera == 3  then
	
	Util_ObjectiveComplete(Objective_Repair_Chimeras.title_id)
	EGroup_SetPlayerOwner("eg_Guard_Mechanized1", g_Player1)
	Player_UnRestrictBuilding(g_Player1, "guard_mechanized")
	Player_UnRestrictSquad(g_Player1, "guard_squad_chimera")
	Util_StartIntel(EVENTS.IE_Chimera_Buildable)
	
	--[[removing ping]]
	Objective_PingRemove(Objective_Repair_Chimeras.title_id, g_ping_chimeras)
	
	
	Rule_Add(Rule_Autosave_Chimera_Repaired) 
	g_Repair = g_Repair +1
	Rule_Remove(Rule_Objective_Repair_Chimeras)
	

	
end

end

function Rule_Remove_Chimera_Ping()

MSO2_SwitchPings_RemovePing("pg_Chimera")
Rule_Remove(Rule_Remove_Chimera_Ping)

end


--[[Destroy Chaos Base ]] function Rule_Objective_Destroy_Chaos_Base()

Objective_Destroy_Chaos_Base = { title_id = 811033, short_desc_id = 811034, help_tip_id = 811035 }

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Destroy_Chaos_Base.title_id) == false then
	
	Util_WXP_ObjectiveSubCreate( Objective_Destroy_Chaos_Base, 811006 )
	
	--[[adding map and mini map ping]]
	g_ping_chaos_base = Objective_PingMarker(Objective_Destroy_Chaos_Base.title_id, "mkr_Chaos_Base_Defender7", true, "attack")
	MSO2_SwitchPings_Add(g_Player1, nil, "pg_Chaos_Base", "mkr_Chaos_Base_Defender7")		
	
elseif Event_IsAnyRunning() == false and EGroup_IsEmpty("eg_Chaos_Base")  then
	
	Util_ObjectiveComplete(Objective_Destroy_Chaos_Base.title_id)
	
	--[[removing ping]]
	g_ping_chaos_base = Objective_PingMarker(Objective_Destroy_Chaos_Base.title_id, "mkr_Ork_Distraction3", true, "attack")
	MSO2_SwitchPings_RemovePing("pg_Chaos_Base")
	
	Rule_Remove(Rule_Objective_Repair_Chimeras)
		
end

end

function Rule_Trigger_Destroy_Base_Objective()

if Player_AreSquadsNearMarker(g_Player1, "mkr_Guard_Run_Destination") then

	Rule_AddInterval(Rule_Objective_Destroy_Chaos_Base, 1)
	Rule_Remove(Rule_Trigger_Destroy_Base_Objective)
end

end


--[[Destroy Chaos Base ]] function Rule_Objective_Imperial_Machinery()

Objective_Imperial_Machinery = { title_id = 811027, short_desc_id = 811028, help_tip_id = 811029 }

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Imperial_Machinery.title_id) == false then
	
	Util_WXP_ObjectiveCreate( Objective_Imperial_Machinery, false, g_Player1 )
			
elseif Event_IsAnyRunning() == false and g_Repair == 2  then
	
	Util_ObjectiveComplete(Objective_Imperial_Machinery.title_id)
	
	Rule_Remove(Rule_Objective_Imperial_Machinery)
		
end

end


--[[Use tunnels ]] function Rule_Objective_Use_Tunnels()

Objective_Use_Tunnels = { title_id = 811036, short_desc_id = 811037, help_tip_id = 811023 }

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Use_Tunnels.title_id) == false then
	
	Util_WXP_ObjectiveSubCreate( Objective_Use_Tunnels, 811009 )
	Rule_AddInterval(Rule_Check_Tunnel_Exit, 1)
	
	--[[adding map and mini map ping]]
	g_ping_usetunnel = Objective_PingMarker(Objective_Use_Tunnels.title_id, "mkr_Ping_Barrack1B", true, "attack")
	
	
elseif Event_IsAnyRunning() == false and g_tunnel == true  then
	
	Util_ObjectiveComplete(Objective_Use_Tunnels.title_id)
	Rule_AddInterval(Rule_Objective_Pillbox, 1)
	Rule_Remove(Rule_Check_Originals)
	

	--[[removing ping]]
	Objective_PingRemove(Objective_Use_Tunnels.title_id, g_ping_usetunnel)
	MSO2_SwitchPings_RemovePing("pg_Bunker1A")
	MSO2_SwitchPings_RemovePing("pg_Bunker1B")
	
	Rule_Remove(Rule_Objective_Use_Tunnels)

	
end

end

function Rule_Check_Tunnel_Exit()

if Player_AreSquadsNearMarker(g_Player1, "mkr_Ping_Barrack1B") then

	g_tunnel = true
	Rule_Remove(Rule_Check_Tunnel_Exit)
end

end


--[[Use tunnels ]] function Rule_Objective_Use_Tunnels_Secondary()

Objective_Use_Tunnels_Secondary = { title_id = 811036, short_desc_id = 811037, help_tip_id = 811023 }

if Event_IsAnyRunning() == false and Objective_Exists(Objective_Use_Tunnels.title_id) == false then
	
	Util_WXP_ObjectiveCreate(Objective_Use_Tunnels_Secondary, false, g_Player1)
	
	
elseif Event_IsAnyRunning() == false and g_tunnel2 == true  then
	
	Util_ObjectiveComplete(Objective_Use_Tunnels_Secondary.title_id)
	Rule_Remove(Rule_Objective_Use_Tunnels_Secondary)

	
end

end


--[[ SWITCH MARKER FUNCTIONS ]]

--[[ The point of the following set of special, mission specific, util functions is to allow only the active player slot's Pings and Beacons to be visible at any point during play.

Since the player has the ability to switch back and forth on their own and Pings and Beacons are often created throughout the whole mission it became very confusing for them ALL to be visible at the same time.

This set of Add, Switch, and Remove functions is aimed at resolving this issue -deg ]]

--[[ MARKER ADD FUNCTION ]] function MSO2_SwitchPings_Add(playerid, beacon, ping, location)

if _switch == nil then
	_switch = {}
end

local player = 0

if playerid == g_Player1 then
	player = "g_Player1"
elseif playerid == g_Player2 then
	player = "g_Player2"
end


local count = table.getn(_switch)
local i = count+1
local pos = {x = 0, y = 0, z = 0}
if type(location) == "string" and Marker_Exists(location, "basic_marker") then
	pos = Marker_GetPosition(Marker_FromName(location, "basic_marker"))
else
	pos = location
end

local template = {id = player, loc = pos, be = beacon, beid = 0, ping = ping}
table.insert(_switch, i , template)

if _switch[i].be ~= nil then
	_switch[i].beid = Util_CreateBeaconPosition_Blue(_switch[i].loc)
end

if _switch[i].ping ~= nil then
	Util_Ping_LoopingPos(_switch[i].ping, _switch[i].loc)
end

end

--[[ MARKER SWITCH FUNCTION ]] function MSO2_SwitchPings_Switch(playerid)

local count = 0

local player = 0

if playerid == g_Player1 then
	player = "g_Player1"
elseif playerid == g_Player2 then
	player = "g_Player2"
end

if _switch ~= nil then
	count = table.getn(_switch)
end

if count > 0 then
	
	for i = 1, count do
		
		if _switch[i].id ~= player then
			
			if _switch[i].be ~= nil then
				Util_RemoveBeaconMarker(_switch[i].beid)
			end
			
			if _switch[i].ping ~= nil then
				Util_Ping_Stop(_switch[i].ping)
			end
			
		elseif _switch[i].id == player then
			
			if _switch[i].be ~= nil then
				_switch[i].beid = Util_CreateBeaconPosition_Blue(_switch[i].loc)
			end
			
			if _switch[i].ping ~= nil then
				Util_Ping_LoopingPos(_switch[i].ping, _switch[i].loc)
			end
			
		else
			
		end
		
	end
	
end

end

--[[ MARKER REMOVAL FUNCTIONS ]]

--[[ Remove Ping ]] function MSO2_SwitchPings_RemovePing(ping)

local count = table.getn(_switch)
if count > 0 then
	
	for i = count, 1, -1 do
		
		if _switch[i].ping == ping then
			
			Util_Ping_Stop(ping)
			table.remove(_switch, i)
			
			break
		end
		
	end
	
end

end

--[[ Remove Beacon ]] function MSO2_SwitchPings_RemoveBeacon(beacon)

local count = table.getn(_switch)
if count > 0 then
	
	for i = count, 1, -1 do
		
		if _switch[i].be == beacon then
			
			Util_RemoveBeaconMarker(_switch[i].beid)
			table.remove(_switch, i)
			
			break
		end
		
	end
	
end

end

--[[ Remove Beacon AND Ping ]] function MSO2_SwitchPings_RemoveBoth(beacon, ping)

local count = table.getn(_switch)
if count > 0 then
	
	for i = count, 1, -1 do
		
		if _switch[i].be == beacon then
			
			Util_RemoveBeaconMarker(_switch[i].beid)
			Util_Ping_Stop(ping)
			table.remove(_switch, i)
			
			break
		end
		
	end
	
end

end


--[[ AUTOSAVES ]]

function Rule_Autosave_MissionStart()

if not Event_IsAnyRunning() then
	Util_Autosave( "$810208" )
	Rule_Remove(Rule_Autosave_MissionStart)
end

end

function Rule_Autosave_HQ_Liberated()

if not Event_IsAnyRunning() then
	Util_Autosave( "$810200" )
	Rule_Remove(Rule_Autosave_HQ_Liberated)
end

end

function Rule_Autosave_Sentinel_Repaired()

if not Event_IsAnyRunning() then
	Util_Autosave( "$810201" )
	Rule_Remove(Rule_Autosave_Sentinel_Repaired)
end

end

function Rule_Autosave_Chimera_Repaired()

if not Event_IsAnyRunning() then
	Util_Autosave( "$810202" )
	Rule_Remove(Rule_Autosave_Chimera_Repaired)
end

end

function Rule_Autosave_Switched_Eldar()

if not Event_IsAnyRunning() then
	Util_Autosave( "$810203" )
	Rule_Remove(Rule_Autosave_Switched_Eldar)
end

end

function Rule_Autosave_Generator1_Destroyed()

if not Event_IsAnyRunning() then
	Util_Autosave( "$810204" )
	Rule_Remove(Rule_Autosave_Generator1_Destroyed)
end

end

function Rule_Autosave_Generator2_Destroyed()

if not Event_IsAnyRunning() then
	Util_Autosave( "$810205" )
	Rule_Remove(Rule_Autosave_Generator2_Destroyed)
end

end

function Rule_Autosave_Generator3_Destroyed()

if not Event_IsAnyRunning() then
	Util_Autosave( "$810206" )
	Rule_Remove(Rule_Autosave_Generator3_Destroyed)
end

end

function Rule_Autosave_Switched_Imperial()

if not Event_IsAnyRunning() then
	Util_Autosave( "$810207" )
	Rule_Remove(Rule_Autosave_Switched_Imperial)
end

end

--[[ INTEL EVENTS ]]

--[[ Intel Event 1 ]] function Rule_IE_OpeningSpeech()

Util_StartIntel(EVENTS.IE_OpeningSpeech)

end

--[[ New Objective Created ]] function Rule_IE_Objective_NameCreate()

Util_StartIntel(EVENTS.IE_Objective_NameCreate)

end

--[[ Objective Failed ]] function Rule_IE_Objective_NameComplete()

Util_StartIntel(EVENTS.IE_Objective_NameComplete)

end

--[[ Intel Event 1 ]] function Rule_IE_Objective_NameFailed()

Util_StartIntel(EVENTS.IE_Objective_NameFailed)

end




--[[ CHEATS ]]

--[[ function CheatClosing()

Rule_RemoveAll()
SGroup_ReSpawn("sg_Spacemarines")
SGroup_SetHealthInvulnerable("sg_Spacemarines", true)
Util_StartNIS(EVENTS.NIS_Closing)

end

function CheatMissionTwist()

Rule_RemoveAll()
Util_StartNIS(EVENTS.NIS_Twist)

end

function CheatTwistback()

-- Rule_RemoveAll() Util_StartNIS(EVENTS.NIS_TwistBack)

end

function CheatMidMissionName()

Rule_RemoveAll()
Util_StartNIS(EVENTS.NIS_MidName)

end

function Rule_Fire_Cheat()

g_Distraction1_Fire = false
g_Distraction2_Fire = false
g_Distraction3_Fire = false

end

function Tester()

Rule_AddInterval(Rule_Objective_Destroy_Chaos_Base, 1)

end]]




Game statistieken
Volgers
12
Runs
58
Spelers
7
Recente runs
Niveau: Titan of the Emperor (Order 5 / Imperial guard)
Niveau: Hunter! (Disorder 2)
Niveau: Trophies (Disorder 5 / Orks)
Niveau: Keep Your Enemies Closer (Disorder 4)
Niveau: Blood for the Blood God! (Disorder 3)
Moderators