diff --git a/addons/apl/ACE_CSW_m3_tripod.p3d b/addons/apl/ACE_CSW_m3_tripod.p3d
index 1d112d5a17..0ad274ad9c 100644
Binary files a/addons/apl/ACE_CSW_m3_tripod.p3d and b/addons/apl/ACE_CSW_m3_tripod.p3d differ
diff --git a/addons/apl/ACE_CSW_mortarBaseplate.p3d b/addons/apl/ACE_CSW_mortarBaseplate.p3d
index 9da30112b1..1dfee12c2a 100644
Binary files a/addons/apl/ACE_CSW_mortarBaseplate.p3d and b/addons/apl/ACE_CSW_mortarBaseplate.p3d differ
diff --git a/addons/apl/ace_csw_tripod_ags30.p3d b/addons/apl/ace_csw_tripod_ags30.p3d
new file mode 100644
index 0000000000..11dd8fc0f2
Binary files /dev/null and b/addons/apl/ace_csw_tripod_ags30.p3d differ
diff --git a/addons/apl/ace_csw_tripod_kord.p3d b/addons/apl/ace_csw_tripod_kord.p3d
new file mode 100644
index 0000000000..f2c1d67410
Binary files /dev/null and b/addons/apl/ace_csw_tripod_kord.p3d differ
diff --git a/addons/apl/ace_csw_tripod_m122.p3d b/addons/apl/ace_csw_tripod_m122.p3d
new file mode 100644
index 0000000000..38e4199fe2
Binary files /dev/null and b/addons/apl/ace_csw_tripod_m122.p3d differ
diff --git a/addons/apl/ace_csw_tripod_m220.p3d b/addons/apl/ace_csw_tripod_m220.p3d
new file mode 100644
index 0000000000..c3632b12c3
Binary files /dev/null and b/addons/apl/ace_csw_tripod_m220.p3d differ
diff --git a/addons/apl/ace_csw_tripod_spg9.p3d b/addons/apl/ace_csw_tripod_spg9.p3d
new file mode 100644
index 0000000000..ec19e4f103
Binary files /dev/null and b/addons/apl/ace_csw_tripod_spg9.p3d differ
diff --git a/addons/apl/data/csw_nsv.rvmat b/addons/apl/data/csw_nsv.rvmat
new file mode 100644
index 0000000000..46ea387b23
--- /dev/null
+++ b/addons/apl/data/csw_nsv.rvmat
@@ -0,0 +1,95 @@
+ambient[]={1,1,1,1.000000};
+diffuse[]={1,1,1,1.000000};
+forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
+emmisive[]={0.000000,0.000000,0.000000,1.000000};
+specular[]={1,1,1,1.000000};
+specularPower=40.000000;
+PixelShaderID="super";
+VertexShaderID="super";
+class Stage1
+{
+ texture = "z\ace\addons\apl\data\csw_nsv_nohq.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1.000000,0.000000,0.000000};
+ up[]={0.000000,1.000000,0.000000};
+ dir[]={0.000000,0.000000,0.000000};
+ pos[]={0.000000,0.000000,0.000000};
+ };
+};
+class Stage2
+{
+ texture="a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={8.0000,0.000000,0.000000};
+ up[]={0.000000,8.0000,0.000000};
+ dir[]={0.000000,0.000000,0.000000};
+ pos[]={0.000000,0.000000,0.000000};
+ };
+};
+class Stage3
+{
+ texture="#(argb,8,8,3)color(0,0,0,0,MC)";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1.000000,0.000000,0.000000};
+ up[]={0.000000,1.000000,0.000000};
+ dir[]={0.000000,0.000000,0.000000};
+ pos[]={0.000000,0.000000,0.000000};
+ };
+};
+class Stage4
+{
+ texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1.000000,0.000000,0.000000};
+ up[]={0.000000,1.000000,0.000000};
+ dir[]={0.000000,0.000000,0.000000};
+ pos[]={0.000000,0.000000,0.000000};
+ };
+};
+class Stage5
+{
+ texture = "z\ace\addons\apl\data\csw_nsv_smdi.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1.000000,0.000000,0.000000};
+ up[]={0.000000,1.000000,0.000000};
+ dir[]={0.000000,0.000000,0.000000};
+ pos[]={0.000000,0.000000,0.000000};
+ };
+};
+class Stage6
+{
+ texture = "#(ai,32,128,1)fresnel(3.38,5.33)";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1.000000,0.000000,0.000000};
+ up[]={0.000000,1.000000,0.000000};
+ dir[]={0.000000,0.000000,0.000000};
+ pos[]={0.000000,0.000000,0.000000};
+ };
+};
+class Stage7
+{
+ texture="a3\data_f\env_land_co.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1.000000,0.000000,0.000000};
+ up[]={0.000000,1.000000,0.000000};
+ dir[]={0.000000,0.000000,0.000000};
+ pos[]={0.000000,0.000000,0.000000};
+ };
+};
+class StageTI {
+ texture = "a3\data_f\default_vehicle_ti_ca.paa";
+};
diff --git a/addons/apl/data/csw_nsv_co.paa b/addons/apl/data/csw_nsv_co.paa
new file mode 100644
index 0000000000..f7af35c0b8
Binary files /dev/null and b/addons/apl/data/csw_nsv_co.paa differ
diff --git a/addons/apl/data/csw_nsv_nohq.paa b/addons/apl/data/csw_nsv_nohq.paa
new file mode 100644
index 0000000000..299de50ad7
Binary files /dev/null and b/addons/apl/data/csw_nsv_nohq.paa differ
diff --git a/addons/apl/data/csw_nsv_smdi.paa b/addons/apl/data/csw_nsv_smdi.paa
new file mode 100644
index 0000000000..09f7758e75
Binary files /dev/null and b/addons/apl/data/csw_nsv_smdi.paa differ
diff --git a/addons/apl/data/csw_spg9.rvmat b/addons/apl/data/csw_spg9.rvmat
new file mode 100644
index 0000000000..21de1208fd
--- /dev/null
+++ b/addons/apl/data/csw_spg9.rvmat
@@ -0,0 +1,92 @@
+ambient[] = {1.0,1.0,1.0,1.0};
+diffuse[] = {1.0,1.0,1.0,1.0};
+forcedDiffuse[] = {0.0,0.0,0.0,0.0};
+emmisive[] = {0.0,0.0,0.0,1.0};
+specular[] = {0.545,0.545,0.545,1.0};
+specularPower = 100.0;
+PixelShaderID = "Super";
+VertexShaderID = "Super";
+class Stage1
+{
+ texture = "z\ace\addons\apl\data\csw_spg9_nohq.paa";
+ uvSource = "tex";
+ class uvTransform
+ {
+ aside[] = {1.0,0.0,0.0};
+ up[] = {0.0,1.0,0.0};
+ dir[] = {0.0,0.0,1.0};
+ pos[] = {0.0,0.0,0.0};
+ };
+};
+class Stage2
+{
+ texture = "a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
+ uvSource = "tex";
+ class uvTransform
+ {
+ aside[] = {8.0,0.0,0.0};
+ up[] = {0.0,2.0,0.0};
+ dir[] = {0.0,0.0,1.0};
+ pos[] = {0.0,0.0,0.0};
+ };
+};
+class Stage3
+{
+ texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
+ uvSource = "tex";
+ class uvTransform
+ {
+ aside[] = {1.0,0.0,0.0};
+ up[] = {0.0,1.0,0.0};
+ dir[] = {0.0,0.0,1.0};
+ pos[] = {0.0,0.0,0.0};
+ };
+};
+class Stage4
+{
+ texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
+ uvSource = "tex";
+ class uvTransform
+ {
+ aside[] = {1.0,0.0,0.0};
+ up[] = {0.0,1.0,0.0};
+ dir[] = {0.0,0.0,1.0};
+ pos[] = {0.0,0.0,0.0};
+ };
+};
+class Stage5
+{
+ texture = "z\ace\addons\apl\data\csw_spg9_smdi.paa";
+ uvSource = "tex";
+ class uvTransform
+ {
+ aside[] = {1.0,0.0,0.0};
+ up[] = {0.0,1.0,0.0};
+ dir[] = {0.0,0.0,1.0};
+ pos[] = {0.0,0.0,0.0};
+ };
+};
+class Stage6
+{
+ texture = "#(ai,32,128,1)fresnel(1.89,1.02)";
+ uvSource = "tex";
+ class uvTransform
+ {
+ aside[] = {1.0,0.0,0.0};
+ up[] = {0.0,1.0,0.0};
+ dir[] = {0.0,0.0,1.0};
+ pos[] = {0.0,0.0,0.0};
+ };
+};
+class Stage7
+{
+ texture="a3\data_f\env_land_co.paa";
+ uvSource = "tex";
+ class uvTransform
+ {
+ aside[] = {1.0,0.0,0.0};
+ up[] = {0.0,1.0,0.0};
+ dir[] = {0.0,0.0,1.0};
+ pos[] = {0.0,0.0,0.0};
+ };
+};
diff --git a/addons/apl/data/csw_spg9_co.paa b/addons/apl/data/csw_spg9_co.paa
new file mode 100644
index 0000000000..c7b6694e9b
Binary files /dev/null and b/addons/apl/data/csw_spg9_co.paa differ
diff --git a/addons/apl/data/csw_spg9_nohq.paa b/addons/apl/data/csw_spg9_nohq.paa
new file mode 100644
index 0000000000..718e536492
Binary files /dev/null and b/addons/apl/data/csw_spg9_nohq.paa differ
diff --git a/addons/apl/data/csw_spg9_smdi.paa b/addons/apl/data/csw_spg9_smdi.paa
new file mode 100644
index 0000000000..345a664a12
Binary files /dev/null and b/addons/apl/data/csw_spg9_smdi.paa differ
diff --git a/addons/apl/data/csw_tow_merge.rvmat b/addons/apl/data/csw_tow_merge.rvmat
new file mode 100644
index 0000000000..55db8aba2a
--- /dev/null
+++ b/addons/apl/data/csw_tow_merge.rvmat
@@ -0,0 +1,32 @@
+ambient[]={1.000000,1.000000,1.000000,1.000000};
+diffuse[]={1.000000,1.000000,1.000000,1.000000};
+forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
+emmisive[]={0.000000,0.000000,0.000000,1.000000};
+specular[]={0.3000000,0.3000000,0.3000000,1.000000};
+specularPower=100.000000;
+PixelShaderID="NormalMapSpecularDIMap";
+VertexShaderID="NormalMap";
+class Stage1
+{
+ texture="z\ace\addons\apl\data\csw_tow_merge_nohq.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1.000000,0.000000,0.000000};
+ up[]={0.000000,1.000000,0.000000};
+ dir[]={0.000000,0.000000,0.000000};
+ pos[]={0.000000,0.000000,0.000000};
+ };
+};
+class Stage2
+{
+ texture="z\ace\addons\apl\data\csw_tow_merge_smdi.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1.000000,0.000000,0.000000};
+ up[]={0.000000,1.000000,0.000000};
+ dir[]={0.000000,0.000000,0.000000};
+ pos[]={0.000000,0.000000,0.000000};
+ };
+};
\ No newline at end of file
diff --git a/addons/apl/data/csw_tow_merge_co.paa b/addons/apl/data/csw_tow_merge_co.paa
new file mode 100644
index 0000000000..5d16cd54d4
Binary files /dev/null and b/addons/apl/data/csw_tow_merge_co.paa differ
diff --git a/addons/apl/data/csw_tow_merge_nohq.paa b/addons/apl/data/csw_tow_merge_nohq.paa
new file mode 100644
index 0000000000..a02ec97769
Binary files /dev/null and b/addons/apl/data/csw_tow_merge_nohq.paa differ
diff --git a/addons/apl/data/csw_tow_merge_smdi.paa b/addons/apl/data/csw_tow_merge_smdi.paa
new file mode 100644
index 0000000000..91090de9b4
Binary files /dev/null and b/addons/apl/data/csw_tow_merge_smdi.paa differ
diff --git a/addons/apl/data/csw_tripod_ags.rvmat b/addons/apl/data/csw_tripod_ags.rvmat
new file mode 100644
index 0000000000..3e435eb6db
--- /dev/null
+++ b/addons/apl/data/csw_tripod_ags.rvmat
@@ -0,0 +1,32 @@
+ambient[] = {1.0,1.0,1.0,1.0};
+diffuse[] = {1.0,1.0,1.0,1.0};
+forcedDiffuse[] = {0.0,0.0,0.0,0.0};
+emmisive[] = {0.0,0.0,0.0,0.0};
+specular[] = {0.3,0.3,0.3,1.0};
+specularPower = 256.0;
+PixelShaderID = "NormalMapSpecularDIMap";
+VertexShaderID = "NormalMap";
+class Stage1
+{
+ texture = "z\ace\addons\apl\data\csw_tripod_ags_nohq.paa";
+ uvSource = "tex";
+ class uvTransform
+ {
+ aside[] = {1.0,0.0,0.0};
+ up[] = {0.0,1.0,0.0};
+ dir[] = {0.0,0.0,0.0};
+ pos[] = {0.0,0.0,0.0};
+ };
+};
+class Stage2
+{
+ texture = "z\ace\addons\apl\data\csw_tripod_ags_smdi.paa";
+ uvSource = "tex";
+ class uvTransform
+ {
+ aside[] = {1.0,0.0,0.0};
+ up[] = {0.0,1.0,0.0};
+ dir[] = {0.0,0.0,0.0};
+ pos[] = {0.0,0.0,0.0};
+ };
+};
diff --git a/addons/apl/data/csw_tripod_ags_co.paa b/addons/apl/data/csw_tripod_ags_co.paa
new file mode 100644
index 0000000000..93e2367188
Binary files /dev/null and b/addons/apl/data/csw_tripod_ags_co.paa differ
diff --git a/addons/apl/data/csw_tripod_ags_nohq.paa b/addons/apl/data/csw_tripod_ags_nohq.paa
new file mode 100644
index 0000000000..ddad36a44a
Binary files /dev/null and b/addons/apl/data/csw_tripod_ags_nohq.paa differ
diff --git a/addons/apl/data/csw_tripod_ags_smdi.paa b/addons/apl/data/csw_tripod_ags_smdi.paa
new file mode 100644
index 0000000000..561bcc8178
Binary files /dev/null and b/addons/apl/data/csw_tripod_ags_smdi.paa differ
diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml
index 440d26e867..d9df3f16a2 100644
--- a/addons/common/stringtable.xml
+++ b/addons/common/stringtable.xml
@@ -1330,5 +1330,37 @@
玩家与AI
玩家與AI
+
+ Players only
+ Игроков
+ Tylko dla graczy
+ Solo jugadores
+ Nur Spieler
+ Pouze hráči
+ Somente jogadores
+ Joueur uniquement
+ Csak játékosok
+ Solo giocatori
+ プレイヤーのみ
+ 플레이어만
+ 只限玩家
+ 只限玩家
+
+
+ Players and AI
+ Игроков и ботов
+ Gracze oraz AI
+ Jugadores e IA
+ Spieler und KI
+ Hráči a AI
+ Jogadores e IA
+ Joueurs et IA
+ Játékosok és AI
+ Giocatori ed IA
+ プレイヤーと AI
+ 플레이어 및 인공지능
+ 玩家与AI
+ 玩家與AI
+
diff --git a/addons/csw/CfgMagazineGroups.hpp b/addons/csw/CfgMagazineGroups.hpp
index 8a9e0ed31b..697403f963 100644
--- a/addons/csw/CfgMagazineGroups.hpp
+++ b/addons/csw/CfgMagazineGroups.hpp
@@ -36,6 +36,7 @@ class GVAR(groups) {
rhs_mag_127x108mm_50 = 1;
rhs_mag_127x108mm_100 = 1;
rhs_mag_127x108mm_150 = 1;
+ rhs_mag_127x108mm_300 = 1;
CUP_150Rnd_127x108_KORD_M = 1;
CUP_50Rnd_127x108_KORD_M = 1;
CUP_50Rnd_TE3_LRT5_127x107_DSHKM_M = 1; // not sure why cup uses 107 for the DSHKM?
@@ -52,14 +53,18 @@ class GVAR(groups) {
class ACE_1Rnd_82mm_Mo_HE {
ACE_1Rnd_82mm_Mo_HE = 1;
8Rnd_82mm_Mo_shells = 1;
+ rhs_12Rnd_m821_HE = 1;
+ rhs_mag_3vo18_10 = 1;
};
class ACE_1Rnd_82mm_Mo_Smoke {
ACE_1Rnd_82mm_Mo_Smoke = 1;
8Rnd_82mm_Mo_Smoke_white = 1;
+ rhs_mag_d832du_10 = 1;
};
class ACE_1Rnd_82mm_Mo_Illum {
ACE_1Rnd_82mm_Mo_Illum = 1;
8Rnd_82mm_Mo_Flare_white = 1;
+ rhs_mag_3vs25m_10 = 1;
};
class ACE_1Rnd_82mm_Mo_HE_Guided {
ACE_1Rnd_82mm_Mo_HE_Guided = 1;
@@ -69,7 +74,7 @@ class GVAR(groups) {
ACE_1Rnd_82mm_Mo_HE_LaserGuided = 1;
8Rnd_82mm_Mo_LG = 1;
};
-
+
// A3 Titans (Spike) - just use handheld magazines
class Titan_AT {
1Rnd_GAT_missiles = 1;
diff --git a/addons/csw/CfgVehicles.hpp b/addons/csw/CfgVehicles.hpp
index 812943d346..9c2ea542ee 100644
--- a/addons/csw/CfgVehicles.hpp
+++ b/addons/csw/CfgVehicles.hpp
@@ -66,20 +66,57 @@ class CfgVehicles {
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_m3_tripod.p3d);
- displayName = CSTRING(Tripod_displayName);
+ displayName = CSTRING(m3Tripod_displayName);
class ADDON {
disassembleTo = QGVAR(m3CarryTripod);
};
};
class GVAR(m3TripodLow): GVAR(m3Tripod) {
- author = ECSTRING(common,ACETeam);
- scope = 2;
- model = QPATHTOEF(apl,ACE_CSW_m3_tripod.p3d);
- displayName = CSTRING(Tripod_displayName);
class ADDON {
disassembleTo = QGVAR(m3CarryTripodLow);
};
};
+ class GVAR(kordTripod): GVAR(baseTripod) {
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ace_csw_tripod_kord.p3d);
+ displayName = CSTRING(kordTripod_displayName);
+ class ADDON {
+ disassembleTo = QGVAR(kordCarryTripod);
+ };
+ };
+ class GVAR(kordTripodLow): GVAR(kordTripod) {
+ class ADDON {
+ disassembleTo = QGVAR(kordCarryTripod);
+ };
+ };
+ class GVAR(sag30Tripod): GVAR(m3Tripod) {
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ace_csw_tripod_ags30.p3d);
+ displayName = CSTRING(sag30Tripod_displayName);
+ class ADDON {
+ disassembleTo = QGVAR(sag30CarryTripod);
+ };
+ };
+ class GVAR(m220Tripod): GVAR(baseTripod) {
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ace_csw_tripod_m220.p3d);
+ displayName = CSTRING(m220Tripod_displayName);
+ class ADDON {
+ disassembleTo = QGVAR(m220CarryTripod);
+ };
+ };
+ class GVAR(spg9Tripod): GVAR(baseTripod) {
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ace_csw_tripod_spg9.p3d);
+ displayName = CSTRING(spg9Tripod_displayName);
+ class ADDON {
+ disassembleTo = QGVAR(spg9CarryTripod);
+ };
+ };
class GVAR(mortarBaseplate): GVAR(m3Tripod) {
author = ECSTRING(common,ACETeam);
scope = 2;
diff --git a/addons/csw/CfgWeapons.hpp b/addons/csw/CfgWeapons.hpp
index c70e17b0b1..6c5db3796c 100644
--- a/addons/csw/CfgWeapons.hpp
+++ b/addons/csw/CfgWeapons.hpp
@@ -16,7 +16,7 @@ class CfgWeapons {
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 440;
};
- displayName = CSTRING(TripodFolded_displayName);
+ displayName = CSTRING(m3TripodFolded_displayName);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
@@ -27,8 +27,88 @@ class CfgWeapons {
class ADDON: ADDON {
deploy = QGVAR(m3TripodLow);
};
- displayName = CSTRING(TripodLowFolded_displayName);
+ displayName = CSTRING(m3TripodLowFolded_displayName);
};
+
+ class GVAR(kordCarryTripod): Launcher_Base_F {
+ class ADDON {
+ type = "mount";
+ deployTime = 4;
+ pickupTime = 4;
+ deploy = QGVAR(kordTripod);
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 350;
+ };
+ displayName = CSTRING(kordTripodFolded_displayName);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = QPATHTOF(UI\Tripod_Icon.paa);
+ };
+
+ class GVAR(kordCarryTripodLow): GVAR(kordCarryTripod) {
+ class ADDON {
+ deploy = QGVAR(kordTripodLow);
+ };
+ displayName = CSTRING(kordTripodFoldedLow_displayName);
+ };
+
+ class GVAR(m220CarryTripod): Launcher_Base_F {
+ class ADDON {
+ type = "mount";
+ deployTime = 10;
+ pickupTime = 6;
+ deploy = QGVAR(m220Tripod);
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 210;
+ };
+ displayName = CSTRING(m220TripodFolded_displayName);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = QPATHTOF(UI\Tripod_Icon.paa);
+ };
+
+ class GVAR(spg9CarryTripod): Launcher_Base_F {
+ class ADDON {
+ type = "mount";
+ deployTime = 5;
+ pickupTime = 3;
+ deploy = QGVAR(spg9Tripod);
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 260;
+ };
+ displayName = CSTRING(spg9TripodFolded_displayName);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = QPATHTOF(UI\Tripod_Icon.paa);
+ };
+
+ class GVAR(sag30CarryTripod): Launcher_Base_F {
+ class ADDON {
+ type = "mount";
+ deployTime = 4;
+ pickupTime = 4;
+ deploy = QGVAR(sag30Tripod);
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 260;
+ };
+ displayName = CSTRING(sag30TripodFolded_displayName);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = QPATHTOF(UI\Tripod_Icon.paa);
+ };
+
class GVAR(carryMortarBaseplate): Launcher_Base_F {
class ADDON {
type = "mount";
@@ -39,7 +119,7 @@ class CfgWeapons {
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 290; // M3A1 baseblate weight
};
- displayName = CSTRING(mortarBaseplate_displayName);
+ displayName = CSTRING(m224MortarBaseplate_displayName);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
@@ -48,6 +128,7 @@ class CfgWeapons {
};
+
// Weapons:
class GVAR(staticATCarry): Launcher_Base_F {
class ADDON {
@@ -144,7 +225,7 @@ class CfgWeapons {
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 620; // M252 Mortar Weight
};
- displayName = CSTRING(StaticMortarBag_displayName);
+ displayName = CSTRING(m224MortarBag_displayName);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
diff --git a/addons/csw/data/model.cfg b/addons/csw/data/model.cfg
index aa9fa5af7c..7adabdac10 100644
--- a/addons/csw/data/model.cfg
+++ b/addons/csw/data/model.cfg
@@ -6,8 +6,11 @@ class CfgSkeletons {
};
class ACE_CSW_Tripod_Skeleton: Default {};
class ACE_CSW_M3_Tripod_Skeleton: Default {};
- // class ACE_CSW_FoldedTripod_Skeleton: Default {};
- // class ACE_CSW_ammoBox_Skeleton: Default {};
+ class ace_csw_tripod_ags30_Skeleton: Default {};
+ class ace_csw_tripod_kord_Skeleton: Default {};
+ class ace_csw_tripod_m122_Skeleton: Default {};
+ class ace_csw_tripod_m220_Skeleton: Default {};
+ class ace_csw_tripod_spg9_Skeleton: Default {};
class ACE_CSW_WeaponBag_Skeleton: Default {};
class ACE_CSW_mortarBaseplate_Skeleton: Default {};
};
@@ -27,16 +30,31 @@ class CfgModels {
sections[] = {};
skeletonName = "ACE_CSW_M3_Tripod_Skeleton";
};
- /* class ACE_CSW_FoldedTripod: Default {
+ class ace_csw_tripod_ags30 : Default {
sectionsInherit = "";
sections[] = {};
- skeletonName = "ACE_CSW_FoldedTripod_Skeleton";
+ skeletonName = "ace_csw_tripod_ags30_Skeleton";
};
- class ACE_CSW_ammoBox: Default {
+ class ace_csw_tripod_kord : Default {
sectionsInherit = "";
sections[] = {};
- skeletonName = "ACE_CSW_ammoBox_Skeleton";
- }; */
+ skeletonName = "ace_csw_tripod_kord_Skeleton";
+ };
+ class ace_csw_tripod_m122 : Default {
+ sectionsInherit = "";
+ sections[] = {};
+ skeletonName = "ace_csw_tripod_m122_Skeleton";
+ };
+ class ace_csw_tripod_m220 : Default {
+ sectionsInherit = "";
+ sections[] = {};
+ skeletonName = "ace_csw_tripod_m220_Skeleton";
+ };
+ class ace_csw_tripod_spg9 : Default {
+ sectionsInherit = "";
+ sections[] = {};
+ skeletonName = "ace_csw_tripod_spg9_Skeleton";
+ };
class ACE_CSW_Bag: Default {
sectionsInherit = "";
sections[] = {};
diff --git a/addons/csw/functions/fnc_assemble_deployTripod.sqf b/addons/csw/functions/fnc_assemble_deployTripod.sqf
index 7bae44a350..039dcd051d 100644
--- a/addons/csw/functions/fnc_assemble_deployTripod.sqf
+++ b/addons/csw/functions/fnc_assemble_deployTripod.sqf
@@ -32,6 +32,13 @@
// Create a tripod
private _cswTripod = createVehicle [_tripodClassname, [0, 0, 0], [], 0, "NONE"];
+ // Because the tripod can be a "full weapon" we disable any data that will allow it to be loaded
+ _cswTripod setVariable [QGVAR(assemblyMode), 1, true]; // Explicitly set advanced assembly mode and broadcast
+ _cswTripod setVariable [QGVAR(emptyWeapon), true, false]; // unload gun, shouldn't need broadcast for this as it will be local to us
+ if (!GVAR(defaultAssemblyMode)) then {
+ TRACE_1("global disableVanillaAssembly event",_cswTripod); // handles it being assembled when setting is disabled
+ [QGVAR(disableVanillaAssembly), [_cswTripod]] call CBA_fnc_globalEvent;
+ };
private _posATL = _player getRelPos [2, 0];
_posATL set [2, ((getPosATL _player) select 2) + 0.5];
diff --git a/addons/csw/functions/fnc_assemble_pickupWeapon.sqf b/addons/csw/functions/fnc_assemble_pickupWeapon.sqf
index bc35f44f6d..1b131d4a3b 100644
--- a/addons/csw/functions/fnc_assemble_pickupWeapon.sqf
+++ b/addons/csw/functions/fnc_assemble_pickupWeapon.sqf
@@ -25,7 +25,8 @@
private _pickupTime = getNumber(configFile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "pickupTime");
TRACE_4("",typeOf _staticWeapon,_carryWeaponClassname,_turretClassname,_pickupTime);
if (!isClass (configFile >> "CfgWeapons" >> _carryWeaponClassname)) exitWith {ERROR_1("bad weapon classname [%1]",_carryWeaponClassname);};
- if (!isClass (configFile >> "CfgVehicles" >> _turretClassname)) exitWith {ERROR_1("bad turret classname [%1]",_turretClassname);};
+ // Turret classname can equal nothing if the deploy bag is the "whole" weapon. e.g Kornet, Metis, other ATGMs
+ if (!(_turretClassname isEqualTo "") && {!isClass (configFile >> "CfgVehicles" >> _turretClassname)}) exitWith {ERROR_1("bad turret classname [%1]",_turretClassname);};
private _onFinish = {
params ["_args"];
@@ -53,29 +54,33 @@
};
} forEach (magazinesAllTurrets _staticWeapon);
- private _cswTripod = createVehicle [_turretClassname, [0, 0, 0], [], 0, "NONE"];
- [_cswTripod, _staticWeapon] call (missionNamespace getVariable _onDisassembleFunc);
+ if !(_turretClassname isEqualTo "") then {
+ private _cswTripod = createVehicle [_turretClassname, [0, 0, 0], [], 0, "NONE"];
+ // Delay a frame so weapon has a chance to be deleted
+ [{
+ params ["_cswTripod", "_weaponDir", "_weaponPos"];
+ _cswTripod setDir _weaponDir;
+ _cswTripod setPosATL _weaponPos;
+ _cswTripod setVelocity [0, 0, -0.05];
+ _cswTripod setVectorUp (surfaceNormal _weaponPos);
+ }, [_cswTripod, _weaponDir, _weaponPos]] call CBA_fnc_execNextFrame;
+ [_cswTripod, _staticWeapon] call (missionNamespace getVariable _onDisassembleFunc);
+ };
- LOG("delete weapon");
- deleteVehicle _staticWeapon;
-
- // Delay a frame so weapon has a chance to be deleted
[{
- params ["_player", "_cswTripod", "_weaponDir", "_weaponPos", "_carryWeaponClassname"];
- _cswTripod setDir _weaponDir;
- _cswTripod setPosATL _weaponPos;
- _cswTripod setVelocity [0, 0, -0.05];
- _cswTripod setVectorUp (surfaceNormal _weaponPos);
-
+ params ["_player", "_weaponPos", "_carryWeaponClassname"];
if ((alive _player) && {(secondaryWeapon _player) == ""}) exitWith {
_player addWeapon _carryWeaponClassname;
};
- private _weaponRelPos = _cswTripod getRelPos RELATIVE_DIRECTION(90);
+ private _weaponRelPos = _weaponPos getPos RELATIVE_DIRECTION(90);
private _weaponHolder = createVehicle ["groundWeaponHolder", [0, 0, 0], [], 0, "NONE"];
_weaponHolder setDir random [0, 180, 360];
_weaponHolder setPosATL [_weaponRelPos select 0, _weaponRelPos select 1, _weaponPos select 2];
_weaponHolder addWeaponCargoGlobal [_carryWeaponClassname, 1];
- }, [_player, _cswTripod, _weaponDir, _weaponPos, _carryWeaponClassname]] call CBA_fnc_execNextFrame;
+ }, [_player, _weaponPos, _carryWeaponClassname]] call CBA_fnc_execNextFrame;
+
+ LOG("delete weapon");
+ deleteVehicle _staticWeapon;
LOG("end");
};
diff --git a/addons/csw/stringtable.xml b/addons/csw/stringtable.xml
index e71400da6c..b9ee13fa30 100644
--- a/addons/csw/stringtable.xml
+++ b/addons/csw/stringtable.xml
@@ -4,9 +4,6 @@
Crew Served Weapons
-
- CSW Tripod
-
Place Tripod
@@ -123,18 +120,6 @@
Used to reload crew served weapons
-
- [CSW] Deployable Tripod
-
-
- [CSW] Deployable Tripod (Low)
-
-
- [CSW] Mk6 Mortar Baseplate
-
-
- [CSW] Mk6 Mortar Tube
-
[CSW] Mini-Spike Launcher (AT)
@@ -216,5 +201,47 @@
[CSW] 12.7 x 108 mm Ammo Belt
+
+ M3 Tripod
+
+
+ [CSW] 6P57 Deployable Tripod
+
+
+ [CSW] 6P57 Deployable Tripod (Low)
+
+
+ [CSW] M220 Deployable Tripod
+
+
+ [CSW] SPG-9 Deployable Tripod
+
+
+ [CSW] SAG-30 Deployable Tripod
+
+
+ 6P57 Tripod
+
+
+ SAG-30 Tripod
+
+
+ M220 Tripod
+
+
+ SPG-9 Tripod
+
+
+ [CSW] M3 Deployable Tripod
+
+
+ [CSW] M3 Deployable Tripod (Low)
+
+
+ [CSW] M224 Mortar Baseplate
+
+
+ [CSW] Mk6 Mortar Tube
+
diff --git a/docs/wiki/framework/crew-served-weapons-framework.md b/docs/wiki/framework/crew-served-weapons-framework.md
index a83aa02c6f..3f64b09587 100644
--- a/docs/wiki/framework/crew-served-weapons-framework.md
+++ b/docs/wiki/framework/crew-served-weapons-framework.md
@@ -39,6 +39,7 @@ class CfgVehicles {
disassembleTurret = QGVAR(m3TripodLow); // Which tripod will appear when weapon has been disassembled
ammoLoadTime = 7; // How long it takes in seconds to load ammo into the weapon
ammoUnloadTime = 5; // How long it takes in seconds to unload ammo from the weapon
+ desiredAmmo = 69; // When the weapon is reloaded it will try and reload to this ammo capacity
disassembleFunc = "myCoolFunction.sqf"; // A callback function for when the CSW gets disassembled. Arguments: [tripod, staticWeapon]
};
};
@@ -55,6 +56,7 @@ class CfgMagazines {
type=256; // Must be 256 to show up in Arsenal
count = 100; // How much ammo gets added per "Load Ammo" selection
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d"; // default ammo box model
+ //ace_isbelt = 1; // Needed if your magazine has belt linking
};
};
```
@@ -63,22 +65,22 @@ class CfgMagazines {
```cpp
class CfgWeapons {
- class ace_csw_base_carry;
- class banana_carry_weapon: ace_csw_base_carry {
- class ace_csw_options {
- assembleTo = "banana_csw"; // What the weapon will assemble into
- baseTripod = "banana_tripod"; // The tripod which the weapon can be assembled onto (Default is "ace_csw_m3Tripod")
+ class Launcher_Base_F;
+ class banana_carry_weapon: Launcher_Base_F {
+ class ACE_CSW {
type = "weapon"; // What type of carry it is. Must always be "weapon" for the carry weapon
+ deployTime = 4; // How long it takes to deploy the weapon onto the tripod
+ pickupTime = 4; // How long it takes to disassemble weapon from the tripod
+ class assembleTo {
+ ace_csw_m3Tripod = "banana_csw_mod1"; // What tripod can this weapon deploy onto, and what vehicle will it spawn when it is deployed
+ banana_tripod = "banana_csw";
+ };
};
};
class HMG_Static;
- class banana_weapon: HMG_Static {
- class ace_csw_options {
- deployTime = 10; // Time in seconds it takes to mount the weapon on the tripod
- pickupTime = 12; // Time in seconds it takes to dismount the weapon from the tripod
- };
- magazines[] = { banana_ammo }; // You must have both the dummy and real ammunition
+ class banana_proxy_weapon: HMG_Static {
+ magazineReloadTime = 0.5; // Proxy weapons are spawned onto the CSW when it is assembled. Because ammo loading times use defined values in the magazine, this number needs to be low to ensure low latency
};
};
```
@@ -87,8 +89,8 @@ class CfgWeapons {
```cpp
class ace_csw_groups { // Ammo that can be loaded into this CSW
- class banana_ammo { // The magazine which will be loaded into the weapon
- banana_dummy_ammo = 1; // Ammo that is loaded into the weapon as per CfgWeapons >> weapon >> magazines
+ class banana_ammo { // The magazine which the player can place into their inventory
+ banana_dummy_ammo = 1; // Magazine that is loaded into the weapon as per CfgWeapons >> weapon >> magazines
};
// Optional
@@ -99,6 +101,9 @@ class CfgWeapons {
/*
Ammo types already defined by CSW:
- ace_csw_100Rnd_127x99_mag
+ - ace_csw_100Rnd_127x99_mag_red
+ - ace_csw_100Rnd_127x99_mag_green
+ - ace_csw_100Rnd_127x99_mag_yellow
- ace_csw_50Rnd_127x108_mag
- ace_csw_20Rnd_20mm_G_belt
- ACE_1Rnd_82mm_Mo_HE
@@ -129,14 +134,14 @@ class CfgVehicles {
```cpp
class CfgWeapons {
- class ace_csw_base_carry;
- class banana_carry_tripod: ace_csw_base_carry {
- class GVAR(options) {
- deployTime = 166; // How much time in seconds it takes to deploy the tripod
- pickupTime = 12; // How much time in seconds it takes to pickup the tripod
- type = "mount"; // What type of carry it is. Must always be "mount" for the carry tripod
- deploy = "banana_tripod"; // What will be deployed when "Deploy Tripod" is selected
- };
+ class Launcher_Base_F;
+ class banana_carry_tripod: Launcher_Base_F {
+ class ACE_CSW {
+ type = "mount"; // What type of carry it is. Must always be "mount" for the tripod
+ deployTime = 4; // How long it takes to deploy the tripod
+ pickupTime = 4; // How long it takes to pickup the tripod
+ deploy = "banana_tripod"; // what vehicle will spawn when the tripod is deployed
+ };
};
};
-```
\ No newline at end of file
+```
diff --git a/optionals/compat_rhs_afrf3/CfgMagazineGroups.hpp b/optionals/compat_rhs_afrf3/CfgMagazineGroups.hpp
new file mode 100644
index 0000000000..4eb8f84779
--- /dev/null
+++ b/optionals/compat_rhs_afrf3/CfgMagazineGroups.hpp
@@ -0,0 +1,18 @@
+#define CREATE_MAGAZINE_GROUP(ammo) class GVAR(ammo) { rhs_##ammo = 1; }
+class ace_csw_groups {
+ CREATE_MAGAZINE_GROUP(mag_9M131M);
+ CREATE_MAGAZINE_GROUP(mag_9M131F);
+ CREATE_MAGAZINE_GROUP(mag_9m133);
+ CREATE_MAGAZINE_GROUP(mag_9m133f);
+ CREATE_MAGAZINE_GROUP(mag_9m1331);
+ CREATE_MAGAZINE_GROUP(mag_9m133m2);
+ CREATE_MAGAZINE_GROUP(mag_PG9V);
+ CREATE_MAGAZINE_GROUP(mag_PG9N);
+ CREATE_MAGAZINE_GROUP(mag_PG9VNT);
+ CREATE_MAGAZINE_GROUP(mag_OG9VM);
+ CREATE_MAGAZINE_GROUP(mag_OG9V);
+ CREATE_MAGAZINE_GROUP(mag_VOG30_30);
+ CREATE_MAGAZINE_GROUP(mag_GPD30_30);
+ CREATE_MAGAZINE_GROUP(mag_VOG17m_30);
+};
+
diff --git a/optionals/compat_rhs_afrf3/CfgMagazines.hpp b/optionals/compat_rhs_afrf3/CfgMagazines.hpp
index 1ce1a43b04..81a942f526 100644
--- a/optionals/compat_rhs_afrf3/CfgMagazines.hpp
+++ b/optionals/compat_rhs_afrf3/CfgMagazines.hpp
@@ -14,4 +14,136 @@ class cfgMagazines {
class rhs_mag_127x108mm_1470 : rhs_mag_127x108mm_50 {
ace_isbelt = 0;
};
+ class RHS_mag_VOG30_30: VehicleMagazine {
+ ace_isbelt = 1;
+ };
+ class RHS_mag_GPD30_30: RHS_mag_VOG30_30 {};
+
+ // RHS magazines for crew handled ammo
+ class rhs_mag_9M131M;
+ class GVAR(mag_9M131M): rhs_mag_9M131M {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 55;
+ model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_metis_emptytube.p3d";
+ picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
+ };
+ class rhs_mag_9M131F;
+ class GVAR(mag_9M131F): rhs_mag_9M131F {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 55;
+ model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_metis_emptytube.p3d";
+ picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
+ };
+ class rhs_mag_9m133;
+ class GVAR(mag_9m133): rhs_mag_9m133 {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 55;
+ model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_kornet_emptytube.p3d";
+ picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
+ };
+ class rhs_mag_9m133f;
+ class GVAR(mag_9m133f): rhs_mag_9m133f {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 55;
+ model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_kornet_emptytube.p3d";
+ picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
+ };
+ class rhs_mag_9m1331;
+ class GVAR(mag_9m1331): rhs_mag_9m1331 {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 55;
+ model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_kornet_emptytube.p3d";
+ picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
+ };
+ class rhs_mag_9m133m2;
+ class GVAR(mag_9m133m2): rhs_mag_9m133m2 {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 55;
+ model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_kornet_emptytube.p3d";
+ picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
+ };
+ class rhs_mag_PG9V;
+ class GVAR(mag_PG9V): rhs_mag_PG9V {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 80;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_Exp\Launchers\RPG7\Data\UI\icon_rocket_RPG7_CA.paa";
+ };
+ class rhs_mag_PG9N;
+ class GVAR(mag_PG9N): rhs_mag_PG9N {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 80;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_Exp\Launchers\RPG7\Data\UI\icon_rocket_RPG7_CA.paa";
+ };
+ class rhs_mag_PG9VNT;
+ class GVAR(mag_PG9VNT): rhs_mag_PG9VNT {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 80;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_Exp\Launchers\RPG7\Data\UI\icon_rocket_RPG7_CA.paa";
+ };
+ class rhs_mag_OG9VM;
+ class GVAR(mag_OG9VM): rhs_mag_OG9VM {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 80;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_Exp\Launchers\RPG7\Data\UI\icon_rocket_RPG7_CA.paa";
+ };
+ class rhs_mag_OG9V;
+ class GVAR(mag_OG9V): rhs_mag_OG9V {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 80;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_Exp\Launchers\RPG7\Data\UI\icon_rocket_RPG7_CA.paa";
+ };
+
+ class GVAR(mag_VOG30_30): RHS_mag_VOG30_30 {
+ scope = 2;
+ type = 256;
+ count = 30;
+ mass = 40;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
+ };
+ class GVAR(mag_GPD30_30): RHS_mag_GPD30_30 {
+ scope = 2;
+ type = 256;
+ count = 30;
+ mass = 40;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
+ };
+ class RHS_mag_VOG17m_30;
+ class GVAR(mag_VOG17m_30): RHS_mag_VOG17m_30 {
+ scope = 2;
+ type = 256;
+ count = 30;
+ mass = 40;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
+ };
+
};
diff --git a/optionals/compat_rhs_afrf3/CfgVehicles.hpp b/optionals/compat_rhs_afrf3/CfgVehicles.hpp
index 068f22280c..fcf87a3d1e 100644
--- a/optionals/compat_rhs_afrf3/CfgVehicles.hpp
+++ b/optionals/compat_rhs_afrf3/CfgVehicles.hpp
@@ -233,6 +233,16 @@ class CfgVehicles {
position = "";
};
};
+ class ACE_CSW {
+ enabled = 1;
+ proxyWeapon = QGVAR(rhs_weap_SPG9);
+ magazineLocation = "_target selectionPosition 'breach'";
+ disassembleWeapon = QGVAR(spg9_carry);
+ disassembleTurret = QEGVAR(csw,spg9Tripod);
+ desiredAmmo = 1;
+ ammoLoadTime = 5;
+ ammoUnloadTime = 3;
+ };
};
class rhs_Kornet_Base: AT_01_base_F {
class ACE_Actions: ACE_Actions {
@@ -241,10 +251,105 @@ class CfgVehicles {
selection = "tripod";
};
};
+ class ACE_CSW {
+ enabled = 1;
+ proxyWeapon = QGVAR(rhs_weap_9K133_launcher);
+ magazineLocation = "_target selectionPosition 'gun'";
+ disassembleWeapon = QGVAR(kornet_carry);
+ disassembleTurret = "";
+ desiredAmmo = 1;
+ ammoLoadTime = 7;
+ ammoUnloadTime = 5;
+ };
};
class rhs_assault_umbts;
class rhs_assault_umbts_engineer: rhs_assault_umbts {
EGVAR(logistics_wirecutter,hasWirecutter) = 1;
};
+
+ class StaticMortar: StaticWeapon {};
+ class rhs_2b14_82mm_Base: StaticMortar {
+ class ACE_Actions: ACE_Actions {
+ class ACE_MainActions: ACE_MainActions {
+ position = "";
+ selection = ""; // no good selections for this mortar
+ };
+ };
+ class ACE_CSW {
+ enabled = 1;
+ magazineLocation = "";
+ proxyWeapon = QGVAR(rhs_weap_2b14);
+ disassembleWeapon = QGVAR(2b14_carry); // carry weapon [CfgWeapons]
+ disassembleTurret = QEGVAR(csw,mortarBaseplate); // turret [CfgVehicles]
+ desiredAmmo = 1;
+ ammoLoadTime = 3;
+ ammoUnloadTime = 3;
+ };
+ };
+
+ class rhs_nsv_tripod_base: StaticMGWeapon {
+ class ACE_CSW {
+ enabled = 1;
+ proxyWeapon = QGVAR(rhs_weap_nsvt_effects);
+ magazineLocation = "_target selectionPosition 'magazine'";
+ disassembleWeapon = QGVAR(nsv_carry);
+ disassembleTurret = QEGVAR(csw,kordTripodLow);
+ desiredAmmo = 50;
+ ammoLoadTime = 10;
+ ammoUnloadTime = 8;
+ };
+ };
+
+ class RHS_KORD_Base: rhs_nsv_tripod_base {
+ class ACE_CSW: ACE_CSW {
+ enabled = 1;
+ proxyWeapon = QGVAR(rhs_weap_KORD);
+ disassembleWeapon = QGVAR(kord_carry);
+ disassembleTurret = QEGVAR(csw,kordTripodLow);
+ };
+ };
+
+ class RHS_KORD_high_base: RHS_KORD_Base {
+ class ACE_CSW: ACE_CSW {
+ enabled = 1;
+ proxyWeapon = QGVAR(rhs_weap_KORD);
+ disassembleWeapon = QGVAR(kord_carry);
+ disassembleTurret = QEGVAR(csw,kordTripod);
+ };
+ };
+
+ class StaticGrenadeLauncher: StaticWeapon {};
+ class RHS_AGS30_TriPod_base: StaticGrenadeLauncher {
+ class ACE_CSW {
+ enabled = 1;
+ proxyWeapon = QGVAR(rhs_weap_AGS30);
+ magazineLocation = "_target selectionPosition 'magazine'";
+ disassembleWeapon = QGVAR(ags30_carry);
+ disassembleTurret = QEGVAR(csw,sag30Tripod);
+ desiredAmmo = 30;
+ ammoLoadTime = 10;
+ ammoUnloadTime = 8;
+ };
+ };
+
+ class rhs_SPG9M_base: rhs_SPG9_base {
+ class ACE_CSW: ACE_CSW {
+ enabled = 1;
+ disassembleWeapon = QGVAR(spg9m_carry);
+ };
+ };
+
+ class rhs_Metis_Base: AT_01_base_F {
+ class ACE_CSW {
+ enabled = 1;
+ proxyWeapon = QGVAR(rhs_weap_9K115_2_launcher);
+ magazineLocation = "_target selectionPosition 'gun'";
+ disassembleWeapon = QGVAR(metis_carry);
+ disassembleTurret = "";
+ desiredAmmo = 1;
+ ammoLoadTime = 7;
+ ammoUnloadTime = 5;
+ };
+ };
};
diff --git a/optionals/compat_rhs_afrf3/CfgWeapons.hpp b/optionals/compat_rhs_afrf3/CfgWeapons.hpp
index f09d1cc787..6b69518108 100644
--- a/optionals/compat_rhs_afrf3/CfgWeapons.hpp
+++ b/optionals/compat_rhs_afrf3/CfgWeapons.hpp
@@ -1,3 +1,4 @@
+#define CREATE_CSW_PROXY(weapon) class ##weapon; class GVAR(weapon): ##weapon { magazineReloadTime = 0.5; }
class CfgWeapons {
@@ -110,7 +111,10 @@ class CfgWeapons {
};
};
};
- class Launcher_Base_F;
+ class Launcher;
+ class Launcher_Base_F: Launcher {
+ class WeaponSlotsInfo;
+ };
class rhs_weap_rpg7: Launcher_Base_F {
ace_reloadlaunchers_enabled = 1;
};
@@ -141,4 +145,157 @@ class CfgWeapons {
ace_overpressure_range = 15;
ace_overpressure_damage = 0.5;
};
+
+ CREATE_CSW_PROXY(rhs_weap_2b14);
+ CREATE_CSW_PROXY(rhs_weap_nsvt_effects);
+ CREATE_CSW_PROXY(rhs_weap_KORD);
+ CREATE_CSW_PROXY(RHS_weap_AGS30);
+ CREATE_CSW_PROXY(rhs_weap_SPG9);
+ CREATE_CSW_PROXY(rhs_weap_9K133_launcher);
+ CREATE_CSW_PROXY(rhs_weap_9K115_2_launcher);
+
+ class GVAR(2b14_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "weapon";
+ deployTime = 20;
+ pickupTime = 25;
+ class assembleTo {
+ EGVAR(csw,mortarBaseplate) = "rhs_2b14_82mm_msv";
+ };
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 670; // 2B14 Mortar Weight
+ };
+ displayName = CSTRING(2b14_tube);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\podnos_2b14_ca.paa";
+ };
+
+ class GVAR(nsv_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "weapon";
+ deployTime = 4;
+ pickupTime = 4;
+ class assembleTo {
+ EGVAR(csw,kordTripodLow) = "RHS_NSV_TriPod_MSV";
+ };
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 550;
+ };
+ displayName = CSTRING(nsv_gun);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsafrf\addons\rhs_heavyweapons\mg\bis_kord\kord_CA.paa";
+ };
+
+ class GVAR(kord_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "weapon";
+ deployTime = 4;
+ pickupTime = 4;
+ class assembleTo {
+ EGVAR(csw,kordTripod) = "rhs_KORD_high_MSV";
+ EGVAR(csw,kordTripodLow) = "rhs_KORD_MSV";
+ };
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 550;
+ };
+ displayName = CSTRING(kord_gun);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\kord6u16sp_ca.paa";
+ };
+
+ class GVAR(ags30_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "weapon";
+ deployTime = 4;
+ pickupTime = 4;
+ class assembleTo {
+ EGVAR(csw,sag30Tripod) = "RHS_AGS30_TriPod_MSV";
+ };
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 400; // https://odin.tradoc.army.mil/mediawiki/index.php/AGS-17_Russian_30mm_Automatic_Grenade_Launcher
+ };
+ displayName = CSTRING(ags30_gun);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\ags_static_CA.paa";
+ };
+
+ class GVAR(spg9_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "weapon";
+ deployTime = 4;
+ pickupTime = 4;
+ class assembleTo {
+ EGVAR(csw,spg9Tripod) = "rhsgref_ins_SPG9";
+ };
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 1000;
+ };
+ displayName = CSTRING(spg9_tube);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\spg9_CA.paa";
+ };
+ class GVAR(spg9m_carry): GVAR(spg9_carry) {
+ class ACE_CSW {
+ class assembleTo {
+ EGVAR(csw,spg9Tripod) = "rhs_SPG9M_MSV";
+ };
+ };
+ displayName = CSTRING(spg9m_tube);
+ };
+
+ class GVAR(metis_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "mount";
+ deployTime = 4;
+ pickupTime = 4;
+ deploy = "rhs_Metis_9k115_2_msv";
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 300;
+ };
+ displayName = CSTRING(metis_tube);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\metis_at13_CA.paa";
+ };
+
+ class GVAR(kornet_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "mount";
+ deployTime = 4;
+ pickupTime = 4;
+ deploy = "rhs_Kornet_9M133_2_msv";
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 600;
+ };
+ displayName = CSTRING(kornet_launcher);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\metis_at13_CA.paa";
+ };
};
diff --git a/optionals/compat_rhs_afrf3/config.cpp b/optionals/compat_rhs_afrf3/config.cpp
index b7cfe3f233..41e559c6e8 100644
--- a/optionals/compat_rhs_afrf3/config.cpp
+++ b/optionals/compat_rhs_afrf3/config.cpp
@@ -6,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_rearm", "ace_refuel", "ace_repair", "rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_trucks", "rhs_c_2s3", "rhs_c_rva", "rhs_c_heavyweapons"};
+ requiredAddons[] = {"ace_csw", "ace_rearm", "ace_refuel", "ace_repair", "rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_trucks", "rhs_c_2s3", "rhs_c_rva", "rhs_c_heavyweapons"};
author = ECSTRING(common,ACETeam);
authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut", "commy2", "Skengman2"};
url = ECSTRING(main,URL);
@@ -19,3 +19,5 @@ class CfgPatches {
#include "CfgMagazines.hpp"
#include "CfgWeapons.hpp"
#include "CfgVehicles.hpp"
+#include "CfgMagazineGroups.hpp"
+
diff --git a/optionals/compat_rhs_afrf3/stringtable.xml b/optionals/compat_rhs_afrf3/stringtable.xml
new file mode 100644
index 0000000000..d54efa1c02
--- /dev/null
+++ b/optionals/compat_rhs_afrf3/stringtable.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ 2B14 Tube Bag
+
+
+ NSV Gun Bag
+
+
+ KORD Gun Bag
+
+
+ AGS-30 Gun Bag
+
+
+ SPG-9 Launcher Bag
+
+
+ SPG-9M Launcher
+
+
+ 9k115 Metis Launcher Bag
+
+
+ 9m113 Kornet Launcher
+
+
+
diff --git a/optionals/compat_rhs_gref3/CfgVehicles.hpp b/optionals/compat_rhs_gref3/CfgVehicles.hpp
index 3ac81df2fe..4afca8c955 100644
--- a/optionals/compat_rhs_gref3/CfgVehicles.hpp
+++ b/optionals/compat_rhs_gref3/CfgVehicles.hpp
@@ -4,4 +4,24 @@ class CfgVehicles {
// Canoes are propelled by paddlers
EGVAR(refuel,canReceive) = 0;
};
+
+ class StaticMGWeapon;
+ class rhs_DSHKM_base: StaticMGWeapon {
+ class ACE_CSW {
+ enabled = 1;
+ proxyWeapon = QGVAR(rhs_weap_DSHKM);
+ magazineLocation = "_target selectionPosition 'otocvez'";
+ disassembleWeapon = QGVAR(dshkm_carry);
+ disassembleTurret = QEGVAR(csw,kordTripod);
+ desiredAmmo = 50;
+ ammoLoadTime = 10;
+ ammoUnloadTime = 8;
+ };
+ };
+ class rhs_DSHkM_Mini_TriPod_base: rhs_DSHKM_base {
+ class ACE_CSW: ACE_CSW {
+ enabled = 1;
+ disassembleTurret = QEGVAR(csw,kordTripodLow);
+ };
+ };
};
diff --git a/optionals/compat_rhs_gref3/CfgWeapons.hpp b/optionals/compat_rhs_gref3/CfgWeapons.hpp
index d851d598e0..390341610b 100644
--- a/optionals/compat_rhs_gref3/CfgWeapons.hpp
+++ b/optionals/compat_rhs_gref3/CfgWeapons.hpp
@@ -1,3 +1,4 @@
+#define CREATE_CSW_PROXY(weapon) class ##weapon; class GVAR(weapon): ##weapon { magazineReloadTime = 0.5; }
class CfgWeapons {
class rhs_weap_kar98k_Base_F;
@@ -81,4 +82,31 @@ class CfgWeapons {
class rhs_weap_mg42_base: Rifle_Base_F {
ACE_Overheating_allowSwapBarrel = 1;
};
+
+ CREATE_CSW_PROXY(rhs_weap_DSHKM);
+
+ class Launcher;
+ class Launcher_Base_F: Launcher {
+ class WeaponSlotsInfo;
+ };
+ class GVAR(dshkm_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "weapon";
+ deployTime = 4;
+ pickupTime = 4;
+ class assembleTo {
+ EGVAR(csw,kordTripod) = "rhsgref_ins_DSHKM";
+ EGVAR(csw,kordTripodLow) = "rhsgref_ins_DSHKM_Mini_TriPod";
+ };
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 740;
+ };
+ displayName = CSTRING(dshk_gun);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsafrf\addons\rhs_heavyweapons\data\mapico\icomap_DShKM_CA.paa";
+ };
};
diff --git a/optionals/compat_rhs_gref3/config.cpp b/optionals/compat_rhs_gref3/config.cpp
index a8f8e14773..b534a69459 100644
--- a/optionals/compat_rhs_gref3/config.cpp
+++ b/optionals/compat_rhs_gref3/config.cpp
@@ -6,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"rhsgref_main", "rhsgref_c_weapons"};
+ requiredAddons[] = {"ace_csw", "rhsgref_main", "rhsgref_c_weapons"};
author = ECSTRING(common,ACETeam);
authors[] = {"PabstMirror", "Ruthberg", "Anton"};
url = ECSTRING(main,URL);
diff --git a/optionals/compat_rhs_gref3/stringtable.xml b/optionals/compat_rhs_gref3/stringtable.xml
new file mode 100644
index 0000000000..42f5066b4b
--- /dev/null
+++ b/optionals/compat_rhs_gref3/stringtable.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ DSHK Gun Bag
+
+
+
diff --git a/optionals/compat_rhs_usf3/CfgMagazineGroups.hpp b/optionals/compat_rhs_usf3/CfgMagazineGroups.hpp
new file mode 100644
index 0000000000..44d29c1f8a
--- /dev/null
+++ b/optionals/compat_rhs_usf3/CfgMagazineGroups.hpp
@@ -0,0 +1,24 @@
+#define CREATE_MAGAZINE_GROUP(ammo) class GVAR(ammo) { rhs_##ammo = 1; }
+class ace_csw_groups {
+ CREATE_MAGAZINE_GROUP(mag_TOW);
+ CREATE_MAGAZINE_GROUP(mag_TOWB);
+ CREATE_MAGAZINE_GROUP(mag_ITOW);
+ CREATE_MAGAZINE_GROUP(mag_TOW2);
+ CREATE_MAGAZINE_GROUP(mag_TOW2A);
+ CREATE_MAGAZINE_GROUP(mag_TOW2b);
+ CREATE_MAGAZINE_GROUP(mag_TOW2b_aero);
+ CREATE_MAGAZINE_GROUP(mag_TOW2bb);
+ class GVAR(48Rnd_40mm_MK19) {
+ RHS_48Rnd_40mm_MK19 = 1;
+ RHS_96Rnd_40mm_MK19 = 1;
+ };
+ class GVAR(48Rnd_40mm_MK19_M430I) {
+ RHS_48Rnd_40mm_MK19_M430I = 1;
+ RHS_96Rnd_40mm_MK19_M430I = 1;
+ };
+ class GVAR(48Rnd_40mm_MK19_M1001) {
+ RHS_48Rnd_40mm_MK19_M1001 = 1;
+ RHS_96Rnd_40mm_MK19_M1001 = 1;
+ };
+};
+
diff --git a/optionals/compat_rhs_usf3/CfgMagazines.hpp b/optionals/compat_rhs_usf3/CfgMagazines.hpp
index 454c09a98c..f4cbaaf759 100644
--- a/optionals/compat_rhs_usf3/CfgMagazines.hpp
+++ b/optionals/compat_rhs_usf3/CfgMagazines.hpp
@@ -51,4 +51,105 @@ class cfgMagazines {
ammo = "ACE_Hellfire_AGM114N";
};
+ // RHS magazines for crew handled ammo
+ class rhs_mag_TOW;
+ class GVAR(mag_TOW): rhs_mag_TOW {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 200; // Actually should be 440 but ARMA uses weight and volume in the same number
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d"; // ammo can instead of any special model so no one gets especially confused over what it is
+ picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
+ };
+ class rhs_mag_TOWB;
+ class GVAR(mag_TOWB): rhs_mag_TOWB {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 200;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
+ };
+ class rhs_mag_ITOW;
+ class GVAR(mag_ITOW): rhs_mag_ITOW {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 200;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
+ };
+ class rhs_mag_TOW2;
+ class GVAR(mag_TOW2): rhs_mag_TOW2 {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 200;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
+ };
+ class rhs_mag_TOW2A;
+ class GVAR(mag_TOW2A): rhs_mag_TOW2A {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 200;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
+ };
+ class rhs_mag_TOW2b;
+ class GVAR(mag_TOW2b): rhs_mag_TOW2b {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 200;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
+ };
+ class rhs_mag_TOW2b_aero;
+ class GVAR(mag_TOW2b_aero): rhs_mag_TOW2b_aero {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 200;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
+ };
+ class rhs_mag_TOW2bb;
+ class GVAR(mag_TOW2bb): rhs_mag_TOW2bb {
+ scope = 2;
+ type = 256;
+ count = 1;
+ mass = 200;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
+ picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
+ };
+
+ class GVAR(48Rnd_40mm_MK19): RHS_48Rnd_40mm_MK19 {
+ scope = 2;
+ type = 256;
+ count = 48;
+ mass = 40;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d"; // ammo can instead of any special model so no one gets especially confused over what it is
+ picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
+ };
+ class RHS_48Rnd_40mm_MK19_M430I;
+ class GVAR(48Rnd_40mm_MK19_M430I): RHS_48Rnd_40mm_MK19_M430I {
+ scope = 2;
+ type = 256;
+ count = 48;
+ mass = 40;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d"; // ammo can instead of any special model so no one gets especially confused over what it is
+ picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
+ };
+ class RHS_48Rnd_40mm_MK19_M1001;
+ class GVAR(48Rnd_40mm_MK19_M1001): RHS_48Rnd_40mm_MK19_M1001 {
+ scope = 2;
+ type = 256;
+ count = 48;
+ mass = 40;
+ model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d"; // ammo can instead of any special model so no one gets especially confused over what it is
+ picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
+ };
+
};
diff --git a/optionals/compat_rhs_usf3/CfgVehicles.hpp b/optionals/compat_rhs_usf3/CfgVehicles.hpp
index 02c4fff408..1e47e83426 100644
--- a/optionals/compat_rhs_usf3/CfgVehicles.hpp
+++ b/optionals/compat_rhs_usf3/CfgVehicles.hpp
@@ -300,6 +300,66 @@ class CfgVehicles {
selection = "main_gun";
};
};
+ class ACE_CSW {
+ enabled = 1;
+ magazineLocation = "";
+ proxyWeapon = QGVAR(rhs_mortar_81mm);
+ disassembleWeapon = QGVAR(m252_carry); // carry weapon [CfgWeapons]
+ disassembleTurret = QEGVAR(csw,mortarBaseplate); // turret [CfgVehicles]
+ desiredAmmo = 1;
+ ammoLoadTime = 3;
+ ammoUnloadTime = 3;
+ };
+ };
+
+ class StaticMGWeapon: StaticWeapon {};
+
+ class rhs_m2staticmg_base: StaticMGWeapon {
+ class ACE_CSW {
+ enabled = 1;
+ proxyWeapon = QGVAR(rhs_M2);
+ magazineLocation = "_target selectionPosition 'magazine'";
+ disassembleWeapon = QGVAR(m2_carry);
+ disassembleTurret = QEGVAR(csw,m3Tripod);
+ desiredAmmo = 100;
+ ammoLoadTime = 10;
+ ammoUnloadTime = 8;
+ };
+ };
+
+ class RHS_M2StaticMG_MiniTripod_base: rhs_m2staticmg_base {
+ class ACE_CSW: ACE_CSW {
+ enabled = 1;
+ disassembleTurret = QEGVAR(csw,m3TripodLow);
+ };
+ };
+
+ class StaticGrenadeLauncher: StaticWeapon {};
+ class RHS_MK19_TriPod_base: StaticGrenadeLauncher {
+ class ACE_CSW {
+ enabled = 1;
+ proxyWeapon = QGVAR(rhs_MK19);
+ magazineLocation = "_target selectionPosition 'magazine'";
+ disassembleWeapon = QGVAR(mk19_carry);
+ disassembleTurret = QEGVAR(csw,m3TripodLow);
+ desiredAmmo = 48;
+ ammoLoadTime = 10;
+ ammoUnloadTime = 8;
+ };
+ };
+
+ class StaticATWeapon: StaticWeapon {};
+ class RHS_TOW_TriPod_base: StaticATWeapon {
+ class ACE_CSW {
+ enabled = 1;
+ proxyWeapon = QGVAR(rhs_weap_TOW_Launcher_static);
+ magazineLocation = "_target selectionPosition 'tube'";
+ disassembleWeapon = QGVAR(tow_carry);
+ disassembleTurret = QEGVAR(csw,m220Tripod);
+ desiredAmmo = 1;
+ ammoLoadTime = 8;
+ ammoUnloadTime = 5;
+ };
};
class rhsusf_infantry_usmc_base;
diff --git a/optionals/compat_rhs_usf3/CfgWeapons.hpp b/optionals/compat_rhs_usf3/CfgWeapons.hpp
index f108c93fda..f5c9a86ea8 100644
--- a/optionals/compat_rhs_usf3/CfgWeapons.hpp
+++ b/optionals/compat_rhs_usf3/CfgWeapons.hpp
@@ -1,3 +1,4 @@
+#define CREATE_CSW_PROXY(weapon) class ##weapon; class GVAR(weapon): ##weapon { magazineReloadTime = 0.5; }
class CfgWeapons {
class NVGoggles;
@@ -231,7 +232,10 @@ class CfgWeapons {
};
};
- class Launcher_Base_F;
+ class Launcher;
+ class Launcher_Base_F: Launcher {
+ class WeaponSlotsInfo;
+ };
class rhs_weap_smaw: Launcher_Base_F {
ace_reloadlaunchers_enabled = 1;
ace_overpressure_angle = 45;
@@ -420,4 +424,91 @@ class CfgWeapons {
class RHS_jetpilot_usaf: H_HelmetB {
HEARING_PROTECTION_VICCREW
};
+
+ CREATE_CSW_PROXY(rhs_mortar_81mm);
+ CREATE_CSW_PROXY(RHS_M2);
+ CREATE_CSW_PROXY(RHS_MK19);
+ CREATE_CSW_PROXY(Rhs_weap_TOW_Launcher_static);
+
+ class GVAR(m252_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "weapon";
+ deployTime = 20;
+ pickupTime = 25;
+ class assembleTo {
+ EGVAR(csw,mortarBaseplate) = "RHS_M252_WD";
+ };
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 620; // M252 Mortar Weight
+ };
+ displayName = CSTRING(m252_tube);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsusf\addons\rhsusf_heavyweapons\data\ico\mortar_m251_CA.paa";
+ };
+
+ class GVAR(m2_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "weapon";
+ deployTime = 4;
+ pickupTime = 4;
+ class assembleTo {
+ EGVAR(csw,m3Tripod) = "RHS_M2StaticMG_WD";
+ EGVAR(csw,m3TripodLow) = "RHS_M2StaticMG_MiniTripod_WD";
+ };
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 840;
+ };
+ displayName = CSTRING(m2_gun);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsusf\addons\rhsusf_editorPreviews\data\rhs_M2StaticMG_D.paa";
+ };
+
+ class GVAR(mk19_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "weapon";
+ deployTime = 4;
+ pickupTime = 4;
+ class assembleTo {
+ EGVAR(csw,m3TripodLow) = "RHS_MK19_TriPod_WD";
+ };
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 770;
+ };
+ displayName = CSTRING(mk19_gun);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsusf\addons\rhsusf_heavyweapons\data\ico\mk19_stat_CA.paa";
+ };
+
+ class GVAR(tow_carry): Launcher_Base_F {
+ class ACE_CSW {
+ type = "weapon";
+ deployTime = 4;
+ pickupTime = 4;
+ class assembleTo {
+ EGVAR(csw,m220Tripod) = "RHS_TOW_TriPod_WD";
+ };
+ };
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ mass = 500;
+ };
+ displayName = CSTRING(tow_tube);
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
+ modes[] = {};
+ picture = "\rhsusf\addons\rhsusf_heavyweapons\data\Ico\tow_static_CA.paa";
+ };
};
+
diff --git a/optionals/compat_rhs_usf3/config.cpp b/optionals/compat_rhs_usf3/config.cpp
index 59aaa625bd..e23ea277af 100644
--- a/optionals/compat_rhs_usf3/config.cpp
+++ b/optionals/compat_rhs_usf3/config.cpp
@@ -6,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_javelin", "ace_rearm", "ace_refuel", "ace_repair", "rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_HEMTT_A4", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor", "rhsusf_c_melb"};
+ requiredAddons[] = {"ace_javelin", "ace_rearm", "ace_refuel", "ace_repair", "ace_csw", "rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_HEMTT_A4", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor", "rhsusf_c_melb"};
author = ECSTRING(common,ACETeam);
authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"};
url = ECSTRING(main,URL);
@@ -21,3 +21,5 @@ class CfgPatches {
#include "CfgWeapons.hpp"
#include "CfgVehicles.hpp"
#include "CfgGlasses.hpp"
+#include "CfgMagazineGroups.hpp"
+
diff --git a/optionals/compat_rhs_usf3/stringtable.xml b/optionals/compat_rhs_usf3/stringtable.xml
new file mode 100644
index 0000000000..efbac54854
--- /dev/null
+++ b/optionals/compat_rhs_usf3/stringtable.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ M252 Tube Bag
+
+
+ M2 Gun Bag
+
+
+ MK19 Gun Bag
+
+
+ BGM-71 TOW Launcher Bag
+
+
+