Skip to content

Commit 2182180

Browse files
committed
Activities: More player/screen mixup fixes, Decision Day typo.
`CameraMan:GetScrollTarget()` and `CameraMan:SetScrollTarget()` both take a screen index but were often being passed player indices. I've hopefully caught and fixed all such instances. In addition, when `Activity:ScreenOfPlayer()` was being called multiple times in a row, I stored the result of a single call and replaced the multiple calls with that local variable. Lastly, when I changed Decision Day to use each player's brain position instead of always using Player 1's, I accidentally wrote `pos` instead of `Pos`, so the first argument would've always been `nil`.
1 parent 3c6343b commit 2182180

File tree

24 files changed

+160
-127
lines changed

24 files changed

+160
-127
lines changed

CHANGELOG.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
3535

3636
</details>
3737

38-
<details><summary><b>Removed</b></summary>
39-
40-
</details>
41-
4238
<details><summary><b>Fixed</b></summary>
4339

4440
- Fixed an issue where palette index 255 was incorrectly showing as black.
4541

42+
- Fixed instances of `CameraMan:GetScrollTarget()` and `CameraMan:SetScrollTarget()` supplying a player index instead of a screen index.
43+
44+
- Fixed a bug in Decision Day that could cause an error when trying to set the camera's scroll target, in addition to the previous issue.
45+
4646
</details>
4747

4848
## [Release v6.2.2] - 2024/02/24

Data/Base.rte/Activities/BrainVsBrain.lua

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -407,8 +407,9 @@ function BrainvsBrain:UpdateActivity()
407407
end
408408
else
409409
self:ResetMessageTimer(player);
410-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
411-
FrameMan:SetScreenText("Your brain has been destroyed!", self:ScreenOfPlayer(player), 2000, -1, false);
410+
local screen = self:ScreenOfPlayer(player);
411+
FrameMan:ClearScreenText(screen);
412+
FrameMan:SetScreenText("Your brain has been destroyed!", screen, 2000, -1, false);
412413
end
413414
end
414415
end

Data/Base.rte/Activities/Harvester.lua

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,12 @@ function Harvester:UpdateActivity()
155155

156156
for player = Activity.PLAYER_1, Activity.MAXPLAYERCOUNT - 1 do
157157
if self:PlayerActive(player) and self:PlayerHuman(player) then
158+
local screen = self:ScreenOfPlayer(player);
158159
--Display messages.
159160
if self.startMessageTimer:IsPastSimMS(3000) then
160-
FrameMan:SetScreenText(self.goldNeeded - (math.ceil(self:GetTeamFunds(Activity.TEAM_1)) - self.humanTeamFundsAfterInitialEditingPhase) .. " oz of gold left", self:ScreenOfPlayer(player), 0, 1000, false);
161+
FrameMan:SetScreenText(self.goldNeeded - (math.ceil(self:GetTeamFunds(Activity.TEAM_1)) - self.humanTeamFundsAfterInitialEditingPhase) .. " oz of gold left", screen, 0, 1000, false);
161162
else
162-
FrameMan:SetScreenText("Dig up " .. self.goldDisplay .. " oz of gold!", self:ScreenOfPlayer(player), 333, 5000, true);
163+
FrameMan:SetScreenText("Dig up " .. self.goldDisplay .. " oz of gold!", screen, 333, 5000, true);
163164
end
164165

165166
-- The current player's team
@@ -179,8 +180,8 @@ function Harvester:UpdateActivity()
179180
if not MovableMan:IsActor(self:GetPlayerBrain(player)) then
180181
self:SetPlayerBrain(nil, player);
181182
self:ResetMessageTimer(player);
182-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
183-
FrameMan:SetScreenText("Your brain has been destroyed!", self:ScreenOfPlayer(player), 333, -1, false);
183+
FrameMan:ClearScreenText(screen);
184+
FrameMan:SetScreenText("Your brain has been destroyed!", screen, 333, -1, false);
184185
-- Now see if all brains of self player's team are dead, and if so, end the game
185186
if not MovableMan:GetFirstBrainActor(team) then
186187
self.WinnerTeam = self:OtherTeam(team);
@@ -191,8 +192,8 @@ function Harvester:UpdateActivity()
191192
--Check if the player has won.
192193
if self:GetTeamFunds(Activity.TEAM_1) - self.humanTeamFundsAfterInitialEditingPhase > self.goldNeeded then
193194
self:ResetMessageTimer(player);
194-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
195-
FrameMan:SetScreenText("You dug up all the gold!", self:ScreenOfPlayer(player), 333, -1, false);
195+
FrameMan:ClearScreenText(screen);
196+
FrameMan:SetScreenText("You dug up all the gold!", screen, 333, -1, false);
196197

