diff --git a/addons/flashlights/CfgEventHandlers.hpp b/addons/flashlights/CfgEventHandlers.hpp
index 58b84ad8642..bf70b57b884 100644
--- a/addons/flashlights/CfgEventHandlers.hpp
+++ b/addons/flashlights/CfgEventHandlers.hpp
@@ -1,4 +1,3 @@
-
class Extended_PostInit_EventHandlers {
class ADDON {
clientInit = QUOTE(call COMPILE_FILE(XEH_postInitClient));
diff --git a/addons/flashlights/CfgVehicles.hpp b/addons/flashlights/CfgVehicles.hpp
index fa766ad87bc..dbdf5421bc5 100644
--- a/addons/flashlights/CfgVehicles.hpp
+++ b/addons/flashlights/CfgVehicles.hpp
@@ -7,18 +7,17 @@ class CfgVehicles {
};
class Item_Base_F;
-
class ACE_Flashlight_MX991Item: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = CSTRING(MX991_DisplayName);
author = ECSTRING(common,ACETeam);
- vehicleClass = "WeaponAccessories";
+ editorCategory = "EdCat_Equipment";
+ editorSubcategory = "EdSubcat_InventoryItems";
+ vehicleClass = "Items";
+
class TransportItems {
- class ACE_Flashlight_MX991 {
- name = "ACE_Flashlight_MX991";
- count = 1;
- };
+ MACRO_ADDITEM(ACE_Flashlight_MX991,1);
};
};
@@ -27,12 +26,12 @@ class CfgVehicles {
scopeCurator = 2;
displayName = CSTRING(KSF1_DisplayName);
author = ECSTRING(common,ACETeam);
- vehicleClass = "WeaponAccessories";
+ editorCategory = "EdCat_Equipment";
+ editorSubcategory = "EdSubcat_InventoryItems";
+ vehicleClass = "Items";
+
class TransportItems {
- class ACE_Flashlight_KSF1 {
- name = "ACE_Flashlight_KSF1";
- count = 1;
- };
+ MACRO_ADDITEM(ACE_Flashlight_KSF1,1);
};
};
@@ -41,38 +40,52 @@ class CfgVehicles {
scopeCurator = 2;
displayName = CSTRING(XL50_DisplayName);
author = ECSTRING(common,ACETeam);
- vehicleClass = "WeaponAccessories";
+ editorCategory = "EdCat_Equipment";
+ editorSubcategory = "EdSubcat_InventoryItems";
+ vehicleClass = "Items";
+
class TransportItems {
- class ACE_Flashlight_XL50 {
- name = "ACE_Flashlight_XL50";
- count = 1;
- };
+ MACRO_ADDITEM(ACE_Flashlight_XL50,1);
};
};
- class NATO_Box_Base;
- class EAST_Box_Base;
- class IND_Box_Base;
- class FIA_Box_Base_F;
+ class Pistol_Base_F;
+ class ACE_Item_Flashlight_Maglite_ML300L: Pistol_Base_F {
+ scope = 2;
+ scopeCurator = 2;
+ displayName = CSTRING(Maglite_ML300L_DisplayName);
+ author = ECSTRING(common,ACETeam);
+ editorCategory = "EdCat_Equipment";
+ editorSubcategory = "EdSubcat_InventoryItems";
+ vehicleClass = "Items";
+
+ class TransportItems {
+ MACRO_ADDITEM(ACE_Flashlight_Maglite_ML300L,1);
+ };
+ };
+ class NATO_Box_Base;
class Box_NATO_Support_F: NATO_Box_Base {
class TransportItems {
MACRO_ADDITEM(ACE_Flashlight_MX991,12);
};
};
+ class EAST_Box_Base;
class Box_East_Support_F: EAST_Box_Base {
class TransportItems {
MACRO_ADDITEM(ACE_Flashlight_KSF1,12);
};
};
+ class IND_Box_Base;
class Box_IND_Support_F: IND_Box_Base {
class TransportItems {
MACRO_ADDITEM(ACE_Flashlight_XL50,12);
};
};
+ class FIA_Box_Base_F;
class Box_FIA_Support_F: FIA_Box_Base_F {
class TransportItems {
MACRO_ADDITEM(ACE_Flashlight_MX991,12);
@@ -84,6 +97,7 @@ class CfgVehicles {
MACRO_ADDITEM(ACE_Flashlight_MX991,12);
MACRO_ADDITEM(ACE_Flashlight_KSF1,12);
MACRO_ADDITEM(ACE_Flashlight_XL50,12);
+ MACRO_ADDITEM(ACE_Flashlight_Maglite_ML300L,2);
};
};
-};
\ No newline at end of file
+};
diff --git a/addons/flashlights/CfgWeapons.hpp b/addons/flashlights/CfgWeapons.hpp
index 41bfd4a8bb4..1ebc9a5a586 100644
--- a/addons/flashlights/CfgWeapons.hpp
+++ b/addons/flashlights/CfgWeapons.hpp
@@ -1,17 +1,81 @@
class CfgWeapons {
+ class Pistol;
+ class Pistol_Base_F: Pistol {
+ class WeaponSlotsInfo;
+ };
+
+ class ACE_Flashlight_Maglite_ML300L: Pistol_Base_F {
+ author = ECSTRING(common,ACETeam);
+ scope = 2;
+ displayName = CSTRING(Maglite_ML300L_DisplayName);
+ descriptionShort = CSTRING(Maglite_ML300L_Description);
+ model = QPATHTOF(data\maglite_ml300l.p3d);
+ picture = QPATHTOF(UI\maglite_ml300l_ca.paa);
+ cursor = "";
+ cursorAim = "";
+
+ // binarized rtm, animation in "extras/assets/maglite"
+ handAnim[] = {"OFP2_ManSkeleton", QPATHTOF(data\maglite_ml300l.rtm)};
+ recoil = "empty";
+ muzzlePos = "flash";
+ muzzleEnd = "flash dir";
+ magazines[] = {"FakeMagazine"}; // Required for the weapon info box to work correctly.
+ textureType = "default"; // empty texture
+ weaponInfoType = "RscWeaponEmpty";
+
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ holsterScale = 0; // Item does not fit a pistol holster, so hide it.
+ mass = 20;
+
+ class MuzzleSlot {};
+ class CowsSlot {};
+ };
+
+ inertia = 0.2;
+ dexterity = 1.8;
+
+ class FlashLight {
+ color[] = {180,180,190};
+ ambient[] = {0.9,0.81,0.7};
+ intensity = 85;
+ size = 1;
+ innerAngle = 5;
+ outerAngle = 80;
+ coneFadeCoef = 8;
+ position = "flash dir";
+ direction = "flash";
+ useFlare = 1;
+ flareSize = 0.8;
+ flareMaxDistance = 100;
+ dayLight = 1;
+
+ class Attenuation {
+ start = 0.25;
+ constant = 0;
+ linear = 0;
+ quadratic = 1;
+ hardLimitStart = 140;
+ hardLimitEnd = 150;
+ };
+
+ scale[] = {0};
+ };
+ };
class ACE_ItemCore;
class CBA_MiscItem_ItemInfo;
class ACE_Flashlight_MX991: ACE_ItemCore {
author = ECSTRING(common,ACETeam);
+ scope = 2;
displayName = CSTRING(MX991_DisplayName);
descriptionShort = CSTRING(MX991_Description);
- model = QPATHTOF(data\MX_991.p3d);
- picture = QPATHTOF(UI\mx991_ca.paa);
- scope = 2;
+ model = QPATHTOF(data\mx_991.p3d);
+ picture = QPATHTOF(UI\mx_991_ca.paa);
+
class ItemInfo: CBA_MiscItem_ItemInfo {
- mass = 1;
+ mass = 4;
+
class FlashLight {
ACE_Flashlight_Colour = "red";
ACE_Flashlight_Beam = QPATHTOF(UI\Flashlight_beam_red_ca.paa);
@@ -22,13 +86,15 @@ class CfgWeapons {
class ACE_Flashlight_KSF1: ACE_ItemCore {
author = ECSTRING(common,ACETeam);
+ scope = 2;
displayName = CSTRING(KSF1_DisplayName);
descriptionShort = CSTRING(KSF1_Description);
- model = QPATHTOF(data\KSF_1.p3d);
- picture = QPATHTOF(UI\ksf1_ca.paa);
- scope = 2;
+ model = QPATHTOF(data\ksf_1.p3d);
+ picture = QPATHTOF(UI\ksf_1_ca.paa);
+
class ItemInfo: CBA_MiscItem_ItemInfo {
- mass = 1;
+ mass = 4;
+
class FlashLight {
ACE_Flashlight_Colour = "red";
ACE_Flashlight_Beam = QPATHTOF(UI\Flashlight_beam_red_ca.paa);
@@ -39,13 +105,15 @@ class CfgWeapons {
class ACE_Flashlight_XL50: ACE_ItemCore {
author = ECSTRING(common,ACETeam);
+ scope = 2;
displayName = CSTRING(XL50_DisplayName);
descriptionShort = CSTRING(XL50_Description);
- model = QPATHTOF(data\Maglight.p3d);
- picture = QPATHTOF(UI\xl50_ca.paa);
- scope = 2;
+ model = QPATHTOF(data\maglite_xl50.p3d);
+ picture = QPATHTOF(UI\maglite_xl50_ca.paa);
+
class ItemInfo: CBA_MiscItem_ItemInfo {
- mass = 1;
+ mass = 3;
+
class FlashLight {
ACE_Flashlight_Colour = "white";
ACE_Flashlight_Beam = QPATHTOF(UI\Flashlight_beam_white_ca.paa);
diff --git a/addons/flashlights/UI/KSF1_ca.paa b/addons/flashlights/UI/ksf_1_ca.paa
similarity index 100%
rename from addons/flashlights/UI/KSF1_ca.paa
rename to addons/flashlights/UI/ksf_1_ca.paa
diff --git a/addons/flashlights/UI/maglite_ml300l_ca.paa b/addons/flashlights/UI/maglite_ml300l_ca.paa
new file mode 100644
index 00000000000..4a0440724f4
Binary files /dev/null and b/addons/flashlights/UI/maglite_ml300l_ca.paa differ
diff --git a/addons/flashlights/UI/xl50_ca.paa b/addons/flashlights/UI/maglite_xl50_ca.paa
similarity index 100%
rename from addons/flashlights/UI/xl50_ca.paa
rename to addons/flashlights/UI/maglite_xl50_ca.paa
diff --git a/addons/flashlights/UI/mx991_ca.paa b/addons/flashlights/UI/mx_991_ca.paa
similarity index 100%
rename from addons/flashlights/UI/mx991_ca.paa
rename to addons/flashlights/UI/mx_991_ca.paa
diff --git a/addons/flashlights/config.cpp b/addons/flashlights/config.cpp
index eefeb782f11..f88afc0663a 100644
--- a/addons/flashlights/config.cpp
+++ b/addons/flashlights/config.cpp
@@ -3,12 +3,22 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
- units[] = {};
- weapons[] = {"ACE_Flashlight_MX991", "ACE_Flashlight_KSF1", "ACE_Flashlight_XL50"};
+ units[] = {
+ "ACE_Flashlight_MX991Item",
+ "ACE_Flashlight_KSF1Item",
+ "ACE_Flashlight_XL50Item",
+ "ACE_Item_Flashlight_Maglite_ML300L"
+ };
+ weapons[] = {
+ "ACE_Flashlight_MX991",
+ "ACE_Flashlight_KSF1",
+ "ACE_Flashlight_XL50",
+ "ACE_Flashlight_Maglite_ML300L"
+ };
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
author = ECSTRING(common,ACETeam);
- authors[] = {"voiper"};
+ authors[] = {"voiper","bux","HorribleGoat"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
diff --git a/addons/flashlights/data/KSF_1.p3d b/addons/flashlights/data/KSF_1.p3d
index 0ec2fd23c69..0059335bd6f 100644
Binary files a/addons/flashlights/data/KSF_1.p3d and b/addons/flashlights/data/KSF_1.p3d differ
diff --git a/addons/flashlights/data/MX_991.p3d b/addons/flashlights/data/MX_991.p3d
index c79c330ea35..a373dd3f740 100644
Binary files a/addons/flashlights/data/MX_991.p3d and b/addons/flashlights/data/MX_991.p3d differ
diff --git a/addons/flashlights/data/Maglight.p3d b/addons/flashlights/data/Maglight.p3d
deleted file mode 100644
index 6ce3b9fcd4b..00000000000
Binary files a/addons/flashlights/data/Maglight.p3d and /dev/null differ
diff --git a/addons/flashlights/data/ksf_1.rvmat b/addons/flashlights/data/ksf_1.rvmat
index 113fe0cc147..ed9e802c54d 100644
--- a/addons/flashlights/data/ksf_1.rvmat
+++ b/addons/flashlights/data/ksf_1.rvmat
@@ -8,7 +8,7 @@ PixelShaderID="Super";
VertexShaderID="Super";
class Stage1 {
- texture="z\ace\addons\flashlights\data\KSF_1_nohq.paa";
+ texture="z\ace\addons\flashlights\data\textures\ksf_1_nohq.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
@@ -48,7 +48,7 @@ class Stage4 {
};
};
class Stage5 {
- texture="z\ace\addons\flashlights\data\KSF_1_smdi.paa";
+ texture="z\ace\addons\flashlights\data\textures\ksf_1_smdi.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
diff --git a/addons/flashlights/data/maglite_ml300l.p3d b/addons/flashlights/data/maglite_ml300l.p3d
new file mode 100644
index 00000000000..e916514d513
Binary files /dev/null and b/addons/flashlights/data/maglite_ml300l.p3d differ
diff --git a/addons/flashlights/data/maglite_ml300l.rtm b/addons/flashlights/data/maglite_ml300l.rtm
new file mode 100644
index 00000000000..0a82508447c
Binary files /dev/null and b/addons/flashlights/data/maglite_ml300l.rtm differ
diff --git a/addons/flashlights/data/maglite_ml300l.rvmat b/addons/flashlights/data/maglite_ml300l.rvmat
new file mode 100644
index 00000000000..a869bb93b45
--- /dev/null
+++ b/addons/flashlights/data/maglite_ml300l.rvmat
@@ -0,0 +1,80 @@
+ambient[] = {1,1,1,1};
+diffuse[] = {1,1,1,1};
+forcedDiffuse[] = {0,0,0,0};
+emmisive[] = {0,0,0,1};
+specular[] = {0.6,0.6,0.6,1}; //amount of glossiness - the higher the number, the higher the glossiness
+specularPower = 700; //area of glossiness - the higher the number, the smaller the area
+PixelShaderID = "Super";
+VertexShaderID = "Super";
+
+class Stage1 {
+ texture = "z\ace\addons\flashlights\data\textures\maglite_ml300l_nohq.paa";
+ uvSource = "tex";
+
+ class uvTransform {
+ aside[] = {1,0,0};
+ up[] = {0,1,0};
+ dir[] = {0,0,1};
+ pos[] = {0,0,0};
+ };
+};
+
+class Stage2 {
+ texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,dt)";
+ uvSource = "tex";
+
+ class uvTransform {
+ aside[] = {1,0,0};
+ up[] = {0,1,0};
+ dir[] = {0,0,1};
+ pos[] = {0,0,0};
+ };
+};
+
+class Stage3 {
+ texture = "#(argb,8,8,3)color(0,0,0,0,mc)";
+ uvSource = "tex";
+
+ class uvTransform {
+ aside[] = {1,0,0};
+ up[] = {0,1,0};
+ dir[] = {0,0,1};
+ pos[] = {0,0,0};
+ };
+};
+
+class Stage4 {
+ texture = "z\ace\addons\flashlights\data\textures\maglite_ml300l_as.paa";
+ uvSource = "tex";
+
+ class uvTransform {
+ aside[] = {1,0,0};
+ up[] = {0,1,0};
+ dir[] = {0,0,1};
+ pos[] = {0,0,1};
+ };
+};
+
+class Stage5 {
+ texture = "z\ace\addons\flashlights\data\textures\maglite_ml300l_smdi.paa";
+ uvSource = "tex";
+
+ class uvTransform {
+ aside[] = {1,0,0};
+ up[] = {0,1,0};
+ dir[] = {0,0,1};
+ pos[] = {0,0,0};
+ };
+};
+
+class Stage6 {
+ texture = "#(ai,64,64,1)fresnel(4.7,1.2)";
+ uvSource = "tex";
+
+ class uvTransform {
+ aside[] = {1,0,0};
+ up[] = {0,1,0};
+ dir[] = {0,0,1};
+ pos[] = {0,0,0};
+ };
+};
diff --git a/addons/flashlights/data/maglite_xl50.p3d b/addons/flashlights/data/maglite_xl50.p3d
new file mode 100644
index 00000000000..b5619337d44
Binary files /dev/null and b/addons/flashlights/data/maglite_xl50.p3d differ
diff --git a/addons/flashlights/data/maglite.rvmat b/addons/flashlights/data/maglite_xl50.rvmat
similarity index 90%
rename from addons/flashlights/data/maglite.rvmat
rename to addons/flashlights/data/maglite_xl50.rvmat
index 960599813b6..c1450280f33 100644
--- a/addons/flashlights/data/maglite.rvmat
+++ b/addons/flashlights/data/maglite_xl50.rvmat
@@ -8,7 +8,7 @@ PixelShaderID="Super";
VertexShaderID="Super";
class Stage1 {
- texture="z\ace\addons\flashlights\data\Maglite_nohq.paa";
+ texture="z\ace\addons\flashlights\data\textures\maglite_xl50_nohq.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
@@ -48,7 +48,7 @@ class Stage4 {
};
};
class Stage5 {
- texture="z\ace\addons\flashlights\data\Maglite_smdi.paa";
+ texture="z\ace\addons\flashlights\data\textures\maglite_xl50_smdi.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
diff --git a/addons/flashlights/data/model.cfg b/addons/flashlights/data/model.cfg
new file mode 100644
index 00000000000..58bc63eb8dd
--- /dev/null
+++ b/addons/flashlights/data/model.cfg
@@ -0,0 +1,175 @@
+class CfgSkeletons {
+ class Default {
+ isDiscrete = 1;
+ skeletonInherit = "";
+ skeletonBones[] = {};
+ };
+
+ class OFP2_ManSkeleton {
+ isDiscrete = 0;
+ skeletonInherit = "";
+ skeletonBones[] = {
+ "Pelvis","",
+ "Spine","Pelvis",
+ "Spine1","Spine",
+ "Spine2","Spine1",
+ "Spine3","Spine2",
+ "Camera","Pelvis",
+ "weapon","Spine1",
+ "launcher","Spine1",
+
+ // Head skeleton in hierarchy
+ "neck","Spine3",
+ "neck1","neck",
+ "head","neck1",
+
+ // New facial features
+ "Face_Hub","head",
+ "Face_Jawbone","Face_Hub",
+ "Face_Jowl","Face_Jawbone",
+ "Face_chopRight","Face_Jawbone",
+ "Face_chopLeft","Face_Jawbone",
+ "Face_LipLowerMiddle","Face_Jawbone",
+ "Face_LipLowerLeft","Face_Jawbone",
+ "Face_LipLowerRight","Face_Jawbone",
+ "Face_Chin","Face_Jawbone",
+ "Face_Tongue","Face_Jawbone",
+ "Face_CornerRight","Face_Hub",
+ "Face_CheekSideRight","Face_CornerRight",
+ "Face_CornerLeft","Face_Hub",
+ "Face_CheekSideLeft","Face_CornerLeft",
+ "Face_CheekFrontRight","Face_Hub",
+ "Face_CheekFrontLeft","Face_Hub",
+ "Face_CheekUpperRight","Face_Hub",
+ "Face_CheekUpperLeft","Face_Hub",
+ "Face_LipUpperMiddle","Face_Hub",
+ "Face_LipUpperRight","Face_Hub",
+ "Face_LipUpperLeft","Face_Hub",
+ "Face_NostrilRight","Face_Hub",
+ "Face_NostrilLeft","Face_Hub",
+ "Face_Forehead","Face_Hub",
+ "Face_BrowFrontRight","Face_Forehead",
+ "Face_BrowFrontLeft","Face_Forehead",
+ "Face_BrowMiddle","Face_Forehead",
+ "Face_BrowSideRight","Face_Forehead",
+ "Face_BrowSideLeft","Face_Forehead",
+ "Face_Eyelids","Face_Hub",
+ "Face_EyelidUpperRight","Face_Hub",
+ "Face_EyelidUpperLeft","Face_Hub",
+ "Face_EyelidLowerRight","Face_Hub",
+ "Face_EyelidLowerLeft","Face_Hub",
+ "EyeLeft","Face_Hub",
+ "EyeRight","Face_Hub",
+
+ // Left upper side
+ "LeftShoulder","Spine3",
+ "LeftArm","LeftShoulder",
+ "LeftArmRoll","LeftArm",
+ "LeftForeArm","LeftArmRoll",
+ "LeftForeArmRoll","LeftForeArm",
+ "LeftHand","LeftForeArmRoll",
+ "LeftHandRing","LeftHand",
+ "LeftHandRing1","LeftHandRing",
+ "LeftHandRing2","LeftHandRing1",
+ "LeftHandRing3","LeftHandRing2",
+ "LeftHandPinky1","LeftHandRing",
+ "LeftHandPinky2","LeftHandPinky1",
+ "LeftHandPinky3","LeftHandPinky2",
+ "LeftHandMiddle1","LeftHand",
+ "LeftHandMiddle2","LeftHandMiddle1",
+ "LeftHandMiddle3","LeftHandMiddle2",
+ "LeftHandIndex1","LeftHand",
+ "LeftHandIndex2","LeftHandIndex1",
+ "LeftHandIndex3","LeftHandIndex2",
+ "LeftHandThumb1","LeftHand",
+ "LeftHandThumb2","LeftHandThumb1",
+ "LeftHandThumb3","LeftHandThumb2",
+
+ // Right upper side
+ "RightShoulder","Spine3",
+ "RightArm","RightShoulder",
+ "RightArmRoll","RightArm",
+ "RightForeArm","RightArmRoll",
+ "RightForeArmRoll","RightForeArm",
+ "RightHand","RightForeArmRoll",
+ "RightHandRing","RightHand",
+ "RightHandRing1","RightHandRing",
+ "RightHandRing2","RightHandRing1",
+ "RightHandRing3","RightHandRing2",
+ "RightHandPinky1","RightHandRing",
+ "RightHandPinky2","RightHandPinky1",
+ "RightHandPinky3","RightHandPinky2",
+ "RightHandMiddle1","RightHand",
+ "RightHandMiddle2","RightHandMiddle1",
+ "RightHandMiddle3","RightHandMiddle2",
+ "RightHandIndex1","RightHand",
+ "RightHandIndex2","RightHandIndex1",
+ "RightHandIndex3","RightHandIndex2",
+ "RightHandThumb1","RightHand",
+ "RightHandThumb2","RightHandThumb1",
+ "RightHandThumb3","RightHandThumb2",
+
+ // Left lower side
+ "LeftUpLeg","Pelvis",
+ "LeftUpLegRoll","LeftUpLeg",
+ "LeftLeg","LeftUpLegRoll",
+ "LeftLegRoll","LeftLeg",
+ "LeftFoot","LeftLegRoll",
+ "LeftToeBase","LeftFoot",
+
+ // Right lower side
+ "RightUpLeg","Pelvis",
+ "RightUpLegRoll","RightUpLeg",
+ "RightLeg","RightUpLegRoll",
+ "RightLegRoll","RightLeg",
+ "RightFoot","RightLegRoll",
+ "RightToeBase","RightFoot"
+ };
+
+ // location of pivot points (local axes) for hierarchical animation
+ pivotsModel = "A3\anims_f\data\skeleton\SkeletonPivots.p3d";
+ };
+};
+
+class CfgModels {
+ class Default {
+ sectionsInherit = "";
+ sections[] = {};
+ skeletonName = "";
+ };
+
+ class ArmaMan: Default {
+ htMin = 60; // Minimum half-cooling time (in seconds)
+ htMax = 1800; // Maximum half-cooling time (in seconds)
+ afMax = 30; // Maximum temperature in case the model is alive (in celsius)
+ mfMax = 0; // Maximum temperature when the model is moving (in celsius)
+ mFact = 1; // Metabolism factor - number from interval <0, 1> (0 - metabolism has no influence, 1 - metabolism has full influence (no other temperature source will be considered)).
+ tBody = 37; // Metabolism temperature of the model (in celsius)
+
+ sections[] = {
+ "osobnost",
+ "Head_Injury",
+ "Body_Injury",
+ "l_leg_injury",
+ "l_arm_injury",
+ "r_arm_injury",
+ "r_leg_injury",
+ "injury_body",
+ "injury_legs",
+ "injury_hands",
+ "clan",
+ "clan_sign",
+ "Camo",
+ "CamoB",
+ "Camo1",
+ "Camo2",
+ "personality",
+ "hl",
+ "injury_head",
+ "insignia",
+ "ghillie_hide"
+ };
+
+ skeletonName = "OFP2_ManSkeleton";
+ };
+};
diff --git a/addons/flashlights/data/mx_991.rvmat b/addons/flashlights/data/mx_991.rvmat
index 0268d4903c8..040b3ea8c6d 100644
--- a/addons/flashlights/data/mx_991.rvmat
+++ b/addons/flashlights/data/mx_991.rvmat
@@ -8,7 +8,7 @@ PixelShaderID="Super";
VertexShaderID="Super";
class Stage1 {
- texture="z\ace\addons\flashlights\data\MX_991_nohq.paa";
+ texture="z\ace\addons\flashlights\data\textures\mx_991_nohq.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
diff --git a/addons/flashlights/data/ksf_1_co.paa b/addons/flashlights/data/textures/ksf_1_co.paa
similarity index 100%
rename from addons/flashlights/data/ksf_1_co.paa
rename to addons/flashlights/data/textures/ksf_1_co.paa
diff --git a/addons/flashlights/data/KSF_1_nohq.paa b/addons/flashlights/data/textures/ksf_1_nohq.paa
similarity index 100%
rename from addons/flashlights/data/KSF_1_nohq.paa
rename to addons/flashlights/data/textures/ksf_1_nohq.paa
diff --git a/addons/flashlights/data/KSF_1_smdi.paa b/addons/flashlights/data/textures/ksf_1_smdi.paa
similarity index 100%
rename from addons/flashlights/data/KSF_1_smdi.paa
rename to addons/flashlights/data/textures/ksf_1_smdi.paa
diff --git a/addons/flashlights/data/textures/maglite_ml300l_as.paa b/addons/flashlights/data/textures/maglite_ml300l_as.paa
new file mode 100644
index 00000000000..6dc466f969d
Binary files /dev/null and b/addons/flashlights/data/textures/maglite_ml300l_as.paa differ
diff --git a/addons/flashlights/data/textures/maglite_ml300l_ca.paa b/addons/flashlights/data/textures/maglite_ml300l_ca.paa
new file mode 100644
index 00000000000..2a2368b6e30
Binary files /dev/null and b/addons/flashlights/data/textures/maglite_ml300l_ca.paa differ
diff --git a/addons/flashlights/data/textures/maglite_ml300l_nohq.paa b/addons/flashlights/data/textures/maglite_ml300l_nohq.paa
new file mode 100644
index 00000000000..4a08ff5925f
Binary files /dev/null and b/addons/flashlights/data/textures/maglite_ml300l_nohq.paa differ
diff --git a/addons/flashlights/data/textures/maglite_ml300l_smdi.paa b/addons/flashlights/data/textures/maglite_ml300l_smdi.paa
new file mode 100644
index 00000000000..32cab82188d
Binary files /dev/null and b/addons/flashlights/data/textures/maglite_ml300l_smdi.paa differ
diff --git a/addons/flashlights/data/maglite_co.paa b/addons/flashlights/data/textures/maglite_xl50_co.paa
similarity index 100%
rename from addons/flashlights/data/maglite_co.paa
rename to addons/flashlights/data/textures/maglite_xl50_co.paa
diff --git a/addons/flashlights/data/Maglite_nohq.paa b/addons/flashlights/data/textures/maglite_xl50_nohq.paa
similarity index 100%
rename from addons/flashlights/data/Maglite_nohq.paa
rename to addons/flashlights/data/textures/maglite_xl50_nohq.paa
diff --git a/addons/flashlights/data/Maglite_smdi.paa b/addons/flashlights/data/textures/maglite_xl50_smdi.paa
similarity index 100%
rename from addons/flashlights/data/Maglite_smdi.paa
rename to addons/flashlights/data/textures/maglite_xl50_smdi.paa
diff --git a/addons/flashlights/data/mx_991_co.paa b/addons/flashlights/data/textures/mx_991_co.paa
similarity index 100%
rename from addons/flashlights/data/mx_991_co.paa
rename to addons/flashlights/data/textures/mx_991_co.paa
diff --git a/addons/flashlights/data/MX_991_nohq.paa b/addons/flashlights/data/textures/mx_991_nohq.paa
similarity index 100%
rename from addons/flashlights/data/MX_991_nohq.paa
rename to addons/flashlights/data/textures/mx_991_nohq.paa
diff --git a/addons/flashlights/stringtable.xml b/addons/flashlights/stringtable.xml
index bd87c4e8470..913b688312b 100644
--- a/addons/flashlights/stringtable.xml
+++ b/addons/flashlights/stringtable.xml
@@ -103,5 +103,15 @@
Цвет подсветки карты
Cor da lanterna no mapa
+
+ Maglite ML300L
+ Maglite ML300L
+ Maglite ML300L
+
+
+ Powerful LED flashlight.
+ Leistungsstarke LED-Taschenlampe.
+ Mocna latarka LED.
+
diff --git a/extras/assets/maglite/maglite_animation.blend b/extras/assets/maglite/maglite_animation.blend
new file mode 100644
index 00000000000..1e1733b44d8
Binary files /dev/null and b/extras/assets/maglite/maglite_animation.blend differ