Positions = { q1d04 = { CPos.New(1,1), CPos.New(9,1), CPos.New(1,9), CPos.New(1,14), CPos.New(14,1), CPos.New(22,27), CPos.New(27,22), CPos.New(22,32), CPos.New(27,32), CPos.New(34,34), CPos.New(32,27), CPos.New(32,22), CPos.New(22,37), CPos.New(27,37), CPos.New(37,37), CPos.New(37,34), CPos.New(37,27), CPos.New(37,22), CPos.New(22,42) , CPos.New(22,46), CPos.New(42,22), CPos.New(46,22), CPos.New(46,46), CPos.New(41,46), CPos.New(36,46), CPos.New(31,46), CPos.New(27,46), CPos.New(46,41), CPos.New(46,36), CPos.New(46,31), CPos.New(46,27), CPos.New(1,19), CPos.New(19,1), CPos.New(41,27), CPos.New(27,42), CPos.New(27,27), CPos.New(34,37) } , q1d12 = { CPos.New(1,6), CPos.New(6,1), CPos.New(6,9), CPos.New(9,6), CPos.New(9,12), CPos.New(12,9), CPos.New(6,12), CPos.New(12,6), CPos.New(6,15), CPos.New(6,18), CPos.New(18,6), CPos.New(6,21), CPos.New(6,24), CPos.New(21,6), CPos.New(24,6), CPos.New(11,37), CPos.New(14,37), CPos.New(19,37), CPos.New(16,37) , CPos.New(37,11), CPos.New(37,19), CPos.New(37,16), CPos.New(37,13), CPos.New(15,9), CPos.New(18,9), CPos.New(9,18), CPos.New(9,15), CPos.New(15,6), CPos.New(21,9), CPos.New(24,9), CPos.New(9,24), CPos.New(9,21) } , q1d01 = { CPos.New(6,27), CPos.New(6,32), CPos.New(6,37), CPos.New(6,42), CPos.New(6,47), CPos.New(6,51), CPos.New(11,51), CPos.New(16,51), CPos.New(21,51), CPos.New(26,51), CPos.New(31,51), CPos.New(36,51), CPos.New(51,36), CPos.New(51,31), CPos.New(51,26), CPos.New(51,21), CPos.New(51,16), CPos.New(51,11), CPos.New(51,6) , CPos.New(27,6), CPos.New(32,6), CPos.New(37,6), CPos.New(42,6), CPos.New(47,6), CPos.New(51,46), CPos.New(46,51) } , q1d05 = { CPos.New(15,12), CPos.New(12,15), CPos.New(17,17), CPos.New(17,22), CPos.New(22,17), CPos.New(22,22), CPos.New(12,18), CPos.New(12,23), CPos.New(20,12), CPos.New(23,12), CPos.New(27,17), CPos.New(17,27) } , nix01 = { CPos.New(32,42), CPos.New(33,42), CPos.New(34,42), CPos.New(36,42), CPos.New(35,42), CPos.New(37,42), CPos.New(38,42), CPos.New(39,42), CPos.New(40,42), CPos.New(41,42), CPos.New(42,42), CPos.New(42,41), CPos.New(42,40), CPos.New(42,39), CPos.New(42,38), CPos.New(42,37), CPos.New(42,36), CPos.New(42,35), CPos.New(42,34) , CPos.New(42,33), CPos.New(42,32), CPos.New(27,11), CPos.New(11,27) } , nix02 = { CPos.New(32,32), CPos.New(32,34), CPos.New(32,36), CPos.New(32,38), CPos.New(32,40), CPos.New(34,32), CPos.New(36,32), CPos.New(38,32), CPos.New(40,32) } , nix03 = { CPos.New(40,19), CPos.New(43,19), CPos.New(32,43), CPos.New(35,43), CPos.New(38,43), CPos.New(41,43), CPos.New(43,43), CPos.New(43,40), CPos.New(43,32), CPos.New(43,35), CPos.New(43,37), CPos.New(46,19), CPos.New(40,16), CPos.New(40,13), CPos.New(43,11), CPos.New(40,11), CPos.New(46,11), CPos.New(48,11), CPos.New(48,14) , CPos.New(48,17), CPos.New(48,19), CPos.New(19,48), CPos.New(19,45), CPos.New(19,42), CPos.New(19,40), CPos.New(16,48), CPos.New(13,48), CPos.New(11,48), CPos.New(11,45), CPos.New(11,42), CPos.New(11,40), CPos.New(14,40), CPos.New(17,40), CPos.New(3,53), CPos.New(3,50), CPos.New(3,47), CPos.New(3,44), CPos.New(3,41), CPos.New(3,40), CPos.New(3,34), CPos.New(3,32), CPos.New(3,29), CPos.New(3,26), CPos.New(3,24), CPos.New(1,24), CPos.New(53,3), CPos.New(50,3), CPos.New(47,3), CPos.New(44,3), CPos.New(41,3), CPos.New(40,3), CPos.New(34,3), CPos.New(32,3), CPos.New(29,3), CPos.New(26,3), CPos.New(24,3), CPos.New(24,1), CPos.New(6,4), CPos.New(4,6), CPos.New(6,6), CPos.New(19,34), CPos.New(16,34), CPos.New(13,34), CPos.New(11,34), CPos.New(11,31), CPos.New(34,19), CPos.New(34,16), CPos.New(34,13), CPos.New(34,11), CPos.New(31,11), CPos.New(11,28), CPos.New(14,28), CPos.New(28,11), CPos.New(19,32), CPos.New(14,29), CPos.New(32,19), CPos.New(32,16), CPos.New(28,14), CPos.New(31,14), CPos.New(14,31), CPos.New(17,32), CPos.New(1,27), CPos.New(1,30), CPos.New(1,33), CPos.New(1,34), CPos.New(1,40), CPos.New(1,43), CPos.New(1,46), CPos.New(1,49), CPos.New(1,52), CPos.New(1,53), CPos.New(27,1), CPos.New(30,1), CPos.New(33,1), CPos.New(34,1), CPos.New(40,1), CPos.New(42,1), CPos.New(45,1), CPos.New(48,1), CPos.New(51,1), CPos.New(53,1), CPos.New(43,14), CPos.New(45,14), CPos.New(43,16), CPos.New(45,16), CPos.New(16,45), CPos.New(16,43), CPos.New(14,45), CPos.New(14,43) } } function CreateMap() PPlant = Actor.Create("NUKE.notarget", true, { Location = (CPos.New(36,36)), Owner = Multi1 }) NIX1 = Actor.Create("nix03", true, { Location = (CPos.New(37,1)), Owner = Neutral }) NIX2 = Actor.Create("nix03", true, { Location = (CPos.New(37,3)), Owner = Neutral }) NIX3 = Actor.Create("nix03", true, { Location = (CPos.New(1,37)), Owner = Neutral }) NIX4 = Actor.Create("nix03", true, { Location = (CPos.New(3,37)), Owner = Neutral }) newactor = Actor.Create("q1d06", true, { Location = (CPos.New(12,12)), Owner = Neutral }) newactor = Actor.Create("q1d13", true, { Location = (CPos.New(9,9)), Owner = Neutral }) newactor = Actor.Create("q1d03", true, { Location = (CPos.New(51,41)), Owner = Neutral }) newactor = Actor.Create("q1d03", true, { Location = (CPos.New(51,51)), Owner = Neutral }) newactor = Actor.Create("q1d03", true, { Location = (CPos.New(41,51)), Owner = Neutral }) for i,v in pairs(Positions.q1d04) do Actor.Create('q1d04', true, { Owner = Neutral, Location = v }) end for i,v in pairs(Positions.q1d12) do Actor.Create('q1d12', true, { Owner = Neutral, Location = v }) end for i,v in pairs(Positions.q1d05) do Actor.Create('q1d05', true, { Owner = Neutral, Location = v }) end for i,v in pairs(Positions.nix01) do Actor.Create('nix01', true, { Owner = Neutral, Location = v }) end for i,v in pairs(Positions.nix02) do Actor.Create('nix02', true, { Owner = Neutral, Location = v }) end for i,v in pairs(Positions.nix03) do Actor.Create('nix03', true, { Owner = Neutral, Location = v }) end for i,v in pairs(Positions.q1d01) do Actor.Create('q1d01', true, { Owner = Neutral, Location = v }) end end Multi1Hpad1 = function() Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(3, 5)), function() Helipad1 = Actor.Create("hpad", true, { Location = CPos.New(39,39), Owner = Multi1 }) Trigger.OnKilled(Helipad1,Multi1Hpad1) end) end Multi1Hpad2 = function() Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(3, 5)), function() Helipad2 = Actor.Create("hpad", true, { Location = CPos.New(35,39), Owner = Multi1 }) Trigger.OnKilled(Helipad2,Multi1Hpad2) end) end Multi1Hpad3 = function() Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(3, 5)), function() Helipad3 = Actor.Create("hpad", true, { Location = CPos.New(39,35), Owner = Multi1 }) Trigger.OnKilled(Helipad3,Multi1Hpad3) end) end Multi3Base = function() Base = Actor.Create("fact", true, { Location = (CPos.New(20,20)), Owner = Multi3 }) Trigger.OnKilled(Base,Multi3Base) end Rescuepoint1= { CPos.New(1, 1), CPos.New(1, 2), CPos.New(1, 3), CPos.New(1, 4), CPos.New(1, 5), CPos.New(1, 6), CPos.New(1, 7), CPos.New(1, 8), CPos.New(1, 9), CPos.New(1, 10), CPos.New(1, 11), CPos.New(1, 12), CPos.New(1, 13), CPos.New(1, 14), CPos.New(1, 15), CPos.New(1, 16), CPos.New(1, 17), CPos.New(1, 18), CPos.New(1, 19), CPos.New(1, 20), CPos.New(1, 21), CPos.New(1, 22), CPos.New(1, 23) } Rescuepoint2= { CPos.New(2, 1), CPos.New(3, 1), CPos.New(4, 1), CPos.New(5, 1), CPos.New(6, 1), CPos.New(7, 1), CPos.New(8, 1), CPos.New(9, 1), CPos.New(10, 1), CPos.New(11, 1), CPos.New(12, 1), CPos.New(13, 1), CPos.New(14, 1), CPos.New(15, 1), CPos.New(16, 1), CPos.New(17, 1), CPos.New(18, 1), CPos.New(19, 1), CPos.New(20, 1), CPos.New(21, 1), CPos.New(22, 1), CPos.New(23, 1) } Rescuepoint3= { CPos.New(1, 37), CPos.New(1, 38), CPos.New(1, 39) } Rescuepoint4= { CPos.New(37, 1), CPos.New(38, 1), CPos.New(39, 1) } Bridgepoint1= { CPos.New(37,6), CPos.New(38,6), CPos.New(39,6), CPos.New(37,7), CPos.New(38,7), CPos.New(39,7) } Bridgepoint2= { CPos.New(6,37), CPos.New(6,38), CPos.New(6,39), CPos.New(7,37), CPos.New(7,38), CPos.New(7,39) } EvilnogoArea = { CPos.New(45, 31), CPos.New(46, 31), CPos.New(47, 31), CPos.New(48, 31), CPos.New(49, 31), CPos.New(50, 31), CPos.New(51, 31), CPos.New(52, 31), CPos.New(53, 31), CPos.New(54, 31), CPos.New(55, 31), CPos.New(31, 45), CPos.New(31, 46), CPos.New(31, 47), CPos.New(31, 48), CPos.New(31, 49), CPos.New(31, 50), CPos.New(31, 51), CPos.New(31, 52), CPos.New(31, 53), CPos.New(31, 54), CPos.New(31, 55) } Rescued = 0 Kills = 0 RandomHostageentry = { CPos.New(45,55), CPos.New(50,55), CPos.New(55,55), CPos.New(55,50), CPos.New(55,45) } RandomHostagemove = { CPos.New(45,50), CPos.New(50,50), CPos.New(50,45) } Refugees = { "c2", "c3", "c5", "civ4", "civ5", "civ6", "civ7", "civ8", "civ9", "civ10" } Insertrefugee = function() RandomRefugee = Utils.Random(Refugees) RandomRefugeeentry = Utils.Random(RandomHostageentry) RandomRefugeemove = Utils.Random(RandomHostagemove) Refugee = Actor.Create(RandomRefugee, true, { Location = RandomRefugeeentry, Owner = Multi0 }) if not Refugee.IsDead then Refugee.Move(RandomRefugeemove + CVec.New(Utils.RandomInteger(-3, 3), Utils.RandomInteger(-3, 3))) end Trigger.OnKilled(Refugee, function() Kills = Kills + 1 end) Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(2, 3)), function() Insertrefugee() end) end RandomEvilentry = { CPos.New(1,1), CPos.New(1,5), CPos.New(1,10), CPos.New(5,1), CPos.New(10,1) } RandomEvilmove = { CPos.New(10,10), CPos.New(5,10), CPos.New(10,5) } EvilPVICE = function() Evilentry = Utils.Random(RandomEvilentry) Evilmove = Utils.Random(RandomEvilmove) PVICE = Actor.Create("PVICE", true, { Location = Evilentry, Owner = Multi2 }) if not PVICE.IsDead then PVICE.AttackMove(Evilmove + CVec.New(Utils.RandomInteger(-2, 2), Utils.RandomInteger(-2, 2))) end Trigger.OnKilled(PVICE,EvilPVICE) end EvilIMP = function() Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(3, 10)), function() Evilentry = Utils.Random(RandomEvilentry) Evilmove = Utils.Random(RandomEvilmove) IMP = Actor.Create("IMP", true, { Location = Evilentry, Owner = Multi2 }) if not IMP.IsDead then IMP.AttackMove(Evilmove + CVec.New(Utils.RandomInteger(-2, 2), Utils.RandomInteger(-2, 2))) end Trigger.OnKilled(IMP,EvilIMP) end) end EvilReve = function() Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(3, 10)), function() Evilentry = Utils.Random(RandomEvilentry) Evilmove = Utils.Random(RandomEvilmove) Reve = Actor.Create("REVE", true, { Location = Evilentry, Owner = Multi2 }) if not Reve.IsDead then Reve.AttackMove(Evilmove + CVec.New(Utils.RandomInteger(-2, 2), Utils.RandomInteger(-2, 2))) end Trigger.OnKilled(Reve,EvilReve) end) end EvilBSPI = function() Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(3, 10)), function() Evilentry = Utils.Random(RandomEvilentry) Evilmove = Utils.Random(RandomEvilmove) BSPI = Actor.Create("BSPI", true, { Location = Evilentry, Owner = Multi2 }) if not BSPI.IsDead then BSPI.AttackMove(Evilmove + CVec.New(Utils.RandomInteger(-2, 2), Utils.RandomInteger(-2, 2))) end Trigger.OnKilled(BSPI,EvilBSPI) end) end EvilPINKY = function() Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(3, 10)), function() Evilentry = Utils.Random(RandomEvilentry) Evilmove = Utils.Random(RandomEvilmove) PINKY = Actor.Create("PINKY", true, { Location = Evilentry, Owner = Multi2 }) if not PINKY.IsDead then PINKY.AttackMove(Evilmove + CVec.New(Utils.RandomInteger(-2, 2), Utils.RandomInteger(-2, 2))) end Trigger.OnKilled(PINKY,EvilPINKY) end) end EvilMANC = function() Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(3, 10)), function() Evilentry = Utils.Random(RandomEvilentry) Evilmove = Utils.Random(RandomEvilmove) MANC = Actor.Create("MANC", true, { Location = Evilentry, Owner = Multi2 }) if not MANC.IsDead then MANC.AttackMove(Evilmove + CVec.New(Utils.RandomInteger(-2, 2), Utils.RandomInteger(-2, 2))) end Trigger.OnKilled(MANC,EvilMANC) end) end RandomUfomove = { CPos.New(40,40), CPos.New(40,45), CPos.New(45,40) } GoodBeamerUfo = function() Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(3, 10)), function() Ufomove = Utils.Random(RandomUfomove) Beamer = Actor.Create("UFO.Beamer", true, { Location = CPos.New(80,80), Owner = Multi1 }) if not Beamer.IsDead then Beamer.AttackMove(Ufomove + CVec.New(Utils.RandomInteger(-5, 5), Utils.RandomInteger(-5, 5))) end Trigger.OnKilled(Beamer,GoodBeamerUfo) end) end GoodLaserUfo = function() Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(3, 10)), function() Ufomove = Utils.Random(RandomUfomove) Laser = Actor.Create("UFO.Laser", true, { Location = CPos.New(80,80), Owner = Multi1 }) if not Laser.IsDead then Laser.AttackMove(Ufomove + CVec.New(Utils.RandomInteger(-5, 5), Utils.RandomInteger(-5, 5))) end Trigger.OnKilled(Laser,GoodLaserUfo) end) end SetTriggers = function() Trigger.OnEnteredFootprint(Rescuepoint1, function(a, id) if a.Owner == Multi0 then Rescued = Rescued + 1 a.Owner = Neutral Trigger.OnIdle(a, function() Trigger.ClearAll(a) a.Destroy() end) end end) Trigger.OnEnteredFootprint(Rescuepoint2, function(a, id) if a.Owner == Multi0 then Rescued = Rescued + 1 a.Owner = Neutral Trigger.OnIdle(a, function() Trigger.ClearAll(a) a.Destroy() end) end end) Trigger.OnEnteredFootprint(Rescuepoint3, function(a, id) if a.Owner == Multi0 then Rescued = Rescued + 1 a.Owner = Neutral Trigger.OnIdle(a, function() Trigger.ClearAll(a) a.Destroy() end) end end) Trigger.OnEnteredFootprint(Rescuepoint4, function(a, id) if a.Owner == Multi0 then Rescued = Rescued + 1 a.Owner = Neutral Trigger.OnIdle(a, function() Trigger.ClearAll(a) a.Destroy() end) end end) Trigger.OnEnteredFootprint(EvilnogoArea, function(a, id) if a.Owner == Multi2 or a.Owner == Multi3 then a.Owner = Neutral Trigger.OnIdle(a, function() Trigger.ClearAll(a) a.Kill() end) end end) Trigger.OnEnteredFootprint(Bridgepoint1, function(a, id) if a.Owner == Multi0 then Trigger.RemoveFootprintTrigger(id) Trigger.AfterDelay(DateTime.Seconds(1), function() NIX2.Destroy() Bridge1 = Actor.Create("q1d12", true, { Location = (CPos.New(37,3)), Owner = Neutral }) Trigger.AfterDelay(DateTime.Seconds(2), function() NIX1.Destroy() Bridge2 = Actor.Create("q1d12", true, { Location = (CPos.New(37,1)), Owner = Neutral }) end) end) end end) Trigger.OnEnteredFootprint(Bridgepoint2, function(a, id) if a.Owner == Multi0 then Trigger.RemoveFootprintTrigger(id) Trigger.AfterDelay(DateTime.Seconds(1), function() NIX4.Destroy() Bridge1 = Actor.Create("q1d12", true, { Location = (CPos.New(3,37)), Owner = Neutral }) Trigger.AfterDelay(DateTime.Seconds(2), function() NIX3.Destroy() Bridge2 = Actor.Create("q1d12", true, { Location = (CPos.New(1,37)), Owner = Neutral }) end) end) end end) end Thiscolor = HSLColor.New(115, 115, 143) GoodGuysWinsGame = function() Media.PlaySoundNotification( allplayers, "Beepy6") Media.DisplayMessage("100 hostages has been rescued good job team 1", "Materia", Thiscolor) Trigger.AfterDelay(DateTime.Seconds(5), function() Multi0.MarkCompletedObjective(Save100Hostages) Multi1.MarkCompletedObjective(GuideTheHostages) Multi2.MarkFailedObjective(Kill100Hostages1) Multi3.MarkFailedObjective(Kill100Hostages2) end) end BadGuysWinsGame = function() Media.PlaySoundNotification( allplayers, "Beepy6") Media.DisplayMessage("100 hostages has been killed what a bad day in History", "Materia", Thiscolor) Trigger.AfterDelay(DateTime.Seconds(5), function() Multi0.MarkFailedObjective(Save100Hostages) Multi1.MarkFailedObjective(GuideTheHostages) Multi2.MarkCompletedObjective(Kill100Hostages1) Multi3.MarkCompletedObjective(Kill100Hostages2) end) end Tick = function() if Kills > 19 then if not Kills20 then Kills20 = true GoodBeamerUfo() end end if Kills > 29 then if not Kills30 then Kills30 = true GoodLaserUfo() end end if Kills > 39 then if not Kills40 then Kills40 = true GoodLaserUfo() end end if Kills > 49 then if not Kills50 then Kills50 = true GoodBeamerUfo() end end if Kills > 59 then if not Kills60 then Kills60 = true GoodLaserUfo() end end if Kills > 69 then if not Kills70 then Kills70 = true GoodBeamerUfo() end end if Kills > 79 then if not Kills80 then Kills80 = true GoodLaserUfo() end end if Kills > 89 then if not Kills90 then Kills90 = true GoodBeamerUfo() GoodLaserUfo() end end if Kills > 99 then Kills = 100 if Kills == 100 then if not Goodwon then Goodwon = true BadGuysWinsGame() end end end if Rescued > 19 then if not Rescued20 then Rescued20 = true EvilPVICE() end end if Rescued > 29 then if not Rescued30 then Rescued30 = true EvilBSPI() end end if Rescued > 39 then if not Rescued40 then Rescued40 = true EvilPINKY() end end if Rescued > 49 then if not Rescued50 then Rescued50 = true EvilMANC() end end if Rescued > 59 then if not Rescued60 then Rescued60 = true EvilPVICE() end end if Rescued > 69 then if not Rescued70 then Rescued70 = true EvilPVICE() end end if Rescued > 79 then if not Rescued80 then Rescued80 = true EvilBSPI() end end if Rescued > 89 then if not Rescued90 then Rescued90 = true EvilBSPI() EvilIMP() end end if Rescued > 99 then Rescued = 100 if Rescued == 100 then if not Goodwon then Goodwon = true GoodGuysWinsGame() end end end UserInterface.SetMissionText("Saved hostages: " .. (Rescued) .. "/100 Killed hostages: " .. (Kills) .. "/100") end GiveMoney = function() Multi1Bonus = 10 * Rescued Multi3Bonus = 10 * Kills Multi1.Cash = Multi1.Cash + Multi1Bonus Multi3.Cash = Multi3.Cash + Multi3Bonus Media.FloatingText("" .. (Multi1Bonus) .. "", PPlant.CenterPosition, 30, HSLColor.Red) Media.FloatingText("" .. (Multi3Bonus) .. "", Base.CenterPosition, 30, HSLColor.Red) Trigger.AfterDelay(DateTime.Seconds(10), function() GiveMoney() end) end SetupPlayers = function() Neutral = Player.GetPlayer("Neutral") Multi0 = Player.GetPlayer("Multi0") if Multi0 == nil then Multi0 = Player.GetPlayer("Multi1") if Multi0 == nil then Multi0 = Player.GetPlayer("Creeps") end end Multi1 = Player.GetPlayer("Multi1") if Multi1 == nil then Multi1 = Player.GetPlayer("Multi0") if Multi1 == nil then Multi1 = Player.GetPlayer("Creeps") end end Multi2 = Player.GetPlayer("Multi2") if Multi2 == nil then Multi2 = Player.GetPlayer("Multi3") if Multi2 == nil then Multi2 = Player.GetPlayer("Creeps") end end Multi3 = Player.GetPlayer("Multi3") if Multi3 == nil then Multi3 = Player.GetPlayer("Multi2") if Multi3 == nil then Multi3 = Player.GetPlayer("Creeps") end end humans = { Multi0, Multi1, Multi2, Multi3 } end function WorldLoaded() SetupPlayers() CreateMap() Multi1Hpad1() Multi1Hpad2() Multi1Hpad3() Multi3Base() Insertrefugee() EvilReve() EvilIMP() EvilIMP() SetTriggers() GiveMoney() Save100Hostages = Multi0.AddPrimaryObjective("Save 100 hostages, reach the upper left edge of the map.") GuideTheHostages = Multi1.AddPrimaryObjective("Protect the hostages from getting killed by the evil forces.") Kill100Hostages1 = Multi2.AddPrimaryObjective("Kill as many hostages as you can and prevent that they can escape.") Kill100Hostages2 = Multi3.AddPrimaryObjective("Kill as many hostages as you can and prevent that they can escape.") Trigger.AfterDelay(DateTime.Seconds(3), function() -- player announcements Utils.Do(humans, function(player) Player1Name = Multi0.Name Player2Name = Multi1.Name Player3Name = Multi2.Name Player4Name = Multi3.Name end) Media.DisplayMessage("" .. Player1Name .. " Save 100 hostages, reach the upper left edge of the map. ( Look for secret pathes!)") Trigger.AfterDelay(DateTime.Seconds(5), function() Media.DisplayMessage("" .. Player2Name .. " Protect the hostages from getting killed by the evil forces.") Trigger.AfterDelay(DateTime.Seconds(5), function() Media.DisplayMessage("" .. Player3Name .. " and " .. Player4Name .. " you must just kill as many hostages as you can and let none escape.") end) end) end) end