--[[ 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]]