Add different difficulties to allies02

This commit is contained in:
abcdefg30
2015-05-31 22:52:13 +02:00
parent 4556a6ebb3
commit 384a67def5
2 changed files with 152 additions and 20 deletions

View File

@@ -9,7 +9,61 @@ TruckPath = { TruckEntryPoint.Location, TruckRallyPoint.Location }
PathGuards = { PathGuard1, PathGuard2, PathGuard3, PathGuard4, PathGuard5, PathGuard6, PathGuard7, PathGuard8, PathGuard9, PathGuard10, PathGuard11, PathGuard12, PathGuard13, PathGuard14, PathGuard15 }
TimerTicks = DateTime.Minutes(10)
IdlingUnits = { }
if Map.Difficulty == "Easy" then
TimerTicks = DateTime.Minutes(10)
Announcements =
{
{ "TenMinutesRemaining", DateTime.Seconds(3) },
{ "WarningFiveMinutesRemaining", DateTime.Minutes(5) },
{ "WarningFourMinutesRemaining", DateTime.Minutes(6) },
{ "WarningThreeMinutesRemaining", DateTime.Minutes(7) },
{ "WarningTwoMinutesRemaining", DateTime.Minutes(8) },
{ "WarningOneMinuteRemaining", DateTime.Minutes(9) }
}
elseif Map.Difficulty == "Normal" then
TimerTicks = DateTime.Minutes(5)
Announcements =
{
{ "WarningFiveMinutesRemaining", DateTime.Seconds(3) },
{ "WarningFourMinutesRemaining", DateTime.Minutes(6) },
{ "WarningThreeMinutesRemaining", DateTime.Minutes(7) },
{ "WarningTwoMinutesRemaining", DateTime.Minutes(8) },
{ "WarningOneMinuteRemaining", DateTime.Minutes(9) }
}
InfantryTypes = { "e1", "e1", "e1", "e2", "e2", "e1" }
InfantryDelay = DateTime.Seconds(18)
AttackGroupSize = 5
elseif Map.Difficulty == "Hard" then
TimerTicks = DateTime.Minutes(3)
Announcements =
{
{ "WarningThreeMinutesRemaining", DateTime.Seconds(3) },
{ "WarningTwoMinutesRemaining", DateTime.Minutes(1) },
{ "WarningOneMinuteRemaining", DateTime.Minutes(2) },
}
InfantryTypes = { "e1", "e1", "e1", "e2", "e2", "e1" }
InfantryDelay = DateTime.Seconds(10)
VehicleTypes = { "ftrk" }
VehicleDelay = DateTime.Seconds(30)
AttackGroupSize = 7
else
TimerTicks = DateTime.Minutes(1)
Announcements = { { "WarningOneMinuteRemaining", DateTime.Seconds(3) } }
ConstructionVehicleReinforcements = { "jeep" }
InfantryTypes = { "e1", "e1", "e1", "e2", "e2", "dog", "dog" }
InfantryDelay = DateTime.Seconds(10)
VehicleTypes = { "ftrk" }
VehicleDelay = DateTime.Minutes(1) + DateTime.Seconds(10)
AttackGroupSize = 5
end
SendJeepReinforcements = function()
Media.PlaySpeechNotification(player, "ReinforcementsArrived")
@@ -18,8 +72,85 @@ end
RunInitialActivities = function()
Harvester.FindResources()
Trigger.OnKilled(Harvester, function() HarvesterKilled = true end)
Trigger.OnAllKilled(PathGuards, SendTrucks)
if InfantryTypes then
Trigger.AfterDelay(InfantryDelay, InfantryProduction)
end
if VehicleTypes then
Trigger.AfterDelay(VehicleDelay, VehicleProduction)
end
end
InfantryProduction = function()
if SovietBarracks.IsDead then
return
end
local toBuild = { Utils.Random(InfantryTypes) }
if SovietKennel.IsDead and toBuild == "dog" then
toBuild = "e1"
end
ussr.Build(toBuild, function(unit)
IdlingUnits[#IdlingUnits + 1] = unit[1]
Trigger.AfterDelay(InfantryDelay, InfantryProduction)
if #IdlingUnits >= (AttackGroupSize * 1.5) then
SendAttack()
end
end)
end
VehicleProduction = function()
if SovietWarfactory.IsDead then
return
end
if HarvesterKilled then
ussr.Build({ "harv" }, function(harv)
harv[1].FindResources()
Trigger.OnKilled(harv[1], function() HarvesterKilled = true end)
HarvesterKilled = false
VehicleProduction()
end)
return
end
local toBuild = { Utils.Random(VehicleTypes) }
ussr.Build(toBuild, function(unit)
IdlingUnits[#IdlingUnits + 1] = unit[1]
Trigger.AfterDelay(VehicleDelay, VehicleProduction)
if #IdlingUnits >= (AttackGroupSize * 1.5) then
SendAttack()
end
end)
end
SendAttack = function()
local units = { }
for i = 0, AttackGroupSize, 1 do
local number = Utils.RandomInteger(1, #IdlingUnits)
if IdlingUnits[number] and not IdlingUnits[number].IsDead then
units[i] = IdlingUnits[number]
table.remove(IdlingUnits, number)
end
end
Utils.Do(units, function(unit)
if Map.Difficulty ~= "Real tough guy" then
unit.AttackMove(DeployPoint.Location)
end
Trigger.OnIdle(unit, unit.Hunt)
end)
end
ticked = TimerTicks
@@ -96,12 +227,14 @@ ConvoyCasualites = function()
end
end
ConvoyTimer = function(delay, notification)
Trigger.AfterDelay(delay, function()
if not ConvoyOnSite then
Media.PlaySpeechNotification(player, notification)
end
end)
ConvoyTimerAnnouncements = function()
for i = #Announcements, 1, -1 do
Trigger.AfterDelay(Announcements[i][2], function()
if not ConvoyOnSite then
Media.PlaySpeechNotification(player, Announcements[i][1])
end
end)
end
end
WorldLoaded = function()
@@ -141,10 +274,5 @@ WorldLoaded = function()
Camera.Position = ReinforcementsEntryPoint.CenterPosition
TimerColor = player.Color
ConvoyTimer(DateTime.Seconds(3), "TenMinutesRemaining")
ConvoyTimer(DateTime.Minutes(5), "WarningFiveMinutesRemaining")
ConvoyTimer(DateTime.Minutes(6), "WarningFourMinutesRemaining")
ConvoyTimer(DateTime.Minutes(7), "WarningThreeMinutesRemaining")
ConvoyTimer(DateTime.Minutes(8), "WarningTwoMinutesRemaining")
ConvoyTimer(DateTime.Minutes(9), "WarningOneMinuteRemaining")
ConvoyTimerAnnouncements()
end