197198
self.WinnerTeam = Activity.TEAM_1;
198199

Data/Base.rte/Activities/KeepieUppie.lua

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,14 @@ function KeepieUppie:UpdateActivity()
138138
if self.ActivityState ~= Activity.OVER and self.ActivityState ~= Activity.EDITING then
139139
for player = Activity.PLAYER_1, Activity.MAXPLAYERCOUNT - 1 do
140140
if self:PlayerActive(player) and self:PlayerHuman(player) then
141+
local screen = self:ScreenOfPlayer(player);
141142
--Display messages.
142143
self:ResetMessageTimer(player);
143-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
144+
FrameMan:ClearScreenText(screen);
144145
if self.startMessageTimer:IsPastSimMS(3000) then
145-
FrameMan:SetScreenText(math.floor(self.winTimer:LeftTillSimMS(self.timeLimit) / 1000) .. " seconds left", self:ScreenOfPlayer(player), 0, 1000, false);
146+
FrameMan:SetScreenText(math.floor(self.winTimer:LeftTillSimMS(self.timeLimit) / 1000) .. " seconds left", screen, 0, 1000, false);
146147
else
147-
FrameMan:SetScreenText("Keep the rocket alive for " .. self.timeDisplay .. "!", self:ScreenOfPlayer(player), 333, 5000, true);
148+
FrameMan:SetScreenText("Keep the rocket alive for " .. self.timeDisplay .. "!", screen, 333, 5000, true);
148149
end
149150

150151
-- The current player's team
@@ -153,8 +154,8 @@ function KeepieUppie:UpdateActivity()
153154
if not MovableMan:IsActor(self:GetPlayerBrain(player)) then
154155
self:SetPlayerBrain(nil, player);
155156
self:ResetMessageTimer(player);
156-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
157-
FrameMan:SetScreenText("Your rocket has been destroyed!", self:ScreenOfPlayer(player), 333, -1, false);
157+
FrameMan:ClearScreenText(screen);
158+
FrameMan:SetScreenText("Your rocket has been destroyed!", screen, 333, -1, false);
158159
-- Now see if all brains of self player's team are dead, and if so, end the game
159160
if not MovableMan:GetFirstBrainActor(team) then
160161
self.WinnerTeam = self:OtherTeam(team);
@@ -167,8 +168,8 @@ function KeepieUppie:UpdateActivity()
167168
--Check if the player has won.
168169
if self.winTimer:IsPastSimMS(self.timeLimit) then
169170
self:ResetMessageTimer(player);
170-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
171-
FrameMan:SetScreenText("You survived!", self:ScreenOfPlayer(player), 333, -1, false);
171+
FrameMan:ClearScreenText(screen);
172+
FrameMan:SetScreenText("You survived!", screen, 333, -1, false);
172173

173174
self.WinnerTeam = player;
174175

