Merge remote-tracking branch 'upstream/master'

This commit is contained in:
lambdatiger
2024-08-15 19:06:47 -05:00
398 changed files with 6426 additions and 3490 deletions

View File

@ -24,22 +24,6 @@ if (!hasInterface) exitWith {};
// Register Perframe Handler
[LINKFUNC(handleFirePFH), GVAR(simulationInterval)] call CBA_fnc_addPerFrameHandler;
//Add warnings for missing compat PBOs (only if AB is on)
{
_x params ["_modPBO", "_compatPBO"];
if ([_modPBO] call EFUNC(common,isModLoaded) && {!([_compatPBO] call EFUNC(common,isModLoaded))}) then {
WARNING_2("Weapon Mod [%1] missing ace compat pbo [%2] (from @ace\optionals)",_modPBO,_compatPBO);
};
} forEach [
["RH_acc","ace_compat_rh_acc"],
["RH_de_cfg","ace_compat_rh_de"],
["RH_m4_cfg","ace_compat_rh_m4"],
["RH_PDW","ace_compat_rh_pdw"],
["RKSL_PMII","ace_compat_rksl_pm_ii"],
["iansky_opt","ace_compat_sma3_iansky"],
["R3F_Armes","ace_compat_r3f"]
];
}] call CBA_fnc_addEventHandler;
#ifdef DEBUG_MODE_FULL

View File

