Skip to content

Commit a5827aa

Browse files
committed
victory sequence
1 parent 0f9e347 commit a5827aa

File tree

4 files changed

+152
-35
lines changed

4 files changed

+152
-35
lines changed

Data/Browncoats.rte/Activities/RefineryAssault.lua

Lines changed: 59 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -412,34 +412,71 @@ function RefineryAssault:UpdateActivity()
412412
-- end
413413
-- end
414414
-- end
415+
416+
if not self.saveTable.gameFinished then
415417

416-
-- Monitor stage objectives
417-
self.stageFunc = self.stageFunctionTable[self.Stage];
418-
self:stageFunc();
418+
-- Monitor stage objectives
419+
self.stageFunc = self.stageFunctionTable[self.Stage];
420+
self:stageFunc();
419421

420-
self:UpdateFunds();
421-
422-
-- Seek tasks to create squads for
423-
-- Only human team uses docks
424-
local team, task = self.tacticsHandler:UpdateTacticsHandler();
425-
426-
if task and self:GetAIFunds(team) > 0 then
427-
--print("gottask")
428-
local squad;
429-
if team == self.aiTeam then
430-
squad = self:SendBuyDoorDelivery(team, task);
431-
else
432-
if math.random() < 0.2 then
433-
squad = self:SendDockDelivery(team, task);
434-
else
422+
self:UpdateFunds();
423+
424+
-- Seek tasks to create squads for
425+
-- Only human team uses docks
426+
local team, task = self.tacticsHandler:UpdateTacticsHandler();
427+
428+
if task and self:GetAIFunds(team) > 0 then
429+
--print("gottask")
430+
local squad;
431+
if team == self.aiTeam then
435432
squad = self:SendBuyDoorDelivery(team, task);
433+
else
434+
if math.random() < 0.2 then
435+
squad = self:SendDockDelivery(team, task);
436+
else
437+
squad = self:SendBuyDoorDelivery(team, task);
438+
end
439+
if not squad then
440+
squad = self:SendBuyDoorDelivery(team, task);
441+
end
436442
end
437-
if not squad then
438-
squad = self:SendBuyDoorDelivery(team, task);
443+
if squad then
444+
self.tacticsHandler:AddSquad(team, squad, task.Name, true);
439445
end
440446
end
441-
if squad then
442-
self.tacticsHandler:AddSquad(team, squad, task.Name, true);
447+
else
448+
if self.saveTable.finalMessageTimer and self.saveTable.finalMessageTimer:IsPastSimMS(2000) and not self.saveTable.finalMessagesQueued then
449+
self.saveTable.finalMessagesQueued = true;
450+
451+
self.HUDHandler:QueueScreenText(self.humanTeam,
452+
"The Baron's death has forced the refinery to surrender to us wholly. Brilliant job!",
453+
7000,
454+
0,
455+
true);
456+
457+
self.HUDHandler:QueueScreenText(self.humanTeam,
458+
"Aside from utterly defeating the fearsome Browncoats, this facility will be indispensable.",
459+
13000,
460+
0,
461+
true);
462+
463+
self.HUDHandler:QueueScreenText(self.humanTeam,
464+
"Oil and steel alike are available to us in great quantities - after a few repairs, anyway...",
465+
10000,
466+
0,
467+
true);
468+
469+
self.HUDHandler:QueueScreenText(self.humanTeam,
470+
"And now lacking a leader, what's left of the Browncoats may very well fight for us instead.",
471+
15000,
472+
0,
473+
true);
474+
475+
self.HUDHandler:QueueScreenText(self.humanTeam,
476+
"Today is a great victory. Your efforts will not be forgotten, commander.",
477+
20000,
478+
0,
479+
true);
443480
end
444481
end
445482

Data/Browncoats.rte/Activities/RefineryAssaultFunctions.lua

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,17 +679,62 @@ function RefineryAssault:HandleMessage(message, object)
679679
MusicMan:SetNextDynamicSongSection("Boss", true, true, true);
680680

681681
self.saveTable.stage9FinalConsoleCaptured = true;
682+
683+
elseif message == "Refinery_S10BossUniqueIDReturn" then
684+
685+
self.saveTable.bossActor = ToActor(MovableMan:FindObjectByUniqueID(object));
682686

683687
elseif message == "Refinery_RefineryS10FinalBossDead" then
684688

689+
self.saveTable.gameFinished = true;
690+
691+
self.saveTable.finalBossPosition = Vector(self.saveTable.bossActor.Pos.X, self.saveTable.bossActor.Pos.Y);
692+
685693
MusicMan:SetNextDynamicSongSection("Victory Stinger", true, true, true);
686694
MusicMan:EndDynamicMusic(false);
687695

696+
self.HUDHandler:SetCinematicBars(self.humanTeam, true)
697+
698+
self.HUDHandler:QueueCameraPanEvent(self.humanTeam, "S10BossDeath", self.saveTable.bossActor, 0.1, 4000, true, true, true);
699+
688700
elseif message == "Refinery_RefineryS10FinalBossExploded" then
701+
702+
self.saveTable.finalMessageTimer = Timer();
689703

690704
MusicMan:PlayDynamicSong("BC", "Victory", true, true, true);
691705
MusicMan:EndDynamicMusic(false);
692706