Data/Base.rte/Activities/Massacre.lua

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -147,15 +147,16 @@ function Massacre:UpdateActivity()
147147
end
148148
for player = Activity.PLAYER_1, Activity.MAXPLAYERCOUNT - 1 do
149149
if self:PlayerActive(player) and self:PlayerHuman(player) then
150+
local screen = self:ScreenOfPlayer(player);
150151
--Display messages.
151152
if self.startMessageTimer:IsPastSimMS(3000) then
152153
if self.killsNeeded - self:GetTeamDeathCount(Activity.TEAM_2) > 1 then
153-
FrameMan:SetScreenText(self.killsNeeded - self:GetTeamDeathCount(Activity.TEAM_2) .. " enemies left!", self:ScreenOfPlayer(player), 0, 1000, false);
154+
FrameMan:SetScreenText(self.killsNeeded - self:GetTeamDeathCount(Activity.TEAM_2) .. " enemies left!", screen, 0, 1000, false);
154155
else
155-
FrameMan:SetScreenText("1 enemy left!", self:ScreenOfPlayer(player), 0, 1000, false);
156+
FrameMan:SetScreenText("1 enemy left!", screen, 0, 1000, false);
156157
end
157158
else
158-
FrameMan:SetScreenText("Kill " .. self.killsDisplay .. " enemies!", self:ScreenOfPlayer(player), 333, 5000, true);
159+
FrameMan:SetScreenText("Kill " .. self.killsDisplay .. " enemies!", screen, 333, 5000, true);
159160
end
160161

161162
-- The current player's team
@@ -175,8 +176,8 @@ function Massacre:UpdateActivity()
175176
if not MovableMan:IsActor(self:GetPlayerBrain(player)) then
176177
self:SetPlayerBrain(nil, player);
177178
self:ResetMessageTimer(player);
178-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
179-
FrameMan:SetScreenText("Your brain has been destroyed!", self:ScreenOfPlayer(player), 333, -1, false);
179+
FrameMan:ClearScreenText(screen);
180+
FrameMan:SetScreenText("Your brain has been destroyed!", screen, 333, -1, false);
180181
-- Now see if all brains of self player's team are dead, and if so, end the game
181182
if not MovableMan:GetFirstBrainActor(team) then
182183
self.WinnerTeam = self:OtherTeam(team);
@@ -187,8 +188,8 @@ function Massacre:UpdateActivity()
187188
--Check if the player has won.
188189
if self:GetTeamDeathCount(Activity.TEAM_2) >= self.killsNeeded then
189190
self:ResetMessageTimer(player);
190-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
191-
FrameMan:SetScreenText("You killed all the attackers!", self:ScreenOfPlayer(player), 333, -1, false);
191+
FrameMan:ClearScreenText(screen);
192+
FrameMan:SetScreenText("You killed all the attackers!", screen, 333, -1, false);
192193

193194
self.WinnerTeam = Activity.TEAM_1;
194195

Data/Base.rte/Activities/MetaFight.lua

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -742,8 +742,9 @@ function MetaFight:UpdateActivity()
742742
local team = self:GetTeamOfPlayer(player);
743743
-- if (self.ActivityState == Activity.RUNNING) then
744744
if (SceneMan.Scene:IsScanScheduled(team)) then
745-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
746-
FrameMan:SetScreenText(scanMessage, self:ScreenOfPlayer(player), messageBlink, 8000, false);
745+
local screen = self:ScreenOfPlayer(player);
746+
FrameMan:ClearScreenText(screen);
747+
FrameMan:SetScreenText(scanMessage, screen, messageBlink, 8000, false);
747748
end
748749
end
749750
end
@@ -823,9 +824,10 @@ function MetaFight:UpdateActivity()
823824
self:SetObservationTarget(self:GetPlayerBrain(player).Pos, player);
824825
-- Clear the messages before starting the game
825826
self:ResetMessageTimer(player);
826-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
827+
local screen = self:ScreenOfPlayer(player);
828+
FrameMan:ClearScreenText(screen);
827829
-- Reset the screen occlusion if any players are still in menus
828-
CameraMan:SetScreenOcclusion(Vector(), self:ScreenOfPlayer(player));
830+
CameraMan:SetScreenOcclusion(Vector(), screen);
829831
end
830832
end
831833
end

