Merge branch 'master' into missile_guidance_rewrite

This commit is contained in:
PabstMirror
2024-08-23 09:36:29 -05:00
122 changed files with 4389 additions and 964 deletions

View File

@ -34,32 +34,26 @@ workshop = [
]
[hemtt.launch.spe]
workshop = [
"450814997", # CBA_A3
]
extends = "default"
dlc = [
"spe"
]
[hemtt.launch.vn]
workshop = [
"450814997", # CBA_A3's Workshop ID
]
extends = "default"
dlc = [
"S.O.G. Prairie Fire",
]
[hemtt.launch.ws]
workshop = [
"450814997", # CBA_A3's Workshop ID
]
extends = "default"
dlc = [
"Western Sahara",
]
[hemtt.launch.rhs]
extends = "default"
workshop = [
"450814997", # CBA_A3's Workshop ID
"843425103", # RHS AFRF Workshop ID
"843577117", # RHS USAF Workshop ID
"843593391", # RHS GREF Workshop ID

View File

@ -10,3 +10,4 @@ PREP(mainLoop);
PREP(moduleSettings);
PREP(removeDutyFactor);
PREP(renderDebugLines);
PREP(updateStaminaBar);

View File

@ -14,6 +14,8 @@ call FUNC(renderDebugLines);
["CBA_settingsInitialized", {
if (!GVAR(enabled)) exitWith {};
[QEGVAR(ui,hideHud), LINKFUNC(updateStaminaBar)] call CBA_fnc_addEventHandler;
["baseline", {
private _fatigue = ACE_player getVariable [QGVAR(aimFatigue), 0];
switch (stance ACE_player) do {

View File

@ -140,7 +140,7 @@ systemChat format ["---- velocity %1 - respiratoryRate: %2 ----", (vectorMagnitu
[ACE_player, _perceivedFatigue, GVAR(anReserve) == 0, _fwdAngle, _sideAngle] call FUNC(handleEffects);
if (GVAR(enableStaminaBar)) then {
if (GVAR(enableStaminaBarRealized)) then {
[GVAR(anReserve) / AN_MAXRESERVE] call FUNC(handleStaminaBar);
};

View File

@ -0,0 +1,25 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Updates the stamina bar state
*
* Arguments:
* None
*
* Return Value:
* None
*
* Example:
* [] call ace_advanced_fatigue_fnc_updateStaminaBar
*
* Public: No
*/
GVAR(enableStaminaBarRealized) = GVAR(enabled) && GVAR(enableStaminaBar) && {!(missionNamespace getVariable [QEGVAR(ui,hideHud), false])};
TRACE_1("updateStaminaBar",GVAR(enableStaminaBarRealized));
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
if (isNull _staminaBarContainer) exitWith {};
_staminaBarContainer ctrlSetFade ([1, 0] select GVAR(enableStaminaBarRealized));
_staminaBarContainer ctrlCommit 0;

View File

@ -6,12 +6,7 @@
true,
1,
{
if (!_this) then {
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
_staminaBarContainer ctrlSetFade 1;
_staminaBarContainer ctrlCommit 0;
};
call FUNC(updateStaminaBar);
[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)
},
true // Needs mission restart
@ -24,13 +19,7 @@
LSTRING(DisplayName),
true,
1,
{
if (!_this) then {
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
_staminaBarContainer ctrlSetFade 1;
_staminaBarContainer ctrlCommit 0;
};
}
{call FUNC(updateStaminaBar)}
] call CBA_fnc_addSetting;
[

View File

@ -182,6 +182,7 @@
<Italian>Distanza di seguimento</Italian>
<German>Folge-Entfernung</German>
<Korean>따라가는 거리</Korean>
<French>Distance de suivi</French>
<Japanese>追跡距離</Japanese>
</Key>
<Key ID="STR_ACE_Aircraft_DroneFollowHint">
@ -189,6 +190,7 @@
<Italian>Seguendo unità entro %1m</Italian>
<German>Folgt Einheit bis zu %1m</German>
<Korean>%1m 이내로 유닛을 따라갑니다</Korean>
<French>Suivre l'unité jusqu'à %1m</French>
<Japanese>%1m 間隔で 目標を追跡します</Japanese>
</Key>
</Package>

View File

@ -6,8 +6,8 @@
*
* Arguments:
* 0: Source ID <STRING> (default: "")
* 1: Show Hud Bool Array (8 to set, empty to remove) <ARRAY> (default: [])
* - [hud, info, radar, compass, direction, menu, group, cursors]
* 1: Show Hud Bool Array (10 to set, empty to remove) <ARRAY> (default: [])
* - [hud, info, radar, compass, direction, menu, group, cursors, panels, kills]
* - hud: Boolean - show scripted HUD (same as normal showHUD true/false)
* - info: Boolean - show vehicle + soldier info (hides weapon info from the HUD as well)
* - radar: Boolean - show vehicle radar
@ -17,7 +17,8 @@
* - group: Boolean - show group info bar (hides squad leader info bar)
* - cursors: Boolean - show HUD weapon cursors (connected with scripted HUD)
* - panels: Boolean - show vehicle panels / GPS
* - ???: Boolean - Possibly related to changelog entry `Added: A new showKillConfirmations parameter for the showHud command`
* - kills: Boolean - show "x killed by y" systemChat messages
* - showIcon3D: is unsupported as it has inverted logic
*
* Return Value:
* Resulting ShowHud Array <ARRAY>

View File

@ -1,4 +1,31 @@
class CfgVehicles {
class CUP_nHMMWV_Base;
class CUP_nM1025_SOV_Base: CUP_nHMMWV_Base {
class EGVAR(interaction,anims) {
class hide_backpacks {
positions[] = {
"(_target selectionPosition ['vhc_backpacks', 'ViewGeometry', 'AveragePoint']) vectorAdd [-1, 0, 0]",
"(_target selectionPosition ['vhc_backpacks', 'ViewGeometry', 'AveragePoint']) vectorAdd [1.3, 0, 0]"
};
items[] = {"CUP_B_USPack_Coyote", "CUP_B_USPack_Coyote", "CUP_B_AssaultPack_ACU", "CUP_B_AssaultPack_ACU", "CUP_B_AssaultPack_Coyote"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
};
};
};
class Car_F;
class CUP_ECVHMMWV_Base: Car_F {
class EGVAR(interaction,anims) {
class hide_deploy2 {
positions[] = {"(_target selectionPosition ['vhc_rear_trunk_door', 'FireGeometry', 'AveragePoint']) vectorAdd [-0.7, 0, 0]"};
items[] = {"CUP_B_USPack_Coyote", "CUP_B_AssaultPack_ACU"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
};
};
};
class CUP_MTVR_Base;
class CUP_MTVR_Reammo_Base: CUP_MTVR_Base {
EGVAR(rearm,defaultSupply) = 1200;
@ -106,6 +133,17 @@ class CfgVehicles {
class CUP_BTR90_HQ_Base: CUP_BTR90_Base { delete ace_viewports; }; // no cargo seats
class Tank_F;
class CUP_AAV_Base: Tank_F {
class EGVAR(interaction,anims) {
class Hide_Bags_Deployment {
positions[] = {{1.7, -0.7, -0.3}, {1.7, -2.55, -0.3}};
items[] = {"CUP_B_USPack_Coyote", "CUP_B_USPack_Coyote"};
name = "$STR_CUP_dn_USpack_coyote";
text = "$STR_CUP_dn_USpack_coyote";
};
};
};
class CUP_M2Bradley_Base: Tank_F {
ace_hunterkiller = 1;
class ace_viewports {

View File

@ -0,0 +1,196 @@
class CfgVehicles {
class Car_F;
class CUP_Datsun_Base: Car_F {
class EGVAR(interaction,anims) {
class hideSpareTire {
positions[] = {{-0.23, -0.25, -0.8}};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class CUP_Datsun_AA_Base: CUP_Datsun_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hideSpareTire: hideSpareTire {
enabled = 0;
};
};
};
class CUP_Tigr_Base: Car_F {
class EGVAR(interaction,anims) {
class hide_ReserveWheel {
positions[] = {{0.57, -2.3, -0.55}};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class CUP_Tigr_STS_PK_Base: CUP_Tigr_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_ReserveWheel: hide_ReserveWheel {};
};
};
class CUP_Tigr_233014_PK_Base: CUP_Tigr_STS_PK_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_ReserveWheel: hide_ReserveWheel {
positions[] = {{0.57, -2.3, -0.85}};
};
};
};
class CUP_Tigr_M_PK_Base: CUP_Tigr_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_ReserveWheel: hide_ReserveWheel {};
};
};
class CUP_Tigr_233114_PK_Base: CUP_Tigr_M_PK_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_ReserveWheel: hide_ReserveWheel {
positions[] = {{0.57, -2.3, -0.85}};
};
};
};
class CUP_LR_Base: Car_F {
class EGVAR(interaction,anims) {
class selection_wheelfront {
positions[] = {"_target selectionPosition ['selection_wheelfront', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
class selection_wheels {
positions[] = {
"(_target selectionPosition ['selection_wheels', 'ViewGeometry', 'AveragePoint']) vectorAdd [-1.1, 0, 0]",
"(_target selectionPosition ['selection_wheels', 'ViewGeometry', 'AveragePoint']) vectorAdd [1.1, 0, 0]"
};
items[] = {"ACE_Wheel", "ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class CUP_nHMMWV_Base: Car_F {
class EGVAR(interaction,anims) {
class hide_spare_wheel {
positions[] = {"_target selectionPosition ['vhc_spare_wheel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
// Don't inherit, as it's easier for the main compat
class CUP_nM1025_SOV_Base: CUP_nHMMWV_Base {
class EGVAR(interaction,anims) {
class hide_spare_wheel {
positions[] = {"_target selectionPosition ['vhc_spare_wheel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class CUP_RG31_BASE: Car_F {
class EGVAR(interaction,anims) {
class left_spare {
positions[] = {"_target selectionPosition ['left_spare', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
class right_spare {
positions[] = {"_target selectionPosition ['right_spare', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class CUP_UAZ_Base: Car_F {
class EGVAR(interaction,anims) {
class hide_spare_wheel {
positions[] = {"_target selectionPosition ['spare_wheel', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class CUP_UAZ_Armed_Base: CUP_UAZ_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare_wheel: hide_spare_wheel {};
};
};
class CUP_UAZ_AA_Base: CUP_UAZ_Armed_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare_wheel: hide_spare_wheel {
positions[] = {{0.18, -1.8, 0.75}};
};
};
};
class CUP_UAZ_AGS30_Base: CUP_UAZ_Armed_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare_wheel: hide_spare_wheel {
positions[] = {{0.18, -1.9, 0.75}};
};
};
};
class CUP_UAZ_MG_Base: CUP_UAZ_Armed_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare_wheel: hide_spare_wheel {
positions[] = {{0.18, -1.9, 0.2}};
};
};
};
// Visual is bugged, but it works
class CUP_UAZ_METIS_Base: CUP_UAZ_Armed_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare_wheel: hide_spare_wheel {
positions[] = {{0.18, -1.9, 0.65}};
};
};
};
class CUP_UAZ_SPG9_Base: CUP_UAZ_Armed_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare_wheel: hide_spare_wheel {
positions[] = {{0.18, -1.9, 1.05}};
};
};
};
class CUP_UAZ_Unarmed_Base: CUP_UAZ_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare_wheel: hide_spare_wheel {};
};
};
class CUP_UAZ_Open_Base: CUP_UAZ_Unarmed_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_spare_wheel: hide_spare_wheel {
positions[] = {{0.135, -1.3, 0.7}};
};
};
};
class CUP_ECVHMMWV_Base: Car_F {
class EGVAR(interaction,anims) {
class hide_spare_tire {
positions[] = {"(_target selectionPosition ['vhc_rear_trunk_door', 'FireGeometry', 'AveragePoint']) vectorAdd [0.05, -0.4, 0.2]"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
class hide_deploy1 {
positions[] = {"(_target selectionPosition ['vhc_rear_trunk_door', 'FireGeometry', 'AveragePoint']) vectorAdd [0.05, 0.5, 0.7]"};
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[] = {
"CUP_Vehicles_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,111 @@
class CfgVehicles {
class Car_F;
class CUP_Tigr_Base: Car_F {
class EGVAR(interaction,anims) {
class hide_tools {
positions[] = {{1.15, -1.5, -0.68}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class CUP_Tigr_STS_PK_Base: CUP_Tigr_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tools: hide_tools {};
};
};
class CUP_Tigr_233014_PK_Base: CUP_Tigr_STS_PK_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tools: hide_tools {
positions[] = {{1.15, -1.5, -1}};
};
};
};
class CUP_Tigr_M_PK_Base: CUP_Tigr_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tools: hide_tools {};
};
};
class CUP_Tigr_233114_PK_Base: CUP_Tigr_M_PK_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tools: hide_tools {
positions[] = {{1.15, -1.5, -1}};
};
};
};
// Interaction added to both sides, as the whole vehicle is mirrored if in left/right side
class CUP_LR_Base: Car_F {
class EGVAR(interaction,anims) {
class selection_tool {
positions[] = {{-0.53, 1.65, -0.2}, {0.53, 1.65, -0.2}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class CUP_LR_MG_Base: CUP_LR_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class selection_tool: selection_tool {
positions[] = {{-0.6, 1.4, 1.4}, {0.45, 1.4, 1.4}};
};
};
};
class CUP_LR_SPG9_Base: CUP_LR_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class selection_tool: selection_tool {};
};
};
class CUP_LR_AA_Base: CUP_LR_SPG9_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class selection_tool: selection_tool {
positions[] = {{-0.55, 1.77, -0.75}, {0.55, 1.77, -0.75}};
};
};
};
class CUP_LR_Ambulance_Base: CUP_LR_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class selection_tool: selection_tool {
positions[] = {{-0.55, 2.1, -0.2}, {0.55, 2.1, -0.2}};
};
};
};
class CUP_LR_Special_Base: CUP_LR_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class selection_tool: selection_tool {
positions[] = {{-0.6, 1.4, 1.4}, {0.45, 1.4, 1.4}};
};
};
};
class CUP_ECVHMMWV_Base: Car_F {
class EGVAR(interaction,anims) {
class hide_front_tool_rack {
positions[] = {"(_target selectionPosition ['vhc_rear_trunk_door', 'FireGeometry', 'AveragePoint']) vectorAdd [0.37, 4, 0.2]"};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class Tank_F;
class CUP_leopard_1A3_base: Tank_F {
class EGVAR(interaction,anims) {
class hide_Tools_L {
positions[] = {{-2.2, 0, 0.2}, {-2.2, -1.8, 0.2}};
items[] = {"ACE_EntrenchingTool", "ACE_wirecutter"};
name = "$STR_a3_cfgeditorsubcategories_edsubcat_tools0";
text = "$STR_a3_cfgeditorsubcategories_edsubcat_tools0";
};
class hide_Tools_R {
positions[] = {{0.9, -1.5, 0.23}};
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[] = {
"CUP_Vehicles_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

@ -15,6 +15,8 @@ class CfgPatches {
authors[] = {"Community Upgrade Project", "Mike"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
addonRootClass = QUOTE(ADDON);
};
};

View File

@ -28,4 +28,90 @@ class CfgVehicles {
EGVAR(refuel,hooks)[] = {{-1.09, -0.01, -0.5},{1, -0.01, -0.5}};
EGVAR(refuel,fuelCargo) = 10000;
};
class Car_F;
class CUP_LR_Base: Car_F {
class EGVAR(interaction,anims) {
class selection_jerry {
positions[] = {{-0.65, 2.7, -0.55}, {0.65, 2.7, -0.55}, {-1, -0.25, -0.75}, {1, -0.25, -0.75}};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class CUP_LR_MG_Base: CUP_LR_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class selection_jerry: selection_jerry {
positions[] = {{-0.55, 2.45, 1.05}, {0.55, 2.45, 1.05}, {-1, -0.53, 0.9}, {1, -0.53, 0.9}};
};
};
};
class CUP_LR_SPG9_Base: CUP_LR_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class selection_jerry: selection_jerry {};
};
};
class CUP_LR_AA_Base: CUP_LR_SPG9_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class selection_jerry: selection_jerry {
positions[] = {{-0.65, 2.8, -1.1}, {0.65, 2.8, -1.1}, {-1, -0.15, -1.3}, {1, -0.15, -1.3}};
};
};
};
class CUP_LR_Ambulance_Base: CUP_LR_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class selection_jerry: selection_jerry {
positions[] = {{-0.65, 3.1, -0.55}, {0.65, 3.1, -0.55}};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F"};
};
};
};
class CUP_LR_Special_Base: CUP_LR_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class selection_jerry: selection_jerry {
positions[] = {{-0.7, 2.45, 1.05}, {0.55, 2.45, 1.05}};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F"};
};
};
};
class CUP_nHMMWV_Base: Car_F {
class EGVAR(interaction,anims) {
class hide_jerrycans {
positions[] = {"(_target selectionPosition 'vhc_jerrycans') vectorAdd [0, 0, 0.15]"};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
// Don't inherit, as it's easier for the main compat
class CUP_nM1025_SOV_Base: CUP_nHMMWV_Base {
class EGVAR(interaction,anims) {
class hide_jerrycans {
positions[] = {"(_target selectionPosition 'vhc_jerrycans') vectorAdd [0, 0, 0.15]"};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class hide_rear_rack_content {
positions[] = {"_target selectionPosition ['vhc_rear_rack_content', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class CUP_ECVHMMWV_Base: Car_F {
class EGVAR(interaction,anims) {
class hide_jerrycans {
positions[] = {"(_target selectionPosition ['vhc_rear_trunk_door', 'FireGeometry', 'AveragePoint']) vectorAdd [-0.85, -0.22, -0.1]"};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
};

View File

@ -10,6 +10,7 @@
<Spanish>[CSW] Cinta de AGS30</Spanish>
<Italian>[CSW] Nastro AGS30</Italian>
<Portuguese>[CSW] Cinto de AGS30</Portuguese>
<French>[CSW] Ceinture AGS30</French>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_MK19_displayName">
<English>[CSW] MK19 Belt</English>
@ -20,6 +21,7 @@
<Spanish>[CSW] Cinta de MK19</Spanish>
<Italian>[CSW] Nastro MK19</Italian>
<Portuguese>[CSW] Cinto de MK19</Portuguese>
<French>[CSW] Ceinture MK19</French>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_TOW_displayName">
<English>[CSW] TOW Tube</English>
@ -30,6 +32,7 @@
<Spanish>[CSW] Tubo de TOW</Spanish>
<Italian>[CSW] Tubo TOW</Italian>
<Portuguese>[CSW] Tubo de TOW</Portuguese>
<French>[CSW] Tube TOW</French>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_TOW2_displayName">
<English>[CSW] TOW2 Tube</English>
@ -40,6 +43,7 @@
<Spanish>[CSW] Tubo de TOW2</Spanish>
<Italian>[CSW] Tubo TOW2</Italian>
<Portuguese>[CSW] Tubo de TOW2</Portuguese>
<French>[CSW] Tube TOW2</French>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_PG9_displayName">
<English>[CSW] PG-9 Round</English>
@ -50,6 +54,7 @@
<Spanish>[CSW] Carga de PG-9</Spanish>
<Italian>[CSW] Razzo PG-9</Italian>
<Portuguese>[CSW] Cartucho PG-9</Portuguese>
<French>[CSW] Projectile PG-9</French>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_OG9_displayName">
<English>[CSW] OG-9 Round</English>
@ -60,6 +65,7 @@
<Spanish>[CSW] Carga de OG-9</Spanish>
<Italian>[CSW] Razzo OG-9</Italian>
<Portuguese>[CSW] Cartucho OG-9</Portuguese>
<French>[CSW] Projectile OG-9.</French>
</Key>
<Key ID="STR_ACE_Compat_CUP_Weapons_CSW_mag_M1HE_displayName">
<English>[CSW] M1 HE</English>

View File

@ -81,15 +81,242 @@ class CfgVehicles {
class gm_brdm2_base: gm_wheeled_APC_base {
EGVAR(refuel,fuelCapacity) = 290;
class EGVAR(interaction,anims) {
class AmmoBox_01_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['ammobox_01', 'FireGeometry', 'AveragePoint']"};
items[] = {"gm_AmmoBox_wood_04_empty"};
name = "$STR_DN_gm_AmmoBox_wood_04_base";
text = "$STR_DN_gm_AmmoBox_wood_04_base";
};
class AmmoBox_02_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['ammobox_02', 'FireGeometry', 'AveragePoint']"};
items[] = {"gm_AmmoBox_wood_04_empty"};
name = "$STR_DN_gm_AmmoBox_wood_04_base";
text = "$STR_DN_gm_AmmoBox_wood_04_base";
};
class AmmoBox_03_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['ammobox_03', 'FireGeometry', 'AveragePoint']"};
items[] = {"gm_AmmoBox_wood_04_empty"};
name = "$STR_DN_gm_AmmoBox_wood_04_base";
text = "$STR_DN_gm_AmmoBox_wood_04_base";
};
};
};
class gm_brdm2um_base: gm_brdm2_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class AmmoBox_01_unhide: AmmoBox_01_unhide {
positions[] = {{-0.1, -1.9, -0.5}};
};
class AmmoBox_02_unhide: AmmoBox_02_unhide {
positions[] = {{-0.55, -0.35, -0.35}};
};
class AmmoBox_03_unhide: AmmoBox_03_unhide {
positions[] = {{0.3, -1.85, -0.5}};
};
};
};
class gm_btr60_base: gm_wheeled_APC_base {
EGVAR(refuel,fuelCapacity) = 290;
EGVAR(cookoff,cookoffSelections)[] = {"commanderturret_hatch"};
class EGVAR(interaction,anims) {
class AmmoBox_01_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['ammobox_01', 'FireGeometry', 'AveragePoint']"};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_02_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['ammobox_02', 'FireGeometry', 'AveragePoint']"};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_03_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['ammobox_03', 'FireGeometry', 'AveragePoint']"};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_04_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['ammobox_04', 'FireGeometry', 'AveragePoint']"};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_05_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['ammobox_05', 'FireGeometry', 'AveragePoint']"};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_06_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['ammobox_06', 'FireGeometry', 'AveragePoint']"};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_07_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['ammobox_07', 'FireGeometry', 'AveragePoint']"};
items[] = {"gm_AmmoBox_wood_04_empty"};
name = "$STR_DN_gm_AmmoBox_wood_04_base";
text = "$STR_DN_gm_AmmoBox_wood_04_base";
};
};
};
class gm_ural375d_base: gm_wheeled_truck_base {
EGVAR(refuel,fuelCapacity) = 360;
class EGVAR(interaction,anims) {
class AmmoBox_01_unhide {
phase = 0;
positions[] = {{-0.55, 1.83, 0.7}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
distance = 2.5;
};
class AmmoBox_02_unhide {
phase = 0;
positions[] = {{0, 1.83, 0.7}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
distance = 3;
};
class AmmoBox_03_unhide {
phase = 0;
positions[] = {{0.55, 1.83, 0.7}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
distance = 2.5;
};
class AmmoBox_04_unhide {
phase = 0;
positions[] = {{-0.45, 1.83, 0.7}};
items[] = {"gm_AmmoBox_wood_04_empty"};
name = "$STR_DN_gm_AmmoBox_wood_04_base";
text = "$STR_DN_gm_AmmoBox_wood_04_base";
distance = 2.5;
};
};
};
class gm_ural375d_mlrs_base: gm_ural375d_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class AmmoBox_01_unhide: AmmoBox_01_unhide {
positions[] = {{-0.55, 2, 0.5}};
};
class AmmoBox_02_unhide: AmmoBox_02_unhide {
positions[] = {{0, 2, 0.5}};
};
class AmmoBox_03_unhide: AmmoBox_03_unhide {
positions[] = {{0.55, 2, 0.5}};
};
class AmmoBox_04_unhide: AmmoBox_04_unhide {
positions[] = {{-0.45, 2, 0.5}};
};
};
};
class gm_ural375d_medic_base: gm_ural375d_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class AmmoBox_01_unhide: AmmoBox_01_unhide {
positions[] = {{-0.55, 2, 0.7}};
};
class AmmoBox_02_unhide: AmmoBox_02_unhide {
positions[] = {{0, 2, 0.7}};
};
class AmmoBox_03_unhide: AmmoBox_03_unhide {
positions[] = {{0.55, 2, 0.7}};
};
class AmmoBox_04_unhide: AmmoBox_04_unhide {
positions[] = {{-0.45, 2, 0.7}};
};
};
};
class gm_ural4320_base: gm_wheeled_truck_base {
EGVAR(refuel,fuelCapacity) = 360;
class EGVAR(interaction,anims) {
class AmmoBox_01_unhide {
phase = 0;
positions[] = {{-0.55, 1.47, 0.7}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
distance = 2.5;
};
class AmmoBox_02_unhide {
phase = 0;
positions[] = {{0, 1.47, 0.7}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
distance = 3;
};
class AmmoBox_03_unhide {
phase = 0;
positions[] = {{0.55, 1.47, 0.7}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
distance = 2.5;
};
class AmmoBox_04_unhide {
phase = 0;
positions[] = {{-0.45, 1.47, 0.7}};
items[] = {"gm_AmmoBox_wood_04_empty"};
name = "$STR_DN_gm_AmmoBox_wood_04_base";
text = "$STR_DN_gm_AmmoBox_wood_04_base";
distance = 2.5;
};
};
};
class gm_ural4320_repair_base: gm_ural4320_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class AmmoBox_01_unhide: AmmoBox_01_unhide {
positions[] = {{-0.55, 1.62, 0.7}};
};
class AmmoBox_02_unhide: AmmoBox_02_unhide {
positions[] = {{0, 1.62, 0.7}};
};
class AmmoBox_03_unhide: AmmoBox_03_unhide {
positions[] = {{0.55, 1.62, 0.7}};
};
class AmmoBox_04_unhide: AmmoBox_04_unhide {
positions[] = {{-0.45, 1.62, 0.7}};
};
};
};
class gm_ural44202_base: gm_ural4320_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class AmmoBox_01_unhide: AmmoBox_01_unhide {
positions[] = {{-0.55, 1.37, 0.7}};
};
class AmmoBox_02_unhide: AmmoBox_02_unhide {
positions[] = {{0, 1.37, 0.7}};
};
class AmmoBox_03_unhide: AmmoBox_03_unhide {
positions[] = {{0.55, 1.37, 0.7}};
};
class AmmoBox_04_unhide: AmmoBox_04_unhide {
positions[] = {{-0.45, 1.37, 0.7}};
};
};
};
class gm_ural4320_reammo_base: gm_ural4320_base {
@ -190,9 +417,103 @@ class CfgVehicles {
EGVAR(refuel,fuelCapacity) = 460;
EGVAR(cookoff,cookoffSelections)[] = {"mainturret_hatch","commanderturret_hatch"};
};
class gm_bmp1sp2_base: gm_bmp1_base {
class EGVAR(interaction,anims) {
class AmmoBox_01_unhide {
phase = 0;
positions[] = {{-1.2, -2.52, -1.2}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_02_unhide {
phase = 0;
positions[] = {{-1.3, -2, -1.2}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_03_unhide {
phase = 0;
positions[] = {{-1.35, -1.43, -1.2}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_04_unhide {
phase = 0;
positions[] = {{1.2, -2.52, -1.2}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_05_unhide {
phase = 0;
positions[] = {{1.3, -2, -1.2}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_06_unhide {
phase = 0;
positions[] = {{1.35, -1.43, -1.2}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_07_unhide {
phase = 0;
positions[] = {{-1.45, 0.1, -1.3}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_08_unhide {
phase = 0;
positions[] = {{-1.45, 2, -1.3}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
class AmmoBox_09_unhide {
phase = 0;
positions[] = {{1.45, 2, -1.3}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
};
};
};
class gm_pt76_base: gm_tracked_Tank_base {
EGVAR(refuel,fuelCapacity) = 250;
class EGVAR(interaction,anims) {
class AmmoBox_01_unhide {
phase = 0;
positions[] = {{0.08, -1.75, -1}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
distance = 2.5;
};
class AmmoBox_02_unhide {
phase = 0;
positions[] = {{0.08, -1.38, -1}};
items[] = {"gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47"};
name = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
text = "$STR_DN_gm_AmmoBox_880Rnd_762x39mm_b_M43_ak47";
distance = 2.5;
};
class AmmoBox_03_unhide {
phase = 0;
positions[] = {{0.08, -2.15, -1}};
items[] = {"gm_AmmoBox_wood_04_empty"};
name = "$STR_DN_gm_AmmoBox_wood_04_base";
text = "$STR_DN_gm_AmmoBox_wood_04_base";
distance = 2.5;
};
};
};
class gm_t55_base: gm_tracked_Tank_base {
@ -204,6 +525,21 @@ class CfgVehicles {
EGVAR(refuel,fuelCapacity) = 812;
};
class gm_tracked_Artillery_base;
class gm_2s1_base: gm_tracked_Artillery_base {
class EGVAR(interaction,anims) {
class AmmoBox_01_unhide {
phase = 0;
// Rotate interactions with turret rotation
positions[] = {"[0, -1.3, 0] vectorAdd ([[0, -1.1, -0.35], [0, 0, 1], deg (_target animationPhase 'mainturret_trav_anim')] call CBA_fnc_vectRotate3D)"};
items[] = {"gm_AmmoBox_wood_04_empty"};
name = "$STR_DN_gm_AmmoBox_wood_04_base";
text = "$STR_DN_gm_AmmoBox_wood_04_base";
distance = 2.5;
};
};
};
// WEST
class gm_Leopard1_base;
class gm_Leopard1a0_base: gm_Leopard1_base {
@ -211,6 +547,27 @@ class CfgVehicles {
EGVAR(cookoff,cookoffSelections)[] = {"mainturret_hatch_1","commanderturret_hatch"};
};
class gm_Leopard1a1_base: gm_Leopard1a0_base {
class EGVAR(interaction,anims) {
class AmmoBox_01_unhide {
phase = 0;
// Rotate interactions with turret rotation
positions[] = {"[0, -0.6, 0] vectorAdd ([[0.7, -2, -0.6], [0, 0, 1], deg (_target animationPhase 'mainturret_trav_anim')] call CBA_fnc_vectRotate3D)"};
items[] = {"gm_AmmoBox_wood_04_empty"};
name = "$STR_DN_gm_AmmoBox_wood_04_base";
text = "$STR_DN_gm_AmmoBox_wood_04_base";
};
class AmmoBox_02_unhide {
phase = 0;
// Rotate interactions with turret rotation
positions[] = {"[0, -0.6, 0] vectorAdd ([[-0.3, -1.95, -0.6], [0, 0, 1], deg (_target animationPhase 'mainturret_trav_anim')] call CBA_fnc_vectRotate3D)"};
items[] = {"gm_AmmoBox_wood_04_empty"};
name = "$STR_DN_gm_AmmoBox_wood_04_base";
text = "$STR_DN_gm_AmmoBox_wood_04_base";
};
};
};
class gm_Gepard_base: gm_Leopard1_base {
EGVAR(refuel,fuelCapacity) = 985;
};
@ -257,42 +614,39 @@ class CfgVehicles {
EGVAR(refuel,fuelCapacity) = 3700;
EGVAR(fastroping,enabled) = 0;
// TODO: stringtables
class UserActions {
class openDoor_L {
displayNameDefault = "Open left Door";
displayName = "Open left Door";
position = "";
radius = 2.7;
onlyForPlayer = 1;
condition = QUOTE((this animationSourcePhase 'door_2_1_unhide' > 0.5) && (this doorPhase 'door_2_1_source' < 0.5) && {alive this} && {!(this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)])});
statement = "this animateDoor ['door_2_1_source',1]";
};
class openDoor_R: openDoor_L {
displayNameDefault = "Open right Door";
displayName = "Open right Door";
condition = QUOTE((this animationSourcePhase 'door_2_2_unhide' > 0.5) && (this doorPhase 'door_2_2_source' < 0.5) && {alive this} && {!(this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)])});
statement = "this animateDoor ['door_2_2_source',1]";
};
class closeDoor_L {
displayNameDefault = "Close left Door";
displayName = "Close left Door";
position = "";
radius = 2.7;
onlyForPlayer = 1;
condition = QUOTE((this animationSourcePhase 'door_2_1_unhide' > 0.5) && (this doorPhase 'door_2_1_source' > 0.5) && {alive this} && {!(this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)])});
statement = "this animateDoor ['door_2_1_source',0]";
};
class closeDoor_R: closeDoor_L {
displayNameDefault = "Close right Door";
displayName = "Close right Door";
condition = QUOTE((this animationSourcePhase 'door_2_2_unhide' > 0.5) && (this doorPhase 'door_2_2_source' > 0.5) && {alive this} && {!(this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)])});
statement = "this animateDoor ['door_2_2_source',0]";
};
class openDoor_L {
displayNameDefault = "$STR_a3_cfgvehicles_useractions_openldoor0";
displayName = "$STR_a3_cfgvehicles_useractions_openldoor0";
position = "";
radius = 2.7;
onlyForPlayer = 1;
condition = QUOTE((this animationSourcePhase 'door_2_1_unhide' > 0.5) && (this doorPhase 'door_2_1_source' < 0.5) && {alive this} && {!(this getVariable [ARR_2(QQEGVAR(fastroping,doorsLocked),false)])});
statement = "this animateDoor ['door_2_1_source',1]";
};
class openDoor_R: openDoor_L {
displayNameDefault = "$STR_a3_cfgvehicles_useractions_openrdoor0";
displayName = "$STR_a3_cfgvehicles_useractions_openrdoor0";
condition = QUOTE((this animationSourcePhase 'door_2_2_unhide' > 0.5) && (this doorPhase 'door_2_2_source' < 0.5) && {alive this} && {!(this getVariable [ARR_2(QQEGVAR(fastroping,doorsLocked),false)])});
statement = "this animateDoor ['door_2_2_source',1]";
};
class closeDoor_L {
displayNameDefault = "$STR_a3_cfgvehicles_useractions_closeldoor0";
displayName = "$STR_a3_cfgvehicles_useractions_closeldoor0";
position = "";
radius = 2.7;
onlyForPlayer = 1;
condition = QUOTE((this animationSourcePhase 'door_2_1_unhide' > 0.5) && (this doorPhase 'door_2_1_source' > 0.5) && {alive this} && {!(this getVariable [ARR_2(QQEGVAR(fastroping,doorsLocked),false)])});
statement = "this animateDoor ['door_2_1_source',0]";
};
class closeDoor_R: closeDoor_L {
displayNameDefault = "$STR_a3_cfgvehicles_useractions_closerdoor0";
displayName = "$STR_a3_cfgvehicles_useractions_closerdoor0";
condition = QUOTE((this animationSourcePhase 'door_2_2_unhide' > 0.5) && (this doorPhase 'door_2_2_source' > 0.5) && {alive this} && {!(this getVariable [ARR_2(QQEGVAR(fastroping,doorsLocked),false)])});
statement = "this animateDoor ['door_2_2_source',0]";
};
};
};
class gm_bo105p1m_vbh_base;
class gm_bo105p1m_vbh_swooper_base: gm_bo105p1m_vbh_base {

View File

@ -0,0 +1,336 @@
class CfgVehicles {
class gm_typ2_base;
class gm_typ251_base: gm_typ2_base {
class EGVAR(interaction,anims) {
class canister_01_unhide {
phase = 0;
positions[] = {{-0.55, -0.17, 0.4}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class canister_02_unhide {
phase = 0;
positions[] = {{-0.55, -0.65, 0.4}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class gm_typ253_base: gm_typ2_base {
class EGVAR(interaction,anims) {
class canister_01_unhide {
phase = 0;
positions[] = {{-0.55, -0.19, 0.4}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class canister_02_unhide {
phase = 0;
positions[] = {{-0.55, -0.68, 0.4}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class gm_wheeled_truck_base;
class gm_ural375d_base: gm_wheeled_truck_base {
class EGVAR(interaction,anims) {
class fuelcan_1_1_unhide {
phase = 0;
positions[] = {{-0.95, 3.15, -0.45}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class fuelcan_1_2_unhide {
phase = 0;
positions[] = {{0.9, 3.15, -0.45}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class gm_ural375d_mlrs_base: gm_ural375d_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class fuelcan_1_1_unhide: fuelcan_1_1_unhide {
positions[] = {{-0.95, 3.35, -0.55}};
};
class fuelcan_1_2_unhide: fuelcan_1_2_unhide {
positions[] = {{0.9, 3.35, -0.55}};
};
};
};
class gm_ural375d_medic_base: gm_ural375d_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class fuelcan_1_1_unhide: fuelcan_1_1_unhide {
positions[] = {{-0.95, 3.35, -0.45}};
};
class fuelcan_1_2_unhide: fuelcan_1_2_unhide {
positions[] = {{0.9, 3.35, -0.45}};
};
};
};
class gm_ural4320_base: gm_wheeled_truck_base {
class EGVAR(interaction,anims) {
class fuelcan_1_1_unhide {
phase = 0;
positions[] = {{-0.9, 3.1, -0.4}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class fuelcan_1_2_unhide {
phase = 0;
positions[] = {{0.9, 3.1, -0.4}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class gm_ural4320_repair_base: gm_ural4320_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class fuelcan_1_1_unhide: fuelcan_1_1_unhide {
positions[] = {{-0.9, 3.25, -0.4}};
};
class fuelcan_1_2_unhide: fuelcan_1_2_unhide {
positions[] = {{0.9, 3.25, -0.4}};
};
};
};
class gm_ural44202_base: gm_ural4320_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class fuelcan_1_1_unhide: fuelcan_1_1_unhide {
positions[] = {{-0.9, 3, -0.4}};
};
class fuelcan_1_2_unhide: fuelcan_1_2_unhide {
positions[] = {{0.9, 3, -0.4}};
};
};
};
class gm_wheeled_APC_base;
class gm_brdm2_base: gm_wheeled_APC_base {
class EGVAR(interaction,anims) {
class FuelCanister_01_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['fuelcanister_01', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelCanister_02_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['fuelcanister_02', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelCanister_03_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['fuelcanister_03', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class gm_brdm2um_base: gm_brdm2_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class FuelCanister_01_unhide: FuelCanister_01_unhide {
positions[] = {{0.87, -3, -1.2}};
};
class FuelCanister_02_unhide: FuelCanister_02_unhide {
positions[] = {{-0.87, -3, -1.2}};
};
class FuelCanister_03_unhide: FuelCanister_03_unhide {
positions[] = {{-0.4, -1.85, -0.5}};
};
};
};
class gm_btr60_base: gm_wheeled_APC_base {
class EGVAR(interaction,anims) {
class FuelCanister_01_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['fuelcanister_01', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelCanister_02_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['fuelcanister_02', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelCanister_03_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['fuelcanister_03', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelCanister_04_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['fuelcanister_04', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelCanister_05_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['fuelcanister_05', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelCanister_06_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['fuelcanister_06', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class gm_btr60pa_base: gm_btr60_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class FuelCanister_05_unhide: FuelCanister_05_unhide {
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
};
class FuelCanister_06_unhide: FuelCanister_06_unhide {
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
};
};
};
class gm_btr60pb_base: gm_btr60_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class FuelCanister_03_unhide: FuelCanister_03_unhide {
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
};
class FuelCanister_04_unhide: FuelCanister_04_unhide {
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
};
};
};
class gm_btr60pu12_base: gm_btr60_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class FuelCanister_03_unhide: FuelCanister_03_unhide {
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
};
class FuelCanister_04_unhide: FuelCanister_04_unhide {
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
};
};
};
class gm_bmp1_base;
class gm_bmp1sp2_base: gm_bmp1_base {
class EGVAR(interaction,anims) {
class FuelCanister_01_unhide {
phase = 0;
positions[] = {{-1.2, -2.52, -1.2}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelCanister_02_unhide {
phase = 0;
positions[] = {{1.2, -2.52, -1.2}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class gm_zsu234_base;
class gm_zsu234v1_base: gm_zsu234_base {
class EGVAR(interaction,anims) {
class FuelCanister_01_unhide {
phase = 0;
// Rotate interactions with turret rotation
positions[] = {"[0, 0.2, 0] vectorAdd ([[-0.85, -2.2, -0.9], [0, 0, 1], deg (_target animationPhase 'mainturret_trav_anim')] call CBA_fnc_vectRotate3D)"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelCanister_02_unhide {
phase = 0;
// Rotate interactions with turret rotation
positions[] = {"[0, 0.2, 0] vectorAdd ([[0.7, -2.25, -0.85], [0, 0, 1], deg (_target animationPhase 'mainturret_trav_anim')] call CBA_fnc_vectRotate3D)"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelCanister_03_unhide {
phase = 0;
// Rotate interactions with turret rotation
positions[] = {"[0, 0.2, 0] vectorAdd ([[0.92, -2.25, -0.85], [0, 0, 1], deg (_target animationPhase 'mainturret_trav_anim')] call CBA_fnc_vectRotate3D)"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class gm_tracked_Tank_base;
class gm_pt76_base: gm_tracked_Tank_base {
class EGVAR(interaction,anims) {
class FuelTank_01_unhide {
phase = 0;
positions[] = {{-1, -2.85, -1}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelTank_02_unhide {
phase = 0;
positions[] = {{1, -2.85, -1}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class gm_Leopard1a0_base;
class gm_Leopard1a1_base: gm_Leopard1a0_base {
class EGVAR(interaction,anims) {
class FuelCanister_01_unhide {
phase = 0;
// Rotate interactions with turret rotation
positions[] = {"[0, -0.6, 0] vectorAdd ([[0.25, -1.9, -0.55], [0, 0, 1], deg (_target animationPhase 'mainturret_trav_anim')] call CBA_fnc_vectRotate3D)"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
distance = 2.5;
};
class FuelCanister_02_unhide {
phase = 0;
// Rotate interactions with turret rotation
positions[] = {"[0, -0.6, 0] vectorAdd ([[-0.8, -1.65, -0.55], [0, 0, 1], deg (_target animationPhase 'mainturret_trav_anim')] call CBA_fnc_vectRotate3D)"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
class FuelCanister_03_unhide {
phase = 0;
// Rotate interactions with turret rotation
positions[] = {"[0, -0.6, 0] vectorAdd ([[0.8, -1.8, -0.55], [0, 0, 1], deg (_target animationPhase 'mainturret_trav_anim')] call CBA_fnc_vectRotate3D)"};
items[] = {"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,100 @@
class CfgVehicles {
class gm_wheeled_car_base;
class gm_uaz469_base: gm_wheeled_car_base {
class EGVAR(interaction,anims) {
class spare_wheel_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['spare_wheel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class gm_wheeled_APC_base;
class gm_brdm2_base: gm_wheeled_APC_base {
class EGVAR(interaction,anims) {
class SpareWheel_01_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['sparewheel_01', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
distance = 2.5;
};
class SpareWheel_02_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['sparewheel_02', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class gm_brdm2um_base: gm_brdm2_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class SpareWheel_01_unhide: SpareWheel_01_unhide {
positions[] = {{0.2, -0.7, -0.25}};
distance = 2;
};
class SpareWheel_02_unhide: SpareWheel_02_unhide {
positions[] = {{0, -1.6, -0.4}};
};
};
};
class gm_btr60_base: gm_wheeled_APC_base {
class EGVAR(interaction,anims) {
class SpareWheel_01_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['sparewheel_01', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
distance = 3;
};
class SpareWheel_02_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['sparewheel_02', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
class SpareWheel_03_unhide {
phase = 0;
positions[] = {"_target selectionPosition ['sparewheel_03', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class gm_bmp1_base;
class gm_bmp1sp2_base: gm_bmp1_base {
class EGVAR(interaction,anims) {
class spareTracks_1_1_unhide {
phase = 0;
positions[] = {"(_target selectionPosition ['door_1_1', 'FireGeometry', 'AveragePoint']) vectorAdd [0, 0, -0.15]"};
items[] = {"ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
class spareTracks_1_2_unhide {
phase = 0;
positions[] = {"(_target selectionPosition ['door_1_2', 'FireGeometry', 'AveragePoint']) vectorAdd [0, 0, -0.15]"};
items[] = {"ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
class spareTracks_2_1_unhide {
phase = 0;
positions[] = {{-1.1, -2.7, -1.3}, {1.1, -2.7, -1.3}};
items[] = {"ACE_Track", "ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
};

View File

@ -0,0 +1,23 @@
#include "script_component.hpp"
class CfgPatches {
class SUBADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {
"gm_core",
"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,47 @@
class CfgVehicles {
class gm_wheeled_truck_base;
class gm_ural375d_base: gm_wheeled_truck_base {
class EGVAR(interaction,anims) {
class tools_unhide {
phase = 0;
positions[] = {{0.9, 3.15, -0.5}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class gm_ural375d_mlrs_base: gm_ural375d_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class tools_unhide: tools_unhide {
positions[] = {{0.9, 3.35, -0.65}};
};
};
};
class gm_ural375d_medic_base: gm_ural375d_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class tools_unhide: tools_unhide {
positions[] = {{0.9, 3.35, -0.5}};
};
};
};
class gm_ural4320_base: gm_wheeled_truck_base {
class EGVAR(interaction,anims) {
class tools_unhide {
phase = 0;
positions[] = {{0.93, 2.7, -0.5}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class gm_ural44202_base: gm_ural4320_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class tools_unhide: tools_unhide {
positions[] = {{0.9, 2.6, -0.5}};
};
};
};
};

View File

@ -0,0 +1,23 @@
#include "script_component.hpp"
class CfgPatches {
class SUBADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {
"gm_core",
"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

@ -7,6 +7,7 @@
<Korean>이오텍 MRDS (카키)</Korean>
<German>EOTech MRDS (Khaki)</German>
<Italian>EOTech MRDS (Cachi)</Italian>
<French>EOTech MRDS (Khaki)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_optic_mrd_tan_Name">
<English>EOTech MRDS (Tan)</English>
@ -14,6 +15,7 @@
<Korean>이오텍 MRDS (황갈)</Korean>
<German>EOTech MRDS (Hellbraun)</German>
<Italian>EOTech MRDS (Marroncino)</Italian>
<French>EOTech MRDS (Marron)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_optic_aco_grn_desert_Name">
<English>C-More Railway (Green, Desert)</English>
@ -21,6 +23,7 @@
<Korean>씨모어 레일웨이 (녹색, 사막)</Korean>
<German>C-More Railway (Grün, Wüste)</German>
<Italian>C-More Railway (Verde, Deserto)</Italian>
<French>C-More Railway (Vert, Désert)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_optic_aco_grn_wood_Name">
<English>C-More Railway (Green, Woodland)</English>
@ -28,6 +31,7 @@
<Korean>씨모어 레일웨이 (녹색, 수풀 위장)</Korean>
<German>C-More Railway (Grün, Grünes Tarnmuster)</German>
<Italian>C-More Railway (Verde, Boschivo)</Italian>
<French>C-More Railway (Vert, Woodland)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_optic_aco_desert_Name">
<English>C-More Railway (Red, Desert)</English>
@ -35,6 +39,7 @@
<Korean>씨모어 레일웨이 (빨강, 사막)</Korean>
<German>C-More Railway (Rot, Wüste)</German>
<Italian>C-More Railway (Rosso, Desert)</Italian>
<French>C-More Railway (Rouge, Désert)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_optic_aco_wood_Name">
<English>C-More Railway (Red, Woodland)</English>
@ -42,6 +47,7 @@
<Korean>씨모어 레일웨이 (빨강, 수풀)</Korean>
<German>C-More Railway (Rot, Grünes Tarnmuster)</German>
<Italian>C-More Railway (Rosso, Boschivo)</Italian>
<French>C-More Railway (Rouge, Woodland)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_optic_rds_Name">
<English>Aimpoint Micro R-1</English>
@ -49,6 +55,7 @@
<Korean>에임포인트 마이크로 R-1</Korean>
<German>Aimpoint Micro R-1</German>
<Italian>Aimpoint Micro R-1</Italian>
<French>Aimpoint Micro R-1</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_optic_vrco_Name">
<English>Vortex Spitfire Prism</English>
@ -56,6 +63,7 @@
<Korean>버텍스 스핏파이어 프리즘</Korean>
<German>Vortex Spitfire Prism</German>
<Italian>Vortex Spitfire Prism</Italian>
<French>Vortex Spitfire Prism</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_optic_vrco_tan_Name">
<English>Vortex Spitfire Prism (Tan)</English>
@ -63,6 +71,7 @@
<Korean>버텍스 스핏파이어 프리즘 (황갈)</Korean>
<German>Vortex Spitfire Prism (Hellbraun)</German>
<Italian>Vortex Spitfire Prism (Marroncino)</Italian>
<French>Vortex Spitfire Prism (Marron)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_optic_vrco_khk_Name">
<English>Vortex Spitfire Prism (Khaki)</English>
@ -70,6 +79,7 @@
<Korean>버텍스 스핏파이어 프리즘 (카키)</Korean>
<German>Vortex Spitfire Prism (Khaki)</German>
<Italian>Vortex Spitfire Prism (Cachi)</Italian>
<French>Vortex Spitfire Prism (Khaki)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_optic_vrco_pistol_Name">
<English>Vortex Spitfire Prism (Pistol)</English>
@ -77,6 +87,7 @@
<Korean>버텍스 스핏파이어 프리즘 (권총용)</Korean>
<German>Vortex Spitfire Prism (Pistole)</German>
<Italian>Vortex Spitfire Prism (Pistola)</Italian>
<French>Vortex Spitfire Prism (Pistol)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_glock19_Name">
<English>Glock 19X</English>
@ -84,6 +95,7 @@
<Korean>글록 19X</Korean>
<German>Glock 19X</German>
<Italian>Glock 19X</Italian>
<French>Glock 19X</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_glock19_khk_Name">
<English>Glock 19X (Khaki)</English>
@ -91,6 +103,7 @@
<Korean>글록 19X (카키)</Korean>
<German>Glock 19X (Khaki)</German>
<Italian>Glock 19X (Cachi)</Italian>
<French>Glock 19X (Khaki)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_glock19_tan_Name">
<English>Glock 19X (Tan)</English>
@ -98,6 +111,7 @@
<Korean>글록 19X (황갈)</Korean>
<German>Glock 19X (Hellbraun)</German>
<Italian>Glock 19X (Marroncino)</Italian>
<French>Glock 19X (Marron)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_glock19_auto_Name">
<English>Glock 19X Auto</English>
@ -105,6 +119,7 @@
<Korean>글록 19X 기관권총</Korean>
<German>Glock 19X Auto</German>
<Italian>Glock 19X Auto</Italian>
<French>Glock 19X Auto</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_glock19_auto_khk_Name">
<English>Glock 19X Auto (Khaki)</English>
@ -112,6 +127,7 @@
<Korean>글록 19X 기관권총 (카키)</Korean>
<German>Glock 19X Auto (Khaki)</German>
<Italian>Glock 19X Auto (Cachi)</Italian>
<French>Glock 19X Auto (Khaki)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_glock19_auto_tan_Name">
<English>Glock 19X Auto (Tan)</English>
@ -119,6 +135,7 @@
<Korean>글록 19X 기관권총 (황갈)</Korean>
<German>Glock 19X Auto (Hellbraun)</German>
<Italian>Glock 19X Auto (Marroncino)</Italian>
<French>Glock 19X Auto (Marron)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_deagle_Name">
<English>Desert Eagle Mark XIX L5</English>
@ -126,6 +143,7 @@
<Korean>데저트 이글 마크 XIX L5</Korean>
<German>Desert Eagle Mark XIX L5</German>
<Italian>Desert Eagle Mark XIX L5</Italian>
<French>Desert Eagle Mark XIX L5</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_deagle_classic_Name">
<English>Desert Eagle Mark XIX L5 (Classic)</English>
@ -133,6 +151,7 @@
<Korean>데저트 이글 마크 XIX L5 (클래식)</Korean>
<German>Desert Eagle Mark XIX L5 (Klassisch)</German>
<Italian>Desert Eagle Mark XIX L5 (Classico)</Italian>
<French>Desert Eagle Mark XIX L5 (Classique)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_deagle_bronze_Name">
<English>Desert Eagle Mark XIX L5 (Bronze)</English>
@ -140,6 +159,7 @@
<Korean>데저트 이글 마크 XIX L5 (브론즈)</Korean>
<German>Desert Eagle Mark XIX L5 (Bronze)</German>
<Italian>Desert Eagle Mark XIX L5 (Bronzo)</Italian>
<French>Desert Eagle Mark XIX L5 (Bronze)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_deagle_copper_Name">
<English>Desert Eagle Mark XIX L5 (Copper)</English>
@ -147,6 +167,7 @@
<Korean>데저트 이글 마크 XIX L5 (구리)</Korean>
<German>Desert Eagle Mark XIX L5 (Kupfer)</German>
<Italian>Desert Eagle Mark XIX L5 (Rame)</Italian>
<French>Desert Eagle Mark XIX L5 (Cuivre)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_deagle_gold_Name">
<English>Desert Eagle Mark XIX L5 (Gold)</English>
@ -154,6 +175,7 @@
<Korean>데저트 이글 마크 XIX L5 (금색)</Korean>
<German>Desert Eagle Mark XIX L5 (Gold)</German>
<Italian>Desert Eagle Mark XIX L5 (Oro)</Italian>
<French>Desert Eagle Mark XIX L5 (Or)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_h6_tan_Name">
<English>HERA H6 (Tan)</English>
@ -161,6 +183,7 @@
<Korean>헤라 H6 (황갈)</Korean>
<German>HERA H6 (Hellbraun)</German>
<Italian>HERA H6 (Marroncino)</Italian>
<French>HERA H6 (Marron)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_h6_oli_Name">
<English>HERA H6 (Olive)</English>
@ -168,6 +191,7 @@
<Korean>헤라 H6 (올리브)</Korean>
<German>HERA H6 (Olivgrün)</German>
<Italian>HERA H6 (Oliva)</Italian>
<French>HERA H6 (Olive)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_h6_blk_Name">
<English>HERA H6 (Black)</English>
@ -175,6 +199,7 @@
<Korean>헤라 H6 (검정)</Korean>
<German>HERA H6 (Schwarz)</German>
<Italian>HERA H6 (Nero)</Italian>
<French>HERA H6 (Noir)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_h6_digi_Name">
<English>HERA H6 (Digital)</English>
@ -182,6 +207,7 @@
<Korean>헤라 H6 (AAF 디지털)</Korean>
<German>HERA H6 (Digital)</German>
<Italian>HERA H6 (Digitale)</Italian>
<French>HERA H6 (Digital)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_h6_gold_Name">
<English>HERA H6 (Gold)</English>
@ -189,6 +215,7 @@
<Korean>헤라 H6 (금색)</Korean>
<German>HERA H6 (Gold)</German>
<Italian>HERA H6 (Oro)</Italian>
<French>HERA H6 (Or)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_dmr_01_black_Name">
<English>VS-121 (Black)</English>
@ -196,6 +223,7 @@
<Korean>VS-121 (검정)</Korean>
<German>VS-121 (Schwarz)</German>
<Italian>VS-121 (Nero)</Italian>
<French>VS-121 (Noir)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_dmr_01_tan_Name">
<English>VS-121 (Tan)</English>
@ -203,6 +231,7 @@
<Korean>VS-121 (황갈)</Korean>
<German>VS-121 (Hellbraun)</German>
<Italian>VS-121 (Marroncino)</Italian>
<French>VS-121 (Marron)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_smg_01_black_Name">
<English>Vector SMG (Black)</English>
@ -210,6 +239,7 @@
<Korean>벡터 SMG (검정)</Korean>
<German>Vector SMG (Schwarz)</German>
<Italian>Vector SMG (Nero)</Italian>
<French>Vector SMG (Noir)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_blk_Name">
<English>ASh-12 (Black)</English>
@ -217,6 +247,7 @@
<Korean>ASh-12 (검정)</Korean>
<German>ASh-12 (Schwarz)</German>
<Italian>ASh-12 (Nero)</Italian>
<French>ASh-12 (Noir)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_desert_Name">
<English>ASh-12 (Desert)</English>
@ -224,6 +255,7 @@
<Korean>ASh-12 (사막)</Korean>
<German>ASh-12 (Wüste)</German>
<Italian>ASh-12 (Deserto)</Italian>
<French>ASh-12 (Désert )</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_urban_Name">
<English>ASh-12 (Urban)</English>
@ -231,6 +263,7 @@
<Korean>ASh-12 (도심)</Korean>
<German>ASh-12 (Urban)</German>
<Italian>ASh-12 (Urbano)</Italian>
<French>ASh-12 (Urbain)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_wood_Name">
<English>ASh-12 (Woodland)</English>
@ -238,6 +271,7 @@
<Korean>ASh-12 (수풀)</Korean>
<German>ASh-12 (Grünes Tarnmuster)</German>
<Italian>ASh-12 (Boschivo)</Italian>
<French>ASh-12 (Woodland)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_gl_blk_Name">
<English>ASh-12 GL (Black)</English>
@ -245,6 +279,7 @@
<Korean>ASh-12 GL (검정)</Korean>
<German>ASh-12 GL (Schwarz)</German>
<Italian>ASh-12 GL (Nero)</Italian>
<French>ASh-12 GL (Noir)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_gl_desert_Name">
<English>ASh-12 GL (Desert)</English>
@ -252,6 +287,7 @@
<Korean>ASh-12 GL (사막)</Korean>
<German>ASh-12 GL (Wüste)</German>
<Italian>ASh-12 GL (Deserto)</Italian>
<French>ASh-12 GL (Désert)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_gl_urban_Name">
<English>ASh-12 GL (Urban)</English>
@ -259,6 +295,7 @@
<Korean>ASh-12 GL (도심)</Korean>
<German>ASh-12 GL (Urban)</German>
<Italian>ASh-12 GL (Urbano)</Italian>
<French>ASh-12 GL (Urbain)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_gl_wood_Name">
<English>ASh-12 GL (Woodland)</English>
@ -266,6 +303,7 @@
<Korean>ASh-12 GL (수풀)</Korean>
<German>ASh-12 GL (Grünes Tarnmuster)</German>
<Italian>ASh-12 GL (Boschivo)</Italian>
<French>ASh-12 GL (Woodland)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_lr_blk_Name">
<English>ASh-12 LR (Black)</English>
@ -273,6 +311,7 @@
<Korean>ASh-12 LR (검정)</Korean>
<German>ASh-12 LR (Schwarz)</German>
<Italian>ASh-12 LR (Nero)</Italian>
<French>ASh-12 LR (Noir)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_lr_desert_Name">
<English>ASh-12 LR (Desert)</English>
@ -280,6 +319,7 @@
<Korean>ASh-12 LR (사막)</Korean>
<German>ASh-12 LR (Wüste)</German>
<Italian>ASh-12 LR (Deserto)</Italian>
<French>ASh-12 LR (Désert)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_lr_urban_Name">
<English>ASh-12 LR (Urban)</English>
@ -287,6 +327,7 @@
<Korean>ASh-12 LR (도심)</Korean>
<German>ASh-12 LR (Urban)</German>
<Italian>ASh-12 LR (Urbano)</Italian>
<French>ASh-12 LR (Urbain)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ash12_lr_wood_Name">
<English>ASh-12 LR (Woodland)</English>
@ -294,6 +335,7 @@
<Korean>ASh-12 LR (수풀)</Korean>
<German>ASh-12 LR (Grünes Tarnmuster)</German>
<Italian>ASh-12 LR (Boschivo)</Italian>
<French>ASh-12 LR (Woodland)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_heli_light_03_Name">
<English>AW159 Wildcat ASW</English>
@ -301,6 +343,7 @@
<Korean>AW159 와일드캣 ASW</Korean>
<German>AW159 Wildcat ASW</German>
<Italian>AW159 Wildcat ASW</Italian>
<French>AW159 Wildcat ASW</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_heli_light_03_unarmed_Name">
<English>AW159 Wildcat ASW (Unarmed)</English>
@ -308,6 +351,7 @@
<Korean>AW159 와일드캣 ASW (비무장)</Korean>
<German>AW159 Wildcat ASW (Unbewaffnet)</German>
<Italian>AW159 Wildcat ASW (Disarmato)</Italian>
<French>AW159 Wildcat ASW (non armé)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ec_01_base_Name">
<English>H225 Super Puma (Transport)</English>
@ -315,6 +359,7 @@
<Korean>H225 슈퍼 퓨마 (비무장)</Korean>
<German>H225 Super Puma (Transport)</German>
<Italian>H225 Super Puma (Trasporto)</Italian>
<French>H225 Super Puma (Transport )</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ec_01_civ_base_Name">
<English>H225 Super Puma (Civilian)</English>
@ -322,6 +367,7 @@
<Korean>H225 슈퍼 퓨마 (비무장)</Korean>
<German>H225 Super Puma (Zivil)</German>
<Italian>H225 Super Puma (Civile)</Italian>
<French>H225 Super Puma (Civil)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ec_01a_base_Name">
<English>H215 Super Puma (Transport)</English>
@ -329,6 +375,7 @@
<Korean>H215 슈퍼 퓨마 (비무장)</Korean>
<German>H215 Super Puma (Transport)</German>
<Italian>H215 Super Puma (Trasporto)</Italian>
<French>H215 Super Puma (Transport)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ec_01a_civ_base_Name">
<English>H215 Super Puma (Civilian)</English>
@ -336,6 +383,7 @@
<Korean>H215 슈퍼 퓨마 (비무장)</Korean>
<German>H215 Super Puma (Zivil)</German>
<Italian>H215 Super Puma (Civile)</Italian>
<French>H215 Super Puma (Civil)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ec_01a_military_base_Name">
<English>H215 Super Puma (Unarmed)</English>
@ -343,6 +391,7 @@
<Korean>H215 슈퍼 퓨마 (비무장)</Korean>
<German>H215 Super Puma (Unbewaffnet)</German>
<Italian>H215 Super Puma (Disarmato)</Italian>
<French>H215 Super Puma (non armé)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ec_02_base_Name">
<English>H225M Super Cougar SOCAT</English>
@ -350,6 +399,7 @@
<Korean>H225M 슈퍼 쿠거 SOCAT</Korean>
<German>H225M Super Cougar SOCAT</German>
<Italian>H225M Super Cougar SOCAT</Italian>
<French>H225M Super Cougar SOCAT</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ec_02_nato_Name">
<English>H225M Super Cougar SOCAT</English>
@ -357,6 +407,7 @@
<Korean>H225M 슈퍼 쿠거 SOCAT</Korean>
<German>H225M Super Cougar SOCAT</German>
<Italian>H225M Super Cougar SOCAT</Italian>
<French>H225M Super Cougar SOCAT</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ec_03_base_Name">
<English>H225M Super Cougar</English>
@ -364,6 +415,7 @@
<Korean>H225M 슈퍼 쿠거</Korean>
<German>H225M Super Cougar</German>
<Italian>H225M Super Cougar</Italian>
<French>H225M Super Cougar</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ec_04_base_Name">
<English>H225 Super Puma SAR</English>
@ -371,6 +423,7 @@
<Korean>H225 슈퍼 퓨마 SAR</Korean>
<German>H225 Super Puma SAR</German>
<Italian>H225 Super Puma SAR</Italian>
<French>H225 Super Puma SAR</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_ec_04_military_base_Name">
<English>H225M Super Cougar (Unarmed)</English>
@ -378,6 +431,7 @@
<German>H225M Super Cougar (Unbewaffnet)</German>
<Italian>H225M Super Cougar (Disarmato)</Italian>
<Korean>H225M 슈퍼 쿠거 (비무장)</Korean>
<French>H225M Super Cougar (Non armé)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_truck_01_water_Name">
<English>HEMTT Fire Truck</English>
@ -398,6 +452,7 @@
<Korean>타이푼 급수</Korean>
<German>Typhoon Water</German>
<Italian>Typhoon Acqua</Italian>
<French>Typhoon Water</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_pickup_01_Name">
<English>Ram 1500</English>
@ -405,6 +460,7 @@
<Korean>램 1500</Korean>
<German>Ram 1500</German>
<Italian>Ram 1500</Italian>
<French>Ram 1500</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_pickup_01_Fuel_Name">
<English>Ram 1500 (Fuel)</English>
@ -412,6 +468,7 @@
<Korean>램 1500 (연료)</Korean>
<German>Ram 1500 (Treibstoff)</German>
<Italian>Ram 1500 (Carburante)</Italian>
<French>Ram 1500 (Carburant)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_pickup_01_service_Name">
<English>Ram 1500 (Services)</English>
@ -419,6 +476,7 @@
<Korean>램 1500 (서비스)</Korean>
<German>Ram 1500 (Pannenhilfe)</German>
<Italian>Ram 1500 (Servizi)</Italian>
<French>Ram 1500 (Dépannage)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_pickup_01_repair_Name">
<English>Ram 1500 (Repair)</English>
@ -426,6 +484,7 @@
<Korean>램 1500 (정비)</Korean>
<German>Ram 1500 (Instandsetzung)</German>
<Italian>Ram 1500 (Riparazioni)</Italian>
<French>Ram 1500 (Réparation)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_pickup_01_comms_Name">
<English>Ram 1500 (Comms)</English>
@ -433,6 +492,7 @@
<Korean>램 1500 (통신)</Korean>
<German>Ram 1500 (Kommunikation)</German>
<Italian>Ram 1500 (Comunicazioni)</Italian>
<French>Ram 1500 (Communication)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_pickup_01_hmg_Name">
<English>Ram 1500 (HMG)</English>
@ -440,6 +500,7 @@
<Korean>램 1500 (중기관총)</Korean>
<German>Ram 1500 (HMG)</German>
<Italian>Ram 1500 (HMG)</Italian>
<French>Ram 1500 (HMG)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_pickup_01_mmg_Name">
<English>Ram 1500 (MMG)</English>
@ -447,6 +508,7 @@
<Korean>램 1500 (중형기관총)</Korean>
<German>Ram 1500 (MMG)</German>
<Italian>Ram 1500 (MMG)</Italian>
<French>Ram 1500 (MMG)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_pickup_01_mrl_Name">
<English>Ram 1500 (MRL)</English>
@ -454,6 +516,7 @@
<Korean>램 1500 (다연장로켓)</Korean>
<German>Ram 1500 (MRL)</German>
<Italian>Ram 1500 (MRL)</Italian>
<French>Ram 1500 (MRL)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_pickup_01_aa_Name">
<English>Ram 1500 (AA)</English>
@ -461,6 +524,7 @@
<Korean>램 1500 (대공)</Korean>
<German>Ram 1500 (AA)</German>
<Italian>Ram 1500 (AA)</Italian>
<French>Ram 1500 (AA)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_pickup_01_covered_Name">
<English>Ram 1500 (Covered)</English>
@ -468,6 +532,7 @@
<Korean>램 1500 (커버)</Korean>
<German>Ram 1500 (Abgedeckt)</German>
<Italian>Ram 1500 (Coperto)</Italian>
<French>Ram 1500 (couvert)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_pickup_01_water_Name">
<English>Ram 1500 (Water)</English>
@ -475,6 +540,7 @@
<Korean>램 1500 (급수)</Korean>
<German>Ram 1500 (Wasser)</German>
<Italian>Ram 1500 (Acqua)</Italian>
<French>Ram 1500 (eau)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_commando_Name">
<English>RSG60</English>
@ -482,6 +548,7 @@
<Korean>RSG60</Korean>
<German>RSG60</German>
<Italian>RSG60</Italian>
<French>RSG60</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_twinmortar_Name">
<English>AMOS Container</English>
@ -489,6 +556,7 @@
<Korean>AMOS 컨테이너</Korean>
<German>AMOS Container</German>
<Italian>AMOS Container</Italian>
<French>AMOS Container</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_rc40_base_Name">
<English>Drone40</English>
@ -496,6 +564,7 @@
<Korean>드론40</Korean>
<German>Drone40</German>
<Italian>Drone40</Italian>
<French>Drone40</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_rc40_Name">
<English>Drone40 Scout</English>
@ -503,6 +572,7 @@
<Korean>드론40 정찰</Korean>
<German>Drone40 Scout</German>
<Italian>Drone40 Scout</Italian>
<French>Drone40 Scout</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_rc40_he_Name">
<English>Drone40 HE</English>
@ -510,6 +580,7 @@
<Korean>드론40 고폭</Korean>
<German>Drone40 HE</German>
<Italian>Drone40 HE</Italian>
<French>Drone40 HE</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_rc40_white_Name">
<English>Drone40 Smoke (White)</English>
@ -517,6 +588,7 @@
<Korean>드론40 연막 (백색)</Korean>
<German>Drone40 Smoke (Weiß)</German>
<Italian>Drone40 Smoke (Bianco)</Italian>
<French>Drone40 Fumée (Blanc)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_rc40_blue_Name">
<English>Drone40 Smoke (Blue)</English>
@ -524,6 +596,7 @@
<Korean>드론40 연막 (청색)</Korean>
<German>Drone40 Smoke (Blau)</German>
<Italian>Drone40 Smoke (Blu)</Italian>
<French>Drone40 Fumée (Bleu)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_rc40_red_Name">
<English>Drone40 Smoke (Red)</English>
@ -531,6 +604,7 @@
<Korean>드론40 연막 (적색)</Korean>
<German>Drone40 Smoke (Rot)</German>
<Italian>Drone40 Smoke (Rosso)</Italian>
<French>Drone40 Fumée (Rouge)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_rc40_green_Name">
<English>Drone40 Smoke (Green)</English>
@ -538,6 +612,7 @@
<Korean>드론40 연막 (녹색)</Korean>
<German>Drone40 Smoke (Grün)</German>
<Italian>Drone40 Smoke (Verde)</Italian>
<French>Drone40 Fumée (Vert)</French>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_rc40_orange_Name">
<English>Drone40 Smoke (Orange)</English>
@ -545,6 +620,7 @@
<Korean>드론40 연막 (주황색)</Korean>
<German>Drone40 Smoke (Orange)</German>
<Italian>Drone40 Smoke (Arancione)</Italian>
<French>Drone40 Fumée (Orange)</French>
</Key>
</Package>
</Project>

View File

@ -60,6 +60,8 @@ class CfgVehicles {
EGVAR(vehicle_damage,turretFireProb) = 0.7;
EGVAR(vehicle_damage,engineFireProb) = 0.7;
EGVAR(vehicle_damage,detonationDuringFireProb) = 0.5;
class EGVAR(interaction,anims);
};
class rhs_infantry_msv_base;
@ -156,68 +158,186 @@ class CfgVehicles {
EGVAR(vehicle_damage,engineFireProb) = 0.8;
EGVAR(vehicle_damage,detonationDuringFireProb) = 0.8;
EGVAR(vehicle_damage,canHaveFireRing) = 1;
};
};
class rhs_btr60_base: rhs_btr_base {
EGVAR(refuel,fuelCapacity) = 290;
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide {
positions[] = {{-1.1, 2, -0.3}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_l2_unhide {
positions[] = {{-1.1, 1.05, -0.3}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_l3_unhide {
positions[] = {{-1.1, -1.1, -0.3}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r1_unhide {
positions[] = {{1.1, 1.93, -0.3}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r2_unhide {
positions[] = {{1.1, 0.25, -0.3}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r3_unhide {
positions[] = {{1.1, -1.1, -0.3}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
};
};
class rhs_btr70_vmf: rhs_btr_base {
EGVAR(refuel,fuelCapacity) = 350;
class ace_viewports {
class view_0 {
camLocation[] = {0.478394, -0.575, -0.145};
camAttach = 90;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
class view_1 {
camLocation[] = {-1.38184, -0.575, -0.145};
camAttach = -90;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
};
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide {
positions[] = {{-1.7, 0.55, -0.4}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_l2_unhide {
positions[] = {{-1.7, -0.95, -0.4}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_l3_unhide {
positions[] = {{-1.7, -1.45, -0.4}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_l4_unhide {
positions[] = {{-1.7, -2.7, -0.4}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r1_unhide {
positions[] = {{0.8, 1, -0.4}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r2_unhide {
positions[] = {{0.8, 0.12, -0.4}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r3_unhide {
positions[] = {{0.8, -0.7, -0.4}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r4_unhide {
positions[] = {{0.8, -1.85, -0.4}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
};
};
class rhs_btr70_msv: rhs_btr70_vmf {};
class rhs_btr80_msv: rhs_btr70_msv {
EGVAR(refuel,fuelCapacity) = 300;
class ace_viewports {
class view_0 {
camLocation[] = {0.534424, -0.336914, 0.636819};
camAttach = 45;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
class view_1 {
camLocation[] = {0.760254, -0.459473, 0.526328};
camAttach = 90;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
class view_2 {
camLocation[] = {0.770508, -1.21924, 0.526954};
camAttach = 90;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
class view_3 {
camLocation[] = {-1.13, -1.2085, 0.490339};
camAttach = -90;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
class view_4 {
camLocation[] = {-1.14124, -0.416992, 0.460611};
camAttach = -90;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
class view_5 {
camLocation[] = {-0.932983, -0.326172, 0.647666};
camAttach = -45;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
};
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide: crate_l1_unhide {
positions[] = {{-1.45, 0, 0.25}};
};
class crate_l2_unhide: crate_l2_unhide {
positions[] = {{-1.45, -1.68, 0.15}};
};
class crate_l3_unhide: crate_l3_unhide {
positions[] = {{-1.45, -2.87, 0.15}};
};
class crate_l4_unhide: crate_l4_unhide {
enabled = 0;
};
class crate_r1_unhide: crate_r1_unhide {
positions[] = {{1.1, 0.97, 0.15}};
};
class crate_r2_unhide: crate_r2_unhide {
positions[] = {{1.1, -1.5, 0.15}};
};
class crate_r3_unhide: crate_r3_unhide {
enabled = 0;
};
class crate_r4_unhide: crate_r4_unhide {
enabled = 0;
};
};
};
@ -226,38 +346,56 @@ class CfgVehicles {
class view_0 {
camLocation[] = {0.589844, -0.314941, 0.449678};
camAttach = 45;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
class view_1 {
camLocation[] = {0.809082, -0.442871, 0.276865};
camAttach = 90;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
class view_2 {
camLocation[] = {0.819092, -1.24414, 0.27857};
camAttach = 90;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
class view_3 {
camLocation[] = {-1.1012, -1.22461, 0.341089};
camAttach = -90;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
class view_4 {
camLocation[] = {-1.11597, -0.458984, 0.307256};
camAttach = -90;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
class view_5 {
camLocation[] = {-0.869995, -0.304688, 0.461181};
camAttach = -45;
compartments[]={"Compartment1"};
roles[]={"cargo"};
compartments[] = {"Compartment1"};
roles[] = {"cargo"};
};
};
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide: crate_l1_unhide {
positions[] = {{-1.45, 0, 0}};
};
class crate_l2_unhide: crate_l2_unhide {
positions[] = {{-1.45, -1.68, 0}};
};
class crate_l3_unhide: crate_l3_unhide {
positions[] = {{-1.45, -2.87, 0}};
};
class crate_r1_unhide: crate_l3_unhide {
positions[] = {{1.1, 0.97, 0}};
};
class crate_r2_unhide: crate_r2_unhide {
positions[] = {{1.1, -1.5, 0}};
};
};
};
@ -279,11 +417,289 @@ class CfgVehicles {
EGVAR(vehicle_damage,turretFireProb) = 0.5;
EGVAR(vehicle_damage,engineFireProb) = 0.8;
EGVAR(vehicle_damage,detonationDuringFireProb) = 0.5;
class EGVAR(interaction,anims) {
class crate_l1_unhide {
positions[] = {{-1.45, 0.5, -0.65}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_l2_unhide {
positions[] = {{-1.45, -0.2, -0.65}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_l3_unhide {
positions[] = {{-1.45, -1.2, -0.65}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r1_unhide {
positions[] = {{1.45, 0.6, -0.65}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r2_unhide {
positions[] = {{1.45, -0.4, -0.65}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r3_unhide {
positions[] = {{1.45, -1.2, -0.65}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
};
};
class rhs_bmd1_base: rhs_bmd_base {};
class rhs_bmd1p: rhs_bmd1_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide: crate_l1_unhide {
positions[] = {{-1.45, 0.5, -0.8}};
};
class crate_l2_unhide: crate_l2_unhide {
positions[] = {{-1.45, -0.2, -0.8}};
};
class crate_l3_unhide: crate_l3_unhide {
positions[] = {{-1.45, -1.2, -0.8}};
};
class crate_r1_unhide: crate_l3_unhide {
positions[] = {{1.45, 0.6, -0.8}};
};
class crate_r2_unhide: crate_r2_unhide {
positions[] = {{1.45, -0.4, -0.8}};
};
class crate_r3_unhide: crate_r3_unhide {
positions[] = {{1.45, -1.2, -0.8}};
};
};
};
class rhs_bmd2_base: rhs_bmd_base {};
class rhs_bmd2: rhs_bmd2_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide: crate_l1_unhide {
positions[] = {{-1.45, 0.5, -0.8}};
};
class crate_l2_unhide: crate_l2_unhide {
positions[] = {{-1.45, -0.2, -0.8}};
};
class crate_l3_unhide: crate_l3_unhide {
positions[] = {{-1.45, -1.2, -0.8}};
};
class crate_r1_unhide: crate_l3_unhide {
positions[] = {{1.45, 0.6, -0.8}};
};
class crate_r2_unhide: crate_r2_unhide {
positions[] = {{1.45, -0.4, -0.8}};
};
class crate_r3_unhide: crate_r3_unhide {
positions[] = {{1.45, -1.2, -0.8}};
};
};
};
class rhs_bmd2m: rhs_bmd2 {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide: crate_l1_unhide {
positions[] = {{-1.45, 0.5, -0.7}};
};
class crate_l2_unhide: crate_l2_unhide {
positions[] = {{-1.45, -0.2, -0.7}};
};
class crate_l3_unhide: crate_l3_unhide {
positions[] = {{-1.45, -1.2, -0.7}};
};
class crate_r1_unhide: crate_l3_unhide {
positions[] = {{1.45, 0.6, -0.7}};
};
class crate_r2_unhide: crate_r2_unhide {
positions[] = {{1.45, -0.4, -0.7}};
};
class crate_r3_unhide: crate_r3_unhide {
positions[] = {{1.45, -1.2, -0.7}};
};
};
};
class rhs_bmp1tank_base: Tank_F {
EGVAR(map,vehicleLightColor)[] = {0,1,0,0.1};
EGVAR(refuel,fuelCapacity) = 460;
};
class rhs_bmp_base: rhs_bmp1tank_base {
EGVAR(vehicle_damage,hullDetonationProb) = 0;
EGVAR(vehicle_damage,turretDetonationProb) = 0.2;
EGVAR(vehicle_damage,engineDetonationProb) = 0;
EGVAR(vehicle_damage,hullFireProb) = 0.8;
EGVAR(vehicle_damage,turretFireProb) = 0.5;
EGVAR(vehicle_damage,engineFireProb) = 0.8;
EGVAR(vehicle_damage,detonationDuringFireProb) = 0.5;
class EGVAR(interaction,anims) {
class crate_l1_unhide {
positions[] = {{-1.55, 1.1, -0.55}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_l2_unhide {
positions[] = {{-1.55, 0.35, -0.55}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_l3_unhide {
positions[] = {{-1.55, -0.6, -0.55}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r1_unhide {
positions[] = {{1.55, 1.75, -0.55}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r2_unhide {
positions[] = {{1.55, -0.25, -0.55}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
class crate_r3_unhide {
positions[] = {{1.55, -1, -0.55}};
items[] = {"rhs_3Ya40_1_single"};
name = "3Ya40-1 Crate";
text = "3Ya40-1 Crate";
};
};
};
class rhs_bmp1_vdv: rhs_bmp_base {};
class rhs_bmp1d_vdv: rhs_bmp1_vdv {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_r3_unhide: crate_r3_unhide {
positions[] = {{1.5, -1.2, -0.55}};
};
};
};
class rhs_prp3_vdv: rhs_bmp1_vdv {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide: crate_l1_unhide {
enabled = 0;
};
class crate_l2_unhide: crate_l2_unhide {
enabled = 0;
};
class crate_l3_unhide: crate_l3_unhide {
enabled = 0;
};
class crate_r1_unhide: crate_l3_unhide {
enabled = 0;
};
class crate_r2_unhide: crate_r2_unhide {
enabled = 0;
};
class crate_r3_unhide: crate_r3_unhide {
enabled = 0;
};
};
};
class rhs_bmp2e_vdv: rhs_bmp1_vdv {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide: crate_l1_unhide {
positions[] = {{-1.8, 1.05, -0.55}};
};
class crate_l2_unhide: crate_l2_unhide {
positions[] = {{-1.8, 0.35, -0.55}};
};
class crate_l3_unhide: crate_l3_unhide {
positions[] = {{-1.8, -0.65, -0.55}};
};
class crate_r1_unhide: crate_l3_unhide {
positions[] = {{1.4, 1.7, -0.55}};
};
class crate_r2_unhide: crate_r2_unhide {
positions[] = {{1.4, -0.25, -0.55}};
};
class crate_r3_unhide: crate_r3_unhide {
positions[] = {{1.4, -1.05, -0.55}};
};
};
};
class rhs_bmp2_vdv: rhs_bmp2e_vdv {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide: crate_l1_unhide {
positions[] = {{-1.8, 1.2, -0.55}};
};
class crate_l2_unhide: crate_l2_unhide {
positions[] = {{-1.8, 0.5, -0.55}};
};
class crate_l3_unhide: crate_l3_unhide {
positions[] = {{-1.8, -0.5, -0.55}};
};
class crate_r1_unhide: crate_l3_unhide {
positions[] = {{1.4, 1.85, -0.55}};
};
class crate_r2_unhide: crate_r2_unhide {
positions[] = {{1.4, -0.1, -0.55}};
};
class crate_r3_unhide: crate_r3_unhide {
positions[] = {{1.4, -0.9, -0.55}};
};
};
};
class rhs_bmp2e_msv: rhs_bmp2e_vdv {};
class rhs_Ob_681_2: rhs_bmp2e_msv {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide: crate_l1_unhide {
positions[] = {{-1.8, 1.2, -0.55}};
};
class crate_l2_unhide: crate_l2_unhide {
positions[] = {{-1.8, 0.5, -0.55}};
};
class crate_l3_unhide: crate_l3_unhide {
positions[] = {{-1.8, -0.5, -0.55}};
};
class crate_r1_unhide: crate_l3_unhide {
positions[] = {{1.4, 1.85, -0.55}};
};
class crate_r2_unhide: crate_r2_unhide {
positions[] = {{1.4, -0.1, -0.55}};
};
class crate_r3_unhide: crate_r3_unhide {
positions[] = {{1.4, -0.9, -0.55}};
};
};
};
class rhs_brm1k_base: rhs_bmp2e_vdv {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class crate_l1_unhide: crate_l1_unhide {
enabled = 0;
};
class crate_l2_unhide: crate_l2_unhide {
enabled = 0;
};
class crate_l3_unhide: crate_l3_unhide {
enabled = 0;
};
class crate_r1_unhide: crate_l3_unhide {
enabled = 0;
};
class crate_r2_unhide: crate_r2_unhide {
enabled = 0;
};
class crate_r3_unhide: crate_r3_unhide {
enabled = 0;
};
};
};
class rhs_bmp3tank_base: Tank_F {
EGVAR(refuel,fuelCapacity) = 460;
EGVAR(vehicle_damage,hullDetonationProb) = 0.2;
@ -293,37 +709,39 @@ class CfgVehicles {
EGVAR(vehicle_damage,turretFireProb) = 0.2;
EGVAR(vehicle_damage,engineFireProb) = 0.8;
EGVAR(vehicle_damage,detonationDuringFireProb) = 0.5;
class ace_viewports {
class view_0 {
camLocation[] = {1.02881, -0.923828, -0.647231};
screenLocation[] = {1.12881, -0.653828, -1.08223};
camAttach = 50;
maxDistance = 0.5;
roles[]={"cargo"};
roles[] = {"cargo"};
};
class view_1 {
camLocation[] = {1.01709, -1.55664, -0.647231};
screenLocation[] = {1.10709, -1.42664, -1.14223};
camAttach = 82;
maxDistance = 0.5;
roles[]={"cargo"};
roles[] = {"cargo"};
};
class view_2 {
camLocation[] = {-0.871094, -1.55762, -0.647231};
screenLocation[] = {-0.981094, -1.42762, -1.13223};
camAttach = 285;
maxDistance = 0.5;
roles[]={"cargo"};
roles[] = {"cargo"};
};
class view_3 {
camLocation[] = {-1.00879, -0.939941, -0.650259};
screenLocation[] = {-0.97879, -0.689941, -1.09526};
camAttach = 310;
maxDistance = 0.5;
roles[]={"cargo"};
roles[] = {"cargo"};
};
};
};
class rhs_a3spruttank_base: Tank_F {
EGVAR(refuel,fuelCapacity) = 400;
EGVAR(vehicle_damage,hullDetonationProb) = 0.2;
@ -334,6 +752,7 @@ class CfgVehicles {
EGVAR(vehicle_damage,engineFireProb) = 0.8;
EGVAR(vehicle_damage,detonationDuringFireProb) = 0.5;
};
class rhs_a3t72tank_base: Tank_F {
EGVAR(refuel,fuelCapacity) = 1200;
EGVAR(vehicle_damage,hullDetonationProb) = 0.8;
@ -344,15 +763,6 @@ class CfgVehicles {
EGVAR(vehicle_damage,engineFireProb) = 0.5;
EGVAR(vehicle_damage,detonationDuringFireProb) = 0.2;
};
class rhs_bmp_base: rhs_bmp1tank_base {
EGVAR(vehicle_damage,hullDetonationProb) = 0;
EGVAR(vehicle_damage,turretDetonationProb) = 0.2;
EGVAR(vehicle_damage,engineDetonationProb) = 0;
EGVAR(vehicle_damage,hullFireProb) = 0.8;
EGVAR(vehicle_damage,turretFireProb) = 0.5;
EGVAR(vehicle_damage,engineFireProb) = 0.8;
EGVAR(vehicle_damage,detonationDuringFireProb) = 0.5;
};
class rhs_t72bd_tv: rhs_a3t72tank_base {
EGVAR(vehicle_damage,eraHitpoints)[] = {
"era_1_hitpoint", "era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint",

View File

@ -43,7 +43,7 @@ class CfgVehicles {
class rhs_truck: Truck_F {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
positions[] = {"_target selectionPosition ['spare', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
@ -54,7 +54,7 @@ class CfgVehicles {
class RHS_Ural_BaseTurret: Truck_F {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
positions[] = {"_target selectionPosition ['spare', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
@ -65,7 +65,7 @@ class CfgVehicles {
class rhs_zil131_base: Truck_F {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
positions[] = {"_target selectionPosition ['spare', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
@ -77,7 +77,7 @@ class CfgVehicles {
class rhs_kraz255b1_base: rhs_kraz255_base {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
positions[] = {"_target selectionPosition ['spare', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
@ -89,7 +89,7 @@ class CfgVehicles {
class rhs_kamaz5350: O_Truck_02_covered_F {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
positions[] = {"_target selectionPosition ['spare', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
@ -101,7 +101,7 @@ class CfgVehicles {
class rhs_tigr_base: MRAP_02_base_F {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
positions[] = {"_target selectionPosition ['spare', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
@ -113,7 +113,7 @@ class CfgVehicles {
class RHS_UAZ_Base: Offroad_01_base_f {
class EGVAR(interaction,anims) {
class spare_hide {
selections[] = {"spare"};
positions[] = {"_target selectionPosition ['spare', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);

View File

@ -26,7 +26,7 @@ class CfgVehicles {
};
};
};
class rhsusf_stryker_m1134_base: rhsusf_stryker_m1132_m2_base {
class rhsusf_stryker_m1134_base: rhsusf_stryker_m1126_m2_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class Hide_FCans: Hide_FCans {
positions[] = {{-0.7, -3, -0.7}};

View File

@ -60,10 +60,11 @@ class CfgVehicles {
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]"};
positions[] = {"_target selectionPosition ['sparewheel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
distance = 2.5;
};
};
};
@ -72,7 +73,7 @@ class CfgVehicles {
class rhsusf_m1151_base: MRAP_01_base_F {
class EGVAR(interaction,anims) {
class hide_spare {
positions[] = {"_target selectionPosition 'sparewheel' vectorAdd [-0.465, 0, 0]"};
positions[] = {"_target selectionPosition ['sparewheel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
@ -83,7 +84,7 @@ class CfgVehicles {
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]"};
positions[] = {"_target selectionPosition ['sparewheel_gmv', 'Geometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
@ -94,7 +95,7 @@ class CfgVehicles {
class rhsusf_rg33_base: MRAP_01_base_F {
class EGVAR(interaction,anims) {
class hide_spare {
selections[] = {"sparewheel"};
positions[] = {"_target selectionPosition ['sparewheel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
@ -105,7 +106,7 @@ class CfgVehicles {
class rhsusf_M1239_base: MRAP_01_base_F {
class EGVAR(interaction,anims) {
class hide_spare {
selections[] = {"sparewheel"};
positions[] = {"_target selectionPosition ['sparewheel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
@ -116,7 +117,7 @@ class CfgVehicles {
class rhsusf_MATV_base: MRAP_01_base_F {
class EGVAR(interaction,anims) {
class hide_spare {
selections[] = {"sparewheel"};
positions[] = {"_target selectionPosition ['sparewheel', 'Geometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);

View File

@ -26,7 +26,7 @@ class CfgVehicles {
};
};
};
class rhsusf_stryker_m1134_base: rhsusf_stryker_m1132_m2_base {
class rhsusf_stryker_m1134_base: rhsusf_stryker_m1126_m2_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class Hide_PioKit: Hide_PioKit {
positions[] = {{-1, -2.2, -0.8}};

View File

@ -1,18 +1,55 @@
// M113A1 https://man.fas.org/dod-101/sys/land/m113.htm
class Tank_F;
class APC_Tracked_01_base_F: Tank_F {
class ACE_Actions;
};
class vn_armor_m113_base: APC_Tracked_01_base_F {
EGVAR(refuel,fuelCapacity) = 360;
class ACE_Actions: ACE_Actions {
class ACE_MainActions;
};
};
class vn_armor_m577_base: vn_armor_m113_base {
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {
position = "[0, 3.5, -1]";
};
};
};
// M41
class vn_armor_tank_base;
class vn_armor_m41_base: vn_armor_tank_base {
EGVAR(refuel,fuelCapacity) = 530;
};
// Type 63
class vn_armor_type63_base: vn_armor_tank_base {
EGVAR(refuel,fuelCapacity) = 545;
// M48
class vn_armor_m48_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_mainturret_backpacks {
// Rotate interactions with turret rotation
positions[] = {
"[[-1.3, -0.7, -0.4], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D",
"[[0.1, -2, -0.2], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D"
};
items[] = {"vn_b_pack_02_02", "vn_b_pack_04_02"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
};
};
};
// M113A1 https://man.fas.org/dod-101/sys/land/m113.htm
class APC_Tracked_01_base_F;
class vn_armor_m113_base: APC_Tracked_01_base_F {
EGVAR(refuel,fuelCapacity) = 360;
// T-54
class vn_armor_t54_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_mainturret_backpacks {
// Rotate interactions with turret rotation
positions[] = {"[0, -0.2, 0] vectorAdd ([[-1.1, -0.85, -1.3], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)"};
items[] = {"vn_o_pack_01", "vn_o_pack_02"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
};
};
};
// PT-76A https://en.wikipedia.org/wiki/PT-76
@ -24,3 +61,8 @@ class vn_armor_pt76_base: vn_armor_tank_base {
class vn_armor_pt76b_base: vn_armor_pt76_base {
EGVAR(refuel,fuelCapacity) = 400;
};
// Type 63
class vn_armor_type63_base: vn_armor_tank_base {
EGVAR(refuel,fuelCapacity) = 545;
};

View File

@ -0,0 +1,163 @@
class CfgVehicles {
// Vehicle animation interactions
// BTR-40
class vn_wheeled_car_base;
class vn_wheeled_btr40_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class refuel_can_hide {
positions[] = {{0.7, -2.35, -0.9}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class vn_wheeled_btr40_01_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.72, -2.35, -0.45}};
};
};
};
class vn_wheeled_btr40_ambulance_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.72, -2.35, -0.45}};
};
};
};
class vn_wheeled_btr40_mg_01_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.72, -2.35, -0.9}};
};
};
};
class vn_wheeled_btr40_mg_03_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.82, -2.35, -1.25}};
};
};
};
class vn_wheeled_btr40_mg_04_base: vn_wheeled_btr40_mg_01_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.72, -2.35, -1}};
};
};
};
class vn_wheeled_btr40_mg_05_base: vn_wheeled_btr40_mg_04_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class refuel_can_hide: refuel_can_hide {
positions[] = {{0.65, -2.25, -1}};
};
};
};
// M151
class vn_wheeled_m151_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class user_refuel_can_hide {
positions[] = {{-0.48, -1.5, -1.1}};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class vn_wheeled_m151_mg_03_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_refuel_can_hide: user_refuel_can_hide {
positions[] = {{-0.75, -1.5, -1}};
};
};
};
class vn_wheeled_m151_mg_05_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_refuel_can_hide: user_refuel_can_hide {
positions[] = {{0.9, -0.1, -1.1}};
};
};
};
class vn_wheeled_m151_mg_06_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_refuel_can_hide: user_refuel_can_hide {
positions[] = {{0.3, 0.1, -1.1}};
};
};
};
class vn_wheeled_m151_01_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_refuel_can_hide: user_refuel_can_hide {
positions[] = {{-0.4, -1.5, -0.7}};
};
};
};
// M577
class vn_armor_m113_base;
class vn_armor_m577_base: vn_armor_m113_base {
class EGVAR(interaction,anims) {
class hide_fuel_cans {
selections[] = {"hide_fuel_cans"};
positions[] = {{1.07, 1.05, -1}};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
// M48
class vn_armor_tank_base;
class vn_armor_m48_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_mainturret_jerrycan {
positions[] = {"_target selectionPosition ['hide_jerrycan', 'FireGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
// BTR-50PK
class vn_armor_btr50pk_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_barrels {
selections[] = {"hide_barrels"};
positions[] = {"private _pos = _target selectionPosition 'hide_barrels'; _pos set [0, -(_pos select 0)]; _pos"}; // Mirror position to other side of vehicle
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
// PT-76
class vn_armor_pt76_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_barrels {
selections[] = {"hide_barrels"};
positions[] = {"private _pos = _target selectionPosition 'hide_barrels'; _pos set [0, -(_pos select 0)]; _pos"}; // Mirror position to other side of vehicle
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
// Type 63
class vn_armor_type63_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_barrels {
selections[] = {"hide_barrels"};
positions[] = {"private _pos = _target selectionPosition 'hide_barrels'; _pos set [0, -(_pos select 0)]; _pos"}; // Mirror position to other side of vehicle
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
};

View File

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

View File

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

View File

@ -0,0 +1,141 @@
class CfgVehicles {
// Vehicle animation interactions
// M39 / M54 / M49
class vn_wheeled_truck_base;
class vn_wheeled_m54_base: vn_wheeled_truck_base {
class EGVAR(interaction,anims) {
class user_sparewheel_hide {
positions[] = {"_target selectionPosition ['hide_spare_wheel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class vn_wheeled_m54_mg_01_base: vn_wheeled_m54_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_sparewheel_hide: user_sparewheel_hide {
items[] = {"ACE_Wheel", "ACE_Wheel", "ACE_Wheel", "ACE_Wheel"};
};
};
};
// M151
class vn_wheeled_car_base;
class vn_wheeled_m151_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class user_sparewheel_hide {
positions[] = {"_target selectionPosition ['hide_sparewheel', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
// Dirt Ranger
class vn_wheeled_lr2a_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class hide_sparewheel {
positions[] = {"_target selectionPosition ['hide_sparewheel', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
// BTR-40
class vn_wheeled_btr40_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class sparewheel_hide {
positions[] = {"_target selectionPosition ['hide_sparewheel', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
// M48
class vn_armor_tank_base;
class vn_armor_m48_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_mainturret_tracks {
// Rotate interactions with turret rotation
positions[] = {
"[[1.3, 0.2, -0.5], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D",
"[[-1.3, 0.2, -0.5], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D"
};
items[] = {"ACE_Track", "ACE_Track", "ACE_Track", "ACE_Track", "ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
// BTR-50PK
class vn_armor_btr50pk_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_tracks {
positions[] = {{1.35, 2.5, -0.5}};
items[] = {"ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
class vn_armor_btr50pk_01_base: vn_armor_btr50pk_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tracks: hide_tracks {
positions[] = {{1.35, 2.5, -0.8}};
};
};
};
class vn_armor_btr50pk_02_base: vn_armor_btr50pk_01_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tracks: hide_tracks {
positions[] = {{1.35, 2.9, -0.8}};
};
};
};
// T-54
class vn_armor_t54_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_tracks {
positions[] = {{1.4, 2.1, -1.7}};
items[] = {"ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
// PT-76
class vn_armor_pt76_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_tracks {
// Rotate interactions with turret rotation
positions[] = {"[0, 0.9, 0] vectorAdd ([[-0.6, -0.9, -0.3], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)"};
items[] = {"ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
// Type 63
class vn_armor_type63_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_tracks {
// Rotate interactions with turret rotation
positions[] = {"[0, 0.7, 0] vectorAdd ([[0.4, -1.1, -0.4], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)"};
items[] = {"ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
};

View File

@ -0,0 +1,18 @@
#include "script_component.hpp"
class CfgPatches {
class SUBADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"loadorder_f_vietnam", "ace_repair"};
skipWhenMissingDependencies = 1;
author = ECSTRING(common,ACETeam);
authors[] = {"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

@ -60,4 +60,199 @@ class CfgVehicles {
class EGVAR(compat_sog,spiderhole_03_nogeo): vn_o_vc_spiderhole_03 {
scope = 1;
};
// Vehicle animation interactions
// BTR-40
class vn_wheeled_car_base;
class vn_wheeled_btr40_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class shovel_hide {
positions[] = {{0.95, -1.5, -0.75}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class vn_wheeled_btr40_01_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{0.95, -1.5, -0.3}};
};
};
};
class vn_wheeled_btr40_ambulance_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{0.95, -1.5, -0.3}};
};
};
};
class vn_wheeled_btr40_mg_01_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{0.95, -1.5, -0.8}};
};
};
};
class vn_wheeled_btr40_mg_03_base: vn_wheeled_btr40_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{1.05, -1.55, -1.1}};
};
};
};
class vn_wheeled_btr40_mg_04_base: vn_wheeled_btr40_mg_01_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{0.95, -1.5, -0.85}};
};
};
};
class vn_wheeled_btr40_mg_05_base: vn_wheeled_btr40_mg_04_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class shovel_hide: shovel_hide {
positions[] = {{0.9, -1.4, -0.85}};
};
};
};
// Dirt Ranger
class vn_wheeled_lr2a_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {"_target selectionPosition ['hide_shovel', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
// M151
class vn_wheeled_m151_base: vn_wheeled_car_base {
class EGVAR(interaction,anims) {
class user_shovel_hide {
positions[] = {{0.65, 0.2, -1.4}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class vn_wheeled_m151_mg_03_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_shovel_hide: user_shovel_hide {
positions[] = {{0.35, 0.2, -1.27}};
};
};
};
class vn_wheeled_m151_mg_05_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_shovel_hide: user_shovel_hide {
enabled = 0;
};
};
};
class vn_wheeled_m151_mg_06_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_shovel_hide: user_shovel_hide {
enabled = 0;
};
};
};
class vn_wheeled_m151_01_base: vn_wheeled_m151_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class user_shovel_hide: user_shovel_hide {
positions[] = {{0.72, 0.2, -0.92}};
};
};
};
// M113
class APC_Tracked_01_base_F;
class vn_armor_m113_base: APC_Tracked_01_base_F {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {{0.2, 2.2, -0.5}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class vn_armor_m113_01_base: vn_armor_m113_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_shovel: hide_shovel {};
};
};
class vn_armor_m132_base: vn_armor_m113_01_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_shovel: hide_shovel {
positions[] = {{0.2, 2.2, -0.35}};
};
};
};
// Don't inherit, as it's easier for the refuel compat
// M577
class vn_armor_m577_base: vn_armor_m113_base {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {{0.2, 5.05, -0.57}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
// M48
class vn_armor_tank_base;
class vn_armor_m48_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_mainturret_tools {
positions[] = {"_target selectionPosition ['hide_tools', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
// BTR-50PK
class vn_armor_btr50pk_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {"_target selectionPosition ['hide_shovel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_EntrenchingTool", "ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
// PT-76
class vn_armor_pt76_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {"_target selectionPosition ['hide_shovel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
// Type 63
class vn_armor_type63_base: vn_armor_tank_base {
class EGVAR(interaction,anims) {
class hide_shovel {
positions[] = {"_target selectionPosition ['hide_shovel', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
};

View File

@ -56,8 +56,12 @@ class SPE_OpelBlitz_Ammo: SPE_OpelBlitz_base {
EGVAR(rearm,defaultSupply) = 1200;
};
// WHEELED - ALLIED FORCES
class SPE_OpelBlitz_Fuel: SPE_OpelBlitz_base {
EGVAR(refuel,hooks)[] = {{-0.23, -2.58, -0.59}};
EGVAR(refuel,fuelCargo) = 2000;
};
// WHEELED - ALLIED FORCES
class SPE_US_M3_Halftrack_Ambulance: SPE_Halftrack_base {
EGVAR(medical,medicClass) = 1;
};
@ -69,3 +73,69 @@ class SPE_US_M3_Halftrack_Repair: SPE_Halftrack_base {
class SPE_US_M3_Halftrack_Ammo: SPE_Halftrack_base {
EGVAR(rearm,defaultSupply) = 1200;
};
class SPE_US_M3_Halftrack_Fuel: SPE_Halftrack_base {
EGVAR(refuel,hooks)[] = {{-0.23, -2.58, -0.59}};
EGVAR(refuel,fuelCargo) = 2000;
};
class SPE_Car_base;
class SPE_G503_MB_base: SPE_Car_base {
class EGVAR(interaction,anims) {
class hide_musette_source {
positions[] = {{0.8, -0.97, -0.6}, {-0.8, -0.92, -0.6}};
items[] = {"B_SPE_US_M36", "B_SPE_US_M36"};
name = "$STR_CTH_B_SPE_US_M36";
text = "$STR_CTH_B_SPE_US_M36";
};
};
};
class SPE_US_G503_MB_M1919_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_musette_source: hide_musette_source {
positions[] = {{0.8, -0.5, -0.6}, {-0.8, -0.45, -0.6}};
};
};
};
class SPE_US_G503_MB_M1919_Armoured_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_musette_source: hide_musette_source {
positions[] = {{0.8, -0.5, -0.6}, {-0.8, -0.45, -0.6}};
};
};
};
class SPE_US_G503_MB_M1919_PATROL_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_musette_source: hide_musette_source {
positions[] = {{0.8, -0.5, -0.6}, {-0.8, -0.45, -0.6}};
};
};
};
class SPE_US_G503_MB_M2_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_musette_source: hide_musette_source {
positions[] = {{0.8, -0.5, -0.6}, {-0.8, -0.45, -0.6}};
};
};
};
class SPE_US_G503_MB_M2_Armoured_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_musette_source: hide_musette_source {
positions[] = {{0.8, -0.5, -0.6}, {-0.8, -0.45, -0.6}};
};
};
};
class SPE_US_G503_MB_M2_PATROL_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_musette_source: hide_musette_source {
positions[] = {{0.8, -0.5, -0.6}, {-0.8, -0.45, -0.6}};
};
};
};
class SPE_G503_MB_Ambulance_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_musette_source: hide_musette_source {
positions[] = {{0.8, -0.5, -0.6}, {-0.8, -0.45, -0.6}};
};
};
};

View File

@ -1,12 +1,57 @@
class CfgVehicles {
class SPE_Halftrack_base;
class SPE_US_M3_Halftrack_Fuel: SPE_Halftrack_base {
EGVAR(refuel,hooks)[] = {{-0.23,-2.58,-0.59}};
EGVAR(refuel,fuelCargo) = 2000;
// Vehicle animation interactions
class SPE_Car_base;
class SPE_G503_MB_base: SPE_Car_base {
class EGVAR(interaction,anims) {
class hide_jerry_can_source {
positions[] = {"_target selectionPosition ['hide_jerry_can', 'ViewGeometry', 'AveragePoint']"};
items[] = {"Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class SPE_OpelBlitz_base;
class SPE_OpelBlitz_Fuel: SPE_OpelBlitz_base {
EGVAR(refuel,hooks)[] = {{-0.23,-2.58,-0.59}};
EGVAR(refuel,fuelCargo) = 2000;
class SPE_Truck_base;
class SPE_CCKW_353_Base: SPE_Truck_base {
class EGVAR(interaction,anims) {
class spare_fuel_hide_source {
positions[] = {{0.8, 1.8, -1}, {-0.8, 1.8, -1}, {0.8, 3.5, -1}, {-0.8, 3.5, -1}};
items[] = {"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F"};
name = ECSTRING(refuel,TakeFuelCanister);
text = ECSTRING(refuel,TakeFuelCanisterAction);
};
};
};
class SPE_CCKW_353_Ammo: SPE_CCKW_353_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class spare_fuel_hide_source: spare_fuel_hide_source {
positions[] = {{0.8, 1.8, -0.85}, {-0.8, 1.8, -0.85}, {0.8, 3.5, -0.85}, {-0.8, 3.5, -0.85}};
};
};
};
class SPE_CCKW_353_Repair: SPE_CCKW_353_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class spare_fuel_hide_source: spare_fuel_hide_source {
positions[] = {{0.8, 1.9, -0.85}, {-0.8, 1.9, -0.85}, {0.8, 3.6, -0.85}, {-0.8, 3.6, -0.85}};
};
};
};
class SPE_CCKW_353_Fuel: SPE_CCKW_353_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class spare_fuel_hide_source: spare_fuel_hide_source {
positions[] = {{0.8, 1.25, -0.8}, {-0.8, 1.25, -0.8}, {0.8, 2.95, -0.8}, {-0.8, 2.95, -0.8}, {0.8, -1, -0.3}, {-0.8, -1, -0.3}};
items[] = { // 32x
"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F",
"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F",
"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F",
"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F",
"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F",
"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F",
"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F",
"Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F", "Land_CanisterFuel_F"
};
};
};
};
};

View File

@ -0,0 +1,106 @@
class CfgVehicles {
// Vehicle animation interactions
class SPE_Car_base;
class SPE_G503_MB_base: SPE_Car_base {
class EGVAR(interaction,anims) {
class hide_spare_wheel_source {
positions[] = {"_target selectionPosition ['hide_spare_wheel', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class SPE_Truck_base;
class SPE_CCKW_353_Base: SPE_Truck_base {
class EGVAR(interaction,anims) {
class spare_wheel_hide_source {
positions[] = {{-0.9, 0.35, -0.95}};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class SPE_CCKW_353_Ammo: SPE_CCKW_353_Base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class spare_wheel_hide_source: spare_wheel_hide_source {
positions[] = {{-0.9, 0.35, -0.8}};
};
};
};
class SPE_R200_base: SPE_Car_base {
class EGVAR(interaction,anims) {
class hide_spare_wheel_source {
positions[] = {"_target selectionPosition ['hide_sparetire', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class SPE_Tank_base;
class SPE_M18_Hellcat_Base: SPE_Tank_base {
class EGVAR(interaction,anims) {
class hull_armour_hide_source {
positions[] = {"_target selectionPosition ['spare_track_hull', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Track", "ACE_Track", "ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
class SPE_PzKpfwV_base: SPE_Tank_base {
class EGVAR(interaction,anims) {
class spare_tracks_hide_source {
selections[] = {"spare_tracks"};
positions[] = {"private _pos = _target selectionPosition 'spare_tracks'; _pos set [0, -(_pos select 0)]; _pos"}; // Mirror position to other side of vehicle
items[] = {"ACE_Track", "ACE_Track", "ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
class SPE_PzKpfwVI_H1_base: SPE_Tank_base {
class EGVAR(interaction,anims) {
class hull_armour_hide_source {
positions[] = {{-1.3, 1.7, -0.75}, {1.1, 1.7, -0.75}, {-0.05, 2.35, -1.5}};
items[] = {"ACE_Track", "ACE_Track", "ACE_Track", "ACE_Track", "ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
class turret_armour_hide_source {
// Rotate interactions with turret rotation
positions[] = {
"[0, -0.6, 0] vectorAdd ([[1.2, 0, -0.2], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)",
"[0, -0.6, 0] vectorAdd ([[-1.3, -0.3, -0.2], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)"
};
items[] = {"ACE_Track", "ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
class SPE_Jagdpanther_G1_base: SPE_Tank_base {
class EGVAR(interaction,anims) {
class hide_spare_tracks_left_source {
positions[] = {"private _pos = _target selectionPosition ['hide_spare_tracks_right', 'FireGeometry', 'AveragePoint']; _pos set [0, -(_pos select 0)]; _pos vectorAdd [0, 0.335, 0]"};
items[] = {"ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
class hide_spare_tracks_right_source {
positions[] = {"_target selectionPosition ['hide_spare_tracks_right', 'FireGeometry', 'AveragePoint']"};
items[] = {"ACE_Track", "ACE_Track"};
name = ECSTRING(repair,RemoveTrack);
text = ECSTRING(repair,RemovingTrack);
};
};
};
};

View File

@ -0,0 +1,27 @@
#include "script_component.hpp"
class CfgPatches {
class SUBADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {
"ww2_spe_assets_c_weapons_infantryweapons_c",
"ww2_spe_assets_c_vehicles_staticweapons_c",
"ww2_spe_assets_c_vehicles_weapons_c",
"ww2_spe_core_f_system_staticweapons_f",
"ww2_spe_core_c_core_c_eventhandlers",
"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,119 @@
class CfgVehicles {
// Vehicle animation interactions
class SPE_Car_base;
class SPE_G503_MB_base: SPE_Car_base {
class EGVAR(interaction,anims) {
class hide_tools_source {
positions[] = {{-0.7, 0, -0.9}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class SPE_US_G503_MB_M1919_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tools_source: hide_tools_source {
positions[] = {{-0.7, 0.45, -0.9}};
};
};
};
class SPE_US_G503_MB_M1919_Armoured_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tools_source: hide_tools_source {
positions[] = {{-0.7, 0.45, -0.9}};
};
};
};
class SPE_US_G503_MB_M1919_PATROL_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tools_source: hide_tools_source {
positions[] = {{-0.7, 0.45, -0.9}};
};
};
};
class SPE_US_G503_MB_M2_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tools_source: hide_tools_source {
positions[] = {{-0.7, 0.45, -0.9}};
};
};
};
class SPE_US_G503_MB_M2_Armoured_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tools_source: hide_tools_source {
positions[] = {{-0.7, 0.45, -0.9}};
};
};
};
class SPE_US_G503_MB_M2_PATROL_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tools_source: hide_tools_source {
positions[] = {{-0.7, 0.45, -0.9}};
};
};
};
class SPE_G503_MB_Ambulance_base: SPE_G503_MB_base {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class hide_tools_source: hide_tools_source {
positions[] = {{-0.7, 0.45, -0.9}};
};
};
};
class SPE_R200_base: SPE_Car_base {
class EGVAR(interaction,anims) {
class hide_shovel_source {
positions[] = {{0.5, 1.2, -1.05}};
items[] = {"ACE_EntrenchingTool"};
name = ECSTRING(trenches,EntrenchingToolName);
text = ECSTRING(trenches,EntrenchingToolName);
};
};
};
class SPE_Tank_base;
class SPE_PzKpfwV_base: SPE_Tank_base {
class EGVAR(interaction,anims) {
class tools_hide_source {
positions[] = {{-1.45, 0.7, -0.4}};
items[] = {"ACE_EntrenchingTool", "ACE_wirecutter"};
name = "$STR_a3_cfgeditorsubcategories_edsubcat_tools0";
text = "$STR_a3_cfgeditorsubcategories_edsubcat_tools0";
};
};
};
class SPE_PzKpfwVI_H1_base: SPE_Tank_base {
class EGVAR(interaction,anims) {
class tools_hide_source {
positions[] = {{0, 1, -0.6}, {1.1, 0.1, -0.6}};
items[] = {"ACE_EntrenchingTool", "ACE_wirecutter"};
name = "$STR_a3_cfgeditorsubcategories_edsubcat_tools0";
text = "$STR_a3_cfgeditorsubcategories_edsubcat_tools0";
};
};
};
class SPE_StuG_III_base: SPE_Tank_base {
class EGVAR(interaction,anims) {
class hide_tools_left_source {
positions[] = {{-1.4, -1.4, -0.7}, {-1, -2.2, -0.65}};
items[] = {"ACE_EntrenchingTool", "ACE_wirecutter"};
name = "$STR_a3_cfgeditorsubcategories_edsubcat_tools0";
text = "$STR_a3_cfgeditorsubcategories_edsubcat_tools0";
};
};
};
class SPE_Jagdpanther_G1_base: SPE_Tank_base {
class EGVAR(interaction,anims) {
class hide_tools_left_source {
positions[] = {{-1.4, 0.5, -0.7}};
items[] = {"ACE_EntrenchingTool", "ACE_wirecutter"};
name = "$STR_a3_cfgeditorsubcategories_edsubcat_tools0";
text = "$STR_a3_cfgeditorsubcategories_edsubcat_tools0";
};
};
};
};

View File

@ -0,0 +1,27 @@
#include "script_component.hpp"
class CfgPatches {
class SUBADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {
"ww2_spe_assets_c_weapons_infantryweapons_c",
"ww2_spe_assets_c_vehicles_staticweapons_c",
"ww2_spe_assets_c_vehicles_weapons_c",
"ww2_spe_core_f_system_staticweapons_f",
"ww2_spe_core_c_core_c_eventhandlers",
"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

@ -0,0 +1,45 @@
class CfgVehicles {
// Vehicle animation interactions
class Offroad_01_base_lxWS;
class Offroad_01_armor_base_lxWS: Offroad_01_base_lxWS {
class EGVAR(interaction,anims) {
class HideBackpacks {
positions[] = {{-1.15, -1.15, -0.7}, {1.1, -1.15, -0.7}, {1.1, -2.5, -0.7}};
items[] = {"B_TacticalPack_blk", "B_TacticalPack_blk", "B_Carryall_khk", "B_Carryall_khk"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
};
};
};
class I_G_Offroad_01_AT_F;
class Offroad_01_AT_lxWS: I_G_Offroad_01_AT_F {
class EGVAR(interaction,anims) {
class HideBackpacks {
positions[] = {{-1.15, -1.25, -0.2}, {1.1, -1.25, -0.2}, {1.1, -2.6, -0.2}};
items[] = {"B_TacticalPack_blk", "B_TacticalPack_blk", "B_Carryall_khk", "B_Carryall_khk"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
};
};
};
class Offroad_01_armor_AT_lxWS: Offroad_01_AT_lxWS {
class EGVAR(interaction,anims): EGVAR(interaction,anims) {
class HideBackpacks: HideBackpacks {
positions[] = {{-1.15, -1.25, -0.7}, {1.1, -1.25, -0.7}, {1.1, -2.6, -0.7}};
};
};
};
class I_G_Offroad_01_armed_F;
class Offroad_01_armed_lxWS: I_G_Offroad_01_armed_F {
class EGVAR(interaction,anims) {
class HideBackpacks {
positions[] = {{-1.15, -1.03, -0.8}, {1.1, -1.03, -0.8}, {1.1, -2.38, -0.8}};
items[] = {"B_TacticalPack_blk", "B_TacticalPack_blk", "B_Carryall_khk", "B_Carryall_khk"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
};
};
};
};

View File

@ -57,4 +57,173 @@ class CfgVehicles {
class B_ION_Heli_Light_02_unarmed_lxWS: O_Heli_Light_02_unarmed_F {
displayName = SUBCSTRING(heli_light_02_unarmed_Name);
};
#include "CfgVehiclesAttachments.hpp"
// AA12
class Weapon_Base_F;
class Weapon_sgun_aa40_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(AA40_Name);
};
class Weapon_sgun_aa40_tan_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(AA40_Tan_Name);
};
class Weapon_sgun_aa40_snake_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(AA40_Snake_Name);
};
// Galil ARM
class Weapon_arifle_Galat_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(Galat_Name);
};
class Weapon_arifle_Galat_worn_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(Galat_Old_Name);
};
// GLX 160
class Weapon_glaunch_GLX_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(GLX_Name);
};
class Weapon_glaunch_GLX_snake_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(GLX_Snake_Name);
};
class Weapon_glaunch_GLX_hex_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(GLX_Hex_Name);
};
class Weapon_glaunch_GLX_ghex_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(GLX_GreenHex_Name);
};
class Weapon_glaunch_GLX_camo_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(GLX_Camo_Name);
};
class Weapon_glaunch_GLX_tan_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(GLX_Tan_Name);
};
// Mk14 Mod 1 EBR
class Weapon_srifle_EBR_blk_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(EBR_Black_Name);
};
class Weapon_srifle_EBR_snake_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(EBR_Snake_Name);
};
// Vektor SS-77
class Weapon_LMG_S77_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(S77_Name);
};
class Weapon_LMG_S77_AAF_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(S77_AAF_Name);
};
class Weapon_LMG_S77_Hex_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(S77_Hex_Name);
};
class Weapon_LMG_S77_GHex_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(S77_GreenHex_Name);
};
class Weapon_LMG_S77_Desert_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(S77_Desert_Name);
};
// Vektor SS-77 (Compact)
class Weapon_LMG_S77_Compact_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(S77_Compact_Name);
};
class Weapon_LMG_S77_Compact_Snakeskin_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(S77_Compact_Snake_Name);
};
// FN FAL (Wood) - Closest match is the 50.00
class Weapon_arifle_SLR_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(SLR_Wood_Name);
};
class Weapon_arifle_SLR_GL_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(SLR_GL_Wood_Name);
};
// FN FAL
class Weapon_arifle_SLR_V_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(SLR_Name);
};
class Weapon_arifle_SLR_V_GL_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(SLR_GL_Name);
};
class Weapon_arifle_SLR_D_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(SLR_Desert_Name);
};
class Weapon_arifle_SLR_V_camo_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(SLR_Camo_Name);
};
class Weapon_arifle_SLR_Para_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(SLR_Para_Name);
};
class Weapon_arifle_SLR_Para_snake_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(SLR_Para_Snake_Name);
};
// Vektor R4/R5
class Weapon_arifle_Velko_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(Velko_R4_Name);
};
class Weapon_arifle_VelkoR5_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(Velko_R5_Name);
};
class Weapon_arifle_VelkoR5_GL_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(Velko_R5_GL_Name);
};
class Weapon_arifle_VelkoR5_snake_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(Velko_R5_Snake_Name);
};
class Weapon_arifle_VelkoR5_GL_snake_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(Velko_R5_GL_Snake_Name);
};
// XMS has no realistic name as it's a make believe hybrid of the XM8/VHS-K2: XM8+VHS = XMS, this just removes the 5.56 mm from the name.
class Weapon_arifle_XMS_Base_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(XMS_Name);
};
class Weapon_arifle_XMS_Base_khk_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(XMS_Khaki_Name);
};
class Weapon_arifle_XMS_Base_Sand_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(XMS_Sand_Name);
};
class Weapon_arifle_XMS_GL_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(XMS_GL_Name);
};
class Weapon_arifle_XMS_GL_khk_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(XMS_GL_Khaki_Name);
};
class Weapon_arifle_XMS_GL_Sand_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(XMS_GL_Sand_Name);
};
class Weapon_arifle_XMS_Shot_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(XMS_SG_Name);
};
class Weapon_arifle_XMS_Shot_khk_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(XMS_SG_Khaki_Name);
};
class Weapon_arifle_XMS_Shot_Sand_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(XMS_SG_Sand_Name);
};
class Weapon_arifle_XMS_M_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(XMS_SW_Name);
};
class arifle_XMS_M_khk_lxWS: Weapon_Base_F {
diWeapon_splayName = SUBCSTRING(XMS_SW_Khaki_Name);
};
class Weapon_arifle_XMS_M_Sand_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(XMS_SW_Sand_Name);
};
// GM6 Lynx
class Weapon_srifle_GM6_snake_lxWS: Weapon_Base_F {
displayName = SUBCSTRING(gm6_snake_Name);
};
// RPG-32
class Launcher_Base_F;
class Weapon_launch_RPG32_tan_lxWS: Launcher_Base_F {
displayName = SUBCSTRING(rpg32_tan_Name);
};
};

View File

@ -0,0 +1,71 @@
// Attachments
class Item_Base_F;
class Item_optic_arco_hex_lxWS: Item_Base_F {
displayName = SUBCSTRING(arco_hex_Name);
};
class Item_optic_Holosight_snake_lxWS: Item_Base_F {
displayName = SUBCSTRING(holosight_snake_Name);
};
class Item_optic_Holosight_smg_snake_lxWS: Item_Base_F {
displayName = SUBCSTRING(holosight_snake_smg_Name);
};
class Item_optic_Hamr_arid_lxWS: Item_Base_F {
displayName = SUBCSTRING(hamr_arid_Name);
};
class Item_optic_Hamr_lush_lxWS: Item_Base_F {
displayName = SUBCSTRING(hamr_lush_Name);
};
class Item_optic_Hamr_sand_lxWS: Item_Base_F {
displayName = SUBCSTRING(hamr_sand_Name);
};
class Item_optic_Hamr_snake_lxWS: Item_Base_F {
displayName = SUBCSTRING(hamr_snake_Name);
};
class Item_optic_r1_high_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_high_black_Name);
};
class Item_optic_r1_high_khaki_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_high_khaki_Name);
};
class Item_optic_r1_high_sand_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_high_sand_Name);
};
class Item_optic_r1_high_snake_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_high_snake_Name);
};
class Item_optic_r1_high_arid_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_high_arid_Name);
};
class Item_optic_r1_high_lush_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_high_lush_Name);
};
class Item_optic_r1_high_black_sand_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_high_black_sand_Name);
};
class Item_optic_r1_low_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_low_black_Name);
};
class Item_optic_r1_low_khaki_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_low_khaki_Name);
};
class Item_optic_r1_low_sand_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_low_sand_Name);
};
class Item_optic_r1_low_snake_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_low_snake_Name);
};
class Item_optic_r1_low_arid_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_low_arid_Name);
};
class Item_optic_r1_low_lush_lxWS: Item_Base_F {
displayName = SUBCSTRING(r1_low_lush_Name);
};
class Item_optic_DMS_snake_lxWS: Item_Base_F {
displayName = SUBCSTRING(dms_snake_Name);
};

View File

@ -1,5 +1,5 @@
class CfgWeapons {
#include "Attachments.hpp"
#include "CfgWeaponsAttachments.hpp"
// AA12
class sgun_aa40_base_lxWS;

View File

@ -1,3 +1,4 @@
// Attachments
class optic_Arco;
class optic_arco_hex_lxWS: optic_Arco {
displayName = SUBCSTRING(arco_hex_Name);

View File

@ -15,6 +15,8 @@ class CfgPatches {
authors[] = {"Mike"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
addonRootClass = QUOTE(ADDON);
};
};

View File

@ -29,6 +29,7 @@
<Japanese>AA12 (ヘビ柄迷彩)</Japanese>
<Russian>AA12 (Змея)</Russian>
<Spanish>AA12 (Serpiente)</Spanish>
<French>AA12 (Sable)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_Galat_Name">
<English>Galil ARM</English>
@ -68,6 +69,7 @@
<Japanese>GLX 160 (ヘビ柄迷彩)</Japanese>
<Russian>GLX 160 (Змея)</Russian>
<Spanish>GLX 160 (Serpiente)</Spanish>
<French>GLX 160</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_GLX_Hex_Name">
<English>GLX 160 (Hex)</English>
@ -127,6 +129,7 @@
<Japanese>Mk14 Mod 1 EBR (ヘビ柄迷彩)</Japanese>
<Russian>Mk14 Mod 1 EBR (Змея)</Russian>
<Spanish>Mk14 Mod 1 EBR (Serpiente)</Spanish>
<French>Mk14 Mod 1 EBR (Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_S77_Name">
<English>Vektor SS-77</English>
@ -195,6 +198,7 @@
<Japanese>ヴェクター SS-77 コンパクト (ヘビ柄迷彩)</Japanese>
<Russian>Vektor SS-77 Compact (змея)</Russian>
<Spanish>Vektor SS-77 Compacta (Serpiente)</Spanish>
<French>Vektor SS-77 Compacte (Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_SLR_Wood_Name">
<English>FN FAL 50.00 (Wood)</English>
@ -262,6 +266,7 @@
<Korean>FN FAL OSW 파라</Korean>
<German>FN FAL OSW Fallschirmjäger</German>
<Italian>FN FAL OSW Para</Italian>
<French>FN FAL OSW Para</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_SLR_Para_Snake_Name">
<English>FN FAL OSW Para (Snake)</English>
@ -269,6 +274,7 @@
<Korean>FN FAL OSW 파라 (뱀 위장)</Korean>
<German>FN FAL OSW Fallschirmjäger (Schlange)</German>
<Italian>FN FAL OSW Para (Serpe)</Italian>
<French>FN FAL OSW Para (Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_Velko_R4_Name">
<English>Vektor R4</English>
@ -308,6 +314,7 @@
<Japanese>ヴェクター R5 カービン (ヘビ柄迷彩)</Japanese>
<Russian>Vektor R5 Carbine (Змея)</Russian>
<Spanish>Vektor R5 Carabina (Serpiente)</Spanish>
<French>Vektor R5 Carbine (Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_Velko_R5_GL_Snake_Name">
<English>Vektor R5 Carbine GL (Snake)</English>
@ -317,6 +324,7 @@
<Japanese>ヴェクター R5 カービン GL (ヘビ柄迷彩)</Japanese>
<Russian>Vektor R5 Carbine GL (Змея)</Russian>
<Spanish>Vektor R5 Carabina GL (Serpiente)</Spanish>
<French>Vektor R5 Carbine GL (Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_XMS_Name">
<English>XMS</English>
@ -468,6 +476,7 @@
<Korean>GM6 링스 (뱀 위장)</Korean>
<German>GM6 Lynx (Schlange)</German>
<Italian>GM6 Lynx (Serpe)</Italian>
<French>GM6 Lynx (Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_rpg32_tan_Name">
<English>RPG-32 (Sand)</English>
@ -475,6 +484,7 @@
<Korean>RPG-32 (모래)</Korean>
<German>RPG-32 (Sand)</German>
<Italian>RPG-32 (Sabbia)</Italian>
<French>RPG-32 (Sable)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_arco_hex_Name">
<English>ELCAN SpecterOS (Hex)</English>
@ -482,6 +492,7 @@
<Korean>엘칸 스펙터OS (육각)</Korean>
<German>ELCAN SpecterOS (Hex)</German>
<Italian>ELCAN SpecterOS (Hex)</Italian>
<French>ELCAN SpecterOS (Hex)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_holosight_snake_Name">
<English>EOTech XPS3 (Snake)</English>
@ -489,6 +500,7 @@
<Korean>이오텍 XPS3 (뱀 위장)</Korean>
<German>EOTech XPS3 (Schlange)</German>
<Italian>EOTech XPS3 (Serpe)</Italian>
<French>EOTech XPS3 (Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_holosight_snake_smg_Name">
<English>EOTech XPS3 SMG (Snake)</English>
@ -496,6 +508,7 @@
<Korean>이오텍 XPS3 SMG (뱀 위장)</Korean>
<German>EOTech XPS3 SMG (Schlange)</German>
<Italian>EOTech XPS3 SMG (Serpe)</Italian>
<French>EOTech XPS3 SMG (Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_hamr_arid_Name">
<English>Leupold Mark 4 HAMR (Arid)</English>
@ -503,6 +516,7 @@
<Korean>류폴드 마크 4 HAMR (건조)</Korean>
<German>Leupold Mark 4 HAMR (Trocken)</German>
<Italian>Leupold Mark 4 HAMR (Arido)</Italian>
<French>Leupold Mark 4 HAMR (Aride)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_hamr_lush_Name">
<English>Leupold Mark 4 HAMR (Lush)</English>
@ -510,6 +524,7 @@
<Korean>류폴드 마크 4 HAMR (초목)</Korean>
<German>Leupold Mark 4 HAMR (Grün)</German>
<Italian>Leupold Mark 4 HAMR (Verdeggiante)</Italian>
<French>Leupold Mark 4 HAMR (Vert)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_hamr_sand_Name">
<English>Leupold Mark 4 HAMR (Sand)</English>
@ -517,6 +532,7 @@
<Korean>류폴드 마크 4 HAMR (모래)</Korean>
<German>Leupold Mark 4 HAMR (Sand)</German>
<Italian>Leupold Mark 4 HAMR (Sabbia)</Italian>
<French>Leupold Mark 4 HAMR (Sable)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_hamr_snake_Name">
<English>Leupold Mark 4 HAMR (Snake)</English>
@ -524,6 +540,7 @@
<Korean>류폴드 마크 4 HAMR (뱀 위장)</Korean>
<German>Leupold Mark 4 HAMR (Schlange)</German>
<Italian>Leupold Mark 4 HAMR (Serpe)</Italian>
<French>Leupold Mark 4 HAMR (Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_high_black_Name">
<English>Aimpoint Micro R-1 (High, Black)</English>
@ -531,6 +548,7 @@
<Korean>에임포인트 마이크로 R-1 (높음, 검정)</Korean>
<German>Aimpoint Micro R-1 (Hoch, Schwarz)</German>
<Italian>Aimpoint Micro R-1 (Alto, Nero)</Italian>
<French>Aimpoint Micro R-1 (Haut, Noir)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_high_khaki_Name">
<English>Aimpoint Micro R-1 (High, Khaki)</English>
@ -538,6 +556,7 @@
<Korean>에임포인트 마이크로 R-1 (높음, 카키)</Korean>
<German>Aimpoint Micro R-1 (Hoch, Khaki)</German>
<Italian>Aimpoint Micro R-1 (Alto, Cachi)</Italian>
<French>Aimpoint Micro R-1 (Haut, Kaki)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_high_sand_Name">
<English>Aimpoint Micro R-1 (High, Sand)</English>
@ -545,6 +564,7 @@
<Korean>에임포인트 마이크로 R-1 (높음, 모래)</Korean>
<German>Aimpoint Micro R-1 (Hoch, Sand)</German>
<Italian>Aimpoint Micro R-1 (Alto, Sabbia)</Italian>
<French>Aimpoint Micro R-1 (Haut, Sable)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_high_snake_Name">
<English>Aimpoint Micro R-1 (High, Snake)</English>
@ -552,6 +572,7 @@
<Korean>에임포인트 마이크로 R-1 (높음, 뱀 위장)</Korean>
<German>Aimpoint Micro R-1 (Hoch, Schlange)</German>
<Italian>Aimpoint Micro R-1 (Alto, Serpe)</Italian>
<French>Aimpoint Micro R-1 (Haut, Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_high_arid_Name">
<English>Aimpoint Micro R-1 (High, Arid)</English>
@ -559,6 +580,7 @@
<Korean>에임포인트 마이크로 R-1 (높음, 건조)</Korean>
<German>Aimpoint Micro R-1 (Hoch, Trocken)</German>
<Italian>Aimpoint Micro R-1 (Alto, Arido)</Italian>
<French>Aimpoint Micro R-1 (Hoch, Arid</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_high_lush_Name">
<English>Aimpoint Micro R-1 (High, Lush)</English>
@ -566,6 +588,7 @@
<Korean>에임포인트 마이크로 R-1 (높음, 초목)</Korean>
<German>Aimpoint Micro R-1 (Hoch, Grün)</German>
<Italian>Aimpoint Micro R-1 (Alto, Verdeggiante)</Italian>
<French>Aimpoint Micro R-1 (Haute, Vert)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_high_black_sand_Name">
<English>Aimpoint Micro R-1 (High, Black/Sand)</English>
@ -573,6 +596,7 @@
<Korean>에임포인트 마이크로 R-1 (높음, 검정/모래)</Korean>
<German>Aimpoint Micro R-1 (Hoch, Schwarz/Sand)</German>
<Italian>Aimpoint Micro R-1 (Alto, Nero/Sabbia)</Italian>
<French>Aimpoint Micro R-1 (Haut, Noir/Sable)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_low_black_Name">
<English>Aimpoint Micro R-1 (Low, Black)</English>
@ -580,6 +604,7 @@
<Korean>에임포인트 마이크로 R-1 (낮음, 검정)</Korean>
<German>Aimpoint Micro R-1 (Tief, Schwarz)</German>
<Italian>Aimpoint Micro R-1 (Basso, Nero)</Italian>
<French>Aimpoint Micro R-1 (Bas, Noir)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_low_khaki_Name">
<English>Aimpoint Micro R-1 (Low, Khaki)</English>
@ -587,6 +612,7 @@
<Korean>에임포인트 마이크로 R-1 (낮음, 카키)</Korean>
<German>Aimpoint Micro R-1 (Tief, Khaki)</German>
<Italian>Aimpoint Micro R-1 (Basso, Cachi)</Italian>
<French>Aimpoint Micro R-1 (Bas, Kaki)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_low_sand_Name">
<English>Aimpoint Micro R-1 (Low, Sand)</English>
@ -594,6 +620,7 @@
<Korean>에임포인트 마이크로 R-1 (낮음, 모래)</Korean>
<German>Aimpoint Micro R-1 (Tief, Sand)</German>
<Italian>Aimpoint Micro R-1 (Basso, Sabbia)</Italian>
<French>Aimpoint Micro R-1 ( Bas, Sable )</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_low_snake_Name">
<English>Aimpoint Micro R-1 (Low, Snake)</English>
@ -601,6 +628,7 @@
<Korean>에임포인트 마이크로 R-1 (낮음, 뱀 위장)</Korean>
<German>Aimpoint Micro R-1 (Tief, Schlange)</German>
<Italian>Aimpoint Micro R-1 (Basso, Serpe)</Italian>
<French>Aimpoint Micro R-1 (Bas, Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_low_arid_Name">
<English>Aimpoint Micro R-1 (Low, Arid)</English>
@ -608,6 +636,7 @@
<Korean>에임포인트 마이크로 R-1 (낮음, 건조)</Korean>
<German>Aimpoint Micro R-1 (Tief, Trocken)</German>
<Italian>Aimpoint Micro R-1 (Basso, Arido)</Italian>
<French>Aimpoint Micro R-1 (Bas, Arid)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_r1_low_lush_Name">
<English>Aimpoint Micro R-1 (Low, Lush)</English>
@ -615,6 +644,7 @@
<Korean>에임포인트 마이크로 R-1 (낮음, 초목)</Korean>
<German>Aimpoint Micro R-1 (Tief, Grün)</German>
<Italian>Aimpoint Micro R-1 (Basso, Verdeggiante)</Italian>
<French>Aimpoint Micro R-1 (Bas, Vert)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_dms_snake_Name">
<English>Burris XTR II (Snake)</English>
@ -622,6 +652,7 @@
<Korean>버리스 XTR II (뱀 위장)</Korean>
<German>Burris XTR II (Schlange)</German>
<Italian>Burris XTR II (Serpe)</Italian>
<French>Burris XTR II (Serpent)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_apc_wheeled_01_atgm_Name">
<English>Badger IFV (ATGM)</English>
@ -629,6 +660,7 @@
<Korean>뱃져 보병전투차 (대전차미사일)</Korean>
<German>Badger IFV (PzAbw)</German>
<Italian>Badger IFV (ATGM)</Italian>
<French>Badger IFV (ATGM)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_apc_wheeled_01_command_Name">
<English>Badger IFV (Command)</English>
@ -636,6 +668,7 @@
<Korean>뱃져 보병전투차 (지휘)</Korean>
<German>Badger IFV (Kommando)</German>
<Italian>Badger IFV (Comando)</Italian>
<French>Badger IFV (Commandement)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_apc_wheeled_01_mortar_Name">
<English>Badger IFV (Mortar)</English>
@ -643,6 +676,7 @@
<Korean>뱃져 보병전투차 (자주박격포)</Korean>
<German>Badger IFV (Mörser)</German>
<Italian>Badger IFV (Mortaio)</Italian>
<French>Badger IFV (mortier)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_truck_02_aa_Name">
<English>KamAZ (Zu-23-2)</English>
@ -650,6 +684,7 @@
<Korean>카마즈 (ZU-23-2)</Korean>
<German>KamAZ (Zu-23-2)</German>
<Italian>KamAZ (Zu-23-2)</Italian>
<French>KamAZ (Zu-23-2)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_truck_02_cargo_Name">
<English>KamAZ Cargo</English>
@ -657,6 +692,7 @@
<Korean>카마즈 화물</Korean>
<German>KamAZ Fracht</German>
<Italian>KamAZ Carico</Italian>
<French>KamAZ Cargo</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_truck_02_repair_Name">
<English>KamAZ Repair</English>
@ -664,6 +700,7 @@
<Korean>카마즈 정비</Korean>
<German>KamAZ Instandsetzung</German>
<Italian>KamAZ Riparazione</Italian>
<French>KamAZ Réparation</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_truck_02_racing_Name">
<English>KamAZ Racing</English>
@ -671,6 +708,7 @@
<Korean>카마즈 경주용</Korean>
<German>KamAZ Rennlaster</German>
<Italian>KamAZ da corsa</Italian>
<French>KamAZ de course</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_truck_02_ammo_Name">
<English>KamAZ Ammo</English>
@ -678,6 +716,7 @@
<Korean>카마즈 탄약</Korean>
<German>KamAZ Munition</German>
<Italian>KamAZ Munizioni</Italian>
<French>KamAZ Munitions</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_truck_02_flatbed_Name">
<English>KamAZ Flatbed</English>
@ -685,6 +724,7 @@
<Korean>카마즈 플랫베드</Korean>
<German>KamAZ Flachbett</German>
<Italian>KamAZ Pianale</Italian>
<French>KamAZ Flatbed</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_heli_transport_02_Name">
<English>AW101 Merlin</English>
@ -692,6 +732,7 @@
<Korean>AW101 멀린</Korean>
<German>AW101 Merlin</German>
<Italian>AW101 Merlin</Italian>
<French>AW101 Merlin</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_apc_tracked_02_Name">
<English>BM-2T Stalker (Bumerang-BM)</English>
@ -699,6 +740,7 @@
<Korean>BM-2T 스토커 (부메랑-BM)</Korean>
<German>BM-2T Stalker (Bumerang-BM)</German>
<Italian>BM-2T Stalker (Bumerang-BM)</Italian>
<French>BM-2T Stalker (Boomerang-BM)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_apc_wheeled_02_hmg_Name">
<English>Otokar ARMA (HMG)</English>
@ -706,6 +748,7 @@
<Korean>오토카르 아르마 APC (중기관총)</Korean>
<German>Otokar ARMA (HMG)</German>
<Italian>Otokar ARMA (HMG)</Italian>
<French>Otokar ARMA (HMG)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_apc_wheeled_02_unarmed_Name">
<English>Otokar ARMA (Unarmed)</English>
@ -713,6 +756,7 @@
<Korean>오토카르 아르마 APC (비무장)</Korean>
<German>Otokar ARMA (Unbewaffnet)</German>
<Italian>Otokar ARMA (Disarmato)</Italian>
<French>Otokar ARMA (non armé)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_heli_light_02_armed_Name">
<English>Ka-60 Kasatka (UP)</English>
@ -720,6 +764,7 @@
<Korean>Ka-60 카사트카 (UP)</Korean>
<German>Ka-60 Kasatka (UP)</German>
<Italian>Ka-60 Kasatka (UP)</Italian>
<French>Ka-60 Kasatka (UP)</French>
</Key>
<Key ID="STR_ACE_Compat_WS_RealisticNames_heli_light_02_unarmed_Name">
<English>Ka-60 Kasatka (UP, Unarmed)</English>
@ -727,6 +772,7 @@
<Korean>Ka-60 카사트카 (UP, 비무장))</Korean>
<German>Ka-60 Kasatka (UP, Unbewaffnet)</German>
<Italian>Ka-60 Kasatka (UP, Disarmato)</Italian>
<French>Ka-60 Kasatka (UP, non armé)</French>
</Key>
</Package>
</Project>

View File

@ -0,0 +1,34 @@
class CfgVehicles {
// Vehicle animation interactions
class Truck_02_base_F;
class Truck_02_aa_base_lxWS: Truck_02_base_F {
class EGVAR(interaction,anims) {
class hideSpareWheel {
positions[] = {{1, 1.93, -0.85}};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class Truck_02_cargo_base_lxWS: Truck_02_base_F {
class EGVAR(interaction,anims) {
class hideSpareWheel {
positions[] = {{1, 1.93, -0.35}};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
class Truck_02_box_base_lxWS: Truck_02_base_F {
class EGVAR(interaction,anims) {
class hideSpareWheel {
positions[] = {{1, 1.7, -0.35}};
items[] = {"ACE_Wheel"};
name = ECSTRING(repair,RemoveWheel);
text = ECSTRING(repair,RemovingWheel);
};
};
};
};

View File

@ -0,0 +1,20 @@
#include "script_component.hpp"
class CfgPatches {
class SUBADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"data_f_lxWS_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

@ -6,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"data_f_lxWS_Loadorder"};
requiredAddons[] = {"data_f_lxWS_Loadorder", "ace_common"};
skipWhenMissingDependencies = 1;
author = ECSTRING(common,ACETeam);
authors[] = {"Mike"};
@ -15,4 +15,5 @@ class CfgPatches {
};
};
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"

View File

@ -23,6 +23,7 @@
<Korean>차량 유폭 화재를 활성화합니다</Korean>
<Italian>Abilita incendio dei veicoli</Italian>
<German>Aktiviert Fahrzeug Munitionsbrand</German>
<French>Permettre l'incendie du véhicule</French>
</Key>
<Key ID="STR_ACE_CookOff_enableFire_tooltip">
<English>Enables vehicle cook-off fire effects.\nThis doesn't include ammunition detonations.</English>
@ -31,6 +32,7 @@
<Korean>차량 유폭 효과를 활성화합니다.\n여기엔 탄약 유폭이 포함되지 않습니다.</Korean>
<Italian>Abilita effetti di incendio del veicolo dovuto all'esplosione delle munizioni.\nQuesto non include gli effetti di esplosione.</Italian>
<German>Aktiviert Fahrzeug Brandeffekte durch Durchzündung.\nExplosionseffekte sind nicht mit einbegriffen.</German>
<French>Permet d'obtenir des effets de feu de véhicule à partir de munitions qui explosent.\nCela n'inclut pas les effets d'explosion.</French>
</Key>
<Key ID="STR_ACE_CookOff_cookoffDuration_name">
<English>Vehicle cook-off fire duration multiplier</English>
@ -39,6 +41,7 @@
<Korean>차량 유폭 화재 지속 시간 계수</Korean>
<Italian>Coefficiente di durata incendio dei veicoli</Italian>
<German>Fahrzeugbrand Dauer-Multiplikator</German>
<French>Coefficient de durée d'incendie du véhicule</French>
</Key>
<Key ID="STR_ACE_CookOff_cookoffDuration_tooltip">
<English>Multiplier for how long vehicle cook-off fire lasts.\nSetting to 0 will disable vehicle cook-off fire.</English>
@ -47,6 +50,7 @@
<Korean>차량 유폭 화재가 지속되는 시간에 대한 계수입니다.\n0으로 설정하면 차량 쿸오프 화재가 비활성화됩니다.</Korean>
<Italian>Coefficiente di durata degli incendi dei veicoli.\nImpostarlo su 0 disabilita incendi dei veicoli.</Italian>
<German>Multiplikator der Fahrzeugbrand Dauer.\nIhn auf 0 zu setzen wird Munitionsbrände deaktivieren.</German>
<French>Coefficient de durée des feux de véhicules.\nLa valeur 0 désactive les feux de véhicules.</French>
</Key>
<Key ID="STR_ACE_CookOff_probabilityCoef_name">
<English>Vehicle cook-off fire probability multiplier</English>
@ -55,6 +59,7 @@
<Korean>차량 유폭 화재 확률 계수</Korean>
<Italian>Probabilità di incendio dei veicoli</Italian>
<German>Fahrzeug Munitionsbrand Wahrscheinlichkeit-Multiplikator</German>
<French>Probabilité d'incendies de véhicules</French>
</Key>
<Key ID="STR_ACE_CookOff_probabilityCoef_tooltip">
<English>Multiplier for vehicle cook-off fire probability. Higher value results in higher cook-off probability.\nSetting to 0 will disable vehicle cook-off fire.</English>
@ -63,6 +68,7 @@
<Korean>차량 유폭 화재 확률에 대한 계수입니다. 값이 높을 수록 유폭 확률이 높아집니다.\n0으로 설정하면 차량 유폭 화재가 비활성화됩니다.</Korean>
<Italian>Coefficiente di probabilità degli incendi dei veicoli.\nValori maggiori aumentano la probabilità di incendi.\nImpostarlo su 0 disabilita incendi dei veicoli.</Italian>
<German>Multiplikator der Fahrzeugbrand Wahrscheinlichkeit.\nHöhere Werte erhöhen die Wahrscheinlichkeit.\nEin Null-Wert wird Munitionsbrände deaktivieren.</German>
<French>Coefficient de probabilité des incendies de véhicules.\nLes valeurs élevées augmentent la probabilité des incendies.\nLa valeur 0 désactive les incendies de véhicules.</French>
</Key>
<Key ID="STR_ACE_CookOff_destroyVehicleAfterCookoff_name">
<English>Destroy vehicles after cook-off</English>
@ -96,6 +102,7 @@
<Korean>차량 내 탄약 유폭 활성화</Korean>
<Italian>Abilita esplosioni delle munizioni dei veicoli</Italian>
<German>Aktiviert Fahrzeug Munitionsdurchzündung</German>
<French>Permet l'explosion des munitions des véhicules</French>
</Key>
<Key ID="STR_ACE_CookOff_enableAmmoCookoff_tooltip">
<English>Enables cooking off of vehicle ammunition. Fires ammunition projectiles while vehicle has ammunition remaining.\nThis doesn't include fire effects.</English>
@ -104,6 +111,7 @@
<Korean>차량 내 탄약 유폭을 활성화합니다. 차량에 탄약이 남아 있는 동안 탄약 발사체를 발사합니다.\n여기엔 화재 효과가 포함되지 않습니다.</Korean>
<Italian>Abilita l'esplosione delle munizioni dei veicoli. Spara via pezzi di munizioni se il veicolo ha ancora munizioni rimanenti.\nNon include gli effetti di fuoco.</Italian>
<German>Aktiviert Durchzündung von Fahrzeugmunition. Schleudert Munitionsfragmente umher wenn das Fahrzeug noch Munition an Bord hat.\nBrandeffekte sind nicht mit einbegriffen.</German>
<French>Permet l'explosion des munitions du véhicule. Tire des morceaux de munitions si le véhicule a encore des munitions restantes.\nIl n'y a pas d'effets de feu.</French>
</Key>
<Key ID="STR_ACE_CookOff_enableBoxCookoff_name">
<English>Enable ammo box cook-off</English>
@ -127,6 +135,7 @@
<Korean>탄약 상자 유폭을 활성화합니다.\n여기엔 화재 효과가 포함되지 않습니다.</Korean>
<Italian>Abilita esplosioni delle casse di munizioni.\nNon include effetti di fuoco.</Italian>
<German>Aktiviert Munitionskisten Durchzündung.\nBrandeffekte sind nicht mit einbegriffen.</German>
<French>Permet l'explosion des caisses de munitions.\nN'inclut pas les effets de feu.</French>
</Key>
<Key ID="STR_ACE_CookOff_ammoCookoffDuration_name">
<English>Ammo cook-off duration multiplier</English>
@ -135,6 +144,7 @@
<Korean>탄약 유폭 시간 계수</Korean>
<Italian>Coefficiente di durata esplisioni di munizioni</Italian>
<German>Fahrzeug Munitionsdurchzündung Dauer-Multiplikator</German>
<French>Coefficient de durée d'explosion des munitions</French>
</Key>
<Key ID="STR_ACE_CookOff_ammoCookoffDuration_tooltip">
<English>Multiplier for how long ammunition cook-off lasts, for both vehicles and ammo boxes.\nSetting to 0 will disable ammo cook-off for both vehicles and ammo boxes.</English>
@ -143,6 +153,7 @@
<Korean>차량과 탄약 상자 모두에 대해 탄약 유폭이 지속되는 시간에 대한 계수입니다.\n0으로 설정하면 차량과 탄약 상자 모두에 대해 탄약 유폭이 비활성화됩니다.</Korean>
<Italian>Coefficiente della durata di esplosioni delle munizioni, sia per veicoli che casse.\nImpostarlo su 0 disabilita esplosioni di veicoli e casse.</Italian>
<German>Multiplikator der Munitionsdurchzündungs-Dauer, gilt für Fahrzeuge und Munitionskisten.\nIhn auf 0 zu setzen wird Durchzünden deaktivieren.</German>
<French>Coefficient de durée d'explosion des munitions pour les véhicules et les caisses.\nLa valeur 0 désactive les explosions des véhicules et des caisses.</French>
</Key>
<Key ID="STR_ACE_CookOff_removeAmmoDuringCookoff_name">
<English>Enable ammo removal during cook-off</English>

View File

@ -32,7 +32,8 @@ private _condition = {
params ["_target", "_player", "_args"];
_args params ["_carryMag", "_turretPath", "", "_magSource"];
([_target, _turretPath, _carryMag, _magSource] call FUNC(reload_canLoadMagazine)) select 0
[_player, _target] call EFUNC(interaction,canInteractWithVehicleCrew) &&
{([_target, _turretPath, _carryMag, _magSource] call FUNC(reload_canLoadMagazine)) select 0}
};
private _cfgMagazines = configFile >> "CfgMagazines"; // Micro-optimization

View File

@ -46,7 +46,9 @@ private _statement = {
private _condition = {
params ["_target", "_player", "_args"];
_args params ["_vehMag", "_turretPath", "_carryMag"];
[_target, _turretPath, _player, _carryMag, _vehMag] call FUNC(reload_canUnloadMagazine)
[_player, _target] call EFUNC(interaction,canInteractWithVehicleCrew) &&
{[_target, _turretPath, _player, _carryMag, _vehMag] call FUNC(reload_canUnloadMagazine)}
};
private _actions = [];

View File

@ -13,7 +13,7 @@
<Italian>Piastrina</Italian>
<Chinese>兵籍牌</Chinese>
<Chinesesimp>兵籍牌</Chinesesimp>
<Portuguese>Dog Tag</Portuguese>
<Portuguese>Chapa de Identificação</Portuguese>
<Spanish>Placa de identidad</Spanish>
<Turkish>Künye</Turkish>
</Key>
@ -29,7 +29,7 @@
<Italian>Controlla Piastrina</Italian>
<Chinese>檢查兵籍牌</Chinese>
<Chinesesimp>检查兵籍牌</Chinesesimp>
<Portuguese>Verificar Dog Tag</Portuguese>
<Portuguese>Verificar chapa de identificação</Portuguese>
<Spanish>Verificar placa de identidad</Spanish>
<Turkish>Künyeyi Kontrol Et</Turkish>
</Key>
@ -77,7 +77,7 @@
<Italian>Piastrina presa da %1...</Italian>
<Chinese>從%1身上拿取兵籍牌...</Chinese>
<Chinesesimp>从%1身上拿取兵籍牌...</Chinesesimp>
<Portuguese>Dogtag pego de %1...</Portuguese>
<Portuguese>Chapa de identificação pega de %1...</Portuguese>
<Spanish>Tomada placa de identidad de %1...</Spanish>
<Turkish>Künye %1 kişisinden alındı</Turkish>
</Key>
@ -93,7 +93,7 @@
<Italian>Qualcun altro ha già preso la piastrina...</Italian>
<Chinese>已經有人把他的兵籍牌拿走了...</Chinese>
<Chinesesimp>已经有人把他的兵籍牌拿走了...</Chinesesimp>
<Portuguese>Alguém já pegou essa dogtag...</Portuguese>
<Portuguese>Alguém já pegou essa chapa de identificação...</Portuguese>
<Spanish>Alguien más ha tomado la placa de identidad</Spanish>
<Turkish>Başka biri zaten künyeyi almış</Turkish>
</Key>
@ -106,7 +106,7 @@
<Italian>Indicatore su schermo per il controllo delle piastrine</Italian>
<Polish>Wyświetlacz ekranowy dla sprawdzania nieśmiertelników</Polish>
<Russian>Экран для проверки жетонов</Russian>
<Portuguese>Tela de Exibição para verificar dogtags</Portuguese>
<Portuguese>Tela de exibição para verificar chapas de identificação</Portuguese>
<Spanish>Visualización en pantalla de placa de identidad</Spanish>
<French>Affichage à l'écran pour le contrôle des plaques.</French>
<Czech>Okno na obrazovce pro kontrolu známek</Czech>

View File

@ -110,6 +110,7 @@
<Korean>이 수류탄은 굴릴 수 없습니다. %1(으)로 전환되었습니다.</Korean>
<German>Granate kann nicht rollen, zu %1 gewechselt</German>
<Italian>Granata non può rotolare, cambiato a %1</Italian>
<French>Grenade ne peut pas rouler, passé à %1</French>
</Key>
<Key ID="STR_ACE_Grenades_M84_Name">
<English>M84 Stun Grenade</English>

View File

@ -24,6 +24,7 @@
<Korean>플레이어가 무기를 떨굴 확률 (팔 피격)</Korean>
<German>Spieler Wahrscheinlichkeit, die Waffe fallen zu lassen (Arm Treffer)</German>
<Italian>Probabilità dei giocatori di far cadere l'arma (colpo al braccio)</Italian>
<French>Probabilité de lâcher l'arme (coup au bras)</French>
<Portuguese>Probabilidade do jogador de largar a arma após tiro no braço</Portuguese>
</Key>
<Key ID="STR_ACE_HitReactions_weaponDropChanceArmHitAI_displayName">
@ -33,6 +34,7 @@
<Korean>인공지능이 무기를 떨굴 확률 (팔 피격)</Korean>
<German>KI-Wahrscheinlichkeit, die Waffe fallen zu lassen (Arm Treffer)</German>
<Italian>Probabilità dell'IA di far cadere l'arma (colpo al braccio)</Italian>
<French>Probabilité de l'IA de lâcher l'arme (coup au bras)</French>
<Portuguese>Probabilidade da IA de largar a arma após tiro no braço</Portuguese>
</Key>
</Package>

View File

@ -0,0 +1,17 @@
class CfgWeapons {
class ACE_ItemCore;
class CBA_MiscItem_ItemInfo;
// Since base game doesn't support misc. items, this is needed to filling inventories in the editor
class GVAR(notepad_Item): ACE_ItemCore {
displayName = CSTRING(Notepad_DisplayName);
author = ECSTRING(common,ACETeam);
scope = 2;
scopeArsenal = 0;
descriptionShort = CSTRING(Notepad_Description);
picture = QPATHTOF(ui\notepad_ca.paa);
class ItemInfo: CBA_MiscItem_ItemInfo {
mass = 0.1;
};
};
};

View File

@ -1,5 +1,8 @@
#include "script_component.hpp"
// Notepad item to magazine
[QGVAR(notepad_Item), QXGVAR(notepad)] call EFUNC(common,registerItemReplacement);
// Only handle loadout change when on map or have open controls
["loadout", {
if (!visibleMap && {GVAR(controlsGroups) isEqualTo []}) exitWith {};

View File

@ -8,7 +8,7 @@ class CfgPatches {
QXGVAR(document),
QXGVAR(photo)
};
weapons[] = {};
weapons[] = {QGVAR(notepad_Item)};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interact_menu", "ace_zeus"};
author = ECSTRING(common,ACETeam);
@ -23,5 +23,6 @@ class CfgPatches {
#include "CfgEventHandlers.hpp"
#include "CfgEditorSubcategories.hpp"
#include "CfgMagazines.hpp"
#include "CfgWeapons.hpp"
#include "CfgVehicles.hpp"
#include "gui.hpp"

View File

@ -316,6 +316,12 @@ class CfgVehicles {
statement = QUOTE(_player call FUNC(renameGroupUI));
showDisabled =1;
};
class ACE_groupDropDistantUnits {
displayName = CSTRING(groupDropDistantUnits);
condition = QUOTE(call FUNC(canGroupDropDistantUnits));
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting", "isNotOnLadder", "isNotRefueling"};
statement = QUOTE(call FUNC(groupDropDistantUnits));
};
};
class ACE_Equipment {
@ -420,15 +426,11 @@ class CfgVehicles {
class GVAR(anims) {
class showBags {
phase = 0;
// Rotate interactions with turret rotation
positions[] = {
"[0, -1.6, 0] vectorAdd ([[1, -1, 0.1], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)",
"[0, -1.6, 0] vectorAdd ([[-1, -1, 0.1], [0, 0, 1], deg (_target animationPhase 'MainTurret')] call CBA_fnc_vectRotate3D)"
};
selections[] = {"vhc_bags"};
items[] = {"B_Carryall_cbr", "B_Carryall_cbr"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
name = "$STR_A3_B_Carryall_cbr0";
text = "$STR_A3_B_Carryall_cbr0";
distance = 3;
};
};
};
@ -439,10 +441,10 @@ class CfgVehicles {
class GVAR(anims): GVAR(anims) {
class showBags {
phase = 0;
selections[] = {"vhc_bags"};
positions[] = {"_target selectionPosition ['vhc_bags', 'FireGeometry', 'AveragePoint']"};
items[] = {"B_Carryall_cbr"};
name = "$STR_BACKPACK_CONTAINER_NAME";
text = "$STR_BACKPACK_CONTAINER_NAME";
name = "$STR_A3_B_Carryall_cbr0";
text = "$STR_A3_B_Carryall_cbr0";
};
};
};
@ -450,10 +452,10 @@ class CfgVehicles {
class GVAR(anims) {
class showBags {
phase = 0;
selections[] = {"vhc_bags"};
positions[] = {"_target selectionPosition ['vhc_bags', 'FireGeometry', 'AveragePoint']"};
items[] = {"B_Carryall_cbr", "B_Carryall_cbr"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
name = "$STR_A3_B_Carryall_cbr0";
text = "$STR_A3_B_Carryall_cbr0";
};
};
};
@ -490,13 +492,13 @@ class CfgVehicles {
class GVAR(anims) {
class showBags {
phase = 0;
selections[] = {"vhc_bags"};
positions[] = {"_target selectionPosition ['vhc_bags', 'FireGeometry', 'AveragePoint']"};
items[] = {"B_Carryall_cbr"};
name = "$STR_BACKPACK_CONTAINER_NAME";
text = "$STR_BACKPACK_CONTAINER_NAME";
name = "$STR_A3_B_Carryall_cbr0";
text = "$STR_A3_B_Carryall_cbr0";
};
class showBags2: showBags {
selections[] = {"vhc_bags2"};
positions[] = {"_target selectionPosition ['vhc_bags2', 'FireGeometry', 'AveragePoint']"};
};
};
};
@ -511,8 +513,8 @@ class CfgVehicles {
selections[] = {"vhc_bags"};
positions[] = {"private _pos = _target selectionPosition 'vhc_bags'; _pos set [0, -(_pos select 0)]; _pos"}; // Mirror position to other side of vehicle
items[] = {"B_Carryall_cbr", "B_Carryall_cbr", "B_Carryall_cbr", "B_Carryall_cbr", "B_Carryall_cbr"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
name = "$STR_A3_B_Carryall_cbr0";
text = "$STR_A3_B_Carryall_cbr0";
};
};
};
@ -534,8 +536,8 @@ class CfgVehicles {
phase = 0;
selections[] = {"vhc_bags"};
items[] = {"B_Carryall_cbr", "B_Carryall_cbr", "B_Carryall_cbr"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
name = "$STR_A3_B_Carryall_cbr0";
text = "$STR_A3_B_Carryall_cbr0";
};
};
};
@ -546,8 +548,8 @@ class CfgVehicles {
phase = 0;
selections[] = {"vhc_bags"};
items[] = {"B_Carryall_cbr", "B_Carryall_cbr"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
name = "$STR_A3_B_Carryall_cbr0";
text = "$STR_A3_B_Carryall_cbr0";
};
};
};
@ -562,8 +564,8 @@ class CfgVehicles {
phase = 0;
selections[] = {"vhc_bags"};
items[] = {"B_Carryall_cbr", "B_Carryall_cbr", "B_Carryall_cbr", "B_Carryall_cbr", "B_Carryall_cbr", "B_Carryall_cbr"};
name = "$STR_a3_cfgvehicleclasses_backpacks0";
text = "$STR_a3_cfgvehicleclasses_backpacks0";
name = "$STR_A3_B_Carryall_cbr0";
text = "$STR_A3_B_Carryall_cbr0";
};
};
};

View File

@ -36,6 +36,8 @@ PREP(pullOutBody);
PREP(canRenameGroup);
PREP(renameGroupUI);
PREP(renameGroup);
PREP(canGroupDropDistantUnits);
PREP(groupDropDistantUnits);
// Weapon Attachments
PREP(getWeaponAttachmentsActions);

View File

@ -0,0 +1,20 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Checks if the unit can drop distant units from their group
*
* Arguments:
* 0: Unit <OBJECT>
*
* Return Value:
* Unit can drop distant units <BOOL>
*
* Example:
* [player] call ace_interaction_fnc_canGroupDropDistantUnits
*
* Public: No
*/
params ["_unit"];
(_unit == leader _unit) && {missionNamespace getVariable [QGVAR(groupDropUnitDistance), 100] > 0}

View File

@ -11,13 +11,16 @@
* Unit can interact with vehicle crew <BOOL>
*
* Example:
* [cursorObject, player] call ace_interaction_fnc_canInteractWithVehicleCrew
* [player, cursorObject] call ace_interaction_fnc_canInteractWithVehicleCrew
*
* Public: No
*/
params ["_player", "_vehicle"];
if (GVAR(interactWithEnemyCrew) == 2) exitWith { true };
if ((GVAR(interactWithEnemyCrew) == 1) && {_vehicle isKindOf "StaticWeapon"}) exitWith { true };
private _crew = crew _vehicle;
// If vehicle is empty, quit

View File

@ -0,0 +1,25 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Drops distant units from their group
*
* Arguments:
* 0: Unit <OBJECT>
*
* Return Value:
* None
*
* Example:
* [player] call ace_interaction_fnc_groupDropDistantUnits
*
* Public: No
*/
params ["_unit"];
{
if ((_x distance _unit) > (missionNamespace getVariable [QGVAR(groupDropUnitDistance), 100])) then {
TRACE_1("drop",_x);
[_x] joinSilent grpNull;
};
} forEach (units group _unit);

View File

@ -119,6 +119,8 @@ private _statement = {
};
};
} forEach _items;
} else {
[LELSTRING(common,disabled)] call EFUNC(common,displayTextStructured);
};
if (!_success) exitWith {};
@ -180,13 +182,19 @@ private _config = configOf _object;
private _icon = [_animConfig >> "icon", "TEXT", "\A3\ui_f\data\igui\cfg\actions\take_ca.paa"] call CBA_fnc_getConfigEntry;
private _duration = [_animConfig >> "duration", "NUMBER", 10] call CBA_fnc_getConfigEntry;
private _text = getText (_animConfig >> "text");
private _distance = [_animConfig >> "distance", "NUMBER", 2] call CBA_fnc_getConfigEntry;
{
private _action = [
format [QGVAR(anim_%1_%2), _anim, _forEachIndex],
_name, _icon, _statement, _condition, {},
_name,
_icon,
_statement,
_condition,
{},
[_anim, _phase, _duration, _text],
_x
_x,
_distance
] call EFUNC(interact_menu,createAction);
[_class, 0, [], _action] call EFUNC(interact_menu,addActionToClass);
TRACE_3("add anim",_class,_anim,_x);

View File

@ -55,3 +55,11 @@
false,
true
] call CBA_fnc_addSetting;
[
QGVAR(interactWithEnemyCrew), "LIST",
[LSTRING(interactWithEnemyCrew_DisplayName), LSTRING(interactWithEnemyCrew_Description)],
format ["ACE %1", LLSTRING(DisplayName)],
[[0, 1, 2], [ELSTRING(common,Never), LSTRING(interactWithEnemyCrew_allowCSW), ELSTRING(common,Always)], 0],
true
] call CBA_fnc_addSetting;

View File

@ -582,6 +582,9 @@
<Chinese>小隊管理</Chinese>
<Turkish>Takım Yönetimi</Turkish>
</Key>
<Key ID="STR_ACE_Interaction_groupDropDistantUnits">
<English>Drop Distant Members</English>
</Key>
<Key ID="STR_ACE_Interaction_TeamRED">
<English>Red</English>
<German>Rot</German>
@ -1327,6 +1330,16 @@
<Key ID="STR_ACE_Interaction_SettingAnimActionsName">
<English>Interaction with animations</English>
<Russian>Взаимодействие с анимациями</Russian>
<French>Interaction avec les animations</French>
</Key>
<Key ID="STR_ACE_Interaction_interactWithEnemyCrew_DisplayName">
<English>Interact With Enemy Crew</English>
</Key>
<Key ID="STR_ACE_Interaction_interactWithEnemyCrew_Description">
<English>Limit some interactions on vehicles crewed by enemy factions.</English>
</Key>
<Key ID="STR_ACE_Interaction_interactWithEnemyCrew_allowCSW">
<English>Allow for Static Weapons</English>
</Key>
</Package>
</Project>

View File

@ -126,6 +126,7 @@
<Italian>Mostra uccisioni del veicolo a membri dell'equipaggio</Italian>
<Japanese>車両でのキルを乗員全員に表示する</Japanese>
<Korean>다른 승무원에게 차량 처치 표시</Korean>
<French>Montrer les véhicules tués aux membres de l'équipage</French>
</Key>
<Key ID="STR_ACE_KillTracker_showCrewKills_Description">
<English>Show kills from a vehicle to driver, gunner and commander</English>
@ -134,6 +135,7 @@
<Italian>Mostra uccisioni del veicolo al pilota, artigliere e comandante</Italian>
<Japanese>車両でのキルを操縦手、砲手、車長で共有して表示する</Japanese>
<Korean>차량 처치를 운전수, 사수, 지휘관에게 보여줍니다</Korean>
<French>Montrer les véhicules tués au pilote, à l'artilleur et au commandant.</French>
</Key>
</Package>
</Project>

View File

@ -18,6 +18,9 @@
params ["_unit", "_magazine"];
// Exit if repack is disabled for this magazine.
if (getNumber (configFile >> "CfgMagazines" >> _magazine >> "ace_disableRepacking") == 1) exitWith {false};
private _maxAmmoCount = getNumber (configFile >> "CfgMagazines" >> _magazine >> "count");
{

View File

@ -1,7 +1,7 @@
#include "..\script_component.hpp"
/*
* Author: PabstMirror, commy2, esteldunedain, Ruthberg
* Gets magazine children for interaciton menu.
* Gets magazine children for interaction menu.
*
* Arguments:
* 0: Target <OBJECT>
@ -18,16 +18,20 @@
params ["_target", "_player"];
private _cfgMagazines = configFile >> "CfgMagazines";
// get all mags and ammo count
private _unitMagazines = [];
private _unitMagCounts = [];
{
_x params ["_xClassname", "_xCount", "_xLoaded", "_xType"];
private _xFullMagazineCount = getNumber (configFile >> "CfgMagazines" >> _xClassname >> "count");
private _configMagazine = _cfgMagazines >> _xClassname;
private _xFullMagazineCount = getNumber (_configMagazine >> "count");
private _isRepackDisabled = getNumber (_configMagazine >> "ace_disableRepacking") == 1;
//for every partial magazine, that is either in inventory or can be moved there
if ((_xCount < _xFullMagazineCount) && {_xCount > 0} && {(!_xLoaded) || {GVAR(repackLoadedMagazines) && {[_player, _xClassname] call CBA_fnc_canAddItem}}}) then {
if ((!_isRepackDisabled) && {_xCount < _xFullMagazineCount} && {_xCount > 0} && {(!_xLoaded) || {GVAR(repackLoadedMagazines) && {[_player, _xClassname] call CBA_fnc_canAddItem}}}) then {
private _index = _unitMagazines find _xClassname;
if (_index == -1) then {
_unitMagazines pushBack _xClassname;

View File

@ -310,4 +310,17 @@ class CfgWeapons {
hiddenSelectionsTextures[] = {QPATHTOF(data\bodybagItem_white_co.paa)};
GVAR(bodyBagObject) = "ACE_bodyBagObject_white";
};
// Since base game doesn't support misc. items, this is needed to filling inventories in the editor
class ACE_painkillers_Item: ACE_ItemCore {
displayName = CSTRING(painkillers_Display);
author = ECSTRING(common,ACETeam);
scope = 2;
scopeArsenal = 0;
descriptionShort = CSTRING(painkillers_Desc_Short);
picture = QPATHTOF(ui\painkillers_ca.paa);
class ItemInfo: CBA_MiscItem_ItemInfo {
mass = 1;
};
};
};

View File

@ -1,5 +1,8 @@
#include "script_component.hpp"
// Pain killers item to magazine
["ACE_painkillers_Item", "ACE_painkillers"] call EFUNC(common,registerItemReplacement);
[QEGVAR(medical_status,initialized), {
params ["_unit"];

View File

@ -12,7 +12,7 @@ class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {"ACE_fieldDressingItem","ACE_packingBandageItem","ACE_elasticBandageItem","ACE_tourniquetItem","ACE_splintItem","ACE_painkillersItem","ACE_morphineItem","ACE_adenosineItem","ACE_epinephrineItem","ACE_plasmaIVItem","ACE_bloodIVItem","ACE_salineIVItem","ACE_quikClotItem","ACE_personalAidKitItem","ACE_surgicalKitItem","ACE_sutureItem","ACE_bodyBagItem","ACE_medicalSupplyCrate","ACE_medicalSupplyCrate_advanced"};
weapons[] = {"ACE_fieldDressing","ACE_packingBandage","ACE_elasticBandage","ACE_tourniquet","ACE_splint","ACE_painkillers","ACE_morphine","ACE_adenosine","ACE_epinephrine","ACE_plasmaIV","ACE_plasmaIV_500","ACE_plasmaIV_250","ACE_bloodIV","ACE_bloodIV_500","ACE_bloodIV_250","ACE_salineIV","ACE_salineIV_500","ACE_salineIV_250","ACE_quikclot","ACE_personalAidKit","ACE_surgicalKit","ACE_suture","ACE_bodyBag","ACE_bodyBag_blue","ACE_bodyBag_white"};
weapons[] = {"ACE_fieldDressing","ACE_packingBandage","ACE_elasticBandage","ACE_tourniquet","ACE_splint","ACE_painkillers","ACE_morphine","ACE_adenosine","ACE_epinephrine","ACE_plasmaIV","ACE_plasmaIV_500","ACE_plasmaIV_250","ACE_bloodIV","ACE_bloodIV_500","ACE_bloodIV_250","ACE_salineIV","ACE_salineIV_500","ACE_salineIV_250","ACE_quikclot","ACE_personalAidKit","ACE_surgicalKit","ACE_suture","ACE_bodyBag","ACE_bodyBag_blue","ACE_bodyBag_white","ACE_painkillers_Item"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_medical_status", "ace_medical_damage", "ace_apl"};
author = ECSTRING(common,ACETeam);

View File

@ -85,6 +85,7 @@
<Korean>활성화 및 사망/심정지 진찰 가능 [직접]</Korean>
<German>Aktiviert &amp; kann Tod/Herzstillstand diagnostizieren [Direkt]</German>
<Italian>Abilitato e può diagnosticare Morte/Arresto Cardiaco [Esplicito]</Italian>
<French>Activé &amp; peut diagnostiquer la mort/l'arrêt cardiaque [Direct].</French>
</Key>
<Key ID="STR_ACE_Medical_Treatment_AdvancedMedication_DisplayName">
<English>Advanced Medication</English>
@ -1874,7 +1875,7 @@
<Czech>Auto-morfin</Czech>
<Hungarian>Morfium autoinjektor</Hungarian>
<Italian>Autoiniettore di Morfina</Italian>
<Portuguese>Auto-injetor de morfina</Portuguese>
<Portuguese>Autoinjetor de Morfina</Portuguese>
<Japanese>モルヒネ自動注射器</Japanese>
<Korean>자동주사기 (모르핀)</Korean>
<Chinesesimp>吗啡自动注射器</Chinesesimp>
@ -1921,7 +1922,7 @@
<French>Auto-injecteur d'adénosine</French>
<Italian>Autoiniettore di Adenosina</Italian>
<Czech>Auto-adenosine</Czech>
<Portuguese>Auto-injetor de Adenosina</Portuguese>
<Portuguese>Autoinjetor de Adenosina</Portuguese>
<Russian>Аденозин в пневмошприце</Russian>
<Japanese>アデノシン自動注射器</Japanese>
<Korean>자동주사기 (아데노신)</Korean>
@ -1969,7 +1970,7 @@
<Czech>Auto-atropine</Czech>
<Hungarian>Atropin autoinjektor</Hungarian>
<Italian>Autoiniettore di Atropina</Italian>
<Portuguese>Auto-injetor de Atropina</Portuguese>
<Portuguese>Autoinjetor de Atropina</Portuguese>
<Japanese>アトロピン自動注射器</Japanese>
<Korean>자동주사기 (아트로핀)</Korean>
<Chinesesimp>阿托品自动注射器</Chinesesimp>
@ -2018,7 +2019,7 @@
<Czech>Auto-adrenalin</Czech>
<Hungarian>Epinefrin autoinjektor</Hungarian>
<Italian>Autoiniettore di Epinefrina</Italian>
<Portuguese>Auto-injetor de epinefrina</Portuguese>
<Portuguese>Autoinjetor de Epinefrina</Portuguese>
<Japanese>アドレナリン自動注射器</Japanese>
<Korean>자동주사기 (에피네프린)</Korean>
<Chinesesimp>肾上腺素自动注射器</Chinesesimp>
@ -2432,7 +2433,7 @@
<German>Operationsset</German>
<Hungarian>Sebészeti készlet</Hungarian>
<Italian>Kit chirurgico</Italian>
<Portuguese>Kit Cirurgico</Portuguese>
<Portuguese>Kit Cirúrgico</Portuguese>
<Czech>Chirurgická sada</Czech>
<Japanese>手術キット</Japanese>
<Korean>봉합 키트</Korean>
@ -2449,7 +2450,7 @@
<German>Operationsset für fortgeschrittene medizinische Feldversorgung</German>
<Hungarian>Sebészeti készlet komplex orvosi feladatok terepen való ellátására</Hungarian>
<Italian>Kit chirurgico per trattamenti avanzati sul campo.</Italian>
<Portuguese>Kit Cirurgico para uso de tratamento médico avançado em campo</Portuguese>
<Portuguese>Kit Cirúrgico para uso de tratamento médico avançado em campo</Portuguese>
<Czech>Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli</Czech>
<Japanese>手術キットは戦場で高度な処置をする為に用いる</Japanese>
<Korean>야전 상황에서 고급 의료 처치를 위해 사용되는 봉합 키트</Korean>
@ -2466,7 +2467,7 @@
<French>Trousse chirurgicale pour le traitement avancé sur le terrain.</French>
<Hungarian>Sebészeti készlet komplex orvosi feladatok terepen való ellátására</Hungarian>
<Italian>Kit chirurgico per trattamenti avanzati sul campo.</Italian>
<Portuguese>Kit Cirurgico para uso de tratamento médico avançado em campo.</Portuguese>
<Portuguese>Kit Cirúrgico para uso de tratamento médico avançado em campo.</Portuguese>
<Czech>Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli</Czech>
<Japanese>手術キットは戦場で高度な処置をする為に用いる</Japanese>
<Korean>야전 상황에서 고급 의료 처치를 위해 사용되는 봉합 키트</Korean>
@ -4197,7 +4198,7 @@
<Key ID="STR_ACE_Medical_Treatment_Check_Response_Unresponsive">
<English>%1 is not responsive</English>
<Russian>%1 не реагирует на раздражители</Russian>
<French>%1 est inconscient.</French>
<French>%1 ne répond pas aux stimuli</French>
<Spanish>%1 no reacciona</Spanish>
<Polish>%1 jest nieprzytomny</Polish>
<German>%1 ist nicht ansprechbar</German>
@ -4218,6 +4219,7 @@
<Korean>%1은(는) 의식불명입니다</Korean>
<German>%1 ist bewusstlos</German>
<Italian>%1 è privo di sensi</Italian>
<French>%1 est inconscient</French>
</Key>
<Key ID="STR_ACE_Medical_Treatment_Check_Response_CardiacArrest">
<English>%1 is not responsive, taking shallow gasps and convulsing</English>
@ -4239,6 +4241,7 @@
<Korean>%1은(는) 심정지 상태입니다</Korean>
<German>%1 ist im Herzstillstand</German>
<Italian>%1 è in arresto cardiaco</Italian>
<French>%1 est en arrêt cardiaque</French>
</Key>
<Key ID="STR_ACE_Medical_Treatment_Check_Response_Dead">
<English>%1 is not responsive, motionless and cold</English>
@ -4260,6 +4263,7 @@
<Korean>%1은(는) 사망했습니다</Korean>
<German>%1 ist tod</German>
<Italian>%1 è morto</Italian>
<French>%1 est mort</French>
</Key>
<Key ID="STR_ACE_Medical_Treatment_Check_Response_You_Checked">
<English>You checked %1</English>

View File

@ -97,17 +97,19 @@ class CfgWeapons {
GVAR(closedBolt) = 1;
GVAR(jamTypesAllowed)[] = {"Fire", "Dud"};
};
class ACE_ItemCore;
class CBA_MiscItem_ItemInfo;
// Deprecated, 3.16.0 Arsenal supports showing magazines as misc items
// Deprecated, 3.16.0 Arsenal supports showing magazines as misc. items
// However, since base game doesn't support misc. items, it's still needed to filling inventories in the editor
class ACE_SpareBarrel_Item: ACE_ItemCore {
displayName = CSTRING(SpareBarrelName);
author = ECSTRING(common,ACETeam);
scope = 1;
scope = 2;
scopeArsenal = 0;
descriptionshort = CSTRING(SpareBarrelDescription);
picture = QUOTE(PATHTOF(UI\spare_barrel_ca.paa));
descriptionShort = CSTRING(SpareBarrelDescription);
picture = QPATHTOF(UI\spare_barrel_ca.paa);
class ItemInfo: CBA_MiscItem_ItemInfo {
mass = 25;
};

View File

@ -52,6 +52,7 @@
<Italian>Coefficiente distanza di svampata</Italian>
<Japanese>後方噴射の距離係数</Japanese>
<Korean>후폭풍 거리 계수</Korean>
<French>Multiplicateur de distance de réflexion</French>
</Key>
<Key ID="STR_ACE_Overpressure_backblastDistanceCoefficient_toolTip">
<English>Scales the backblast effect</English>
@ -60,6 +61,7 @@
<Italian>Scala l'effetto delle svampate dei lanciarazzi</Italian>
<Japanese>無反動砲による後方噴射の影響範囲の大きさ</Japanese>
<Korean>후폭풍 효과의 스케일을 조정합니다</Korean>
<French>Multiplicateur de distance de réflexion</French>
</Key>
<Key ID="STR_ACE_Overpressure_statBackblastRange">
<English>Backblast range</English>
@ -72,7 +74,7 @@
<Russian>Дальность реактивной струи</Russian>
<Portuguese>Alcance do Sopro de Disparo</Portuguese>
<Hungarian>Utóhatás távolsága</Hungarian>
<French>Portée du backblast</French>
<French>Portée du souffle</French>
<Czech>Dosah zpětné tlakové vlny (backblast)</Czech>
<Spanish>Alcance del cono de fuego</Spanish>
<Korean>후폭풍 거리</Korean>
@ -88,7 +90,7 @@
<Russian>Угол реактивной струи</Russian>
<Portuguese>Ângulo do Sopro de Disparo</Portuguese>
<Hungarian>Utóhatás aránya</Hungarian>
<French>Angle du backblast</French>
<French>Angle du souffle</French>
<Czech>Úhel zpětné tlakové vlny (backblast)</Czech>
<Spanish>Ángulo del cono de fuego</Spanish>
<Korean>후폭풍 각도</Korean>

View File

@ -1043,20 +1043,20 @@ class CfgVehicles {
};
// RPG-32
class Weapon_launch_RPG32_ghex_F: Weapon_Base_F {
class Weapon_launch_RPG32_ghex_F: Launcher_Base_F {
displayName = CSTRING(launch_RPG32_ghex);
};
// P99
class Weapon_hgun_P07_khk_F: Weapon_Base_F {
class Weapon_hgun_P07_khk_F: Pistol_Base_F {
displayName = CSTRING(hgun_P07_khk);
};
class Weapon_hgun_P07_blk_F: Weapon_Base_F {
class Weapon_hgun_P07_blk_F: Pistol_Base_F {
displayName = CSTRING(hgun_P07_blk);
};
// Makarov
class Weapon_hgun_Pistol_01_F: Weapon_Base_F {
class Weapon_hgun_Pistol_01_F: Pistol_Base_F {
displayName = CSTRING(hgun_Pistol_01);
};
@ -1081,12 +1081,12 @@ class CfgVehicles {
};
// FNX-45 (Green)
class Weapon_hgun_Pistol_heavy_01_green_F: Weapon_Base_F {
class Weapon_hgun_Pistol_heavy_01_green_F: Pistol_Base_F {
displayName = CSTRING(hgun_Pistol_heavy_01_green_Name);
};
// RPG-32 (Green)
class Weapon_launch_RPG32_green_F: Weapon_Base_F {
class Weapon_launch_RPG32_green_F: Launcher_Base_F {
displayName = CSTRING(launch_RPG32_green_Name);
};

View File

@ -706,6 +706,7 @@
<Korean>카마즈 급수</Korean>
<German>KamAS Wasser</German>
<Italian>KamAZ Acqua</Italian>
<French>KamAZ Eau</French>
</Key>
<Key ID="STR_ACE_RealisticNames_Truck_02_MRL_Name">
<English>KamAZ MRL</English>
@ -1674,6 +1675,7 @@
<Korean>CZ 581</Korean>
<German>CZ 581</German>
<Italian>CZ 581</Italian>
<French>CZ 581</French>
</Key>
<Key ID="STR_ACE_RealisticNames_sgun_huntershotgun_sawedoff_01_Name">
<English>CZ 581 (Sawed-Off)</English>
@ -1683,6 +1685,7 @@
<Korean>CZ 581 (소드오프)</Korean>
<German>CZ 581 (Abgesägt)</German>
<Italian>CZ 581 (Canne mozze)</Italian>
<French>CZ 581 (canon scié)</French>
</Key>
<Key ID="STR_ACE_RealisticNames_hgun_Pistol_heavy_01_green_Name">
<English>FNX-45 Tactical (Green)</English>
@ -2733,7 +2736,7 @@
<Key ID="STR_ACE_RealisticNames_srifle_DMR_04_Tan">
<English>ASP-1 Kir (Tan)</English>
<Czech>ASP-1 Kir (Žlutohnědá)</Czech>
<French>ASP-1 Kir (Tan)</French>
<French>ASP-1 Kir (Marron)</French>
<Spanish>ASP-1 Kir (Tan)</Spanish>
<Russian>ASP-1 Kir (пустынный)</Russian>
<German>ASP-1 Kir (Hellbraun)</German>
@ -3093,6 +3096,7 @@
<Korean>115식 보총 (검정)</Korean>
<German>Type 115 (Schwarz)</German>
<Italian>Type 115 (Nero)</Italian>
<French>Type 115 (Noir)</French>
</Key>
<Key ID="STR_ACE_RealisticNames_arifle_arx_ghex_Name">
<English>Type 115 (Green Hex)</English>
@ -3102,6 +3106,7 @@
<Korean>115식 보총 (초록육각)</Korean>
<German>Type 115 (Hex Grün)</German>
<Italian>Type 115 (Hex Verde)</Italian>
<French>Type 115 (Hew Vert)</French>
</Key>
<Key ID="STR_ACE_RealisticNames_arifle_arx_hex_Name">
<English>Type 115 (Hex)</English>
@ -3111,6 +3116,7 @@
<Korean>115식 보총 (육각)</Korean>
<German>Type 115 (Hex)</German>
<Italian>Type 115 (Hex)</Italian>
<French>Type 115 (Hex)</French>
</Key>
<Key ID="STR_ACE_RealisticNames_arifle_CTAR_blk">
<English>QBZ-95-1 (Black)</English>
@ -3904,6 +3910,7 @@
<Korean>UTG 디펜더 126</Korean>
<German>UTG Defender 126</German>
<Italian>UTG Defender 126</Italian>
<French>UTG Defender 126</French>
</Key>
<Key ID="STR_ACE_RealisticNames_optic_mrd_Name">
<English>EOTech MRDS</English>
@ -3913,6 +3920,7 @@
<Korean>이오텍 MRDS</Korean>
<German>EOTech MRDS</German>
<Italian>EOTech MRDS</Italian>
<French>EOTech MRDS</French>
</Key>
<Key ID="STR_ACE_RealisticNames_optic_mrd_black_Name">
<English>EOTech MRDS (Black)</English>
@ -3922,6 +3930,7 @@
<Korean>이오텍 MRDS (검정)</Korean>
<German>EOTech MRDS (Schwarz)</German>
<Italian>EOTech MRDS (Nero)</Italian>
<French>EOTech MRDS (Noir)</French>
</Key>
<Key ID="STR_ACE_RealisticNames_optic_hamr">
<English>Leupold Mark 4 HAMR</English>

View File

@ -4,23 +4,24 @@
* Check if a unit can check the ammo of the target.
*
* Arguments:
* 0: Unit equipped with the weapon <OBJECT>
* 0: Unit equipped with the weapon/CSW to check <OBJECT>
* 1: Unit checking ammo <OBJECT>
*
* Return Value:
* Can check ammo <BOOL>
*
* Example:
* [cursorObject] call ace_reload_fnc_canCheckAmmo
* [cursorObject, player] call ace_reload_fnc_canCheckAmmo
*
* Public: No
*/
params ["_target"];
params ["_target", "_player"];
// Static weapons
if (_target isKindOf "StaticWeapon") exitWith {
// No check ammo action on destroyed static weapons
if (!alive _target) exitWith {false};
if (!alive _target || {!([_player, _target] call EFUNC(interaction,canInteractWithVehicleCrew))}) exitWith {false};
if (currentMagazine _target != "") exitWith {true};

View File

@ -434,7 +434,8 @@ class CfgVehicles {
class EGVAR(interaction,anims) {
class showTracks {
phase = 0;
positions[] = {{-1.7, -3.875, -0.7}, {1.7, -3.875, -0.7}};
selections[] = {"vhc_tracks"};
positions[] = {"private _pos = _target selectionPosition 'vhc_tracks'; _pos set [0, -(_pos select 0)]; _pos"}; // Mirror position to other side of vehicle
items[] = {"ACE_Track", "ACE_Track", "ACE_Track"};
name = CSTRING(RemoveTrack);
text = CSTRING(RemovingTrack);
@ -448,7 +449,7 @@ class CfgVehicles {
class Offroad_02_base_F: Car_F {
class EGVAR(interaction,anims) {
class hideSpareWheel {
selections[] = {"spare_wheel"};
positions[] = {"_target selectionPosition ['spare_wheel', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = CSTRING(RemoveWheel);
text = CSTRING(RemovingWheel);
@ -505,7 +506,7 @@ class CfgVehicles {
class Van_02_base_F: Truck_F {
class EGVAR(interaction,anims) {
class spare_tyre_hide {
positions[] = {"[[-1.2, -3.7, -0.4], [-0.45, -3.5, -0.4]] select (_target animationPhase 'Door_4_source' == 0)"};
positions[] = {"_target selectionPosition ['spare_tyre', 'ViewGeometry', 'AveragePoint']"};
items[] = {"ACE_Wheel"};
name = CSTRING(RemoveWheel);
text = CSTRING(RemovingWheel);

View File

@ -1,4 +1,5 @@
#include "script_component.hpp"
#include "\a3\ui_f\hpp\defineDIKCodes.inc"
// Exit on Headless
if (!hasInterface) exitWith {};
@ -48,3 +49,24 @@ GVAR(elementsSet) = createHashMap;
}] call CBA_fnc_addEventHandler;
[QUOTE(ADDON), "AnimChanged", LINKFUNC(onAnimChanged), true] call EFUNC(common,addPlayerEH);
["ACE3 Common", QGVAR(hideHud), localize LSTRING(hideHud), {
GVAR(hideHud) = !(missionNamespace getVariable [QGVAR(hideHud), false]);
[QGVAR(hideHud), [GVAR(hideHud)]] call CBA_fnc_localEvent;
private _mask = [];
if (GVAR(hideHud)) then { _mask resize [10, false] };
[QGVAR(hideHud), _mask] call EFUNC(common,showHud);
if (missionNamespace getVariable [QGVAR(hideHud_hideChat), true]) then {
showChat !GVAR(hideHud);
};
if (!isNil "diwako_dui_main_toggled_off") then {
diwako_dui_main_toggled_off = GVAR(hideHud); // ref https://github.com/diwako/diwako_dui/wiki/Hiding-DUI-for-cutscenes
};
true
},
{false},
[DIK_F12, [false, true, false]], false] call CBA_fnc_addKeybind; // ctrl+f12

View File

@ -722,5 +722,8 @@
<Italian>Nasconde l'icona mostrata in automatico quando qualcosa è davanti al cursore. La modifica richiede un riavvio del gioco.\nAttenzione: Non rimuovere l'azione stessa! È consigliato rimuovere solo il tasto dall'assegnazione 'Usa Azione Standard' per impedire interazioni non volute.</Italian>
<Portuguese>Esconde o ícone mostrado automaticamente quando algo está a frente do cursor. É preciso reiniciar o jogo.\nAviso: Não remove a ação em si! É recomendado desvincular a tecla de "Usar ação padrão" para previnir interações indesejadas.</Portuguese>
</Key>
<Key ID="STR_ACE_UI_hideHud">
<English>Hide all UI</English>
</Key>
</Package>
</Project>

View File

@ -21,9 +21,6 @@ class CfgAmmo {
class M_Vorona_HEAT;
class M_SPG9_HEAT;
class R_MRAAWS_HEAT_F;
class B_338_Ball;
class ACE_G_40mm_HE;
CREATE_INCENDIARY_AMMO(BulletBase, BulletCore, 0.1);
CREATE_INCENDIARY_AMMO(ShellBase, ShellCore, 1.0);

View File

@ -1,19 +1,17 @@
class Extended_PreStart_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_SCRIPT(XEH_preStart));
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_SCRIPT(XEH_postInit));
};
};
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_SCRIPT(XEH_preInit));
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_SCRIPT(XEH_postInit));
};
};

View File

@ -28,6 +28,7 @@ class CfgVehicles {
GVAR(engineFireProb) = 0.5;
GVAR(detonationDuringFireProb) = 0.2;
GVAR(canHaveFireRing) = 0;
EGVAR(cookoff,canHaveFireJet) = 1;
};
class Wheeled_APC_F: Car_F {
GVAR(hullDetonationProb) = 0.2;
@ -38,6 +39,7 @@ class CfgVehicles {
GVAR(engineFireProb) = 0.5;
GVAR(detonationDuringFireProb) = 0.2;
GVAR(canHaveFireRing) = 0;
EGVAR(cookoff,canHaveFireJet) = 1;
};
class APC_Tracked_01_base_F: Tank_F {};
class B_APC_Tracked_01_base_F: APC_Tracked_01_base_F {};
@ -288,4 +290,3 @@ class CfgVehicles {
GVAR(canHaveFireRing) = 1;
};
};

View File

@ -1,14 +1,13 @@
PREP(abandon);
PREP(addEventHandler);
PREP(handleBail);
PREP(handleVehicleDamage);
PREP(handleCookoff);
PREP(detonate);
PREP(processHit);
PREP(handleDetonation);
PREP(handleDamage);
PREP(knockOut);
PREP(addDamage);
PREP(handleDamageEjectIfDestroyed);
PREP(blowOffTurret);
PREP(handleBail);
PREP(handleCookoff);
PREP(handleDamage);
PREP(handleDamageEjectIfDestroyed);
PREP(handleDetonation);
PREP(handleVehicleDamage);
PREP(knockOut);
PREP(medicalDamage);
PREP(processHit);
PREP(setDamage);

View File

@ -1,53 +1,65 @@
#include "script_component.hpp"
["ace_settingsInitialized", {
// Init eject from destroyed vehicles
// See https://github.com/acemod/ACE3/pull/6330
// Still valid for Arma 2.16
{
[_x, "Init", {
params ["_vehicle"];
if (!alive _vehicle) exitWith {};
TRACE_2("ejectIfDestroyed init",_vehicle,typeOf _vehicle);
_vehicle addEventHandler ["HandleDamage", {call FUNC(handleDamageEjectIfDestroyed)}];
}, true, [], true] call CBA_fnc_addClassEventHandler;
} forEach EJECT_IF_DESTROYED_VEHICLES;
["CBA_settingsInitialized", {
TRACE_1("settings init",GVAR(enabled));
if (GVAR(enabled)) then {
[QGVAR(medicalDamage), LINKFUNC(medicalDamage)] call CBA_fnc_addEventHandler;
[QGVAR(bailOut), {
params ["_center", "_crewman", "_vehicle"];
TRACE_3("bailOut",_center,_crewman,_vehicle);
if (!GVAR(enabled)) exitWith {};
if (isPlayer _crewman) exitWith {};
if (!alive _crewman || {!([_crewman] call EFUNC(common,isAwake))}) exitWith {};
[QGVAR(medicalDamage), LINKFUNC(medicalDamage)] call CBA_fnc_addEventHandler;
unassignVehicle _crewman;
_crewman leaveVehicle _vehicle;
doGetOut _crewman;
private _angle = floor (random 360);
private _dist = (30 + (random 10));
private _escape = _center getPos [_dist, _angle];
_crewman doMove _escape;
_crewman setSpeedMode "FULL";
}] call CBA_fnc_addEventHandler;
["Tank", "init", LINKFUNC(addEventHandler), true, [], true] call CBA_fnc_addClassEventHandler;
["Wheeled_APC_F", "init", LINKFUNC(addEventHandler), true, [], true] call CBA_fnc_addClassEventHandler;
if (GVAR(enableCarDamage)) then {
["Car", "init", LINKFUNC(addEventHandler), true, [], true] call CBA_fnc_addClassEventHandler;
};
// Blow off turret effect
// TODO: Add blowing-off-turret effect to vehicles that cook-off but aren't destroyed (no catastrophic explosion)
// The problem is that vehicles are repairable if they haven't been destroyed. So if the turret is gone and vehicle is repaired, how do we handle that?
["Tank", "Killed", {
if (_this select 3 && random 1 < 0.15) then {
(_this select 0) call FUNC(blowOffTurret);
};
}, true, [], true] call CBA_fnc_addClassEventHandler;
if (isServer) then {
// To set source and instigator, setDamage must be executed on the server
[QGVAR(setDamage), {(_this select 0) setDamage (_this select 1)}] call CBA_fnc_addEventHandler;
};
// init eject from destroyed vehicle
{
[_x, "init", {
params ["_vehicle"];
if (!alive _vehicle) exitWith {};
TRACE_2("ejectIfDestroyed init",_vehicle,typeOf _vehicle);
_vehicle addEventHandler ["HandleDamage", {call FUNC(handleDamageEjectIfDestroyed)}];
}, true, [], true] call CBA_fnc_addClassEventHandler;
} forEach EJECT_IF_DESTROYED_VEHICLES;
[QGVAR(bailOut), {
params ["_vehicle", "_unit"];
TRACE_2("bailOut",_vehicle,_unit);
// Ignore players and the dead
if (_unit call EFUNC(common,isPlayer) || {!(_unit call EFUNC(common,isAwake))}) exitWith {};
unassignVehicle _unit;
_unit leaveVehicle _vehicle;
doGetOut _unit;
private _angle = floor (random 360);
private _dist = 30 + (random 10);
private _escape = _vehicle getPos [_dist, _angle];
_unit doMove _escape;
_unit setSpeedMode "FULL";
}] call CBA_fnc_addEventHandler;
GVAR(vehicleClassesHitPointHash) = createHashMap;
["Tank", "Init", LINKFUNC(addEventHandler), true, [], true] call CBA_fnc_addClassEventHandler;
// Wheeled_APC_F inherits from Car
[["Wheeled_Apc_F", "Car"] select GVAR(enableCarDamage), "Init", LINKFUNC(addEventHandler), true, [], true] call CBA_fnc_addClassEventHandler;
// Blow off turret effect
// TODO: Add blowing-off-turret effect to vehicles that cook-off but aren't destroyed (no catastrophic explosion)
// The problem is that vehicles are repairable if they haven't been destroyed. So if the turret is gone and vehicle is repaired, how do we handle that?
["Tank", "Killed", {
if (_this select 3 && random 1 < 0.15) then {
(_this select 0) call FUNC(blowOffTurret);
};
}] call CBA_fnc_addClassEventHandler;
}] call CBA_fnc_addEventHandler;

View File

@ -7,7 +7,7 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
// ammo/vehicle config defines touch all of these
requiredAddons[] = { "ace_common", "ace_cookoff" };
requiredAddons[] = {"ace_common", "ace_cookoff"};
author = ECSTRING(common,ACETeam);
authors[] = {"tcvm"};
url = ECSTRING(main,URL);

View File

@ -4,29 +4,34 @@
* Forces the AI currently in a vehicle to bail out.
*
* Arguments:
* 0: The vehicle in which to bail out <OBJECT>
* 0: Vehicle <OBJECT>
*
* Return Value:
* None
*
* Example:
* [tank2] call ace_vehicle_damage_fnc_abandon;
* cursorObject call ace_vehicle_damage_fnc_abandon
*
* Public: No
*/
params ["_vehicle"];
TRACE_2("abandon",_vehicle,(crew _vehicle) select {alive _x});
if (_vehicle getVariable [QGVAR(allowCrewInImmobile), false]) exitWith {}; // check for API
// Check for API
if (_vehicle getVariable [QGVAR(allowCrewInImmobile), false]) exitWith {
TRACE_1("API prevented crew from dismounting",_vehicle);
};
TRACE_1("abandon",_vehicle);
[{
params ["_vehicle"];
_vehicle allowCrewInImmobile false;
private _center = getPosASL _vehicle;
TRACE_2("bailing out crew after delay",_vehicle,_center);
TRACE_2("bailing out crew after delay",_vehicle,crew _vehicle);
{
[QGVAR(bailOut), [_center, _x, _vehicle], _x] call CBA_fnc_targetEvent;
} forEach crew _vehicle;
}, _this, random MAX_CREW_BAILOUT_TIME] call CBA_fnc_waitAndExecute;
[QGVAR(bailOut), [_vehicle, _x], _x] call CBA_fnc_targetEvent;
} forEach (crew _vehicle);
}, _vehicle, random MAX_CREW_BAILOUT_TIME] call CBA_fnc_waitAndExecute;

View File

@ -1,42 +0,0 @@
#include "..\script_component.hpp"
/*
* Author: tcvm
* Sets vehicle damage based on HitIndex. Failing that it falls back to HitPoint name.
*
* Arguments:
* 0: The vehicle <OBJECT>
* 1: Hit Index <NUMBER>
* 2: Hit Point <STRING>
* 3: Damage <NUMBER>
* 4: Whether or not to cap the damage to maximum part damage <BOOL> (default: True)
*
* Return Value:
* None
*
* Example:
* [vehicle player, 234, "HitHull"] call ace_vehicle_damage_fnc_addDamage
*
* Public: No
*/
params ["_vehicle", "_hitIndex", "_hitPoint", "_damage", ["_capDamageAtCurret", true]];
private _currentDamage = _vehicle getHitPointDamage _hitPoint;
if (_capDamageAtCurret && { _damage < _currentDamage }) exitWith {
TRACE_4("capping damage at current",_capDamageAtCurret,_damage,_currentDamage,_hitPoint);
};
TRACE_4("adding damage to vehicle",_vehicle,_hitIndex,_hitPoint,_damage);
if (_hitPoint isEqualTo "#structural") then {
_hitPoint = "hithull";
_hitIndex = -1;
};
if (_hitIndex >= 0) then {
_vehicle setHitIndex [_hitIndex, _damage, true];
} else {
_vehicle setHitPointDamage [_hitPoint, _damage, true];
};
if (_hitPoint == "hitengine" && {_damage > 0.9}) then {
[QEGVAR(cookoff,engineFireServer), _vehicle] call CBA_fnc_serverEvent;
};

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