Skip to content

Commit

Permalink
Level progression fixes and formatting
Browse files Browse the repository at this point in the history
`vehiclemanager` addition fixes the vehicle events by capping to 4, required `elementareatrigger` fixes area event triggers by capping to 4 players required.
  • Loading branch information
web-flow committed Oct 21, 2016
1 parent fa87b11 commit 66a0524
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 5 deletions.
15 changes: 15 additions & 0 deletions biglobby/lua/lib/managers/_vehiclemanager.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
-- Levels that trigger events that depend on all players inside become a problem with >4 players
-- This caps the `total_players` variable to 4. The vehicle events are triggered by a listener
-- fired by `VehicleManager:on_player_entered_vehicle(vehicle_unit, player)`
-- Only change to this function is the 2nd line added to do the cap.
function VehicleManager:all_players_in_vehicles()
local total_players = managers.network:session():amount_of_alive_players()
total_players = total_players > 4 and 4 or total_players

local players_in_vehicles = 0
for _, vehicle in pairs(self._vehicles) do
players_in_vehicles = players_in_vehicles + vehicle:vehicle_driving():num_players_inside()
end

return total_players == players_in_vehicles
end
20 changes: 20 additions & 0 deletions biglobby/lua/lib/managers/mission/_elementareatrigger.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
-- Store original functions from the ones we modify
local orig_ElementAreaTrigger = {
project_amount_all = ElementAreaTrigger.project_amount_all
}


-- Capping the value to 4 for `criminals`/`local_criminals` instigators to avoid
-- some event comparisons that fail above expected max value of 4.
-- Start of Framing Frame Day 2 where everyone needs to be in the train is said to be affected
function ElementAreaTrigger:project_amount_all()
local i = orig_ElementAreaTrigger.project_amount_all(self)

-- Ensure i is no higher than 4 for these instigators (May also want to include `ai_teammates`?)
-- This value for these instigators includes both Peers and AI criminals
if self._values.instigator == "criminals" or self._values.instigator == "local_criminals" then
i = i > 4 and 4 or i
end

return i
end
17 changes: 12 additions & 5 deletions biglobby/lua/lib/managers/mission/_elementfilter.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,26 @@
local orig__ElementFilter = {}
orig__ElementFilter._check_players = ElementFilter._check_players


-- This function must be modified to allow for proper objective activation with greater than 4 players
function ElementFilter:_check_players()

-- Original Code --




-- Original Code --
local players = Global.running_simulation and managers.editor:mission_player()
players = players or managers.network:session() and managers.network:session():amount_of_players()
if not players then
return false
end
-- End Original Code --
-- End Original Code --




-- Check for >4 players for objective activation fixing
if self._values.player_4 and players >= 4 then
-- Check for >4 players for objective activation fixing
if self._values.player_4 and players >= 4 then
return true
end

Expand Down
8 changes: 8 additions & 0 deletions biglobby/mod.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@
"hook_id": "lib/managers/mission/elementfilter",
"script_path": "lua/lib/managers/mission/_elementfilter.lua"
},
{
"hook_id": "lib/managers/mission/elementareatrigger",
"script_path": "lua/lib/managers/mission/_elementareatrigger.lua"
},
{
"hook_id": "lib/managers/achievmentmanager",
"script_path": "lua/lib/managers/_achievementmanager.lua"
Expand All @@ -77,6 +81,10 @@
"hook_id": "lib/managers/hudmanagerpd2",
"script_path": "lua/lib/managers/_hudmanagerpd2.lua"
},
{
"hook_id": "lib/managers/vehiclemanager",
"script_path": "lua/lib/managers/_vehiclemanager.lua"
},
{
"hook_id": "lib/network/base/handlers/connectionnetworkhandler",
"script_path": "lua/lib/network/base/handlers/_connectionnetworkhandler.lua"
Expand Down

0 comments on commit 66a0524

Please sign in to comment.