mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into compatPboWarnings
This commit is contained in:
commit
b0df31783d
2
.github/CONTRIBUTING.md
vendored
2
.github/CONTRIBUTING.md
vendored
@ -24,6 +24,6 @@ ACE2, AGM and CSE had a lot of features implemented or planned. All of them are
|
|||||||
Please refrain from making requests for any planned or existing features from either ACE2, AGM or CSE. Most of them are already being or have been considered for porting or a rewrite.
|
Please refrain from making requests for any planned or existing features from either ACE2, AGM or CSE. Most of them are already being or have been considered for porting or a rewrite.
|
||||||
|
|
||||||
## Requesting a feature
|
## Requesting a feature
|
||||||
In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/414). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
|
In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/3594). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
|
||||||
|
|
||||||
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.
|
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/acemod/ACE3/releases">
|
<a href="https://github.com/acemod/ACE3/releases">
|
||||||
<img src="https://img.shields.io/badge/Version-3.5.0-blue.svg?style=flat-square" alt="ACE3 Version">
|
<img src="https://img.shields.io/badge/Version-3.5.1-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/acemod/ACE3/issues">
|
<a href="https://github.com/acemod/ACE3/issues">
|
||||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
||||||
|
@ -1,29 +1,34 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(enabled) {
|
class GVAR(enabled) {
|
||||||
|
category = CSTRING(DisplayName);
|
||||||
displayName = CSTRING(enabled_DisplayName);
|
displayName = CSTRING(enabled_DisplayName);
|
||||||
description = CSTRING(enabled_Description);
|
description = CSTRING(enabled_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 0;
|
value = 0;
|
||||||
};
|
};
|
||||||
class GVAR(simulateForSnipers) {
|
class GVAR(simulateForSnipers) {
|
||||||
|
category = CSTRING(DisplayName);
|
||||||
displayName = CSTRING(simulateForSnipers_DisplayName);
|
displayName = CSTRING(simulateForSnipers_DisplayName);
|
||||||
description = CSTRING(simulateForSnipers_Description);
|
description = CSTRING(simulateForSnipers_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
class GVAR(simulateForGroupMembers) {
|
class GVAR(simulateForGroupMembers) {
|
||||||
|
category = CSTRING(DisplayName);
|
||||||
displayName = CSTRING(simulateForGroupMembers_DisplayName);
|
displayName = CSTRING(simulateForGroupMembers_DisplayName);
|
||||||
description = CSTRING(simulateForGroupMembers_Description);
|
description = CSTRING(simulateForGroupMembers_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 0;
|
value = 0;
|
||||||
};
|
};
|
||||||
class GVAR(simulateForEveryone) {
|
class GVAR(simulateForEveryone) {
|
||||||
|
category = CSTRING(DisplayName);
|
||||||
displayName = CSTRING(simulateForEveryone_DisplayName);
|
displayName = CSTRING(simulateForEveryone_DisplayName);
|
||||||
description = CSTRING(simulateForEveryone_Description);
|
description = CSTRING(simulateForEveryone_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 0;
|
value = 0;
|
||||||
};
|
};
|
||||||
class GVAR(disabledInFullAutoMode) {
|
class GVAR(disabledInFullAutoMode) {
|
||||||
|
category = CSTRING(DisplayName);
|
||||||
displayName = CSTRING(disabledInFullAutoMod_DisplayName);
|
displayName = CSTRING(disabledInFullAutoMod_DisplayName);
|
||||||
description = CSTRING(disabledInFullAutoMod_Description);
|
description = CSTRING(disabledInFullAutoMod_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
@ -31,6 +36,7 @@ class ACE_Settings {
|
|||||||
};
|
};
|
||||||
/* // TODO: We currently do not have firedEHs on vehicles
|
/* // TODO: We currently do not have firedEHs on vehicles
|
||||||
class GVAR(vehicleGunnerEnabled) {
|
class GVAR(vehicleGunnerEnabled) {
|
||||||
|
category = CSTRING(DisplayName);
|
||||||
displayName = "Enabled For Vehicle Gunners";
|
displayName = "Enabled For Vehicle Gunners";
|
||||||
description = "Enables advanced ballistics for vehicle gunners";
|
description = "Enables advanced ballistics for vehicle gunners";
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
@ -38,30 +44,35 @@ class ACE_Settings {
|
|||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
class GVAR(ammoTemperatureEnabled) {
|
class GVAR(ammoTemperatureEnabled) {
|
||||||
|
category = CSTRING(DisplayName);
|
||||||
displayName = CSTRING(ammoTemperatureEnabled_DisplayName);
|
displayName = CSTRING(ammoTemperatureEnabled_DisplayName);
|
||||||
description = CSTRING(ammoTemperatureEnabled_Description);
|
description = CSTRING(ammoTemperatureEnabled_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
class GVAR(barrelLengthInfluenceEnabled) {
|
class GVAR(barrelLengthInfluenceEnabled) {
|
||||||
|
category = CSTRING(DisplayName);
|
||||||
displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName);
|
displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName);
|
||||||
description = CSTRING(barrelLengthInfluenceEnabled_Description);
|
description = CSTRING(barrelLengthInfluenceEnabled_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
class GVAR(bulletTraceEnabled) {
|
class GVAR(bulletTraceEnabled) {
|
||||||
|
category = CSTRING(DisplayName);
|
||||||
displayName = CSTRING(bulletTraceEnabled_DisplayName);
|
displayName = CSTRING(bulletTraceEnabled_DisplayName);
|
||||||
description = CSTRING(bulletTraceEnabled_Description);
|
description = CSTRING(bulletTraceEnabled_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
class GVAR(simulationInterval) {
|
class GVAR(simulationInterval) {
|
||||||
|
category = CSTRING(DisplayName);
|
||||||
displayName = CSTRING(simulationInterval_DisplayName);
|
displayName = CSTRING(simulationInterval_DisplayName);
|
||||||
description = CSTRING(simulationInterval_Description);
|
description = CSTRING(simulationInterval_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0.0;
|
value = 0.0;
|
||||||
};
|
};
|
||||||
class GVAR(simulationRadius) {
|
class GVAR(simulationRadius) {
|
||||||
|
category = CSTRING(DisplayName);
|
||||||
displayName = CSTRING(simulationRadius_DisplayName);
|
displayName = CSTRING(simulationRadius_DisplayName);
|
||||||
description = CSTRING(simulationRadius_Description);
|
description = CSTRING(simulationRadius_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
|
@ -47,7 +47,7 @@ GVAR(Protractor) = true;
|
|||||||
__ctrl1 ctrlSetTextColor [1, 1, 1, 1];
|
__ctrl1 ctrlSetTextColor [1, 1, 1, 1];
|
||||||
|
|
||||||
__ctrl2 ctrlSetScale 1;
|
__ctrl2 ctrlSetScale 1;
|
||||||
__ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY + 0.001 - 0.0012 * (-58 max (asin((ACE_player weaponDirection currentWeapon ACE_player) select 2)) min 58), 0.2, 0.2 * 4/3];
|
__ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY - 0.001 - 0.1074 * (-0.86 max ((ACE_player weaponDirection currentWeapon ACE_player) select 2) min 0.86), 0.2, 0.2 * 4/3];
|
||||||
__ctrl2 ctrlCommit 0;
|
__ctrl2 ctrlCommit 0;
|
||||||
__ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa));
|
__ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa));
|
||||||
__ctrl2 ctrlSetTextColor [1, 1, 1, 1];
|
__ctrl2 ctrlSetTextColor [1, 1, 1, 1];
|
||||||
|
@ -444,6 +444,11 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
|
|||||||
// Add various canInteractWith conditions
|
// Add various canInteractWith conditions
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
|
["isNotDead", {
|
||||||
|
params ["_unit", "_target"];
|
||||||
|
alive _unit
|
||||||
|
}] call FUNC(addCanInteractWithCondition);
|
||||||
|
|
||||||
["notOnMap", {!visibleMap}] call FUNC(addCanInteractWithCondition);
|
["notOnMap", {!visibleMap}] call FUNC(addCanInteractWithCondition);
|
||||||
|
|
||||||
["isNotInside", {
|
["isNotInside", {
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(RequireSpecialist) {
|
class GVAR(RequireSpecialist) {
|
||||||
|
displayName = CSTRING(RequireSpecialist_DisplayName);
|
||||||
|
description = CSTRING(RequireSpecialist_Description);
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
class GVAR(PunishNonSpecialists) {
|
class GVAR(PunishNonSpecialists) {
|
||||||
|
displayName = CSTRING(PunishNonSpecialists_DisplayName);
|
||||||
|
description = CSTRING(PunishNonSpecialists_Description);
|
||||||
value = 1;
|
value = 1;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
|
@ -35,8 +35,8 @@ class CfgVehicles {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class Helicopter;
|
class Air;
|
||||||
class Helicopter_Base_F: Helicopter {
|
class Helicopter: Air {
|
||||||
class ACE_SelfActions {
|
class ACE_SelfActions {
|
||||||
class ACE_prepareFRIES {
|
class ACE_prepareFRIES {
|
||||||
displayName = CSTRING(Interaction_prepareFRIES);
|
displayName = CSTRING(Interaction_prepareFRIES);
|
||||||
@ -68,6 +68,8 @@ class CfgVehicles {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Helicopter_Base_F;
|
||||||
class ACE_friesBase: Helicopter_Base_F {
|
class ACE_friesBase: Helicopter_Base_F {
|
||||||
destrType = "";
|
destrType = "";
|
||||||
class Turrets {};
|
class Turrets {};
|
||||||
|
@ -32,10 +32,11 @@ _deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
detach _dummy;
|
//Destroy rope
|
||||||
deleteVehicle _ropeTop;
|
//Only delete the hook first so the rope falls down.
|
||||||
|
//Note: ropeDetach was used here before, but the command seems a bit broken.
|
||||||
deleteVehicle _hook;
|
deleteVehicle _hook;
|
||||||
[{{deleteVehicle _x} count _this}, [_ropeBottom, _dummy], 60] call EFUNC(common,waitAndExecute);
|
[{{deleteVehicle _x} count _this}, [_ropeTop, _ropeBottom, _dummy], 60] call EFUNC(common,waitAndExecute);
|
||||||
} count _deployedRopes;
|
} count _deployedRopes;
|
||||||
|
|
||||||
_vehicle setVariable [QGVAR(deployedRopes), [], true];
|
_vehicle setVariable [QGVAR(deployedRopes), [], true];
|
||||||
|
@ -35,14 +35,13 @@ _hookAttachment = _vehicle getVariable [QGVAR(FRIES), _vehicle];
|
|||||||
|
|
||||||
_origin = getPosATL _hook;
|
_origin = getPosATL _hook;
|
||||||
|
|
||||||
_dummy = createVehicle [QGVAR(helper), _origin, [], 0, "CAN_COLLIDE"];
|
_dummy = createVehicle [QGVAR(helper), _origin vectorAdd [0, 0, -1], [], 0, "CAN_COLLIDE"];
|
||||||
_dummy allowDamage false;
|
_dummy allowDamage false;
|
||||||
_dummy disableCollisionWith _vehicle;
|
_dummy disableCollisionWith _vehicle;
|
||||||
_dummy attachTo [_hook, [0, 0, 0]];
|
|
||||||
|
|
||||||
_ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5];
|
_ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5];
|
||||||
_ropeBottom = ropeCreate [_dummy, [0, 0, 0], 1];
|
_ropeBottom = ropeCreate [_dummy, [0, 0, 0], 1];
|
||||||
ropeUnwind [_ropeBottom, 30, 35, false];
|
ropeUnwind [_ropeBottom, 30, 34.5, false];
|
||||||
|
|
||||||
_ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}];
|
_ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}];
|
||||||
_ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}];
|
_ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}];
|
||||||
|
@ -26,7 +26,6 @@ if (vehicle _unit != _unit) exitWith {};
|
|||||||
|
|
||||||
//Start fast roping
|
//Start fast roping
|
||||||
if (animationState _unit != "ACE_FastRoping") exitWith {
|
if (animationState _unit != "ACE_FastRoping") exitWith {
|
||||||
detach _dummy;
|
|
||||||
_unit disableCollisionWith _dummy;
|
_unit disableCollisionWith _dummy;
|
||||||
_unit attachTo [_dummy, [0, 0, -1.45]];
|
_unit attachTo [_dummy, [0, 0, -1.45]];
|
||||||
[_unit, "ACE_FastRoping", 2] call EFUNC(common,doAnimation);
|
[_unit, "ACE_FastRoping", 2] call EFUNC(common,doAnimation);
|
||||||
|
@ -25,7 +25,7 @@ private ["_vectorUp", "_vectorDir", "_origin"];
|
|||||||
if (vehicle _unit != _unit) exitWith {};
|
if (vehicle _unit != _unit) exitWith {};
|
||||||
|
|
||||||
//Start fast roping
|
//Start fast roping
|
||||||
if (animationState _unit != "ACE_FastRoping") exitWith {
|
if (getMass _dummy != 80) exitWith {
|
||||||
//Fix for twitchyness
|
//Fix for twitchyness
|
||||||
_dummy setMass 80;
|
_dummy setMass 80;
|
||||||
_dummy setCenterOfMass [0, 0, -2];
|
_dummy setCenterOfMass [0, 0, -2];
|
||||||
@ -38,7 +38,9 @@ if (animationState _unit != "ACE_FastRoping") exitWith {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//Check if rope broke and unit is falling
|
//Check if rope broke and unit is falling
|
||||||
if (isNull attachedTo _unit) exitWith {
|
//Make sure this isn't executed before the unit is actually fastroping
|
||||||
|
//Note: Stretching ropes does not change ropeLength
|
||||||
|
if ((isNull attachedTo _unit) && {ropeLength _ropeTop > 0.5}) exitWith {
|
||||||
[_pfhHandle] call CBA_fnc_removePerFrameHandler;
|
[_pfhHandle] call CBA_fnc_removePerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -54,14 +56,14 @@ if (((getPos _unit select 2) < 0.2) || {ropeLength _ropeTop == 34.5} || {vectorM
|
|||||||
deleteVehicle _ropeBottom;
|
deleteVehicle _ropeBottom;
|
||||||
|
|
||||||
_origin = getPosASL _hook;
|
_origin = getPosASL _hook;
|
||||||
_dummy attachTo [_hook, [0, 0, 0]];
|
_dummy setPosASL (_origin vectorAdd [0, 0, -1]);
|
||||||
|
|
||||||
//Restore original mass and center of mass
|
//Restore original mass and center of mass
|
||||||
_dummy setMass 40;
|
_dummy setMass 40;
|
||||||
_dummy setCenterOfMass [0.000143227,0.00105986,-0.246147];
|
_dummy setCenterOfMass [0.000143227,0.00105986,-0.246147];
|
||||||
|
|
||||||
_ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5];
|
_ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5];
|
||||||
_ropeBottom = ropeCreate [_dummy, [0, 0, 0], 35];
|
_ropeBottom = ropeCreate [_dummy, [0, 0, 0], 34.5];
|
||||||
|
|
||||||
_ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}];
|
_ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}];
|
||||||
_ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}];
|
_ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}];
|
||||||
|
@ -45,6 +45,13 @@ GVAR(expanded) = false;
|
|||||||
|
|
||||||
GVAR(startHoverTime) = ACE_diagTime;
|
GVAR(startHoverTime) = ACE_diagTime;
|
||||||
GVAR(expandedTime) = ACE_diagTime;
|
GVAR(expandedTime) = ACE_diagTime;
|
||||||
|
|
||||||
|
// reset on mission load
|
||||||
|
addMissionEventHandler ["Loaded", {
|
||||||
|
GVAR(startHoverTime) = 0;
|
||||||
|
GVAR(expandedTime) = 0;
|
||||||
|
}];
|
||||||
|
|
||||||
GVAR(iconCtrls) = [];
|
GVAR(iconCtrls) = [];
|
||||||
GVAR(iconCount) = 0;
|
GVAR(iconCount) = 0;
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
|
|
||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(EnableTeamManagement) {
|
class GVAR(EnableTeamManagement) {
|
||||||
|
displayName = CSTRING(EnableTeamManagement_DisplayName);
|
||||||
|
description = CSTRING(EnableTeamManagement_Description);
|
||||||
value = 1;
|
value = 1;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#define MAJOR 3
|
#define MAJOR 3
|
||||||
#define MINOR 5
|
#define MINOR 5
|
||||||
#define PATCHLVL 0
|
#define PATCHLVL 1
|
||||||
#define BUILD 0
|
#define BUILD 0
|
||||||
|
|
||||||
#define VERSION MAJOR.MINOR.PATCHLVL.BUILD
|
#define VERSION MAJOR.MINOR.PATCHLVL.BUILD
|
||||||
|
@ -1366,7 +1366,7 @@ class ACE_Medical_Advanced {
|
|||||||
timeInSystem = 900;
|
timeInSystem = 900;
|
||||||
maxDose = 4;
|
maxDose = 4;
|
||||||
inCompatableMedication[] = {};
|
inCompatableMedication[] = {};
|
||||||
viscosityChange = 10;
|
viscosityChange = -10;
|
||||||
};
|
};
|
||||||
class Epinephrine {
|
class Epinephrine {
|
||||||
painReduce = 0;
|
painReduce = 0;
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(level) {
|
class GVAR(level) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_level_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_level_Description);
|
||||||
value = 1;
|
value = 1;
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
values[] = {"Disabled", "Basic", "Advanced"};
|
values[] = {"Disabled", "Basic", "Advanced"};
|
||||||
};
|
};
|
||||||
class GVAR(medicSetting) {
|
class GVAR(medicSetting) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_medicSetting_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_medicSetting_Description);
|
||||||
value = 1;
|
value = 1;
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
values[] = {"Disabled", "Normal", "Advanced"};
|
values[] = {"Disabled", "Normal", "Advanced"};
|
||||||
@ -20,6 +24,8 @@ class ACE_Settings {
|
|||||||
};
|
};
|
||||||
class GVAR(enableFor) {
|
class GVAR(enableFor) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(AdvancedMedicalSettings_enableFor_DisplayName);
|
||||||
|
description = CSTRING(AdvancedMedicalSettings_enableFor_Description);
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
values[] = {"Players only", "Players and AI"};
|
values[] = {"Players only", "Players and AI"};
|
||||||
@ -31,11 +37,15 @@ class ACE_Settings {
|
|||||||
};
|
};
|
||||||
class GVAR(bleedingCoefficient) {
|
class GVAR(bleedingCoefficient) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_bleedingCoefficient_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_bleedingCoefficient_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
class GVAR(painCoefficient) {
|
class GVAR(painCoefficient) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_painCoefficient_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_painCoefficient_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
@ -51,58 +61,80 @@ class ACE_Settings {
|
|||||||
};
|
};
|
||||||
class GVAR(enableAdvancedWounds) {
|
class GVAR(enableAdvancedWounds) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_DisplayName);
|
||||||
|
description = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = false;
|
value = false;
|
||||||
};
|
};
|
||||||
class GVAR(enableVehicleCrashes) {
|
class GVAR(enableVehicleCrashes) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_DisplayName);
|
||||||
|
description = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
class GVAR(enableScreams) {
|
class GVAR(enableScreams) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_enableScreams_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_enableScreams_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
class GVAR(playerDamageThreshold) {
|
class GVAR(playerDamageThreshold) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_playerDamageThreshold_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_playerDamageThreshold_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
class GVAR(AIDamageThreshold) {
|
class GVAR(AIDamageThreshold) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_AIDamageThreshold_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_AIDamageThreshold_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
class GVAR(enableUnconsciousnessAI) {
|
class GVAR(enableUnconsciousnessAI) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_enableUnconsciousnessAI_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_enableUnconsciousnessAI_Description);
|
||||||
value = 1;
|
value = 1;
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
values[] = {"Disabled", "50/50", "Enabled"};
|
values[] = {"Disabled", "50/50", "Enabled"};
|
||||||
};
|
};
|
||||||
class GVAR(remoteControlledAI) {
|
class GVAR(remoteControlledAI) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_remoteControlledAI_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_remoteControlledAI_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
class GVAR(preventInstaDeath) {
|
class GVAR(preventInstaDeath) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_preventInstaDeath_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_preventInstaDeath_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 0;
|
value = 0;
|
||||||
};
|
};
|
||||||
class GVAR(enableRevive) {
|
class GVAR(enableRevive) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(ReviveSettings_enableRevive_DisplayName);
|
||||||
|
description = CSTRING(ReviveSettings_enableRevive_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0;
|
value = 0;
|
||||||
values[] = {"Disabled", "Players only", "Players and AI"};
|
values[] = {"Disabled", "Players only", "Players and AI"};
|
||||||
};
|
};
|
||||||
class GVAR(maxReviveTime) {
|
class GVAR(maxReviveTime) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(ReviveSettings_maxReviveTime_DisplayName);
|
||||||
|
description = CSTRING(ReviveSettings_maxReviveTime_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 120;
|
value = 120;
|
||||||
};
|
};
|
||||||
class GVAR(amountOfReviveLives) {
|
class GVAR(amountOfReviveLives) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(ReviveSettings_amountOfReviveLives_DisplayName);
|
||||||
|
description = CSTRING(ReviveSettings_amountOfReviveLives_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = -1;
|
value = -1;
|
||||||
};
|
};
|
||||||
@ -113,6 +145,8 @@ class ACE_Settings {
|
|||||||
};
|
};
|
||||||
class GVAR(allowLitterCreation) {
|
class GVAR(allowLitterCreation) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_allowLitterCreation_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_allowLitterCreation_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
@ -130,53 +164,71 @@ class ACE_Settings {
|
|||||||
};
|
};
|
||||||
class GVAR(litterCleanUpDelay) {
|
class GVAR(litterCleanUpDelay) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_litterCleanUpDelay_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_litterCleanUpDelay_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0;
|
value = 0;
|
||||||
};
|
};
|
||||||
class GVAR(medicSetting_basicEpi) {
|
class GVAR(medicSetting_basicEpi) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_DisplayName);
|
||||||
|
description = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 1;
|
value = 1;
|
||||||
values[] = {"Anyone", "Medics only", "Doctors only"};
|
values[] = {"Anyone", "Medics only", "Doctors only"};
|
||||||
};
|
};
|
||||||
class GVAR(medicSetting_PAK) {
|
class GVAR(medicSetting_PAK) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_DisplayName);
|
||||||
|
description = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 1;
|
value = 1;
|
||||||
values[] = {"Anyone", "Medics only", "Doctors only"};
|
values[] = {"Anyone", "Medics only", "Doctors only"};
|
||||||
};
|
};
|
||||||
class GVAR(medicSetting_SurgicalKit) {
|
class GVAR(medicSetting_SurgicalKit) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName);
|
||||||
|
description = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 1;
|
value = 1;
|
||||||
values[] = {"Anyone", "Medics only", "Doctors only"};
|
values[] = {"Anyone", "Medics only", "Doctors only"};
|
||||||
};
|
};
|
||||||
class GVAR(consumeItem_PAK) {
|
class GVAR(consumeItem_PAK) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_DisplayName);
|
||||||
|
description = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0;
|
value = 0;
|
||||||
values[] = {"No", "Yes"};
|
values[] = {"No", "Yes"};
|
||||||
};
|
};
|
||||||
class GVAR(consumeItem_SurgicalKit) {
|
class GVAR(consumeItem_SurgicalKit) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName);
|
||||||
|
description = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0;
|
value = 0;
|
||||||
values[] = {"No", "Yes"};
|
values[] = {"No", "Yes"};
|
||||||
};
|
};
|
||||||
class GVAR(useLocation_basicEpi) {
|
class GVAR(useLocation_basicEpi) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(BasicMedicalSettings_useLocation_basicEpi_DisplayName);
|
||||||
|
description = CSTRING(BasicMedicalSettings_useLocation_basicEpi_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0;
|
value = 0;
|
||||||
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
|
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
|
||||||
};
|
};
|
||||||
class GVAR(useLocation_PAK) {
|
class GVAR(useLocation_PAK) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(AdvancedMedicalSettings_useLocation_PAK_DisplayName);
|
||||||
|
description = CSTRING(AdvancedMedicalSettings_useLocation_PAK_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 3;
|
value = 3;
|
||||||
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
|
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
|
||||||
};
|
};
|
||||||
class GVAR(useLocation_SurgicalKit) {
|
class GVAR(useLocation_SurgicalKit) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName);
|
||||||
|
description = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 2;
|
value = 2;
|
||||||
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
|
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
|
||||||
@ -199,18 +251,22 @@ class ACE_Settings {
|
|||||||
};
|
};
|
||||||
class GVAR(keepLocalSettingsSynced) {
|
class GVAR(keepLocalSettingsSynced) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
|
displayName = CSTRING(MedicalSettings_keepLocalSettingsSynced_DisplayName);
|
||||||
|
description = CSTRING(MedicalSettings_keepLocalSettingsSynced_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
class GVAR(healHitPointAfterAdvBandage) {
|
class GVAR(healHitPointAfterAdvBandage) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
displayName = CSTRING(healHitPointAfterAdvBandage);
|
displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName);
|
||||||
|
description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 0;
|
value = 0;
|
||||||
};
|
};
|
||||||
class GVAR(painIsOnlySuppressed) {
|
class GVAR(painIsOnlySuppressed) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
displayName = CSTRING(painIsOnlySuppressed);
|
displayName = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName);
|
||||||
|
description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
};
|
};
|
||||||
@ -232,7 +288,6 @@ class ACE_Settings {
|
|||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 0;
|
value = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(menuTypeStyle) {
|
class GVAR(menuTypeStyle) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
displayName = CSTRING(menuTypeDisplay);
|
displayName = CSTRING(menuTypeDisplay);
|
||||||
@ -242,7 +297,6 @@ class ACE_Settings {
|
|||||||
values[] = {CSTRING(useSelection), CSTRING(useRadial), "Disabled"};
|
values[] = {CSTRING(useSelection), CSTRING(useRadial), "Disabled"};
|
||||||
isClientSettable = 1;
|
isClientSettable = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GVAR(delayUnconCaptive) {
|
class GVAR(delayUnconCaptive) {
|
||||||
category = CSTRING(Category_Medical);
|
category = CSTRING(Category_Medical);
|
||||||
displayName = CSTRING(MedicalSettings_delayUnconCaptive_DisplayName);
|
displayName = CSTRING(MedicalSettings_delayUnconCaptive_DisplayName);
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(MapDataAvailable) {
|
class GVAR(MapDataAvailable) {
|
||||||
|
displayName = CSTRING(MapDataAvailable_DisplayName);
|
||||||
|
description = CSTRING(MapDataAvailable_Description);
|
||||||
value = 2;
|
value = 2;
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
isClientSettable = 0;
|
isClientSettable = 0;
|
||||||
|
values[] = {CSTRING(MapFill_None), CSTRING(MapFill_OnlyRoads), CSTRING(MapFill_Full)};
|
||||||
};
|
};
|
||||||
};
|
};
|
@ -1,21 +1,29 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
//These settings effect gameplay difficutly: defaults will leave the mortar the same as vanilla
|
//These settings effect gameplay difficutly: defaults will leave the mortar the same as vanilla
|
||||||
class GVAR(airResistanceEnabled) {
|
class GVAR(airResistanceEnabled) {
|
||||||
|
displayName = CSTRING(airResistanceEnabled_DisplayName);
|
||||||
|
description = CSTRING(airResistanceEnabled_Description);
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
isClientSetable = 0;
|
isClientSetable = 0;
|
||||||
};
|
};
|
||||||
class GVAR(allowComputerRangefinder) {
|
class GVAR(allowComputerRangefinder) {
|
||||||
|
displayName = CSTRING(allowComputerRangefinder_DisplayName);
|
||||||
|
description = CSTRING(allowComputerRangefinder_Description);
|
||||||
value = 1;
|
value = 1;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
isClientSetable = 0;
|
isClientSetable = 0;
|
||||||
};
|
};
|
||||||
class GVAR(allowCompass) {
|
class GVAR(allowCompass) {
|
||||||
|
displayName = CSTRING(allowCompass_DisplayName);
|
||||||
|
description = CSTRING(allowCompass_Description);
|
||||||
value = 1;
|
value = 1;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
isClientSetable = 0;
|
isClientSetable = 0;
|
||||||
};
|
};
|
||||||
class GVAR(useAmmoHandling) {
|
class GVAR(useAmmoHandling) {
|
||||||
|
displayName = CSTRING(useAmmoHandling_DisplayName);
|
||||||
|
description = CSTRING(useAmmoHandling_Description);
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
isClientSetable = 0;
|
isClientSetable = 0;
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
_static setMagazineTurretAmmo [_magazine, _ammoCount, [0]];
|
_static setMagazineTurretAmmo [_magazine, _ammoCount, [0]];
|
||||||
}] call EFUNC(common,addEventHandler);
|
}] call EFUNC(common,addEventHandler);
|
||||||
|
|
||||||
|
["initMortar", {_this call FUNC(mortarInit);}] call EFUNC(common,addEventHandler);
|
||||||
|
|
||||||
if (!hasInterface) exitWith {};
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
["playerVehicleChanged", {_this call FUNC(handlePlayerVehicleChanged);}] call EFUNC(common,addEventHandler);
|
["playerVehicleChanged", {_this call FUNC(handlePlayerVehicleChanged);}] call EFUNC(common,addEventHandler);
|
||||||
|
@ -16,31 +16,30 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
PARAMS_2(_player,_newVehicle);
|
params ["_player", "_newVehicle"];
|
||||||
|
|
||||||
private["_tubeWeaponName" ,"_fireModes", "_lastFireMode"];
|
|
||||||
|
|
||||||
if (isNull _newVehicle) exitWith {};
|
if (isNull _newVehicle) exitWith {};
|
||||||
if (!(_newVehicle isKindOf "Mortar_01_base_F")) exitWith {};
|
if (!(_newVehicle isKindOf "Mortar_01_base_F")) exitWith {};
|
||||||
|
|
||||||
// Run magazine handling initialization if enabled
|
// Run magazine handling initialization if enabled
|
||||||
if (!EGVAR(common,settingsInitFinished)) then {
|
if (!(_newVehicle getVariable [QGVAR(initialized),false]) && !(_newVehicle getVariable [QGVAR(exclude),false])) then {
|
||||||
EGVAR(common,runAtSettingsInitialized) pushBack [{
|
// Make sure that mortar init is executed after settings init
|
||||||
if (GVAR(useAmmoHandling) && {!(_this getVariable [QGVAR(initialized),false]) && !(_this getVariable [QGVAR(exclude),false])}) then {
|
[{
|
||||||
_this call FUNC(mortarInit);
|
params ["_mortar"];
|
||||||
};
|
if (GVAR(useAmmoHandling) && {!(_mortar getVariable [QGVAR(initialized),false]) && !(_mortar getVariable [QGVAR(exclude),false])}) then {
|
||||||
}, _newVehicle];
|
//wait for proper turret locality change
|
||||||
} else {
|
[{
|
||||||
if (GVAR(useAmmoHandling) && {!(_newVehicle getVariable [QGVAR(initialized),false]) && !(_newVehicle getVariable [QGVAR(exclude),false])}) then {
|
["initMortar", [_this], [_this]] call EFUNC(common,globalEvent);
|
||||||
_newVehicle call FUNC(mortarInit);
|
}, _mortar, 0.05] call EFUNC(common,waitAndExecute);
|
||||||
};
|
};
|
||||||
|
}, _newVehicle] call EFUNC(common,runAfterSettingsInit);
|
||||||
};
|
};
|
||||||
|
|
||||||
_tubeWeaponName = (weapons _newVehicle) select 0;
|
private _tubeWeaponName = (weapons _newVehicle) select 0;
|
||||||
_fireModes = getArray (configFile >> "CfgWeapons" >> _tubeWeaponName >> "modes");
|
private _fireModes = getArray (configFile >> "CfgWeapons" >> _tubeWeaponName >> "modes");
|
||||||
|
|
||||||
//Restore last firemode:
|
//Restore last firemode:
|
||||||
_lastFireMode = _newVehicle getVariable [QGVAR(lastFireMode), -1];
|
private _lastFireMode = _newVehicle getVariable [QGVAR(lastFireMode), -1];
|
||||||
if (_lastFireMode != -1) then {
|
if (_lastFireMode != -1) then {
|
||||||
_player action ["SwitchWeapon", _newVehicle, _player, _lastFireMode];
|
_player action ["SwitchWeapon", _newVehicle, _player, _lastFireMode];
|
||||||
};
|
};
|
||||||
|
@ -18,15 +18,16 @@
|
|||||||
params ["_mortar"];
|
params ["_mortar"];
|
||||||
|
|
||||||
if (_mortar getVariable [QGVAR(initialized),false] || _mortar getVariable [QGVAR(exclude),false]) exitWith {TRACE_1("Exit",_mortar)};
|
if (_mortar getVariable [QGVAR(initialized),false] || _mortar getVariable [QGVAR(exclude),false]) exitWith {TRACE_1("Exit",_mortar)};
|
||||||
|
if (!(_mortar turretLocal [0])) exitWith {TRACE_1("Exit - turret not local",_mortar)};
|
||||||
|
|
||||||
// Remove all magazines
|
// Remove all magazines from turret
|
||||||
if (count magazines _mortar > 0) then {
|
if (count magazines _mortar > 0) then {
|
||||||
{
|
{
|
||||||
[QGVAR(removeMagazine), [_mortar, _x]] call EFUNC(common,globalEvent);
|
_mortar removeMagazineTurret [_x,[0]];
|
||||||
} forEach magazines _mortar;
|
} forEach magazines _mortar;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Replace current weapon with ammo handling weapon
|
// Replace current turret weapon with ammo handling weapon
|
||||||
private _currentWeapon = _mortar weaponsTurret [0] select 0;
|
private _currentWeapon = _mortar weaponsTurret [0] select 0;
|
||||||
private _newWeapon = "";
|
private _newWeapon = "";
|
||||||
|
|
||||||
@ -37,8 +38,8 @@ if (_currentWeapon == "mortar_82mm") then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (_newWeapon != "") then {
|
if (_newWeapon != "") then {
|
||||||
_mortar removeWeaponGlobal _currentWeapon;
|
_mortar removeWeaponTurret [_currentWeapon,[0]];
|
||||||
_mortar addWeaponGlobal _newWeapon;
|
_mortar addWeaponTurret [_newWeapon,[0]];
|
||||||
};
|
};
|
||||||
|
|
||||||
_mortar setVariable [QGVAR(initialized),true,true];
|
_mortar setVariable [QGVAR(initialized),true,true];
|
||||||
|
@ -36,7 +36,7 @@ _fnc_parameters = {
|
|||||||
_icon = format [QUOTE(PATHTOF(UI\soundwave%1.paa)), floor random 10];
|
_icon = format [QUOTE(PATHTOF(UI\soundwave%1.paa)), floor random 10];
|
||||||
_size = 1;
|
_size = 1;
|
||||||
} else {
|
} else {
|
||||||
if (_drawRank) then {
|
if (_drawRank && {rank _target != ""}) then {
|
||||||
_icon = format["\A3\Ui_f\data\GUI\Cfg\Ranks\%1_gs.paa", toLower rank _target];
|
_icon = format["\A3\Ui_f\data\GUI\Cfg\Ranks\%1_gs.paa", toLower rank _target];
|
||||||
_size = 1;
|
_size = 1;
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(level) {
|
class GVAR(level) {
|
||||||
|
category = ECSTRING(OptionsMenu,CategoryLogistics);
|
||||||
displayName = CSTRING(RearmSettings_level_DisplayName);
|
displayName = CSTRING(RearmSettings_level_DisplayName);
|
||||||
description = CSTRING(RearmSettings_level_Description);
|
description = CSTRING(RearmSettings_level_Description);
|
||||||
value = 0;
|
value = 0;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(rate) {
|
class GVAR(rate) {
|
||||||
|
category = ECSTRING(OptionsMenu,CategoryLogistics);
|
||||||
displayName = CSTRING(RefuelSettings_speed_DisplayName);
|
displayName = CSTRING(RefuelSettings_speed_DisplayName);
|
||||||
description = CSTRING(RefuelSettings_speed_Description);
|
description = CSTRING(RefuelSettings_speed_Description);
|
||||||
value = 1;
|
value = 1;
|
||||||
|
@ -1,10 +1,14 @@
|
|||||||
|
|
||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(SavePreDeathGear) {
|
class GVAR(SavePreDeathGear) {
|
||||||
|
displayName = CSTRING(SavePreDeathGear_DisplayName);
|
||||||
|
description = CSTRING(SavePreDeathGear_Description);
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
class GVAR(RemoveDeadBodiesDisconnected) {
|
class GVAR(RemoveDeadBodiesDisconnected) {
|
||||||
|
displayName = CSTRING(RemoveDeadBodiesDisconnected_DisplayName);
|
||||||
|
description = CSTRING(RemoveDeadBodiesDisconnected_Description);
|
||||||
value = 1;
|
value = 1;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
|
@ -1,20 +1,28 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(filterUnits) {
|
class GVAR(filterUnits) {
|
||||||
|
displayName = CSTRING(units_DisplayName);
|
||||||
|
description = CSTRING(units_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 2;
|
value = 2;
|
||||||
values[] = {CSTRING(units_none), CSTRING(units_players), CSTRING(units_playable), CSTRING(units_all)};
|
values[] = {CSTRING(units_none), CSTRING(units_players), CSTRING(units_playable), CSTRING(units_all)};
|
||||||
};
|
};
|
||||||
class GVAR(filterSides) {
|
class GVAR(filterSides) {
|
||||||
|
displayName = CSTRING(sides_DisplayName);
|
||||||
|
description = CSTRING(sides_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0;
|
value = 0;
|
||||||
values[] = {CSTRING(sides_player), CSTRING(sides_friendly), CSTRING(sides_hostile), CSTRING(sides_all)};
|
values[] = {CSTRING(sides_player), CSTRING(sides_friendly), CSTRING(sides_hostile), CSTRING(sides_all)};
|
||||||
};
|
};
|
||||||
class GVAR(restrictModes) {
|
class GVAR(restrictModes) {
|
||||||
|
displayName = CSTRING(modes_DisplayName);
|
||||||
|
description = CSTRING(modes_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0;
|
value = 0;
|
||||||
values[] = {CSTRING(modes_all), CSTRING(modes_unit), CSTRING(modes_free), CSTRING(modes_internal), CSTRING(modes_external)};
|
values[] = {CSTRING(modes_all), CSTRING(modes_unit), CSTRING(modes_free), CSTRING(modes_internal), CSTRING(modes_external)};
|
||||||
};
|
};
|
||||||
class GVAR(restrictVisions) {
|
class GVAR(restrictVisions) {
|
||||||
|
displayName = CSTRING(visions_DisplayName);
|
||||||
|
description = CSTRING(visions_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0;
|
value = 0;
|
||||||
values[] = {CSTRING(modes_all), CSTRING(visions_nv), CSTRING(visions_ti), "$STR_Special_None"};
|
values[] = {CSTRING(modes_all), CSTRING(visions_nv), CSTRING(visions_ti), "$STR_Special_None"};
|
||||||
|
@ -4,26 +4,38 @@ class ACE_Settings {
|
|||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
class GVAR(SwitchToWest) {
|
class GVAR(SwitchToWest) {
|
||||||
|
displayName = CSTRING(SwitchToWest_DisplayName);
|
||||||
|
description = CSTRING(SwitchToWest_Description);
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
class GVAR(SwitchToEast) {
|
class GVAR(SwitchToEast) {
|
||||||
|
displayName = CSTRING(SwitchToEast_DisplayName);
|
||||||
|
description = CSTRING(SwitchToEast_Description);
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
class GVAR(SwitchToIndependent) {
|
class GVAR(SwitchToIndependent) {
|
||||||
|
displayName = CSTRING(SwitchToIndependent_DisplayName);
|
||||||
|
description = CSTRING(SwitchToIndependent_Description);
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
class GVAR(SwitchToCivilian) {
|
class GVAR(SwitchToCivilian) {
|
||||||
|
displayName = CSTRING(SwitchToCivilian_DisplayName);
|
||||||
|
description = CSTRING(SwitchToCivilian_Description);
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
class GVAR(EnableSafeZone) {
|
class GVAR(EnableSafeZone) {
|
||||||
|
displayName = CSTRING(EnableSafeZone_DisplayName);
|
||||||
|
description = CSTRING(EnableSafeZone_Description);
|
||||||
value = 1;
|
value = 1;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
class GVAR(SafeZoneRadius) {
|
class GVAR(SafeZoneRadius) {
|
||||||
|
displayName = CSTRING(SafeZoneRadius_DisplayName);
|
||||||
|
description = CSTRING(SafeZoneRadius_Description);
|
||||||
value = 100;
|
value = 100;
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
};
|
};
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
_fnc_isLeaning = {
|
GVAR(tagsToTest) = GVAR(tagsToTest) select {
|
||||||
params ["_tag", "_tagPosASL", "_vectorDirAndUp"];
|
params ["_tag", "_tagPosASL", "_vectorDirAndUp"];
|
||||||
|
|
||||||
_vectorDirAndUp params ["_v1", "_v2"];
|
_vectorDirAndUp params ["_v1", "_v2"];
|
||||||
@ -34,7 +34,6 @@ _fnc_isLeaning = {
|
|||||||
};
|
};
|
||||||
true
|
true
|
||||||
};
|
};
|
||||||
GVAR(tagsToTest) = [GVAR(tagsToTest), _fnc_isLeaning] call EFUNC(common,filter);
|
|
||||||
|
|
||||||
// If there's no more tag
|
// If there's no more tag
|
||||||
if (GVAR(tagsToTest) isEqualTo []) exitWith {
|
if (GVAR(tagsToTest) isEqualTo []) exitWith {
|
||||||
|
@ -1,13 +1,19 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(DefaultLockpickStrength) {
|
class GVAR(DefaultLockpickStrength) {
|
||||||
|
displayName = CSTRING(DefaultLockpickStrength_DisplayName);
|
||||||
|
description = CSTRING(DefaultLockpickStrength_Description);
|
||||||
value = 10;
|
value = 10;
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
};
|
};
|
||||||
class GVAR(LockVehicleInventory) {
|
class GVAR(LockVehicleInventory) {
|
||||||
|
displayName = CSTRING(LockVehicleInventory_DisplayName);
|
||||||
|
description = CSTRING(LockVehicleInventory_Description);
|
||||||
value = 0;
|
value = 0;
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
};
|
};
|
||||||
class GVAR(VehicleStartingLockState) {
|
class GVAR(VehicleStartingLockState) {
|
||||||
|
displayName = CSTRING(VehicleStartingLockState_DisplayName);
|
||||||
|
description = CSTRING(VehicleStartingLockState_Description);
|
||||||
value = -1;
|
value = -1;
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
};
|
};
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(enabled) {
|
class GVAR(enabled) {
|
||||||
|
category = CSTRING(Module_DisplayName);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 1;
|
value = 1;
|
||||||
displayName = CSTRING(enabled_DisplayName);
|
displayName = CSTRING(enabled_DisplayName);
|
||||||
description = CSTRING(enabled_Description);
|
description = CSTRING(enabled_Description);
|
||||||
};
|
};
|
||||||
class GVAR(viewDistanceOnFoot) {
|
class GVAR(viewDistanceOnFoot) {
|
||||||
|
category = CSTRING(Module_DisplayName);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
isClientSettable = 1;
|
isClientSettable = 1;
|
||||||
value = 0; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever).
|
value = 0; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever).
|
||||||
@ -14,6 +16,7 @@ class ACE_Settings {
|
|||||||
description = CSTRING(onFoot_Description);
|
description = CSTRING(onFoot_Description);
|
||||||
};
|
};
|
||||||
class GVAR(viewDistanceLandVehicle) {
|
class GVAR(viewDistanceLandVehicle) {
|
||||||
|
category = CSTRING(Module_DisplayName);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
isClientSettable = 1;
|
isClientSettable = 1;
|
||||||
value = 0; // index, NOT value
|
value = 0; // index, NOT value
|
||||||
@ -22,6 +25,7 @@ class ACE_Settings {
|
|||||||
description = CSTRING(landVehicle_Description);
|
description = CSTRING(landVehicle_Description);
|
||||||
};
|
};
|
||||||
class GVAR(viewDistanceAirVehicle) {
|
class GVAR(viewDistanceAirVehicle) {
|
||||||
|
category = CSTRING(Module_DisplayName);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
isClientSettable = 1;
|
isClientSettable = 1;
|
||||||
value = 0; // index, NOT value
|
value = 0; // index, NOT value
|
||||||
@ -30,12 +34,14 @@ class ACE_Settings {
|
|||||||
description = CSTRING(airVehicle_Description);
|
description = CSTRING(airVehicle_Description);
|
||||||
};
|
};
|
||||||
class GVAR(limitViewDistance) {
|
class GVAR(limitViewDistance) {
|
||||||
|
category = CSTRING(Module_DisplayName);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 10000; // Value, NOT index. 10000 is the maximum in A3
|
value = 10000; // Value, NOT index. 10000 is the maximum in A3
|
||||||
displayName = CSTRING(limit_DisplayName);
|
displayName = CSTRING(limit_DisplayName);
|
||||||
description = CSTRING(limit_setting);
|
description = CSTRING(limit_setting);
|
||||||
};
|
};
|
||||||
class GVAR(objectViewDistanceCoeff) {
|
class GVAR(objectViewDistanceCoeff) {
|
||||||
|
category = CSTRING(Module_DisplayName);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
isClientSettable = 1;
|
isClientSettable = 1;
|
||||||
value = 0; // index. Actual coefficient is given by functions/fnc_returnObjectCoeff.sqf
|
value = 0; // index. Actual coefficient is given by functions/fnc_returnObjectCoeff.sqf
|
||||||
|
@ -1,21 +1,31 @@
|
|||||||
class ACE_Settings {
|
class ACE_Settings {
|
||||||
class GVAR(zeusAscension) {
|
class GVAR(zeusAscension) {
|
||||||
|
displayName = CSTRING(ascension_DisplayName);
|
||||||
|
description = CSTRING(ascension_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 0;
|
value = 0;
|
||||||
};
|
};
|
||||||
class GVAR(zeusBird) {
|
class GVAR(zeusBird) {
|
||||||
|
displayName = CSTRING(bird_DisplayName);
|
||||||
|
description = CSTRING(bird_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 0;
|
value = 0;
|
||||||
};
|
};
|
||||||
class GVAR(remoteWind) {
|
class GVAR(remoteWind) {
|
||||||
|
displayName = CSTRING(remoteWind_DisplayName);
|
||||||
|
description = CSTRING(remoteWind_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 0;
|
value = 0;
|
||||||
};
|
};
|
||||||
class GVAR(radioOrdnance) {
|
class GVAR(radioOrdnance) {
|
||||||
|
displayName = CSTRING(radioOrdnance_DisplayName);
|
||||||
|
description = CSTRING(radioOrdnance_Description);
|
||||||
typeName = "BOOL";
|
typeName = "BOOL";
|
||||||
value = 0;
|
value = 0;
|
||||||
};
|
};
|
||||||
class GVAR(revealMines) {
|
class GVAR(revealMines) {
|
||||||
|
displayName = CSTRING(revealMines_DisplayName);
|
||||||
|
description = CSTRING(revealMines_Description);
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0;
|
value = 0;
|
||||||
values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(revealMines_partial), CSTRING(revealMines_full)};
|
values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(revealMines_partial), CSTRING(revealMines_full)};
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/acemod/ACE3/releases">
|
<a href="https://github.com/acemod/ACE3/releases">
|
||||||
<img src="https://img.shields.io/badge/Version-3.5.0-blue.svg?style=flat-square" alt="ACE3 Version">
|
<img src="https://img.shields.io/badge/Version-3.5.1-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/acemod/ACE3/issues">
|
<a href="https://github.com/acemod/ACE3/issues">
|
||||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Fehlermeldungen">
|
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Fehlermeldungen">
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/acemod/ACE3/releases">
|
<a href="https://github.com/acemod/ACE3/releases">
|
||||||
<img src="https://img.shields.io/badge/Wersja-3.5.0-blue.svg?style=flat-square" alt="ACE3 Wersja">
|
<img src="https://img.shields.io/badge/Wersja-3.5.1-blue.svg?style=flat-square" alt="ACE3 Wersja">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/acemod/ACE3/issues">
|
<a href="https://github.com/acemod/ACE3/issues">
|
||||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Zagadnienia&style=flat-square" alt="ACE3 Zagadnienia">
|
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Zagadnienia&style=flat-square" alt="ACE3 Zagadnienia">
|
||||||
|
4
mod.cpp
4
mod.cpp
@ -1,8 +1,8 @@
|
|||||||
name = "Advanced Combat Environment 3.5.0";
|
name = "Advanced Combat Environment 3.5.1";
|
||||||
picture = "logo_ace3_ca.paa";
|
picture = "logo_ace3_ca.paa";
|
||||||
actionName = "GitHub";
|
actionName = "GitHub";
|
||||||
action = "https://github.com/acemod/ACE3";
|
action = "https://github.com/acemod/ACE3";
|
||||||
description = "ACE3 - Version 3.5.0";
|
description = "ACE3 - Version 3.5.1";
|
||||||
logo = "logo_ace3_ca.paa";
|
logo = "logo_ace3_ca.paa";
|
||||||
logoOver = "logo_ace3_ca.paa";
|
logoOver = "logo_ace3_ca.paa";
|
||||||
tooltip = "ACE3";
|
tooltip = "ACE3";
|
||||||
|
Loading…
Reference in New Issue
Block a user