Data/Base.rte/Activities/OneManArmy.lua

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -256,20 +256,21 @@ function OneManArmy:UpdateActivity()
256256
ActivityMan:GetActivity():SetTeamFunds(0, Activity.TEAM_1);
257257
for player = Activity.PLAYER_1, Activity.MAXPLAYERCOUNT - 1 do
258258
if self:PlayerActive(player) and self:PlayerHuman(player) then
259+
local screen = self:ScreenOfPlayer(player);
259260
--Display messages
260261
if self.startMessageTimer:IsPastSimMS(3000) then
261-
FrameMan:SetScreenText(math.floor(self.winTimer:LeftTillSimMS(self.timeLimit) * 0.001) .. " seconds left", self:ScreenOfPlayer(player), 0, 1000, false);
262+
FrameMan:SetScreenText(math.floor(self.winTimer:LeftTillSimMS(self.timeLimit) * 0.001) .. " seconds left", screen, 0, 1000, false);
262263
else
263-
FrameMan:SetScreenText("Survive for " .. self.timeDisplay .. "!", self:ScreenOfPlayer(player), 333, 5000, true);
264+
FrameMan:SetScreenText("Survive for " .. self.timeDisplay .. "!", screen, 333, 5000, true);
264265
end
265266

266267
local team = self:GetTeamOfPlayer(player);
267268
--Check if any player's brain is dead
268269
if not MovableMan:IsActor(self:GetPlayerBrain(player)) then
269270
self:SetPlayerBrain(nil, player);
270271
self:ResetMessageTimer(player);
271-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
272-
FrameMan:SetScreenText("Your brain has been destroyed!", self:ScreenOfPlayer(player), 333, -1, false);
272+
FrameMan:ClearScreenText(screen);
273+
FrameMan:SetScreenText("Your brain has been destroyed!", screen, 333, -1, false);
273274
--Now see if all brains of self player's team are dead, and if so, end the game
274275
if not MovableMan:GetFirstBrainActor(team) then
275276
self.WinnerTeam = self:OtherTeam(team);
@@ -280,8 +281,8 @@ function OneManArmy:UpdateActivity()
280281
--Check if the player has won
281282
if self.winTimer:IsPastSimMS(self.timeLimit) then
282283
self:ResetMessageTimer(player);
283-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
284-
FrameMan:SetScreenText("You survived!", self:ScreenOfPlayer(player), 333, -1, false);
284+
FrameMan:ClearScreenText(screen);
285+
FrameMan:SetScreenText("You survived!", screen, 333, -1, false);
285286

286287
self.WinnerTeam = team;
287288

Data/Base.rte/Activities/OneManArmyDiggers.lua

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -220,20 +220,21 @@ function OneManArmy:UpdateActivity()
220220
ActivityMan:GetActivity():SetTeamFunds(0, Activity.TEAM_1);
221221
for player = Activity.PLAYER_1, Activity.MAXPLAYERCOUNT - 1 do
222222
if self:PlayerActive(player) and self:PlayerHuman(player) then
223+
local screen = self:ScreenOfPlayer(player);
223224
--Display messages.
224225
if self.startMessageTimer:IsPastSimMS(3000) then
225-
FrameMan:SetScreenText(math.floor(self.winTimer:LeftTillSimMS(self.timeLimit) / 1000) .. " seconds left", self:ScreenOfPlayer(player), 0, 1000, false);
226+
FrameMan:SetScreenText(math.floor(self.winTimer:LeftTillSimMS(self.timeLimit) / 1000) .. " seconds left", screen, 0, 1000, false);
226227
else
227-
FrameMan:SetScreenText("Survive for " .. self.timeDisplay .. "!", self:ScreenOfPlayer(player), 333, 5000, true);
228+
FrameMan:SetScreenText("Survive for " .. self.timeDisplay .. "!", screen, 333, 5000, true);
228229
end
229230

