Browse Source

Working. Tweaking time

Erliens 4 years ago
parent
commit
47f4a7b216

+ 0 - 12
addons - Copy/RD501_Units/opfor/B2/B2_Reskins.hpp

@@ -1,15 +1,3 @@
-class macro_new_uniform_skin_class(opfor,B2_Armor): SWOP_B2_superdroid
-{
-    hiddenSelections[] = {"Camo1","Camo2","Camo3"};
-    hiddenSelectionsTextures[] = {
-        macro_unit_skin_textures\CIS\B2\rocket\Reskinb2_chest.paa,
-        macro_unit_skin_textures\CIS\B2\rocket\ReskinB2_waist.paa,
-        macro_unit_skin_textures\CIS\B2\rocket\ReskinB2_legs.paa
-    };
-	JLTS_isDroid = 1; 
-    JLTS_hasEMPProtection = 0; 
-    JLTS_deathSounds = "DeathDroid";
-};
 
 class macro_new_uniform_skin_class(opfor,B2_Aqua): SWOP_B2_superdroid
 {

+ 6 - 6
addons - Copy/RD501_Units/opfor/B2/armor_unit.hpp

@@ -27,7 +27,7 @@ class HitPoints
 	};
 	class HitHead: HitNeck
 	{
-		armor = 1000;			// unused
+		armor = 350;			// unused
 		material = -1;
 		name = "head";
 		passThrough = 1.0;
@@ -53,7 +53,7 @@ class HitPoints
 		material = -1;
 		name = "spine1";
 		passThrough = 1.0;
-		radius = 0.15;
+		radius = 0.1;
 		explosionShielding = 0.25;
 		visual = "injury_body";
 		minimalHit = 0.01;
@@ -64,7 +64,7 @@ class HitPoints
 		material = -1;
 		name = "spine2";
 		passThrough = 1.0;
-		radius = 0.15;
+		radius = 0.1;
 		explosionShielding = 2;
 		visual = "injury_body";
 		minimalHit = 0.01;
@@ -75,18 +75,18 @@ class HitPoints
 		material = -1;
 		name = "spine3";
 		passThrough = 1.0;
-		radius = 0.15;
+		radius = 0.1;
 		explosionShielding = 2;
 		visual = "injury_body";
 		minimalHit = 0.01;
 	};
 	class HitBody: HitChest
 	{
-		armor = 1000;			// unused
+		armor = 20;			
 		material = -1;
 		name = "body";
 		passThrough = 1.0;
-		radius = 0.16;
+		radius = 0.1;
 		explosionShielding = 6;
 		visual = "injury_body";
 		minimalHit = 0.01;

+ 181 - 169
addons - Copy/RD501_Units/opfor/B2/config.cpp

@@ -8,7 +8,6 @@
 #define patch_name MODNAME##unit_addon##_Patches
 #define unit_classname MODNAME##_##unit_addon
 
-
 class CfgPatches
 {
 	class macro_patch_name(b2_units)
@@ -20,21 +19,8 @@ class CfgPatches
 		};
 		requiredVersion=0.1;
 		units[]={
-			"SWOP_CIS_superdroid_B2",
-			macro_new_unit_class(opfor,B2_droid_Standard),
-			macro_new_unit_class(opfor,B2_droid_Rocket),
-			macro_new_unit_class(opfor,B2_super_droid_Rocket),
-			macro_new_unit_class(opfor,B2_aqua),
-			macro_new_unit_class(opfor,B2_droid_Test),
-
-			macro_new_uniform_class(opfor,B2_Armor),
-			macro_new_uniform_class(opfor,B2_Aqua),
-			macro_new_uniform_class(opfor,B2_Armor_Test),
-
-			macro_new_uniform_skin_class(opfor,B2_Rocket),
-			macro_new_uniform_skin_class(opfor,B2_Aqua),
-			macro_new_uniform_skin_class(opfor,B2_Test)
-			
+			"RD501_B2_droid",
+			"SWOP_B2_superdroid_F_Spec"
 		};
 		weapons[]=
 		{
@@ -43,172 +29,198 @@ class CfgPatches
 	};
 };
 