@ -5,7 +5,9 @@ private _category = format ["ACE %1", localize LSTRING(DisplayName)];
[LSTRING(enabled_DisplayName), LSTRING(enabled_Description)],
_category,
false,
1
1,
{[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
] call CBA_fnc_addSetting;
[
@ -45,5 +47,7 @@ private _category = format ["ACE %1", localize LSTRING(DisplayName)];
[LSTRING(simulationInterval_DisplayName), LSTRING(simulationInterval_Description)],
_category,
[0, 0.2, 0.05, 2],
1
1,
{[QGVAR(simulationInterval), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
] call CBA_fnc_addSetting;

View File

@ -78,6 +78,7 @@ PREP(removeStat);
PREP(removeVirtualItems);
PREP(renameDefaultLoadout);
PREP(replaceUniqueItemsLoadout);
PREP(saveLoadout);
PREP(scanConfig);
PREP(showItem);
PREP(sortPanel);

View File

@ -85,10 +85,10 @@ private _insigniaCondition = toString {
// Ref fnc_addListBoxItem, 0/nil = configFile, 1 = campaignConfigFile, 2 = missionConfigFile
{
GVAR(insigniaCache) set [_x, 1];
GVAR(insigniaCache) set [configName _x, 1];
} forEach (_insigniaCondition configClasses (campaignConfigFile >> "CfgUnitInsignia"));
{
GVAR(insigniaCache) set [_x, 2];
GVAR(insigniaCache) set [configName _x, 2];
} forEach (_insigniaCondition configClasses (missionConfigFile >> "CfgUnitInsignia"));
ADDON = true;

View File

@ -0,0 +1,37 @@
#include "..\script_component.hpp"
/*
* Author: DartRuffian
* Saves a given loadout to the client's profile.
*
* Arguments:
* 0: Name of loadout <STRING>
* 1: CBA extended loadout or getUnitLoadout array <ARRAY>
* 2: Replace existing loadout <BOOL> (default: false)
*
* Return Value:
* True if loadout was saved, otherwise false <BOOL>
*
* Example:
* ["Current Loadout", getUnitLoadout ACE_player] call ace_arsenal_fnc_saveLoadout
*
* Public: Yes
*/
params [["_name", "", [""]], ["_loadout", [], [[]]], ["_replaceExisting", false, [false]]];
if (_name == "" || {_loadout isEqualTo []}) exitWith { false };
private _loadouts = profileNamespace getVariable [QGVAR(saved_loadouts), []];
private _loadoutIndex = _loadouts findIf {(_x#0) == _name};
// If a loadout with same name already exists and no overwriting enabled, quit
if (!_replaceExisting && {_loadoutIndex != -1}) exitWith { false };
if (_loadoutIndex == -1) then {
_loadouts pushBack [_name, _loadout];
} else {
_loadouts set [_loadoutIndex, [_name, _loadout]];
};
profileNamespace setVariable [QGVAR(saved_loadouts), _loadouts];
true

View File

@ -6,7 +6,7 @@ class CfgPatches {
units[] = {"ACE_Item_ATragMX"};
weapons[] = {"ACE_ATragMX"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_Advanced_Ballistics", "ACE_common", "ACE_weather"};
requiredAddons[] = {"ace_advanced_ballistics", "ace_common", "ace_weather"};
author = ECSTRING(common,ACETeam);
authors[] = {"Ruthberg"};
url = ECSTRING(main,URL);

View File

@ -50,8 +50,8 @@ if (_unit == _attachToVehicle) then { //Self Attachment
} else {
GVAR(placeAction) = PLACE_WAITING;
[_unit, "forceWalk", "ACE_Attach", true] call EFUNC(common,statusEffect_set);
[_unit, "blockThrow", "ACE_Attach", true] call EFUNC(common,statusEffect_set);
[_unit, "forceWalk", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
[_unit, "blockThrow", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
[{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call CBA_fnc_execNextFrame;
_unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = PLACE_APPROVE;}] call EFUNC(common,AddActionEventHandler)];
@ -88,8 +88,8 @@ if (_unit == _attachToVehicle) then { //Self Attachment
{!([_attachToVehicle, _unit, _itemClassname] call FUNC(canAttach))}) then {
[_idPFH] call CBA_fnc_removePerFrameHandler;
[_unit, "forceWalk", "ACE_Attach", false] call EFUNC(common,statusEffect_set);
[_unit, "blockThrow", "ACE_Attach", false] call EFUNC(common,statusEffect_set);
[_unit, "forceWalk", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
[_unit, "blockThrow", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
[] call EFUNC(interaction,hideMouseHint);
[_unit, "DefaultAction", (_unit getVariable [QGVAR(placeActionEH), -1])] call EFUNC(common,removeActionEventHandler);
_unit removeAction _actionID;

View File

@ -40,12 +40,12 @@ if (_respawn > 3) then {
if (_unit getVariable [QGVAR(isHandcuffed), false]) then {
[_unit, false] call FUNC(setHandcuffed);
};
[_unit, "setCaptive", QGVAR(Handcuffed), false] call EFUNC(common,statusEffect_set);
[_unit, "setCaptive", QGVAR(handcuffed), false] call EFUNC(common,statusEffect_set);
if (_unit getVariable [QGVAR(isSurrendering), false]) then {
[_unit, false] call FUNC(setSurrendered);
};
[_unit, "setCaptive", QGVAR(Surrendered), false] call EFUNC(common,statusEffect_set);
[_unit, "setCaptive", QGVAR(surrendered), false] call EFUNC(common,statusEffect_set);
if (_unit getVariable [QGVAR(isEscorting), false]) then {
_unit setVariable [QGVAR(isEscorting), false, true];

View File

@ -41,8 +41,8 @@ if ((_unit getVariable [QGVAR(isHandcuffed), false]) isEqualTo _state) exitWith
if (_state) then {
_unit setVariable [QGVAR(isHandcuffed), true, true];
[_unit, "setCaptive", QGVAR(Handcuffed), true] call EFUNC(common,statusEffect_set);
[_unit, "blockRadio", QGVAR(Handcuffed), true] call EFUNC(common,statusEffect_set);
[_unit, "setCaptive", QGVAR(handcuffed), true] call EFUNC(common,statusEffect_set);
[_unit, "blockRadio", QGVAR(handcuffed), true] call EFUNC(common,statusEffect_set);
if (_unit getVariable [QGVAR(isSurrendering), false]) then { //If surrendering, stop
[_unit, false] call FUNC(setSurrendered);
@ -82,8 +82,8 @@ if (_state) then {
}, [_unit], 0.01] call CBA_fnc_waitAndExecute;
} else {
_unit setVariable [QGVAR(isHandcuffed), false, true];
[_unit, "setCaptive", QGVAR(Handcuffed), false] call EFUNC(common,statusEffect_set);
[_unit, "blockRadio", QGVAR(Handcuffed), false] call EFUNC(common,statusEffect_set);
[_unit, "setCaptive", QGVAR(handcuffed), false] call EFUNC(common,statusEffect_set);
[_unit, "blockRadio", QGVAR(handcuffed), false] call EFUNC(common,statusEffect_set);
//remove AnimChanged EH
private _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];

View File

@ -44,8 +44,8 @@ if (_state) then {
_unit setVariable [QGVAR(isSurrendering), true, true];
[_unit, "setCaptive", QGVAR(Surrendered), true] call EFUNC(common,statusEffect_set);
[_unit, "blockRadio", QGVAR(Surrendered), true] call EFUNC(common,statusEffect_set);
[_unit, "setCaptive", QGVAR(surrendered), true] call EFUNC(common,statusEffect_set);
[_unit, "blockRadio", QGVAR(surrendered), true] call EFUNC(common,statusEffect_set);
if (_unit == ACE_player) then {
["captive", [false, false, false, false, false, false, false, false, false, true]] call EFUNC(common,showHud);
@ -71,8 +71,8 @@ if (_state) then {
}, [_unit], 0.01] call CBA_fnc_waitAndExecute;
} else {
_unit setVariable [QGVAR(isSurrendering), false, true];
[_unit, "setCaptive", QGVAR(Surrendered), false] call EFUNC(common,statusEffect_set);
[_unit, "blockRadio", QGVAR(Surrendered), false] call EFUNC(common,statusEffect_set);
[_unit, "setCaptive", QGVAR(surrendered), false] call EFUNC(common,statusEffect_set);
[_unit, "blockRadio", QGVAR(surrendered), false] call EFUNC(common,statusEffect_set);
//remove AnimChanged EH
private _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];

View File

@ -158,6 +158,7 @@
<Japanese>目隠しを外す</Japanese>
<Russian>Снять повязку с глаз</Russian>
<Spanish>Quitar vendas de los ojos</Spanish>
<Portuguese>Remover a venda</Portuguese>
</Key>
<Key ID="STR_ACE_Captives_CableTie">
<English>Cable Tie</English>

View File

@ -62,6 +62,17 @@ if (_item isEqualType objNull) then {
// Some objects below water will take damage over time, eventually becoming "water logged" and unfixable (because of negative z attach)
[_item, "blockDamage", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
// Prevent UAVs from firing
private _UAVCrew = _item call EFUNC(common,getVehicleUAVCrew);
if (_UAVCrew isNotEqualTo []) then {
{
[_x, true] call EFUNC(common,disableAiUAV);
} forEach _UAVCrew;
_item setVariable [QGVAR(isUAV), _UAVCrew, true];
};
};
// Invoke listenable event

View File

@ -100,14 +100,26 @@ if (_item isEqualType objNull) then {
// Create smoke effect when crate landed
[{
(_this select 0) params ["_object"];
params ["_object", "_pfhID"];
if (isNull _object) exitWith {
[_this select 1] call CBA_fnc_removePerFrameHandler;
_pfhID call CBA_fnc_removePerFrameHandler;
};
if (getPos _object select 2 < 1) exitWith {
[_this select 1] call CBA_fnc_removePerFrameHandler;
_pfhID call CBA_fnc_removePerFrameHandler;
// Reenable UAV crew
private _UAVCrew = _object getVariable [QGVAR(isUAV), []];
if (_UAVCrew isNotEqualTo []) then {
// Reenable AI
{
[_x, false] call EFUNC(common,disableAiUAV);
} forEach _UAVCrew;
_object setVariable [QGVAR(isUAV), nil, true];
};
if ((GVAR(disableParadropEffectsClasstypes) findIf {_object isKindOf _x}) == -1) then {
private _smoke = "SmokeshellYellow" createVehicle [0, 0, 0];

View File

@ -96,6 +96,18 @@ if (_object isEqualType objNull) then {
[QEGVAR(zeus,addObjects), [[_object], _objectCurators]] call CBA_fnc_serverEvent;
};
// Reenable UAV crew
private _UAVCrew = _object getVariable [QGVAR(isUAV), []];
if (_UAVCrew isNotEqualTo []) then {
// Reenable AI
{
[_x, false] call EFUNC(common,disableAiUAV);
} forEach _UAVCrew;
_object setVariable [QGVAR(isUAV), nil, true];
};
} else {
_object = createVehicle [_item, _emptyPosAGL, [], 0, "NONE"];

View File

@ -3,6 +3,7 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {"ACE_Box_Chemlights","ACE_Item_Chemlight_Shield","ACE_Item_Chemlight_Shield_Green","ACE_Item_Chemlight_Shield_Red","ACE_Item_Chemlight_Shield_Blue","ACE_Item_Chemlight_Shield_Yellow","ACE_Item_Chemlight_Shield_Orange","ACE_Item_Chemlight_Shield_White","ModuleChemlightOrange","ModuleChemlightWhite","ModuleChemlightHiRed","ModuleChemlightHiYellow","ModuleChemlightHiWhite","ModuleChemlightHiBlue","ModuleChemlightHiGreen","ModuleChemlightUltraHiOrange"};
weapons[] = {"ACE_Chemlight_Shield", "ACE_Chemlight_Shield_Green","ACE_Chemlight_Shield_Red","ACE_Chemlight_Shield_Blue","ACE_Chemlight_Shield_Yellow","ACE_Chemlight_Shield_Orange","ACE_Chemlight_Shield_White"};
requiredVersion = REQUIRED_VERSION;

View File

@ -1,4 +1,5 @@
#define COMPONENT chemlights
#define COMPONENT_BEAUTIFIED Chemlights
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL

View File

@ -43,6 +43,7 @@ PREP(deviceKeyFindValidIndex);
PREP(deviceKeyRegisterNew);
PREP(deprecateComponent);
PREP(disableAI);
PREP(disableAiUAV);
PREP(disableUserInput);
PREP(displayIcon);
PREP(displayText);
@ -177,6 +178,7 @@ PREP(setupLocalUnitsHandler);
PREP(setVariableJIP);
PREP(setVariablePublic);
PREP(setVolume);
PREP(setWeaponLightLaserState);
PREP(showHud);
PREP(statusEffect_addType);
PREP(statusEffect_get);
@ -189,6 +191,7 @@ PREP(stopGesture);
PREP(stringCompare);
PREP(stringToColoredText);
PREP(swayLoop);
PREP(switchAttachmentMode);
PREP(switchPersistentLaser);
PREP(switchToGroupSide);
PREP(throttledPublicVariable);

View File

@ -19,16 +19,16 @@
//Status Effect EHs:
[QGVAR(setStatusEffect), LINKFUNC(statusEffect_set)] call CBA_fnc_addEventHandler;
["forceWalk", false, ["ace_advanced_fatigue", "ACE_SwitchUnits", "ACE_Attach", "ace_dragging", "ACE_Explosives", "ACE_Ladder", "ACE_Sandbag", "ACE_refuel", "ACE_rearm", "ACE_Trenches", "ace_medical_fracture"]] call FUNC(statusEffect_addType);
["blockSprint", false, ["ace_advanced_fatigue", "ace_dragging", "ace_medical_fracture"]] call FUNC(statusEffect_addType);
["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered)]] call FUNC(statusEffect_addType);
["blockDamage", false, ["fixCollision", "ACE_cargo"]] call FUNC(statusEffect_addType);
["blockEngine", false, ["ACE_Refuel"]] call FUNC(statusEffect_addType);
["blockThrow", false, ["ACE_Attach", "ACE_concertina_wire", "ace_dragging", "ACE_Explosives", "ACE_Ladder", "ACE_rearm", "ACE_refuel", "ACE_Sandbag", "ACE_Trenches", "ACE_tripod"]] call FUNC(statusEffect_addType);
["forceWalk", false, ["ace_advanced_fatigue", "ace_attach", "ace_dragging", "ace_explosives", QEGVAR(medical,fracture), "ace_rearm", "ace_refuel", "ace_sandbag", "ace_switchunits", "ace_tacticalladder", "ace_trenches"]] call FUNC(statusEffect_addType);
["blockSprint", false, ["ace_advanced_fatigue", "ace_dragging", QEGVAR(medical,fracture)]] call FUNC(statusEffect_addType);
["setCaptive", true, [QEGVAR(captives,handcuffed), QEGVAR(captives,surrendered)]] call FUNC(statusEffect_addType);
["blockDamage", false, ["fixCollision", "ace_cargo"]] call FUNC(statusEffect_addType);
["blockEngine", false, ["ace_refuel"]] call FUNC(statusEffect_addType);
["blockThrow", false, ["ace_attach", "ace_concertina_wire", "ace_dragging", "ace_explosives", "ace_rearm", "ace_refuel", "ace_sandbag", "ace_tacticalladder", "ace_trenches", "ace_tripod"]] call FUNC(statusEffect_addType);
["setHidden", true, ["ace_unconscious"]] call FUNC(statusEffect_addType);
["blockRadio", false, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), "ace_unconscious"]] call FUNC(statusEffect_addType);
["blockRadio", false, [QEGVAR(captives,handcuffed), QEGVAR(captives,surrendered), "ace_unconscious"]] call FUNC(statusEffect_addType);
["blockSpeaking", false, ["ace_unconscious"]] call FUNC(statusEffect_addType);
["disableWeaponAssembly", false, ["ace_common", "ace_common_lockVehicle", "ace_csw"]] call FUNC(statusEffect_addType);
["disableWeaponAssembly", false, ["ace_common", QGVAR(lockVehicle), "ace_csw"]] call FUNC(statusEffect_addType);
["lockInventory", true, [], true] call FUNC(statusEffect_addType);
[QGVAR(forceWalk), {
@ -133,6 +133,30 @@
_object lockInventory (_set > 0);
}] call CBA_fnc_addEventHandler;
[QGVAR(disableAiUAV), {
params ["_unit", "_disable"];
if (_disable) then {
private _features = ["AUTOTARGET", "TARGET", "WEAPONAIM"/*, "FIREWEAPON"*/, "RADIOPROTOCOL"]; // TODO: Uncomment in 2.18
// Save current status
_unit setVariable [QGVAR(featuresAiUAV), _features apply {[_x, _unit checkAIFeature _x]}];
{
_unit enableAIFeature [_x, false];
} forEach _features;
} else {
// Restore previous status
private _features = _unit getVariable [QGVAR(featuresAiUAV), []];
{
_unit enableAIFeature [_x select 0, _x select 1];
} forEach _features;
_unit setVariable [QGVAR(featuresAiUAV), nil];
};
}] call CBA_fnc_addEventHandler;
//Add a fix for BIS's zeus remoteControl module not reseting variables on DC when RC a unit
//This variable is used for isPlayer checks
if (isServer) then {
@ -192,6 +216,7 @@ if (isServer) then {
[QGVAR(setVectorDirAndUp), {(_this select 0) setVectorDirAndUp (_this select 1)}] call CBA_fnc_addEventHandler;
[QGVAR(addWeaponItem), {(_this select 0) addWeaponItem [(_this select 1), (_this select 2)]}] call CBA_fnc_addEventHandler;
[QGVAR(removeMagazinesTurret), {(_this select 0) removeMagazinesTurret [_this select 1, _this select 2]}] call CBA_fnc_addEventHandler;
[QGVAR(triggerAmmo), {triggerAmmo _this}] call CBA_fnc_addEventHandler;
[QGVAR(setVanillaHitPointDamage), {
params ["_object", "_hitPointAnddamage"];

View File

@ -12,6 +12,8 @@ GVAR(showHudHash) = createHashMap;
GVAR(vehicleIconCache) = createHashMap; // for getVehicleIcon
GVAR(wheelSelections) = createHashMap;
GVAR(InteractionConditions) = createHashMap;
GVAR(blockItemReplacement) = false;
// Cache for FUNC(isModLoaded)

View File

@ -15,3 +15,25 @@ uiNamespace setVariable [QGVAR(addonCache), createHashMap];
// Cache for FUNC(getConfigName)
uiNamespace setVariable [QGVAR(configNames), createHashMap];
//Add warnings for missing compat PBOs
GVAR(isModLoadedCache) = createHashMap;
{
_x params ["_modPBO", "_compatPBO"];
if ([_modPBO] call FUNC(isModLoaded) && {!([_compatPBO] call FUNC(isModLoaded))}) then {
WARNING_2("Weapon Mod [%1] missing ace compat pbo [%2]",_modPBO,_compatPBO);
};
} forEach [
["CUP_Creatures_People_LoadOrder","ace_compat_cup_units"],
["CUP_Vehicles_LoadOrder","ace_compat_cup_vehicles"],
["CUP_Weapons_LoadOrder","ace_compat_cup_weapons"],
["r3f_armes_c","ace_compat_r3f"],
["RF_Data_Loadorder","ace_compat_rf"],
["RH_acc","ace_compat_rh_acc"],
["RH_de_cfg","ace_compat_rh_de"],
["RH_m4_cfg","ace_compat_rh_m4"],
["RH_PDW","ace_compat_rh_pdw"],
["RKSL_PMII","ace_compat_rksl_pm_ii"],
["iansky_opt","ace_compat_sma3_iansky"],
["R3F_Armes","ace_compat_r3f"]
];

View File

@ -19,17 +19,4 @@
params ["_conditionName", "_conditionFunc"];
_conditionName = toLowerANSI _conditionName;
private _conditions = missionNamespace getVariable [QGVAR(InteractionConditions), [[],[]]];
_conditions params ["_conditionNames", "_conditionFuncs"];
private _index = _conditionNames find _conditionName;
if (_index == -1) then {
_index = count _conditionNames;
};
_conditionNames set [_index, _conditionName];
_conditionFuncs set [_index, _conditionFunc];
GVAR(InteractionConditions) = _conditions;
GVAR(InteractionConditions) set [_conditionName, _conditionFunc];

View File

@ -27,15 +27,11 @@ private _owner = _target getVariable [QGVAR(owner), objNull];
if (!isNull _owner && {_unit != _owner}) exitWith {false};
// check general conditions
private _conditions = missionNamespace getVariable [QGVAR(InteractionConditions), [[],[]]];
_conditions params ["_conditionNames", "_conditionFuncs"];
private _canInteract = true;
{
if (!(_x in _exceptions) && {!([_unit, _target] call (_conditionFuncs select _forEachIndex))}) exitWith {
if (!(_x in _exceptions) && {!([_unit, _target] call _y)}) exitWith {
_canInteract = false;
};
} forEach _conditionNames;
} forEach GVAR(InteractionConditions);
_canInteract

View File

@ -0,0 +1,45 @@
#include "..\script_component.hpp"
/*
* Author: johnb43
* Disables/Enables UAV AI crew members, can be run on any machine and is applied globally.
*
* Arguments:
* 0: Unit <OBJECT>
* 1: Disable AI <BOOL>
*
* Return Value:
* None
*
* Example:
* [cursorObject, true] call ace_common_fnc_disableAiUAV
*
* Public: No
*/
params [["_unit", objNull, [objNull]], ["_disable", true, [false]]];
// Allow disabling of Zeus remote controlled units
if (!alive _unit || {isPlayer _unit} || {!unitIsUAV _unit}) exitWith {};
if (_disable) then {
// Ignore if already disabled
if (!isNil "_jipID") exitWith {};
// Disable shooting and targeting on every machine
// Give predefined JIP ID, in case of simultaneous executions on different machines
private _jipID = [QGVAR(disableAiUAV), [_unit, _disable], QGVAR(disableAiUAV_) + hashValue _unit] call CBA_fnc_globalEventJIP;
[_jipID, _unit] call CBA_fnc_removeGlobalEventJIP;
_unit setVariable [QGVAR(disableAiUavJipID), _jipID, true];
} else {
// Restore shooting and targeting to each client's individual state prior to disabling
private _jipID = _unit getVariable QGVAR(disableAiUavJipID);
if (isNil "_jipID") exitWith {};
_jipID call CBA_fnc_removeGlobalEventJIP;
_unit setVariable [QGVAR(disableAiUavJipID), nil, true];
[QGVAR(disableAiUAV), [_unit, _disable]] call CBA_fnc_globalEvent;
};

View File

@ -1,34 +1,45 @@
#include "..\script_component.hpp"
/*
* Author: commy2
* Author: commy2, johnb43
* Get the available firing modes of a weapon. Will ignore the AI helper modes.
*
* Arguments:
* 0: Weapon <STRING>
* 1: Muzzle <STRING> (default: weapon)
*
* Return Value:
* Firing Modes <ARRAY>
*
* Example:
* ["gun"] call ace_common_fnc_getWeaponModes
* "arifle_AK12_F" call ace_common_fnc_getWeaponModes
*
* Public: Yes
*/
params [["_weapon", "", [""]]];
params [["_weapon", "", [""]], ["_muzzle", nil, [""]]];
private _config = configFile >> "CfgWeapons" >> _weapon;
if (!isNil "_muzzle") then {
_config = _config >> _muzzle
};
if (!isClass _config) exitWith {
[] // return
};
private _modes = [];
{
if (getNumber (_config >> _x >> "showToPlayer") == 1) then {
_modes pushBack _x;
};
if (_x == "this") then {
_modes pushBack _weapon;
if (_x == "this") then {
_modes pushBack (configName _config);
} else {
if (isClass (_config >> _x)) then {
_modes pushBack (configName (_config >> _x));
};
};
};
} forEach getArray (_config >> "modes");
_modes
_modes // return

View File

@ -1,6 +1,6 @@
#include "..\script_component.hpp"
/*
* Author: commy2
* Author: commy2, johnb43
* Get the muzzles of a weapon.
*
* Arguments:
@ -10,19 +10,30 @@
* All weapon muzzles <ARRAY>
*
* Example:
* ["gun"] call ace_common_fnc_getWeaponMuzzles
* "arifle_AK12_F" call ace_common_fnc_getWeaponMuzzles
*
* Public: Yes
*/
params [["_weapon", "", [""]]];
private _muzzles = getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles");
private _config = configFile >> "CfgWeapons" >> _weapon;
if (!isClass _config) exitWith {
[] // return
};
private _muzzles = [];
// Get config case muzzle names
{
if (_x == "this") then {
_muzzles set [_forEachIndex, configName (configFile >> "CfgWeapons" >> _weapon)];
_muzzles pushBack (configName _config);
} else {
if (isClass (_config >> _x)) then {
_muzzles pushBack (configName (_config >> _x));
};
};
} forEach _muzzles;
} forEach getArray (_config >> "muzzles");
_muzzles
_muzzles // return

View File

@ -18,16 +18,4 @@
params ["_conditionName"];
_conditionName = toLowerANSI _conditionName;
private _conditions = missionNamespace getVariable [QGVAR(InteractionConditions), [[],[]]];
_conditions params ["_conditionNames", "_conditionFuncs"];
private _index = _conditionNames find _conditionName;
if (_index == -1) exitWith {};
_conditionNames deleteAt _index;
_conditionFuncs deleteAt _index;
GVAR(InteractionConditions) = _conditions;
GVAR(InteractionConditions) deleteAt _conditionName;

View File

@ -0,0 +1,59 @@
#include "..\script_component.hpp"
/*
* Author: johnb43
* Toggles the unit's current weapon's light & laser.
* API for persistent lasers. Doesn't work on AI, as they have their own logic.
*
* Arguments:
* 0: Unit <OBJECT>
* 1: Weapon light/laser state <BOOL> (default: false)
*
* Return Value:
* None
*
* Example:
* [player, true] call ace_common_fnc_setWeaponLightLaserState
*
* Public: Yes
*/
params [["_unit", objNull, [objNull]], ["_state", false, [false]]];
if (!local _unit || {!alive _unit} || {!(_unit call FUNC(isPlayer))}) exitWith {};
if !(_unit call CBA_fnc_canUseWeapon) exitWith {};
private _currentWeapon = currentWeapon _unit;
// Exit if unit has no weapon selected
if (_currentWeapon == "") exitWith {};
private _weaponIndex = [_unit, _currentWeapon] call FUNC(getWeaponIndex);
// Ignore binoculars
if (_weaponIndex == -1) exitWith {};
_unit setVariable [QGVAR(laserEnabled_) + str _weaponIndex, _state];
// Turn off light/laser (switching between weapons can leave previous weapon laser on)
action ["GunLightOff", _unit];
action ["IRLaserOff", _unit];
// Light/laser is off, don't need to do anything more
if (!_state) exitWith {};
// Turn laser on next frame (if weapon hasn't changed)
[{
params ["_unit", "_currentWeapon"];
private _weaponState = (weaponState _unit) select [0, 3];
if (_weaponState select 0 != _currentWeapon) exitWith {};
action ["GunLightOn", _unit];
action ["IRLaserOn", _unit];
_unit selectWeapon _weaponState;
}, [_unit, _currentWeapon]] call CBA_fnc_execNextFrame;
nil

View File

@ -0,0 +1,73 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Switch attachment from one mode to another - based on CBA_accessory_fnc_switchAttachment
* ToDo: Port this to CBA?
*
* Arguments:
* 0: Unit <OBJECT>
* 1: Weapon (String or CBA-Weapon-Index (not ace's getWeaponIndex)) <STRING|NUMBER>
* 2: From <STRING>
* 3: To <STRING>
*
* Return Value:
* None
*
* Example:
* [player, 0, "ACE_DBAL_A3_Green_VP", "ACE_DBAL_A3_Green"] call ace_common_fnc_switchAttachmentMode
*
* Public: No
*/
params ["_unit", "_weapon", "_currItem", "_switchItem"];
TRACE_4("switchAttachmentMode",_unit,_weapon,_currItem,_switchItem);
if (_weapon isEqualTo "") exitWith {};
private _exit = _unit != ACE_player;
switch (_weapon) do {
case 0;
case (primaryWeapon _unit): {
private _currWeaponType = 0;
_unit removePrimaryWeaponItem _currItem;
[{
params ["_unit", "", "_switchItem"];
_unit addPrimaryWeaponItem _switchItem;
["CBA_attachmentSwitched", _this] call CBA_fnc_localEvent;
}, [_unit, _currItem, _switchItem, _currWeaponType]] call CBA_fnc_execNextFrame;
};
case 1;
case (handgunWeapon _unit): {
private _currWeaponType = 1;
_unit removeHandgunItem _currItem;
[{
params ["_unit", "", "_switchItem"];
_unit addHandgunItem _switchItem;
["CBA_attachmentSwitched", _this] call CBA_fnc_localEvent;
}, [_unit, _currItem, _switchItem, _currWeaponType]] call CBA_fnc_execNextFrame;
};
case 2;
case (secondaryWeapon _unit): {
private _currWeaponType = 2;
_unit removeSecondaryWeaponItem _currItem;
[{
params ["_unit", "", "_switchItem"];
_unit addSecondaryWeaponItem _switchItem;
["CBA_attachmentSwitched", _this] call CBA_fnc_localEvent;
}, [_unit, _currItem, _switchItem, _currWeaponType]] call CBA_fnc_execNextFrame;
};
default {
ERROR_1("bad weapon - %1",_this);
_exit = true;
};
};
if (_exit) exitWith {}; // Don't notify if the unit isn't the local player or if an invalid weapon was passed
private _configSwitchItem = configfile >> "CfgWeapons" >> _switchItem;
private _switchItemHintText = getText (_configSwitchItem >> "MRT_SwitchItemHintText");
private _switchItemHintImage = getText (_configSwitchItem >> "picture");
playSound "click";
if (_switchItemHintText != "") then {
[[_switchItemHintImage, 2.0], [_switchItemHintText], true] call CBA_fnc_notify;
};

View File

@ -1,6 +1,6 @@
#include "..\script_component.hpp"
/*
* Author: Dystopian
* Author: Dystopian, johnb43
* Controls persistent laser state.
*
* Arguments:
@ -17,51 +17,87 @@
params ["_enabled"];
if (!hasInterface) exitwith {};
// Reset state
{
ACE_player setVariable [QGVAR(laserEnabled_) + str _x, nil];
} forEach [0, 1, 2];
if (!_enabled) exitWith {
if (isNil QGVAR(laserKeyDownEH)) exitWith {};
["KeyDown", GVAR(laserKeyDownEH)] call CBA_fnc_removeDisplayHandler;
removeUserActionEventHandler ["headlights", "Activate", GVAR(laserKeyDownEH)];
["loadout", GVAR(laserLoadoutEH)] call CBA_fnc_removePlayerEventHandler;
["turret", GVAR(laserTurretEH)] call CBA_fnc_removePlayerEventHandler;
["vehicle", GVAR(laserVehicleEH)] call CBA_fnc_removePlayerEventHandler;
["weapon", GVAR(laserWeaponEH)] call CBA_fnc_removePlayerEventHandler;
GVAR(laserKeyDownEH) = nil;
GVAR(laserLoadoutEH) = nil;
GVAR(laserTurretEH) = nil;
GVAR(laserVehicleEH) = nil;
GVAR(laserWeaponEH) = nil;
};
GVAR(laserKeyDownEH) = ["KeyDown", {
if !((_this select 1) in actionKeys "headlights") exitWith {false};
private _weapon = currentWeapon ACE_player;
[
{
params ["_weapon", "_laserWasEnabled"];
private _laserEnabled = ACE_player isIRLaserOn _weapon || {ACE_player isFlashlightOn _weapon};
if (_laserEnabled && {_laserWasEnabled} || {!_laserEnabled && {!_laserWasEnabled}}) exitWith {};
private _weaponIndex = [ACE_player, _weapon] call FUNC(getWeaponIndex);
ACE_player setVariable [QGVAR(laserEnabled_) + str _weaponIndex, [nil, true] select _laserEnabled];
},
[_weapon, ACE_player isIRLaserOn _weapon || {ACE_player isFlashlightOn _weapon}]
] call CBA_fnc_execNextFrame;
false
}] call CBA_fnc_addDisplayHandler;
private _fnc_getLightLaserState = {
private _currentWeapon = currentWeapon ACE_player;
private _laserEH = {
if (sunOrMoon == 1) exitWith {};
params ["_player"];
private _weaponIndex = [_player, currentWeapon _player] call FUNC(getWeaponIndex);
if (
!(_player getVariable [QGVAR(laserEnabled_) + str _weaponIndex, false])
|| {_weaponIndex > 0 && {"" != primaryWeapon _player}} // Arma switches to primary weapon if exists
|| {!(_player call CBA_fnc_canUseWeapon)} // ignore in vehicle except FFV
) exitWith {};
[
// wait for weapon in "ready to fire" direction
{0.01 > getCameraViewDirection _this vectorDistance (_this weaponDirection currentWeapon _this)},
{{_this action [_x, _this]} forEach ["GunLightOn", "IRLaserOn"]},
_player,
3,
{{_this action [_x, _this]} forEach ["GunLightOn", "IRLaserOn"]}
] call CBA_fnc_waitUntilAndExecute;
if (_currentWeapon == "") exitWith {};
// Ignore in vehicle except FFV
if !(ACE_player call CBA_fnc_canUseWeapon) exitWith {};
private _weaponIndex = [ACE_player, _currentWeapon] call FUNC(getWeaponIndex);
if (_weaponIndex == -1) exitWith {};
// Light/laser state only changes in the next frame
// However, as by default changing attachment modes is CTRL + L, the vanilla EH triggers when lights are bound to L (even despite CBA intercepting keystroke)
// Therefore, add an extra frame of delay, after which the previous laser state will have been restored
[{
ACE_player setVariable [
QGVAR(laserEnabled_) + str (_this select 1),
ACE_player isIRLaserOn (_this select 0) || {ACE_player isFlashlightOn (_this select 0)}
];
}, [_currentWeapon, _weaponIndex], 2] call CBA_fnc_execAfterNFrames;
};
GVAR(laserLoadoutEH) = ["loadout", _laserEH] call CBA_fnc_addPlayerEventHandler;
GVAR(laserTurretEH) = ["turret", _laserEH] call CBA_fnc_addPlayerEventHandler;
GVAR(laserVehicleEH) = ["vehicle", _laserEH] call CBA_fnc_addPlayerEventHandler;
GVAR(laserWeaponEH) = ["weapon", _laserEH] call CBA_fnc_addPlayerEventHandler;
// Get current weapon light/laser state
call _fnc_getLightLaserState;
// Update state every time it's changed
GVAR(laserKeyDownEH) = addUserActionEventHandler ["headlights", "Activate", _fnc_getLightLaserState];
// Dropping weapons, as well as switching light/laser attachments turns off lights/lasers
GVAR(lastWeapons) = (getUnitLoadout ACE_player) select [0, 3];
// Monitor weapon addition/removal here
GVAR(laserLoadoutEH) = ["loadout", {
params ["_unit", "_loadout"];
private _weapons = _loadout select [0, 3];
if (_weapons isEqualTo GVAR(lastWeapons)) exitWith {};
GVAR(lastWeapons) = _weapons;
[
_unit,
_unit getVariable [QGVAR(laserEnabled_) + str ([_unit, currentWeapon _unit] call FUNC(getWeaponIndex)), false]
] call FUNC(setWeaponLightLaserState);
}] call CBA_fnc_addPlayerEventHandler;
private _fnc_switchPersistentLaserEH = {
params ["_unit"];
[
_unit,
_unit getVariable [QGVAR(laserEnabled_) + str ([_unit, currentWeapon _unit] call FUNC(getWeaponIndex)), false]
] call FUNC(setWeaponLightLaserState);
};
GVAR(laserTurretEH) = ["turret", _fnc_switchPersistentLaserEH] call CBA_fnc_addPlayerEventHandler;
GVAR(laserVehicleEH) = ["vehicle", _fnc_switchPersistentLaserEH] call CBA_fnc_addPlayerEventHandler;
GVAR(laserWeaponEH) = ["weapon", _fnc_switchPersistentLaserEH] call CBA_fnc_addPlayerEventHandler;

View File

@ -0,0 +1 @@
z\ace\addons\compat_aegis

View File

@ -0,0 +1,82 @@
class CfgVehicles {
class Tank;
class Tank_F: Tank {
class Turrets {
class MainTurret;
};
};
class MBT_01_base_F: Tank_F {
class Turrets: Turrets {
class MainTurret: MainTurret {
// Overwrite the changes Aegis makes for the .338 coax MG on the Slammer/Merkava
// The idea is:
// 1) keep it as realistic as possible
// 2) easier to overwrite something with skipWhenMissingDependencies than to not overwrite something if another mod is loaded
weapons[] = {"cannon_120mm", "ACE_LMG_coax_MAG58_mem3"}; // Base 1.82: "cannon_120mm","LMG_coax"
magazines[] = {
"24Rnd_120mm_APFSDS_shells_Tracer_Red",
"12Rnd_120mm_HE_shells_Tracer_Red",
"12Rnd_120mm_HEAT_MP_T_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"4Rnd_120mm_LG_cannon_missiles" // Aegis adds laser-guided munitions
};
};
};
};
class B_MBT_01_base_F: MBT_01_base_F {};
class B_MBT_01_cannon_F: B_MBT_01_base_F {};
class B_MBT_01_TUSK_F: B_MBT_01_cannon_F {
class Turrets: Turrets {
class MainTurret: MainTurret {
weapons[] = {"cannon_120mm", "ACE_LMG_coax_MAG58_mem3"}; // Base 1.82: "cannon_120mm","LMG_coax"
magazines[] = {
"24Rnd_120mm_APFSDS_shells_Tracer_Red",
"12Rnd_120mm_HE_shells_Tracer_Red",
"12Rnd_120mm_HEAT_MP_T_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"200Rnd_762x51_Belt_Red",
"4Rnd_120mm_LG_cannon_missiles" // Aegis adds laser-guided munitions
};
};
};
};
};

View File

@ -0,0 +1,18 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_vehicles", "A3_Aegis_Armor_F_Aegis_MBT_01"};
skipWhenMissingDependencies = 1;
author = ECSTRING(common,ACETeam);
authors[] = {"johnb43"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgVehicles.hpp"

View File

@ -0,0 +1,5 @@
#define COMPONENT compat_aegis
#define COMPONENT_BEAUTIFIED Aegis Compatibility
#include "\z\ace\addons\main\script_mod.hpp"
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -1,15 +1,15 @@
class CfgMagazines {
class US85_Magazine;
class US85_ATMine_mag: US85_Magazine {
EGVAR(explosives,SetupObject) = "ACE_Explosives_Place_US85_ATMine_mag";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_US85_ATMine_mag";
useAction = 0;
};
class US85_M14Mine_mag: US85_Magazine {
EGVAR(explosives,SetupObject) = "ACE_Explosives_Place_US85_M14Mine";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_US85_M14Mine";
useAction = 0;
};
class US85_SatchelCharge_Mag: US85_Magazine {
EGVAR(explosives,SetupObject) = "ACE_Explosives_Place_US85_SatchelCharge_Mag";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_US85_SatchelCharge_Mag";
useAction = 0;
};
};

View File

@ -65,7 +65,7 @@ class CfgVehicles {
class ace_csw {
enabled = 1;
proxyWeapon = "CUP_proxy_DSHKM";
magazineLocation = "_target selectionPosition 'magazine'";
magazineLocation = "_target selectionPosition 'otocvez'";
disassembleWeapon = "CUP_DSHKM_carry";
disassembleTurret = "ace_csw_kordTripod";
desiredAmmo = 100;
@ -119,7 +119,7 @@ class CfgVehicles {
class ace_csw {
enabled = 1;
proxyWeapon = "CUP_proxy_MK19";
magazineLocation = "_target selectionPosition 'magazine'";
magazineLocation = "_target selectionPosition 'otochlaven'";
disassembleWeapon = "CUP_MK19_carry";
disassembleTurret = "ace_csw_m3TripodLow";
desiredAmmo = 48;
@ -165,7 +165,7 @@ class CfgVehicles {
class ace_csw {
enabled = 1;
proxyWeapon = "CUP_proxy_SPG9";
magazineLocation = "_target selectionPosition 'otochlaven'";
magazineLocation = "_target selectionPosition 'handle'";
disassembleWeapon = "CUP_SPG9_carry";
disassembleTurret = "ace_csw_spg9Tripod";
desiredAmmo = 1;

View File

@ -9,6 +9,7 @@
<German>[CSW] AGS30 Gurt</German>
<Spanish>[CSW] Cinta de AGS30</Spanish>
<Italian>[CSW] Nastro AGS30</Italian>
<Portuguese>[CSW] Cinto de AGS30</Portuguese>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_MK19_displayName">
<English>[CSW] MK19 Belt</English>
@ -18,6 +19,7 @@
<German>[CSW] MK19 Gurt</German>
<Spanish>[CSW] Cinta de MK19</Spanish>
<Italian>[CSW] Nastro MK19</Italian>
<Portuguese>[CSW] Cinto de MK19</Portuguese>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_TOW_displayName">
<English>[CSW] TOW Tube</English>
@ -27,6 +29,7 @@
<German>[CSW] TOW Rohr</German>
<Spanish>[CSW] Tubo de TOW</Spanish>
<Italian>[CSW] Tubo TOW</Italian>
<Portuguese>[CSW] Tubo de TOW</Portuguese>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_TOW2_displayName">
<English>[CSW] TOW2 Tube</English>
@ -36,6 +39,7 @@
<German>[CSW] TOW2 Rohr</German>
<Spanish>[CSW] Tubo de TOW2</Spanish>
<Italian>[CSW] Tubo TOW2</Italian>
<Portuguese>[CSW] Tubo de TOW2</Portuguese>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_PG9_displayName">
<English>[CSW] PG-9 Round</English>
@ -45,6 +49,7 @@
<German>[CSW] PG-9 Rakete</German>
<Spanish>[CSW] Carga de PG-9</Spanish>
<Italian>[CSW] Razzo PG-9</Italian>
<Portuguese>[CSW] Cartucho PG-9</Portuguese>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_OG9_displayName">
<English>[CSW] OG-9 Round</English>
@ -54,6 +59,7 @@
<German>[CSW] OG-9 Rakete</German>
<Spanish>[CSW] Carga de OG-9</Spanish>
<Italian>[CSW] Razzo OG-9</Italian>
<Portuguese>[CSW] Cartucho OG-9</Portuguese>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M1HE_displayName">
<English>[CSW] M1 HE</English>
@ -74,6 +80,7 @@
<German>[CSW] M84 Rauch</German>
<Spanish>[CSW] Humo M84</Spanish>
<Italian>[CSW] M84 Fumogeno</Italian>
<Portuguese>[CSW] M84 Fumígeno</Portuguese>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M60A2_displayName">
<English>[CSW] M60A2 WP</English>

View File

@ -4,18 +4,18 @@ class CfgAmmo {
hit = 3000;
indirectHit = 3000;
indirectHitRange = 5;
ace_explosives_explodeOnDefuse = 0.02;
EGVAR(explosives,explodeOnDefuse) = 0.02;
};
class CUP_PipeBomb_Ammo: PipeBombBase {
hit = 3000;
indirectHit = 3000;
indirectHitRange = 5;
ace_explosives_explodeOnDefuse = 0.02;
EGVAR(explosives,explodeOnDefuse) = 0.02;
};
class CUP_Mine_Ammo;
class CUP_IED_V1_Ammo: CUP_Mine_Ammo {
ace_explosives_explodeOnDefuse = 0.06;
EGVAR(explosives,explodeOnDefuse) = 0.06;
triggerWhenDestroyed = 1;
};
};

View File

@ -2,9 +2,9 @@ class CfgMagazines {
class CA_Magazine;
class CUP_TimeBomb_M: CA_Magazine {
scope = 1;
ace_explosives_placeable = 1;
EGVAR(explosives,placeable) = 1;
useAction = 0;
ace_explosives_setupObject = "ACE_PipeBomb_place_CUP";
EGVAR(explosives,setupObject) = "ACE_PipeBomb_place_CUP";
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch", "Cellphone"};
class Timer {
@ -16,9 +16,9 @@ class CfgMagazines {
};
};
class CUP_Mine_M: CUP_TimeBomb_M {
ace_explosives_placeable = 1;
EGVAR(explosives,placeable) = 1;
useAction = 0;
ace_explosives_setupObject = "ACE_Mine_place_CUP";
EGVAR(explosives,setupObject) = "ACE_Mine_place_CUP";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -27,9 +27,9 @@ class CfgMagazines {
};
};
class CUP_MineE_M: CUP_TimeBomb_M {
ace_explosives_placeable = 1;
EGVAR(explosives,placeable) = 1;
useAction = 0;
ace_explosives_setupObject = "ACE_MineE_place_CUP";
EGVAR(explosives,setupObject) = "ACE_MineE_place_CUP";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -39,20 +39,20 @@ class CfgMagazines {
};
class CUP_IED_V1_M: CUP_Mine_M {
ace_explosives_placeable = 1;
EGVAR(explosives,placeable) = 1;
useAction = 0;
ace_explosives_setupObject = "ACE_IED_V1_place_CUP";
EGVAR(explosives,setupObject) = "ACE_IED_V1_place_CUP";
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch", "Cellphone", "PressurePlate"};
};
};
class CUP_IED_V2_M: CUP_IED_V1_M {
useAction = 0;
ace_explosives_setupObject = "ACE_IED_V2_place_CUP";
EGVAR(explosives,setupObject) = "ACE_IED_V2_place_CUP";
};
class CUP_IED_V3_M: CUP_IED_V1_M {
useAction = 0;
ace_explosives_setupObject = "ACE_IED_V3_place_CUP";
EGVAR(explosives,setupObject) = "ACE_IED_V3_place_CUP";
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch", "Cellphone", "PressurePlate"};
class Timer {
@ -77,7 +77,7 @@ class CfgMagazines {
};
class CUP_IED_V4_M: CUP_IED_V1_M {
useAction = 0;
ace_explosives_setupObject = "ACE_IED_V4_place_CUP";
EGVAR(explosives,setupObject) = "ACE_IED_V4_place_CUP";
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch", "Cellphone", "PressurePlate"};
class Timer {

View File

@ -1,32 +1,31 @@
class CfgVehicles {
class ACE_Explosives_Place;
class ACE_PipeBomb_place_CUP: ACE_Explosives_Place {
displayName = "Satchel Charge";
displayName = "$STR_CUP_dn_PipeBomb";
model = "\CUP\Weapons\CUP_Weapons_Put\CUP_Satchel.p3d";
ace_explosives_offset[] = {0, 0, 0};
};
class ACE_Mine_place_CUP: ACE_Explosives_Place {
displayName = "AT-15 Anti-Tank Mine";
displayName = "$STR_CUP_dn_Mine";
model = "\CUP\Weapons\CUP_Weapons_Put\CUP_AT15.p3d";
ace_explosives_offset[] = {0, 0, 0};
};
class ACE_MineE_place_CUP: ACE_Explosives_Place {
displayName = "TM46 Anti-Tank Mine";
displayName = "$STR_CUP_dn_MineE";
model = "\CUP\Weapons\CUP_Weapons_Put\CUP_TM46.p3d";
ace_explosives_offset[] = {0, 0, 0};
};
class ACE_IED_V1_place_CUP: ACE_Explosives_Place {
displayName = "IED";
displayName = "$STR_A3_CfgVehicles_IEDUrbanSmall_F";
model = "\CUP\Weapons\CUP_Weapons_Put\CUP_IED_V1.p3d";
ace_explosives_offset[] = {0, 0, 0};
};
class ACE_IED_V2_place_CUP: ACE_IED_V1_place_CUP {
displayName = "$STR_A3_CfgVehicles_IEDUrbanBig_F";
model = "\CUP\Weapons\CUP_Weapons_Put\CUP_IED_V2.p3d";
};
class ACE_IED_V3_place_CUP: ACE_IED_V1_place_CUP {
displayName = "$STR_A3_CfgVehicles_IEDLandSmall_F";
model = "\CUP\Weapons\CUP_Weapons_Put\CUP_IED_V3.p3d";
};
class ACE_IED_V4_place_CUP: ACE_IED_V1_place_CUP {
displayName = "$STR_A3_CfgVehicles_IEDLandBig_F";
model = "\CUP\Weapons\CUP_Weapons_Put\CUP_IED_V4.p3d";
};
};

View File

@ -2,9 +2,8 @@ class CfgMagazines {
// Explosives
class gm_explosive_petn_charge_base;
class gm_explosive_petn_charge: gm_explosive_petn_charge_base {
EGVAR(explosives,DelayTime) = 1;
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) =QEGVAR(explosives,Place_gm_explosive_petn);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_gm_explosive_petn);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch"};
@ -21,9 +20,8 @@ class CfgMagazines {
class gm_explosive_plnp_charge_base;
class gm_explosive_plnp_charge: gm_explosive_plnp_charge_base {
EGVAR(explosives,DelayTime) = 1;
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) =QEGVAR(explosives,Place_gm_explosive_plnp);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_gm_explosive_plnp);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch"};
@ -40,8 +38,8 @@ class CfgMagazines {
class gm_mine_at_base;
class gm_mine_at_tm46: gm_mine_at_base {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) =QEGVAR(explosives,Place_gm_mine_tm46);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_gm_mine_tm46);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -51,8 +49,8 @@ class CfgMagazines {
};
};
class gm_mine_at_dm21: gm_mine_at_base {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) =QEGVAR(explosives,Place_gm_explosive_dm21);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_gm_explosive_dm21);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -62,8 +60,8 @@ class CfgMagazines {
};
};
class gm_mine_at_mn111: gm_mine_at_base {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) =QEGVAR(explosives,Place_gm_explosive_m111);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_gm_explosive_m111);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -74,8 +72,8 @@ class CfgMagazines {
};
class gm_mine_ap_dm31: gm_mine_at_base {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) =QEGVAR(explosives,Place_gm_explosive_dm31);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_gm_explosive_dm31);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};

View File

@ -108,19 +108,7 @@ class CfgWeapons {
EGVAR(overpressure,offset) = 1.65;
};
class H_HelmetB;
class rhs_tsh4: H_HelmetB {
HEARING_PROTECTION_VICCREW;
};
class rhs_6b47_bare;
class rhs_6b48: rhs_6b47_bare {
HEARING_PROTECTION_VICCREW;
};
class rhs_zsh7a: H_HelmetB {
HEARING_PROTECTION_VICCREW;
};
class rhs_zsh7a;
class rhs_zsh7a_alt: rhs_zsh7a {
ACE_Protection = 1;
};
@ -133,22 +121,6 @@ class CfgWeapons {
ACE_Protection = 1;
};
class rhs_gssh18: H_HelmetB {
HEARING_PROTECTION_EARMUFF;
};
class rhs_6b47;
class rhs_6b47_6m2: rhs_6b47 {
HEARING_PROTECTION_PELTOR;
};
class rhs_6b47_6m2_1: rhs_6b47 {
HEARING_PROTECTION_PELTOR;
};
class rhs_6m2: H_HelmetB {
HEARING_PROTECTION_PELTOR;
};
class rhs_weap_d81;
class rhs_weap_2a70: rhs_weap_d81 { // "Low pressure" 100mm cannon
EGVAR(overpressure,range) = 15;

View File

@ -1,5 +1,7 @@
#include "script_component.hpp"
if !(["ace_nametags"] call EFUNC(common,isModLoaded)) exitWith {};
private _russianRankIcons = [
QPATHTOEF(nametags,UI\icons_russia\private_gs.paa),
QPATHTOEF(nametags,UI\icons_russia\corporal_gs.paa),

View File

@ -6,4 +6,12 @@ PREP_RECOMPILE_START;
#include "XEH_PREP.hpp"
PREP_RECOMPILE_END;
// Disable RHS' wheel replacement mechanic
if (["ace_repair"] call EFUNC(common,isModLoaded)) then {
RHS_Retread_Enabled = false;
rhs_btr70_EnableRetread = false;
rhs_TypeTirePressure = 1;
RHS_BTR_Effects_Init = true;
};
ADDON = true;

View File

@ -2,7 +2,7 @@ class CfgMagazines {
// ACE Explosives
class ATMine_Range_Mag;
class rhs_mine_tm62m_mag: ATMine_Range_Mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_tm62m);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_tm62m);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -12,7 +12,7 @@ class CfgMagazines {
};
class rhs_mine_pmn2_mag: ATMine_Range_Mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_pmn2);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_pmn2);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -22,7 +22,7 @@ class CfgMagazines {
};
class rhs_mag_mine_ptm1: ATMine_Range_Mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_ptm1);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_ptm1);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -32,7 +32,7 @@ class CfgMagazines {
};
class rhs_mag_mine_pfm1: ATMine_Range_Mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_pfm1);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_pfm1);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -42,8 +42,7 @@ class CfgMagazines {
};
class rhs_ec75_mag: ATMine_Range_Mag {
EGVAR(explosives,DelayTime) = 1;
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_ec75);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_ec75);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch"};
@ -59,27 +58,27 @@ class CfgMagazines {
};
class rhs_ec75_sand_mag: rhs_ec75_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_ec75_sand);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_ec75_sand);
};
class rhs_ec200_mag: rhs_ec75_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_ec200);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_ec200);
};
class rhs_ec200_sand_mag: rhs_ec200_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_ec200_sand);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_ec200_sand);
};
class rhs_ec400_mag: rhs_ec75_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_ec400);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_ec400);
};
class rhs_ec400_sand_mag: rhs_ec400_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_ec400_sand);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_ec400_sand);
};
class rhs_mine_msk40p_white_mag: ATMine_Range_Mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_msk40p_white);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_msk40p_white);
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
class Tripwire {
@ -89,19 +88,19 @@ class CfgMagazines {
};
class rhs_mine_msk40p_red_mag: rhs_mine_msk40p_white_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_msk40p_red);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_msk40p_red);
};
class rhs_mine_msk40p_green_mag: rhs_mine_msk40p_white_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_msk40p_green);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_msk40p_green);
};
class rhs_mine_msk40p_blue_mag: rhs_mine_msk40p_white_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_msk40p_blue);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_msk40p_blue);
};
class rhs_mine_sm320_white_mag: rhs_mine_msk40p_white_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_sm320_white);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_sm320_white);
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
class Tripwire {
@ -111,15 +110,15 @@ class CfgMagazines {
};
class rhs_mine_sm320_red_mag: rhs_mine_sm320_white_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_sm320_red);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_sm320_red);
};
class rhs_mine_sm320_green_mag: rhs_mine_sm320_white_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_sm320_green);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_sm320_green);
};
class rhs_mine_ozm72_a_mag: ATMine_Range_Mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_ozm72_a);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_ozm72_a);
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
class Tripwire {
@ -129,12 +128,11 @@ class CfgMagazines {
};
class rhs_mine_ozm72_b_mag: rhs_mine_ozm72_a_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_ozm72_b);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_ozm72_b);
};
class rhs_mine_ozm72_c_mag: rhs_mine_ozm72_a_mag {
EGVAR(explosives,DelayTime) = 1;
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhs_mine_ozm72_c);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhs_mine_ozm72_c);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Command", "MK16_Transmitter"};

View File

@ -0,0 +1,28 @@
class CfgWeapons {
class H_HelmetB;
class rhs_tsh4: H_HelmetB {
HEARING_PROTECTION_VICCREW;
};
class rhs_zsh7a: H_HelmetB {
HEARING_PROTECTION_VICCREW;
};
class rhs_gssh18: H_HelmetB {
HEARING_PROTECTION_EARMUFF;
};
class rhs_6m2: H_HelmetB {
HEARING_PROTECTION_PELTOR;
};
class rhs_6b47;
class rhs_6b47_6m2: rhs_6b47 {
HEARING_PROTECTION_PELTOR;
};
class rhs_6b47_6m2_1: rhs_6b47 {
HEARING_PROTECTION_PELTOR;
};
class rhs_6b47_bare;
class rhs_6b48: rhs_6b47_bare {
HEARING_PROTECTION_VICCREW;
};
};

View File

@ -0,0 +1,19 @@
#include "script_component.hpp"
#include "\z\ace\addons\hearing\script_macros_hearingProtection.hpp"
class CfgPatches {
class SUBADDON {
addonRootClass = QUOTE(COMPONENT);
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {
"rhs_main_loadorder",
"ace_hearing"
};
skipWhenMissingDependencies = 1;
VERSION_CONFIG;
};
};
#include "CfgWeapons.hpp"

View File

@ -0,0 +1,3 @@
#define SUBCOMPONENT hearing
#define SUBCOMPONENT_BEAUTIFIED Hearing
#include "..\script_component.hpp"

View File

@ -0,0 +1,123 @@
class CfgVehicles {
class Wheeled_APC_F;
class rhs_btr_base: Wheeled_APC_F {
class EGVAR(interaction,anims) {
class wheel_1_unhide {
positions[] = {{-0.8, -1.7, 0}};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
class wheel_2_unhide {
positions[] = {{0.35, -2.9, -0.1}};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class rhs_btr70_vmf: rhs_btr_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class wheel_1_unhide: wheel_1_unhide {
positions[] = {{-1.2, -2.6, 0.2}};
};
class wheel_2_unhide: wheel_2_unhide {
positions[] = {{-0.3, -3.8, 0}};
};
};
};
class rhs_btr70_msv: rhs_btr70_vmf {};
class rhs_btr80_msv: rhs_btr70_msv {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class wheel_1_unhide: wheel_1_unhide {
positions[] = {{-1, -2.5, 0.6}};
};
class wheel_2_unhide: wheel_2_unhide {
enabled = 0;
};
};
};
class Truck_F;
class rhs_truck: Truck_F {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class RHS_Ural_BaseTurret: Truck_F {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class rhs_zil131_base: Truck_F {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class rhs_kraz255_base;
class rhs_kraz255b1_base: rhs_kraz255_base {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class O_Truck_02_covered_F;
class rhs_kamaz5350: O_Truck_02_covered_F {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class MRAP_02_base_F;
class rhs_tigr_base: MRAP_02_base_F {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class Offroad_01_base_f;
class RHS_UAZ_Base: Offroad_01_base_f {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
};

View File

@ -0,0 +1,21 @@
#include "script_component.hpp"
class CfgPatches {
class SUBADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {
"rhs_main_loadorder",
"ace_repair"
};
skipWhenMissingDependencies = 1;
author = ECSTRING(common,ACETeam);
authors[] = {"Dystopian", "johnb43"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgVehicles.hpp"

View File

@ -0,0 +1,3 @@
#define SUBCOMPONENT repair
#define SUBCOMPONENT_BEAUTIFIED Repair
#include "..\script_component.hpp"

View File

@ -1,5 +1,4 @@
#include "script_component.hpp"
#include "\z\ace\addons\hearing\script_macros_hearingProtection.hpp"
class CfgPatches {
class ADDON {
@ -7,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"rhs_main_loadorder"};
requiredAddons[] = {"ace_common", "rhs_main_loadorder"};
author = ECSTRING(common,ACETeam);
authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut", "commy2", "Skengman2"};
url = ECSTRING(main,URL);

View File

@ -1,83 +1,83 @@
class CfgAmmo {
class APERSMine_Range_Ammo;
class rhs_mine_a200_bz_ammo: APERSMine_Range_Ammo {
ace_explosives_defuseObjectPosition[] = {0, 0, 0.035};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.035};
};
class rhs_mine_a200_dz35_ammo: rhs_mine_a200_bz_ammo {
ace_explosives_defuseObjectPosition[] = {0, 0, 0.02};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.02};
};
class rhs_mine_glasmine43_hz_ammo: APERSMine_Range_Ammo {
ace_explosives_defuseObjectPosition[] = {0, 0, 0.015};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.015};
};
class rhs_mine_glasmine43_bz_ammo: rhs_mine_glasmine43_hz_ammo {
ace_minedetector_detectable = 0;
EGVAR(minedetector,detectable) = 0;
};
class rhs_mine_bounding_trigger_base;
class rhs_mine_m2a3b_press_ammo: rhs_mine_bounding_trigger_base {
ace_explosives_defuseObjectPosition[] = {0, 0.046, 0.02};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0.046, 0.02};
};
class rhs_mine_m2a3b_trip_ammo: rhs_mine_m2a3b_press_ammo {
ace_explosives_defuseObjectPosition[] = {0, 0.046, 0.055};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0.046, 0.055};
};
class rhs_mine_M3_pressure_ammo: APERSMine_Range_Ammo {
ace_explosives_defuseObjectPosition[] = {0, 0, 0.015};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.015};
};
class rhs_mine_M3_tripwire_ammo: rhs_mine_M3_pressure_ammo {
ace_explosives_defuseObjectPosition[] = {0, 0, 0.055};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.055};
};
class ATMine_Range_Ammo;
class rhs_mine_TM43_ammo: ATMine_Range_Ammo {
ace_explosives_defuseObjectPosition[] = {0, 0, 0.072};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.072};
};
class rhs_mine_M7A2_ammo: APERSMine_Range_Ammo {
ace_explosives_defuseObjectPosition[] = {0, 0, 0.067};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.067};
};
class rhs_mine_Mk2_pressure_ammo: APERSMine_Range_Ammo {
ace_explosives_defuseObjectPosition[] = {0, 0, 0.02};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.02};
};
class rhs_mine_Mk2_tripwire_ammo: rhs_mine_Mk2_pressure_ammo {
ace_explosives_defuseObjectPosition[] = {0, 0, 0.055};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.055};
};
class APERSBoundingMine_Range_Ammo;
class rhs_mine_smine35_press_ammo: APERSBoundingMine_Range_Ammo {
ace_explosives_defuseObjectPosition[] = {0, 0, 0.03};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.03};
};
class rhs_mine_smine35_trip_ammo: rhs_mine_bounding_trigger_base {
ace_explosives_defuseObjectPosition[] = {0, 0, 0.04};
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.04};
};
class rhs_mine_smine44_trip_ammo: rhs_mine_smine35_trip_ammo {
ace_explosives_defuseObjectPosition[] = {-0.03, 0, 0.015};
EGVAR(explosives,defuseObjectPosition)[] = {-0.03, 0, 0.015};
};
class rhs_mine_smine44_press_ammo: APERSBoundingMine_Range_Ammo {
ace_explosives_defuseObjectPosition[] = {-0.02, 0, 0.02};
EGVAR(explosives,defuseObjectPosition)[] = {-0.02, 0, 0.02};
};
class APERSTripMine_Wire_Ammo;
class rhs_mine_stockmine43_2m_ammo: APERSTripMine_Wire_Ammo {
ace_explosives_defuseObjectPosition[] = {-1, 0, 0.25};
EGVAR(explosives,defuseObjectPosition)[] = {-1, 0, 0.25};
};
class rhs_mine_stockmine43_4m_ammo: rhs_mine_stockmine43_2m_ammo {
ace_explosives_defuseObjectPosition[] = {-2, 0, 0.25};
EGVAR(explosives,defuseObjectPosition)[] = {-2, 0, 0.25};
};
class DemoCharge_Remote_Ammo;
class rhs_charge_M2tet_x2_ammo: DemoCharge_Remote_Ammo {
ace_explosives_defuseObjectPosition[] = {0.095, 0, 0.055};
EGVAR(explosives,defuseObjectPosition)[] = {0.095, 0, 0.055};
};
};

View File

@ -1,7 +1,7 @@
class CfgMagazines {
class APERSMine_Range_Mag;
class rhs_mine_a200_bz_mag: APERSMine_Range_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_a200_bz";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_a200_bz";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -11,7 +11,7 @@ class CfgMagazines {
};
class rhs_mine_a200_dz35_mag: rhs_mine_a200_bz_mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_a200_dz35";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_a200_dz35";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -21,7 +21,7 @@ class CfgMagazines {
};
class rhs_mine_glasmine43_hz_mag: APERSMine_Range_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_glasmine43_hz";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_glasmine43_hz";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -31,12 +31,12 @@ class CfgMagazines {
};
class rhs_mine_glasmine43_bz_mag: rhs_mine_glasmine43_hz_mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_glasmine43_bz";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_glasmine43_bz";
};
class APERSBoundingMine_Range_Mag;
class rhs_mine_m2a3b_press_mag: APERSBoundingMine_Range_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_m2a3b_press";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_m2a3b_press";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -46,7 +46,7 @@ class CfgMagazines {
};
class rhs_mine_m2a3b_trip_mag: rhs_mine_m2a3b_press_mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_m2a3b_trip";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_m2a3b_trip";
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
class Tripwire {
@ -56,7 +56,7 @@ class CfgMagazines {
};
class rhs_mine_m3_pressure_mag: APERSMine_Range_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_m3_pressure";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_m3_pressure";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -67,7 +67,7 @@ class CfgMagazines {
class APERSTripMine_Wire_Mag;
class rhs_mine_M3_tripwire_mag: APERSTripMine_Wire_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_M3_tripwire";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_M3_tripwire";
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
class Tripwire {
@ -78,7 +78,7 @@ class CfgMagazines {
class ATMine_Range_Mag;
class rhs_mine_TM43_mag: ATMine_Range_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_TM43";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_TM43";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -88,7 +88,7 @@ class CfgMagazines {
};
class rhs_mine_M7A2_mag: APERSMine_Range_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_M7A2";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_M7A2";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -98,7 +98,7 @@ class CfgMagazines {
};
class rhs_mine_mk2_pressure_mag: APERSMine_Range_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_mk2_pressure";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_mk2_pressure";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -108,7 +108,7 @@ class CfgMagazines {
};
class rhs_mine_Mk2_tripwire_mag: APERSTripMine_Wire_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_Mk2_tripwire";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_Mk2_tripwire";
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
class Tripwire {
@ -118,7 +118,7 @@ class CfgMagazines {
};
class rhs_mine_smine35_press_mag: APERSBoundingMine_Range_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_smine35_press";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_smine35_press";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -128,7 +128,7 @@ class CfgMagazines {
};
class rhs_mine_smine35_trip_mag: rhs_mine_smine35_press_mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_smine35_trip";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_smine35_trip";
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
class Tripwire {
@ -138,7 +138,7 @@ class CfgMagazines {
};
class rhs_mine_smine44_trip_mag: APERSBoundingMine_Range_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_smine44_trip";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_smine44_trip";
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
class Tripwire {
@ -148,7 +148,7 @@ class CfgMagazines {
};
class rhs_mine_smine44_press_mag: rhs_mine_smine44_trip_mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_smine44_press";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_smine44_press";
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -158,7 +158,7 @@ class CfgMagazines {
};
class rhs_mine_stockmine43_2m_mag: APERSTripMine_Wire_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_stockmine43_2m";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_stockmine43_2m";
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
class Tripwire {
@ -168,7 +168,7 @@ class CfgMagazines {
};
class rhs_mine_stockmine43_4m_mag: rhs_mine_stockmine43_2m_mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_mine_stockmine43_4m";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_mine_stockmine43_4m";
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
class Tripwire {
@ -179,7 +179,7 @@ class CfgMagazines {
class DemoCharge_Remote_Mag;
class rhs_charge_M2tet_x2_mag: DemoCharge_Remote_Mag {
ace_explosives_SetupObject = "ACE_Explosives_Place_rhs_charge_M2tet_x2";
EGVAR(explosives,setupObject) = "ACE_Explosives_Place_rhs_charge_M2tet_x2";
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch"};
class Timer {

View File

@ -6,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"rhsgref_main_loadorder"};
requiredAddons[] = {"ace_common", "rhsgref_main_loadorder"};
skipWhenMissingDependencies = 1;
author = ECSTRING(common,ACETeam);
authors[] = {"PabstMirror", "Ruthberg", "Anton"};

View File

@ -3,22 +3,22 @@ class CfgMagazines {
// ACE Explosives
class ATMine_Range_Mag;
class rhssaf_mine_mrud_a_mag: ATMine_Range_Mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhssaf_mine_mrud_a);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhssaf_mine_mrud_a);
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
};
};
class rhssaf_mine_mrud_b_mag: rhssaf_mine_mrud_a_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhssaf_mine_mrud_b);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhssaf_mine_mrud_b);
};
class rhssaf_mine_mrud_c_mag: rhssaf_mine_mrud_a_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhssaf_mine_mrud_c);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhssaf_mine_mrud_c);
};
class rhssaf_mine_mrud_d_mag: rhssaf_mine_mrud_a_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhssaf_mine_mrud_d);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhssaf_mine_mrud_d);
class ACE_Triggers {
SupportedTriggers[] = {"Command", "MK16_Transmitter"};
class Command {
@ -29,7 +29,7 @@ class CfgMagazines {
};
class rhssaf_mine_pma3_mag: ATMine_Range_Mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhssaf_mine_pma3);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhssaf_mine_pma3);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -39,7 +39,7 @@ class CfgMagazines {
};
class rhssaf_mine_tma4_mag: ATMine_Range_Mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhssaf_mine_tma4);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhssaf_mine_tma4);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
class PressurePlate {
@ -51,9 +51,8 @@ class CfgMagazines {
class CA_Magazine;
class rhssaf_tm100_mag: CA_Magazine {
useAction = 0;
EGVAR(explosives,DelayTime) = 1;
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhssaf_tm100);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhssaf_tm100);
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter"};
class Timer {
@ -67,10 +66,10 @@ class CfgMagazines {
};
class rhssaf_tm200_mag: rhssaf_tm100_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhssaf_tm200);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhssaf_tm200);
};
class rhssaf_tm500_mag: rhssaf_tm100_mag {
EGVAR(explosives,SetupObject) = QEGVAR(explosives,Place_rhssaf_tm500);
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhssaf_tm500);
};
};

View File

@ -6,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"rhssaf_main_loadorder"};
requiredAddons[] = {"ace_common", "rhssaf_main_loadorder"};
skipWhenMissingDependencies = 1;
author = ECSTRING(common,ACETeam);
authors[] = {};

View File

@ -43,8 +43,7 @@ class CfgVehicles {
EGVAR(refuel,fuelCapacity) = 302;
};
class Truck_F;
class Truck_01_base_F: Truck_F {};
class Truck_01_base_F;
class rhsusf_fmtv_base: Truck_01_base_F {
EGVAR(refuel,fuelCapacity) = 219;
};
@ -55,8 +54,7 @@ class CfgVehicles {
EGVAR(refuel,fuelCargo) = 900; // 45 jerrycans
};
class rhsusf_HEMTT_A4_base: Truck_01_base_F {};
class rhsusf_M977A4_usarmy_wd: rhsusf_HEMTT_A4_base {};
class rhsusf_M977A4_usarmy_wd;
class rhsusf_M977A4_AMMO_usarmy_wd: rhsusf_M977A4_usarmy_wd {
EGVAR(rearm,defaultSupply) = 1200;
};

View File

@ -206,170 +206,7 @@ class CfgWeapons {
EGVAR(overpressure,offset) = 0.9;
};
// Fast Helmets
class rhsusf_opscore_01;
class rhsusf_opscore_ut_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_aor1_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_aor1_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_bk_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_fg_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_fg_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_fg_pelt_cam: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_paint_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_paint_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_paint_pelt_nsw_cam: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_aor2_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_aor2_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_ut_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_ut_pelt_cam: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_ut_pelt_nsw_cam: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mc_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mc_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_cover;
class rhsusf_opscore_mc_cover_pelt_nsw: rhsusf_opscore_cover {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mc_cover_pelt: rhsusf_opscore_cover {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mc_cover_pelt_cam: rhsusf_opscore_cover {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_rg_cover_pelt: rhsusf_opscore_cover {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_coy_cover_pelt: rhsusf_opscore_cover {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mar_01;
class rhsusf_opscore_mar_ut_pelt: rhsusf_opscore_mar_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mar_fg_pelt: rhsusf_opscore_mar_01 {
HEARING_PROTECTION_PELTOR;
};
// ACH Helmets
class rhsusf_ach_helmet_ocp;
class rhsusf_ach_bare_des_headset: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_des_headset_ess: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_headset: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_headset_ess: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_semi_headset: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_semi_headset_ess: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_tan_headset: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_tan_headset_ess: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_wood_headset: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_wood_headset_ess: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_helmet_headset_ocp: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_helmet_headset_ess_ocp: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
// ACVC Helmets
class rhsusf_cvc_helmet: rhsusf_opscore_01 {
HEARING_PROTECTION_VICCREW;
};
// MICH Helmets
class rhsusf_mich_bare;
class rhsusf_mich_bare_alt: rhsusf_mich_bare {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos;
class rhsusf_mich_bare_norotos_alt: rhsusf_mich_bare_norotos {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos_arc;
class rhsusf_mich_bare_norotos_arc_alt: rhsusf_mich_bare_norotos_arc {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_semi;
class rhsusf_mich_bare_alt_semi: rhsusf_mich_bare_semi {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos_semi;
class rhsusf_mich_bare_norotos_alt_semi: rhsusf_mich_bare_norotos_semi {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos_arc_semi: rhsusf_mich_bare_norotos_alt_semi {
HEARING_PROTECTION_OPEN;
};
class rhsusf_mich_bare_norotos_arc_alt_semi: rhsusf_mich_bare_norotos_arc_semi {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_tan;
class rhsusf_mich_bare_alt_tan: rhsusf_mich_bare_tan {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos_tan;
class rhsusf_mich_bare_norotos_alt_tan: rhsusf_mich_bare_norotos_tan {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos_arc_tan;
class rhsusf_mich_bare_norotos_arc_alt_tan: rhsusf_mich_bare_norotos_arc_tan {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_hgu56p: rhsusf_opscore_01 {
HEARING_PROTECTION_VICCREW;
};
class rhsusf_hgu56p;
class rhsusf_hgu56p_visor: rhsusf_hgu56p {
ACE_Protection = 1;
};
@ -420,13 +257,9 @@ class CfgWeapons {
class rhsusf_hgu56p_mask_black_skull: rhsusf_hgu56p_visor_mask_black_skull {
ACE_Protection = 0;
};
class rhsusf_ihadss: rhsusf_opscore_01 {
HEARING_PROTECTION_VICCREW;
};
class H_HelmetB;
class RHS_jetpilot_usaf: H_HelmetB {
ACE_Protection = 1;
HEARING_PROTECTION_VICCREW;
};
};

View File

@ -1,7 +1,6 @@
class CfgMagazines {
class CA_Magazine;
class rhsusf_m112_mag: CA_Magazine {
EGVAR(explosives,delayTime) = 1;
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEGVAR(explosives,Place_rhsusf_explosive_m112);
useAction = 0;

View File

@ -0,0 +1,174 @@
class CfgWeapons {
// Fast Helmets
class rhsusf_opscore_01;
class rhsusf_opscore_ut_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_aor1_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_aor1_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_bk_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_fg_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_fg_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_fg_pelt_cam: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_paint_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_paint_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_paint_pelt_nsw_cam: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_aor2_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_aor2_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_ut_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_ut_pelt_cam: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_ut_pelt_nsw_cam: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mc_pelt: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mc_pelt_nsw: rhsusf_opscore_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_cover;
class rhsusf_opscore_mc_cover_pelt_nsw: rhsusf_opscore_cover {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mc_cover_pelt: rhsusf_opscore_cover {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mc_cover_pelt_cam: rhsusf_opscore_cover {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_rg_cover_pelt: rhsusf_opscore_cover {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_coy_cover_pelt: rhsusf_opscore_cover {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mar_01;
class rhsusf_opscore_mar_ut_pelt: rhsusf_opscore_mar_01 {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_opscore_mar_fg_pelt: rhsusf_opscore_mar_01 {
HEARING_PROTECTION_PELTOR;
};
// ACH Helmets
class rhsusf_ach_helmet_ocp;
class rhsusf_ach_bare_des_headset: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_des_headset_ess: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_headset: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_headset_ess: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_semi_headset: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_semi_headset_ess: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_tan_headset: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_tan_headset_ess: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_wood_headset: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_bare_wood_headset_ess: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_helmet_headset_ocp: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_ach_helmet_headset_ess_ocp: rhsusf_ach_helmet_ocp {
HEARING_PROTECTION_PELTOR;
};
// ACVC Helmets
class rhsusf_cvc_helmet: rhsusf_opscore_01 {
HEARING_PROTECTION_VICCREW;
};
// MICH Helmets
class rhsusf_mich_bare;
class rhsusf_mich_bare_alt: rhsusf_mich_bare {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos;
class rhsusf_mich_bare_norotos_alt: rhsusf_mich_bare_norotos {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos_arc;
class rhsusf_mich_bare_norotos_arc_alt: rhsusf_mich_bare_norotos_arc {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_semi;
class rhsusf_mich_bare_alt_semi: rhsusf_mich_bare_semi {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos_semi;
class rhsusf_mich_bare_norotos_alt_semi: rhsusf_mich_bare_norotos_semi {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos_arc_semi: rhsusf_mich_bare_norotos_alt_semi {
HEARING_PROTECTION_OPEN;
};
class rhsusf_mich_bare_norotos_arc_alt_semi: rhsusf_mich_bare_norotos_arc_semi {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_tan;
class rhsusf_mich_bare_alt_tan: rhsusf_mich_bare_tan {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos_tan;
class rhsusf_mich_bare_norotos_alt_tan: rhsusf_mich_bare_norotos_tan {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_mich_bare_norotos_arc_tan;
class rhsusf_mich_bare_norotos_arc_alt_tan: rhsusf_mich_bare_norotos_arc_tan {
HEARING_PROTECTION_PELTOR;
};
class rhsusf_hgu56p: rhsusf_opscore_01 {
HEARING_PROTECTION_VICCREW;
};
class rhsusf_ihadss: rhsusf_opscore_01 {
HEARING_PROTECTION_VICCREW;
};
class H_HelmetB;
class RHS_jetpilot_usaf: H_HelmetB {
HEARING_PROTECTION_VICCREW;
};
};

View File

@ -0,0 +1,19 @@
#include "script_component.hpp"
#include "\z\ace\addons\hearing\script_macros_hearingProtection.hpp"
class CfgPatches {
class SUBADDON {
addonRootClass = QUOTE(COMPONENT);
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {
"rhsusf_main_loadorder",
"ace_hearing"
};
skipWhenMissingDependencies = 1;
VERSION_CONFIG;
};
};
#include "CfgWeapons.hpp"

View File

@ -0,0 +1,3 @@
#define SUBCOMPONENT hearing
#define SUBCOMPONENT_BEAUTIFIED Hearing
#include "..\script_component.hpp"

View File

@ -0,0 +1,52 @@
class CfgVehicles {
class rhsusf_stryker_base;
class rhsusf_stryker_m1126_base: rhsusf_stryker_base {
class EGVAR(interaction,anims) {
class Hide_FCans {
positions[] = {{-0.7, -3, -0.4}};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class rhsusf_stryker_m1127_base: rhsusf_stryker_m1126_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class Hide_FCans: Hide_FCans {
positions[] = {{-0.5, -3, -0.4}};
};
};
};
class rhsusf_stryker_m1126_m2_base: rhsusf_stryker_m1126_base {};
class rhsusf_stryker_m1132_m2_base: rhsusf_stryker_m1126_m2_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class Hide_FCans: Hide_FCans {
positions[] = {{-1, -4, -0.4}};
};
};
};
class rhsusf_stryker_m1134_base: rhsusf_stryker_m1132_m2_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class Hide_FCans: Hide_FCans {
positions[] = {{-0.7, -3, -0.7}};
};
};
};
class rhsusf_m1a2tank_base;
class rhsusf_m1a2sep2_base: rhsusf_m1a2tank_base {
class EGVAR(interaction,anims) {
class fuelcans_hide {
// Rotate interactions with turret rotation
positions[] = {
"[0.23, -0.6, 0] vectorAdd ([[1.1, -3.6, 0.6], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)",
"[0.23, -0.6, 0] vectorAdd ([[-1.1, -3.6, 0.6], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)"
};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
};

View File

@ -21,3 +21,4 @@ class CfgPatches {
};
#include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp"

View File

@ -0,0 +1,126 @@
class CfgVehicles {
class Truck_01_base_F;
class rhsusf_fmtv_base: Truck_01_base_F {
class EGVAR(interaction,anims) {
class hide_spare {
positions[] = {{1, 1.4, 0}};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class rhsusf_M1078A1P2_fmtv_usarmy: rhsusf_fmtv_base {};
class rhsusf_M1078A1P2_B_fmtv_usarmy: rhsusf_M1078A1P2_fmtv_usarmy {};
class rhsusf_M1078A1P2_B_M2_fmtv_usarmy: rhsusf_M1078A1P2_B_fmtv_usarmy {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare: hide_spare {
positions[] = {{1, 1.4, -0.5}};
};
};
};
class rhsusf_M1078A1R_SOV_M2_D_fmtv_socom: rhsusf_M1078A1P2_B_M2_fmtv_usarmy {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare: hide_spare {
positions[] = {{1, 1, -0.5}};
};
};
};
class rhsusf_M1083A1P2_fmtv_usarmy: rhsusf_M1078A1P2_fmtv_usarmy {};
class rhsusf_M1083A1P2_B_fmtv_usarmy: rhsusf_M1083A1P2_fmtv_usarmy {};
class rhsusf_M1083A1P2_B_M2_fmtv_usarmy: rhsusf_M1083A1P2_B_fmtv_usarmy {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare: hide_spare {
positions[] = {{1, 1.4, -0.5}};
};
};
};
class rhsusf_M1084A1P2_fmtv_usarmy: rhsusf_M1083A1P2_fmtv_usarmy {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare: hide_spare {
positions[] = {{1, 1.8, 0}};
};
};
};
class rhsusf_M1084A1P2_B_M2_fmtv_usarmy: rhsusf_M1083A1P2_B_M2_fmtv_usarmy {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare: hide_spare {
positions[] = {{1, 1.8, -0.5}};
};
};
};
class rhsusf_M1085A1P2_B_Medical_fmtv_usarmy: rhsusf_M1083A1P2_B_fmtv_usarmy {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare: hide_spare {
positions[] = {{1, 6.1, 0}};
};
};
};
class rhsusf_HEMTT_A4_base: Truck_01_base_F {
class EGVAR(interaction,anims) {
class hide_spare {
positions[] = {"_target selectionPosition 'sparewheel' vectorAdd [0.6, 0.6, -0.4]"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class MRAP_01_base_F;
class rhsusf_m1151_base: MRAP_01_base_F {
class EGVAR(interaction,anims) {
class hide_spare {
positions[] = {"_target selectionPosition 'sparewheel' vectorAdd [-0.465, 0, 0]"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
// Don't inherit, as it's easier for the trenches compat
class rhsusf_M1165A1_GMV_SAG2_base: rhsusf_m1151_base {
class EGVAR(interaction,anims) {
class hide_spare {
positions[] = {"_target selectionPosition 'sparewheel_gmv' vectorAdd [0, -0.44, 0]"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class rhsusf_rg33_base: MRAP_01_base_F {
class EGVAR(interaction,anims) {
class hide_spare {
selections[] = {"sparewheel"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class rhsusf_M1239_base: MRAP_01_base_F {
class EGVAR(interaction,anims) {
class hide_spare {
selections[] = {"sparewheel"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class rhsusf_MATV_base: MRAP_01_base_F {
class EGVAR(interaction,anims) {
class hide_spare {
selections[] = {"sparewheel"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
};

View File

@ -0,0 +1,23 @@
#include "script_component.hpp"
class CfgPatches {
class SUBADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {
"rhsusf_main_loadorder",
"ace_repair"
};
skipWhenMissingDependencies = 1;
author = ECSTRING(common,ACETeam);
authors[] = {"johnb43"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
addonRootClass = QUOTE(ADDON);
};
};
#include "CfgVehicles.hpp"

View File

@ -0,0 +1,3 @@
#define SUBCOMPONENT repair
#define SUBCOMPONENT_BEAUTIFIED Repair
#include "..\script_component.hpp"

View File

@ -0,0 +1,48 @@
class CfgVehicles {
class rhsusf_stryker_base;
class rhsusf_stryker_m1126_base: rhsusf_stryker_base {
class EGVAR(interaction,anims) {
class Hide_PioKit {
positions[] = {{-1, -2.2, -0.5}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class rhsusf_stryker_m1127_base: rhsusf_stryker_m1126_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class Hide_PioKit: Hide_PioKit {
positions[] = {{-0.8, -2.2, -0.5}};
};
};
};
class rhsusf_stryker_m1126_m2_base: rhsusf_stryker_m1126_base {};
class rhsusf_stryker_m1132_m2_base: rhsusf_stryker_m1126_m2_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class Hide_PioKit: Hide_PioKit {
positions[] = {{-1.3, -3.3, -0.5}};
};
};
};
class rhsusf_stryker_m1134_base: rhsusf_stryker_m1132_m2_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class Hide_PioKit: Hide_PioKit {
positions[] = {{-1, -2.2, -0.8}};
};
};
};
class rhsusf_m1151_base;
class rhsusf_M1165A1_GMV_SAG2_base: rhsusf_m1151_base {
class EGVAR(interaction,anims) {
class tools_hide {
positions[] = {{0.365, 1.5, -0.4}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
};

View File

@ -0,0 +1,23 @@
#include "script_component.hpp"
class CfgPatches {
class SUBADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {
"rhsusf_main_loadorder",
"ace_trenches"
};
skipWhenMissingDependencies = 1;
author = ECSTRING(common,ACETeam);
authors[] = {"johnb43"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
addonRootClass = QUOTE(ADDON);
};
};
#include "CfgVehicles.hpp"

View File

@ -0,0 +1,3 @@
#define SUBCOMPONENT trenches
#define SUBCOMPONENT_BEAUTIFIED Trenches
#include "..\script_component.hpp"

View File

@ -1,5 +1,4 @@
#include "script_component.hpp"
#include "\z\ace\addons\hearing\script_macros_hearingProtection.hpp"
class CfgPatches {
class ADDON {
@ -7,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"rhsusf_main_loadorder"};
requiredAddons[] = {"ace_common", "rhsusf_main_loadorder"};
skipWhenMissingDependencies = 1;
author = ECSTRING(common,ACETeam);
authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut", "Fyuran"};

View File

@ -2,7 +2,7 @@ class ACE_CSW_Groups {
// --- Gun Turrets -------------------------------------------------------------
class ace_csw_100Rnd_127x99_mag {
class EGVAR(csw,100Rnd_127x99_mag) {
vn_m2_v_100_mag = 1;
};

View File

@ -2,16 +2,10 @@ class DirectionalBombBase;
class vn_mine_m18_ammo: DirectionalBombBase {
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.15};
EGVAR(explosives,size) = 1;
EGVAR(explosives,explosive) = "vn_mine_m18_ammo_scripted";
};
class vn_mine_m18_x3_ammo: vn_mine_m18_ammo {
EGVAR(explosives,defuseObjectPosition)[] = {0, 0, 0.1};
EGVAR(explosives,explosive) = "vn_mine_m18_x3_ammo_scripted";
};
class vn_mine_m18_wp_ammo: vn_mine_m18_ammo {
EGVAR(explosives,explosive) = "vn_mine_m18_wp_ammo_scripted";
};
class vn_mine_m16_base;
@ -99,13 +93,7 @@ class vn_mine_punji_05_ammo: vn_mine_punji_04_ammo {
};
class APERSMine_Range_Ammo;
class vn_mine_bike_ammo: APERSMine_Range_Ammo {
EGVAR(explosives,explosive) = "vn_mine_bike_ammo_scripted";
};
class vn_mine_cartridge_ammo: APERSMine_Range_Ammo {
EGVAR(explosives,explosive) = "vn_mine_cartridge_ammo_scripted";
// bump range and damage slightly, default values do not work well with ACE Medical
indirectHit = QUOTE(getNumber (configFile >> 'CfgAmmo' >> 'vn_mine_cartridge_ammo' >> 'GVAR(indirectHit)'));
GVAR(indirectHit) = QUOTE([ARR_2(2,1)] select isNull (configFile >> 'CfgPatches' >> 'ace_medical'));
@ -116,50 +104,8 @@ class vn_mine_cartridge_ammo: APERSMine_Range_Ammo {
class vn_mine_lighter_ammo: APERSMine_Range_Ammo {
ACE_damageType = QGVAR(explosive_incendiary);
EGVAR(explosives,explosive) = "vn_mine_lighter_ammo_scripted";
};
class vn_mine_jerrycan_ammo: APERSMine_Range_Ammo {
ACE_damageType = QGVAR(explosive_incendiary);
EGVAR(explosives,explosive) = "vn_mine_jerrycan_ammo_scripted";
};
class vn_mine_pot_ammo: APERSMine_Range_Ammo {
EGVAR(explosives,explosive) = "vn_mine_pot_ammo_scripted";
};
class vn_mine_mortar_range_ammo: APERSMine_Range_Ammo {
EGVAR(explosives,explosive) = "vn_mine_mortar_range_ammo_scripted";
};
class vn_mine_limpet_01_ammo: DemoCharge_Remote_Ammo {
EGVAR(explosives,explosive) = "vn_mine_limpet_01_ammo_scripted";
};
class vn_mine_limpet_02_ammo: vn_mine_limpet_01_ammo {
EGVAR(explosives,explosive) = "vn_mine_limpet_02_ammo_scripted";
};
class vn_mine_chicom_no8_ammo: APERSMine_Range_Ammo {
EGVAR(explosives,explosive) = "vn_mine_chicom_no8_ammo_scripted";
};
class vn_mine_dh10_ammo: DirectionalBombBase {
EGVAR(explosives,explosive) = "vn_mine_dh10_ammo_scripted";
};
class PipeBombBase;
class vn_mine_gboard_range_ammo: PipeBombBase {
EGVAR(explosives,explosive) = "vn_mine_gboard_range_ammo_scripted";
};
class SatchelCharge_Remote_Ammo;
class vn_mine_satchelcharge_02_ammo: SatchelCharge_Remote_Ammo {
EGVAR(explosives,explosive) = "vn_mine_satchelcharge_02_ammo_scripted";
};
class vn_mine_bangalore_ammo: SatchelCharge_Remote_Ammo {
EGVAR(explosives,explosive) = "vn_mine_bangalore_ammo_scripted";
};

View File

@ -6,8 +6,8 @@ class vn_mine_m18_mag: vn_magazine {
displayNameShort = ""; // Every explosive inherits this and it breaks naming in the placing menu
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(m18);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(m18);
class ACE_Triggers {
SupportedTriggers[] = {"Command", "MK16_Transmitter"};
@ -42,7 +42,7 @@ class vn_mine_m18_fuze10_mag: vn_mine_m18_mag {
// Claymore x3 (Remote)
class vn_mine_m18_x3_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(m18_x3);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(m18_x3);
class ACE_Triggers {
SupportedTriggers[] = {"Command", "MK16_Transmitter"};
@ -65,7 +65,7 @@ class vn_mine_m18_x3_range_mag: vn_mine_m18_x3_mag {
// WP Claymore (Remote)
class vn_mine_m18_wp_mag: vn_mine_m18_fuze10_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(m18_wp);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(m18_wp);
class ACE_Triggers {
SupportedTriggers[] = {"Command", "MK16_Transmitter"};
@ -101,7 +101,7 @@ class vn_mine_m18_wp_fuze10_mag: vn_mine_m18_wp_mag {
// Toe-Popper
class vn_mine_m14_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(m14);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(m14);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -113,7 +113,7 @@ class vn_mine_m14_mag: vn_mine_m18_mag {
// Bounding Mine
class vn_mine_m16_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(m16);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(m16);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -125,7 +125,7 @@ class vn_mine_m16_mag: vn_mine_m18_mag {
// Bounding Mine (Trip Wire 2m)
class vn_mine_tripwire_m16_02_mag: vn_mine_m16_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(m16_tripwire_2m);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(m16_tripwire_2m);
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
@ -136,7 +136,7 @@ class vn_mine_tripwire_m16_02_mag: vn_mine_m16_mag {
};
// Bounding Mine (Trip Wire 4m)
class vn_mine_tripwire_m16_04_mag: vn_mine_tripwire_m16_02_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(m16_tripwire_4m);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(m16_tripwire_4m);
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
@ -148,22 +148,22 @@ class vn_mine_tripwire_m16_04_mag: vn_mine_tripwire_m16_02_mag {
// F1 (Trip Wire 2m)
class vn_mine_tripwire_f1_02_mag: vn_mine_tripwire_m16_02_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(f1_tripwire_2m);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(f1_tripwire_2m);
};
// F1 (Trip Wire 4m)
class vn_mine_tripwire_f1_04_mag: vn_mine_tripwire_f1_02_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(f1_tripwire_4m);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(f1_tripwire_4m);
};
// Arty Shell (Trip Wire 4m)
class vn_mine_tripwire_arty_mag: vn_mine_tripwire_m16_02_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(arty_tripwire_4m);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(arty_tripwire_4m);
};
// Satchel Charge
class vn_mine_satchel_remote_02_mag: vn_mine_m18_mag {
useAction = 0;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(satchel_remote_02);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(satchel_remote_02);
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch"};
@ -180,7 +180,7 @@ class vn_mine_satchel_remote_02_mag: vn_mine_m18_mag {
// TM57 Anti-Tank Mine
class vn_mine_tm57_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(tm57);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(tm57);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -190,7 +190,7 @@ class vn_mine_tm57_mag: vn_mine_m18_mag {
// M15 Anti-Tank Mine
class vn_mine_m15_mag: vn_mine_tm57_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(m15);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(m15);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -202,7 +202,7 @@ class vn_mine_m15_mag: vn_mine_tm57_mag {
// M112 Breaching charge
class vn_mine_m112_remote_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(m112);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(m112);
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch"};
@ -221,7 +221,7 @@ class vn_mine_m112_remote_mag: vn_mine_m18_mag {
// Spiked ammo box
class vn_mine_ammobox_range_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(ammobox_range);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(ammobox_range);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -234,7 +234,7 @@ class vn_mine_ammobox_range_mag: vn_mine_m18_mag {
// Punji large
class vn_mine_punji_01_mag: vn_mine_m18_mag {
useAction = 0;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(punji_01);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(punji_01);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -246,18 +246,18 @@ class vn_mine_punji_01_mag: vn_mine_m18_mag {
// Punji small
class vn_mine_punji_02_mag: vn_mine_punji_01_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(punji_02);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(punji_02);
};
// Punji whip
class vn_mine_punji_03_mag: vn_mine_punji_01_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(punji_03);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(punji_03);
};
// Punji door-way
class vn_mine_punji_04_mag: vn_mine_m18_mag {
useAction = 0;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(punji_04);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(punji_04);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -270,7 +270,7 @@ class vn_mine_punji_04_mag: vn_mine_m18_mag {
// Punji side whip
class vn_mine_punji_05_mag: vn_mine_punji_04_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(punji_05);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(punji_05);
class ACE_Triggers: ACE_Triggers {
class PressurePlate: PressurePlate {
@ -281,7 +281,7 @@ class vn_mine_punji_05_mag: vn_mine_punji_04_mag {
// Bike mine (Remote)
class vn_mine_bike_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(bike);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(bike);
class ACE_Triggers {
SupportedTriggers[] = {QGVAR(Command), QGVAR(MK16_Transmitter)};
@ -304,7 +304,7 @@ class vn_mine_bike_range_mag: vn_mine_bike_mag {
// Cartridge mine
class vn_mine_cartridge_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(cartridge);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(cartridge);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -316,7 +316,7 @@ class vn_mine_cartridge_mag: vn_mine_m18_mag {
// Lighter mine (Proximity)
class vn_mine_lighter_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(lighter);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(lighter);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -328,7 +328,7 @@ class vn_mine_lighter_mag: vn_mine_m18_mag {
// Pot mine (Remote)
class vn_mine_pot_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(pot);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(pot);
class ACE_Triggers {
SupportedTriggers[] = {"Command", "MK16_Transmitter"};
@ -351,7 +351,7 @@ class vn_mine_pot_range_mag: vn_mine_pot_mag {
// Jerrycan mine (Remote)
class vn_mine_jerrycan_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(jerrycan);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(jerrycan);
class ACE_Triggers {
SupportedTriggers[] = {"Command", "MK16_Transmitter"};
@ -374,7 +374,7 @@ class vn_mine_jerrycan_range_mag: vn_mine_jerrycan_mag {
// Mortar shell on a stick (Proximity)
class vn_mine_mortar_range_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(mortar_range);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(mortar_range);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -386,17 +386,17 @@ class vn_mine_mortar_range_mag: vn_mine_m18_mag {
// Limpet mine USA (Remote)
class vn_mine_limpet_01_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(limpet_01);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(limpet_01);
};
// Limpet mine RUS (Remote)
class vn_mine_limpet_02_mag: vn_mine_limpet_01_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(limpet_02);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(limpet_02);
};
// Chicom NO8 mine
class vn_mine_chicom_no8_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(chicom_no8);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(chicom_no8);
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -408,7 +408,7 @@ class vn_mine_chicom_no8_mag: vn_mine_m18_mag {
// DH10 mine (Remote)
class vn_mine_dh10_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(dh10);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(dh10);
};
// DH10 mine (Proximity)
class vn_mine_dh10_range_mag: vn_mine_dh10_mag {
@ -422,7 +422,7 @@ class vn_mine_dh10_range_mag: vn_mine_dh10_mag {
// Grenade board mine (Tripwire 4m)
class vn_mine_gboard_range_mag: vn_mine_m18_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(gboard);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(gboard);
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
@ -434,10 +434,10 @@ class vn_mine_gboard_range_mag: vn_mine_m18_mag {
// Satchel charge
class vn_mine_satchelcharge_02_mag: vn_mine_satchel_remote_02_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(satchelcharge_02);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(satchelcharge_02);
};
// Bangalore mine
class vn_mine_bangalore_mag: vn_mine_satchel_remote_02_mag {
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(bangalore);
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(bangalore);
};

View File

@ -1,9 +1,8 @@
class CfgMagazines {
class SPE_Mine_Magazine;
class SPE_US_TNT_4pound_mag: SPE_Mine_Magazine {
EGVAR(explosives,DelayTime) = 1;
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(4LBTNT);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(4LBTNT);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "FireCord", "LIB_LadungPM"};
@ -19,9 +18,8 @@ class CfgMagazines {
};
class SPE_US_TNT_half_pound_mag: SPE_Mine_Magazine {
EGVAR(explosives,DelayTime) = 1;
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(halfLBTNT);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(halfLBTNT);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "FireCord", "LIB_LadungPM"};
@ -37,9 +35,8 @@ class CfgMagazines {
};
class SPE_US_Bangalore_mag: SPE_Mine_Magazine {
EGVAR(explosives,DelayTime) = 1;
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(bangalore);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(bangalore);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "FireCord", "LIB_LadungPM"};
@ -55,9 +52,8 @@ class CfgMagazines {
};
class SPE_Ladung_Small_MINE_mag: SPE_Mine_Magazine {
EGVAR(explosives,DelayTime) = 1;
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(smallLadung);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(smallLadung);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "FireCord", "LIB_LadungPM"};
@ -73,9 +69,8 @@ class CfgMagazines {
};
class SPE_Ladung_Big_MINE_mag: SPE_Mine_Magazine {
EGVAR(explosives,DelayTime) = 1;
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(bigLadung);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(bigLadung);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "FireCord", "LIB_LadungPM"};
@ -91,8 +86,8 @@ class CfgMagazines {
};
class SPE_US_M1A1_ATMINE_mag: SPE_Mine_Magazine {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(M1A1at);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(M1A1at);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -102,8 +97,8 @@ class CfgMagazines {
};
};
class SPE_US_M3_MINE_mag: SPE_Mine_Magazine {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(M3ap);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(M3ap);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
@ -113,8 +108,8 @@ class CfgMagazines {
};
};
class SPE_US_M3_Pressure_MINE_mag: SPE_Mine_Magazine {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(M3Pressure);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(M3Pressure);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -125,8 +120,8 @@ class CfgMagazines {
};
class SPE_Shg24x7_Improvised_Mine_mag: SPE_Mine_Magazine {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(Shg24x7);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(Shg24x7);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -137,8 +132,8 @@ class CfgMagazines {
};
class SPE_TMI_42_MINE_mag: SPE_Mine_Magazine {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(TMI42);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(TMI42);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -149,8 +144,8 @@ class CfgMagazines {
};
class SPE_SMI_35_1_MINE_mag: SPE_Mine_Magazine {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(SMI35_1);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(SMI35_1);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
@ -161,8 +156,8 @@ class CfgMagazines {
};
class SPE_SMI_35_MINE_mag: SPE_Mine_Magazine {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(SMI35);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(SMI35);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
@ -173,8 +168,8 @@ class CfgMagazines {
};
class SPE_SMI_35_Pressure_MINE_mag: SPE_Mine_Magazine {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(SMI35Pressure);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(SMI35Pressure);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};
@ -185,8 +180,8 @@ class CfgMagazines {
};
class SPE_STMI_MINE_mag: SPE_Mine_Magazine {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(STMI);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(STMI);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"Tripwire"};
@ -197,8 +192,8 @@ class CfgMagazines {
};
class SPE_shumine_42_MINE_mag: SPE_Mine_Magazine {
EGVAR(explosives,Placeable) = 1;
EGVAR(explosives,SetupObject) = QEXPLOSIVES_PLACE(shumine42);
EGVAR(explosives,placeable) = 1;
EGVAR(explosives,setupObject) = QEXPLOSIVES_PLACE(shumine42);
useAction = 0;
class ACE_Triggers {
SupportedTriggers[] = {"PressurePlate"};

View File

@ -91,7 +91,7 @@ private _configMagazine = configFile >> "CfgMagazines" >> _magazineClassname;
private _ammo = getText (_configMagazine >> "ammo");
private _configAmmo = configFile >> "CfgAmmo" >> _ammo;
private _simType = toLower getText (_configAmmo >> "simulation");
private _simType = toLowerANSI getText (_configAmmo >> "simulation");
private _speed = linearConversion [0, 1, random 1, 1, 20, true];
private _effect2pos = _object selectionPosition "destructionEffect2";
@ -100,7 +100,7 @@ private _fnc_spawnProjectile = {
// If the magazines are inside of the cargo (inventory), don't let their projectiles escape the interior of the vehicle
if (!_spawnProjectile) exitWith {};
params ["_object", "_ammo", "_speed", "_flyAway"];
params ["_flyAway"];
private _spawnPos = _object modelToWorld [-0.2 + random 0.4, -0.2 + random 0.4, random 3];
@ -117,7 +117,7 @@ private _fnc_spawnProjectile = {
_projectile setVectorDir _vectorVelocity;
_projectile setVelocity _vectorVelocity;
} else {
_projectile setDamage 1;
triggerAmmo _projectile;
};
};
@ -126,14 +126,14 @@ switch (_simType) do {
[QGVAR(playCookoffSound), [_object, _simType]] call CBA_fnc_globalEvent;
if (random 1 < 0.6) then {
[_object, _ammo, _speed, true] call _fnc_spawnProjectile;
true call _fnc_spawnProjectile;
};
};
case "shotshell": {
[QGVAR(playCookoffSound), [_object, _simType]] call CBA_fnc_globalEvent;
if (random 1 < 0.15) then {
[_object, _ammo, _speed, true] call _fnc_spawnProjectile;
true call _fnc_spawnProjectile;
};
};
case "shotgrenade": {
@ -141,7 +141,7 @@ switch (_simType) do {
_speed = 0;
};
[_object, _ammo, _speed, random 1 < 0.5] call _fnc_spawnProjectile;
(random 1 < 0.5) call _fnc_spawnProjectile;
};
case "shotrocket";
case "shotmissile";
@ -149,7 +149,7 @@ switch (_simType) do {
if (random 1 < 0.1) then {
[QGVAR(playCookoffSound), [_object, _simType]] call CBA_fnc_globalEvent;
[_object, _ammo, _speed, random 1 < 0.3] call _fnc_spawnProjectile;
(random 1 < 0.3) call _fnc_spawnProjectile;
} else {
createVehicle ["ACE_ammoExplosionLarge", _object modelToWorld _effect2pos, [], 0 , "CAN_COLLIDE"];
};
@ -157,22 +157,13 @@ switch (_simType) do {
case "shotdirectionalbomb";
case "shotmine": {
if (random 1 < 0.5) then {
// Not all explosives detonate on destruction, some have scripted alternatives
if (getNumber (_configAmmo >> "triggerWhenDestroyed") != 1) then {
_ammo = getText (_configAmmo >> QEGVAR(explosives,explosive));
};
// If a scripted alternative doesn't exist use generic explosion
if (_ammo != "") then {
[_object, _ammo, 0, false] call _fnc_spawnProjectile;
} else {
createVehicle ["SmallSecondary", _object modelToWorld _effect2pos, [], 0 , "CAN_COLLIDE"];
};
// _speed should be 0, but as it doesn't fly away, no need to set _speed
false call _fnc_spawnProjectile;
};
};
case "shotilluminating": {
if (random 1 < 0.15) then {
[_object, _ammo, _speed, random 1 < 0.3] call _fnc_spawnProjectile;
(random 1 < 0.3) call _fnc_spawnProjectile;
};
};
};

View File

@ -52,7 +52,7 @@ private _ammo = "";
_x params ["_magazine", "_count"];
if (_count > 0 && {!(_magazine call FUNC(isMagazineFlare))}) then {
_ammoToDetonate pushBack [_magazine, _count, false];
_ammoToDetonate pushBack [_magazine, _count, random 1 < 0.5];
_totalAmmo = _totalAmmo + _count;
};
} forEach (magazinesAmmoCargo _object);

View File

@ -58,6 +58,7 @@ class CfgMagazines {
class GVAR(20Rnd_20mm_G_belt): 40Rnd_20mm_G_belt {
author = ECSTRING(common,ACETeam);
displayName = CSTRING(GMGBelt_displayName);
descriptionShort = CSTRING(GMGBelt_descriptionShort);
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = QPATHTOF(UI\ammoBox_50bmg_ca.paa);
type = 256;

View File

@ -16,7 +16,7 @@ private _inherited = [];
private _config = _x;
private _configEnabled = (getNumber (_config >> QUOTE(ADDON) >> "enabled")) == 1;
if (_configEnabled) then {
private _configExplicit = (count configProperties [_config, "configName _x == 'ace_csw'", false]) == 1;
private _configExplicit = (count configProperties [_config, toString {configName _x == QUOTE(ADDON)}, false]) == 1;
if (_configExplicit) then {
_explicitBases pushBack (configName _config);
_inherited pushBack [];
@ -43,8 +43,8 @@ private _inherited = [];
INFO("------ Logging static magazines with no carry version -------");
private _hash = createHashMap;
// private _logAll = true; // logs all possible weapon magazines (even if not used in a static weapon)
private _logAll = false;
private _logAll = false; // logs all possible weapon magazines (even if not used in a static weapon) when set to true
{
private _vehicleType = configName _x;
private _turretConfig = [_vehicleType, [0]] call CBA_fnc_getTurret;

View File

@ -1,11 +1,11 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Helper function for ace_rearm; Gets magazines that should be loaded by csw
* Helper function for ace_rearm; Gets magazines that should be loaded by csw.
*
* Arguments:
* 0: Vehicle <OBJECT>
* 1: Specific Turret or pass bool to check all turrets <ARRAY><BOOL>(default: true)
* 0: CSW <OBJECT>
* 1: Specific Turret or pass bool to check all turrets <ARRAY|BOOL> (default: true)
*
* Return Value:
* [0: compatible veh mags, 1: carry mags] <ARRAY>

View File

@ -1,7 +1,7 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Handles AI Fired EH
* Handles AI Fired EH.
*
* Arguments:
* Fired EH

View File

@ -1,7 +1,7 @@
#include "..\script_component.hpp"
/*
* Author: Grim
* Handles AI GetIn on an empty weapon
* Author: LinkIsGrim
* Handles AI GetIn on an empty CSW.
*
* Arguments:
* GetIn EH

View File

@ -1,10 +1,10 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror, modified by Grim
* Handles AI reloading
* Author: PabstMirror, LinkIsGrim
* Handles AI reloading.
*
* Arguments:
* 0: Static Weapon <OBJECT>
* 0: CSW <OBJECT>
* 1: Gunner <OBJECT>
* 2: Weapon <STRING>
* 3: Magazine <STRING> (default: "")
@ -15,7 +15,7 @@
* Public: No
*/
params ["_staticWeapon", "_gunner", "_weapon", ["_magazine", ""]];
params ["_vehicle", "_gunner", "_weapon", ["_magazine", ""]];
private _turretPath = [_gunner] call EFUNC(common,getTurretIndex);
private _reloadSource = objNull;
@ -24,7 +24,7 @@ private _reloadNeededAmmo = -1;
private _cfgMagGroups = configFile >> QGVAR(groups);
private _nearSupplies = [_gunner] + ((_staticWeapon nearSupplies 10) select {
private _nearSupplies = [_gunner] + ((_vehicle nearSupplies 10) select {
isNull (group _x) ||
{!([_x] call EFUNC(common,isPlayer)) && {[side group _gunner, side group _x] call BIS_fnc_sideIsFriendly}}
});
@ -49,7 +49,7 @@ private _nearSupplies = [_gunner] + ((_staticWeapon nearSupplies 10) select {
private _xWeaponMag = _x;
{
if ((getNumber (_cfgMagGroups >> _x >> _xWeaponMag)) == 1) then {
private _loadInfo = [_staticWeapon, _turretPath, _x, _xSource] call FUNC(reload_canLoadMagazine);
private _loadInfo = [_vehicle, _turretPath, _x, _xSource] call FUNC(reload_canLoadMagazine);
if (_loadInfo select 0) then {
_reloadMag = _x;
_reloadSource = _xSource;
@ -81,16 +81,16 @@ if (_bestAmmoToSend == -1) exitWith {ERROR("No ammo");};
[_reloadSource, _reloadMag, _bestAmmoToSend] call EFUNC(common,removeSpecificMagazine);
private _timeToLoad = 1;
if (!isNull(configOf _staticWeapon >> QUOTE(ADDON) >> "ammoLoadTime")) then {
_timeToLoad = getNumber(configOf _staticWeapon >> QUOTE(ADDON) >> "ammoLoadTime");
if (!isNull(configOf _vehicle >> QUOTE(ADDON) >> "ammoLoadTime")) then {
_timeToLoad = getNumber(configOf _vehicle >> QUOTE(ADDON) >> "ammoLoadTime");
};
TRACE_1("Reloading in progress",_timeToLoad);
[{
params ["_staticWeapon", "_turretPath", "_gunner", "_reloadMag", "_bestAmmoToSend"];
if ((!alive _staticWeapon) || {!alive _gunner} || {(_staticWeapon distance _gunner) > 10}) exitWith {TRACE_1("invalid state",_this);};
params ["_vehicle", "_turretPath", "_gunner", "_reloadMag", "_bestAmmoToSend"];
if ((!alive _vehicle) || {!alive _gunner} || {(_vehicle distance _gunner) > 10}) exitWith {TRACE_1("invalid state",_this);};
// Reload the static weapon
TRACE_5("calling addTurretMag event",_staticWeapon,_turretPath,_gunner,_reloadMag,_bestAmmoToSend);
TRACE_5("calling addTurretMag event",_vehicle,_turretPath,_gunner,_reloadMag,_bestAmmoToSend);
[QGVAR(addTurretMag), _this] call CBA_fnc_globalEvent;
}, [_staticWeapon, _turretPath, _gunner, _reloadMag, _bestAmmoToSend], _timeToLoad] call CBA_fnc_waitAndExecute;
}, [_vehicle, _turretPath, _gunner, _reloadMag, _bestAmmoToSend], _timeToLoad] call CBA_fnc_waitAndExecute;

View File

@ -1,14 +1,14 @@
#include "..\script_component.hpp"
/*
* Author: tcvm
* Checks if you can deploy a weapon on the tripod
* Checks if you can deploy a weapon on the tripod.
*
* Arguments:
* 0: Target Tripod <OBJECT>
* 0: Target <OBJECT>
* 1: Player <OBJECT>
*
* Return Value:
* Wether or not you can deploy the weapon <BOOL>
* Whether or not you can deploy the weapon <BOOL>
*
* Example:
* [cursorObject, player] call ace_csw_fnc_assemble_canDeployWeapon

View File

@ -1,23 +1,23 @@
#include "..\script_component.hpp"
/*
* Author: tcvm
* If the CSW is mounted or in use this will not allow you to dismount the weapon
* If the CSW is mounted or in use this will not allow you to dismount the weapon.
*
* Arguments:
* 0: Static Weapon <OBJECT>
* 0: CSW <OBJECT>
*
* Return Value:
* Can Dismount <BOOL>
* Can dismount weapon <BOOL>
*
* Example:
* [cursorObject] call ace_csw_fnc_assemble_canPickupWeapon
* cursorObject call ace_csw_fnc_assemble_canPickupWeapon
*
* Public: No
*/
params ["_staticWeapon"];
params ["_vehicle"];
// Assembly mode: [0=disabled, 1=enabled, 2=enabled&unload, 3=default]
private _assemblyMode = [false, true, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 3]);
private _assemblyMode = [false, true, true, GVAR(defaultAssemblyMode)] select (_vehicle getVariable [QGVAR(assemblyMode), 3]);
_assemblyMode && {alive _staticWeapon} && {((crew _staticWeapon) findIf {alive _x && {!unitIsUAV _x}}) == -1} // return
_assemblyMode && {alive _vehicle} && {((crew _vehicle) findIf {alive _x && {!unitIsUAV _x}}) == -1} // return

View File

@ -1,7 +1,7 @@
#include "..\script_component.hpp"
/*
* Author: tcvm
* Deploys the tripod
* Deploys the tripod.
*
* Arguments:
* 0: Unit <OBJECT>
@ -10,7 +10,7 @@
* None
*
* Example:
* [player] call ace_csw_fnc_assemble_deployTripod
* player call ace_csw_fnc_assemble_deployTripod
*
* Public: No
*/
@ -34,7 +34,7 @@
_args params ["_player", "_secondaryWeaponClassname", "_secondaryWeaponInfo"];
TRACE_3("deployTripod finish",_player,_secondaryWeaponClassname,_secondaryWeaponInfo);
private _tripodClassname = getText(configFile >> "CfgWeapons" >> _secondaryWeaponClassname >> QUOTE(ADDON) >> "deploy");
private _tripodClassname = getText (configFile >> "CfgWeapons" >> _secondaryWeaponClassname >> QUOTE(ADDON) >> "deploy");
// Create a tripod
private _cswTripod = createVehicle [_tripodClassname, [0, 0, 0], [], 0, "NONE"];
@ -96,6 +96,6 @@
} forEach _secondaryWeaponInfo;
};
private _deployTime = getNumber(configFile >> "CfgWeapons" >> _secondaryWeaponClassname >> QUOTE(ADDON) >> "deployTime");
private _deployTime = getNumber (configFile >> "CfgWeapons" >> _secondaryWeaponClassname >> QUOTE(ADDON) >> "deployTime");
[TIME_PROGRESSBAR(_deployTime), [_player, _secondaryWeaponClassname, _secondaryWeaponInfo], _onFinish, _onFailure, LLSTRING(PlaceTripod_progressBar)] call EFUNC(common,progressBar);
}, _this] call CBA_fnc_execNextFrame;

View File

@ -1,11 +1,11 @@
#include "..\script_component.hpp"
/*
* Author: tcvm
* Deploys the current CSW
* Deploys the current CSW.
*
* Arguments:
* 0: Target <OBJECT>
* 1: Unit <OBJECT>
* 1: Player <OBJECT>
* 2: Args <ANY>
* 3: Action Data <ARRAY>
*

View File

@ -1,7 +1,7 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Modifies interaction for deploying weapon
* Modifies interaction for deploying weapon.
*
* Arguments:
* 0: Target <OBJECT>
@ -21,7 +21,7 @@
params ["_target", "_player", "", "_actionData"];
private _carryWeaponClassname = secondaryWeapon _player;
private _assembleTo = (getText(configFile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "assembleTo" >> (typeOf _target)));
private _assembleTo = getText (configFile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "assembleTo" >> typeOf _target);
private _icon = getText (configFile >> "CfgVehicles" >> _assembleTo >> "picture");
TRACE_2("",_assembleTo,_icon);

View File

@ -1,11 +1,11 @@
#include "..\script_component.hpp"
/*
* Author: tcvm
* Picks up the tripod and adds it to the player launcher slot
* Picks up the tripod and adds it to the player launcher slot.
*
* Arguments:
* 0: Tripod <OBJECT>
* 1: Unit <OBJECT>
* 1: Player <OBJECT>
*
* Return Value:
* None
@ -56,7 +56,7 @@
if (isNull _weaponHolder || {_tripodPos distance _weaponHolder > 2}) then {
_weaponHolder = createVehicle ["GroundWeaponHolder", [0, 0, 0], [], 0, "CAN_COLLIDE"];
_weaponHolder setDir random [0, 180, 360];
_weaponHolder setVehiclePosition [_tripodPos, [], 0, "CAN_COLLIDE"]; // places object on surface below
_weaponHolder setVehiclePosition [_tripodPos, [], 0, "CAN_COLLIDE"]; // Places object on surface below
};
_weaponHolder addWeaponCargoGlobal [_tripodClassname, 1];

View File

@ -1,11 +1,11 @@
#include "..\script_component.hpp"
/*
* Author: tcvm
* Dismounts the weapon from the tripod and drops its backpack beside
* Dismounts the weapon from the tripod and drops its backpack beside.
*
* Arguments:
* 0: Static Weapon <OBJECT>
* 1: Unit <OBJECT>
* 0: CSW <OBJECT>
* 1: Player <OBJECT>
*
* Return Value:
* None
@ -17,10 +17,10 @@
*/
[{
params ["_staticWeapon", "_player"];
TRACE_2("assemble_pickupWeapon",_staticWeapon,_player);
params ["_vehicle", "_player"];
TRACE_2("assemble_pickupWeapon",_vehicle,_player);
private _weaponConfig = configOf _staticWeapon >> QUOTE(ADDON);
private _weaponConfig = configOf _vehicle >> QUOTE(ADDON);
private _carryWeaponClassname = getText (_weaponConfig >> "disassembleWeapon");
if (!isClass (configFile >> "CfgWeapons" >> _carryWeaponClassname)) exitWith {
@ -37,15 +37,15 @@
private _onDisassembleFunc = getText (_weaponConfig >> "disassembleFunc");
private _pickupTime = getNumber (configFile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "pickupTime");
TRACE_4("",typeOf _staticWeapon,_carryWeaponClassname,_turretClassname,_pickupTime);
TRACE_4("",typeOf _vehicle,_carryWeaponClassname,_turretClassname,_pickupTime);
private _onFinish = {
params ["_args"];
_args params ["_staticWeapon", "_player", "_carryWeaponClassname", "_turretClassname", "_onDisassembleFunc"];
TRACE_4("disassemble finish",_staticWeapon,_player,_carryWeaponClassname,_turretClassname);
_args params ["_vehicle", "_player", "_carryWeaponClassname", "_turretClassname", "_onDisassembleFunc"];
TRACE_4("disassemble finish",_vehicle,_player,_carryWeaponClassname,_turretClassname);
private _weaponPos = (getPosATL _staticWeapon) vectorAdd [0, 0, 0.1];
private _weaponDir = getDir _staticWeapon;
private _weaponPos = (getPosATL _vehicle) vectorAdd [0, 0, 0.1];
private _weaponDir = getDir _vehicle;
private _carryWeaponMag = [];
private _carryWeaponMags = compatibleMagazines _carryWeaponClassname;
@ -64,7 +64,7 @@
TRACE_2("Removing ammo",_xMag,_carryMag);
[_player, _carryMag, _xAmmo] call FUNC(reload_handleReturnAmmo);
};
} forEach (magazinesAllTurrets _staticWeapon);
} forEach (magazinesAllTurrets _vehicle);
if (_turretClassname isNotEqualTo "") then {
private _cswTripod = createVehicle [_turretClassname, [0, 0, 0], [], 0, "NONE"];
@ -76,7 +76,7 @@
_cswTripod setVelocity [0, 0, -0.05];
_cswTripod setVectorUp (surfaceNormal _weaponPos);
}, [_cswTripod, _weaponDir, _weaponPos]] call CBA_fnc_execNextFrame;
[_cswTripod, _staticWeapon] call (missionNamespace getVariable _onDisassembleFunc);
[_cswTripod, _vehicle] call (missionNamespace getVariable _onDisassembleFunc);
};
[{
@ -99,7 +99,7 @@
// Create a new weapon holder (don't try to get an existing one, as no guarantee where it could be)
private _weaponHolder = createVehicle ["GroundWeaponHolder", [0, 0, 0], [], 0, "CAN_COLLIDE"];
_weaponHolder setDir random [0, 180, 360];
_weaponHolder setVehiclePosition [_weaponPos, [], 0, "CAN_COLLIDE"]; // places object on surface below
_weaponHolder setVehiclePosition [_weaponPos, [], 0, "CAN_COLLIDE"]; // Places object on surface below
_weaponHolder addWeaponWithAttachmentsCargoGlobal [[_carryWeaponClassname, "", "", "", _carryWeaponMag, [], ""], 1];
}, [_player, _weaponPos, _carryWeaponClassname, _carryWeaponMag, _turretClassname]] call CBA_fnc_execNextFrame;
@ -108,23 +108,23 @@
// Eject dead units (all crew are dead or UAV at this point, otherwise condition would have failed), but ignore UAV units
{
if (unitIsUAV _x) then {
_staticWeapon deleteVehicleCrew _x;
_vehicle deleteVehicleCrew _x;
} else {
moveOut _x;
};
} forEach (crew _staticWeapon);
} forEach (crew _vehicle);
deleteVehicle _staticWeapon;
deleteVehicle _vehicle;
LOG("end");
};
private _condition = {
params ["_args"];
_args params ["_staticWeapon"];
_args params ["_vehicle"];
_staticWeapon call FUNC(assemble_canPickupWeapon)
_vehicle call FUNC(assemble_canPickupWeapon)
};
[TIME_PROGRESSBAR(_pickupTime), [_staticWeapon, _player, _carryWeaponClassname, _turretClassname, _onDisassembleFunc], _onFinish, {}, LLSTRING(DisassembleCSW_progressBar), _condition] call EFUNC(common,progressBar);
[TIME_PROGRESSBAR(_pickupTime), [_vehicle, _player, _carryWeaponClassname, _turretClassname, _onDisassembleFunc], _onFinish, {}, LLSTRING(DisassembleCSW_progressBar), _condition] call EFUNC(common,progressBar);
}, _this] call CBA_fnc_execNextFrame;

View File

@ -1,10 +1,10 @@
#include "..\script_component.hpp"
/*
* Author: tcvm
* Checks if the unit can deploy a tripod
* Checks if the player can deploy the tripod.
*
* Arguments:
* 0: Unit <OBJECT>
* 0: Player <OBJECT>
*
* Return Value:
* Can deploy <BOOL>
@ -15,8 +15,8 @@
* Public: No
*/
params ["_unit"];
params ["_player"];
private _secondaryWeapon = secondaryWeapon _unit;
private _secondaryWeapon = secondaryWeapon _player;
_secondaryWeapon != "" && {getText (configFile >> "CfgWeapons" >> _secondaryWeapon >> QUOTE(ADDON) >> "type") == "mount"} // return

View File

@ -1,10 +1,10 @@
#include "..\script_component.hpp"
/*
* Author: tcvm
* Checks if it's possible to get in the CSW
* Checks if it's possible to get in the CSW.
*
* Arguments:
* 0: Vehicle <OBJECT>
* 0: CSW <OBJECT>
*
* Return Value:
* None

View File

@ -1,17 +1,16 @@
#include "..\script_component.hpp"
/*
* Author: tcvm
* Checks if the unit can pickup the tripod
* Checks if the player can pickup the tripod.
*
* Arguments:
* 0: Tripod <OBJECT>
* 1: Unit (not used) <OBJECT>
*
* Return Value:
* Can pickup <BOOL>
*
* Example:
* [cursorObject, player] call ace_csw_fnc_canPickupTripod
* cursorObject call ace_csw_fnc_canPickupTripod
*
* Public: No
*/

View File

@ -1,7 +1,7 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror, Dystopian
* Gets magazine that the player can carry, suitable to vehicle magazine
* Gets magazine that the player can carry, suitable to vehicle magazine.
*
* Arguments:
* 0: Vehicle Magazine <STRING>

View File

@ -1,10 +1,10 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Gets sub actions for what the unit can load into the CSW
* Gets sub actions for what the player can load into the CSW.
*
* Arguments:
* 0: Vehicle <OBJECT>
* 0: CSW <OBJECT>
* 1: Unit <OBJECT>
*
* Return Value:
@ -35,7 +35,7 @@ private _condition = {
([_target, _turretPath, _carryMag, _magSource] call FUNC(reload_canLoadMagazine)) select 0
};
private _cfgMagazines = configFile >> "CfgMagazines"; // micro-optimization
private _cfgMagazines = configFile >> "CfgMagazines"; // Micro-optimization
private _actions = [];
{
_x params ["_carryMag", "", "_loadInfo"];

View File

@ -1,7 +1,7 @@
#include "..\script_component.hpp"
/*
* Author: tcvm
* Initializes CSW systems on vehicle
* Initializes CSW systems on vehicle.
*
* Arguments:
* 0: Vehicle <OBJECT>
@ -78,7 +78,7 @@ if (hasInterface && {!(_typeOf in GVAR(initializedStaticTypes))}) then {
if ((GVAR(ammoHandling) == 0) && {!([false, true, true, GVAR(defaultAssemblyMode)] select (_target getVariable [QGVAR(assemblyMode), 3]))}) exitWith { false };
[_player, _target, ["isNotSwimming", "isNotSitting"]] call EFUNC(common,canInteractWith)
};
private _childenCode = {
private _childrenCode = {
BEGIN_COUNTER(getActions); // can remove for final release
private _ret = (call FUNC(getLoadActions)) + (call FUNC(getUnloadActions));
END_COUNTER(getActions);
@ -86,10 +86,10 @@ if (hasInterface && {!(_typeOf in GVAR(initializedStaticTypes))}) then {
};
if (_configEnabled && {_magazineLocation != ""}) then {
private _positionCode = compile _magazineLocation;
private _ammoAction = [QGVAR(magazine), LLSTRING(AmmoHandling_displayName), "", {}, _condition, _childenCode, [], _positionCode, 4] call EFUNC(interact_menu,createAction);
private _ammoAction = [QGVAR(magazine), LLSTRING(AmmoHandling_displayName), "", {}, _condition, _childrenCode, [], _positionCode, 4] call EFUNC(interact_menu,createAction);
_ammoActionPath = [_typeOf, 0, [], _ammoAction] call EFUNC(interact_menu,addActionToClass);
} else {
private _ammoAction = [QGVAR(magazine), LLSTRING(AmmoHandling_displayName), "", {}, _condition, _childenCode] call EFUNC(interact_menu,createAction);
private _ammoAction = [QGVAR(magazine), LLSTRING(AmmoHandling_displayName), "", {}, _condition, _childrenCode] call EFUNC(interact_menu,createAction);
_ammoActionPath = [_typeOf, 0, ["ACE_MainActions"], _ammoAction] call EFUNC(interact_menu,addActionToClass);
};

View File

@ -1,10 +1,10 @@
#include "..\script_component.hpp"
/*
* Author: tcvm, PabstMirror
* Handles the use of proxy weapons to bypass engine reload times
* Handles the use of proxy weapons to fix engine-reload times.
*
* Arguments:
* 0: Vehicle <OBJECT>
* 0: CSW <OBJECT>
* 1: Turret <ARRAY>
* 2: Proxy weapon needed <BOOL>
* 2: Weapon should be emptied <BOOL>

View File

@ -1,16 +1,16 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror &tcvm
* Tests if unit can load a magazine into a static weapon.
* Author: PabstMirror, tcvm
* Tests if unit can load a magazine into a CSW.
*
* Arguments:
* 0: Static Weapon <OBJECT>
* 0: CSW <OBJECT>
* 1: Turret Path <ARRAY>
* 2: Carryable Magazine <STRING>
* 3: Supplier <OBJECT>
* 3: Supplier <OBJECT> (default: objNull)
*
* Return Value:
* [CanLoad<BOOL>, LoadedMag<STRING>, AmmoNeeded<NUMBER>, IsBeltLinking<BOOL>]<ARRAY>
* [Can Load <BOOL>, Loaded Mag <STRING>, Ammo Needed <NUMBER>, Is Belt Linking <BOOL>] <ARRAY>
*
* Example:
* [cursorObject, [0], "ACE_csw_100Rnd_127x99_mag_red", player] call ace_csw_fnc_reload_canLoadMagazine
@ -28,7 +28,7 @@ if (!alive _vehicle) exitWith { _return };
// Verify holder has carry magazine
if (
(!isNull _magSource) &&
{!((_magSource isKindOf "Bag_Base") || {_magSource isKindOf "ContainerSupply"})} && // hacky workaround for magazines within dropped backpacks
{!((_magSource isKindOf "Bag_Base") || {_magSource isKindOf "ContainerSupply"})} && // Hacky workaround for magazines within dropped backpacks
{
((_vehicle distance _magSource) > 10) ||
{((magazineCargo _magSource) findIf {_x == _carryMag}) == -1}
@ -42,7 +42,7 @@ private _cfgGroupsCarryMag = configFile >> QGVAR(groups) >> _carryMag;
private _desiredAmmo = getNumber (configOf _vehicle >> QUOTE(ADDON) >> "desiredAmmo");
if (_desiredAmmo == 0) then { _desiredAmmo = 100; };
private _ammoNeeded = _desiredAmmo min getNumber (_cfgMagazinesCarryMag >> "count"); // assume it needs full carry mag
private _ammoNeeded = _desiredAmmo min getNumber (_cfgMagazinesCarryMag >> "count"); // Assume it needs full carry mag
private _loadedMag = "";
private _isBeltLinking = false;
@ -62,7 +62,7 @@ scopeName "main";
};
private _maxMagazineAmmo = _desiredAmmo min getNumber (_cfgMagazines >> _xMag >> "count");
if (_xAmmo >= _maxMagazineAmmo) exitWith {
[false, _loadedMag, -6, false] breakOut "main"; // Already at capicity
[false, _loadedMag, -6, false] breakOut "main"; // Already at capacity
};
_ammoNeeded = _maxMagazineAmmo - _xAmmo;
_isBeltLinking = true;

View File

@ -1,10 +1,10 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Tests if unit can unload a magazine from a static weapon.
* Tests if unit can unload a magazine from a CSW.
*
* Arguments:
* 0: Static Weapon <OBJECT>
* 0: CSW <OBJECT>
* 1: Turret Path <ARRAY>
* 2: Player <OBJECT>
* 3: Carryable Magazine <STRING>

View File

@ -1,15 +1,15 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Gets magazines that the player is carrying that can be loaded into the static weapon
* Gets nearby magazines that can be loaded into the CSW.
*
* Arguments:
* 0: Vehicle <OBJECT>
* 1: Player <OBJECT>
* 0: CSW <OBJECT>
* 1: Unit <OBJECT>
*
* Return Value:
* Mags <ARRAY>
* [Carry Magazine <STRING>, Turret Path <ARRAY>, Load Info <NUMBER>, Magazine Source <OBJECT>]
* [Carry Magazine <STRING>, Turret Path <ARRAY>, Load Info <ARRAY>, Magazine Source <OBJECT>]
*
* Example:
* [cursorObject, player] call ace_csw_fnc_reload_getLoadableMagazines

Some files were not shown because too many files have changed in this diff Show More