diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ecf4918..dec7f62 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,5 +1,4 @@ name: CI - on: pull_request: types: @@ -16,6 +15,7 @@ jobs: echo The PR was merged deploy: + needs: [pre-build] runs-on: ubuntu-latest # windows-latest | macos-latest name: Deploy to updater if files changed steps: diff --git a/.github/workflows/pre.yml b/.github/workflows/pre.yml new file mode 100644 index 0000000..61a6476 --- /dev/null +++ b/.github/workflows/pre.yml @@ -0,0 +1,37 @@ +name: pre-build +on: [push, pull_request] +jobs: + lua-linter: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: luacheck-linter + id: luacheck-linter + uses: lunarmodules/luacheck@v1 + continue-on-error: true + with: + args: . --no-global --no-unused --no-redefined --no-unused-args --no-max-line-length --ignore 611 612 613 614; echo "lua-lint-result=$?" >> $GITHUB_OUTPUT + - name: Check lua errors + run: | + echo "luacheck exit code was ${{ steps.luacheck-linter.outputs.lua-lint-result }}" + if [ ${{ steps.luacheck-linter.outputs.lua-lint-result }} -eq 1 ]; then echo "Luacheck found warnings but no errors. Allowed to continue."; exit 0; fi; exit 1 + py-linter: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.10" ] + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r Generator/requirements.txt + pip install pylint + - name: Analysing the code with pylint + run: | + pylint --disable=R,C $(git ls-files '*.py') \ No newline at end of file diff --git a/Generator/version.py b/Generator/version.py index 2df480d..8def3a2 100644 --- a/Generator/version.py +++ b/Generator/version.py @@ -1,7 +1,7 @@ # ROTOROPS VERSION maj_version = 1 minor_version = 4 -patch_version = 4 +patch_version = 5 version_url = 'https://dcs-helicopters.com/app-updates/versioncheck.yaml' diff --git a/scripts/RotorOps.lua b/scripts/RotorOps.lua index 30d138a..6678a89 100644 --- a/scripts/RotorOps.lua +++ b/scripts/RotorOps.lua @@ -1,5 +1,5 @@ RotorOps = {} -RotorOps.version = "1.3.4" +RotorOps.version = "1.3.5" local debug = false @@ -106,6 +106,10 @@ local zone_defenders_flags = { 'ROPS_B_DEFENDERS', 'ROPS_C_DEFENDERS', 'ROPS_D_DEFENDERS', + 'ROPS_E_DEFENDERS', + 'ROPS_F_DEFENDERS', + 'ROPS_G_DEFENDERS', + 'ROPS_H_DEFENDERS', } RotorOps.farp_names = {} @@ -117,6 +121,10 @@ RotorOps.gameMsgs = { {'ALL GROUND UNITS, PUSH TO BRAVO!', 'push_bravo.ogg'}, {'ALL GROUND UNITS, PUSH TO CHARLIE!', 'push_charlie.ogg'}, {'ALL GROUND UNITS, PUSH TO DELTA!', 'push_delta.ogg'}, + {'ALL GROUND UNITS, PUSH TO ECHO!', 'push_next_zone.ogg'}, + {'ALL GROUND UNITS, PUSH TO FOXTROT!', 'push_next_zone.ogg'}, + {'ALL GROUND UNITS, PUSH TO GOLF!', 'push_next_zone.ogg'}, + {'ALL GROUND UNITS, PUSH TO HOTEL!', 'push_next_zone.ogg'}, }, cleared = { {'ZONE CLEARED!', 'cleared_active.ogg'}, @@ -124,6 +132,10 @@ RotorOps.gameMsgs = { {'BRAVO CLEARED!', 'cleared_bravo.ogg'}, {'CHARLIE CLEARED!', 'cleared_charlie.ogg'}, {'DELTA CLEARED!', 'cleared_delta.ogg'}, + {'ECHO CLEARED!', 'cleared_active.ogg'}, + {'FOXTROT CLEARED!', 'cleared_active.ogg'}, + {'GOLF CLEARED!', 'cleared_active.ogg'}, + {'HOTEL CLEARED!', 'cleared_active.ogg'}, }, success = { {'GROUND MISSION SUCCESS!', 'mission_success.ogg'}, @@ -137,6 +149,10 @@ RotorOps.gameMsgs = { {'TROOPS DROPPED INTO BRAVO!', 'troops_dropped_bravo.ogg'}, {'TROOPS DROPPED INTO CHARLIE!', 'troops_dropped_charlie.ogg'}, {'TROOPS DROPPED INTO DELTA!', 'troops_dropped_delta.ogg'}, + {'TROOPS DROPPED INTO ECHO!', 'troops_dropped_active.ogg'}, + {'TROOPS DROPPED INTO FOXTROT!', 'troops_dropped_active.ogg'}, + {'TROOPS DROPPED INTO GOLF!', 'troops_dropped_active.ogg'}, + {'TROOPS DROPPED INTO HOTEL!', 'troops_dropped_active.ogg'}, }, get_troops_to_zone = { {'GET OUR TROOPS TO THE NEXT ZONE!', 'get_troops_next_zone.ogg'}, @@ -144,6 +160,10 @@ RotorOps.gameMsgs = { {'GET OUR TROOPS TO BRAVO!', 'get_troops_bravo.ogg'}, {'GET OUR TROOPS TO CHARLIE!', 'get_troops_charlie.ogg'}, {'GET OUR TROOPS TO DELTA!', 'get_troops_delta.ogg'}, + {'GET OUR TROOPS TO ECHO!', 'get_troops_next_zone.ogg'}, + {'GET OUR TROOPS TO FOXTROT!', 'get_troops_next_zone.ogg'}, + {'GET OUR TROOPS TO GOLF!', 'get_troops_next_zone.ogg'}, + {'GET OUR TROOPS TO HOTEL!', 'get_troops_next_zone.ogg'}, }, jtac = { {'JTAC DROPPED!', 'jtac_dropped.ogg'}, @@ -164,6 +184,10 @@ RotorOps.gameMsgs = { {'ENEMY PUSHING TO BRAVO!', 'enemy_pushing_bravo.ogg'}, {'ENEMY PUSHING TO CHARLIE!', 'enemy_pushing_charlie.ogg'}, {'ENEMY PUSHING TO DELTA!', 'enemy_pushing_delta.ogg'}, + {'ENEMY PUSHING TO ECHO!', 'enemy_pushing_zone.ogg'}, + {'ENEMY PUSHING TO FOXTROT!', 'enemy_pushing_zone.ogg'}, + {'ENEMY PUSHING TO GOLF!', 'enemy_pushing_zone.ogg'}, + {'ENEMY PUSHING TO HOTEL!', 'enemy_pushing_zone.ogg'}, }, start_defense = { {'SUPPORT THE WAR ON THE GROUND! PUSH BACK AGAINST THE ENEMY!', 'push_back.ogg'}, @@ -183,6 +207,10 @@ RotorOps.gameMsgs = { {'ENEMY TOOK BRAVO!', 'enemy_destroying_us.ogg'}, {'ENEMY TOOK CHARLIE!', 'enemy_destroying_us.ogg'}, {'ENEMY TOOK DELTA!', 'enemy_destroying_us.ogg'}, + {'ENEMY TOOK ECHO!', 'enemy_destroying_us.ogg'}, + {'ENEMY TOOK FOXTROT!', 'enemy_destroying_us.ogg'}, + {'ENEMY TOOK GOLF!', 'enemy_destroying_us.ogg'}, + {'ENEMY TOOK HOTEL!', 'enemy_destroying_us.ogg'}, }, attack_helos = { {'ENEMY ATTACK HELICOPTERS INBOUND!', 'enemy_attack_choppers.ogg'}, @@ -210,6 +238,10 @@ RotorOps.gameMsgs = { {'NEW FARP AT BRAVO!', 'forward_base_established.ogg'}, {'NEW FARP AT CHARLIE!', 'forward_base_established.ogg'}, {'NEW FARP AT DELTA!', 'forward_base_established.ogg'}, + {'NEW FARP AT ECHO!', 'forward_base_established.ogg'}, + {'NEW FARP AT FOXTROT!', 'forward_base_established.ogg'}, + {'NEW FARP AT GOLF!', 'forward_base_established.ogg'}, + {'NEW FARP AT HOTEL!', 'forward_base_established.ogg'}, }, transp_helos_toff = { {'ENEMY TRANSPORT HELICOPTERS INBOUND!', 'enemy_chopper_inbound.ogg'}, @@ -1227,7 +1259,7 @@ function RotorOps.assessUnitsInZone(var) else trigger.action.setUserFlag(defenders_status_flag, defenders_remaining_percent) --set the zones flag to indicate the status of remaining defenders - trigger.action.setUserFlag(zone_defenders_flags[RotorOps.active_zone_index], defenders_remaining_percent) + trigger.action.setUserFlag(zone_defenders_flags[RotorOps.active_zone_index], defenders_remaining_percent) end --are all zones clear? @@ -1579,6 +1611,10 @@ function RotorOps.setupCTLD() ctld.pickupZones[#ctld.pickupZones + 1] = { "BRAVO_FARP", RotorOps.pickup_zone_smoke, -1, "no", 0 } ctld.pickupZones[#ctld.pickupZones + 1] = { "CHARLIE_FARP", RotorOps.pickup_zone_smoke, -1, "no", 0 } ctld.pickupZones[#ctld.pickupZones + 1] = { "DELTA_FARP", RotorOps.pickup_zone_smoke, -1, "no", 0 } + ctld.pickupZones[#ctld.pickupZones + 1] = { "ECHO_FARP", RotorOps.pickup_zone_smoke, -1, "no", 0 } + ctld.pickupZones[#ctld.pickupZones + 1] = { "FOXTROT_FARP", RotorOps.pickup_zone_smoke, -1, "no", 0 } + ctld.pickupZones[#ctld.pickupZones + 1] = { "GOLF_FARP", RotorOps.pickup_zone_smoke, -1, "no", 0 } + ctld.pickupZones[#ctld.pickupZones + 1] = { "HOTEL_FARP", RotorOps.pickup_zone_smoke, -1, "no", 0 } ctld.pickupZones[#ctld.pickupZones + 1] = { "HELO_CARRIER", "none", -1, "yes", 0 } ctld.pickupZones[#ctld.pickupZones + 1] = { "HELO_CARRIER_1", "none", -1, "yes", 0 } ctld.pickupZones[#ctld.pickupZones + 1] = { "troops1", RotorOps.pickup_zone_smoke, -1, "yes", 0 } @@ -1617,6 +1653,11 @@ function RotorOps.addZone(_name, _zone_defenders_flag) trigger.action.setUserFlag(zone_defenders_flags[2], 101) trigger.action.setUserFlag(zone_defenders_flags[3], 101) trigger.action.setUserFlag(zone_defenders_flags[4], 101) + trigger.action.setUserFlag(zone_defenders_flags[5], 101) + trigger.action.setUserFlag(zone_defenders_flags[6], 101) + trigger.action.setUserFlag(zone_defenders_flags[7], 101) + trigger.action.setUserFlag(zone_defenders_flags[8], 101) + RotorOps.drawZones() local farp_name = _name .. "_FARP" RotorOps.farp_names[#RotorOps.farp_names + 1] = farp_name diff --git a/scripts/RotorOpsPerks.lua b/scripts/RotorOpsPerks.lua index 518caa2..3bc9bf7 100644 --- a/scripts/RotorOpsPerks.lua +++ b/scripts/RotorOpsPerks.lua @@ -1103,7 +1103,7 @@ function handle:onEvent(e) env.warning('KILL: initiator is not a unit') return end - if e.initiator:getCoalition() ~= e.target:getCoalition() then + if e.initiator:getCoalition() and e.initiator:getCoalition() ~= e.target:getCoalition() then debugMsg('KILL: initiator groupname: ' .. e.initiator:getGroup():getName()) local initiator_group_name = e.initiator:getGroup():getName()