Skip to content

Commit

Permalink
Small features (#321)
Browse files Browse the repository at this point in the history
* Add artillery precision option

* Add artillery precision option (resolves #133)

* Revise paradrop: Drops below 150 => HALO (resolves #112)

* Add spaces for readability
  • Loading branch information
Kexanone authored Jun 15, 2018
1 parent 0dfe7f7 commit d3b4142
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,30 @@ if (!isPlayer _unit) then
moveOut _unit;
unassignVehicle _unit;
[_unit] orderGetIn false;
sleep 1;

// if the unit already has a chute
if (backpack _unit != "" and {getText (configfile >> "CfgVehicles" >> backpack _unit >> "backpackSimulation") isEqualTo "ParachuteSteerable"}) then
private _backpackClass = backpack _unit;
if (_backpackClass != "") then
{
private _container = backpackContainer _unit;
private _weapon_cargo = getWeaponCargo _container;
private _magazine_cargo = getMagazineCargo _container;
private _item_cargo = getItemCargo _container;

removeBackpack _unit;
waitUntil {sleep 1; !alive _unit || getPos _unit select 2 < 150};
private _chuteClass = ["b_parachute", _backpackClass] select (getText (configfile >> "CfgVehicles" >> _backpackClass >> "backpackSimulation") isEqualTo "ParachuteSteerable");
_unit addBackpack _chuteClass;
_unit action ["openParachute"];
_unit addBackpack _backpackClass;
_container = backpackContainer _unit;
{_container addWeaponCargo [_x, (_weapon_cargo select 1) select _forEachIndex]} forEach (_weapon_cargo select 0);
{_container addMagazineCargo [_x, (_magazine_cargo select 1) select _forEachIndex]} forEach (_magazine_cargo select 0);
{_container addItemCargo [_x, (_item_cargo select 1) select _forEachIndex]} forEach (_item_cargo select 0);
} else
{
private _chute = "Steerable_Parachute_F" createVehicle [0,0,0];
_chute setPos (getPos _unit);
_chute setDir (getDir _unit);
_chute setVelocity (velocity _unit);
_unit moveInDriver _chute;
waitUntil {sleep 1; !alive _unit || getPos _unit select 2 < 150};
_unit addBackpack "b_parachute";
_unit action ["openParachute"];
};
// prevent AI to be killed by fall damage
waitUntil {isTouchingGround _unit or (!alive _unit)};
Expand All @@ -61,6 +72,7 @@ if (!isPlayer _unit) then
private _weapon_cargo = getWeaponCargo _container;
private _magazine_cargo = getMagazineCargo _container;
private _item_cargo = getItemCargo _container;

removeBackpack _unit;
_unit addBackpack "b_parachute";
private _packHolder = createVehicle ["groundWeaponHolder", [0,0,0], [], 0, "can_collide"];
Expand Down
6 changes: 6 additions & 0 deletions @AresModAchillesExpansion/addons/language_f/stringtable.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2293,6 +2293,12 @@
<Japanese>距離</Japanese>
<Chinesesimp>距离</Chinesesimp>
</Key>
<Key ID="STR_AMAE_PRECISION">
<Original>Precision [m]</Original>
<English>Precision [m]</English>
<French>Précision [m]</French>
<German>Ungenauigkeit [m]</German>
</Key>
<Key ID="STR_AMAE_RANGE">
<Original>Range [m]</Original>
<English>Range [m]</English>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

#include "\achilles\modules_f_ares\module_header.hpp"

private ["_objects","_guns","_rounds","_ammo","_targetPos", "_artilleryAmmoDisplayName", "_ammoSelectedDisplayName"];
private ["_objects","_guns","_rounds","_ammo","_targetPos", "_artilleryAmmoDisplayName", "_ammoSelectedDisplayName", "_precision"];

_objects = nearestObjects [(_this select 0), ["All"], 150, true];

Expand Down Expand Up @@ -93,7 +93,8 @@ if (_mode == 0) then
[localize "STR_AMAE_NUMBER_OF_UNITS_INVOLVED", _numberOfGuns],
[localize "STR_AMAE_ROUNDS", "", "1"],
[localize "STR_AMAE_FS_AMMO", _artilleryAmmoDisplayName],
[format [localize "STR_AMAE_TARGET"," "], _targetChoices, 1]
[format [localize "STR_AMAE_TARGET"," "], _targetChoices, 1],
[localize "STR_AMAE_PRECISION", "", "0"]
]] call Ares_fnc_ShowChooseDialog;

if (_pickFireMissionResult isEqualTo []) exitWith {};
Expand All @@ -102,6 +103,7 @@ if (_mode == 0) then
_rounds = parseNumber (_pickFireMissionResult select 1);
_ammo = (_artilleryAmmo select (_pickFireMissionResult select 2));
_ammoSelectedDisplayName = (_artilleryAmmoDisplayName select (_pickFireMissionResult select 2));
_precision = parseNumber (_pickFireMissionResult select 4);

private _targetChooseAlgorithm = _pickFireMissionResult select 3;

Expand Down Expand Up @@ -142,7 +144,8 @@ if (_mode == 0) then
[localize "STR_AMAE_ROUNDS", "", "1"],
[localize "STR_AMAE_FS_AMMO", _artilleryAmmoDisplayName],
[localize "STR_AMAE_GRID_EAST_WEST_XXX", "","000"],
[localize "STR_AMAE_GRID_NORTH_SOUTH_XXX", "","000"]
[localize "STR_AMAE_GRID_NORTH_SOUTH_XXX", "","000"],
[localize "STR_AMAE_PRECISION", "", "0"]
]] call Ares_fnc_ShowChooseDialog;

if (_pickFireMissionResult isEqualTo []) exitWith {};
Expand All @@ -154,6 +157,7 @@ if (_mode == 0) then
private _targetX = _pickFireMissionResult select 3;
private _targetY = _pickFireMissionResult select 4;
_targetPos = [_targetX,_targetY] call CBA_fnc_mapGridToPos;
_precision = parseNumber (_pickFireMissionResult select 5);
};

if (isNil "_targetPos") exitWith {[localize "STR_AMAE_NO_TARGET_IN_RANGE"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"};
Expand All @@ -174,7 +178,9 @@ if (_roundEta == -1) exitWith { [localize "STR_AMAE_NO_TARGET_IN_RANGE"] call Ar

// Fire the guns
{
[_x, [_targetPos, _ammo, _rounds]] remoteExecCall ["commandArtilleryFire", _x];
private _theta = random 360;
private _deviation = [sin _theta, cos _theta, 0] vectorMultiply (random _precision);
[_x, [_targetPos vectorAdd _deviation, _ammo, _rounds]] remoteExecCall ["commandArtilleryFire", _x];
} forEach _gunsToFire;
[localize "STR_AMAE_FIRE_ROUNDS_AND_ETA", _rounds, _ammoSelectedDisplayName, _roundEta] call Ares_fnc_ShowZeusMessage;

Expand Down

0 comments on commit d3b4142

Please sign in to comment.