diff --git a/addons/compat_spe/$PBOPREFIX$ b/addons/compat_spe/$PBOPREFIX$ new file mode 100644 index 000000000..469f9c7b5 --- /dev/null +++ b/addons/compat_spe/$PBOPREFIX$ @@ -0,0 +1,2 @@ +idi\acre\addons\compat_spe + diff --git a/addons/compat_spe/CfgVehicles.hpp b/addons/compat_spe/CfgVehicles.hpp new file mode 100644 index 000000000..dad7ca7fe --- /dev/null +++ b/addons/compat_spe/CfgVehicles.hpp @@ -0,0 +1,6 @@ +class CfgVehicles { + #include "SPE_Backpacks.hpp" + #include "SPE_Planes.hpp" + #include "SPE_Tanks.hpp" + #include "SPE_Wheeled.hpp" +}; diff --git a/addons/compat_spe/LICENSE b/addons/compat_spe/LICENSE new file mode 100644 index 000000000..c889a36f6 --- /dev/null +++ b/addons/compat_spe/LICENSE @@ -0,0 +1,9 @@ +Some items in this component (this folder and all subfolders) +are licensed differently from the project's license or have +additional terms of use! + +Following files and/or folders with all its subfolders and +everything in them may not be distributed outside of ACRE2 +without explicit permission of the Heavy Ordnance Works team. + +- SPE_normandy.fakewrp diff --git a/addons/compat_spe/README.md b/addons/compat_spe/README.md new file mode 100644 index 000000000..099367089 --- /dev/null +++ b/addons/compat_spe/README.md @@ -0,0 +1,4 @@ +compat_spe +=== + +Compatibility with Arma 3 Creator DLC: [Spearhead 1944](https://spearhead-1944.com/). diff --git a/addons/compat_spe/SPE_Backpacks.hpp b/addons/compat_spe/SPE_Backpacks.hpp new file mode 100644 index 000000000..b03d054f7 --- /dev/null +++ b/addons/compat_spe/SPE_Backpacks.hpp @@ -0,0 +1,21 @@ +class B_SPE_AssaultPack_Base; + +// American +class B_SPE_US_Radio: B_SPE_AssaultPack_Base { + class TransportItems { + class _xx_ACRE_PRC77 { + count = 1; + name = "ACRE_PRC77"; + }; + }; +}; + +// German +class B_SPE_GER_Radio: B_SPE_AssaultPack_Base { + class TransportItems { + class _xx_ACRE_PRC77 { + count = 1; + name = "ACRE_PRC77"; + }; + }; +}; diff --git a/addons/compat_spe/SPE_Planes.hpp b/addons/compat_spe/SPE_Planes.hpp new file mode 100644 index 000000000..9e8d7541b --- /dev/null +++ b/addons/compat_spe/SPE_Planes.hpp @@ -0,0 +1,106 @@ + // see SPE_Tanks.hpp for explanation of values + +class Plane_Base_F; + +class SPE_Plane_base: Plane_Base_F { + acre_hasInfantryPhone = 0; + acre_infantryPhoneDisableRinging = 1; + + class AcreIntercoms { + class Intercom_1 { + displayName = CSTRING(Intercom_Crew); + shortName = CSTRING(Intercom_Short); + allowedPositions[] = {"crew"}; + disabledPositions[] = {}; + limitedPositions[] = {{"cargo", "all"}}; + masterPositions[] = {"crew"}; + numLimitedPositions = 1; + connectedByDefault = 1; + }; + }; + + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_US); + shortName = CSTRING(RadioSet1_Short); + componentname = "ACRE_VRC64"; + allowedPositions[] = {"driver","copilot"}; + disabledPositions[] = {}; + defaultComponents[] = {}; + mountedRadio = "ACRE_PRC77"; + isRadioRemovable = 0; + intercom[] = {"none"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_US); + shortName = CSTRING(RadioSet2_Short); + componentname = "ACRE_VRC64"; + allowedPositions[] = {"driver","copilot"}; + disabledPositions[] = {}; + defaultComponents[] = {}; + mountedRadio = "ACRE_PRC77"; + isRadioRemovable = 0; + intercom[] = {"none"}; + }; + }; +}; + +//American +class SPE_US_Plane_base; + +class SPE_P47: SPE_US_Plane_base { + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_US); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + allowedPositions[] = {"driver"}; + disabledPositions[] = {}; + defaultComponents[] = {}; + isRadioRemovable = 0; + intercom[] = {"none"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_US); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + allowedPositions[] = {"driver"}; + disabledPositions[] = {}; + defaultComponents[] = {}; + isRadioRemovable = 0; + intercom[] = {"none"}; + }; + }; +}; + +//German +class SPE_GER_Plane_base; + +class SPE_FW190F8: SPE_GER_Plane_base { + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_GER); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + allowedPositions[] = {"driver"}; + disabledPositions[] = {}; + defaultComponents[] = {}; + isRadioRemovable = 0; + intercom[] = {"none"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_GER); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + allowedPositions[] = {"driver"}; + disabledPositions[] = {}; + defaultComponents[] = {}; + isRadioRemovable = 0; + intercom[] = {"none"}; + }; + }; +}; diff --git a/addons/compat_spe/SPE_Tanks.hpp b/addons/compat_spe/SPE_Tanks.hpp new file mode 100644 index 000000000..ddeea7b75 --- /dev/null +++ b/addons/compat_spe/SPE_Tanks.hpp @@ -0,0 +1,565 @@ +class Tank_F; + +class SPE_Tank_base: Tank_F { + // Adds a full crew intercom, and a radio configurable by the entire crew, and infantry phone is set up but disabled. + // This isn't historically accurate, but will ensure that any new vehicles get comms even if they don't have a vehicle specific config + + acre_hasInfantryPhone = 0; // Should the infantry phone exist? 0 disabled, 1 enabled + acre_infantryPhoneDisableRinging = 1; // Should the phone ring when the crew activate it? 0 will ring, 1 disabled, disable for now as WW2 tanks didn't ring as far as I know. + // acre_infantryPhoneCustomRinging[] = {"xxxxx\xxxxx\xxxxx.wss", 7, 1, 1, 40}; // Custom ringing sound, no point for now as tank ringing is disabled above + acre_infantryPhonePosition[] = {0, 0, 0}; // Location of ace interaction node for infantry phone, model relative. + acre_infantryPhoneControlActions[] = {"all"}; // which units can control the ringing, all or an intercom classname + acre_infantryPhoneIntercom[] = {"all"}; // all or list of intercoms that are connected to the phone + + class AcreIntercoms { + class Intercom_1 { + displayName = CSTRING(Intercom_Crew); + shortName = CSTRING(Intercom_Short); + allowedPositions[] = {"crew"}; + disabledPositions[] = {}; + limitedPositions[] = {}; + masterPositions[] = {"commander"}; + numLimitedPositions = 0; + connectedByDefault = 1; + }; + }; + + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet); + shortName = CSTRING(RadioSetShort); + mountedRadio = "ACRE_PRC77"; // This is the only analog radio currently in ACRE and is the best fit for the WW2 time perios. + componentname = "ACRE_VRC64"; // This is the rack that the radio attaches to, PRC 77 requires the VRC 64. + defaultComponents[] = {}; // Not yet fully implemented in ACRE + allowedPositions[] = {"crew"}; // which positions have full access to the radio, including listening (Rx), speaking (Tx), and configuration. + // In the base config here we're allowing the entire crew, which will ensure that all tanks have a functional radio even if a custom implementation hasn't been created below. + disabledPositions[] = {{"turnedout", "all"}}; // by default if you turn out you can't use the radio anymore + isRadioRemovable = 0; // 0 prevents the radio from being removed and used as an infantry radio. + intercom[] = {"intercom_1"}; // list of intercoms that can talk over the radio even if not a slot in allowedPositions + }; + }; + + class Turrets; +}; + + // American +class SPE_M10_base: SPE_Tank_base { + class AcreRacks { + class Rack_1 { + allowedPositions[] = {"commander", {"turret", {1}}}; // restrict configuration of the radio to only and radio operator (historically correct) and the the commander (for gameplay, even though the radio was in the hull) + }; + }; +}; + +class SPE_M18_Hellcat_Base: SPE_Tank_base { + class AcreRacks { + class Rack_1 { + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // restrict radio configuration to the commander, gunner, and loader, as the radio was in the turret + }; + }; +}; + +class SPE_Sherman_base: SPE_Tank_base { + acre_hasInfantryPhone = 1; // The Sherman was the first tank to get an infantry phone + acre_infantryPhoneDisableRinging = 1; + acre_infantryPhonePosition[] = {0, -2.52, 0}; + + class AcreRacks { + class Rack_1 { + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + }; + }; +}; + +class SPE_M4A1_75; +class SPE_M4A1_75_Command: SPE_M4A1_75 { + displayName = CSTRING(M4A1_75_Command); + scope = 2; + + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_US); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_US); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + }; +}; +class SPE_M4A1_75_Command_DVL: SPE_M4A1_75_Command { + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; + +class SPE_FR_M4A1_75; +class SPE_FR_M4A1_75_Command: SPE_FR_M4A1_75 { + displayName = CSTRING(M4A1_75_Command); + scope = 2; + + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_US); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_US); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + }; +}; +class SPE_FR_M4A1_75_Command_DVL: SPE_FR_M4A1_75_Command { + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; + +class SPE_M4A1_76; +class SPE_M4A1_76_Command: SPE_M4A1_76 { + displayName = CSTRING(M4A1_76_Command); + scope = 2; + + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_US); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_US); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + }; +}; +class SPE_M4A1_76_Command_DVL: SPE_M4A1_76_Command { + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; + +class SPE_FR_M4A1_76; +class SPE_FR_M4A1_76_Command: SPE_FR_M4A1_76 { + displayName = CSTRING(M4A1_76_Command); + scope = 2; + + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_US); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_US); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + }; +}; +class SPE_FR_M4A1_76_Command_DVL: SPE_FR_M4A1_76_Command { + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; + +class SPE_M4A0_75_Early; +class SPE_M4A0_75_Early_Command: SPE_M4A0_75_Early { + displayName = CSTRING(M4A0_75_Early_Command); + scope = 2; + + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_US); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_US); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + }; +}; +class SPE_M4A0_75_Early_Command_DVL: SPE_M4A0_75_Early_Command { + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; + +class SPE_M4A0_75; +class SPE_M4A0_75_Command: SPE_M4A0_75 { + displayName = CSTRING(M4A0_75_Command); + scope = 2; + + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_US); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_US); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + }; +}; +class SPE_M4A0_75_Command_DVL: SPE_M4A0_75_Command { + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; + +class SPE_FR_M4A0_75_Early; +class SPE_FR_M4A0_75_Early_Command: SPE_FR_M4A0_75_Early { + displayName = CSTRING(M4A0_75_Early_Command); + scope = 2; + + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_US); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_US); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + }; +}; +class SPE_FR_M4A0_75_Early_Command_DVL: SPE_FR_M4A0_75_Early_Command { + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; + +class SPE_FR_M4A0_75_mid; +class SPE_FR_M4A0_75_mid_Command: SPE_FR_M4A0_75_mid { + displayName = CSTRING(M4A0_75_Command); + scope = 2; + + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_US); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_US); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + }; +}; +class SPE_FR_M4A0_75_mid_Command_DVL: SPE_FR_M4A0_75_mid { + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; + + // German +//Panzer III +class SPE_PzKpfwIII_Base: SPE_Tank_base { + class AcreRacks { + class Rack_1 { + allowedPositions[] = {"commander", {"turret", {1}}}; // commander and radio operator/machine gunner, radio in hull + }; + }; + + class Turrets; +}; +class SPE_PzKpfwIII_M: SPE_PzKpfwIII_Base { + class Turrets : Turrets { + class kurs_MG_turret; + }; +}; + +class SPE_PzBefWgIII_K_Base: SPE_PzKpfwIII_M { //Command Tank Base, inherit from Panzer III Ausf M because that's the version the Ausf K was based on. + scope = 1; + + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_GER); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", {"turret", {5}}}; // commander and radio operator/machine gunner, radio in hull + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_GER); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + }; + + //Remove the front MG and change machine gunner to radio operator + class Turrets: Turrets { + class kurs_MG_turret : kurs_MG_turret { + weapons[] = {}; + magazines[] = {}; + gunnerName = CSTRING(RadioOperator); + }; + }; +}; +class SPE_PzBefWgIII_K: SPE_PzBefWgIII_K_Base { //Werhmacht + author = "Heavy Ordnance Works"; + dlc = "SPE"; + scope = 2; + displayName = CSTRING(PzBefWgIII_K); + //side = 1; + //faction = "SPE_WEHRMACHT"; + //crew = "SPE_GER_tank_crew"; +}; +class SPE_PzBefWgIII_K_DLV: SPE_PzBefWgIII_K { //Werhmacht DVL + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; +class SPE_ST_PzBefWgIII_K: SPE_PzBefWgIII_K { //Sturmtroopers + scope = 2; + //crew = "SPE_sturmtrooper_tank_crew"; + //faction = "SPE_STURM"; +}; +class SPE_ST_PzBefWgIII_K_DLV: SPE_ST_PzBefWgIII_K { //Sturmtroopers DVL + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; + +//Panzer IV +class SPE_PzKpfwIV_G_base: SPE_Tank_base { + class AcreRacks { + class Rack_1 { + allowedPositions[] = {"commander", {"turret", {5}}}; // commander and radio operator/machine gunner, radio in hull + }; + }; +}; + +class SPE_PzBefWgIV_base: SPE_PzKpfwIV_G_Base { //Command Tank Base + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_GER); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", {"turret", {5}}}; // commander and radio operator/machine gunner, radio in hull + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_GER); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + }; +}; +class SPE_PzBefWgIV: SPE_PzBefWgIV_base { //Werhmacht + author = "Heavy Ordnance Works"; + dlc = "SPE"; + scope = 2; + displayName = CSTRING(PzBefWgIV); +}; +class SPE_PzBefWgIV_DLV: SPE_PzBefWgIV { //Werhmacht Driverless + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; +class SPE_ST_PzBefWgIV: SPE_PzBefWgIV { //Sturmtroopers + scope = 2; +}; +class SPE_ST_PzBefWgIV_DLV: SPE_ST_PzBefWgIV { //Sturmtroopers Driverless + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; + +//Panzer VI (Tiger I) +class SPE_PzKpfwVI_H1_base: SPE_Tank_base { + class AcreRacks { + class Rack_1 { + allowedPositions[] = {"commander", {"turret", {5}}}; // commander and radio operator/machine gunner, radio in hull + }; + }; +}; + +class SPE_PzBefWgVI_base: SPE_PzKpfwVI_H1_base { //Command Tank Base + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_GER); + shortName = CSTRING(RadioSet1_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", {"turret", {5}}}; // commander and radio operator/machine gunner, radio in hull + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + class Rack_2 { + displayName = CSTRING(RadioSet2_GER); + shortName = CSTRING(RadioSet2_Short); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + defaultComponents[] = {}; + allowedPositions[] = {"commander", "gunner", {"turret", {0,1}}}; // commander, gunner, and loader, radio in turret + disabledPositions[] = {{"turnedout", "all"}}; + isRadioRemovable = 0; + intercom[] = {"intercom_1"}; + }; + }; +}; +class SPE_PzBefWgVI: SPE_PzBefWgVI_base { //Werhmacht + author = "Heavy Ordnance Works"; + dlc = "SPE"; + scope = 2; + displayName = "PzBefWg VI"; +}; +class SPE_PzBefWgVI_DLV: SPE_PzBefWgVI { //Werhmacht Driverless + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; +class SPE_ST_PzBefWgVI: SPE_PzBefWgVI { //Sturmtroopers + scope = 2; +}; +class SPE_ST_PzBefWgVI_DLV: SPE_ST_PzBefWgVI { //Sturmtroopers Driverless + vehicleClass = "Armored_DLV"; + editorSubCategory = "SPE_EdSubcat_Tanks_DLV"; + hasDriver = -1; +}; + +class SPE_Nashorn_base: SPE_Tank_base { + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet1_GER); + shortName = CSTRING(RadioSet1_Short); + allowedPositions[] = {"commander", "gunner", {"turret", {2}}}; // commander, gunner, loader, radio is in an open top fighting compartment + }; + class Rack_2: Rack_1 { + displayName = CSTRING(RadioSet2_GER); + shortName = CSTRING(RadioSet2_Short); + allowedPositions[] = {{"turret", {3}}}; // radio operator, radio in hull + intercom[] = {}; + }; + }; +}; diff --git a/addons/compat_spe/SPE_Wheeled.hpp b/addons/compat_spe/SPE_Wheeled.hpp new file mode 100644 index 000000000..461953be8 --- /dev/null +++ b/addons/compat_spe/SPE_Wheeled.hpp @@ -0,0 +1,65 @@ + // see SPE_Tanks.hpp for explanation of values + +class Car_F; +class SPE_Car_base: Car_F { // Get rid of any inherited values ACRE may have added for modern vehicles + acre_hasInfantryPhone = 0; + acre_infantryPhoneDisableRinging = 1; + acre_infantryPhonePosition[] = {0, 0, 0}; + acre_infantryPhoneControlActions[] = {}; + acre_infantryPhoneintercom[] = {}; + + class AcreIntercoms {}; + class AcreRacks {}; +}; + +class Truck_F; +class SPE_Truck_base: Truck_F { // Get rid of any inherited values + acre_hasInfantryPhone = 0; + acre_infantryPhoneDisableRinging = 1; + acre_infantryPhonePosition[] = {0, 0, 0}; + acre_infantryPhoneControlActions[] = {}; + acre_infantryPhoneintercom[] = {}; + + class AcreIntercoms {}; + class AcreRacks {}; +}; + +class SPE_WheeledTracked_APC_base; + +//American +class SPE_Halftrack_base; + +class SPE_US_M16_Halftrack_base: SPE_Halftrack_base { + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet); + shortName = CSTRING(RadioSetShort); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + allowedPositions[] = {"driver", {"cargo", 0}}; // driver, and the passenger next to the driver can all probably reach the radio + disabledPositions[] = {}; + defaultComponents[] = {}; + isRadioRemovable = 0; + intercom[] = {"none"}; + }; + }; +}; + +// German +class SPE_SdKfz250_base; + +class SPE_SdKfz250_1: SPE_SdKfz250_base { + class AcreRacks { + class Rack_1 { + displayName = CSTRING(RadioSet); + shortName = CSTRING(RadioSetShort); + mountedRadio = "ACRE_PRC77"; + componentname = "ACRE_VRC64"; + allowedPositions[] = {"driver", "commander", {"cargo", 0}}; // driver, commander (who is the gunner), and the passenger next to the driver can all probably reach the radio + disabledPositions[] = {}; + defaultComponents[] = {}; + isRadioRemovable = 0; + intercom[] = {"none"}; + }; + }; +}; diff --git a/addons/compat_spe/SPE_normandy.fakewrp b/addons/compat_spe/SPE_normandy.fakewrp new file mode 100644 index 000000000..1399f39aa Binary files /dev/null and b/addons/compat_spe/SPE_normandy.fakewrp differ diff --git a/addons/compat_spe/config.cpp b/addons/compat_spe/config.cpp new file mode 100644 index 000000000..1c9d281bf --- /dev/null +++ b/addons/compat_spe/config.cpp @@ -0,0 +1,53 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + name = COMPONENT_NAME; + units[] = { + "SPE_M4A1_75_Command", + "SPE_M4A1_75_Command_DVL", + "SPE_FR_M4A1_75_Command", + "SPE_FR_M4A1_75_Command_DVL", + "SPE_M4A1_76_Command", + "SPE_M4A1_76_Command_DVL", + "SPE_FR_M4A1_76_Command", + "SPE_FR_M4A1_76_Command_DVL", + "SPE_M4A0_75_Early_Command", + "SPE_M4A0_75_Early_Command_DVL", + "SPE_M4A0_75_Command", + "SPE_M4A0_75_Command_DVL", + "SPE_FR_M4A0_75_Early_Command", + "SPE_FR_M4A0_75_Early_Command_DVL", + "SPE_FR_M4A0_75_mid_Command", + "SPE_FR_M4A0_75_mid_Command_DVL", + "SPE_PzBefWgIII_K", + "SPE_PzBefWgIII_K_DLV", + "SPE_ST_PzBefWgIII_K", + "SPE_ST_PzBefWgIII_K_DLV", + "SPE_PzBefWgIV", + "SPE_PzBefWgIV_DLV", + "SPE_ST_PzBefWgIV", + "SPE_ST_PzBefWgIV_DLV", + "SPE_PzBefWgVI", + "SPE_PzBefWgVI_DLV", + "SPE_ST_PzBefWgVI", + "SPE_ST_PzBefWgVI_DLV" + }; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"acre_main", "acre_api", "WW2_SPE_Assets_c_Vehicles_ZZZ_LastLoaded_c"}; + skipWhenMissingDependencies = 1; + author = ECSTRING(main,Author); + authors[] = {"Heavy Ordnance Works", "drofseh"}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +class CfgAcreWorlds { + class SPE_normandy { + wrp = QPATHTOF(SPE_normandy.fakewrp); + }; +}; + +#include "CfgVehicles.hpp" diff --git a/addons/compat_spe/script_component.hpp b/addons/compat_spe/script_component.hpp new file mode 100644 index 000000000..f16a9325c --- /dev/null +++ b/addons/compat_spe/script_component.hpp @@ -0,0 +1,13 @@ +#define COMPONENT compat_spe +#define COMPONENT_BEAUTIFIED Spearhead 1944 Compatibility +#include "\idi\acre\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_COMPAT_SPE + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_ENABLED_COMPAT_SPE + #define DEBUG_SETTINGS DEBUG_SETTINGS_COMPAT_SPE +#endif + +#include "\idi\acre\addons\main\script_macros.hpp" diff --git a/addons/compat_spe/stringtable.xml b/addons/compat_spe/stringtable.xml new file mode 100644 index 000000000..8a0292526 --- /dev/null +++ b/addons/compat_spe/stringtable.xml @@ -0,0 +1,59 @@ + + + + + Radio + + + Radio Set + + + A-Set + + + Radio Set - Able + + + Radio Set - Anton + + + B-Set + + + Radio Set - Baker + + + Radio Set - Bruno + + + IntCm + + + Crew Intercom + + + M4A1 Sherman (Command) + + + M4A1 76(W) Sherman (Command) + + + M4 Sherman (Command) + + + M4 Sherman (Late) (Command) + + + PzBefWg III Ausf. K + + + PzBefWg IV + + + PzBefWg VI + + + Radio Operator + + + diff --git a/extras/logos/acre2_spe_compat_large-logo.png b/extras/logos/acre2_spe_compat_large-logo.png new file mode 100644 index 000000000..56c592fe4 Binary files /dev/null and b/extras/logos/acre2_spe_compat_large-logo.png differ diff --git a/extras/logos/acre2_spe_compat_large-logo.psd b/extras/logos/acre2_spe_compat_large-logo.psd new file mode 100644 index 000000000..a6ce2cfca Binary files /dev/null and b/extras/logos/acre2_spe_compat_large-logo.psd differ diff --git a/extras/logos/acre2_spe_compat_small-logo.png b/extras/logos/acre2_spe_compat_small-logo.png new file mode 100644 index 000000000..a2d458557 Binary files /dev/null and b/extras/logos/acre2_spe_compat_small-logo.png differ