707+
for actor in MovableMan.Actors do
708+
actor = ToActor(actor)
709+
if actor.Team == self.aiTeam then
710+
actor.AIMode = 0;
711+
actor.MovementState = 0;
712+
713+
local controller = actor:GetController();
714+
controller:SetState(Controller.WEAPON_DROP, true);
715+
actor:DropAllInventory();
716+
end
717+
end
718+
719+
self.HUDHandler:RemoveAllCameraPanEvents(self.humanTeam, true)
720+
721+
self.HUDHandler:QueueCameraPanEvent(self.humanTeam, "S10BossPostDeath", self.saveTable.finalBossPosition, 1, 3000, true, true, true);
722+
723+
local cameraPos = SceneMan.Scene:GetOptionalArea("RefineryAssault_FinalCameraPan1").Center;
724+
self.HUDHandler:QueueCameraPanEvent(self.humanTeam, "S10FinalPan1", cameraPos, 0.0015, 10000, true, true, true);
725+
726+
local cameraPos = SceneMan.Scene:GetOptionalArea("RefineryAssault_FinalCameraPan2").Center;
727+
self.HUDHandler:QueueCameraPanEvent(self.humanTeam, "S10FinalPan2", cameraPos, 0.001, 10000, true, true, true);
728+
729+
local cameraPos = SceneMan.Scene:GetOptionalArea("RefineryAssault_FinalCameraPan3").Center;
730+
self.HUDHandler:QueueCameraPanEvent(self.humanTeam, "S10FinalPan3", cameraPos, 0.001, 10000, true, true, true);
731+
732+
local cameraPos = SceneMan.Scene:GetOptionalArea("RefineryAssault_FinalCameraPan4").Center;
733+
self.HUDHandler:QueueCameraPanEvent(self.humanTeam, "S10FinalPan4", cameraPos, 0.001, 15000, true, true, true);
734+
735+
local cameraPos = SceneMan.Scene:GetOptionalArea("RefineryAssault_FinalCameraPan5").Center;
736+
self.HUDHandler:QueueCameraPanEvent(self.humanTeam, "S10FinalPan5", cameraPos, 0.0015, 999999, true, true, true);
737+
693738
end
694739

695740
-- DEBUG STAGE SKIPS
@@ -745,6 +790,11 @@ function RefineryAssault:HandleMessage(message, object)
745790
self.saveTable.stage3FacilityOperator = nil;
746791
self.saveTable.stage3DrillOverloaded = true;
747792
self.HUDHandler:RemoveObjective(self.humanTeam, "S3OverloadDrill");
793+
794+
if self.stage3DoorSequenceTimer then
795+
self.stage3DoorSequenceTimer.ElapsedSimTimeMS = 10000;
796+
self.HUDHandler:RemoveAllCameraPanEvents(self.humanTeam);
797+
end
748798
elseif message == "SkipStage4" then
749799
for k, door in pairs(self.saveTable.stage4Door) do
750800
door:GibThis();

Data/Browncoats.rte/Scenes/Objects/Breakables/BossBreakableCeiling/BossBreakableCeiling.lua

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,9 @@ function OnGlobalMessage(self, message, team)
66
boss.Vel = Vector(0, 10);
77
boss.Pos = self.Pos + Vector(0, -35);
88
MovableMan:AddActor(boss);
9-
10-
self:GibThis();
11-
end
12-
end
13-
14-
function OnMessage(self, message, team)
15-
16-
if message == "Refinery_S10SpawnBoss" then
17-
local boss = CreateAHuman("Browncoat Boss Scripted", "Browncoats.rte");
18-
boss.Team = team;
19-
boss.Vel = Vector(0, 10);
20-
boss.Pos = self.Pos + Vector(0, -35);
21-
MovableMan:AddActor(boss);
9+
10+
local activity = ToGameActivity(ActivityMan:GetActivity());
11+
activity:SendMessage("Refinery_S10BossUniqueIDReturn", boss.UniqueID);
2212

2313
self:GibThis();
2414
end

Data/Browncoats.rte/Scenes/Yskely Refineryv3.ini

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213435,6 +213435,46 @@ AddScene = Scene
213435213435
Width = 190.000000
213436213436
Height = 5199.000000
213437213437
Name = SpawnerTriggerArea_RefineryS2SentrySpawner
213438+
AddArea = Area
213439+
AddBox = Box
213440+
Corner = Vector
213441+
X = 15459.422852
213442+
Y = 2058.201172
213443+
Width = 79.000000
213444+
Height = 62.000000
213445+
Name = RefineryAssault_FinalCameraPan1
213446+
AddArea = Area
213447+
AddBox = Box
213448+
Corner = Vector
213449+
X = 17831.119141
213450+
Y = 1453.800903
213451+
Width = 129.000000
213452+
Height = 70.000000
213453+
Name = RefineryAssault_FinalCameraPan2
213454+
AddArea = Area
213455+
AddBox = Box
213456+
Corner = Vector
213457+
X = 18771.015625
213458+
Y = 2972.998291
213459+
Width = 123.000000
213460+
Height = 64.000000
213461+
Name = RefineryAssault_FinalCameraPan3
213462+
AddArea = Area
213463+
AddBox = Box
213464+
Corner = Vector
213465+
X = 16097.112305
213466+
Y = 3945.198730
213467+
Width = 171.000000
213468+
Height = 72.000000
213469+
Name = RefineryAssault_FinalCameraPan4
213470+
AddArea = Area
213471+
AddBox = Box
213472+
Corner = Vector
213473+
X = 14531.116211
213474+
Y = 4041.494141
213475+
Width = 132.000000
213476+
Height = 53.000000
213477+
Name = RefineryAssault_FinalCameraPan5
213438213478
GlobalAcceleration = Vector
213439213479
X = 0.000000
213440213480
Y = 20.000000

0 commit comments

Comments
 (0)