fix drone and player fatcow perks

This commit is contained in:
spencershepard 2024-02-29 18:06:36 -08:00 committed by Spencer Shepard
parent 7b6e59cf87
commit 1298cd2eb9

View File

@ -15,7 +15,7 @@
RotorOpsPerks = {}
RotorOpsPerks.version = "1.5.4"
RotorOpsPerks.version = "1.5.6"
env.warning('ROTOROPS PERKS STARTED: '..RotorOpsPerks.version)
trigger.action.outText('ROTOROPS PERKS STARTED: '..RotorOpsPerks.version, 10)
RotorOpsPerks.perks = {}
@ -252,21 +252,16 @@ function RotorOpsPerks.spawnJtacDrone(dest_point, country, laser_code)
end
trigger.action.outText('JTAC DRONE IS ON STATION!', 10)
SetInvisible = {
id = 'SetInvisible',
params = {
value = true
}
}
--set a timer for one minute
timer.scheduleFunction(function()
Group.getByName(new_group.name):getController():setTask(SetInvisible)
local _code = table.remove(ctld.jtacGeneratedLaserCodes, 1)
log('Setting up JTAC DRONE ' .. new_group.name .. ' to lase targets on: '.._code)
Group.getByName(new_group.name):getController():setTask(orbit)
Group.getByName(new_group.name):getController():setOption(AI.Option.Air.id.REACTION_ON_THREAT, AI.Option.Air.val.REACTION_ON_THREAT.NO_REACTION)
local _code = table.remove(ctld.jtacGeneratedLaserCodes, 1)
ctld.JTACAutoLase(new_group.name, table.remove(ctld.jtacGeneratedLaserCodes, 1), true, "vehicle")
ctld.JTACAutoLase(new_group.name, laser_code, true, "vehicle")
table.insert(ctld.jtacGeneratedLaserCodes, _code)
end, nil, timer.getTime() + 60)
end
@ -301,7 +296,6 @@ end
RotorOpsPerks.perks.player_fatcow["action_condition"] = function(args)
local player_unit = Group.getByName(args.player_group_name):getUnit(1)
local agl_altitude = player_unit:getPosition().p.y - land.getHeight(player_unit:getPosition().p)
if RotorOpsPerks.perks.player_fatcow.active[args.player_group_name] then
return {msg="FARP already deployed at your position!", valid=false}
@ -311,8 +305,8 @@ RotorOpsPerks.perks.player_fatcow["action_condition"] = function(args)
return {msg="No FARP resources available!", valid=false}
end
if agl_altitude > 100 then
return {msg="You must be on the ground! "..agl_altitude.." AGL", valid=false}
if player_unit:inAir() then
return {msg="You must be on the ground!", valid=false}
end
--rearming/refueling doesn't work if enemies are nearby (within 1.1nm)
@ -359,8 +353,7 @@ RotorOpsPerks.perks.player_fatcow["monitor_player"] = function(args)
if Group.getByName(args.player_group_name) then
local player_unit = Group.getByName(args.player_group_name):getUnit(1)
local agl_altitude = player_unit:getPosition().p.y - land.getHeight(player_unit:getPosition().p)
if agl_altitude > 100 or not player_unit:isExist() then
if player_unit:inAir() or not player_unit:isExist() then
despawn_farp = true
log("Player is no longer on the ground, despawning FARP!")
end
@ -649,11 +642,11 @@ function RotorOpsPerks.addRadioMenuForGroup(groupName)
if perk.enabled and avail_for_side and avail_for_group then
if perk.at_mark then
--addPerkCommand(groupId, groupName, perk, menu_root, {target='mark'})
missionCommands.addCommandForGroup(groupId, perk.display_name .. ' at mark (' .. perk.perk_name ..')', menu_root , RotorOpsPerks.requestPerk, {player_group_name=groupName, perk_name=perk.perk_name, target='mark'})
missionCommands.addCommandForGroup(groupId, perk.cost .. ':' .. perk.display_name .. ' at mark (' .. perk.perk_name ..')', menu_root , RotorOpsPerks.requestPerk, {player_group_name=groupName, perk_name=perk.perk_name, target='mark'})
end
if perk.at_position then
--addPerkCommand(groupId, groupName, perk, menu_root, {target='position'})
missionCommands.addCommandForGroup(groupId, perk.display_name .. ' on me', menu_root , RotorOpsPerks.requestPerk, {player_group_name=groupName, perk_name=perk.perk_name, target='position'})
missionCommands.addCommandForGroup(groupId, perk.cost .. ':' .. perk.display_name .. ' on me', menu_root , RotorOpsPerks.requestPerk, {player_group_name=groupName, perk_name=perk.perk_name, target='position'})
end
end
end
@ -1042,6 +1035,8 @@ function RotorOpsPerks.requestPerk(args)
perk.last_used = timer.getTime()
perk.used = perk.used or 0 + 1
log('Player ' .. args.player_unit_name .. ' requested ' .. args.perk_name .. ' at ' .. args.target)
--increment player used for perk type, and initialize if it doesn't exist.
local perk_user_per_player = 1/(#players or 1)
--round perk_user_per_player to one decimal place