-class cfgWeapons
+class CfgVehicles
 {
-	/**
-	 * UNIFORMS
-	 * the item the unit wears in the uniform slot
-	 */
-	class ItemCore;
-	class Uniform_Base: ItemCore
-	{
-		class ItemInfo;
-	};
-	class VestItem;
-	class UniformItem;
-	class SWOP_B2_superdroid_F_Spec;
-	class macro_new_uniform_class(opfor,B2_Armor): Uniform_Base
+	class SWOP_B2_superdroid;
+	class RD501_B2_droid: SWOP_B2_superdroid
 	{
-		author = "SWOP";
-		scope = 2;
-		displayName = "B2 battledroid (Rocket)";
-		picture = "\SWOP_droids\data\ico\B2ico.paa";
-		nakedUniform = "U_BasicBody";
-		model = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver";
-		JLTS_isDroid = 1; 
-        JLTS_hasEMPProtection = 0; 
-        JLTS_deathSounds = "DeathDroid";
-		class ItemInfo: UniformItem
+		faction=macro_cis_faction
+		editorSubcategory=macro_editor_cat(B2)
+		displayname = "B2 (Blaster)";
+		scope=2;
+		class HitPoints
 		{
-			uniformModel = "-";
-			uniformClass = macro_new_uniform_skin_class(opfor,B2_Armor);
-			modelSides[] = {6};
-			containerClass = "Supply100";
-			mass = 400;
-			#include "armor_uniform.hpp"
+			class HitFace
+			{
+				armor=1;
+				material=-1;
+				name="face_hub";
+				passThrough=0.80000001;
+				radius=0.079999998;
+				explosionShielding=0.1;
+				minimalHit=0.0099999998;
+			};
+			class HitNeck: HitFace
+			{
+				armor=4;
+				material=-1;
+				name="neck";
+				passThrough=0.80000001;
+				radius=0.1;
+				explosionShielding=0.5;
+				minimalHit=0.0099999998;
+			};
+			class HitHead: HitNeck
+			{
+				armor=1;
+				material=-1;
+				name="head";
+				passThrough=0.80000001;
+				radius=0.2;
+				explosionShielding=0.5;
+				minimalHit=0.0099999998;
+				depends="HitFace max HitNeck";
+			};
+			class HitPelvis: HitHead
+			{
+				armor=6;
+				material=-1;
+				name="pelvis";
+				passThrough=0.33000001;
+				radius=0.23999999;
+				explosionShielding=1;
+				visual="injury_body";
+				minimalHit=0.0099999998;
+				depends="0";
+			};
+			class HitAbdomen: HitPelvis
+			{
+				armor=6;
+				material=-1;
+				name="spine1";
+				passThrough=0.33000001;
+				radius=0.16;
+				explosionShielding=1;
+				visual="injury_body";
+				minimalHit=0.0099999998;
+			};
+			class HitDiaphragm: HitAbdomen
+			{
+				armor=6;
+				material=-1;
+				name="spine2";
+				passThrough=0.33000001;
+				radius=0.18000001;
+				explosionShielding=1.5;
+				visual="injury_body";
+				minimalHit=0.0099999998;
+			};
+			class HitChest: HitDiaphragm
+			{
+				armor=6;
+				material=-1;
+				name="spine3";
+				passThrough=0.33000001;
+				radius=0.18000001;
+				explosionShielding=1.5;
+				visual="injury_body";
+				minimalHit=0.0099999998;
+			};
+			class HitBody: HitChest
+			{
+				armor=1000;
+				material=-1;
+				name="body";
+				passThrough=1;
+				radius=0;
+				explosionShielding=1.5;
+				visual="injury_body";
+				minimalHit=0.0099999998;
+				depends="HitPelvis max HitAbdomen max HitDiaphragm max HitChest";
+			};
+			class HitArms: HitBody
+			{
+				armor=6;
+				material=-1;
+				name="arms";
+				passThrough=0.89999998;
+				radius=0.1;
+				explosionShielding=0.30000001;
+				visual="injury_hands";
+				minimalHit=0.0099999998;
+				depends="0";
+			};
+			class HitHands: HitArms
+			{
+				armor=6;
+				material=-1;
+				name="hands";
+				passThrough=0.89999998;
+				radius=0.1;
+				explosionShielding=0.30000001;
+				visual="injury_hands";
+				minimalHit=0.0099999998;
+				depends="HitArms";
+			};
+			class HitLegs: HitHands
+			{
+				armor=6;
+				material=-1;
+				name="legs";
+				passThrough=0.89999998;
+				radius=0.14;
+				explosionShielding=0.30000001;
+				visual="injury_legs";
+				minimalHit=0.0099999998;
+				depends="0";
+			};
+			class Incapacitated: HitLegs
+			{
+				armor=1000;
+				material=-1;
+				name="body";
+				passThrough=1;
+				radius=0;
+				explosionShielding=1;
+				visual="";
+				minimalHit=0;
+				depends="(((Total - 0.25) max 0) + ((HitHead - 0.25) max 0) + ((HitBody - 0.25) max 0)) * 2";
+			};
 		};
-	};
-
-	class macro_new_uniform_class(opfor,B2_Armor_Test): Uniform_Base
-	{
-		author = "SWOP";
-		scope = 2;
-		displayName = "B2 battledroid (TEST B2)";
-		picture = "\SWOP_droids\data\ico\B2ico.paa";
-		nakedUniform = "U_BasicBody";
-		model = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver";
-		JLTS_isDroid = 1; 
-        JLTS_hasEMPProtection = 0; 
-        JLTS_deathSounds = "DeathDroid";
-		class ItemInfo: UniformItem
+		armor=40;
+		armorStructural=1;
+		explosionShielding=0.40000001;
+		uniformClass="RD501_B2_Droid_Uniform";
+		class EventHandlers;
+		hiddenSelections[]=
 		{
-			uniformModel = "-";
-			uniformClass = macro_new_uniform_skin_class(opfor,B2_Test); //ties to @2
-			armor = 100;
-			armorStructural = 20;//30;//20;
-			explosionShielding = 0.001;
-			impactDamageMultiplier = 0.001;
-			modelSides[] = {6};
-			containerClass = "Supply100";
-			mass = 400;
+			"Camo1","Camo2","Camo3"
 		};
-	};
-
-	class macro_new_uniform_class(opfor,B2_Aqua):SWOP_B2_superdroid_F_Spec
-	{
-		scope=2;
-		author= "RD501";
-		displayname = "B2 Aqua Suit (Waterbound Enforcement Technician)";
-		picture = "\SWOP_droids\data\ico\B2ico.paa";
-		nakedUniform = "U_BasicBody";
-		hiddenSelections[] = {"Camo1","Camo2","Camo3"};
-		hiddenSelectionsMaterials[] = {};
-		hiddenUnderwaterSelections[] = {};
-		hiddenUnderwaterSelectionsTextures[] = {};
-		JLTS_isDroid = 1; 
-        JLTS_hasEMPProtection = 0; 
-        JLTS_deathSounds = "DeathDroid";
-		class ItemInfo: UniformItem
+		hiddenSelectionsTextures[]=
 		{
-				uniformModel = "-";
-				uniformClass = macro_new_uniform_skin_class(opfor,B2_Aqua);
-				Armor = .1;
-				modelSides[] = {6};
-				uniformType = "Neopren";
-				containerClass = "Supply100";
-				mass = 40;
-				armorStructural = 1;
+        "RD501_Units\textures\CIS\B2\rocket\Reskinb2_chest.paa",
+        "RD501_Units\textures\CIS\B2\rocket\ReskinB2_waist.paa",
+        "RD501_Units\textures\CIS\B2\rocket\ReskinB2_legs.paa"
 		};
+		respawnWeapons[] = {"SWOP_B2gun","Throw","Put"};
+        magazines[] = {"SWOP_b2gun_Mag","SWOP_b2gun_Mag","SWOP_b2gun_Mag","SWOP_b2gun_Mag"};
+        weapons[] = {"SWOP_B2gun","Throw","Put"};
+        linkedItems[] = {"ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"};
 	};
 };
 
-class DefaultEventhandlers;
-class CfgVehicles
-{
-	class O_Soldier_base_F;
-	class SWOP_CIS_Base: O_Soldier_base_F
+class CfgWeapons
+{	
+	class Uniform_Base;
+	class SWOP_B2_superdroid_F_Spec:Uniform_Base
 	{
-		class HitPoints;
-	};
-
-	/**
-	 * UNIFORM SKINS
-	 * units that only act as skins for the uniform
-	 */
-	class SWOP_B2_superdroid: SWOP_CIS_Base
-	{
-		#include "armor_uniform.hpp"
-	};
-	#include "B2_Reskins.hpp"
-
-	/**
-	 * UNITS
-	 * the actual unit running around under the uniform
-	 */
-	class SWOP_CIS_superdroid_B2: SWOP_CIS_Base
-	{
-		class EventHandlers : DefaultEventhandlers {};
-	};
-	class macro_new_unit_class(opfor,B2_droid_Standard): SWOP_CIS_superdroid_B2
-	{
-		scope=2;
-		author= "RD501";
-		faction= macro_cis_faction
-		editorSubcategory = macro_editor_cat(B2)
-		uniformClass = macro_new_uniform_class(opfor,B2_Armor);
-		displayname = "B2 (Blaster)";
-		class EventHandlers : DefaultEventhandlers {};
-		#include "armor_unit.hpp"
-	};
-	class  macro_new_unit_class(opfor,B2_droid_Rocket): macro_new_unit_class(opfor,B2_droid_Standard)
-	{
-		displayname = "B2 (Rocket)";
-		author= "RD501";
-		magazines[] = {"SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag"};
-		respawnMagazines[] = {"SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag"};
-		uniformClass = macro_new_uniform_class(opfor,B2_Armor);
-	};
-	class macro_new_unit_class(opfor,B2_super_droid_Rocket) : macro_new_unit_class(opfor,B2_droid_Rocket)
-	{
-		scope=2;
-		displayname = "Super B2 (Rocket)";
-	};
-
-	class  macro_new_unit_class(opfor,B2_droid_Test): macro_new_unit_class(opfor,B2_droid_Standard)
+		class UniformItem;
+	}
+	class RD501_B2_Droid_Uniform: SWOP_B2_superdroid_F_Spec
 	{
-		displayname = "B2 (TEST)";
-		author= "RD501";
-		magazines[] = {"SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag"};
-		respawnMagazines[] = {"SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag"};
-		uniformClass = macro_new_uniform_class(opfor,B2_Armor_Test);
-	};
-
-	class  macro_new_unit_class(opfor,B2_aqua): macro_new_unit_class(opfor,B2_droid_Standard)
-	{
-		displayname = "B2 (Water Enforcement Technician)";
-		side=0;
 		scope=2;
-		scopeCurator=2;
-		scopeArsenal=2;
-		author= "RD501";
-
-		faction= macro_cis_faction
-		editorSubcategory = macro_editor_cat(aqua)
-
-		respawnWeapons[] = {"SWOP_B2gun_Aqua","Throw","Put"};
-		uniformClass = macro_new_uniform_class(opfor,B2_Aqua);
-		magazines[] = {"SWOP_b2gun_Mag","SWOP_b2gun_Mag","SWOP_b2gun_Mag","SWOP_b2gun_Mag"};
-		weapons[] = {macro_new_weapon(b2,aqua_gun),"Throw","Put"};
-		linkedItems[] = {macro_new_weapon(equipment,Water_Filtration),"ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"};
+		displayName="RD501 B2";
+		picture = "\SWOP_droids\data\ico\B2ico.paa"
+		model = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver";
+		class ItemInfo: UniformItem
+		{
+			uniformModel="-";
+			uniformClass="RD501_B2_droid";
+			containerClass="Supply40";
+			mass=80;
+		};
+		JLTS_isDroid = 1; 
+		JLTS_hasEMPProtection = 0; 
+		JLTS_deathSounds = "DeathDroid";
 	};
 };

