From 1c967e27979ee504ab9199c4e6aa0e7da8df3638 Mon Sep 17 00:00:00 2001 From: Spencer Shepard Date: Sun, 14 Jul 2024 20:55:08 -0700 Subject: [PATCH] Update RotorOpsPerks.lua --- scripts/RotorOpsPerks.lua | 87 +++++++++++++++++++++++---------------- 1 file changed, 51 insertions(+), 36 deletions(-) diff --git a/scripts/RotorOpsPerks.lua b/scripts/RotorOpsPerks.lua index ef49dd1..6003760 100644 --- a/scripts/RotorOpsPerks.lua +++ b/scripts/RotorOpsPerks.lua @@ -61,14 +61,23 @@ RotorOpsPerks.static_helicopter_types = { --mapping of player helicopters to th } ---- END OPTIONS ---- -local function log(msg) - env.info("ROTOROPS PERKS: " .. msg) +local function log(msg, log_type) + if type(msg) == 'table' then + msg = mist.utils.tableShow(msg) + end + if not msg then + msg = "nil" + end + if log_type == "error" then + env.error("ROTOROPS PERKS ERROR: " .. msg) + else + env.info("ROTOROPS PERKS: " .. msg) + end end local function debugMsg(msg) if RotorOpsPerks.debug then - log("ROTOROPS PERKS:") if msg then log(msg) end @@ -351,20 +360,14 @@ RotorOpsPerks.perks.player_fatcow["action_function"] = function(args) return end local dest_point = {x=args.target_point.x, z=args.target_point.z} - --RotorOpsPerks.teleportStatic('FAT COW FARP ' .. farp.index, dest_point) --axis mixed up RotorOpsPerks.teleportStatic('FAT COW FARP ' .. farp.index, {x=args.target_point.x, y=args.target_point.z}) local owner_player_name = Group.getByName(args.player_group_name):getUnit(1):getPlayerName() local monitored_unit = Group.getByName(args.player_group_name):getUnit(1) - local owner_group_name = args.player_group_name - log("FARP DEPLOYED AT: "..args.target_point.x..", "..args.target_point.z) - log("OWNER PLAYER: "..owner_player_name) - log("OWNER GROUP: "..owner_group_name) - log("MONITORED UNIT: "..monitored_unit:getName()) local request = { dest_point = dest_point, owner_player_name = owner_player_name, - owner_group_name = owner_group_name, - monitored_unit = monitored_unit,} + monitored_unit = monitored_unit, + immediate_deploy = true,} RotorOpsPerks.changeFarpState(farp.index, "requested", request) RotorOpsPerks.perks.player_fatcow.active[owner_player_name] = true farp = RotorOpsPerks.fat_cow_farps[farp.index] @@ -704,6 +707,12 @@ function RotorOpsPerks.monitorFarps() end end + if farp.expiration_time and timer.getTime() > farp.expiration_time then + log("Fat Cow FARP expired, despawning FARP!") + trigger.action.outText('Fat Cow FARP expired, despawning FARP!', 5) + despawn_farp = true + end + if despawn_farp then RotorOpsPerks.changeFarpState(farp.index, 'not_deployed', nil) end @@ -742,16 +751,11 @@ function RotorOpsPerks.buildFatCowFarpTable() fuel = fuel, fuel_p = fuel:getPosition().p, chinook = chinook, - owner_player_name = nil, - owner_original_group_name = nil, - expiration_time = nil, - available = true, - deployed = false, mark_id_base = 5550 + (i * 10), --arbitrary id for map drawing; allows 10 marks per FARP - deployed_p = nil, - monitored_unit = nil, - state = 'not_deployed', + state = 'uninitialized', + } + RotorOpsPerks.changeFarpState(i, 'not_deployed', nil) --initialize the farp i = i + 1 else farp_found = false @@ -770,14 +774,6 @@ function RotorOpsPerks.getFatCowFarp() return nil end -function RotorOpsPerks.returnFatCowFarp(farp_index, despawn) -- return the farp to the pool of available farps - local farp = RotorOpsPerks.fat_cow_farps[farp_index] - RotorOpsPerks.updateFarpAttribute(farp.index, 'available', true) - if despawn then - RotorOpsPerks.despawnFatCowFarp(farp.index) - end -end - function RotorOpsPerks.changeFarpState(farp_index, new_state, request) local farp = RotorOpsPerks.fat_cow_farps[farp_index] @@ -789,27 +785,31 @@ function RotorOpsPerks.changeFarpState(farp_index, new_state, request) return end + local next_state = nil + if new_state == 'requested' then --set the farp attributes if not request then - env.error("No request object provided for FARP state change") + log("No request object provided for FARP state change", "error") return end farp.deployed = false farp.available = false farp.deployed_p = request.dest_point farp.owner_player_name = request.owner_player_name - farp.owner_original_group_name = request.owner_original_group_name farp.monitored_unit = request.monitored_unit --log all vars log("FARP REQUESTED AT: "..request.dest_point.x..", "..request.dest_point.z) - log("OWNER PLAYER: "..request.owner_player_name) - log("OWNER GROUP: "..request.owner_group_name) + log("OWNER PLAYER NAME: "..request.owner_player_name) log("MONITORED UNIT: "..request.monitored_unit:getName()) - RotorOpsPerks.spawnFatCowFarp(farp.deployed_p.x, farp.deployed_p.z, farp.index, 15, "deployed_occupied") --what about AI farps? + if request.immediate_deploy then --for player fat cow farps + farp.expiration_time = timer.getTime() + 1800 + RotorOpsPerks.spawnFatCowFarp(farp.deployed_p.x, farp.deployed_p.z, farp.index, 15, "deployed_occupied") + end - elseif new_state == 'deploying' then + elseif new_state == 'deployed_ai' then farp.expiration_time = timer.getTime() + 1800 + RotorOpsPerks.spawnFatCowFarp(farp.deployed_p.x, farp.deployed_p.z, farp.index, 15, "deployed_empty") elseif new_state == 'deployed_occupied' then farp.deployed = true @@ -842,13 +842,13 @@ function RotorOpsPerks.changeFarpState(farp_index, new_state, request) elseif new_state == 'not_deployed' then --reset the farp - RotorOpsPerks.returnFatCowFarp(farp.index, true) + RotorOpsPerks.despawnFatCowFarp(farp.index) if old_state == 'deployed_static' then RotorOpsPerks.despawnStaticChinook(farp.index) elseif old_state == 'deployed_occupied' then RotorOpsPerks.perks.player_fatcow.active[farp.owner_player_name] = nil --what about the AI fatcow perk?? if farp.monitored_unit and farp.monitored_unit:getGroup() then - trigger.action.outTextForGroup(farp.monitored_unit:getGroup():getID(), "FARP despawned.", 10) + trigger.action.outTextForGroup(farp.monitored_unit:getGroup():getID(), "FAT COW FARP despawned.", 10) end end @@ -856,6 +856,8 @@ function RotorOpsPerks.changeFarpState(farp_index, new_state, request) farp.deployed_p = nil farp.owner_player_name = nil farp.monitored_unit = nil + farp.expiration_time = nil + farp.available = true end @@ -868,6 +870,10 @@ function RotorOpsPerks.changeFarpState(farp_index, new_state, request) farp.state = new_state RotorOpsPerks.fat_cow_farps[farp_index] = farp + + if next_state then + RotorOpsPerks.changeFarpState(farp_index, next_state, nil) + end end @@ -1033,7 +1039,16 @@ end function RotorOpsPerks.spawnAiChinook(dest_point, farp_index) --the AI Chinook with spawn and fly to the FARP - local farp =RotorOpsPerks.fat_cow_farps[farp_index] + local farp = RotorOpsPerks.fat_cow_farps[farp_index] + local request = { + dest_point = dest_point, + farp_index = farp_index, + monitored_unit = nil, + immediate_deploy = false, + owner_player_name = nil, + } + RotorOpsPerks.changeFarpState(farp_index, 'requested', request) + local index = farp_index local fatcow_name = 'FAT COW' local source_farp_name = 'FAT COW FARP ' .. index