230231
local team = self:GetTeamOfPlayer(player);
231232
-- Check if any player's brain is dead
232233
if not MovableMan:IsActor(self:GetPlayerBrain(player)) then
233234
self:SetPlayerBrain(nil, player);
234235
self:ResetMessageTimer(player);
235-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
236-
FrameMan:SetScreenText("Your brain has been destroyed!", self:ScreenOfPlayer(player), 333, -1, false);
236+
FrameMan:ClearScreenText(screen);
237+
FrameMan:SetScreenText("Your brain has been destroyed!", screen, 333, -1, false);
237238
-- Now see if all brains of self player's team are dead, and if so, end the game
238239
if not MovableMan:GetFirstBrainActor(team) then
239240
self.WinnerTeam = self:OtherTeam(team);
@@ -244,8 +245,8 @@ function OneManArmy:UpdateActivity()
244245
--Check if the player has won.
245246
if self.winTimer:IsPastSimMS(self.timeLimit) then
246247
self:ResetMessageTimer(player);
247-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
248-
FrameMan:SetScreenText("You survived!", self:ScreenOfPlayer(player), 333, -1, false);
248+
FrameMan:ClearScreenText(screen);
249+
FrameMan:SetScreenText("You survived!", screen, 333, -1, false);
249250

250251
self.WinnerTeam = team;
251252

Data/Base.rte/Activities/OneManArmyZeroG.lua

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -285,20 +285,21 @@ function OneManArmyZeroG:UpdateActivity()
285285
ActivityMan:GetActivity():SetTeamFunds(0, 0);
286286
for player = Activity.PLAYER_1, Activity.MAXPLAYERCOUNT - 1 do
287287
if self:PlayerActive(player) and self:PlayerHuman(player) then
288+
local screen = self:ScreenOfPlayer(player);
288289
--Display messages
289290
if self.startMessageTimer:IsPastSimMS(3000) then
290-
FrameMan:SetScreenText(math.floor(self.winTimer:LeftTillSimMS(self.timeLimit) * 0.001) .. " seconds left", self:ScreenOfPlayer(player), 0, 1000, false);
291+
FrameMan:SetScreenText(math.floor(self.winTimer:LeftTillSimMS(self.timeLimit) * 0.001) .. " seconds left", screen, 0, 1000, false);
291292
else
292-
FrameMan:SetScreenText("Survive for " .. self.timeDisplay .. "!", self:ScreenOfPlayer(player), 333, 5000, true);
293+
FrameMan:SetScreenText("Survive for " .. self.timeDisplay .. "!", screen, 333, 5000, true);
293294
end
294295

295296
local team = self:GetTeamOfPlayer(player);
296297
--Check if any player's brain is dead
297298
if not MovableMan:IsActor(self:GetPlayerBrain(player)) then
298299
self:SetPlayerBrain(nil, player);
299300
self:ResetMessageTimer(player);
300-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
301-
FrameMan:SetScreenText("Your brain has been destroyed!", self:ScreenOfPlayer(player), 333, -1, false);
301+
FrameMan:ClearScreenText(screen);
302+
FrameMan:SetScreenText("Your brain has been destroyed!", screen, 333, -1, false);
302303
--Now see if all brains of self player's team are dead, and if so, end the game
303304
if not MovableMan:GetFirstBrainActor(team) then
304305
self.WinnerTeam = self:OtherTeam(team);
@@ -309,8 +310,8 @@ function OneManArmyZeroG:UpdateActivity()
309310
--Check if the player has won
310311
if self.winTimer:IsPastSimMS(self.timeLimit) then
311312
self:ResetMessageTimer(player);
312-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
313-
FrameMan:SetScreenText("You survived!", self:ScreenOfPlayer(player), 333, -1, false);
313+
FrameMan:ClearScreenText(screen);
314+
FrameMan:SetScreenText("You survived!", screen, 333, -1, false);
314315

315316
self.WinnerTeam = player;
316317

Data/Base.rte/Activities/Prospecting.lua

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,9 @@ function Prospecting:UpdateActivity()
136136
-- The current player's team
137137
local team = self:GetTeamOfPlayer(player);
138138
if (self.ActivityState == Activity.STARTING) then
139-
FrameMan:ClearScreenText(self:ScreenOfPlayer(player));
140-
FrameMan:SetScreenText(scanMessage, self:ScreenOfPlayer(player), messageBlink, 8000, true);
139+
local screen = self:ScreenOfPlayer(player);
140+
FrameMan:ClearScreenText(screen);
141+
FrameMan:SetScreenText(scanMessage, screen, messageBlink, 8000, true);
141142
end
142143
end
143144
end

0 commit comments

Comments
 (0)