浏览代码

Merge branch 'adjustable_armor' of github.com:Zatama/Aux-Mod-501st into adjustable_armor

Florian Steinschorn 4 年之前
父节点
当前提交
a1e2f7f086
共有 1 个文件被更改,包括 281 次插入18 次删除
  1. 281 18
      addons - Copy/RD501_Units/opfor/B2/config.cpp

+ 281 - 18
addons - Copy/RD501_Units/opfor/B2/config.cpp

@@ -19,7 +19,8 @@ class CfgPatches
 		};
 		requiredVersion=0.1;
 		units[]={
-			"RD501_B2_droid",
+			macro_new_unit_class(opfor,B2_droid_Standard),
+			"RD501_B2_superdroid",
 			"SWOP_B2_superdroid_F_Spec"
 		};
 		weapons[]=
@@ -29,14 +30,25 @@ class CfgPatches
 	};
 };
 
+class Extended_Init_EventHandlers 
+{
+    class macro_new_unit_class(opfor,B2_droid_Standard)
+    {
+        class ForceWalk
+        {
+            init = [_this select 0] call rd501_fnc_force_b2_walk;
+        };
+    };
+}
+
 class CfgVehicles
 {
 	class SWOP_B2_superdroid;
-	class RD501_B2_droid: SWOP_B2_superdroid
+	class macro_new_unit_class(opfor,B2_droid_Standard): SWOP_B2_superdroid
 	{
 		faction=macro_cis_faction
 		editorSubcategory=macro_editor_cat(B2)
-		displayname = "B2 (Blaster)";
+		displayname = "B2";
 		scope=2;
 		class HitPoints
 		{
@@ -130,22 +142,44 @@ class CfgVehicles
 			};
 			class HitArms: HitBody
 			{
-				armor=2;
+				armor=6;
 				material=-1;
 				name="arms";			
-				passThrough=0.89999998;
+				passThrough=0.13;
 				radius=0.1;
 				explosionShielding=0.4;
 				visual="injury_hands";
 				minimalHit=0.0099999998;
 				depends="0";
 			};
+			class HitRightHand :HitArms
+			{
+				armor = 8;
+				explosionShielding = 0.25;
+				material = -1;
+				minimalHit = 0.01;
+				name = "hand_r";
+				passThrough = 0.1;
+				radius = 0.1;
+				visual = "injury_hands";
+			};
+			class HitLeftHand :HitArms
+			{
+				armor = 8;
+				explosionShielding = 0.25;
+				material = -1;
+				minimalHit = 0.01;
+				name = "hand_l";
+				passThrough = 0.1;
+				radius = 0.1;
+				visual = "injury_hands";
+			};
 			class HitHands: HitArms
 			{
-				armor=2;
+				armor=6;
 				material=-1;
 				name="hands";
-				passThrough=0.89999998;
+				passThrough=0.13;
 				radius=0.1;
 				explosionShielding=0.30000001;
 				visual="injury_hands";
@@ -154,16 +188,38 @@ class CfgVehicles
 			};
 			class HitLegs: HitHands
 			{
-				armor=2;
+				armor=6;
 				material=-1;
 				name="legs";
-				passThrough=0.89999998;
-				radius=0.14;
+				passThrough=0.13;
+				radius=0.1;
 				explosionShielding=0.30000001;
 				visual="injury_legs";
 				minimalHit=0.0099999998;
 				depends="0";
 			};
+			class HitLeftLeg :HitLegs
+			{
+				armor = 8;
+				explosionShielding = 0.25;
+				material = -1;
+				minimalHit = 0.01;
+				name = "leg_l";
+				passThrough = 0.1;
+				radius = 0.1;
+				visual = "injury_legs";
+			};
+			class HitRightLeg :HitLegs
+			{
+				armor = 8;
+				explosionShielding = 0.25;
+				material = -1;
+				minimalHit = 0.01;
+				name = "leg_r";
+				passThrough = 0.1;
+				radius = 0.1;
+				visual = "injury_leg";
+			};
 			class Incapacitated: HitLegs
 			{
 				armor=1000;
@@ -180,7 +236,7 @@ class CfgVehicles
 		armor=30;
 		armorStructural=1;
 		explosionShielding=0.40000001;
-		uniformClass="RD501_B2_Droid_Uniform";
+		uniformClass=macro_new_uniform_class(opfor,B2_Armor)
 		class EventHandlers;
 		hiddenSelections[]=
 		{
@@ -197,16 +253,204 @@ class CfgVehicles
         weapons[] = {"SWOP_B2gun","Throw","Put"};
         linkedItems[] = {"ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"};
 	};
+	class macro_new_unit_class(opfor,B2_droid_Super) : macro_new_unit_class(opfor,B2_droid_Standard)
+	{
+		displayname = "Super B2";
+		armor=60;
+		armorStructural=10;
+		uniformClass=macro_new_uniform_class(opfor,B2_SuperArmor)
+		class HitPoints
+		{
+			class HitFace
+			{
+				armor=10;
+				material=-1;
+				name="face_hub";
+				passThrough=0.1;
+				radius=0.079999998;
+				explosionShielding=1;
+				minimalHit=0.0099999998;
+			};
+			class HitNeck: HitFace
+			{
+				armor=15;
+				material=-1;
+				name="neck";
+				passThrough=0.1;
+				radius=0.1;
+				explosionShielding=1;
+				minimalHit=0.0099999998;
+			};
+			class HitHead: HitNeck
+			{
+				armor=10;
+				material=-1;
+				name="head";
+				passThrough=0.1;
+				radius=0.2;
+				explosionShielding=1;
+				minimalHit=0.0099999998;
+				depends="HitFace max HitNeck";
+			};
+			class HitPelvis: HitHead
+			{
+				armor=15;
+				material=-1;
+				name="pelvis";
+				passThrough=0.1;
+				radius=0.23999999;
+				explosionShielding=1;
+				visual="injury_body";
+				minimalHit=0.0099999998;
+				depends="0";
+			};
+			class HitAbdomen: HitPelvis
+			{
+				armor=15;
+				material=-1;
+				name="spine1";
+				passThrough=0.1;
+				radius=0.16;
+				explosionShielding=1;
+				visual="injury_body";
+				minimalHit=0.0099999998;
+			};
+			class HitDiaphragm: HitAbdomen
+			{
+				armor=20;
+				material=-1;
+				name="spine2";
+				passThrough=0.1;
+				radius=0.18000001;
+				explosionShielding=1.5;
+				visual="injury_body";
+				minimalHit=0.0099999998;
+			};
+			class HitChest: HitDiaphragm
+			{
+				armor=25;
+				material=-1;
+				name="spine3";
+				passThrough=0.1;
+				radius=0.18000001;
+				explosionShielding=1.5;
+				visual="injury_body";
+				minimalHit=0.0099999998;
+			};
+			class HitBody: HitChest
+			{
+				armor=1000;
+				material=-1;
+				name="body";
+				passThrough=0.1;
+				radius=0;
+				explosionShielding=1.5;
+				visual="injury_body";
+				minimalHit=0.0099999998;
+				depends="HitPelvis max HitAbdomen max HitDiaphragm max HitChest";
+			};
+			class HitArms: HitBody
+			{
+				armor=25;
+				material=-1;
+				name="arms";			
+				passThrough=0.13;
+				radius=0.1;
+				explosionShielding=0.4;
+				visual="injury_hands";
+				minimalHit=0.0099999998;
+				depends="0";
+			};
+			class HitRightHand :HitArms
+			{
+				armor = 8;
+				explosionShielding = 0.25;
+				material = -1;
+				minimalHit = 0.01;
+				name = "hand_r";
+				passThrough = 0.1;
+				radius = 0.1;
+				visual = "injury_hands";
+			};
+			class HitLeftHand :HitArms
+			{
+				armor = 8;
+				explosionShielding = 0.25;
+				material = -1;
+				minimalHit = 0.01;
+				name = "hand_l";
+				passThrough = 0.1;
+				radius = 0.1;
+				visual = "injury_hands";
+			};
+			class HitHands: HitArms
+			{
+				armor=6;
+				material=-1;
+				name="hands";
+				passThrough=0.13;
+				radius=0.1;
+				explosionShielding=0.30000001;
+				visual="injury_hands";
+				minimalHit=0.0099999998;
+				depends="HitArms";
+			};
+			class HitLegs: HitHands
+			{
+				armor=20;
+				material=-1;
+				name="legs";
+				passThrough=0.13;
+				radius=0.1;
+				explosionShielding=0.30000001;
+				visual="injury_legs";
+				minimalHit=0.0099999998;
+				depends="0";
+			};
+			class HitLeftLeg :HitLegs
+			{
+				armor = 8;
+				explosionShielding = 0.25;
+				material = -1;
+				minimalHit = 0.01;
+				name = "leg_l";
+				passThrough = 0.1;
+				radius = 0.1;
+				visual = "injury_legs";
+			};
+			class HitRightLeg :HitLegs
+			{
+				armor = 8;
+				explosionShielding = 0.25;
+				material = -1;
+				minimalHit = 0.01;
+				name = "leg_r";
+				passThrough = 0.1;
+				radius = 0.1;
+				visual = "injury_leg";
+			};
+			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 CfgWeapons
 {	
-	class Uniform_Base;
-	class SWOP_B2_superdroid_F_Spec:Uniform_Base
-	{
-		class UniformItem;
-	}
-	class RD501_B2_Droid_Uniform: SWOP_B2_superdroid_F_Spec
+	class DefaultEventhandlers;
+	class SWOP_B2_superdroid_F_Spec;
+	class UniformItem;
+	class macro_new_uniform_class(opfor,B2_Armor): SWOP_B2_superdroid_F_Spec
 	{
 		scope=2;
 		displayName="RD501 B2";
@@ -215,12 +459,31 @@ class CfgWeapons
 		class ItemInfo: UniformItem
 		{
 			uniformModel="-";
-			uniformClass="RD501_B2_droid";
+			uniformClass=macro_new_unit_class(opfor,B2_droid_Standard)
+			containerClass="Supply40";
+			mass=80;
+		};
+		JLTS_isDroid = 1; 
+		JLTS_hasEMPProtection = 0; 
+		JLTS_deathSounds = "DeathDroid";
+		class EventHandlers : DefaultEventhandlers {};
+	};
+	class macro_new_uniform_class(opfor,B2_SuperArmor): SWOP_B2_superdroid_F_Spec
+	{
+		scope=2;
+		displayName="RD501 Super B2";
+		picture = "\SWOP_droids\data\ico\B2ico.paa"
+		model = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver";
+		class ItemInfo: UniformItem
+		{
+			uniformModel="-";
+			uniformClass=macro_new_unit_class(opfor,B2_droid_Super);
 			containerClass="Supply40";
 			mass=80;
 		};
 		JLTS_isDroid = 1; 
 		JLTS_hasEMPProtection = 0; 
 		JLTS_deathSounds = "DeathDroid";
+		class EventHandlers : DefaultEventhandlers {};
 	};
 };