+ 218 - 0
addons - Copy/RD501_Units/opfor/B2/config.cpp.old

@@ -0,0 +1,218 @@
+#include "../../config_macros.hpp"
+
+#include "../../../RD501_main/config_macros.hpp"
+
+#include "../../../RD501_main/config_macros.hpp"
+
+#define unit_addon B2
+#define patch_name MODNAME##unit_addon##_Patches
+#define unit_classname MODNAME##_##unit_addon
+
+
+class CfgPatches
+{
+	class macro_patch_name(b2_units)
+	{
+		addonRootClass=macro_patch_name(units);
+		requiredAddons[]=
+		{
+			macro_patch_name(units)
+		};
+		requiredVersion=0.1;
+		units[]={
+			"SWOP_CIS_superdroid_B2",
+			macro_new_unit_class(opfor,B2_droid_Standard),
+			macro_new_unit_class(opfor,B2_droid_Rocket),
+			macro_new_unit_class(opfor,B2_super_droid_Rocket),
+			macro_new_unit_class(opfor,B2_aqua),
+			macro_new_unit_class(opfor,B2_droid_Test),
+
+			macro_new_uniform_class(opfor,B2_Armor),
+			macro_new_uniform_class(opfor,B2_Aqua),
+			macro_new_uniform_class(opfor,B2_Armor_Test),
+
+			macro_new_uniform_skin_class(opfor,B2_Rocket),
+			macro_new_uniform_skin_class(opfor,B2_Aqua),
+			macro_new_uniform_skin_class(opfor,B2_Test)
+			
+		};
+		weapons[]=
+		{
+			
+		};
+	};
+};
+
+class cfgWeapons
+{
+	/**
+	 * UNIFORMS
+	 * the item the unit wears in the uniform slot
+	 */
+	class ItemCore;
+	class Uniform_Base: ItemCore
+	{
+		class ItemInfo;
+	};
+	class VestItem;
+	class UniformItem;
+	class SWOP_B2_superdroid_F_Spec;
+	class macro_new_uniform_class(opfor,B2_Armor): SWOP_B2_superdroid_F_Spec
+	{
+		author = "SWOP";
+		scope = 2;
+		displayName = "B2 battledroid (Rocket)";
+		picture = "\SWOP_droids\data\ico\B2ico.paa";
+		nakedUniform = "U_BasicBody";
+		model = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver";
+		JLTS_isDroid = 1; 
+        JLTS_hasEMPProtection = 0; 
+        JLTS_deathSounds = "DeathDroid";
+		JLTS_isDroid = 1; 
+		JLTS_hasEMPProtection = 0; 
+		JLTS_deathSounds = "DeathDroid";
+		class ItemInfo: UniformItem
+		{
+			uniformModel = "-";
+			uniformClass = macro_new_unit_class(opfor,B2_droid_Standard);
+			modelSides[] = {6};
+			containerClass = "Supply100";
+			mass = 400;
+		};
+	};
+
+	class macro_new_uniform_class(opfor,B2_Armor_Test): Uniform_Base
+	{
+		author = "SWOP";
+		scope = 2;
+		displayName = "B2 battledroid (TEST B2)";
+		picture = "\SWOP_droids\data\ico\B2ico.paa";
+		nakedUniform = "U_BasicBody";
+		model = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver";
+		JLTS_isDroid = 1; 
+        JLTS_hasEMPProtection = 0; 
+        JLTS_deathSounds = "DeathDroid";
+		class ItemInfo: UniformItem
+		{
+			uniformModel = "-";
+			uniformClass = macro_new_uniform_skin_class(opfor,B2_Test); //ties to @2
+			armor = 100;
+			armorStructural = 20;//30;//20;
+			explosionShielding = 0.001;
+			impactDamageMultiplier = 0.001;
+			modelSides[] = {6};
+			containerClass = "Supply100";
+			mass = 400;
+		};
+	};
+
+	class macro_new_uniform_class(opfor,B2_Aqua):SWOP_B2_superdroid_F_Spec
+	{
+		scope=2;
+		author= "RD501";
+		displayname = "B2 Aqua Suit (Waterbound Enforcement Technician)";
+		picture = "\SWOP_droids\data\ico\B2ico.paa";
+		nakedUniform = "U_BasicBody";
+		hiddenSelections[] = {"Camo1","Camo2","Camo3"};
+		hiddenSelectionsMaterials[] = {};
+		hiddenUnderwaterSelections[] = {};
+		hiddenUnderwaterSelectionsTextures[] = {};
+		JLTS_isDroid = 1; 
+        JLTS_hasEMPProtection = 0; 
+        JLTS_deathSounds = "DeathDroid";
+		class ItemInfo: UniformItem
+		{
+				uniformModel = "-";
+				uniformClass = macro_new_uniform_skin_class(opfor,B2_Aqua);
+				Armor = .1;
+				modelSides[] = {6};
+				uniformType = "Neopren";
+				containerClass = "Supply100";
+				mass = 40;
+				armorStructural = 1;
+		};
+	};
+};
+
+class DefaultEventhandlers;
+class CfgVehicles
+{
+	class O_Soldier_base_F;
+	class SWOP_CIS_Base: O_Soldier_base_F
+	{
+		class HitPoints;
+	};
+
+	/**
+	 * UNIFORM SKINS
+	 * units that only act as skins for the uniform
+	 */
+	class SWOP_B2_superdroid: SWOP_CIS_Base
+	{
+		#include "armor_uniform.hpp"
+	};
+	#include "B2_Reskins.hpp"
+
+	/**
+	 * UNITS
+	 * the actual unit running around under the uniform
+	 */
+	class SWOP_CIS_superdroid_B2: SWOP_CIS_Base
+	{
+		class EventHandlers : DefaultEventhandlers {};
+	};
+	class macro_new_unit_class(opfor,B2_droid_Standard): SWOP_CIS_superdroid_B2
+	{
+		scope=2;
+		author= "RD501";
+		faction= macro_cis_faction
+		editorSubcategory = macro_editor_cat(B2)
+		uniformClass = macro_new_uniform_class(opfor,B2_Armor)
+		displayname = "B2 (Blaster)";
+		class EventHandlers : DefaultEventhandlers {};
+		armor=2;
+		armorStructural=1;
+		#include "armor_unit.hpp"
+	};
+	class  macro_new_unit_class(opfor,B2_droid_Rocket): macro_new_unit_class(opfor,B2_droid_Standard)
+	{
+		displayname = "B2 (Rocket)";
+		author= "RD501";
+		magazines[] = {"SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag"};
+		respawnMagazines[] = {"SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag"};
+		uniformClass = macro_new_uniform_class(opfor,B2_Armor);
+	};
+	class macro_new_unit_class(opfor,B2_super_droid_Rocket) : macro_new_unit_class(opfor,B2_droid_Rocket)
+	{
+		scope=2;
+		displayname = "Super B2 (Rocket)";
+	};
+
+	class  macro_new_unit_class(opfor,B2_droid_Test): macro_new_unit_class(opfor,B2_droid_Standard)
+	{
+		displayname = "B2 (TEST)";
+		author= "RD501";
+		magazines[] = {"SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag"};
+		respawnMagazines[] = {"SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag", "SWOP_B2rocket_Mag"};
+		uniformClass = macro_new_uniform_class(opfor,B2_Armor_Test);
+	};
+
+	class  macro_new_unit_class(opfor,B2_aqua): macro_new_unit_class(opfor,B2_droid_Standard)
+	{
+		displayname = "B2 (Water Enforcement Technician)";
+		side=0;
+		scope=2;
+		scopeCurator=2;
+		scopeArsenal=2;
+		author= "RD501";
+
+		faction= macro_cis_faction
+		editorSubcategory = macro_editor_cat(aqua)
+
+		respawnWeapons[] = {"SWOP_B2gun_Aqua","Throw","Put"};
+		uniformClass = macro_new_uniform_class(opfor,B2_Aqua);
+		magazines[] = {"SWOP_b2gun_Mag","SWOP_b2gun_Mag","SWOP_b2gun_Mag","SWOP_b2gun_Mag"};
+		weapons[] = {macro_new_weapon(b2,aqua_gun),"Throw","Put"};
+		linkedItems[] = {macro_new_weapon(equipment,Water_Filtration),"ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"};
+	};
+};