Skip to content

Instantly share code, notes, and snippets.

@MustaphaTR
Last active February 15, 2017 16:17
Show Gist options
  • Save MustaphaTR/ad173b44c1167f17b7962bf892fee174 to your computer and use it in GitHub Desktop.
Save MustaphaTR/ad173b44c1167f17b7962bf892fee174 to your computer and use it in GitHub Desktop.
Base =
{
Harkonnen = { HRefinery, SHeavyFactory, SLightFactory, HGunTurret1, HGunTurret2, HGunTurret3, HGunTurret4, HGunTurret5, SBarracks, HPower1, HPower2, HPower3, HPower4 },
Smugglers = { SOutpost, SHeavyFactory, SLightFactory, SGunTurret1, SGunTurret2, SGunTurret3, SGunTurret4, SBarracks, SPower1, SPower2, SPower3 }
}
HarkonnenLightInfantryRushers =
{
easy = { "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" },
normal = { "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" },
hard = { "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf", "light_inf" }
}
HarkonnenAttackDelay =
{
easy = DateTime.Minutes(3) + DateTime.Seconds(30),
normal = DateTime.Minutes(2) + DateTime.Seconds(30),
hard = DateTime.Minutes(1) + DateTime.Seconds(30)
}
InitialReinforcements =
{
Harkonnen = { "combat_tank_h", "combat_tank_h", "trike", "quad" },
Smugglers = { "light_inf", "light_inf", "light_inf", "light_inf", "trooper", "trooper", "trooper" }
}
LightInfantryRushersPaths =
{
{ HarkonnenEntry1.Location, HarkonnenRally1.Location },
{ HarkonnenEntry2.Location, HarkonnenRally2.Location },
{ HarkonnenEntry3.Location, HarkonnenRally3.Location }
}
InitialReinforcementsPaths =
{
Harkonnen = { HarkonnenEntry4.Location, HarkonnenRally4.Location },
Smugglers = { SmugglerEntry.Location, SmugglerRally.Location }
}
OrdosReinforcements = { "light_inf", "light_inf", "light_inf", "light_inf" }
OrdosPath = { OrdosEntry.Location, OrdosRally.Location }
SendHarkonnen = function(path)
Trigger.AfterDelay(HarkonnenAttackDelay[Difficulty], function()
if player.IsObjectiveCompleted(KillHarkonnen) then
return
end
local units = Reinforcements.ReinforceWithTransport(harkonnen, "carryall.reinforce", HarkonnenLightInfantryRushers[Difficulty], path, { path[1] })[2]
Utils.Do(units, function(unit)
unit.AttackMove(HarkonnenAttackLocation)
IdleHunt(unit)
end)
end)
end
Hunt = function(house)
Trigger.OnAllKilledOrCaptured(Base[house.Name], function()
Utils.Do(house.GetGroundAttackers(), IdleHunt)
end)
end
CheckHarvester = function(house)
if DateTime.GameTime % DateTime.Seconds(30) and HarvesterKilled[house.Name] then
local units = house.GetActorsByType("harvester")
if #units > 0 then
HarvesterKilled[house.Name] = false
ProtectHarvester(units[1], house)
end
end
end
Tick = function()
if player.HasNoRequiredUnits() then
harkonnen.MarkCompletedObjective(KillOrdosH)
smuggler.MarkCompletedObjective(KillOrdosS)
smuggler.MarkCompletedObjective(DefendOutpost)
end
if harkonnen.HasNoRequiredUnits() and not player.IsObjectiveCompleted(KillHarkonnen) then
Media.DisplayMessage("The Harkonnen have been annihilated!", "Mentat")
player.MarkCompletedObjective(KillHarkonnen)
end
CheckHarvester(harkonnen)
CheckHarvester(smuggler)
if SOutpost.IsDead then
player.MarkFailedObjective(CaptureOutpost)
end
if SOutpost.Owner == player then
player.MarkCompletedObjective(CaptureOutpost)
smuggler.MarkFailedObjective(DefendOutpost)
end
end
WorldLoaded = function()
harkonnen = Player.GetPlayer("Harkonnen")
smuggler = Player.GetPlayer("Smugglers")
player = Player.GetPlayer("Ordos")
Difficulty = Map.LobbyOption("difficulty")
InitObjectives()
Camera.Position = OConyard.CenterPosition
HarkonnenAttackLocation = OConyard.Location
Hunt(harkonnen)
Hunt(smuggler)
SendHarkonnen(LightInfantryRushersPaths[1])
SendHarkonnen(LightInfantryRushersPaths[2])
SendHarkonnen(LightInfantryRushersPaths[3])
ActivateAI()
Actor.Create("upgrade.barracks", true, { Owner = harkonnen })
Actor.Create("upgrade.light", true, { Owner = harkonnen })
Actor.Create("upgrade.barracks", true, { Owner = smuggler })
Actor.Create("upgrade.light", true, { Owner = smuggler })
Trigger.AfterDelay(HarkonnenAttackDelay[Difficulty] - DateTime.Seconds(5), function()
Media.PlaySpeechNotification(player, "Reinforce")
Reinforcements.Reinforce(player, OrdosReinforcements, OrdosPath)
end)
Trigger.AfterDelay(HarkonnenAttackDelay[Difficulty], function()
Media.DisplayMessage("WARNING: Large force approaching!", "Mentat")
end)
end
InitObjectives = function()
Trigger.OnObjectiveAdded(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
end)
KillOrdosH = harkonnen.AddPrimaryObjective("Kill all Ordos units.")
KillOrdosS = smuggler.AddSecondaryObjective("Kill all Ordos units.")
DefendOutpost = smuggler.AddPrimaryObjective("Don't let the outpost to be captured or dostroyed.")
CaptureOutpost = player.AddPrimaryObjective("Capture the Smuggler Outpost.")
KillHarkonnen = player.AddSecondaryObjective("Destroy the Harkonnen.")
Trigger.OnObjectiveCompleted(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
end)
Trigger.OnObjectiveFailed(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
end)
Trigger.OnPlayerLost(player, function()
Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.PlaySpeechNotification(player, "Lose")
end)
end)
Trigger.OnPlayerWon(player, function()
Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.PlaySpeechNotification(player, "Win")
end)
end)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment