mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
commit
dfc14025a7
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@ release/*
|
||||
texHeaders.bin
|
||||
*.swp
|
||||
*.swo
|
||||
*.biprivatekey
|
||||
|
@ -17,7 +17,7 @@ Janus
|
||||
Kieran
|
||||
NouberNou
|
||||
PabstMirror <pabstmirror@gmail.com>
|
||||
Ruthberg
|
||||
Ruthberg <ulteq@web.de>
|
||||
tpM
|
||||
ViperMaul
|
||||
VKing <kauestad@gmail.com>
|
||||
@ -33,6 +33,7 @@ Aggr094 <bastards4glory@gmail.com>
|
||||
Anthariel <Contact@storm-simulation.com>
|
||||
BlackQwar
|
||||
Brakoviejo
|
||||
Brisse <brisse@outlook.com>
|
||||
Clon1998 <ps.patti1998@gmail.com>
|
||||
Codingboy
|
||||
Crusty
|
||||
@ -69,7 +70,7 @@ Raspu86
|
||||
Riccardo Petricca <petriccarcc@gmail.com>
|
||||
Robert Boklahánics <bokirobi@gmail.com>
|
||||
ramius86 <pasini86@hotmail.com>
|
||||
simon84
|
||||
simon84 <badguy360th@gmail.com>
|
||||
Sniperwolf572 <tenga6@gmail.com>
|
||||
Tachi <zaveruha007@gmail.com>
|
||||
Tonic
|
||||
@ -83,3 +84,4 @@ Asgar Serran <piechottaf@web.de>
|
||||
Kavinsky <nmunozfernandez@gmail.com>
|
||||
Coren <coren4@gmail.com>
|
||||
OnkelDisMaster <onkeldismaster@gmail.com>
|
||||
Dimaslg <dimaslg@telecable.e>
|
||||
|
2
LICENSE
2
LICENSE
@ -1,4 +1,4 @@
|
||||
Copyright (C) 2014 Felix "KoffeinFlummi" Wiegand
|
||||
Copyright (C) 2015 Felix "KoffeinFlummi" Wiegand
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
89
README.md
89
README.md
@ -1,48 +1,83 @@
|
||||
<p align="center">
|
||||
<img src="https://github.com/acemod/ACE3/blob/master/extras/assets/logo/black/ACE3-Logo.jpg" height="80" />
|
||||
<img src="https://github.com/acemod/ACE3/blob/master/extras/assets/logo/black/ACE3-Logo.jpg"
|
||||
height="112">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases">
|
||||
<img src="http://img.shields.io/badge/release-3.0-green.svg?style=flat" alt="ACE version">
|
||||
<img src="http://img.shields.io/badge/Version-3.0.0-blue.svg?style=flat"
|
||||
alt="ACE version">
|
||||
</a>
|
||||
<a href="#">
|
||||
<img src="http://img.shields.io/badge/download-22_MB-blue.svg?style=flat" alt="ACE download">
|
||||
<a href="https://github.com/acemod/ACE3/archive/master.zip">
|
||||
<img src="http://img.shields.io/badge/Download-48.3_MB-green.svg?style=flat"
|
||||
alt="ACE download">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="http://img.shields.io/github/issues/acemod/ACE3.svg?style=flat" alt="ACE issues">
|
||||
<img src="http://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat&label=Issues"
|
||||
alt="ACE issues">
|
||||
</a>
|
||||
<a href="http://forums.bistudio.com/showthread.php?190433-ACE3-A-collaborative-merger-between-AGM-CSE-and-ACE&p=2910796&viewfull=1#post2910796">
|
||||
<img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat"
|
||||
alt="BIF thread">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
|
||||
<img src="http://img.shields.io/badge/license-GPLv2-red.svg?style=flat" alt="ACE license">
|
||||
<img src="http://img.shields.io/badge/License-GPLv2-red.svg?style=flat"
|
||||
alt="ACE license">
|
||||
</a>
|
||||
</p>
|
||||
<p align="center"><sup><strong>Requires the latest version of <a href="http://www.armaholic.com/page.php?id=18767">CBA A3</a> | <a href="#">BIF thread</a></strong></sup></p>
|
||||
<p align="center"><sup><strong>Requires the latest version of <a href="http://www.armaholic.com/page.php?id=18767">CBA A3</a>. Visit us on <a href="https://www.facebook.com/ACE3Mod">Facebook</a> | <a href="https://www.youtube.com/c/ACE3Mod">YouTube</a> | <a href="https://twitter.com/ACE3Mod">Twitter</a> | <a href="http://www.reddit.com/r/arma/search?q=ACE&restrict_sr=on&sort=new&t=all">Reddit</a></strong></sup></p>
|
||||
|
||||
**ACE3** is a joint effort by the teams behind **ACE2**, **AGM** and **CSE** to improve the realism and authenticity of Arma 3.
|
||||
|
||||
This mod is entirely **open-source**, and everyone is free to propose changes or maintain their own, customized version as long as they make their changes open to the public in accordance with the GNU General Public License (for more information check the license file attached to this project).
|
||||
The project is entirely **open-source** and all contributions are welcome. Feel free to maintain your own custom version, so long as the changes you make are open to the public in accordance with the GNU General Public License ([GPLv2](https://github.com/acemod/ACE3/blob/master/LICENSE)).
|
||||
|
||||
The mod is **built modularly** — almost any PBO can be removed, thus a team can maintain its own tailored version of ACE, which excludes a select number of components that they don't like, or which conflict with other add-ons. Components themselves, like e.g. the medical system, also include various customization options, allowing mission designers to tweak the overall experience.
|
||||
The mod is **built modularly**, so almost any included PBO can be easily removed from the configuration. This way, a team can maintain its own tailored version of ACE by simply excluding any components they don't need, or those possibly in conflict with other add-ons. Modules themselves, e.g. the medical system, also include various customization options, allowing mission designers to tweak the overall experience.
|
||||
|
||||
### Features
|
||||
* Improved medical system
|
||||
* Logistics system including cargo transport and vehicle maintenance
|
||||
* Explosives system including different trigger types
|
||||
* Captivity system
|
||||
* Realistic names for vehicles and weapons
|
||||
* Realistic ballistics including wind and humidity
|
||||
* Backblast simulation
|
||||
* A fire control system for armored vehicles and helicopters
|
||||
***and more...***
|
||||
### Core features
|
||||
* Brand new 3D interaction/action system
|
||||
* Performance and reliability framework
|
||||
* Focus on modularity and customization
|
||||
* New flexible client and server settings & configuration
|
||||
* Improved medical system with various levels (basic/advanced) focus on gameplay/realism
|
||||
* Proper & consistent network-synced weather
|
||||
* Wind and weather-based ballistics
|
||||
* Captivity system
|
||||
* Explosives system, including different trigger types
|
||||
* Map screen improvements – marker placement and map tools
|
||||
* Advanced missile guidance and laser designation
|
||||
|
||||
#### Guides & How-Tos
|
||||
If you installed ACE3, but have trouble understanding how it all works, or where to start — see [Getting Started](https://github.com/acemod/ACE3/blob/master/documentation/user/getting-started.md).
|
||||
#### Additional features
|
||||
* Carrying and dragging
|
||||
* Realistic names for vehicles and weapons
|
||||
* A fire control system (FCS) for armored vehicles and helicopters
|
||||
* Realistic ballistics/FCS calculated in C/C++ extensions
|
||||
* Backblast area and overpressure simulation
|
||||
* Disposable launchers
|
||||
* Realistic G-forces
|
||||
* Vehicle locking
|
||||
* Realistic night and thermal vision modes
|
||||
* Magazine repacking
|
||||
* Realistic weapon overheating mechanic
|
||||
* Combat deafness (temporary loss of hearing) simulation
|
||||
* Improved ragdoll physics
|
||||
* Improved interactions for AARs and ammo bearers
|
||||
* Adjustable sniper scopes
|
||||
* No idle animation with lowered weapon
|
||||
* No talking player avatar
|
||||
* Jumping over obstacles, climbing over walls and cutting down fences
|
||||
* Vector, MicroDAGR and Kestrel devices<br>
|
||||
***and much more...***
|
||||
|
||||
### Guides & how-tos
|
||||
If you installed ACE3 but have trouble understanding how it all works, or where to start, read this first:
|
||||
* [Getting started](http://ace3mod.com/wiki/user/getting-started.html)
|
||||
|
||||
#### Contributing
|
||||
If you want to help put with the ongoing development, you can do so by looking for possible bugs or by contributing new features. To contribute something to ACE, simply fork this repository and submit your pull requests for review by other collaborators. In the process, please add yourself to the author array of any .pbo you will be editing and the AUTHORS.txt file; including a valid email address.
|
||||
You can help out with the ongoing development by looking for potential bugs in our code base, or by contributing new features. To contribute something to ACE, simply fork this repository and submit your pull requests for review by other collaborators. Remember to add yourself to the author array of any PBO you will be editing and the [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) file; including a valid email address.
|
||||
|
||||
To report a bug, propose a feature, or suggest a change to the existing one — please, use our [Issue Tracker](https://github.com/acemod/ACE3/issues). See [this link](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) for details.
|
||||
Please, use our [Issue Tracker](https://github.com/acemod/ACE3/issues) to report a bug, propose a feature, or suggest changes to the existing ones. See also:
|
||||
* [How to report an issue](http://ace3mod.com/wiki/user/how-to-report-an-issue.html)
|
||||
* [How to make a feature request](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html)
|
||||
|
||||
#### Testing & Building
|
||||
If you want to help us test the latest development changes, feel free to download our master branch, using either git — if familiar with the process — or directly, by following [this link](https://github.com/acemod/ACE3/archive/master.zip).
|
||||
|
||||
To find out how to set up your development environment and build a version of ACE for testing, follow [these instructions](https://github.com/acemod/ACE3/blob/master/documentation/development/setting-up-the-development-environment.md).
|
||||
#### Testing & building
|
||||
To help us test the latest development changes, download our master branch ([directly](https://github.com/acemod/ACE3/archive/master.zip), or [with git](https://help.github.com/articles/fetching-a-remote/)), then assemble a test build:
|
||||
* [Setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – step-by-step instructions on how to properly setup and build a version of ACE for testing purposes.
|
||||
|
Binary file not shown.
Binary file not shown.
BIN
ace_fcs.dll
BIN
ace_fcs.dll
Binary file not shown.
@ -57,7 +57,7 @@ class ACE_Settings {
|
||||
};
|
||||
class GVAR(simulationRadius) {
|
||||
displayName = "Simulation Radius";
|
||||
description = "Defines the radius (in meters) in which advanced ballistics are applied";
|
||||
description = "Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles";
|
||||
typeName = "SCALAR";
|
||||
value = 3000;
|
||||
};
|
||||
|
@ -69,7 +69,7 @@ class CfgVehicles {
|
||||
};
|
||||
class simulationRadius {
|
||||
displayName = "Simulation Radius";
|
||||
description = "Defines the radius (in meters) in which advanced ballistics are applied";
|
||||
description = "Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles";
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 3000;
|
||||
};
|
||||
|
@ -20,19 +20,11 @@ GVAR(WindInfoStart) = time;
|
||||
GVAR(Protractor) = false;
|
||||
GVAR(ProtractorStart) = time;
|
||||
|
||||
// Those are only used in the pure sqf version (extension free PFH)
|
||||
GVAR(SimulationPrecision) = 2;
|
||||
GVAR(WindEnabled) = true;
|
||||
GVAR(SpinDriftEnabled) = true;
|
||||
GVAR(CoriolisEnabled) = true;
|
||||
GVAR(EoetvoesEnabled) = true;
|
||||
GVAR(AdvancedAirDragEnabled) = true;
|
||||
GVAR(TransonicRegionEnabled) = true;
|
||||
GVAR(AtmosphericDensitySimulationEnabled) = true;
|
||||
|
||||
GVAR(currentGrid) = 0;
|
||||
GVAR(INIT_MESSAGE_ENABLED) = false;
|
||||
|
||||
GVAR(extensionAvailable) = true;
|
||||
/* @TODO: Remove this until verisoning is in sync with cmake/build versioning
|
||||
GVAR(extensionVersion) = ("ace_advanced_ballistics" callExtension "version");
|
||||
GVAR(extensionAvailable) = (GVAR(extensionVersion) == EXTENSION_REQUIRED_VERSION);
|
||||
if (!GVAR(extensionAvailable)) exitWith {
|
||||
@ -42,5 +34,5 @@ if (!GVAR(extensionAvailable)) exitWith {
|
||||
diag_log text "[ACE] ERROR: ace_advanced_ballistics.dll is incompatible";
|
||||
};
|
||||
};
|
||||
|
||||
*/
|
||||
[] call FUNC(initializeTerrainExtension);
|
||||
|
@ -1,36 +0,0 @@
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
*
|
||||
* Calculates the air density
|
||||
*
|
||||
* Arguments:
|
||||
* 0: temperature - degrees celcius <NUMBER>
|
||||
* 1: pressure - hPa <NUMBER>
|
||||
* 2: relativeHumidity - value between 0.0 and 1.0 <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* 0: density of air - kg * m^(-3) <NUMBER>
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_temperature", "_pressure", "_relativeHumidity"];
|
||||
_temperature = _this select 0; // in C
|
||||
_pressure = _this select 1; // in hPa
|
||||
_relativeHumidity = _this select 2; // as ratio 0-1
|
||||
|
||||
_pressure = _pressure * 100;
|
||||
|
||||
if (_relativeHumidity > 0) then {
|
||||
private ["_pSat", "_vaporPressure", "_partialPressure"];
|
||||
// Saturation vapor pressure calculated according to: http://wahiduddin.net/calc/density_algorithms.htm
|
||||
_pSat = 6.1078 * 10 ^ ((7.5 * _temperature) / (_temperature + 237.3));
|
||||
_vaporPressure = _relativeHumidity * _pSat;
|
||||
_partialPressure = _pressure - _vaporPressure;
|
||||
|
||||
(_partialPressure * DRY_AIR_MOLAR_MASS + _vaporPressure * WATER_VAPOR_MOLAR_MASS) / (UNIVERSAL_GAS_CONSTANT * KELVIN(_temperature))
|
||||
} else {
|
||||
_pressure / (SPECIFIC_GAS_CONSTANT_DRY_AIR * KELVIN(_temperature))
|
||||
};
|
@ -19,7 +19,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_index", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_atmosphereModel", "_bulletMass", "_bulletLength", "_airFriction", "_dragModel", "_muzzleVelocity", "_muzzleVelocityCoef", "_muzzleAccessory", "_initSpeedCoef", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_bulletWeight", "_barrelTwist", "_twistDirection", "_stabilityFactor", "_transonicStabilityCoef"];
|
||||
private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_index", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_atmosphereModel", "_bulletMass", "_bulletLength", "_airFriction", "_dragModel", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_barrelTwist", "_twistDirection", "_stabilityFactor", "_transonicStabilityCoef", "_ballisticCoefficients", "_velocityBoundaries"];
|
||||
_unit = _this select 0;
|
||||
_weapon = _this select 1;
|
||||
_mode = _this select 3;
|
||||
@ -35,49 +35,34 @@ if (!([_unit] call EFUNC(common,isPlayer))) exitWith {};
|
||||
if (underwater _unit) exitWith {};
|
||||
if (!(_ammo isKindOf "BulletBase")) exitWith {};
|
||||
if (_unit distance ACE_player > GVAR(simulationRadius)) exitWith {};
|
||||
if (GVAR(onlyActiveForLocalPlayers) && _unit != ACE_player) then { _abort = true; };
|
||||
if (GVAR(onlyActiveForLocalPlayers) && !(local _unit)) then {
|
||||
if (GVAR(alwaysSimulateForSnipers)) then {
|
||||
// The shooter is non local
|
||||
if (currentWeapon _unit == primaryWeapon _unit && count primaryWeaponItems _unit > 2) then {
|
||||
_opticsName = (primaryWeaponItems _unit) select 2;
|
||||
_opticType = getNumber(configFile >> "cfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType");
|
||||
_abort = _opticType != 2; // We only abort if the non local shooter is not a sniper
|
||||
};
|
||||
} else {
|
||||
_abort = true;
|
||||
};
|
||||
};
|
||||
//if (!GVAR(vehicleGunnerEnabled) && !(_unit isKindOf "Man")) then { _abort = true; }; // TODO: We currently do not have firedEHs on vehicles
|
||||
if (GVAR(disabledInFullAutoMode) && getNumber(configFile >> "cfgWeapons" >> _weapon >> _mode >> "autoFire") == 1) then { _abort = true; };
|
||||
|
||||
if (_abort && alwaysSimulateForSnipers) then {
|
||||
// The shooter is non local
|
||||
if (currentWeapon _unit == primaryWeapon _unit && count primaryWeaponItems _unit > 2) then {
|
||||
_opticsName = (primaryWeaponItems _unit) select 2;
|
||||
_opticType = getNumber(configFile >> "cfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType");
|
||||
_abort = _opticType != 2; // We only abort if the non local shooter is not a sniper
|
||||
};
|
||||
};
|
||||
if (_abort || !(GVAR(extensionAvailable))) exitWith {
|
||||
[_bullet, getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction")] call EFUNC(winddeflection,updateTrajectoryPFH);
|
||||
};
|
||||
|
||||
_airFriction = getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction");
|
||||
_muzzleVelocity = getNumber(configFile >> "cfgMagazines" >> _magazine >> "initSpeed");
|
||||
_muzzleVelocityCoef = getNumber(configFile >> "cfgWeapons" >> _weapon >> "initSpeed");
|
||||
if (_muzzleVelocityCoef > 0) then {
|
||||
_muzzleVelocity = _muzzleVelocityCoef;
|
||||
};
|
||||
if (_muzzleVelocityCoef < 0) then {
|
||||
_muzzleVelocity = _muzzleVelocity * (-1 * _muzzleVelocityCoef);
|
||||
};
|
||||
|
||||
_muzzleAccessory = "";
|
||||
switch (currentWeapon _unit) do {
|
||||
case primaryWeapon _unit: { _muzzleAccessory = (primaryWeaponItems _unit) select 0; };
|
||||
case handgunWeapon _unit: { _muzzleAccessory = (handgunItems _unit) select 0; };
|
||||
};
|
||||
|
||||
if (_muzzleAccessory != "" && isNumber(configFile >> "cfgWeapons" >> _muzzleAccessory >> "ItemInfo" >> "MagazineCoef" >> "initSpeed")) then {
|
||||
_initSpeedCoef = getNumber(configFile >> "cfgWeapons" >> _muzzleAccessory >> "ItemInfo" >> "MagazineCoef" >> "initSpeed");
|
||||
_muzzleVelocity = _muzzleVelocity * _initSpeedCoef;
|
||||
};
|
||||
_bulletVelocity = velocity _bullet;
|
||||
_muzzleVelocity = vectorMagnitude _bulletVelocity;
|
||||
|
||||
if (GVAR(barrelLengthInfluenceEnabled)) then {
|
||||
_muzzleVelocityShift = [_ammo, _weapon, _muzzleVelocity] call FUNC(calculateBarrelLengthVelocityShift);
|
||||
if (_muzzleVelocityShift != 0) then {
|
||||
_bulletVelocity = velocity _bullet;
|
||||
_bulletSpeed = vectorMagnitude _bulletVelocity;
|
||||
_bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift * (_bulletSpeed / _muzzleVelocity)));
|
||||
_bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift));
|
||||
_bullet setVelocity _bulletVelocity;
|
||||
_muzzleVelocity = _muzzleVelocity + _muzzleVelocityShift;
|
||||
};
|
||||
@ -87,19 +72,23 @@ if (GVAR(ammoTemperatureEnabled)) then {
|
||||
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL _unit) select 2);
|
||||
_muzzleVelocityShift = [_ammo, _temperature] call FUNC(calculateAmmoTemperatureVelocityShift);
|
||||
if (_muzzleVelocityShift != 0) then {
|
||||
_bulletVelocity = velocity _bullet;
|
||||
_bulletSpeed = vectorMagnitude _bulletVelocity;
|
||||
_bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift * (_bulletSpeed / _muzzleVelocity)));
|
||||
_bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift));
|
||||
_bullet setVelocity _bulletVelocity;
|
||||
_muzzleVelocity = _muzzleVelocity + _muzzleVelocityShift;
|
||||
};
|
||||
};
|
||||
|
||||
_bulletTraceVisible = false;
|
||||
if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER" && currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then {
|
||||
_opticsName = (primaryWeaponItems ACE_player) select 2;
|
||||
_opticType = getNumber(configFile >> "cfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType");
|
||||
_bulletTraceVisible = (_opticType == 2 || currentWeapon ACE_player in ["ACE_Vector", "Binocular", "Rangefinder", "Laserdesignator"]);
|
||||
if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then {
|
||||
if (currentWeapon ACE_player in ["ACE_Vector", "Binocular", "Rangefinder", "Laserdesignator"]) then {
|
||||
_bulletTraceVisible = true;
|
||||
} else {
|
||||
if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then {
|
||||
_opticsName = (primaryWeaponItems ACE_player) select 2;
|
||||
_opticType = getNumber(configFile >> "cfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType");
|
||||
_bulletTraceVisible = _opticType == 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
_caliber = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber");
|
||||
@ -131,253 +120,47 @@ _dragModel = 1;
|
||||
_ballisticCoefficients = [];
|
||||
_velocityBoundaries = [];
|
||||
_atmosphereModel = "ICAO";
|
||||
if (GVAR(AdvancedAirDragEnabled)) then {
|
||||
if (isNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_dragModel")) then {
|
||||
_dragModel = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_dragModel");
|
||||
if (!(_dragModel in [1, 2, 5, 6, 7, 8])) then {
|
||||
_dragModel = 1;
|
||||
};
|
||||
};
|
||||
if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ballisticCoefficients")) then {
|
||||
_ballisticCoefficients = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ballisticCoefficients");
|
||||
};
|
||||
if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_velocityBoundaries")) then {
|
||||
_velocityBoundaries = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_velocityBoundaries");
|
||||
};
|
||||
if (isText(configFile >> "cfgAmmo" >> _ammo >> "ACE_standardAtmosphere")) then {
|
||||
_atmosphereModel = getText(configFile >> "cfgAmmo" >> _ammo >> "ACE_standardAtmosphere");
|
||||
if (isNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_dragModel")) then {
|
||||
_dragModel = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_dragModel");
|
||||
if (!(_dragModel in [1, 2, 5, 6, 7, 8])) then {
|
||||
_dragModel = 1;
|
||||
};
|
||||
};
|
||||
if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ballisticCoefficients")) then {
|
||||
_ballisticCoefficients = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ballisticCoefficients");
|
||||
};
|
||||
if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_velocityBoundaries")) then {
|
||||
_velocityBoundaries = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_velocityBoundaries");
|
||||
};
|
||||
if (isText(configFile >> "cfgAmmo" >> _ammo >> "ACE_standardAtmosphere")) then {
|
||||
_atmosphereModel = getText(configFile >> "cfgAmmo" >> _ammo >> "ACE_standardAtmosphere");
|
||||
};
|
||||
|
||||
#ifdef USE_ADVANCEDBALLISTICS_DLL
|
||||
GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
|
||||
GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
|
||||
|
||||
"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _bullet, EGVAR(weather,Latitude), EGVAR(weather,currentTemperature), EGVAR(weather,Altitude), EGVAR(weather,currentHumidity), overcast, floor(time), time - floor(time)];
|
||||
"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _bullet, EGVAR(weather,Latitude), EGVAR(weather,currentTemperature), EGVAR(weather,Altitude), EGVAR(weather,currentHumidity), overcast, floor(time), time - floor(time)];
|
||||
|
||||
[{
|
||||
private ["_index", "_bullet", "_caliber", "_bulletTraceVisible", "_bulletVelocity", "_bulletPosition"];
|
||||
EXPLODE_4_PVT(_this select 0,_bullet,_caliber,_bulletTraceVisible,_index);
|
||||
|
||||
_bulletVelocity = velocity _bullet;
|
||||
_bulletPosition = getPosASL _bullet;
|
||||
|
||||
_bulletSpeed = vectorMagnitude _bulletVelocity;
|
||||
|
||||
if (!alive _bullet || _bulletSpeed < 100) exitWith {
|
||||
[_this select 1] call cba_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
||||
if (_bulletTraceVisible && _bulletSpeed > 600) then {
|
||||
drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.4*_caliber,0.2*_caliber],[[0,0,0,0.6],[0,0,0,0.4]],[1,0],0,0,"","",""];
|
||||
};
|
||||
|
||||
call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, floor(time), time - floor(time)]);
|
||||
|
||||
}, GVAR(simulationInterval), [_bullet, _caliber, _bulletTraceVisible, GVAR(currentbulletID)]] call CBA_fnc_addPerFrameHandler;
|
||||
#else
|
||||
_index = count GVAR(bulletDatabase);
|
||||
if (count GVAR(bulletDatabaseFreeIndices) > 0) then {
|
||||
_index = GVAR(bulletDatabaseFreeIndices) select 0;
|
||||
GVAR(bulletDatabaseFreeIndices) = GVAR(bulletDatabaseFreeIndices) - [_index];
|
||||
[{
|
||||
private ["_args", "_index", "_bullet", "_caliber", "_bulletTraceVisible", "_bulletVelocity", "_bulletPosition"];
|
||||
_args = _this select 0;
|
||||
_bullet = _args select 0;
|
||||
_caliber = _args select 1;
|
||||
_bulletTraceVisible = _args select 2;
|
||||
_index = _args select 3;
|
||||
|
||||
_bulletVelocity = velocity _bullet;
|
||||
_bulletPosition = getPosASL _bullet;
|
||||
|
||||
_bulletSpeed = vectorMagnitude _bulletVelocity;
|
||||
|
||||
if (!alive _bullet || _bulletSpeed < 100) exitWith {
|
||||
[_this select 1] call cba_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
||||
if (_bulletTraceVisible && _bulletSpeed > 600) then {
|
||||
drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.4*_caliber,0.2*_caliber],[[0,0,0,0.6],[0,0,0,0.4]],[1,0],0,0,"","",""];
|
||||
};
|
||||
|
||||
GVAR(bulletDatabase) set[_index, [_bullet, _caliber, _airFriction, _muzzleVelocity, _stabilityFactor, _transonicStabilityCoef, _twistDirection, _unit, _bulletTraceVisible, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _index]];
|
||||
GVAR(bulletDatabaseStartTime) set[_index, time];
|
||||
GVAR(bulletDatabaseSpeed) set[_index, 0];
|
||||
GVAR(bulletDatabaseFrames) set[_index, 1];
|
||||
GVAR(bulletDatabaseLastFrame) set[_index, time];
|
||||
GVAR(bulletDatabaseHDeflect) set[_index, 0];
|
||||
GVAR(bulletDatabaseSpinDrift) set[_index, 0];
|
||||
call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, floor(time), time - floor(time)]);
|
||||
|
||||
if ((GVAR(bulletDatabaseOccupiedIndices) pushBack _index) == 0) then {
|
||||
[{
|
||||
private ["_bulletDatabaseEntry", "_bullet", "_caliber", "_muzzleVelocity", "_frames", "_speed", "_airFriction", "_airFrictionRef", "_dragModel", "_atmosphereModel", "_ballisticCoefficient", "_ballisticCoefficients", "_velocityBoundaries", "_airDensity", "_stabilityFactor", "_transonicStabilityCoef", "_twistDirection", "_unit", "_bulletTraceVisible", "_index", "_temperature", "_humidity", "_deltaT", "_TOF", "_bulletPosition", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueSpeed", "_bulletSpeedAvg", "_wind", "_drag", "_dragRef", "_vect", "_accel", "_accelRef", "_centripetalAccel", "_pressure", "_pressureDeviation", "_windSourceObstacle", "_windSourceTerrain", "_height", "_roughnessLength", "_bulletDir", "_horizontalDeflection", "_horizontalDeflectionPartial", "_spinDrift", "_spinDriftPartial"];
|
||||
|
||||
{
|
||||
_bulletDatabaseEntry = (GVAR(bulletDatabase) select _x);
|
||||
if (!alive (_bulletDatabaseEntry select 0)) then {
|
||||
_index = _bulletDatabaseEntry select 13;
|
||||
GVAR(bulletDatabaseOccupiedIndices) = GVAR(bulletDatabaseOccupiedIndices) - [_index];
|
||||
GVAR(bulletDatabaseFreeIndices) pushBack _index;
|
||||
};
|
||||
true
|
||||
} count GVAR(bulletDatabaseOccupiedIndices);
|
||||
|
||||
if (count GVAR(bulletDatabaseOccupiedIndices) == 0) exitWith {
|
||||
GVAR(bulletDatabase) = [];
|
||||
GVAR(bulletDatabaseStartTime) = [];
|
||||
GVAR(bulletDatabaseSpeed) = [];
|
||||
GVAR(bulletDatabaseFrames) = [];
|
||||
GVAR(bulletDatabaseLastFrame) = [];
|
||||
GVAR(bulletDatabaseHDeflect) = [];
|
||||
GVAR(bulletDatabaseSpinDrift) = [];
|
||||
GVAR(bulletDatabaseOccupiedIndices) = [];
|
||||
GVAR(bulletDatabaseFreeIndices) = [];
|
||||
[_this select 1] call cba_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
||||
{
|
||||
_bulletDatabaseEntry = GVAR(bulletDatabase) select _x;
|
||||
_bullet = _bulletDatabaseEntry select 0;
|
||||
_caliber = _bulletDatabaseEntry select 1;
|
||||
_airFriction = _bulletDatabaseEntry select 2;
|
||||
_muzzleVelocity = _bulletDatabaseEntry select 3;
|
||||
_stabilityFactor = _bulletDatabaseEntry select 4;
|
||||
_transonicStabilityCoef = _bulletDatabaseEntry select 5;
|
||||
_twistDirection = _bulletDatabaseEntry select 6;
|
||||
_unit = _bulletDatabaseEntry select 7;
|
||||
_bulletTraceVisible = _bulletDatabaseEntry select 8;
|
||||
_ballisticCoefficients = _bulletDatabaseEntry select 9;
|
||||
_velocityBoundaries = _bulletDatabaseEntry select 10;
|
||||
_atmosphereModel = _bulletDatabaseEntry select 11;
|
||||
_dragModel = _bulletDatabaseEntry select 12;
|
||||
_index = _bulletDatabaseEntry select 13;
|
||||
|
||||
_TOF = time - (GVAR(bulletDatabaseStartTime) select _index);
|
||||
|
||||
_bulletVelocity = velocity _bullet;
|
||||
_bulletPosition = getPosASL _bullet;
|
||||
|
||||
_bulletSpeed = vectorMagnitude _bulletVelocity;
|
||||
_bulletDir = (_bulletVelocity select 0) atan2 (_bulletVelocity select 1);
|
||||
|
||||
_speed = (GVAR(bulletDatabaseSpeed) select _index);
|
||||
GVAR(bulletDatabaseSpeed) set[_index, _speed + _bulletSpeed];
|
||||
|
||||
_frames = (GVAR(bulletDatabaseFrames) select _index);
|
||||
GVAR(bulletDatabaseFrames) set[_index, _frames + 1];
|
||||
|
||||
_bulletSpeedAvg = (_speed / _frames);
|
||||
|
||||
if ((GVAR(SimulationPrecision) < 2) || {_frames % GVAR(SimulationPrecision) == _index % GVAR(SimulationPrecision)}) then {
|
||||
_deltaT = time - (GVAR(bulletDatabaseLastFrame) select _index);
|
||||
GVAR(bulletDatabaseLastFrame) set[_index, time];
|
||||
|
||||
_trueVelocity = _bulletVelocity;
|
||||
_trueSpeed = _bulletSpeed;
|
||||
_wind = [0, 0, 0];
|
||||
if (GVAR(WindEnabled) && (vectorMagnitude ACE_wind) > 0) then {
|
||||
_windSourceObstacle = _bulletPosition vectorDiff ((vectorNormalized ACE_wind) vectorMultiply 10);
|
||||
_windSourceTerrain = _bulletPosition vectorDiff ((vectorNormalized ACE_wind) vectorMultiply 100);
|
||||
|
||||
if (!(lineIntersects [_bulletPosition, _windSourceObstacle]) && !(terrainIntersectASL [_bulletPosition, _windSourceTerrain])) then {
|
||||
_wind = ACE_wind;
|
||||
_height = ASLToATL(_bulletPosition) select 2;
|
||||
_height = 0 max _height min 20;
|
||||
if (_height < 20) then {
|
||||
_roughnessLength = _bulletPosition call FUNC(calculateRoughnessLength);
|
||||
_wind = _wind vectorMultiply (ln(_height / _roughnessLength) / ln(20 / _roughnessLength));
|
||||
};
|
||||
|
||||
_trueVelocity = _bulletVelocity vectorDiff _wind;
|
||||
_trueSpeed = vectorMagnitude _trueVelocity;
|
||||
};
|
||||
};
|
||||
|
||||
_airFrictionRef = _airFriction;
|
||||
if (GVAR(AdvancedAirDragEnabled) && (count _ballisticCoefficients) == (count _velocityBoundaries) + 1) then {
|
||||
_dragRef = _deltaT * _airFrictionRef * _bulletSpeed * _bulletSpeed;
|
||||
_accelRef = (vectorNormalized _bulletVelocity) vectorMultiply (_dragRef);
|
||||
_bulletVelocity = _bulletVelocity vectorDiff _accelRef;
|
||||
|
||||
_ballisticCoefficient = (_ballisticCoefficients select 0);
|
||||
for "_i" from (count _velocityBoundaries) - 1 to 0 step -1 do {
|
||||
if (_bulletSpeed < (_velocityBoundaries select _i)) exitWith {
|
||||
_ballisticCoefficient = (_ballisticCoefficients select (_i + 1));
|
||||
};
|
||||
};
|
||||
|
||||
if (GVAR(AtmosphericDensitySimulationEnabled)) then {
|
||||
_pressure = (_bulletPosition select 2) call EFUNC(weather,calculateBarometricPressure);
|
||||
_temperature = GET_TEMPERATURE_AT_HEIGHT(_bulletPosition select 2);
|
||||
_humidity = EGVAR(weather,currentHumidity);
|
||||
_airDensity = STD_AIR_DENSITY_ICAO;
|
||||
if (_humidity > 0) then {
|
||||
private ["_pSat", "_vaporPressure", "_partialPressure"];
|
||||
// Saturation vapor pressure calculated according to: http://wahiduddin.net/calc/density_algorithms.htm
|
||||
_pSat = 6.1078 * 10 ^ ((7.5 * _temperature) / (_temperature + 237.3));
|
||||
_vaporPressure = _humidity * _pSat;
|
||||
_partialPressure = (_pressure * 100)- _vaporPressure;
|
||||
|
||||
_airDensity = (_partialPressure * DRY_AIR_MOLAR_MASS + _vaporPressure * WATER_VAPOR_MOLAR_MASS) / (UNIVERSAL_GAS_CONSTANT * KELVIN(_temperature));
|
||||
} else {
|
||||
_airDensity = (_pressure * 100) / (SPECIFIC_GAS_CONSTANT_DRY_AIR * KELVIN(_temperature));
|
||||
};
|
||||
if (_atmosphereModel == "ICAO") then {
|
||||
_ballisticCoefficient = (STD_AIR_DENSITY_ICAO / _airDensity) * _ballisticCoefficient;
|
||||
} else {
|
||||
_ballisticCoefficient = (STD_AIR_DENSITY_ASM / _airDensity) * _ballisticCoefficient;
|
||||
};
|
||||
};
|
||||
|
||||
_drag = _deltaT * ([_dragModel, _ballisticCoefficient, _trueSpeed] call FUNC(calculateRetardation));
|
||||
_accel = (vectorNormalized _trueVelocity) vectorMultiply (_drag);
|
||||
_bulletVelocity = _bulletVelocity vectorDiff _accel;
|
||||
} else {
|
||||
if (GVAR(AtmosphericDensitySimulationEnabled)) then {
|
||||
_pressureDeviation = (_bulletPosition select 2) call EFUNC(weather,calculateBarometricPressure) - 1013.25;
|
||||
_temperature = GET_TEMPERATURE_AT_HEIGHT(_bulletPosition select 2);
|
||||
_humidity = EGVAR(weather,currentHumidity);
|
||||
_airFriction = _airFriction + ((_temperature - 15) * 0.0000015 + _humidity * 0.0000040 + _pressureDeviation * -0.0000009);
|
||||
};
|
||||
|
||||
if (_airFriction != _airFrictionRef || vectorMagnitude _wind > 0) then {
|
||||
_dragRef = _deltaT * _airFrictionRef * _bulletSpeed * _bulletSpeed;
|
||||
_accelRef = (vectorNormalized _bulletVelocity) vectorMultiply (_dragRef);
|
||||
_bulletVelocity = _bulletVelocity vectorDiff _accelRef;
|
||||
|
||||
_drag = _deltaT * _airFriction * _trueSpeed * _trueSpeed;
|
||||
_accel = (vectorNormalized _trueVelocity) vectorMultiply (_drag);
|
||||
_bulletVelocity = _bulletVelocity vectorAdd _accel;
|
||||
};
|
||||
};
|
||||
|
||||
if (GVAR(CoriolisEnabled) && _bulletSpeedAvg > 0) then {
|
||||
_horizontalDeflection = 0.0000729 * (_unit distanceSqr _bullet) * sin(EGVAR(weather,Latitude)) / _bulletSpeedAvg;
|
||||
_horizontalDeflectionPartial = _horizontalDeflection - (GVAR(bulletDatabaseHDeflect) select _index);
|
||||
GVAR(bulletDatabaseHDeflect) set[_index, _horizontalDeflection];
|
||||
_vect = [sin(_bulletDir + 90) * _horizontalDeflectionPartial, cos(_bulletDir + 90) * _horizontalDeflectionPartial, 0];
|
||||
|
||||
_bulletPosition = _bulletPosition vectorAdd _vect;
|
||||
};
|
||||
|
||||
/*
|
||||
// Negligible effect on the trajectory
|
||||
if (GVAR(EoetvoesEnabled)) then {
|
||||
_centripetalAccel = 2 * 0.0000729 * (_muzzleVelocity / -32.2) * cos(EGVAR(weather,Latitude)) * sin(_bulletDir);
|
||||
_accel = [0, 0, -(_centripetalAccel * _deltaT)];
|
||||
|
||||
_bulletVelocity = _bulletVelocity vectorAdd _accel;
|
||||
};
|
||||
//*/
|
||||
|
||||
if (GVAR(SpinDriftEnabled)) then {
|
||||
_spinDrift = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
|
||||
_spinDriftPartial = _spinDrift - (GVAR(bulletDatabaseSpinDrift) select _index);
|
||||
GVAR(bulletDatabaseSpinDrift) set[_index, _spinDrift];
|
||||
_vect = [sin(_bulletDir + 90) * _spinDriftPartial, cos(_bulletDir + 90) * _spinDriftPartial, 0];
|
||||
|
||||
_bulletPosition = _bulletPosition vectorAdd _vect;
|
||||
};
|
||||
};
|
||||
|
||||
if (GVAR(TransonicRegionEnabled) && _transonicStabilityCoef < 1) then {
|
||||
if (_bulletSpeed < 345 && _bulletSpeedAvg > 340 && _bulletSpeed > 335) then {
|
||||
_accel = [(random 0.8) - 0.4, (random 0.8) - 0.4, (random 0.8) - 0.4];
|
||||
_accel = _accel vectorMultiply (1 - _transonicStabilityCoef);
|
||||
_bulletVelocity = _bulletVelocity vectorAdd _accel;
|
||||
};
|
||||
};
|
||||
|
||||
if (_bulletTraceVisible && _bulletSpeed > 600 && _bullet distanceSqr _unit > 400) then {
|
||||
drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.4*_caliber,0.2*_caliber],[[0,0,0,0.6],[0,0,0,0.4]],[1,0],0,0,"","",""];
|
||||
};
|
||||
|
||||
_bullet setVelocity _bulletVelocity;
|
||||
_bullet setPosASL _bulletPosition;
|
||||
true
|
||||
} count GVAR(bulletDatabaseOccupiedIndices);
|
||||
|
||||
}, GVAR(simulationInterval), []] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
||||
#endif
|
||||
}, GVAR(simulationInterval), [_bullet, _caliber, _bulletTraceVisible, GVAR(currentbulletID)]] call CBA_fnc_addPerFrameHandler;
|
||||
|
@ -1,8 +1,6 @@
|
||||
#define COMPONENT advanced_ballistics
|
||||
#include "\z\ace\addons\main\script_mod.hpp"
|
||||
|
||||
#define USE_ADVANCEDBALLISTICS_DLL
|
||||
|
||||
#ifdef DEBUG_ENABLED_ADVANCEDBALLISTICS
|
||||
#define DEBUG_MODE_FULL
|
||||
#endif
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler. -->
|
||||
<Project name="ACE">
|
||||
<Package name="AdvancedBallistics">
|
||||
<Key ID="STR_ACE_AdvancedBallistics_WindInfoKey">
|
||||
|
@ -891,6 +891,25 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
|
||||
|
||||
class OpticsIn
|
||||
{
|
||||
class WideUnstabalized
|
||||
{
|
||||
opticsDisplayName = "WU";
|
||||
initAngleX = 0;
|
||||
minAngleX = -35;
|
||||
maxAngleX = 10;
|
||||
initAngleY = 0;
|
||||
minAngleY = -100;
|
||||
maxAngleY = 100;
|
||||
initFov = 0.466;
|
||||
minFov = 0.466;
|
||||
maxFov = 0.466;
|
||||
visionMode[] = {"Normal","Ti"};
|
||||
thermalMode[] = {0,1};
|
||||
gunnerOpticsColor[] = {0,0,0,1};
|
||||
directionStabilized = 0;
|
||||
horizontallyStabilized = 1;
|
||||
gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F";
|
||||
};
|
||||
class Wide
|
||||
{
|
||||
opticsDisplayName = "W";
|
||||
|
@ -760,7 +760,7 @@ class ATragMX_Display {
|
||||
y=0.265*safezoneH+safezoneY+0.35;
|
||||
strings[]={"Height","Width"};
|
||||
values[]={1,0};
|
||||
onToolBoxSelChanged="GVAR(rangeAssistUseTargetHeight)=((_this select 1)==0)";
|
||||
onToolBoxSelChanged=QUOTE(GVAR(rangeAssistUseTargetHeight) = ((_this select 1) == 0));
|
||||
};
|
||||
class TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE: TEXT_TARGET_RANGE_ASSIST_MEASUREMENT_METHOD {
|
||||
idc=7003;
|
||||
|
@ -9,7 +9,7 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
|
||||
GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657, -0.0006400, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
|
||||
|
||||
["12.7x99mm AMAX" , 860, 100, 0.0612, -0.0003740, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
|
||||
["12.7x99mm" , 853, 100, 0.0623, -0.0006000, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
|
||||
["12.7x99mm" , 900, 100, 0.0623, -0.0006000, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
|
||||
|
||||
["12.7x54mm" , 300, 100, 0.3395, -0.0001400, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
|
||||
|
||||
@ -34,6 +34,7 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
|
||||
|
||||
["6.5x39mm" , 800, 100, 0.0683, -0.0007850, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"],
|
||||
["6.5x47mm Lapua" , 800, 100, 0.0682, -0.0007710, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"],
|
||||
["6.5mm Creedmor" , 840, 100, 0.0637, -0.0006510, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.317, 7, "ICAO"],
|
||||
|
||||
["5.56x45mm M855" , 870, 100, 0.0626, -0.0012650, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ],
|
||||
["5.56x45mm Mk262" , 820, 100, 0.0671, -0.0011250, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
|
||||
|
@ -54,7 +54,7 @@ if (!GVAR(atmosphereModeTBH)) then {
|
||||
private ["_bulletLength", "_stabilityFactor"];
|
||||
_bulletLength = 1.8;
|
||||
_stabilityFactor = 1.5;
|
||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
|
||||
_stabilityFactor = [_bulletDiameter / 10 / 2.54, _bulletLength, _bulletMass * 15.4323584, _barrelTwist / 2.54, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor);
|
||||
};
|
||||
|
@ -106,7 +106,7 @@ private ["_wind1", "_wind2", "_windDrift"];
|
||||
_wind1 = [cos(270 - _windDirection * 30) * _windSpeed1, sin(270 - _windDirection * 30) * _windSpeed1, 0];
|
||||
_wind2 = [cos(270 - _windDirection * 30) * _windSpeed2, sin(270 - _windDirection * 30) * _windSpeed2, 0];
|
||||
_windDrift = 0;
|
||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
_bc = [_bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel] call EFUNC(advanced_ballistics,calculateAtmosphericCorrection);
|
||||
};
|
||||
|
||||
@ -117,7 +117,7 @@ _speedAverage = 0;
|
||||
|
||||
private ["_eoetvoesMultiplier"];
|
||||
_eoetvoesMultiplier = 0;
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,EoetvoesEnabled), false]) then {
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
_eoetvoesMultiplier = 2 * (0.0000729 * _muzzleVelocity / -9.80665) * cos(_latitude) * sin(_directionOfFire);
|
||||
};
|
||||
|
||||
@ -142,14 +142,12 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
||||
_trueSpeed = vectorMagnitude _trueVelocity;
|
||||
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false]) then {
|
||||
_drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
|
||||
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
|
||||
} else {
|
||||
([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation))
|
||||
};
|
||||
_bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag);
|
||||
_drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
|
||||
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
|
||||
} else {
|
||||
([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation))
|
||||
};
|
||||
_bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag);
|
||||
} else {
|
||||
_bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction);
|
||||
};
|
||||
@ -177,23 +175,20 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
||||
_kineticEnergy = _kineticEnergy * 0.737562149;
|
||||
|
||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false]) then {
|
||||
_horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
|
||||
_horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
|
||||
_windage1 = _windage1 + _horizontalCoriolis;
|
||||
_windage2 = _windage2 + _horizontalCoriolis;
|
||||
};
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,EoetvoesEnabled), false]) then {
|
||||
_verticalDeflection = (_bulletPos select 2) * _eoetvoesMultiplier;
|
||||
_verticalCoriolis = - atan(_verticalDeflection / (_bulletPos select 1));
|
||||
_elevation = _elevation + _verticalCoriolis;
|
||||
};
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false]) then {
|
||||
_spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
|
||||
_spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
|
||||
_windage1 = _windage1 + _spinDrift;
|
||||
_windage2 = _windage2 + _spinDrift;
|
||||
};
|
||||
// Coriolis
|
||||
_horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
|
||||
_horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
|
||||
_windage1 = _windage1 + _horizontalCoriolis;
|
||||
_windage2 = _windage2 + _horizontalCoriolis;
|
||||
// Eoetvoes
|
||||
_verticalDeflection = (_bulletPos select 2) * _eoetvoesMultiplier;
|
||||
_verticalCoriolis = - atan(_verticalDeflection / (_bulletPos select 1));
|
||||
_elevation = _elevation + _verticalCoriolis;
|
||||
// Spin drift
|
||||
_spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
|
||||
_spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
|
||||
_windage1 = _windage1 + _spinDrift;
|
||||
_windage2 = _windage2 + _spinDrift;
|
||||
};
|
||||
|
||||
GVAR(rangeCardData) set [_n, [_range, _elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy]];
|
||||
@ -217,23 +212,20 @@ _kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
|
||||
_kineticEnergy = _kineticEnergy * 0.737562149;
|
||||
|
||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false]) then {
|
||||
_horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
|
||||
_horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
|
||||
_windage1 = _windage1 + _horizontalCoriolis;
|
||||
_windage2 = _windage2 + _horizontalCoriolis;
|
||||
};
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,EoetvoesEnabled), false]) then {
|
||||
_verticalDeflection = (_bulletPos select 2) * _eoetvoesMultiplier;
|
||||
_verticalCoriolis = - atan(_verticalDeflection / (_bulletPos select 1));
|
||||
_elevation = _elevation + _verticalCoriolis;
|
||||
};
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false]) then {
|
||||
_spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
|
||||
_spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
|
||||
_windage1 = _windage1 + _spinDrift;
|
||||
_windage2 = _windage2 + _spinDrift;
|
||||
};
|
||||
// Coriolis
|
||||
_horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
|
||||
_horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
|
||||
_windage1 = _windage1 + _horizontalCoriolis;
|
||||
_windage2 = _windage2 + _horizontalCoriolis;
|
||||
// Eoetvoes
|
||||
_verticalDeflection = (_bulletPos select 2) * _eoetvoesMultiplier;
|
||||
_verticalCoriolis = - atan(_verticalDeflection / (_bulletPos select 1));
|
||||
_elevation = _elevation + _verticalCoriolis;
|
||||
// Spin drift
|
||||
_spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
|
||||
_spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
|
||||
_windage1 = _windage1 + _spinDrift;
|
||||
_windage2 = _windage2 + _spinDrift;
|
||||
};
|
||||
|
||||
[_elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy, _verticalCoriolis * 60, _horizontalCoriolis * 60, _spinDrift * 60]
|
||||
|
@ -54,7 +54,7 @@ if (!GVAR(atmosphereModeTBH)) then {
|
||||
private ["_bulletLength", "_stabilityFactor"];
|
||||
_bulletLength = 1.8;
|
||||
_stabilityFactor = 1.5;
|
||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
|
||||
_stabilityFactor = [_bulletDiameter / 10 / 2.54, _bulletLength, _bulletMass * 15.4323584, _barrelTwist / 2.54, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor);
|
||||
};
|
||||
|
@ -60,7 +60,7 @@ private ["_boreHeight", "_bulletMass", "_bulletDiameter", "_airFriction", "_rifl
|
||||
_boreHeight = parseNumber(ctrlText 120000);
|
||||
_bulletMass = parseNumber(ctrlText 120010);
|
||||
_bulletDiameter = parseNumber(ctrlText 120020);
|
||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
_airFriction = 0.1 max parseNumber(ctrlText 120030) min 2;
|
||||
} else {
|
||||
_airFriction = parseNumber(ctrlText 120030) / -1000;
|
||||
@ -87,7 +87,7 @@ GVAR(workingMemory) set [5, _boreHeight];
|
||||
GVAR(workingMemory) set [12, _bulletMass];
|
||||
GVAR(workingMemory) set [13, _bulletDiameter];
|
||||
GVAR(workingMemory) set [14, _rifleTwist];
|
||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
GVAR(workingMemory) set [15, _airFriction];
|
||||
} else {
|
||||
GVAR(workingMemory) set [4, _airFriction];
|
||||
|
@ -26,7 +26,7 @@ if (GVAR(currentUnit) != 2) then {
|
||||
} else {
|
||||
ctrlSetText [110, Str(Round(GVAR(workingMemory) select 12))];
|
||||
};
|
||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
ctrlSetText [120, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
|
||||
} else {
|
||||
ctrlSetText [120, Str(Round((GVAR(workingMemory) select 4) * -1000 * 1000) / 1000)];
|
||||
|
@ -32,7 +32,7 @@ if (GVAR(currentUnit) != 2) then {
|
||||
} else {
|
||||
ctrlSetText [120020, Str(Round((GVAR(workingMemory) select 13) * 1000) / 1000)];
|
||||
};
|
||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
ctrlSetText [120030, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
|
||||
} else {
|
||||
ctrlSetText [120030, Str(Round((GVAR(workingMemory) select 4) * -1000 * 1000) / 1000)];
|
||||
|
@ -11,4 +11,4 @@
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.2
|
||||
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.3
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler. -->
|
||||
<Project name="ACE">
|
||||
<Package name="ATragMX">
|
||||
<Key ID="STR_ACE_ATragMX_Name">
|
||||
|
@ -23,6 +23,8 @@ class CfgAmmo {
|
||||
airFriction=-0.001265;
|
||||
hit=8;
|
||||
typicalSpeed=750;
|
||||
tracerStartTime = 0.073; //M856 tracer burns out to 800m
|
||||
tracerEndTime = 1.579; //Time in seconds calculated with ballistics calculator
|
||||
ACE_caliber=0.224;
|
||||
ACE_bulletLength=0.906;
|
||||
ACE_bulletMass=62;
|
||||
@ -36,7 +38,7 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_556x45_Ball_Mk262 : B_556x45_Ball {
|
||||
airFriction=-0.001125;
|
||||
caliber=0.6;
|
||||
caliber=0.8;
|
||||
deflecting=18;
|
||||
hit=11;
|
||||
typicalSpeed=836;
|
||||
@ -53,7 +55,7 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_556x45_Ball_Mk318 : B_556x45_Ball {
|
||||
airFriction=-0.001120;
|
||||
caliber=0.6;
|
||||
caliber=0.8;
|
||||
deflecting=18;
|
||||
hit=9;
|
||||
typicalSpeed=886;
|
||||
@ -68,13 +70,30 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={780, 886, 950};
|
||||
ACE_barrelLengths[]={10, 15.5, 20};
|
||||
};
|
||||
class ACE_556x45_Ball_M995_AP : B_556x45_Ball {
|
||||
airFriction=-0.001120;
|
||||
caliber=1.6;
|
||||
deflecting=18;
|
||||
hit=6;
|
||||
typicalSpeed=886;
|
||||
ACE_caliber=0.224;
|
||||
ACE_bulletLength=0.906;
|
||||
ACE_bulletMass=46;
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||
ACE_ballisticCoefficients[]={0.151};
|
||||
ACE_velocityBoundaries[]={};
|
||||
ACE_standardAtmosphere="ASM";
|
||||
ACE_dragModel=7;
|
||||
ACE_muzzleVelocities[]={950, 1030, 1040};
|
||||
ACE_barrelLengths[]={10, 15.5, 20};
|
||||
};
|
||||
class B_556x45_Ball_Tracer_Red;
|
||||
class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red {
|
||||
nvgOnly = 1;
|
||||
};
|
||||
class ACE_545x39_Ball_7N6M : B_556x45_Ball {
|
||||
airFriction=-0.001162;
|
||||
caliber=0.5;
|
||||
caliber=0.6;
|
||||
deflecting=18;
|
||||
hit=7;
|
||||
typicalSpeed=880;
|
||||
@ -89,13 +108,15 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={780, 880, 920};
|
||||
ACE_barrelLengths[]={10, 16.3, 20};
|
||||
};
|
||||
class B_556x45_Ball_Tracer_Yellow;
|
||||
class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Yellow {
|
||||
class B_556x45_Ball_Tracer_Green;
|
||||
class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Green {
|
||||
airFriction=-0.001162;
|
||||
caliber=0.5;
|
||||
caliber=0.6;
|
||||
deflecting=18;
|
||||
hit=7;
|
||||
typicalSpeed=883;
|
||||
tracerStartTime = 0.073; //7T3M tracer burns out to 850m
|
||||
tracerEndTime = 1.736; //Time in seconds calculated with ballistics calculator
|
||||
ACE_caliber=0.220;
|
||||
ACE_bulletLength=0.85;
|
||||
ACE_bulletMass=49.8;
|
||||
@ -129,10 +150,10 @@ class CfgAmmo {
|
||||
class ACE_65x39_Caseless_green_Tracer_Dim : B_65x39_Caseless_green {
|
||||
nvgOnly = 1;
|
||||
};
|
||||
class ACE_65x47_Ball_Scenar: B_65x39_Caseless
|
||||
{
|
||||
class ACE_65x47_Ball_Scenar: B_65x39_Caseless {
|
||||
airFriction=-0.00078;
|
||||
typicalSpeed=820 ;
|
||||
caliber=0.9;
|
||||
ACE_caliber=0.264;
|
||||
ACE_bulletLength=1.364;
|
||||
ACE_bulletMass=139;
|
||||
@ -144,10 +165,27 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={730, 760, 790, 820, 830};
|
||||
ACE_barrelLengths[]={10, 16, 20, 24, 26};
|
||||
};
|
||||
class ACE_65_Creedmor_Ball: B_65x39_Caseless {
|
||||
airFriction=-0.000651;
|
||||
typicalSpeed=860 ;
|
||||
caliber=1.1;
|
||||
ACE_caliber=0.264;
|
||||
ACE_bulletLength=1.426;
|
||||
ACE_bulletMass=140;
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||
ACE_ballisticCoefficients[]={0.317};
|
||||
ACE_velocityBoundaries[]={};
|
||||
ACE_standardAtmosphere="ICAO";
|
||||
ACE_dragModel=7;
|
||||
ACE_muzzleVelocities[]={750, 820, 840, 852, 860};
|
||||
ACE_barrelLengths[]={10, 16, 20, 24, 26};
|
||||
};
|
||||
class B_762x51_Ball : BulletBase {
|
||||
airFriction=-0.001035;
|
||||
typicalSpeed=833;
|
||||
hit=9;
|
||||
tracerStartTime = 0.073; //Based on the British L5A1 which burns out to 1000m
|
||||
tracerEndTime = 2.058; //Time in seconds calculated with ballistics calculator
|
||||
ACE_caliber=0.308;
|
||||
ACE_bulletLength=1.14;
|
||||
ACE_bulletMass=146;
|
||||
@ -165,7 +203,7 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_762x51_Ball_M118LR : B_762x51_Ball {
|
||||
airFriction=-0.0008525;
|
||||
caliber=1.05;
|
||||
caliber=1.8;
|
||||
hit=16;
|
||||
typicalSpeed=790;
|
||||
ACE_caliber=0.308;
|
||||
@ -179,11 +217,27 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={750, 780, 790, 794};
|
||||
ACE_barrelLengths[]={16, 20, 24, 26};
|
||||
};
|
||||
class ACE_762x51_Ball_Mk316_Mod_0 : B_762x51_Ball {
|
||||
airFriction=-0.0008525;
|
||||
caliber=1.8;
|
||||
hit=16;
|
||||
typicalSpeed=790;
|
||||
ACE_caliber=0.308;
|
||||
ACE_bulletLength=1.24;
|
||||
ACE_bulletMass=175;
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2};
|
||||
ACE_ballisticCoefficients[]={0.243};
|
||||
ACE_velocityBoundaries[]={};
|
||||
ACE_standardAtmosphere="ICAO";
|
||||
ACE_dragModel=7;
|
||||
ACE_muzzleVelocities[]={775, 790, 805, 810};
|
||||
ACE_barrelLengths[]={16, 20, 24, 26};
|
||||
};
|
||||
class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball {
|
||||
airFriction=-0.00103;
|
||||
caliber=0.85;
|
||||
caliber=1.5;
|
||||
hit=14;
|
||||
typicalSpeed=890;
|
||||
typicalSpeed=900;
|
||||
ACE_caliber=0.308;
|
||||
ACE_bulletLength=1.24;
|
||||
ACE_bulletMass=130;
|
||||
@ -195,11 +249,27 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={838, 892, 910};
|
||||
ACE_barrelLengths[]={13, 16, 20};
|
||||
};
|
||||
class ACE_762x51_Ball_M993_AP : B_762x51_Ball {
|
||||
airFriction=-0.00103;
|
||||
caliber=2.2;
|
||||
hit=11;
|
||||
typicalSpeed=930;
|
||||
ACE_caliber=0.308;
|
||||
ACE_bulletLength=1.24;
|
||||
ACE_bulletMass=127;
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||
ACE_ballisticCoefficients[]={0.377};
|
||||
ACE_velocityBoundaries[]={};
|
||||
ACE_standardAtmosphere="ICAO";
|
||||
ACE_dragModel=1;
|
||||
ACE_muzzleVelocities[]={875, 910, 930};
|
||||
ACE_barrelLengths[]={13, 16, 20};
|
||||
};
|
||||
class ACE_762x51_Ball_Subsonic : B_762x51_Ball {
|
||||
airFriction=-0.000535;
|
||||
caliber=0.5;
|
||||
caliber=1;
|
||||
hit=6;
|
||||
typicalSpeed=790;
|
||||
typicalSpeed=320;
|
||||
ACE_caliber=0.308;
|
||||
ACE_bulletLength=1.340;
|
||||
ACE_bulletMass=200;
|
||||
@ -211,15 +281,63 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={305, 325, 335, 340};
|
||||
ACE_barrelLengths[]={16, 20, 24, 26};
|
||||
};
|
||||
class ACE_30_06_M1_Ball : B_762x51_Ball {
|
||||
airFriction=-0.0009;
|
||||
typicalSpeed=800;
|
||||
caliber=2.0;
|
||||
hit=10;
|
||||
ACE_caliber=0.308;
|
||||
ACE_bulletLength=1.21;
|
||||
ACE_bulletMass=174;
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||
ACE_ballisticCoefficients[]={0.494};
|
||||
ACE_velocityBoundaries[]={};
|
||||
ACE_standardAtmosphere="ASM";
|
||||
ACE_dragModel=1;
|
||||
ACE_muzzleVelocities[]={700, 785, 800, 830, 840};
|
||||
ACE_barrelLengths[]={10, 16, 20, 24, 26};
|
||||
};
|
||||
class ACE_7_Remington_Magnum_Ball : B_762x51_Ball {
|
||||
airFriction=-0.0008;
|
||||
typicalSpeed=820;
|
||||
caliber=2.1;
|
||||
hit=8;
|
||||
ACE_caliber=0.284;
|
||||
ACE_bulletLength=1.529;
|
||||
ACE_bulletMass=180;
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||
ACE_ballisticCoefficients[]={0.345};
|
||||
ACE_velocityBoundaries[]={};
|
||||
ACE_standardAtmosphere="ICAO";
|
||||
ACE_dragModel=7;
|
||||
ACE_muzzleVelocities[]={720, 780, 812, 822, 830};
|
||||
ACE_barrelLengths[]={10, 16, 20, 24, 26};
|
||||
};
|
||||
class ACE_243_Winchester_Ball : B_762x51_Ball {
|
||||
airFriction=-0.00095;
|
||||
typicalSpeed=915;
|
||||
caliber=2.3;
|
||||
hit=6;
|
||||
ACE_caliber=0.243;
|
||||
ACE_bulletLength=1.282;
|
||||
ACE_bulletMass=180;
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||
ACE_ballisticCoefficients[]={0.278};
|
||||
ACE_velocityBoundaries[]={};
|
||||
ACE_standardAtmosphere="ICAO";
|
||||
ACE_dragModel=7;
|
||||
ACE_muzzleVelocities[]={830, 875, 900, 915, 920};
|
||||
ACE_barrelLengths[]={10, 16, 20, 24, 26};
|
||||
};
|
||||
class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball {
|
||||
airFriction=-0.000830;
|
||||
caliber=1.08;
|
||||
caliber=1.8;
|
||||
hit=17;
|
||||
typicalSpeed=900;
|
||||
ACE_caliber=0.308;
|
||||
ACE_bulletLength=1.353;
|
||||
ACE_bulletMass=190;
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2};
|
||||
ACE_ballisticCoefficients[]={0.268};
|
||||
ACE_velocityBoundaries[]={};
|
||||
ACE_standardAtmosphere="ICAO";
|
||||
@ -229,13 +347,13 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball {
|
||||
airFriction=-0.000815;
|
||||
caliber=1.12;
|
||||
caliber=1.9;
|
||||
hit=18;
|
||||
typicalSpeed=867;
|
||||
ACE_caliber=0.308;
|
||||
ACE_bulletLength=1.489;
|
||||
ACE_bulletMass=220;
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2};
|
||||
ACE_ballisticCoefficients[]={0.310};
|
||||
ACE_velocityBoundaries[]={};
|
||||
ACE_standardAtmosphere="ICAO";
|
||||
@ -245,7 +363,7 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball {
|
||||
airFriction=-0.00076;
|
||||
caliber=1.15;
|
||||
caliber=2.0;
|
||||
hit=19;
|
||||
typicalSpeed=853;
|
||||
ACE_caliber=0.308;
|
||||
@ -275,7 +393,7 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_762x54_Ball_7N14 : B_762x51_Ball {
|
||||
airFriction=-0.001023;
|
||||
caliber=0.95;
|
||||
caliber=1.5;
|
||||
hit=15;
|
||||
typicalSpeed=820;
|
||||
ACE_caliber=0.312;
|
||||
@ -292,9 +410,11 @@ class CfgAmmo {
|
||||
class B_762x54_Tracer_Green;
|
||||
class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green {
|
||||
airFriction=-0.001023;
|
||||
caliber=0.9;
|
||||
caliber=1.5;
|
||||
hit=15;
|
||||
typicalSpeed=800;
|
||||
tracerStartTime = 0.073; //Based on the 7T2 which burns three seconds
|
||||
tracerEndTime = 3;
|
||||
ACE_caliber=0.312;
|
||||
ACE_bulletLength=1.14;
|
||||
ACE_bulletMass=149;
|
||||
@ -308,7 +428,7 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_762x35_Ball : B_762x51_Ball {
|
||||
airFriction=-0.000821;
|
||||
caliber=0.9;
|
||||
caliber=1.5;
|
||||
hit=11;
|
||||
typicalSpeed=790;
|
||||
ACE_caliber=0.308;
|
||||
@ -325,6 +445,7 @@ class CfgAmmo {
|
||||
class ACE_762x39_Ball : B_762x51_Ball {
|
||||
airFriction=-0.0015168;
|
||||
hit=12;
|
||||
caliber=1.5;
|
||||
typicalSpeed=716;
|
||||
ACE_caliber=0.308;
|
||||
ACE_bulletLength=1.14;
|
||||
@ -337,10 +458,13 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={650, 716, 750};
|
||||
ACE_barrelLengths[]={10, 16.3, 20};
|
||||
};
|
||||
class ACE_762x39_Ball_57N231P : B_762x51_Tracer_Yellow {
|
||||
class ACE_762x39_Ball_57N231P : B_762x54_Tracer_Green {
|
||||
airFriction=-0.0015168;
|
||||
hit=12;
|
||||
caliber=1.5;
|
||||
typicalSpeed=716;
|
||||
tracerStartTime = 0.073; //57N231P tracer burns out to 800m
|
||||
tracerEndTime = 2.082; //Time in seconds calculated with ballistics calculator
|
||||
ACE_caliber=0.308;
|
||||
ACE_bulletLength=1.14;
|
||||
ACE_bulletMass=117;
|
||||
@ -430,6 +554,7 @@ class CfgAmmo {
|
||||
class ACE_303_Ball : ACE_762x51_Ball_M118LR {
|
||||
airFriction=-0.00083;
|
||||
typicalSpeed=761;
|
||||
caliber=2.0;
|
||||
ACE_caliber=0.311;
|
||||
ACE_bulletLength=1.227;
|
||||
ACE_bulletMass=174;
|
||||
@ -447,7 +572,6 @@ class CfgAmmo {
|
||||
ACE_caliber=0.366;
|
||||
ACE_bulletLength=1.350;
|
||||
ACE_bulletMass=230;
|
||||
ACE_transonicStabilityCoef=1;
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||
ACE_ballisticCoefficients[]={0.368};
|
||||
ACE_velocityBoundaries[]={};
|
||||
@ -517,7 +641,6 @@ class CfgAmmo {
|
||||
class ACE_338_Ball : B_338_Ball {
|
||||
timeToLive=10;
|
||||
airFriction=-0.000535;
|
||||
caliber=1.55;
|
||||
typicalSpeed=826;
|
||||
ACE_caliber=0.338;
|
||||
ACE_bulletLength=1.70;
|
||||
@ -533,7 +656,7 @@ class CfgAmmo {
|
||||
class ACE_338_Ball_API526 : B_338_Ball {
|
||||
timeToLive=10;
|
||||
airFriction=-0.000673;
|
||||
caliber=2.4;
|
||||
caliber=2.8;
|
||||
typicalSpeed=826;
|
||||
ACE_caliber=0.338;
|
||||
ACE_bulletLength=1.535;
|
||||
@ -563,7 +686,7 @@ class CfgAmmo {
|
||||
class B_127x99_Ball : BulletBase {
|
||||
timeToLive=10;
|
||||
airFriction=-0.0006;
|
||||
typicalSpeed=853;
|
||||
typicalSpeed=900;
|
||||
ACE_caliber=0.510;
|
||||
ACE_bulletLength=2.310;
|
||||
ACE_bulletMass=647;
|
||||
@ -572,13 +695,31 @@ class CfgAmmo {
|
||||
ACE_velocityBoundaries[]={};
|
||||
ACE_standardAtmosphere="ASM";
|
||||
ACE_dragModel=1;
|
||||
ACE_muzzleVelocities[]={853};
|
||||
ACE_muzzleVelocities[]={900};
|
||||
ACE_barrelLengths[]={29};
|
||||
};
|
||||
class ACE_127x99_API : BulletBase {
|
||||
timeToLive=10;
|
||||
airFriction=-0.0006;
|
||||
typicalSpeed=900;
|
||||
hit=25;
|
||||
caliber=4.0;
|
||||
ACE_caliber=0.510;
|
||||
ACE_bulletLength=2.310;
|
||||
ACE_bulletMass=648;
|
||||
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
|
||||
ACE_ballisticCoefficients[]={0.670};
|
||||
ACE_velocityBoundaries[]={};
|
||||
ACE_standardAtmosphere="ASM";
|
||||
ACE_dragModel=1;
|
||||
ACE_muzzleVelocities[]={900};
|
||||
ACE_barrelLengths[]={29};
|
||||
};
|
||||
class ACE_127x99_Ball_AMAX : B_127x99_Ball {
|
||||
timeToLive=10;
|
||||
airFriction=-0.000374;
|
||||
typicalSpeed=860;
|
||||
caliber=3.0;
|
||||
ACE_caliber=0.510;
|
||||
ACE_bulletLength=2.540;
|
||||
ACE_bulletMass=750;
|
||||
|
@ -42,13 +42,21 @@ class CfgMagazines {
|
||||
class ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim: 30Rnd_65x39_caseless_green_mag_Tracer {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_65x39_Caseless_green_Tracer_Dim";
|
||||
displayName = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimName";
|
||||
displayNameShort = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimNameShort";
|
||||
descriptionShort = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimDescription";
|
||||
displayName = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimName";
|
||||
displayNameShort = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort";
|
||||
descriptionShort = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimDescription";
|
||||
};
|
||||
|
||||
class 30Rnd_556x45_Stanag: CA_Magazine {
|
||||
};
|
||||
class ACE_30Rnd_556x45_Stanag_M995_AP_mag: 30Rnd_556x45_Stanag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_556x45_Ball_M995_AP";
|
||||
displayName = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_Name";
|
||||
displayNameShort = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_NameShort";
|
||||
descriptionShort = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_Description";
|
||||
initSpeed = 1046;
|
||||
};
|
||||
class ACE_30Rnd_556x45_Stanag_Mk262_mag: 30Rnd_556x45_Stanag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_556x45_Ball_Mk262";
|
||||
@ -123,6 +131,15 @@ class CfgMagazines {
|
||||
descriptionShort = "$STR_ACE_10Rnd_762x51_M118LR_Mag_Description";
|
||||
initSpeed = 780;
|
||||
};
|
||||
class ACE_10Rnd_762x51_Mk316_Mod_0_Mag: 10Rnd_762x51_Mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_762x51_Ball_Mk316_Mod_0";
|
||||
count = 10;
|
||||
displayName = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_Name";
|
||||
displayNameShort = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_NameShort";
|
||||
descriptionShort = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_Description";
|
||||
initSpeed = 790;
|
||||
};
|
||||
class ACE_10Rnd_762x51_Mk319_Mod_0_Mag: 10Rnd_762x51_Mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_762x51_Ball_Mk319_Mod_0";
|
||||
@ -132,6 +149,15 @@ class CfgMagazines {
|
||||
descriptionShort = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Description";
|
||||
initSpeed = 900;
|
||||
};
|
||||
class ACE_10Rnd_762x51_M993_AP_Mag: 10Rnd_762x51_Mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_762x51_Ball_M993_AP";
|
||||
count = 10;
|
||||
displayName = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_Name";
|
||||
displayNameShort = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_NameShort";
|
||||
descriptionShort = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_Description";
|
||||
initSpeed = 920;
|
||||
};
|
||||
class ACE_20Rnd_762x51_M118LR_Mag: 20Rnd_762x51_Mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_762x51_Ball_M118LR";
|
||||
@ -140,6 +166,15 @@ class CfgMagazines {
|
||||
descriptionShort = "$STR_ACE_20Rnd_762x51_M118LR_Mag_Description";
|
||||
initSpeed = 780;
|
||||
};
|
||||
class ACE_20Rnd_762x51_Mk316_Mod_0_Mag: 20Rnd_762x51_Mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_762x51_Ball_Mk316_Mod_0";
|
||||
count = 20;
|
||||
displayName = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_Name";
|
||||
displayNameShort = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_NameShort";
|
||||
descriptionShort = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_Description";
|
||||
initSpeed = 790;
|
||||
};
|
||||
class ACE_20Rnd_762x51_Mk319_Mod_0_Mag: 20Rnd_762x51_Mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_762x51_Ball_Mk319_Mod_0";
|
||||
@ -148,6 +183,15 @@ class CfgMagazines {
|
||||
descriptionShort = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Description";
|
||||
initSpeed = 900;
|
||||
};
|
||||
class ACE_20Rnd_762x51_M993_AP_Mag: 20Rnd_762x51_Mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_762x51_Ball_M993_AP";
|
||||
count = 20;
|
||||
displayName = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_Name";
|
||||
displayNameShort = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_NameShort";
|
||||
descriptionShort = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_Description";
|
||||
initSpeed = 920;
|
||||
};
|
||||
class ACE_20Rnd_762x67_Mk248_Mod_0_Mag: 20Rnd_762x51_Mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_762x67_Ball_Mk248_Mod_0";
|
||||
@ -179,6 +223,13 @@ class CfgMagazines {
|
||||
displayNameShort = "$STR_ACE_30Rnd_65x47_Scenar_mag_NameShort";
|
||||
descriptionShort = "$STR_ACE_30Rnd_65x47_Scenar_mag_Description";
|
||||
};
|
||||
class ACE_30Rnd_65_Creedmor_mag: 30Rnd_65x39_caseless_mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_65_Creedmor_Ball";
|
||||
displayName = "$STR_ACE_30Rnd_65_Creedmor_mag_Name";
|
||||
displayNameShort = "$STR_ACE_30Rnd_65_Creedmor_mag_NameShort";
|
||||
descriptionShort = "$STR_ACE_30Rnd_65_Creedmor_mag_Description";
|
||||
};
|
||||
class 10Rnd_338_Mag;
|
||||
class ACE_10Rnd_338_300gr_HPBT_Mag: 10Rnd_338_Mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
@ -204,7 +255,15 @@ class CfgMagazines {
|
||||
displayName = "$STR_ACE_5Rnd_127x99_Mag_Name";
|
||||
displayNameShort = "$STR_ACE_5Rnd_127x99_Mag_NameShort";
|
||||
descriptionShort = "$STR_ACE_5Rnd_127x99_Mag_Description";
|
||||
initSpeed = 853;
|
||||
initSpeed = 900;
|
||||
};
|
||||
class ACE_5Rnd_127x99_API_Mag: 5Rnd_127x108_Mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_127x99_API";
|
||||
displayName = "$STR_ACE_5Rnd_127x99_API_Mag_Name";
|
||||
displayNameShort = "$STR_ACE_5Rnd_127x99_API_Mag_NameShort";
|
||||
descriptionShort = "$STR_ACE_5Rnd_127x99_API_Mag_Description";
|
||||
initSpeed = 900;
|
||||
};
|
||||
class ACE_5Rnd_127x99_AMAX_Mag: 5Rnd_127x108_Mag {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
|
@ -9,11 +9,12 @@ class CfgVehicles {
|
||||
//hitPart = "systemChat str _this";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
class NATO_Box_Base;
|
||||
class Box_NATO_Wps_F: NATO_Box_Base {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||
};
|
||||
};
|
||||
|
||||
@ -26,6 +27,7 @@ class CfgVehicles {
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
||||
};
|
||||
};
|
||||
@ -33,14 +35,18 @@ class CfgVehicles {
|
||||
class Box_NATO_Ammo_F: NATO_Box_Base {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk316_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk316_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk319_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk319_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
||||
};
|
||||
};
|
||||
@ -49,13 +55,18 @@ class CfgVehicles {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk316_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk316_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk319_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk319_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_SD,3);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M993_AP_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M993_AP_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
||||
};
|
||||
};
|
||||
@ -64,8 +75,11 @@ class CfgVehicles {
|
||||
class B_supplyCrate_F: ReammoBox_F {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk316_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk316_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk319_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk319_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,4);
|
||||
@ -76,6 +90,7 @@ class CfgVehicles {
|
||||
class Box_East_Wps_F: EAST_Box_Base {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
||||
};
|
||||
};
|
||||
@ -85,6 +100,7 @@ class CfgVehicles {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Tracer_Dim,1);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
||||
};
|
||||
};
|
||||
@ -92,6 +108,7 @@ class CfgVehicles {
|
||||
class Box_East_Ammo_F: EAST_Box_Base {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
||||
};
|
||||
};
|
||||
@ -99,7 +116,7 @@ class CfgVehicles {
|
||||
class Box_East_Support_F: EAST_Box_Base {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,6);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_SD,3);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
||||
};
|
||||
};
|
||||
@ -107,6 +124,7 @@ class CfgVehicles {
|
||||
class IND_Box_Base;
|
||||
class Box_IND_Wps_F: IND_Box_Base {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_M995_AP_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk262_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk318_mag,4);
|
||||
};
|
||||
@ -120,6 +138,7 @@ class CfgVehicles {
|
||||
|
||||
class Box_IND_Ammo_F: IND_Box_Base {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_M995_AP_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk262_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk318_mag,4);
|
||||
};
|
||||
@ -128,6 +147,7 @@ class CfgVehicles {
|
||||
class FIA_Box_Base_F;
|
||||
class Box_FIA_Wps_F: FIA_Box_Base_F {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_M995_AP_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk262_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk318_mag,4);
|
||||
};
|
||||
@ -135,6 +155,7 @@ class CfgVehicles {
|
||||
|
||||
class Box_FIA_Ammo_F: FIA_Box_Base_F {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_M995_AP_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk262_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk318_mag,4);
|
||||
};
|
||||
@ -142,6 +163,7 @@ class CfgVehicles {
|
||||
|
||||
class I_supplyCrate_F: B_supplyCrate_F {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_M995_AP_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk262_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk318_mag,4);
|
||||
};
|
||||
@ -149,6 +171,7 @@ class CfgVehicles {
|
||||
|
||||
class IG_supplyCrate_F: ReammoBox_F {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_M995_AP_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk262_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk318_mag,4);
|
||||
};
|
||||
@ -157,6 +180,7 @@ class CfgVehicles {
|
||||
class C_supplyCrate_F: ReammoBox_F {
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||
};
|
||||
};
|
||||
|
||||
@ -164,12 +188,16 @@ class CfgVehicles {
|
||||
scope = 2;
|
||||
accuracy = 1000;
|
||||
displayName = "[ACE] Ammo Supply Crate";
|
||||
// TODO: model = "...";
|
||||
model = "\A3\weapons_F\AmmoBoxes\AmmoBox_F";
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
class TransportMagazines {
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_SD,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M993_AP_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M993_AP_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk316_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk316_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk319_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk319_Mod_0_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,4);
|
||||
@ -177,6 +205,7 @@ class CfgVehicles {
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x67_Mk248_Mod_1_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_762x54_Tracer_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_M995_AP_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk262_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Mk318_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Tracer_Dim,4);
|
||||
@ -185,9 +214,11 @@ class CfgVehicles {
|
||||
MACRO_ADDMAGAZINE(ACE_100Rnd_65x39_caseless_mag_Tracer_Dim,4);
|
||||
MACRO_ADDMAGAZINE(ACE_200Rnd_65x39_cased_Box_Tracer_Dim,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_30Rnd_65_Creedmor_mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_API_Mag,4);
|
||||
MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4);
|
||||
};
|
||||
};
|
||||
|
@ -88,7 +88,8 @@ class CfgWeapons {
|
||||
"30Rnd_65x39_caseless_mag",
|
||||
"30Rnd_65x39_caseless_mag_Tracer",
|
||||
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim",
|
||||
"ACE_30Rnd_65x47_Scenar_mag"
|
||||
"ACE_30Rnd_65x47_Scenar_mag",
|
||||
"ACE_30Rnd_65_Creedmor_mag"
|
||||
};
|
||||
initSpeed = -1.018;
|
||||
ACE_barrelTwist=9;
|
||||
@ -381,6 +382,7 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
@ -400,6 +402,7 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
@ -414,6 +417,7 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
@ -428,6 +432,7 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
@ -448,6 +453,7 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
@ -462,6 +468,7 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
@ -476,6 +483,7 @@ class CfgWeapons {
|
||||
"30Rnd_556x45_Stanag_Tracer_Red",
|
||||
"30Rnd_556x45_Stanag_Tracer_Green",
|
||||
"30Rnd_556x45_Stanag_Tracer_Yellow",
|
||||
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
|
||||
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
|
||||
@ -502,8 +510,10 @@ class CfgWeapons {
|
||||
magazines[] = {
|
||||
"20Rnd_762x51_Mag",
|
||||
"ACE_20Rnd_762x51_Mag_Tracer_Dim",
|
||||
"ACE_20Rnd_762x51_Mk316_Mod_0_Mag",
|
||||
"ACE_20Rnd_762x51_M118LR_Mag",
|
||||
"ACE_20Rnd_762x51_Mk319_Mod_0_Mag",
|
||||
"ACE_20Rnd_762x51_M993_AP_Mag",
|
||||
"ACE_20Rnd_762x51_Mag_SD"
|
||||
};
|
||||
initSpeed = -0.9724;
|
||||
@ -527,6 +537,7 @@ class CfgWeapons {
|
||||
"5Rnd_127x108_Mag",
|
||||
"5Rnd_127x108_APDS_Mag",
|
||||
"ACE_5Rnd_127x99_Mag",
|
||||
"ACE_5Rnd_127x99_API_Mag",
|
||||
"ACE_5Rnd_127x99_AMAX_Mag"
|
||||
};
|
||||
initSpeed = -1.0;
|
||||
@ -550,8 +561,10 @@ class CfgWeapons {
|
||||
magazines[] = {
|
||||
"20Rnd_762x51_Mag",
|
||||
"ACE_20Rnd_762x51_Mag_Tracer_Dim",
|
||||
"ACE_20Rnd_762x51_Mk316_Mod_0_Mag",
|
||||
"ACE_20Rnd_762x51_M118LR_Mag",
|
||||
"ACE_20Rnd_762x51_Mk319_Mod_0_Mag",
|
||||
"ACE_20Rnd_762x51_M993_AP_Mag",
|
||||
"ACE_20Rnd_762x51_Mag_SD"
|
||||
};
|
||||
initSpeed = -0.9843;
|
||||
@ -572,8 +585,10 @@ class CfgWeapons {
|
||||
magazines[] = {
|
||||
"20Rnd_762x51_Mag",
|
||||
"ACE_20Rnd_762x51_Mag_Tracer_Dim",
|
||||
"ACE_20Rnd_762x51_Mk316_Mod_0_Mag",
|
||||
"ACE_20Rnd_762x51_M118LR_Mag",
|
||||
"ACE_20Rnd_762x51_Mk319_Mod_0_Mag",
|
||||
"ACE_20Rnd_762x51_M993_AP_Mag",
|
||||
"ACE_20Rnd_762x51_Mag_SD"
|
||||
};
|
||||
initSpeed = -0.9916;
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {"ACE_TargetWall"};
|
||||
units[] = {"ACE_TargetWall","ACE_Box_Ammo"};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
|
@ -256,42 +256,6 @@
|
||||
<Italian>Calibro: 5.56x45 mm Traccianti IR-DIM<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Italian>
|
||||
<Russian>Калибр: 5,56x45 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_556x45_mag_APName">
|
||||
<English>5.56mm 30Rnd AP Mag</English>
|
||||
<Hungarian>5,56 mm Páncéltörő 30-as Tár</Hungarian>
|
||||
<German>5,56 mm 30-Schuss-Magazin AP</German>
|
||||
<Spanish>Cargador de 30 balas AP de 5,56mm</Spanish>
|
||||
<French>Ch. 5,56mm 30Cps AP</French>
|
||||
<Polish>Magazynek 5,56mm 30rd AP</Polish>
|
||||
<Czech>5.56mm 30ks AP Zásobník</Czech>
|
||||
<Portuguese>Carregador de 30 projéteis AP de 5,56mm</Portuguese>
|
||||
<Italian>Caricatore 5.56mm 30Rnd AP</Italian>
|
||||
<Russian>Магазин из 30-ти 5,56 мм бронебойных</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_556x45_mag_APNameShort">
|
||||
<English>5.56mm AP</English>
|
||||
<Hungarian>5,56 mm Páncéltörő</Hungarian>
|
||||
<German>5,56mm AP</German>
|
||||
<Spanish>5,56mm AP</Spanish>
|
||||
<French>5,56mm AP</French>
|
||||
<Polish>5,56mm AP</Polish>
|
||||
<Czech>5.56mm AP</Czech>
|
||||
<Portuguese>5,56mm AP</Portuguese>
|
||||
<Italian>5.56mm AP</Italian>
|
||||
<Russian>5,56 мм бронебойные</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_556x45_mag_APDescription">
|
||||
<English>Caliber: 5.56x45 mm AP<br />Rounds: 30<br />Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</English>
|
||||
<Hungarian>Kaliber: 5,56x45 mm Páncéltörő<br />Lövedékek: 30<br />Használható: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Hungarian>
|
||||
<German>Kaliber: 5,56x45 mm AP<br />Patronen: 30<br />Eingesetzt von: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</German>
|
||||
<Spanish>Calibre: 5,56x45 mm AP<br />Balas: 30<br />Se usa en: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Spanish>
|
||||
<French>Calibre: 5,56x45 mm AP<br />Cartouches: 30<br />Utilisé dans: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</French>
|
||||
<Polish>Kaliber: 5,56x45 mm AP<br />Pociski: 30<br />Używane w: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Polish>
|
||||
<Czech>Ráže: 5.56x45 mm AP<br />Munice: 30<br />Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Czech>
|
||||
<Portuguese>Calibre: 5,56x45 mm AP<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Portuguese>
|
||||
<Italian>Calibro: 5.56x45 mm AP<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Italian>
|
||||
<Russian>Калибр: 5,56x45 мм бронебойные<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
|
||||
</Key>
|
||||
<!-- 7.62x51mm -->
|
||||
<Key ID="STR_ACE_20Rnd_762x51_mag_TracerName">
|
||||
<English>7.62mm 20rnd Tracer Mag</English>
|
||||
@ -401,42 +365,6 @@
|
||||
<Italian>Calibro: 7.62x51 mm Sil.<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
||||
<Russian>Калибр: 7,62x51 мм дозвуковые<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_20Rnd_762x51_mag_APName">
|
||||
<English>7.62mm 20Rnd AP Mag</English>
|
||||
<Hungarian>7,62 mm Páncéltörő 20-as Tár</Hungarian>
|
||||
<German>7,62 mm 20-Schuss-Magazin AP</German>
|
||||
<Spanish>Cargador de 20 balas AP de 7,62mm</Spanish>
|
||||
<French>Ch. 7,62mm 20Cps AP</French>
|
||||
<Polish>Magazynek 7,62mm 20rd AP</Polish>
|
||||
<Czech>7.62mm 20ks AP Zásobník</Czech>
|
||||
<Portuguese>Carregador de 20 projéteis AP de 7,62mm</Portuguese>
|
||||
<Italian>Caricatore 7.62mm 20Rnd AP</Italian>
|
||||
<Russian>Магазин из 20-ти 7,62 мм бронебойных</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_20Rnd_762x51_mag_APNameShort">
|
||||
<English>7.62mm AP</English>
|
||||
<Hungarian>7,62 mm Páncéltörő</Hungarian>
|
||||
<German>7,62mm AP</German>
|
||||
<Spanish>7,62mm AP</Spanish>
|
||||
<French>7,62mm AP</French>
|
||||
<Polish>7,62mm AP</Polish>
|
||||
<Czech>7.62mm AP</Czech>
|
||||
<Portuguese>7,62mm AP</Portuguese>
|
||||
<Italian>7.62mm AP</Italian>
|
||||
<Russian>7,62 мм бронебойные</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_20Rnd_762x51_mag_APDescription">
|
||||
<English>Caliber: 7.62x51 mm AP<br />Rounds: 20<br />Used in: Mk18 ABR</English>
|
||||
<Hungarian>Kaliber: 7,62x51 mm Páncéltörő<br />Lövedékek: 20<br />Használható: Mk18 ABR</Hungarian>
|
||||
<German>Kaliber: 7,62x51 mm AP<br />Patronen: 20<br />Eingesetzt von: EBR</German>
|
||||
<Spanish>Calibre: 7,62x51 mm AP<br />Balas: 20<br />Se usa en: Mk18 ABR</Spanish>
|
||||
<French>Calibre: 7,62x51 mm AP<br />Cartouches: 20<br />Utilisé dans: EBR</French>
|
||||
<Polish>Kaliber: 7,62x51 mm AP<br />Pociski: 20<br />Używane w: Mk18 ABR</Polish>
|
||||
<Czech>Ráže: 7.62x51 mm AP<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
||||
<Portuguese>Calibre: 7,62x51 mm AP<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
||||
<Italian>Calibro: 7.62x51 mm AP<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
||||
<Russian>Калибр: 7,62x51 мм дозвуковые<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
||||
</Key>
|
||||
<!-- .338 Norma Magnum -->
|
||||
<Key ID="STR_ACE_130Rnd_338_Mag_TracerName">
|
||||
<English>.338 NM 130Rnd Tracer Belt</English>
|
||||
@ -564,31 +492,6 @@
|
||||
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
||||
<Russian>Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 10<br />Используются с: Cyrus</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APName">
|
||||
<English>9.3mm 10Rnd AP Mag</English>
|
||||
<German>9,3mm 10-Schuss-Magazin Hartkern</German>
|
||||
<Polish>Magazynek 9,3mm 10rd AP</Polish>
|
||||
<French>Chargeur 9.3mm 10Cps AP</French>
|
||||
<Spanish>Cargador de 10 balas AP de 9.3mm</Spanish>
|
||||
<Russian>Магазин из 10-ти 9,3 мм бронебойных</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APNameShort">
|
||||
<English>9.3mm AP</English>
|
||||
<German>9,3mm AP</German>
|
||||
<Polish>9,3mm AP</Polish>
|
||||
<Czech>9.3mm AP</Czech>
|
||||
<French>9.3mm AP</French>
|
||||
<Spanish>9.3mm AP</Spanish>
|
||||
<Russian>9,3 мм бронебойные</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APDescription">
|
||||
<English>Caliber: 9.3x64mm AP<br />Rounds: 10<br />Used in: Cyrus</English>
|
||||
<German>Kaliber: 9,3x64mm Hartkern<br />Schuss: 10<br />Verwendet für: Cyrus</German>
|
||||
<Polish>Kaliber: 9,3x64 mm AP<br />Pociski: 10<br />Używany w: Cyrus</Polish>
|
||||
<French>Calibre: 9.3x64mm AP<br />Cartouches: 10<br />Utilisé dans: Cyrus</French>
|
||||
<Spanish>Calibre: 9.3x64mm AP<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
||||
<Russian>Калибр: 9,3x64 мм бронебойные<br />Патронов: 10<br />Используются с: Cyrus</Russian>
|
||||
</Key>
|
||||
<!-- 9.3x64mm 150Rnd Belt-->
|
||||
<Key ID="STR_ACE_150Rnd_93x64_Mag_TracerName">
|
||||
<English>9.3mm 150Rnd Tracer Belt</English>
|
||||
@ -743,7 +646,7 @@
|
||||
<Russian>6,5 мм ИК-трассирующие</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimDescription">
|
||||
<English>6.5mm 100Rnd Tracer IR-DIM Mag</English>
|
||||
<English>6.5mm 100Rnd Tracer IR-DIM Mag<br />Rounds: 100<br />Used in: MX LSW</English>
|
||||
<Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
|
||||
<French>Chargeur 6.5mm 100Rnd Traçante IR-DIM</French>
|
||||
<Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
||||
@ -764,7 +667,7 @@
|
||||
<Russian>6,5 мм ИК-трассирующие</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimDescription">
|
||||
<English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
|
||||
<English>6.5mm 200Rnd Tracer IR-DIM Belt<br />Rounds: 200<br />Used in: Stoner 99 LMG</English>
|
||||
<Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
|
||||
<French>Bande 6.5mm 200Cps Traçante IR-DIM</French>
|
||||
<Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
||||
@ -781,7 +684,7 @@
|
||||
<English>5.56mm Mk262</English>
|
||||
<Polish>5,56mm Mk262</Polish>
|
||||
<French>5.56mm Mk262</French>
|
||||
<Spanish>5.56mm (Mk262)</Spanish>
|
||||
<Spanish>5.56mm Mk262</Spanish>
|
||||
<Russian>5,56 мм Mk262</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Description">
|
||||
@ -793,16 +696,16 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Name">
|
||||
<English>5.56mm 30Rnd Mag (Mk318)</English>
|
||||
<Polish>Magazynek 5,56mm 30rd Mk318</Polish>
|
||||
<Polish>Magazynek 5,56mm 30rd (Mk318)</Polish>
|
||||
<French>5.56mm 30Cps (Mk318)</French>
|
||||
<Spanish>Cargador de 30 balas de 5.56mm (Mk318)</Spanish>
|
||||
<Russian>Магазин из 30-ти 5.56 мм Mk318</Russian>
|
||||
<Russian>Магазин из 30-ти 5.56 мм (Mk318)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_NameShort">
|
||||
<English>5.56mm Mk318</English>
|
||||
<Polish>5,56mm Mk318</Polish>
|
||||
<French>5.56mm Mk318</French>
|
||||
<Spanish>5.56mm (Mk318)</Spanish>
|
||||
<Spanish>5.56mm Mk318</Spanish>
|
||||
<Russian>5.56 мм Mk318</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Description">
|
||||
@ -812,6 +715,27 @@
|
||||
<Spanish>Calibre: 5.56x45 mm NATO (Mk318)<br />Balas: 30</Spanish>
|
||||
<Russian>Калибр: 5,56x45 мм NATO (Mk318)<br />Патронов: 30</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_Name">
|
||||
<English>5.56mm 30Rnd Mag (M995 AP)</English>
|
||||
<Polish>Magazynek 5,56mm 30rd (M995 AP)</Polish>
|
||||
<French>5.56mm 30Cps (M995 AP)</French>
|
||||
<Spanish>Cargador de 30 balas de 5.56mm (M995 AP)</Spanish>
|
||||
<Russian>Магазин из 30-ти 5.56 мм (M995 AP)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_NameShort">
|
||||
<English>5.56mm AP</English>
|
||||
<Polish>5,56mm AP</Polish>
|
||||
<French>5.56mm AP</French>
|
||||
<Spanish>5.56mm AP</Spanish>
|
||||
<Russian>5.56 мм AP</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_Description">
|
||||
<English>Caliber: 5.56x45 mm NATO (M995 AP)<br />Rounds: 30</English>
|
||||
<Polish>Kaliber: 5,56x45 mm NATO (M995 AP)<br />Pociski: 30</Polish>
|
||||
<French>Calibre: 5.56x45 mm NATO (M995 AP)<br />Cartouches: 30</French>
|
||||
<Spanish>Calibre: 5.56x45 mm NATO (M995 AP)<br />Balas: 30</Spanish>
|
||||
<Russian>Калибр: 5,56x45 мм NATO (M995 AP)<br />Патронов: 30</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_Name">
|
||||
<English>7.62mm 10Rnd Mag (M118LR)</English>
|
||||
<Polish>Magazynek 7,62mm 10rd (M118LR)</Polish>
|
||||
@ -854,6 +778,48 @@
|
||||
<Spanish>Calibre: 7.62x51 mm NATO (M118LR)<br />Balas: 20</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 20</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_Name">
|
||||
<English>7.62mm 10Rnd Mag (Mk316 Mod 0)</English>
|
||||
<Polish>Magazynek 7,62mm 10rd (Mk316 Mod 0)</Polish>
|
||||
<French>7.62mm 10Cps (Mk316 Mod 0)</French>
|
||||
<Spanish>Cargador de 10 balas de 7.62mm (Mk316 Mod 0)</Spanish>
|
||||
<Russian>Магазин из 10-ти 7,62 мм (Mk316 Mod 0)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_NameShort">
|
||||
<English>7.62mm Mk316</English>
|
||||
<Polish>7,62mm Mk316</Polish>
|
||||
<French>7.62mm Mk316</French>
|
||||
<Spanish>7.62mm Mk316</Spanish>
|
||||
<Russian>7,62 мм Mk316</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_Description">
|
||||
<English>Caliber: 7.62x51 mm NATO (Mk316 Mod 0)<br />Rounds: 10</English>
|
||||
<Polish>Kaliber: 7,62x51 mm NATO (Mk316 Mod 0)<br />Pociski: 10</Polish>
|
||||
<French>Calibre: 7.62x51 mm NATO (Mk316 Mod 0)<br />Cartouches: 10</French>
|
||||
<Spanish>Calibre: 7.62x51 mm NATO (Mk316 Mod 0)<br />Balas: 10</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 10</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_Name">
|
||||
<English>7.62mm 20Rnd Mag (Mk316 Mod 0)</English>
|
||||
<Polish>Magazynek 7,62mm 20rd (Mk316 Mod 0)</Polish>
|
||||
<French>7.62mm 20Cps (Mk316 Mod 0)</French>
|
||||
<Spanish>Cargador de 20 balas de 7.62mm (Mk316 Mod 0)</Spanish>
|
||||
<Russian>Магазин из 20-ти 7,62 мм (Mk316 Mod 0)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_NameShort">
|
||||
<English>7.62mm Mk316</English>
|
||||
<Polish>7,62mm Mk316</Polish>
|
||||
<French>7.62mm Mk316</French>
|
||||
<Spanish>7.62mm Mk316</Spanish>
|
||||
<Russian>7,62 мм Mk316</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_Description">
|
||||
<English>Caliber: 7.62x51 mm NATO (Mk316 Mod 0)<br />Rounds: 20</English>
|
||||
<Polish>Kaliber: 7,62x51 mm NATO (Mk316 Mod 0)<br />Pociski: 20</Polish>
|
||||
<French>Calibre: 7.62x51 mm NATO (Mk316 Mod 0)<br />Cartouches: 20</French>
|
||||
<Spanish>Calibre: 7.62x51 mm NATO (Mk316 Mod 0)<br />Balas: 20</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 20</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Name">
|
||||
<English>7.62mm 10Rnd Mag (Mk319 Mod 0)</English>
|
||||
<Polish>Magazynek 7,62mm 10rd (Mk319 Mod 0)</Polish>
|
||||
@ -896,6 +862,48 @@
|
||||
<Spanish>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)<br />Balas: 20</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 20</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_762x51_M993_AP_Mag_Name">
|
||||
<English>7.62mm 10Rnd Mag (M993 AP)</English>
|
||||
<Polish>Magazynek 7,62mm 10rd (M993 AP)</Polish>
|
||||
<French>7.62mm 10Cps (M993 AP)</French>
|
||||
<Spanish>Cargador de 10 balas de 7.62mm (M993 AP)</Spanish>
|
||||
<Russian>Магазин из 10-ти 7,62 мм (M993 AP)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_762x51_M993_AP_Mag_NameShort">
|
||||
<English>7.62mm AP</English>
|
||||
<Polish>7,62mm AP</Polish>
|
||||
<French>7.62mm AP</French>
|
||||
<Spanish>7.62mm AP</Spanish>
|
||||
<Russian>7,62mm AP</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_762x51_M993_AP_Mag_Description">
|
||||
<English>Caliber: 7.62x51 mm NATO (M993 AP)<br />Rounds: 10</English>
|
||||
<Polish>Kaliber: 7,62x51 mm NATO (M993 AP)<br />Pociski: 10</Polish>
|
||||
<French>Calibre: 7.62x51 mm NATO (M993 AP)<br />Cartouches: 10</French>
|
||||
<Spanish>Calibre: 7.62x51 mm NATO (M993 AP)<br />Balas: 10</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (M993 AP)<br />Патронов: 10</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_20Rnd_762x51_M993_AP_Mag_Name">
|
||||
<English>7.62mm 20Rnd Mag (M993 AP)</English>
|
||||
<Polish>Magazynek 7,62mm 20rd (M993 AP)</Polish>
|
||||
<French>7.62mm 20Cps (M993 AP)</French>
|
||||
<Spanish>Cargador de 20 balas de 7.62mm (M993 AP)</Spanish>
|
||||
<Russian>Магазин из 20-ти 7,62 мм (M993 AP)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_20Rnd_762x51_M993_AP_Mag_NameShort">
|
||||
<English>7.62mm AP</English>
|
||||
<Polish>7,62mm AP</Polish>
|
||||
<French>7.62mm AP</French>
|
||||
<Spanish>7.62mm AP</Spanish>
|
||||
<Russian>7,62 мм AP</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_20Rnd_762x51_M993_AP_Mag_Description">
|
||||
<English>Caliber: 7.62x51 mm NATO (M993 AP)<br />Rounds: 20</English>
|
||||
<Polish>Kaliber: 7,62x51 mm NATO (M993 AP)<br />Pociski: 20</Polish>
|
||||
<French>Calibre: 7.62x51 mm NATO (M993 AP)<br />Cartouches: 20</French>
|
||||
<Spanish>Calibre: 7.62x51 mm NATO (M993 AP)<br />Balas: 20</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (M993 AP)<br />Патронов: 20</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Name">
|
||||
<English>7.62mm 20Rnd Mag (Mk248 Mod 0)</English>
|
||||
<Polish>Magazynek 7,62mm 20rd (Mk248 Mod 0)</Polish>
|
||||
@ -967,19 +975,34 @@
|
||||
<Russian>Магазин из 30-ти 6,5x47 мм (HPBT Scenar)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_NameShort">
|
||||
<English>6.5mm Scenar</English>
|
||||
<French>6.5mm Scenar</French>
|
||||
<Spanish>6.5mm Scenar</Spanish>
|
||||
<Polish>6,5mm Scenar</Polish>
|
||||
<Russian>6,5 мм Scenar</Russian>
|
||||
<English>6.5mm Lapua</English>
|
||||
<French>6.5mm Lapua</French>
|
||||
<Spanish>6.5mm Lapua</Spanish>
|
||||
<Polish>6,5mm Lapua</Polish>
|
||||
<Russian>6,5 мм Lapua</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_Description">
|
||||
<English>Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30</English>
|
||||
<English>Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30<br />Used in: MXM</English>
|
||||
<French>Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 30</French>
|
||||
<Spanish>Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 30</Spanish>
|
||||
<Polish>Kaliber: 6,5x47 mm (HPBT Scenar)<br />Pociski: 30</Polish>
|
||||
<Russian>Калибр: 6,5x47 мм (HPBT Scenar)<br />Патронов: 30</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_65_Creedmor_mag_Name">
|
||||
<English>6.5mm Creedmor 30Rnd Mag</English>
|
||||
<Polish>Magazynek 6,5mm Creedmor 30rd</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_65_Creedmor_mag_NameShort">
|
||||
<English>6.5mm CM</English>
|
||||
<French>6.5mm CM</French>
|
||||
<Spanish>6.5mm CM</Spanish>
|
||||
<Polish>6,5mm CM</Polish>
|
||||
<Russian>6,5 мм CM</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_30Rnd_65_Creedmor_mag_Description">
|
||||
<English>Caliber: 6.5mm Creedmor<br />Rounds: 30<br />Used in: MXM</English>
|
||||
<Polish>Kaliber: 6,5mm Creedmor<br />Pociski: 30<br />Używany w: MXM</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_Name">
|
||||
<English>.338 10Rnd Mag (300gr Sierra MatchKing HPBT)</English>
|
||||
<French>.338 10 Cps (300gr Sierra MatchKing HPBT)</French>
|
||||
@ -1043,6 +1066,24 @@
|
||||
<Polish>Kaliber: 12,7x99 mm<br />Pociski: 5</Polish>
|
||||
<Russian>Калибр: 12,7x99 мм<br />Патронов: 5</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_5Rnd_127x99_API_Mag_Name">
|
||||
<English>12.7x99mm API 5Rnd Mag</English>
|
||||
<French>12.7x99mm API 5Cps</French>
|
||||
<Spanish>Cargador de 5 balas de 12.7x99mm API</Spanish>
|
||||
<Polish>Magazynek 12,7x99mm API 5rd</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_5Rnd_127x99_API_Mag_NameShort">
|
||||
<English>12.7mm API</English>
|
||||
<French>12.7mm API</French>
|
||||
<Spanish>12.7mm API</Spanish>
|
||||
<Polish>12,7mm API</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_5Rnd_127x99_API_Mag_Description">
|
||||
<English>Caliber: 12.7x99mm API<br />Rounds: 5</English>
|
||||
<French>Calibre: 12.7x99mm API<br />Cartouches: 5</French>
|
||||
<Spanish>Calibre: 12.7x99mm API<br />Balas: 5</Spanish>
|
||||
<Polish>Kaliber: 12,7x99 mm API<br />Pociski: 5</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Name">
|
||||
<English>12.7x99mm 5Rnd Mag (AMAX)</English>
|
||||
<French>12.7x99mm 5Rnd Mag (AMAX)</French>
|
||||
|
@ -101,25 +101,20 @@ class CfgVehicles {
|
||||
#define MACRO_LOADUNLOADCAPTIVE \
|
||||
class ACE_Actions { \
|
||||
class ACE_MainActions { \
|
||||
selection = ""; \
|
||||
class ACE_LoadCaptive { \
|
||||
class GVAR(LoadCaptive) { \
|
||||
displayName = "$STR_ACE_Captives_LoadCaptive"; \
|
||||
distance = 4; \
|
||||
condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \
|
||||
statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \
|
||||
exceptions[] = {"isNotEscorting"}; \
|
||||
showDisabled = 0; \
|
||||
priority = 1.2; \
|
||||
hotkey = "L"; \
|
||||
}; \
|
||||
class ACE_UnloadCaptive { \
|
||||
class GVAR(UnloadCaptive) { \
|
||||
displayName = "$STR_ACE_Captives_UnloadCaptive"; \
|
||||
distance = 4; \
|
||||
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \
|
||||
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive)); \
|
||||
showDisabled = 0; \
|
||||
priority = 1.2; \
|
||||
hotkey = "C"; \
|
||||
}; \
|
||||
}; \
|
||||
};
|
||||
|
@ -22,7 +22,7 @@ PARAMS_3(_unit,_target,_state);
|
||||
if (_state) then {
|
||||
if (_unit getVariable [QGVAR(isEscorting), false]) exitWith {};
|
||||
|
||||
[_unit, _target] call EFUNC(common,claim);
|
||||
[_unit, _target, false] call EFUNC(common,claim);
|
||||
_unit setVariable [QGVAR(isEscorting), true, true];
|
||||
|
||||
_target attachTo [_unit, [0, 1, 0]];
|
||||
@ -34,8 +34,7 @@ if (_state) then {
|
||||
{[(_this select 0), ((_this select 0) getVariable [QGVAR(escortedUnit), objNull]), false] call FUNC(doEscortCaptive);},
|
||||
nil, 20, false, true, "", QUOTE(!isNull (GETVAR(_target,QGVAR(escortedUnit),objNull)))];
|
||||
|
||||
private "_escortFnc";
|
||||
_escortFnc = {
|
||||
[{
|
||||
EXPLODE_3_PVT((_this select 0),_unit,_target,_actionID);
|
||||
if (_unit getVariable [QGVAR(isEscorting), false]) then {
|
||||
if (!alive _target || {!alive _unit} || {!canStand _target} || {!canStand _unit} || {_target getVariable ["ACE_isUnconscious", false]} || {_unit getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo _unit)}) then {
|
||||
@ -45,13 +44,12 @@ if (_state) then {
|
||||
|
||||
if (!(_unit getVariable [QGVAR(isEscorting), false])) then {
|
||||
[(_this select 1)] call cba_fnc_removePerFrameHandler;
|
||||
[objNull, _target] call EFUNC(common,claim);
|
||||
[objNull, _target, false] call EFUNC(common,claim);
|
||||
detach _target;
|
||||
_unit removeAction _actionID;
|
||||
_unit setVariable [QGVAR(escortedUnit), objNull, true];
|
||||
};
|
||||
};
|
||||
[_escortFnc, 0, [_unit, _target, _actionID]] call CBA_fnc_addPerFrameHandler;
|
||||
}, 0, [_unit, _target, _actionID]] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
} else {
|
||||
_unit setVariable [QGVAR(isEscorting), false, true];
|
||||
|
@ -97,14 +97,16 @@ if (!hasInterface) exitWith {};
|
||||
call COMPILE_FILE(scripts\assignedItemFix);
|
||||
call COMPILE_FILE(scripts\initScrollWheel);
|
||||
|
||||
0 spawn {
|
||||
while {true} do {
|
||||
waitUntil {!isNull (findDisplay 46)}; sleep 0.1;
|
||||
findDisplay 46 displayAddEventHandler ["MouseZChanged", QUOTE( _this call GVAR(onScrollWheel) )];
|
||||
[false] call FUNC(disableUserInput);
|
||||
waitUntil {isNull (findDisplay 46)};
|
||||
};
|
||||
DFUNC(mouseZHandler) = {
|
||||
waitUntil {!isNull (findDisplay 46)}; sleep 0.1;
|
||||
findDisplay 46 displayAddEventHandler ["MouseZChanged", QUOTE( _this call GVAR(onScrollWheel) )];
|
||||
[false] call FUNC(disableUserInput);
|
||||
};
|
||||
|
||||
addMissionEventHandler ["Loaded", {[] spawn FUNC(mouseZHandler)}];
|
||||
[] spawn FUNC(mouseZHandler);
|
||||
|
||||
|
||||
enableCamShake true;
|
||||
|
||||
// Set the name for the current player
|
||||
|
@ -22,4 +22,4 @@ if !([_unit, _target, []] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||
// a static weapon has to be empty for dragging
|
||||
if ((typeOf _target) isKindOf "StaticWeapon" && {count crew _target > 0}) exitWith {false};
|
||||
|
||||
alive _target && {_target getVariable [QGVAR(canCarry), false]} && {animationState _target in ["", "unconscious"] || (_target getvariable ["ACE_isUnconscious", false]) || (_target isKindOf "CAManBase" && {(_target getHitPointDamage "HitLeftLeg") + (_target getHitPointDamage "HitRightLeg") > 0.4})}
|
||||
alive _target && {_target getVariable [QGVAR(canCarry), false]} && {animationState _target in ["", "unconscious"] || (_target getvariable ["ACE_isUnconscious", false]) || (_target isKindOf "CAManBase" && {(_target getHitPointDamage "HitLegs") > 0.4})}
|
||||
|
@ -22,4 +22,4 @@ if !([_unit, _target, []] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||
// a static weapon has to be empty for dragging
|
||||
if ((typeOf _target) isKindOf "StaticWeapon" && {count crew _target > 0}) exitWith {false};
|
||||
|
||||
alive _target && {_target getVariable [QGVAR(canDrag), false]} && {animationState _target in ["", "unconscious"] || (_target getvariable ["ACE_isUnconscious", false]) || (_target isKindOf "CAManBase" && {(_target getHitPointDamage "HitLeftLeg") + (_target getHitPointDamage "HitRightLeg") > 0.4})};
|
||||
alive _target && {_target getVariable [QGVAR(canDrag), false]} && {animationState _target in ["", "unconscious"] || (_target getvariable ["ACE_isUnconscious", false]) || (_target isKindOf "CAManBase" && {(_target getHitPointDamage "HitLegs") > 0.4})};
|
@ -35,7 +35,7 @@
|
||||
// Conditions: canInteract
|
||||
if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||
// Conditions: specific
|
||||
if !(call FUNC(canUseRangefinder) || FUNC(canUseFCS)) exitWith {false};
|
||||
if !(call FUNC(canUseFCS)) exitWith {false};
|
||||
|
||||
// Statement
|
||||
[vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex), 50] call FUNC(adjustRange);
|
||||
@ -49,7 +49,7 @@
|
||||
// Conditions: canInteract
|
||||
if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||
// Conditions: specific
|
||||
if !(call FUNC(canUseRangefinder) || FUNC(canUseFCS)) exitWith {false};
|
||||
if !(call FUNC(canUseFCS)) exitWith {false};
|
||||
|
||||
// Statement
|
||||
[vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex), -50] call FUNC(adjustRange);
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler. -->
|
||||
<Project name="ACE">
|
||||
<Package name="FlashSuppressors">
|
||||
<Key ID="STR_ACE_muzzle_mzls_H">
|
||||
|
@ -6,99 +6,137 @@ class CfgAmmo {
|
||||
//class ace_arty_105mm_m1_m782_time;
|
||||
//class ace_arty_105mm_m1_m782_prox: ace_arty_105mm_m1_m782_time {};
|
||||
//class ace_arty_105mm_m1_m782_delay: ace_arty_105mm_m1_m782_prox {
|
||||
// ACE_FRAG_SKIP = 1;
|
||||
// GVAR(skip) = 1;
|
||||
//};
|
||||
class Bo_GBU12_LGB;
|
||||
class Nou_GBU12 : Bo_GBU12_LGB {
|
||||
ACE_FRAG_CLASSES[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
|
||||
ACE_FRAG_METAL = 140000;
|
||||
ACE_FRAG_CHARGE = 87000;
|
||||
ACE_FRAG_GURNEY_C = 2320;
|
||||
ACE_FRAG_GURNEY_K = 1/2;
|
||||
GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
|
||||
GVAR(metal) = 140000;
|
||||
GVAR(charge) = 87000;
|
||||
GVAR(gurney_c) = 2320;
|
||||
GVAR(gurney_k) = 1/2;
|
||||
sideAirFriction = 0.04;
|
||||
airFriction = 0.04;
|
||||
laserLock = 0;
|
||||
};
|
||||
|
||||
|
||||
class GrenadeBase;
|
||||
class Grenade;
|
||||
class GrenadeHand: Grenade {
|
||||
ACE_FRAG_SKIP = 0;
|
||||
ACE_FRAG_FORCE = 1;
|
||||
GVAR(skip) = 0;
|
||||
GVAR(force) = 1;
|
||||
// This is a good high-drag frag type for grenades.
|
||||
ACE_FRAG_CLASSES[] = {"ACE_frag_tiny_HD"};
|
||||
GVAR(classes)[] = {"ACE_frag_tiny_HD"};
|
||||
/*
|
||||
These values are based on the M67 Grenade, should be tweaked for
|
||||
individual grenades.
|
||||
*/
|
||||
ACE_FRAG_METAL = 210; // metal in grams
|
||||
ACE_FRAG_CHARGE = 185; // explosive in grams
|
||||
ACE_FRAG_GURNEY_C = 2843; // Gurney velocity constant for explosive type. See: http://en.wikipedia.org/wiki/Gurney_equations
|
||||
ACE_FRAG_GURNEY_K = 3/5; // Gurney shape factor, in this case a sphere. See: http://en.wikipedia.org/wiki/Gurney_equations
|
||||
GVAR(metal) = 210; // metal in grams
|
||||
GVAR(charge) = 185; // explosive in grams
|
||||
GVAR(gurney_c) = 2843; // Gurney velocity constant for explosive type. See: http://en.wikipedia.org/wiki/Gurney_equations
|
||||
GVAR(gurney_k) = 3/5; // Gurney shape factor, in this case a sphere. See: http://en.wikipedia.org/wiki/Gurney_equations
|
||||
};
|
||||
class GrenadeHand_stone: GrenadeHand {
|
||||
ACE_FRAG_SKIP = 1;
|
||||
GVAR(skip) = 1;
|
||||
};
|
||||
class SmokeShell: GrenadeHand {
|
||||
ACE_FRAG_SKIP = 1;
|
||||
GVAR(skip) = 1;
|
||||
};
|
||||
|
||||
|
||||
class RocketBase;
|
||||
//class R_Hydra_HE: RocketBase {
|
||||
// ACE_FRAG_SKIP = 1;
|
||||
// GVAR(skip) = 1;
|
||||
//};
|
||||
|
||||
|
||||
//class R_57mm_HE: RocketBase {
|
||||
// ACE_FRAG_SKIP = 1;
|
||||
// GVAR(skip) = 1;
|
||||
//};
|
||||
|
||||
|
||||
class R_80mm_HE: RocketBase {
|
||||
ACE_FRAG_SKIP = 1;
|
||||
GVAR(skip) = 1;
|
||||
};
|
||||
|
||||
|
||||
//class R_S8T_AT: RocketBase {
|
||||
// ACE_FRAG_SKIP = 1;
|
||||
// GVAR(skip) = 1;
|
||||
//};
|
||||
|
||||
|
||||
class BombCore;
|
||||
class Bo_Mk82: BombCore {
|
||||
ACE_FRAG_CLASSES[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
|
||||
ACE_FRAG_METAL = 140000;
|
||||
ACE_FRAG_CHARGE = 87000;
|
||||
ACE_FRAG_GURNEY_C = 2320;
|
||||
ACE_FRAG_GURNEY_K = 1/2;
|
||||
GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
|
||||
GVAR(metal) = 140000;
|
||||
GVAR(charge) = 87000;
|
||||
GVAR(gurney_c) = 2320;
|
||||
GVAR(gurney_k) = 1/2;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
class G_40mm_HE: GrenadeBase {
|
||||
ACE_FRAG_SKIP = 0;
|
||||
ACE_FRAG_FORCE = 1;
|
||||
GVAR(skip) = 0;
|
||||
GVAR(force) = 1;
|
||||
};
|
||||
|
||||
|
||||
class ACE_G_40mm_HEDP: G_40mm_HE {
|
||||
GVAR(classes)[] = {"ACE_frag_tiny_HD"};
|
||||
GVAR(metal) = 200;
|
||||
GVAR(charge) = 45;
|
||||
GVAR(gurney_c) = 2830;
|
||||
GVAR(gurney_k) = 3/5;
|
||||
};
|
||||
class ACE_G_40mm_HE: ACE_G_40mm_HEDP {
|
||||
GVAR(classes)[] = {"ACE_frag_tiny_HD"};
|
||||
GVAR(metal) = 200;
|
||||
GVAR(charge) = 32;
|
||||
GVAR(gurney_c) = 2700;
|
||||
GVAR(gurney_k) = 3/5;
|
||||
};
|
||||
class ACE_G_40mm_Practice: ACE_G_40mm_HE {
|
||||
ACE_FRAG_SKIP = 1;
|
||||
GVAR(skip) = 1;
|
||||
};
|
||||
class ACE_G40mm_HE_VOG25P: G_40mm_HE {
|
||||
ACE_FRAG_SKIP = 0;
|
||||
ACE_FRAG_FORCE = 1;
|
||||
GVAR(skip) = 0;
|
||||
GVAR(force) = 1;
|
||||
};
|
||||
|
||||
|
||||
// curator ammo entries
|
||||
class Sh_82mm_AMOS;
|
||||
class ModuleOrdnanceMortar_F_Ammo: Sh_82mm_AMOS {
|
||||
GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"};
|
||||
GVAR(metal) = 800;
|
||||
GVAR(charge) = 4200;
|
||||
GVAR(gurney_c) = 2320;
|
||||
GVAR(gurney_k) = 1/2;
|
||||
};
|
||||
|
||||
class Sh_155mm_AMOS;
|
||||
class ModuleOrdnanceHowitzer_F_ammo: Sh_155mm_AMOS {
|
||||
GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
|
||||
GVAR(metal) = 1950;
|
||||
GVAR(charge) = 15800;
|
||||
GVAR(gurney_c) = 2320;
|
||||
GVAR(gurney_k) = 1/2;
|
||||
};
|
||||
|
||||
//class R_230mm_HE;
|
||||
//class ModuleOrdnanceRocket_F_ammo: R_230mm_HE {
|
||||
//};
|
||||
|
||||
//class R_230mm_fly;
|
||||
//class ModuleOrdnanceRocket_F_subammo: R_230mm_fly {
|
||||
//};
|
||||
// end of curator ammo entries
|
||||
|
||||
//class R_SMAW_HEDP;
|
||||
//class R_MEEWS_HEDP : R_SMAW_HEDP {
|
||||
// ACE_FRAG_FORCE = 1;
|
||||
// ACE_FRAG_MULTIPLIER = 1.2;
|
||||
// GVAR(force) = 1;
|
||||
// GVAR(multiplier) = 1.2;
|
||||
//};
|
||||
|
||||
|
||||
//class MissileBase;
|
||||
//class M_Hellfire_AT: MissileBase {
|
||||
// ACE_FRAG_FORCE = 1;
|
||||
// ACE_FRAG_MULTIPLIER = 1.75;
|
||||
// GVAR(force) = 1;
|
||||
// GVAR(multiplier) = 1.75;
|
||||
//};
|
||||
|
||||
|
||||
/*
|
||||
class B_762x51_Ball;
|
||||
class ACE_frag_base: B_762x51_Ball { ////TODO: B_762x45_Ball no longer exists, is this a valid replacement?
|
||||
@ -253,51 +291,51 @@ class CfgAmmo {
|
||||
bulletFly8[] = {"A3\sounds_f\weapons\hits\bullet_by_8.wav",1,1,35};
|
||||
bulletFly[] = {"bulletFly1",0.166,"bulletFly2",0.166,"bulletFly3",0.166,"bulletFly4",0.166,"bulletFly5",0.166,"bulletFly6",0.167,"bulletFly7",0.166,"bulletFly8",0.167};
|
||||
supersonicCrackNear[] = {"A3\sounds_f\weapons\hits\sscrack1.wav",1,1,35};
|
||||
supersonicCrackFar[] = {"A3\sounds_f\weapons\hits\sscrack2.wav",1,1,135};
|
||||
supersonicCrackFar[] = {"A3\sounds_f\weapons\hits\sscrack2.wav",1,1,135};
|
||||
};
|
||||
*/
|
||||
|
||||
|
||||
class B_65x39_Caseless;
|
||||
class ACE_frag_base: B_65x39_Caseless {
|
||||
timeToLive = 12;
|
||||
typicalSpeed = 1500;
|
||||
deflecting = 65;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_tiny: ACE_frag_base {
|
||||
hit = 6;
|
||||
airFriction = BASE_DRAG;
|
||||
caliber = 0.75;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_tiny_HD: ACE_frag_base {
|
||||
hit = 6;
|
||||
airFriction = BASE_DRAG_HD;
|
||||
caliber = 0.75;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_small: ACE_frag_base {
|
||||
hit = 12;
|
||||
airFriction = BASE_DRAG*0.9;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_small_HD: ACE_frag_base {
|
||||
hit = 12;
|
||||
airFriction = BASE_DRAG_HD*0.9;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_medium: ACE_frag_base {
|
||||
hit = 14;
|
||||
airFriction = BASE_DRAG*0.75;
|
||||
caliber = 1.2;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_medium_HD: ACE_frag_base {
|
||||
hit = 14;
|
||||
airFriction = BASE_DRAG_HD*0.75;
|
||||
caliber = 1.2;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_large: ACE_frag_base {
|
||||
hit = 28;
|
||||
indirectHit = 2;
|
||||
@ -305,19 +343,19 @@ class CfgAmmo {
|
||||
airFriction = BASE_DRAG*0.65;
|
||||
caliber = 2;
|
||||
explosive = 0;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_large_HD: ACE_frag_large {
|
||||
hit = 28;
|
||||
indirectHit = 2;
|
||||
indirectHitRange = 0.25;
|
||||
airFriction = BASE_DRAG_HD*0.65;
|
||||
caliber = 2;
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_huge: ACE_frag_large {
|
||||
hit = 40;
|
||||
indirectHit = 4;
|
||||
@ -325,7 +363,7 @@ class CfgAmmo {
|
||||
airFriction = BASE_DRAG*0.5;
|
||||
caliber = 2.8;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_huge_HD: ACE_frag_large {
|
||||
hit = 40;
|
||||
indirectHit = 4;
|
||||
@ -333,19 +371,19 @@ class CfgAmmo {
|
||||
airFriction = BASE_DRAG_HD*0.5;
|
||||
caliber = 2.8;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_spall_small: ACE_frag_small {
|
||||
timeToLive = 0.1;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_spall_medium: ACE_frag_medium {
|
||||
timeToLive = 0.15;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_spall_large: ACE_frag_large {
|
||||
timeToLive = 0.25;
|
||||
};
|
||||
|
||||
|
||||
class ACE_frag_spall_huge: ACE_frag_huge {
|
||||
timeToLive = 0.3;
|
||||
};
|
||||
|
@ -26,6 +26,9 @@ GVAR(tracesStarted) = false;
|
||||
GVAR(traceID) = -1;
|
||||
GVAR(autoTrace) = true;
|
||||
|
||||
// TODO setting
|
||||
GVAR(enabled) = true;
|
||||
|
||||
|
||||
// * Other Shit */
|
||||
PREP(frag_trace);
|
||||
|
@ -3,11 +3,11 @@
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
GVAR(traceFrags) = true;
|
||||
#endif
|
||||
// player sideChat "WAAAAAAAAAAAAAAAAAAAAA";
|
||||
private ["_params", "_initialData", "_hpData", "_roundType", "_round", "_object", "_caliber", "_explosive",
|
||||
"_idh", "_alive", "_exit", "_vm", "_velocity", "_unitDir", "_oldVelocity", "_curVelocity", "_diff", "_polar",
|
||||
"_pos", "_spallPos", "_i", "_pos1", "_pos2", "_blah", "_data", "_spallPolar", "_c", "_warn", "_m", "_k",
|
||||
"_gC", "_shellType", "_fragPower", "_spread", "_spallCount", "_elev", "_dir", "_vel", "_spallFragVect",
|
||||
// ACE_player sideChat "WAAAAAAAAAAAAAAAAAAAAA";
|
||||
private ["_params", "_initialData", "_hpData", "_roundType", "_round", "_object", "_caliber", "_explosive",
|
||||
"_idh", "_alive", "_exit", "_vm", "_velocity", "_unitDir", "_oldVelocity", "_curVelocity", "_diff", "_polar",
|
||||
"_pos", "_spallPos", "_i", "_pos1", "_pos2", "_blah", "_data", "_spallPolar", "_c", "_warn", "_m", "_k",
|
||||
"_gC", "_shellType", "_fragPower", "_spread", "_spallCount", "_elev", "_dir", "_vel", "_spallFragVect",
|
||||
"_fragment"];
|
||||
|
||||
|
||||
@ -40,21 +40,21 @@ if(!alive _round && (_initialData select 6) == 1) then {
|
||||
};
|
||||
|
||||
if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
|
||||
// player sideChat format["BBBB"];
|
||||
// ACE_player sideChat format["BBBB"];
|
||||
_exit = false;
|
||||
_vm = 1;
|
||||
_velocity = _initialData select 5;
|
||||
|
||||
|
||||
_oldVelocity = _velocity call BIS_fnc_magnitude;
|
||||
_curVelocity = (velocity _round) call BIS_fnc_magnitude;
|
||||
|
||||
|
||||
if(alive _round) then {
|
||||
_diff = _velocity vectorDiff (velocity _round);
|
||||
_polar = _diff call CBA_fnc_vect2polar;
|
||||
// player sideChat format["polar: %1", _polar];
|
||||
// ACE_player sideChat format["polar: %1", _polar];
|
||||
if((abs(_polar select 1) > 45 || abs(_polar select 2) > 45)) then {
|
||||
if(_caliber < 2.5) then {
|
||||
// player sideChat format["exit!"];
|
||||
// ACE_player sideChat format["exit!"];
|
||||
_exit = true;
|
||||
} else {
|
||||
_vm = 1-(_curVelocity/_oldVelocity);
|
||||
@ -78,20 +78,20 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
|
||||
];
|
||||
// _blah = [_object, "FIRE"] intersect [_object worldToModel (ASLtoATL _pos1), _object worldToModel (ASLtoATL _pos2)];
|
||||
// diag_log text format["b: %1", _blah];
|
||||
|
||||
|
||||
// _data = [nil, nil, nil, 1, [[ASLtoATL _pos1, 1], [ASLtoATL _pos2, 1]]];
|
||||
// NOU_TRACES set[(count NOU_TRACES), _data];
|
||||
|
||||
|
||||
if(!lineIntersects [_pos1, _pos2]) exitWith {
|
||||
// player sideChat format["FOUND!"];
|
||||
// ACE_player sideChat format["FOUND!"];
|
||||
_spallPos = _pos2;
|
||||
};
|
||||
};
|
||||
if(!isNil "_spallPos") then {
|
||||
_spallPolar = _velocity call CBA_fnc_vect2polar;
|
||||
|
||||
|
||||
if(_explosive > 0) then {
|
||||
// player sideChat format["EXPLOSIVE!"];
|
||||
// ACE_player sideChat format["EXPLOSIVE!"];
|
||||
_warn = false;
|
||||
_c = getNumber(configFile >> "CfgAmmo" >> _roundType >> "ACE_frag_CHARGE");
|
||||
if(_c == 0) then { _c = 1; _warn = true;};
|
||||
@ -109,7 +109,7 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
|
||||
_fragPower = (((_m/_c)+_k)^-(1/2))*_gC;
|
||||
_spallPolar set[0, _fragPower*0.66];
|
||||
};
|
||||
|
||||
|
||||
_fragTypes = [
|
||||
"ACE_frag_spall_small", "ACE_frag_spall_small", "ACE_frag_spall_small",
|
||||
"ACE_frag_spall_small","ACE_frag_spall_medium","ACE_frag_spall_medium","ACE_frag_spall_medium",
|
||||
@ -117,7 +117,7 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
|
||||
"ACE_frag_spall_huge"
|
||||
|
||||
];
|
||||
|
||||
|
||||
// diag_log text format["SPALL POWER: %1", _spallPolar select 0];
|
||||
_spread = 15+(random 25);
|
||||
_spallCount = 5+(random 10);
|
||||
@ -130,14 +130,14 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
|
||||
_dir = _dir % 360;
|
||||
_vel = (_spallPolar select 0)*0.33*_vm;
|
||||
_vel = (_vel-(_vel*0.25))+(random (_vel*0.5));
|
||||
|
||||
|
||||
_spallFragVect = [_vel, _dir, _elev] call CBA_fnc_polar2vect;
|
||||
_fragType = round (random ((count _fragTypes)-1));
|
||||
_fragment = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
|
||||
_fragment setPosASL _spallPos;
|
||||
_fragment setVelocity _spallFragVect;
|
||||
if(GVAR(traceFrags)) then {
|
||||
[player, _fragment, [1,0.5,0,1]] call FUNC(addTrack);
|
||||
[ACE_player, _fragment, [1,0.5,0,1]] call FUNC(addTrack);
|
||||
};
|
||||
};
|
||||
_spread = 5+(random 5);
|
||||
@ -151,14 +151,14 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
|
||||
_dir = _dir % 360;
|
||||
_vel = (_spallPolar select 0)*0.55*_vm;
|
||||
_vel = (_vel-(_vel*0.25))+(random (_vel*0.5));
|
||||
|
||||
|
||||
_spallFragVect = [_vel, _dir, _elev] call CBA_fnc_polar2vect;
|
||||
_fragType = round (random ((count _fragTypes)-1));
|
||||
_fragment = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
|
||||
_fragment setPosASL _spallPos;
|
||||
_fragment setVelocity _spallFragVect;
|
||||
if(GVAR(traceFrags)) then {
|
||||
[player, _fragment, [1,0,0,1]] call FUNC(addTrack);
|
||||
[ACE_player, _fragment, [1,0,0,1]] call FUNC(addTrack);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
private ["_gun", "_type", "_round", "_doFragTrack", "_doSpall"];
|
||||
if !(isNil QGVAR(enabled) && {GVAR(enabled)}) exitWith {};
|
||||
if !(!isNil QGVAR(enabled) && {GVAR(enabled)}) exitWith {};
|
||||
|
||||
_gun = _this select 0;
|
||||
_type = _this select 4;
|
||||
@ -11,10 +11,10 @@ if(_round in GVAR(blackList)) exitWith {
|
||||
};
|
||||
|
||||
_doFragTrack = false;
|
||||
if(_gun == player) then {
|
||||
if(_gun == ACE_player) then {
|
||||
_doFragTrack = true;
|
||||
} else {
|
||||
if((gunner _gun) == player) then {
|
||||
if((gunner _gun) == ACE_player) then {
|
||||
_doFragTrack = true;
|
||||
} else {
|
||||
if(local _gun && {!(isPlayer (gunner _gun))} && {!(isPlayer _gun)}) then {
|
||||
@ -28,14 +28,18 @@ if(_doSpall) then {
|
||||
GVAR(spallHPData) = [];
|
||||
};
|
||||
if(GVAR(spallIsTrackingCount) > 5) then {
|
||||
// player sideChat "LIMT!";
|
||||
// ACE_player sideChat "LIMT!";
|
||||
_doSpall = false;
|
||||
} else {
|
||||
GVAR(spallIsTrackingCount) = GVAR(spallIsTrackingCount) + 1;
|
||||
};
|
||||
};
|
||||
// player sideChat format["c: %1", GVAR(spallIsTrackingCount)];
|
||||
[player, _round, [1,0,0,1]] call nou_fnc_addTrack;
|
||||
// ACE_player sideChat format["c: %1", GVAR(spallIsTrackingCount)];
|
||||
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
[ACE_player, _round, [1,0,0,1]] call FUNC(addTrack);
|
||||
#endif
|
||||
|
||||
if(_doFragTrack && alive _round) then {
|
||||
GVAR(trackedObjects) pushBack _round;
|
||||
_spallTrack = [];
|
||||
@ -44,5 +48,5 @@ if(_doFragTrack && alive _round) then {
|
||||
if(_doSpall) then {
|
||||
[_round, 2, _spallTrack, _spallTrackID] call FUNC(spallTrack);
|
||||
};
|
||||
// player sideChat "WTF2";
|
||||
// ACE_player sideChat "WTF2";
|
||||
};
|
||||
|
@ -9,14 +9,14 @@
|
||||
if(!isServer) exitWith { };
|
||||
|
||||
// _startTime = diag_tickTime;
|
||||
private ["_round", "_lastPos", "_lastVel", "_shellType", "_gun", "_fragTypes", "_warn", "_atlPos", "_isArmed",
|
||||
"_fuseDist", "_indirectHitRange", "_fragRange", "_c", "_m", "_k", "_gC", "_fragPower", "_fragPowerRandom",
|
||||
"_manObjects", "_objects", "_crew", "_fragCount", "_fragArcs", "_doRandom", "_target", "_boundingBox",
|
||||
"_targetPos", "_distance", "_add", "_bbX", "_bbY", "_bbZ", "_cubic", "_targetVel", "_baseVec", "_dir",
|
||||
"_currentCount", "_count", "_vecVar", "_i", "_vec", "_fp", "_vel", "_fragType", "_fragObj", "_randomCount",
|
||||
private ["_round", "_lastPos", "_lastVel", "_shellType", "_gun", "_fragTypes", "_warn", "_atlPos", "_isArmed",
|
||||
"_fuseDist", "_indirectHitRange", "_fragRange", "_c", "_m", "_k", "_gC", "_fragPower", "_fragPowerRandom",
|
||||
"_manObjects", "_objects", "_crew", "_fragCount", "_fragArcs", "_doRandom", "_target", "_boundingBox",
|
||||
"_targetPos", "_distance", "_add", "_bbX", "_bbY", "_bbZ", "_cubic", "_targetVel", "_baseVec", "_dir",
|
||||
"_currentCount", "_count", "_vecVar", "_i", "_vec", "_fp", "_vel", "_fragType", "_fragObj", "_randomCount",
|
||||
"_sectorSize", "_sectorOffset", "_randomDir"];
|
||||
|
||||
|
||||
|
||||
|
||||
_round = _this select 0;
|
||||
_lastPos = _this select 1;
|
||||
_lastVel = _this select 2;
|
||||
@ -108,8 +108,8 @@ _fragArcs = [];
|
||||
_fragArcs set[360, 0];
|
||||
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
player sideChat format["_fragRange: %1", _fragRange];
|
||||
player sideChat format["_objects: %1", _objects];
|
||||
ACE_player sideChat format["_fragRange: %1", _fragRange];
|
||||
ACE_player sideChat format["_objects: %1", _objects];
|
||||
#endif
|
||||
_doRandom = false;
|
||||
if(_isArmed && (count _objects) > 0) then {
|
||||
@ -127,16 +127,16 @@ if(_isArmed && (count _objects) > 0) then {
|
||||
_cubic = _bbX*_bbY*_bbZ;
|
||||
if(_cubic > 1) then {
|
||||
_doRandom = true;
|
||||
|
||||
|
||||
_targetVel = (velocity _target);
|
||||
|
||||
|
||||
|
||||
|
||||
_targetPos set[0, (_targetPos select 0)+((_targetVel select 0)*(_distance/_fragPower))];
|
||||
_targetPos set[1, (_targetPos select 1)+((_targetVel select 1)*(_distance/_fragPower))];
|
||||
_targetPos set[2, (_targetPos select 2)+_add];
|
||||
|
||||
|
||||
_baseVec = _lastPos vectorFromTo _targetPos;
|
||||
|
||||
|
||||
_dir = floor(_baseVec call CBA_fnc_vectDir);
|
||||
_currentCount = _fragArcs select _dir;
|
||||
if(isNil "_currentCount") then {
|
||||
@ -153,18 +153,18 @@ if(_isArmed && (count _objects) > 0) then {
|
||||
};
|
||||
for "_i" from 1 to _count do {
|
||||
_vec = +_baseVec;
|
||||
|
||||
|
||||
_vec set[0, (_vec select 0)-(_vecVar/2)+(random _vecVar)];
|
||||
_vec set[1, (_vec select 1)-(_vecVar/2)+(random _vecVar)];
|
||||
_vec set[2, (_vec select 2)-(_vecVar/2)+(random _vecVar)];
|
||||
|
||||
|
||||
_fp = (_fragPower-(random (_fragPowerRandom)));
|
||||
_vel = [
|
||||
(_vec select 0)*_fp,
|
||||
(_vec select 1)*_fp,
|
||||
(_vec select 2)*_fp
|
||||
];
|
||||
|
||||
|
||||
_fragType = round (random ((count _fragTypes)-1));
|
||||
_fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
|
||||
// diag_log text format["fp: %1 %2", _fp, typeOf _fragObj];
|
||||
@ -176,7 +176,7 @@ if(_isArmed && (count _objects) > 0) then {
|
||||
GVAR(traceFrags) = true;
|
||||
#endif
|
||||
if(GVAR(traceFrags)) then {
|
||||
[player, _fragObj, [1,0,0,1]] call FUNC(addTrack);
|
||||
[ACE_player, _fragObj, [1,0,0,1]] call FUNC(addTrack);
|
||||
};
|
||||
_fragCount = _fragCount + 1;
|
||||
_currentCount = _currentCount + 1;
|
||||
@ -198,15 +198,15 @@ if(_isArmed && (count _objects) > 0) then {
|
||||
_sectorOffset = 360 * (_i - 1) / (_randomCount max 1);
|
||||
_randomDir = random(_sectorSize);
|
||||
_vec = [cos(_sectorOffset + _randomDir), sin(_sectorOffset + _randomDir), sin(30 - (random 45))];
|
||||
|
||||
|
||||
_fp = (_fragPower-(random (_fragPowerRandom)));
|
||||
|
||||
|
||||
_vel = [
|
||||
(_vec select 0)*_fp,
|
||||
(_vec select 1)*_fp,
|
||||
(_vec select 2)*_fp
|
||||
];
|
||||
|
||||
|
||||
_fragType = round (random ((count _fragTypes)-1));
|
||||
_fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
|
||||
_fragObj setPosASL _lastPos;
|
||||
@ -217,14 +217,14 @@ if(_isArmed && (count _objects) > 0) then {
|
||||
GVAR(traceFrags) = true;
|
||||
#endif
|
||||
if(GVAR(traceFrags)) then {
|
||||
[player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack);
|
||||
[ACE_player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack);
|
||||
};
|
||||
_fragCount = _fragCount + 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
// #ifdef DEBUG_MODE_FULL
|
||||
// player sideChat format["total frags: %1", GVAR(TOTALFRAGS)];
|
||||
// player sideChat format["tracks: %1", (count GVAR(trackedObjects))];
|
||||
// ACE_player sideChat format["total frags: %1", GVAR(TOTALFRAGS)];
|
||||
// ACE_player sideChat format["tracks: %1", (count GVAR(trackedObjects))];
|
||||
// #endif
|
||||
// _endTime = diag_tickTime;
|
||||
|
@ -15,11 +15,11 @@ if (!alive _round) then {
|
||||
[_this select 1] call cba_fnc_removePerFrameHandler;
|
||||
if(_time != time && {_round in GVAR(trackedObjects)} && {!(_round in GVAR(blackList))}) then {
|
||||
GVAR(trackedObjects) = GVAR(trackedObjects) - [_round];
|
||||
_skip = getNumber (configFile >> "CfgAmmo" >> _type >> "ACE_FRAG_SKIP");
|
||||
_skip = getNumber (configFile >> "CfgAmmo" >> _type >> QGVAR(skip));
|
||||
if(_skip == 0) then {
|
||||
_explosive = getNumber (configFile >> "CfgAmmo" >> _type >> "explosive");
|
||||
_indirectRange = getNumber (configFile >> "CfgAmmo" >> _type >> "indirectHitRange");
|
||||
_force = getNumber (configFile >> "CfgAmmo" >> _type >> "ACE_FRAG_FORCE");
|
||||
_force = getNumber (configFile >> "CfgAmmo" >> _type >> QGVAR(force));
|
||||
_fragPower = getNumber(configFile >> "CfgAmmo" >> _type >> "indirecthit")*(sqrt(_indirectRange));
|
||||
if((_explosive > 0.5 && {_indirectRange >= 4.5} && {_fragPower >= 35}) || {_force == 1} ) then {
|
||||
[QGVAR(frag_eh), _params] call ace_common_fnc_serverEvent;
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler. -->
|
||||
<Project name="ACE">
|
||||
<Package name="Goggles">
|
||||
<Key ID="STR_ACE_Goggles_ShowInThirdPerson">
|
||||
|
@ -82,7 +82,7 @@ class CfgAmmo {
|
||||
SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100};
|
||||
SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70};
|
||||
SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
|
||||
timeToLive = 60;
|
||||
timeToLive = 6;
|
||||
fuseDistance = 2.3;
|
||||
model = PATHTOF(models\ACE_m84_thrown.p3d);
|
||||
};
|
||||
|
@ -1,6 +1,7 @@
|
||||
class CfgMagazines {
|
||||
class HandGrenade;
|
||||
class ACE_HandFlare_Base: HandGrenade {
|
||||
scope = 1;
|
||||
value = 2;
|
||||
nameSoundWeapon = "smokeshell";
|
||||
nameSound = "smokeshell";
|
||||
@ -8,6 +9,8 @@ class CfgMagazines {
|
||||
initSpeed = 22;
|
||||
};
|
||||
class ACE_HandFlare_White: ACE_HandFlare_Base {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
scope = 2;
|
||||
ammo = "ACE_F_Hand_White";
|
||||
displayname = "$STR_ACE_Grenades_M127A1_White_Name";
|
||||
descriptionshort = "$STR_ACE_Grenades_M127A1_White_Description";
|
||||
@ -16,6 +19,8 @@ class CfgMagazines {
|
||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_white_ca.paa";
|
||||
};
|
||||
class ACE_HandFlare_Red: ACE_HandFlare_Base {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
scope = 2;
|
||||
ammo = "ACE_F_Hand_Red";
|
||||
displayname = "$STR_ACE_Grenades_M127A1_Red_Name";
|
||||
descriptionshort = "$STR_ACE_Grenades_M127A1_Red_Description";
|
||||
@ -24,6 +29,8 @@ class CfgMagazines {
|
||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_red_ca.paa";
|
||||
};
|
||||
class ACE_HandFlare_Green: ACE_HandFlare_Base {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
scope = 2;
|
||||
ammo = "ACE_F_Hand_Green";
|
||||
displayname = "$STR_ACE_Grenades_M127A1_Green_Name";
|
||||
descriptionshort = "$STR_ACE_Grenades_M127A1_Green_Description";
|
||||
@ -32,6 +39,8 @@ class CfgMagazines {
|
||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_green_ca.paa";
|
||||
};
|
||||
class ACE_HandFlare_Yellow: ACE_HandFlare_Base {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
scope = 2;
|
||||
ammo = "ACE_F_Hand_Yellow";
|
||||
displayname = "$STR_ACE_Grenades_M127A1_Yellow_Name";
|
||||
descriptionshort = "$STR_ACE_Grenades_M127A1_Yellow_Description";
|
||||
@ -40,20 +49,24 @@ class CfgMagazines {
|
||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_yellow_ca.paa";
|
||||
};
|
||||
class ACE_M84: HandGrenade {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "ACE_G_M84";
|
||||
displayname = "$STR_ACE_Grenades_M84_Name";
|
||||
descriptionshort = "$STR_ACE_Grenades_M84_Description";
|
||||
displayNameShort = "M84";
|
||||
mass = 4;
|
||||
model = PATHTOF(models\ACE_m84.p3d);
|
||||
picture = PATHTOF(UI\ACE_m84_x_ca.paa);
|
||||
};
|
||||
|
||||
class 3Rnd_UGL_FlareGreen_F;
|
||||
class 6Rnd_GreenSignal_F: 3Rnd_UGL_FlareGreen_F {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "F_40mm_Green";
|
||||
initSpeed = 120;
|
||||
};
|
||||
class 6Rnd_RedSignal_F: 6Rnd_GreenSignal_F {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
ammo = "F_40mm_Red";
|
||||
initSpeed = 120;
|
||||
};
|
||||
|
@ -56,7 +56,7 @@ _affected = _grenade nearEntities ["CAManBase", 20];
|
||||
};
|
||||
} forEach [[0,0,0], [0,0,0.2], [0.1, 0.1, 0.1], [-0.1, -0.1, 0.1]];
|
||||
TRACE_1("Line of sight count (out of 4)",_losCount);
|
||||
if (_losCount == 0) then {
|
||||
if (_losCount <= 1) then {
|
||||
_strength = _strength / 10;
|
||||
};
|
||||
|
||||
@ -80,7 +80,7 @@ _affected = _grenade nearEntities ["CAManBase", 20];
|
||||
|
||||
|
||||
//Add ace_medical pain effect:
|
||||
if ((isClass (configFile >> "CfgPatches" >> "ACE_Medical")) && {_strength > 0}) then {
|
||||
if ((isClass (configFile >> "CfgPatches" >> "ACE_Medical")) && {_strength > 0.1}) then {
|
||||
[ACE_player, (_strength / 2)] call EFUNC(medical,adjustPainLevel);
|
||||
};
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler. -->
|
||||
<Project name="ACE">
|
||||
<Package name="Grenades">
|
||||
<Key ID="STR_ACE_Grenades_SwitchGrenadeMode">
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit) );
|
||||
@ -20,9 +19,9 @@ class Extended_Init_EventHandlers {
|
||||
};
|
||||
|
||||
class Extended_FiredNear_EventHandlers {
|
||||
class CAManBase {
|
||||
class AllVehicles {
|
||||
class GVAR(FiredNear) {
|
||||
clientFiredNear = QUOTE( if (GVAR(enableCombatDeafness) && {_this select 0 == ACE_player}) then {_this call FUNC(firedNear)}; );
|
||||
clientFiredNear = QUOTE(_this call FUNC(firedNear););
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,7 +1,14 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
GVAR(currentDeafness) = 0;
|
||||
GVAR(newStrength) = 0;
|
||||
GVAR(playerVehAttenuation) = 1;
|
||||
|
||||
// Spawn volume updating process
|
||||
[FUNC(updateVolume), 0.1, [] ] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
//Update veh attunation when player veh changes
|
||||
["playerVehicleChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call EFUNC(common,addEventHandler);
|
||||
["playerTurretChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call EFUNC(common,addEventHandler);
|
||||
|
@ -10,6 +10,7 @@ PREP(hasEarPlugsIn);
|
||||
PREP(moduleHearing);
|
||||
PREP(putInEarPlugs);
|
||||
PREP(removeEarPlugs);
|
||||
PREP(updatePlayerVehAttenuation);
|
||||
PREP(updateVolume);
|
||||
|
||||
ADDON = true;
|
||||
|
@ -21,18 +21,19 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_unit", "_firer", "_distance", "_weapon", "_muzzle", "_mode", "_ammo", "_silencer", "_audibleFireCoef", "_loudness", "_strength", "_audibleFire", "_audibleFireTime", "_audibleFireTimeCoef"];
|
||||
private ["_silencer", "_audibleFireCoef", "_loudness", "_strength", "_vehAttenuation"];
|
||||
|
||||
_unit = _this select 0;
|
||||
_firer = _this select 1;
|
||||
_distance = (_this select 2) max 1;
|
||||
_weapon = _this select 3;
|
||||
_muzzle = _this select 4;
|
||||
_mode = _this select 5;
|
||||
_ammo = _this select 6;
|
||||
PARAMS_7(_object,_firer,_distance,_weapon,_muzzle,_mode,_ammo);
|
||||
|
||||
if (toLower _weapon in ["throw", "put"]) exitWith {};
|
||||
if (_unit != vehicle _unit && {!([_unit] call EFUNC(common,isTurnedOut))}) exitWith {};
|
||||
//Only run if combatDeafness enabled:
|
||||
if (!GVAR(enableCombatDeafness)) exitWith {};
|
||||
//Only run if firedNear object is player or player's vehicle:
|
||||
if ((ACE_player != _object) && {(vehicle ACE_player) != _object}) exitWith {};
|
||||
if (_weapon in ["Throw", "Put"]) exitWith {};
|
||||
|
||||
_vehAttenuation = if ((ACE_player == (vehicle ACE_player)) || {isTurnedOut ACE_player}) then {1} else {GVAR(playerVehAttenuation)};
|
||||
|
||||
if (_distance < 1) then {_distance = 1;};
|
||||
|
||||
_silencer = switch (_weapon) do {
|
||||
case (primaryWeapon _firer) : {(primaryWeaponItems _firer) select 0};
|
||||
@ -42,18 +43,15 @@ _silencer = switch (_weapon) do {
|
||||
};
|
||||
|
||||
_audibleFireCoef = 1;
|
||||
//_audibleFireTimeCoef = 1;
|
||||
if (_silencer != "") then {
|
||||
_audibleFireCoef = getNumber (configFile >> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "audibleFire");
|
||||
//_audibleFireTimeCoef = getNumber (configFile >> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "audibleFireTime");
|
||||
};
|
||||
|
||||
_audibleFire = getNumber (configFile >> "CfgAmmo" >> _ammo >> "audibleFire");
|
||||
//_audibleFireTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "audibleFireTime");
|
||||
|
||||
_loudness = _audibleFireCoef * _audibleFire / 64;
|
||||
_strength = _loudness - (_loudness/50 * _distance); // linear drop off
|
||||
_strength = _vehAttenuation * (_loudness - (_loudness/50 * _distance)); // linear drop off
|
||||
|
||||
if (_strength < 0.01) exitWith {};
|
||||
|
||||
[{_this call FUNC(earRinging)}, [_unit, _strength], 0.2, 0] call EFUNC(common,waitAndExecute);
|
||||
[{_this call FUNC(earRinging)}, [ACE_player, _strength], 0.2, 0] call EFUNC(common,waitAndExecute);
|
||||
|
57
addons/hearing/functions/fnc_updatePlayerVehAttenuation.sqf
Normal file
57
addons/hearing/functions/fnc_updatePlayerVehAttenuation.sqf
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Gets the sound attenuation of a player to the outside.
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* Ammount that unit can hear outside <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_hearing_fnc_updatePlayerVehAttenuation
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
_vehicle = vehicle ACE_player;
|
||||
|
||||
if (isNull _vehicle) exitWith {};
|
||||
|
||||
_newAttenuation = 1;
|
||||
if (ACE_player != _vehicle) then {
|
||||
_effectType = "";
|
||||
_turretPath = [ACE_player] call EFUNC(common,getTurretIndex);
|
||||
_effectType = getText (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "attenuationEffectType");
|
||||
|
||||
if (!(_turretPath isEqualTo [])) then {
|
||||
_turretConfig = [(configFile >> "CfgVehicles" >> (typeOf _vehicle)), _turretPath] call EFUNC(common,getTurretConfigPath);
|
||||
|
||||
if ((getNumber (_turretConfig >> "disableSoundAttenuation")) == 1) then {
|
||||
_effectType = "";
|
||||
} else {
|
||||
if (isText (_turretConfig >> "soundAttenuationTurret")) then {
|
||||
_effectType = getText (_turretConfig >> "soundAttenuationTurret");
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
_newAttenuation = switch (true) do {
|
||||
case (_effectType == ""): {1};
|
||||
case (_effectType == "CarAttenuation"): {0.5};
|
||||
case (_effectType == "RHS_CarAttenuation"): {0.5};
|
||||
case (_effectType == "OpenCarAttenuation"): {1};
|
||||
case (_effectType == "TankAttenuation"): {0.1};
|
||||
case (_effectType == "HeliAttenuation"): {0.3};
|
||||
case (_effectType == "OpenHeliAttenuation"): {0.9};
|
||||
case (_effectType == "SemiOpenHeliAttenuation"): {0.6};
|
||||
case (_effectType == "HeliAttenuationGunner"): {0.85};
|
||||
case (_effectType == "HeliAttenuationRamp"): {0.85};
|
||||
default {1};
|
||||
};
|
||||
};
|
||||
|
||||
TRACE_2("New vehicle attenuation",_vehicle,_newAttenuation);
|
||||
|
||||
GVAR(playerVehAttenuation) = _newAttenuation;
|
@ -3,6 +3,17 @@
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
GVAR(ParsedTextCached) = [];
|
||||
|
||||
//Setup text/shadow color matrix
|
||||
[] call FUNC(setupTextColors);
|
||||
["SettingChanged", {
|
||||
PARAMS_2(_name,_value);
|
||||
if ((_name == QGVAR(colorTextMax)) || {_name == QGVAR(colorTextMin)} || {_name == QGVAR(colorShadowMax)} || {_name == QGVAR(colorShadowMin)}) then {
|
||||
[] call FUNC(setupTextColors);
|
||||
};
|
||||
}] call EFUNC(common,addEventhandler);
|
||||
|
||||
// Install the render EH on the main display
|
||||
addMissionEventHandler ["Draw3D", DFUNC(render)];
|
||||
|
||||
|
@ -8,6 +8,7 @@ PREP(compileMenu);
|
||||
PREP(compileMenuSelfAction);
|
||||
PREP(collectActiveActionTree);
|
||||
PREP(createAction);
|
||||
PREP(ctrlSetParsedTextCached);
|
||||
PREP(findActionNode);
|
||||
PREP(handlePlayerChanged);
|
||||
PREP(isSubPath);
|
||||
@ -21,6 +22,7 @@ PREP(renderBaseMenu);
|
||||
PREP(renderIcon);
|
||||
PREP(renderMenu);
|
||||
PREP(renderSelector);
|
||||
PREP(setupTextColors);
|
||||
PREP(splitPath);
|
||||
|
||||
GVAR(keyDown) = false;
|
||||
|
@ -37,6 +37,30 @@ class ACE_Settings {
|
||||
isClientSettable = 1;
|
||||
displayName = "$STR_ACE_Interact_Menu_UseListMenu";
|
||||
};
|
||||
class GVAR(colorTextMax) {
|
||||
value[] = {1, 1, 1, 1};
|
||||
typeName = "COLOR";
|
||||
isClientSettable = 1;
|
||||
displayName = "$STR_ACE_Interact_Menu_ColorTextMax";
|
||||
};
|
||||
class GVAR(colorTextMin) {
|
||||
value[] = {1, 1, 1, 0.25};
|
||||
typeName = "COLOR";
|
||||
isClientSettable = 1;
|
||||
displayName = "$STR_ACE_Interact_Menu_ColorTextMin";
|
||||
};
|
||||
class GVAR(colorShadowMax) {
|
||||
value[] = {0, 0, 0, 1};
|
||||
typeName = "COLOR";
|
||||
isClientSettable = 1;
|
||||
displayName = "$STR_ACE_Interact_Menu_ColorShadowMax";
|
||||
};
|
||||
class GVAR(colorShadowMin) {
|
||||
value[] = {0, 0, 0, 0.25};
|
||||
typeName = "COLOR";
|
||||
isClientSettable = 1;
|
||||
displayName = "$STR_ACE_Interact_Menu_ColorShadowMin";
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_Extensions {
|
||||
|
@ -53,7 +53,9 @@ _recurseFnc = {
|
||||
if (_condition == "") then {_condition = "true"};
|
||||
|
||||
// Add canInteract (including exceptions) and canInteractWith to condition
|
||||
_condition = _condition + format [QUOTE( && {[ARR_3(ACE_player, _target, %1)] call EFUNC(common,canInteractWith)} ), getArray (_entryCfg >> "exceptions")];
|
||||
if ((configName _entryCfg) != "ACE_MainActions") then {
|
||||
_condition = _condition + format [QUOTE( && {[ARR_3(ACE_player, _target, %1)] call EFUNC(common,canInteractWith)} ), getArray (_entryCfg >> "exceptions")];
|
||||
};
|
||||
|
||||
_insertChildren = compile (getText (_entryCfg >> "insertChildren"));
|
||||
_modifierFunction = compile (getText (_entryCfg >> "modifierFunction"));
|
||||
|
@ -0,0 +1,15 @@
|
||||
// by commy2
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_ctrl", "_index", "_text"];
|
||||
|
||||
_ctrl = _this select 0;
|
||||
_index = _this select 1;
|
||||
_text = _this select 2;
|
||||
|
||||
//systemChat str (_text != ARR_SELECT(GVAR(ParsedTextCached),_index,"-1"));
|
||||
|
||||
if (_text != ARR_SELECT(GVAR(ParsedTextCached),_index,"-1")) then {
|
||||
GVAR(ParsedTextCached) set [_index, _text];
|
||||
_ctrl ctrlSetStructuredText parseText _text;
|
||||
};
|
@ -30,6 +30,7 @@ if (_menuType == 0) then {
|
||||
GVAR(keyDownTime) = diag_tickTime;
|
||||
GVAR(openedMenuType) = _menuType;
|
||||
GVAR(lastTimeSearchedActions) = -1000;
|
||||
GVAR(ParsedTextCached) = [];
|
||||
|
||||
GVAR(useCursorMenu) = (vehicle ACE_player != ACE_player) ||
|
||||
visibleMap ||
|
||||
|
@ -119,6 +119,7 @@ if(!_foundTarget && GVAR(actionSelected)) then {
|
||||
};
|
||||
for "_i" from GVAR(iconCount) to (count GVAR(iconCtrls))-1 do {
|
||||
ctrlDelete (GVAR(iconCtrls) select _i);
|
||||
GVAR(ParsedTextCached) set [_i, ""];
|
||||
};
|
||||
GVAR(iconCtrls) resize GVAR(iconCount);
|
||||
GVAR(iconCount) = 0;
|
||||
|
@ -41,9 +41,21 @@ if((count _this) > 2) then {
|
||||
};
|
||||
};
|
||||
|
||||
// For non-self actions, exit if the action is too far away
|
||||
// For non-self actions, exit if the action is too far away or ocluded
|
||||
if (GVAR(openedMenuType) == 0 && vehicle ACE_player == ACE_player &&
|
||||
{(ACE_player modelToWorldVisual (ACE_player selectionPosition "pilot")) distance _pos >= _distance}) exitWith {false};
|
||||
{
|
||||
private ["_headPos","_actualDistance"];
|
||||
_headPos = ACE_player modelToWorldVisual (ACE_player selectionPosition "pilot");
|
||||
_actualDistance = _headPos distance _pos;
|
||||
|
||||
if (_actualDistance > _distance) exitWith {true};
|
||||
|
||||
if (_distance > 1.0) exitWith {
|
||||
// If distance to action is greater than 1.0 m, check LOS
|
||||
_line = [_headPos call EFUNC(common,positionToASL), _pos call EFUNC(common,positionToASL), _object, ACE_player];
|
||||
lineIntersects _line
|
||||
};
|
||||
}) exitWith {false};
|
||||
|
||||
// Exit if the action is behind you
|
||||
_sPos = if (count _pos != 2) then {
|
||||
|
@ -4,12 +4,11 @@
|
||||
*
|
||||
* Argument:
|
||||
* 0: Text <STRING>
|
||||
* 1: Color <STRING>
|
||||
* 1: Icon <STRING>
|
||||
* 2: 2d position <ARRAY>
|
||||
* 3: ?
|
||||
* 4: ?
|
||||
* 5: ?
|
||||
* 6: Icon <STRING>
|
||||
* 3: Color <STRING>
|
||||
* 4: Shadow Color <STRING>
|
||||
* 5: Icon Color <STRING>
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
@ -18,11 +17,8 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
#define DEFAULT_ICON QUOTE(\z\ace\addons\interaction\ui\dot_ca.paa)
|
||||
private ["_color", "_sPos", "_ctrl", "_icon"];
|
||||
_text = _this select 0;
|
||||
_color = _this select 1;
|
||||
_sPos = _this select 2;
|
||||
_icon = _this select 6;
|
||||
private ["_ctrl"];
|
||||
PARAMS_6(_text,_icon,_sPos,_textColor,_shadowColor,_iconColor);
|
||||
|
||||
//systemChat format ["Icon %1 - %2,%3", _text, _sPos select 0, _sPos select 1];
|
||||
|
||||
@ -31,22 +27,23 @@ if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then {
|
||||
GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]);
|
||||
};
|
||||
_ctrl = GVAR(iconCtrls) select GVAR(iconCount);
|
||||
GVAR(iconCount) = GVAR(iconCount) + 1;
|
||||
if(_icon == "") then {
|
||||
_icon = DEFAULT_ICON;
|
||||
};
|
||||
|
||||
_text = if (GVAR(UseListMenu)) then {
|
||||
format ["<img image='%1' color='%2' align='left'/><t color='%3' size='0.80' shadow='1' shadowColor='#000000' shadowOffset='0.07'>%4</t>", _icon, _color, _color, _text]
|
||||
format ["<img image='%1' color='%2' align='left'/><t color='%3' size='0.80' shadow='1' shadowColor='%4' shadowOffset='0.06'>%5</t>", _icon, _iconColor, _textColor, _shadowColor, _text]
|
||||
} else {
|
||||
format ["<img image='%1' color='%2' align='center'/><br/><t color='%3' size='0.80' align='center' shadow='1' shadowColor='#000000' shadowOffset='0.07'>%4</t>", _icon, _color, _color, "ace_breakLine" callExtension _text];
|
||||
format ["<img image='%1' color='%2' align='center'/><br/><t color='%3' size='0.80' align='center' shadow='1' shadowColor='%4' shadowOffset='0.06'>%5</t>", _icon, _iconColor, _textColor, _shadowColor, "ace_breakLine" callExtension _text];
|
||||
};
|
||||
|
||||
_ctrl ctrlSetStructuredText (parseText _text);
|
||||
_text = if (GVAR(UseListMenu)) then {
|
||||
_ctrl ctrlSetPosition [(_sPos select 0)-(0.0095*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.20*SafeZoneW, 0.035*SafeZoneW];
|
||||
//_ctrl ctrlSetStructuredText parseText _text;
|
||||
[_ctrl, GVAR(iconCount), _text] call FUNC(ctrlSetParsedTextCached);
|
||||
GVAR(iconCount) = GVAR(iconCount) + 1;
|
||||
|
||||
if (GVAR(UseListMenu)) then {
|
||||
_ctrl ctrlSetPosition [(_sPos select 0)-(0.0095*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.20*SafeZoneW, 0.035*SafeZoneW];
|
||||
} else {
|
||||
_ctrl ctrlSetPosition [(_sPos select 0)-(0.0750*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.15*SafeZoneW, 0.100*SafeZoneW];
|
||||
_ctrl ctrlSetPosition [(_sPos select 0)-(0.0750*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.15*SafeZoneW, 0.100*SafeZoneW];
|
||||
};
|
||||
//_ctrl ctrlSetBackgroundColor [0, 1, 0, 0.1];
|
||||
_ctrl ctrlCommit 0;
|
||||
|
@ -45,19 +45,17 @@ _menuInSelectedPath = true;
|
||||
|
||||
// Render icon
|
||||
// ARGB Color (First Hex Pair is transparancy)
|
||||
_color = "#FFFFFFFF";
|
||||
_textColor = GVAR(colorSelected);
|
||||
_shadowColor = GVAR(colorSelectedShadow);
|
||||
if(!_menuInSelectedPath) then {
|
||||
if (_menuDepth > 0) then {
|
||||
_color = format ["#%1FFFFFF", [255 * ((((count _path) - 1)/_menuDepth) max 0.25)] call EFUNC(common,toHex)];
|
||||
} else {
|
||||
_color = format ["#%1FFFFFF", [255 * 0.75] call EFUNC(common,toHex)];
|
||||
};
|
||||
_textColor = (GVAR(colorNotSelectedMatrix) select (count _path)) select _menuDepth;
|
||||
_shadowColor = (GVAR(colorShadowNotSelectedMatrix) select (count _path)) select _menuDepth;
|
||||
};
|
||||
|
||||
//END_COUNTER(constructing_colors);
|
||||
//BEGIN_COUNTER(fnc_renderIcons);
|
||||
|
||||
[_actionData select 1, _color, _sPos, 1, 1, 0, _actionData select 2, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon);
|
||||
[_actionData select 1, _actionData select 2, _sPos, _textColor, _shadowColor, "#FFFFFFFF"] call FUNC(renderIcon);
|
||||
|
||||
//END_COUNTER(fnc_renderIcons);
|
||||
|
||||
|
@ -22,14 +22,14 @@ if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then {
|
||||
|
||||
private "_ctrl";
|
||||
_ctrl = GVAR(iconCtrls) select GVAR(iconCount);
|
||||
GVAR(iconCount) = GVAR(iconCount) + 1;
|
||||
|
||||
if (GVAR(UseListMenu)) then {
|
||||
_ctrl ctrlSetStructuredText (parseText format ["<img image='%1' color='#FF0000' size='1.6'/>", _icon]);
|
||||
[_ctrl, GVAR(iconCount), format ["<img image='%1' color='#FF0000' size='1.6'/>", _icon]] call FUNC(ctrlSetParsedTextCached);
|
||||
_ctrl ctrlSetPosition [(_sPos select 0)-(0.014*SafeZoneW), (_sPos select 1)-(0.014*SafeZoneW), 0.05*SafeZoneW, 0.035*SafeZoneW];
|
||||
} else {
|
||||
_ctrl ctrlSetStructuredText (parseText format ["<img image='%1' color='#FF0000' size='1.6' align='center'/>", _icon]);
|
||||
[_ctrl, GVAR(iconCount), format ["<img image='%1' color='#FF0000' size='1.6' align='center'/>", _icon]] call FUNC(ctrlSetParsedTextCached);
|
||||
_ctrl ctrlSetPosition [(_sPos select 0)-(0.050*SafeZoneW), (_sPos select 1)-(0.014*SafeZoneW), 0.1*SafeZoneW, 0.035*SafeZoneW];
|
||||
};
|
||||
//_ctrl ctrlSetBackgroundColor [1, 0, 0, 0.1];
|
||||
GVAR(iconCount) = GVAR(iconCount) + 1;
|
||||
_ctrl ctrlCommit 0;
|
||||
|
52
addons/interact_menu/functions/fnc_setupTextColors.sqf
Normal file
52
addons/interact_menu/functions/fnc_setupTextColors.sqf
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Builds color strings needed for displaying interaction text
|
||||
*
|
||||
* Argument:
|
||||
* None
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_mixColor", "_rowT", "_rowS", "_menuDepth", "_pathCount", "_menuInSelectedPath", "_color", "_path"];
|
||||
|
||||
//Mixes 2 colors (number arrays) and makes a color string "#AARRGGBB" for structured text
|
||||
_mixColor = {
|
||||
PARAMS_3(_color1,_color2,_ratio);
|
||||
private ["_return", "_mix", "_index"];
|
||||
_return = "";
|
||||
for "_index" from 0 to 3 do {
|
||||
_mix = linearConversion [0, 1, _ratio, (_color1 select _index), (_color2 select _index)];
|
||||
if (_index != 3) then {
|
||||
_return = _return + ([255 * _mix] call EFUNC(common,toHex));
|
||||
} else {
|
||||
_return = "#" + ([255 * _mix] call EFUNC(common,toHex)) + _return;
|
||||
};
|
||||
};
|
||||
_return
|
||||
};
|
||||
|
||||
GVAR(colorSelected) = [GVAR(colorTextMin), GVAR(colorTextMax), 1] call _mixColor;
|
||||
GVAR(colorSelectedShadow) = [GVAR(colorShadowMin), GVAR(colorShadowMax), 1] call _mixColor;
|
||||
GVAR(colorNotSelectedMatrix) = [];
|
||||
GVAR(colorShadowNotSelectedMatrix) = [];
|
||||
|
||||
for "_pathCount" from 0 to 15 do {
|
||||
_rowT = [];
|
||||
_rowS = [];
|
||||
for "_menuDepth" from 0 to 15 do {
|
||||
if (_menuDepth > 0) then {
|
||||
_rowT pushBack ([GVAR(colorTextMin), GVAR(colorTextMax), (((_pathCount - 1) / _menuDepth) max 0.25)] call _mixColor);
|
||||
_rowS pushBack ([GVAR(colorShadowMin), GVAR(colorShadowMax), (((_pathCount - 1) / _menuDepth) max 0.25)] call _mixColor);
|
||||
} else {
|
||||
_rowT pushBack ([GVAR(colorTextMin), GVAR(colorTextMax), 0] call _mixColor);
|
||||
_rowS pushBack ([GVAR(colorShadowMin), GVAR(colorShadowMax), 0] call _mixColor);
|
||||
};
|
||||
};
|
||||
GVAR(colorNotSelectedMatrix) pushBack _rowT;
|
||||
GVAR(colorShadowNotSelectedMatrix) pushBack _rowS;
|
||||
};
|
@ -17,6 +17,7 @@
|
||||
<Spanish>Mostrar siempre el cursor para la interacción</Spanish>
|
||||
<French>Toujours afficher le curseur pour les interactions</French>
|
||||
<Italian>Mostra sempre il cursore per le interazioni</Italian>
|
||||
<Polish>Zawsze wyświetlaj kursor dla interakcji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_UseListMenu">
|
||||
<English>Display interaction menus as lists</English>
|
||||
@ -71,5 +72,25 @@
|
||||
<Hungarian>Járműves cselekvések</Hungarian>
|
||||
<Italian>Interazioni con veicoli</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_ColorTextMax">
|
||||
<English>Interaction - Text Max</English>
|
||||
<Polish>Interakcja - Tekst max</Polish>
|
||||
<French>Interaction -Texte Max</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_ColorTextMin">
|
||||
<English>Interaction - Text Min</English>
|
||||
<Polish>Interakcja - Tekst min</Polish>
|
||||
<French>Interaction - Texte Min</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_ColorShadowMax">
|
||||
<English>Interaction - Shadow Max</English>
|
||||
<Polish>Interakcja - Cień max</Polish>
|
||||
<French>Interaction - Ombre Max</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_ColorShadowMin">
|
||||
<English>Interaction - Shadow Min</English>
|
||||
<Polish>Interakcja - Cień min</Polish>
|
||||
<French>Interaction - Ombre Min</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -27,7 +27,7 @@ class CfgVehicles {
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
displayName = "$STR_ACE_Interaction_MainAction";
|
||||
distance = 5;
|
||||
distance = 4;
|
||||
condition = QUOTE(true);
|
||||
statement = "";
|
||||
icon = "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa";
|
||||
@ -35,8 +35,7 @@ class CfgVehicles {
|
||||
|
||||
class ACE_TeamManagement {
|
||||
displayName = "$STR_ACE_Interaction_TeamManagement";
|
||||
distance = 5;
|
||||
condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player} && {GVAR(EnableTeamManagement)});
|
||||
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam) && {GVAR(EnableTeamManagement)});
|
||||
statement = "";
|
||||
showDisabled = 0;
|
||||
priority = 3.2;
|
||||
@ -45,8 +44,7 @@ class CfgVehicles {
|
||||
|
||||
class ACE_JoinTeamRed {
|
||||
displayName = "$STR_ACE_Interaction_JoinTeamRed";
|
||||
distance = 5;
|
||||
condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player});
|
||||
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam));
|
||||
statement = QUOTE([ARR_2(_target,'RED')] call DFUNC(joinTeam));
|
||||
showDisabled = 1;
|
||||
icon = PATHTOF(UI\team\team_red_ca.paa);
|
||||
@ -55,8 +53,7 @@ class CfgVehicles {
|
||||
};
|
||||
class ACE_JoinTeamGreen {
|
||||
displayName = "$STR_ACE_Interaction_JoinTeamGreen";
|
||||
distance = 5;
|
||||
condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player});
|
||||
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam));
|
||||
statement = QUOTE([ARR_2(_target,'GREEN')] call DFUNC(joinTeam));
|
||||
showDisabled = 1;
|
||||
icon = PATHTOF(UI\team\team_green_ca.paa);
|
||||
@ -65,8 +62,7 @@ class CfgVehicles {
|
||||
};
|
||||
class ACE_JoinTeamBlue {
|
||||
displayName = "$STR_ACE_Interaction_JoinTeamBlue";
|
||||
distance = 5;
|
||||
condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player});
|
||||
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam));
|
||||
statement = QUOTE([ARR_2(_target,'BLUE')] call DFUNC(joinTeam));
|
||||
showDisabled = 1;
|
||||
icon = PATHTOF(UI\team\team_blue_ca.paa);
|
||||
@ -75,8 +71,7 @@ class CfgVehicles {
|
||||
};
|
||||
class ACE_JoinTeamYellow {
|
||||
displayName = "$STR_ACE_Interaction_JoinTeamYellow";
|
||||
distance = 5;
|
||||
condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player});
|
||||
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam));
|
||||
statement = QUOTE([ARR_2(_target,'YELLOW')] call DFUNC(joinTeam));
|
||||
showDisabled = 1;
|
||||
icon = PATHTOF(UI\team\team_yellow_ca.paa);
|
||||
@ -86,8 +81,7 @@ class CfgVehicles {
|
||||
|
||||
class ACE_LeaveTeam {
|
||||
displayName = "$STR_ACE_Interaction_LeaveTeam";
|
||||
distance = 5;
|
||||
condition = QUOTE(alive _target && {!isPlayer _target} && {_target in units group _player} && {assignedTeam _player != 'MAIN'});
|
||||
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam) && {assignedTeam _player != 'MAIN'});
|
||||
statement = QUOTE([ARR_2(_target,'MAIN')] call DFUNC(joinTeam));
|
||||
showDisabled = 1;
|
||||
icon = PATHTOF(UI\team\team_white_ca.paa);
|
||||
@ -98,9 +92,8 @@ class CfgVehicles {
|
||||
|
||||
class ACE_JoinGroup {
|
||||
displayName = "$STR_ACE_Interaction_JoinGroup";
|
||||
distance = 5;
|
||||
condition = QUOTE(side group _player == side group _target && {group _player != group _target});
|
||||
statement = QUOTE([_player] joinSilent group _target;);
|
||||
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinGroup));
|
||||
statement = QUOTE([_player] joinSilent group _target);
|
||||
showDisabled = 0;
|
||||
priority = 2.6;
|
||||
icon = PATHTOF(UI\team\team_management_ca.paa);
|
||||
@ -109,7 +102,6 @@ class CfgVehicles {
|
||||
|
||||
class ACE_GetDown {
|
||||
displayName = "$STR_ACE_Interaction_GetDown";
|
||||
distance = 5;
|
||||
condition = QUOTE([_target] call DFUNC(canInteractWithCivilian));
|
||||
statement = QUOTE([_target] call DFUNC(getDown));
|
||||
showDisabled = 0;
|
||||
@ -117,7 +109,6 @@ class CfgVehicles {
|
||||
};
|
||||
class ACE_SendAway {
|
||||
displayName = "$STR_ACE_Interaction_SendAway";
|
||||
distance = 5;
|
||||
condition = QUOTE([_target] call DFUNC(canInteractWithCivilian));
|
||||
statement = QUOTE([_target] call DFUNC(sendAway));
|
||||
showDisabled = 0;
|
||||
@ -125,7 +116,6 @@ class CfgVehicles {
|
||||
};
|
||||
class ACE_Pardon {
|
||||
displayName = "$STR_ACE_Interaction_Pardon";
|
||||
distance = 5;
|
||||
condition = QUOTE(rating _target < -2000 && {alive _target} && {side group _player == side group _target});
|
||||
statement = QUOTE([ARR_3(_target,'{_this addRating -rating _this}',_target)] call DEFUNC(common,execRemoteFnc));
|
||||
showDisabled = 0;
|
||||
@ -233,7 +223,7 @@ class CfgVehicles {
|
||||
displayName = "$STR_ACE_Interaction_JoinTeamBlue";
|
||||
condition = QUOTE(true);
|
||||
exceptions[] = {"isNotInside"};
|
||||
statement = QUOTE([ARR_2(_player,'BLUE')] call FUNC(joinTeam));
|
||||
statement = QUOTE([ARR_2(_player,'BLUE')] call DFUNC(joinTeam));
|
||||
showDisabled = 1;
|
||||
priority = 2.2;
|
||||
icon = PATHTOF(UI\team\team_blue_ca.paa);
|
||||
@ -243,7 +233,7 @@ class CfgVehicles {
|
||||
displayName = "$STR_ACE_Interaction_JoinTeamYellow";
|
||||
condition = QUOTE(true);
|
||||
exceptions[] = {"isNotInside"};
|
||||
statement = QUOTE([ARR_2(_player,'YELLOW')] call FUNC(joinTeam));
|
||||
statement = QUOTE([ARR_2(_player,'YELLOW')] call DFUNC(joinTeam));
|
||||
showDisabled = 1;
|
||||
priority = 2.1;
|
||||
icon = PATHTOF(UI\team\team_yellow_ca.paa);
|
||||
@ -254,7 +244,7 @@ class CfgVehicles {
|
||||
displayName = "$STR_ACE_Interaction_LeaveTeam";
|
||||
condition = QUOTE(assignedTeam _player != 'MAIN');
|
||||
exceptions[] = {"isNotInside"};
|
||||
statement = QUOTE([ARR_2(_player,'MAIN')] call FUNC(joinTeam));
|
||||
statement = QUOTE([ARR_2(_player,'MAIN')] call DFUNC(joinTeam));
|
||||
showDisabled = 1;
|
||||
priority = 2.5;
|
||||
icon = PATHTOF(UI\team\team_white_ca.paa);
|
||||
@ -262,9 +252,9 @@ class CfgVehicles {
|
||||
};
|
||||
class ACE_BecomeLeader {
|
||||
displayName = "$STR_ACE_Interaction_BecomeLeader";
|
||||
condition = QUOTE(_this call FUNC(canBecomeLeader));
|
||||
condition = QUOTE(_this call DFUNC(canBecomeLeader));
|
||||
exceptions[] = {"isNotInside"};
|
||||
statement = QUOTE(_this call FUNC(doBecomeLeader));
|
||||
statement = QUOTE(_this call DFUNC(doBecomeLeader));
|
||||
showDisabled = 1;
|
||||
priority = 1.0;
|
||||
icon = PATHTOF(UI\team\team_white_ca.paa);
|
||||
@ -415,7 +405,7 @@ class CfgVehicles {
|
||||
displayName = "$STR_ACE_Interaction_Passengers";
|
||||
condition = "true";
|
||||
statement = "";
|
||||
insertChildren = QUOTE(_this call FUNC(addPassengersActions));
|
||||
insertChildren = QUOTE(_this call DFUNC(addPassengersActions));
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -433,7 +423,7 @@ class CfgVehicles {
|
||||
displayName = "$STR_ACE_Interaction_Passengers";
|
||||
condition = "true";
|
||||
statement = "";
|
||||
insertChildren = QUOTE(_this call FUNC(addPassengersActions));
|
||||
insertChildren = QUOTE(_this call DFUNC(addPassengersActions));
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -453,7 +443,7 @@ class CfgVehicles {
|
||||
displayName = "$STR_ACE_Interaction_Passengers";
|
||||
condition = "true";
|
||||
statement = "";
|
||||
insertChildren = QUOTE(_this call FUNC(addPassengersActions));
|
||||
insertChildren = QUOTE(_this call DFUNC(addPassengersActions));
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -471,7 +461,7 @@ class CfgVehicles {
|
||||
displayName = "$STR_ACE_Interaction_Passengers";
|
||||
condition = "true";
|
||||
statement = "";
|
||||
insertChildren = QUOTE(_this call FUNC(addPassengersActions));
|
||||
insertChildren = QUOTE(_this call DFUNC(addPassengersActions));
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -489,7 +479,7 @@ class CfgVehicles {
|
||||
displayName = "$STR_ACE_Interaction_Push";
|
||||
distance = 6;
|
||||
condition = QUOTE(getMass _target < 1000 && {alive _target});
|
||||
statement = QUOTE([ARR_2(_target, [ARR_3(2 * (vectorDir _player select 0), 2 * (vectorDir _player select 1), 0.5)])] call FUNC(push););
|
||||
statement = QUOTE([ARR_2(_target, [ARR_3(2 * (vectorDir _player select 0), 2 * (vectorDir _player select 1), 0.5)])] call DFUNC(push););
|
||||
showDisabled = 0;
|
||||
priority = -1;
|
||||
};
|
||||
@ -500,7 +490,7 @@ class CfgVehicles {
|
||||
displayName = "$STR_ACE_Interaction_Passengers";
|
||||
condition = "true";
|
||||
statement = "";
|
||||
insertChildren = QUOTE(_this call FUNC(addPassengersActions));
|
||||
insertChildren = QUOTE(_this call DFUNC(addPassengersActions));
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -519,7 +509,7 @@ class CfgVehicles {
|
||||
displayName = "$STR_ACE_Interaction_Passengers";
|
||||
condition = "true";
|
||||
statement = "";
|
||||
insertChildren = QUOTE(_this call FUNC(addPassengersActions));
|
||||
insertChildren = QUOTE(_this call DFUNC(addPassengersActions));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -8,6 +8,8 @@ PREP(addSelectableItem);
|
||||
PREP(applyButtons);
|
||||
PREP(canBecomeLeader);
|
||||
PREP(canInteractWithCivilian);
|
||||
PREP(canJoinGroup);
|
||||
PREP(canJoinTeam);
|
||||
PREP(canTapShoulder);
|
||||
PREP(doBecomeLeader);
|
||||
PREP(getDoor);
|
||||
|
12
addons/interaction/functions/fnc_canJoinGroup.sqf
Normal file
12
addons/interaction/functions/fnc_canJoinGroup.sqf
Normal file
@ -0,0 +1,12 @@
|
||||
// by commy2
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_unit", "_target"];
|
||||
|
||||
_unit = _this select 0;
|
||||
_target = _this select 1;
|
||||
|
||||
alive _target
|
||||
&& {!(_target getVariable ["ACE_isUnconscious", false])}
|
||||
&& {side group _unit == side group _target}
|
||||
&& {group _unit != group _target}
|
12
addons/interaction/functions/fnc_canJoinTeam.sqf
Normal file
12
addons/interaction/functions/fnc_canJoinTeam.sqf
Normal file
@ -0,0 +1,12 @@
|
||||
// by commy2
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_unit", "_target"];
|
||||
|
||||
_unit = _this select 0;
|
||||
_target = _this select 1;
|
||||
|
||||
alive _target
|
||||
&& {!(_target getVariable ["ACE_isUnconscious", false])}
|
||||
&& {!([_target] call EFUNC(common,isPlayer))}
|
||||
&& {_target in units group _unit}
|
@ -9,7 +9,9 @@ private["_apos", "_aposX", "_aposY", "_args", "_boundsInput", "_bpos", "_canFire
|
||||
private["_constraintLeft", "_constraintRight", "_constraintTop", "_currentTarget", "_fireDisabledEH"];
|
||||
private["_firedEH", "_fov", "_lastTick", "_lockTime", "_maxX", "_maxY", "_minX", "_minY", "_newTarget"];
|
||||
private["_offsetX", "_offsetY", "_pos", "_randomLockInterval", "_randomPosWithinBounds", "_range"];
|
||||
private["_runTime", "_soundTime", "_targetArray", "_zamerny"];
|
||||
private["_runTime", "_soundTime", "_targetArray", "_zamerny", "_currentShooter"];
|
||||
|
||||
_currentShooter = (vehicle ACE_player);
|
||||
|
||||
#define __OffsetX ((ctrlPosition __JavelinIGUITargetingLineV) select 0) - 0.5
|
||||
#define __OffsetY ((ctrlPosition __JavelinIGUITargetingLineH) select 1) - 0.5
|
||||
@ -128,7 +130,7 @@ FUNC(disableFire) = {
|
||||
|
||||
if(_firedEH < 0 && difficulty > 0) then {
|
||||
_firedEH = [ACE_player, "DefaultAction", {true}, {
|
||||
_canFire = ACE_player getVariable["ace_missileguidance_target", nil];
|
||||
_canFire = _this getVariable["ace_missileguidance_target", nil];
|
||||
if(!isNil "_canFire") exitWith { false };
|
||||
true
|
||||
}] call EFUNC(common,addActionEventHandler);
|
||||
@ -155,7 +157,7 @@ if (isNull _newTarget) then {
|
||||
__JavelinIGUITargetingLines ctrlShow false;
|
||||
__JavelinIGUITargetingConstraints ctrlShow false;
|
||||
|
||||
ACE_player setVariable ["ace_missileguidance_target",nil, false];
|
||||
_currentShooter setVariable ["ace_missileguidance_target",nil, false];
|
||||
|
||||
// Disallow fire
|
||||
_fireDisabledEH = [_fireDisabledEH] call FUNC(disableFire);
|
||||
@ -212,7 +214,7 @@ if (isNull _newTarget) then {
|
||||
|
||||
{_x ctrlCommit __TRACKINTERVAL} forEach [__JavelinIGUITargetingGateTL,__JavelinIGUITargetingGateTR,__JavelinIGUITargetingGateBL,__JavelinIGUITargetingGateBR];
|
||||
|
||||
ACE_player setVariable["ace_missileguidance_target", _currentTarget, false];
|
||||
_currentShooter setVariable["ace_missileguidance_target", _currentTarget, false];
|
||||
|
||||
// Allow fire
|
||||
_fireDisabledEH = [_fireDisabledEH] call FUNC(enableFire);
|
||||
@ -227,7 +229,7 @@ if (isNull _newTarget) then {
|
||||
__JavelinIGUITargetingConstrains ctrlShow true;
|
||||
__JavelinIGUITargetingLines ctrlShow false;
|
||||
|
||||
ACE_player setVariable["ace_missileguidance_target", nil, false];
|
||||
_currentShooter setVariable["ace_missileguidance_target", nil, false];
|
||||
|
||||
_boundsInput = if (_currentTarget isKindOf "CAManBase") then {
|
||||
[_newTarget,[-1,-1,-2],_currentTarget selectionPosition "body"];
|
||||
@ -270,7 +272,7 @@ if (isNull _newTarget) then {
|
||||
__JavelinIGUITargetingLines ctrlShow false;
|
||||
__JavelinIGUITargetingConstraints ctrlShow false;
|
||||
|
||||
ACE_player setVariable ["ace_missileguidance_target",nil, false];
|
||||
_currentShooter setVariable ["ace_missileguidance_target",nil, false];
|
||||
|
||||
// Disallow fire
|
||||
_fireDisabledEH = [_fireDisabledEH] call FUNC(disableFire);
|
||||
@ -287,4 +289,4 @@ _args set[3, _lockTime];
|
||||
_args set[4, _soundTime];
|
||||
_args set[6, _fireDisabledEH];
|
||||
|
||||
uiNamespace setVariable[QGVAR(arguments), _args ];
|
||||
uiNamespace setVariable[QGVAR(arguments), _args ];
|
||||
|
@ -33,7 +33,8 @@ uiNameSpace setVariable [QGVAR(arguments),
|
||||
|
||||
|
||||
_pfh_handle = uiNamespace getVariable ["ACE_RscOptics_javelin_PFH", nil];
|
||||
if(isNil "_pfh_handle") then {
|
||||
_pfh_handle = [FUNC(onOpticDraw), 0, []] call CBA_fnc_addPerFrameHandler;
|
||||
uiNamespace setVariable["ACE_RscOptics_javelin_PFH", _pfh_handle];
|
||||
};
|
||||
if(!isNil "_pfh_handle") then {
|
||||
[] call FUNC(onOpticUnload); // Unload optic if it was already loaded
|
||||
};
|
||||
_pfh_handle = [FUNC(onOpticDraw), 0, []] call CBA_fnc_addPerFrameHandler;
|
||||
uiNamespace setVariable["ACE_RscOptics_javelin_PFH", _pfh_handle];
|
||||
|
@ -14,7 +14,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_playerDir", "_windSpeed", "_windDir", "_crosswind", "_headwind", "_humidity", "_temperature", "_humidity", "_barometricPressure", "_altitude"];
|
||||
private ["_playerDir", "_windSpeed", "_crosswind", "_headwind", "_humidity", "_temperature", "_humidity", "_barometricPressure", "_altitude"];
|
||||
|
||||
if (isNil QGVAR(MIN) || isNil QGVAR(MAX)) then {
|
||||
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL ACE_player) select 2);
|
||||
|
@ -42,9 +42,7 @@ if (GVAR(Kestrel4500) && dialog) then {
|
||||
|
||||
GVAR(Overlay) = true;
|
||||
|
||||
[{
|
||||
private ["_outputData", "_updateTimer"];
|
||||
|
||||
[{
|
||||
// abort condition
|
||||
if (!GVAR(Overlay) || {!(("ACE_Kestrel4500" in (uniformItems ACE_player)) || ("ACE_Kestrel4500" in (vestItems ACE_player)))}) exitWith {
|
||||
GVAR(Overlay) = false;
|
||||
@ -55,6 +53,7 @@ GVAR(Overlay) = true;
|
||||
if (diag_tickTime > GVAR(updateTimer)) then {
|
||||
GVAR(updateTimer) = diag_tickTime + 1;
|
||||
|
||||
private ["_outputData"];
|
||||
_outputData = [] call FUNC(generateOutputData);
|
||||
|
||||
3 cutRsc ["RscKestrel4500", "PLAIN", 1, false];
|
||||
|
@ -14,7 +14,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_playerDir", "_textTop", "_textCenterBig", "_textCenterLine1Left", "_textCenterLine2Left", "_textCenterLine3Left", "_textCenterLine1Right", "_textCenterLine2Right", "_textCenterLine3Right", "_textInfoLine1", "_textInfoLine2", "_temperature", "_humidity", "_windSpeed", "_windDir", "_newWindSpeed", "_windSource", "_height"];
|
||||
private ["_playerDir", "_textTop", "_textCenterBig", "_textCenterLine1Left", "_textCenterLine2Left", "_textCenterLine3Left", "_textCenterLine1Right", "_textCenterLine2Right", "_textCenterLine3Right", "_textInfoLine1", "_textInfoLine2", "_temperature", "_humidity", "_windSpeed", "_windDir"];
|
||||
|
||||
[] call FUNC(collectData);
|
||||
|
||||
|
@ -53,4 +53,4 @@ _structuredOutputText = _structuredOutputText + format ["<img align='center' siz
|
||||
// } forEach (magazinesAmmoFull ACE_player);
|
||||
// _structuredOutputText = _structuredOutputText + format [("<t align='center'>" + (localize "STR_ACE_MagazineRepack_RepackedMagazinesCount") + "</t>"), _fullMags, _partialMags];
|
||||
|
||||
[parseText _structuredOutputText] call EFUNC(common,displayTextStructured);
|
||||
[parseText _structuredOutputText, 2] call EFUNC(common,displayTextStructured);
|
||||
|
@ -66,7 +66,7 @@
|
||||
<German>%1 volle(s) Magazin(e) und %2 übrig gebliebene Patrone(n)</German>
|
||||
<Spanish>%1 cargador(es) completo(s) y %2 bala(s) extra(s)</Spanish>
|
||||
<French>%1 chargeur(s) plein(s) et %2 cartouche(s) en rab</French>
|
||||
<Polish>Pełnych magazynków: %1.<br /> Dodatkowych naboi: %2.</Polish>
|
||||
<Polish>Pełnych magazynków: %1.<br/>Dodatkowych naboi: %2.</Polish>
|
||||
<Czech>%1 plný zásobník(y) a %2 munice navíc</Czech>
|
||||
<Italian>%1 caricatore/i pieno e %2 munizioni extra</Italian>
|
||||
<Portuguese>%1 carregador(es) cheio(s) e %2 disparo(s) a mais</Portuguese>
|
||||
@ -102,9 +102,9 @@
|
||||
<Spanish>%1 Total y %2 Parcial</Spanish>
|
||||
<Russian>%1 полных и %2 неполных</Russian>
|
||||
<Czech>%1 plný a %2 částečně</Czech>
|
||||
<Polish>Pełnych: %1.<br />Częściowo pełnych: %2.</Polish>
|
||||
<Polish>Pełnych: %1.<br/>Częściowo pełnych: %2.</Polish>
|
||||
<Hungarian>%1 teljes és %2 részleges</Hungarian>
|
||||
<Italian>%1 pieno e %2 parziale</Italian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,6 +1,11 @@
|
||||
#include "\x\cba\addons\main\script_macros_common.hpp"
|
||||
#include "\x\cba\addons\xeh\script_xeh.hpp"
|
||||
|
||||
//Faster Array Unwraping (skips the IS_ARRAY check normaly found in EXPLODE_1_SYS)
|
||||
#undef EXPLODE_2_SYS
|
||||
#define EXPLODE_1_SYS_FAST(ARRAY,A) A =(ARRAY) select 0
|
||||
#define EXPLODE_2_SYS(ARRAY,A,B) EXPLODE_1_SYS_FAST(ARRAY,A); B = (ARRAY) select 1
|
||||
|
||||
// Default versioning level
|
||||
#define DEFAULT_VERSIONING_LEVEL 2
|
||||
|
||||
|
@ -72,7 +72,7 @@ _vehicle = vehicle _unit;
|
||||
// Do not obscure the map if the player is on a enclosed vehicle (assume internal illumination)
|
||||
if (_vehicle != _unit) then {
|
||||
// Player is in a vehicle
|
||||
if (isTurnedOut _unit && {_vehicle isKindOf "Tank" || {_vehicle isKindOf "Wheeled_APC"}}) then {
|
||||
if (isTurnedOut _unit && { _vehicle isKindOf "Tank" || { ( _vehicle isKindOf "Helicopter" || _vehicle isKindOf "Plane" ) && { (driver _vehicle) == _unit || { (gunner _vehicle) == _unit } } } || {_vehicle isKindOf "Wheeled_APC"}}) then {
|
||||
_isEnclosed = true;
|
||||
};
|
||||
};
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2014-12-22 -->
|
||||
<Project name="ACE">
|
||||
<Package name="Map">
|
||||
|
||||
|
@ -3,6 +3,7 @@ class ACE_Head {
|
||||
displayName = "$STR_ACE_Interaction_Head";
|
||||
runOnHover = 1;
|
||||
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
condition = "true";
|
||||
EXCEPTIONS
|
||||
icon = PATHTOF(UI\icons\medical_cross.paa);
|
||||
@ -65,16 +66,23 @@ class ACE_Head {
|
||||
EXCEPTIONS
|
||||
};
|
||||
class CheckResponse: CheckPulse {
|
||||
displayName = "Check Response";
|
||||
displayName = "$STR_ACE_MEDICAL_CHECK_RESPONSE";
|
||||
condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckResponse')] call DFUNC(canTreatCached));
|
||||
statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckResponse')] call DFUNC(treatment));
|
||||
EXCEPTIONS
|
||||
};
|
||||
class Diagnose: CheckPulse {
|
||||
displayName = "$STR_ACE_MEDICAL_ACTIONS_Diagnose";
|
||||
condition = QUOTE([ARR_4(_player, _target, 'head', 'Diagnose')] call DFUNC(canTreatCached));
|
||||
statement = QUOTE([ARR_4(_player, _target, 'head', 'Diagnose')] call DFUNC(treatment));
|
||||
EXCEPTIONS
|
||||
};
|
||||
};
|
||||
class ACE_Torso {
|
||||
displayName = "$STR_ACE_Interaction_Torso";
|
||||
runOnHover = 1;
|
||||
statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
condition = "true";
|
||||
EXCEPTIONS
|
||||
icon = PATHTOF(UI\icons\medical_cross.paa);
|
||||
@ -103,7 +111,7 @@ class ACE_Torso {
|
||||
enableInside = 1;
|
||||
};
|
||||
class TriageCard {
|
||||
displayName = "Triage Card";
|
||||
displayName = "$STR_ACE_MEDICAL_ACTIONS_TriageCard";
|
||||
distance = 2.0;
|
||||
condition = "true";
|
||||
statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard));
|
||||
@ -150,21 +158,21 @@ class ACE_Torso {
|
||||
icon = PATHTOF(UI\icons\bandage.paa);
|
||||
};
|
||||
class SurgicalKit: fieldDressing {
|
||||
displayName = "Use Surgical Kit";
|
||||
displayName = "$STR_ACE_MEDICAL_USE_SURGICALKIT";
|
||||
condition = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(canTreatCached));
|
||||
statement = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(treatment));
|
||||
EXCEPTIONS
|
||||
icon = PATHTOF(UI\icons\surgicalKit.paa);
|
||||
};
|
||||
class PersonalAidKit: fieldDressing {
|
||||
displayName = "Use Personal Aid Kit";
|
||||
displayName = "$STR_ACE_MEDICAL_USE_AID_KIT";
|
||||
condition = QUOTE([ARR_4(_player, _target, 'body', 'PersonalAidKit')] call DFUNC(canTreatCached));
|
||||
statement = QUOTE([ARR_4(_player, _target, 'body', 'PersonalAidKit')] call DFUNC(treatment));
|
||||
EXCEPTIONS
|
||||
icon = "";
|
||||
};
|
||||
class CPR: fieldDressing {
|
||||
displayName = "CPR";
|
||||
displayName = "$STR_ACE_MEDICAL_ACTIONS_CPR";
|
||||
condition = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(canTreatCached));
|
||||
statement = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(treatment));
|
||||
EXCEPTIONS
|
||||
@ -175,6 +183,7 @@ class ACE_ArmLeft {
|
||||
displayName = "$STR_ACE_Interaction_ArmLeft";
|
||||
runOnHover = 1;
|
||||
statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,2,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
condition = "true";
|
||||
EXCEPTIONS
|
||||
icon = PATHTOF(UI\icons\medical_cross.paa);
|
||||
@ -332,6 +341,7 @@ class ACE_ArmRight {
|
||||
displayName = "$STR_ACE_Interaction_ArmRight";
|
||||
runOnHover = 1;
|
||||
statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,3,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
condition = "true";
|
||||
EXCEPTIONS
|
||||
icon = PATHTOF(UI\icons\medical_cross.paa);
|
||||
@ -486,6 +496,7 @@ class ACE_LegLeft {
|
||||
displayName = "$STR_ACE_Interaction_LegLeft";
|
||||
runOnHover = 1;
|
||||
statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,4,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
condition = "true";
|
||||
EXCEPTIONS
|
||||
icon = PATHTOF(UI\icons\medical_cross.paa);
|
||||
@ -628,6 +639,7 @@ class ACE_LegRight {
|
||||
displayName = "$STR_ACE_Interaction_LegRight";
|
||||
runOnHover = 1;
|
||||
statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,5,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
condition = "true";
|
||||
EXCEPTIONS
|
||||
icon = PATHTOF(UI\icons\medical_cross.paa);
|
||||
|
@ -12,6 +12,7 @@ class Medical {
|
||||
icon = PATHTOF(UI\icons\medical_cross.paa);
|
||||
exceptions[] = {"isNotInside"};
|
||||
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
condition = "true";
|
||||
runOnHover = 1;
|
||||
|
||||
@ -80,6 +81,7 @@ class Medical {
|
||||
runOnHover = 1;
|
||||
exceptions[] = {"isNotInside"};
|
||||
statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
showDisabled = 1;
|
||||
priority = 2;
|
||||
hotkey = "";
|
||||
@ -148,6 +150,7 @@ class Medical {
|
||||
runOnHover = 1;
|
||||
exceptions[] = {"isNotInside"};
|
||||
statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,2,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
condition = "true";
|
||||
icon = PATHTOF(UI\icons\medical_cross.paa);
|
||||
|
||||
@ -249,6 +252,7 @@ class Medical {
|
||||
runOnHover = 1;
|
||||
exceptions[] = {"isNotInside"};
|
||||
statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,3,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
condition = "true";
|
||||
icon = PATHTOF(UI\icons\medical_cross.paa);
|
||||
|
||||
@ -346,6 +350,7 @@ class Medical {
|
||||
runOnHover = 1;
|
||||
exceptions[] = {"isNotInside"};
|
||||
statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,4,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
condition = "true";
|
||||
icon = PATHTOF(UI\icons\medical_cross.paa);
|
||||
|
||||
@ -432,6 +437,7 @@ class Medical {
|
||||
runOnHover = 1;
|
||||
exceptions[] = {"isNotInside"};
|
||||
statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation));
|
||||
modifierFunction = QUOTE([ARR_4(_target,_player,5,_this select 3)] call FUNC(modifyMedicalAction));
|
||||
condition = "true";
|
||||
icon = PATHTOF(UI\icons\medical_cross.paa);
|
||||
|
||||
|
@ -71,14 +71,14 @@ class ACE_Medical_Actions {
|
||||
itemConsumed = 1;
|
||||
litter[] = {};
|
||||
};
|
||||
class CheckPulse: Bandage {
|
||||
displayName = "";
|
||||
displayNameProgress = "";
|
||||
class Diagnose: Bandage {
|
||||
displayName = "$STR_ACE_MEDICAL_ACTIONS_Diagnose";
|
||||
displayNameProgress = "$STR_ACE_MEDICAL_ACTIONS_Diagnosing";
|
||||
treatmentLocations[] = {"All"};
|
||||
requiredMedic = 0;
|
||||
treatmentTime = 2;
|
||||
treatmentTime = 1;
|
||||
items[] = {};
|
||||
callbackSuccess = QUOTE(DFUNC(actionCheckPulse));
|
||||
callbackSuccess = QUOTE(DFUNC(actionDiagnose));
|
||||
callbackFailure = "";
|
||||
callbackProgress = "";
|
||||
animationPatient = "";
|
||||
@ -86,12 +86,6 @@ class ACE_Medical_Actions {
|
||||
itemConsumed = 0;
|
||||
litter[] = {};
|
||||
};
|
||||
class CheckBloodPressure: CheckPulse {
|
||||
callbackSuccess = QUOTE(DFUNC(actionCheckBloodPressure));
|
||||
};
|
||||
class CheckResponse: CheckPulse {
|
||||
callbackSuccess = QUOTE(DFUNC(actionCheckResponse));
|
||||
};
|
||||
};
|
||||
|
||||
class Advanced {
|
||||
@ -256,8 +250,8 @@ class ACE_Medical_Actions {
|
||||
condition = QUOTE([ARR_2(_this select 1, _this select 2)] call FUNC(hasTourniquetAppliedTo));
|
||||
};
|
||||
class CPR: fieldDressing {
|
||||
displayName = "CPR";
|
||||
displayNameProgress = "Performing CPR";
|
||||
displayName = "$STR_ACE_MEDICAL_ACTIONS_CPR";
|
||||
displayNameProgress = "$STR_ACE_MEDICAL_ACTIONS_PerformingCPR";
|
||||
treatmentLocations[] = {"All"};
|
||||
requiredMedic = 0;
|
||||
treatmentTime = 15;
|
||||
@ -303,23 +297,26 @@ class ACE_Medical_Advanced {
|
||||
// Source: Scarle
|
||||
// Also called scrapes, they occur when the skin is rubbed away by friction against another rough surface (e.g. rope burns and skinned knees).
|
||||
class Abrasion {
|
||||
name = "Scrape";
|
||||
name = "$STR_ACE_Medical_Wounds_Abrasion";
|
||||
selections[] = {"All"};
|
||||
bleedingRate = 0.0001;
|
||||
pain = 0.01;
|
||||
causes[] = {"falling", "ropeburn", "vehiclecrash", "unknown"};
|
||||
minDamage = 0.01;
|
||||
class Minor {
|
||||
name = "$STR_ACE_Medical_Wounds_Abrasion_Minor";
|
||||
minDamage = 0.01;
|
||||
maxDamage = 0.2;
|
||||
bleedingRate = 0.0001;
|
||||
};
|
||||
class Medium {
|
||||
name = "$STR_ACE_Medical_Wounds_Abrasion_Medium";
|
||||
minDamage = 0.2;
|
||||
maxDamage = 0.3;
|
||||
bleedingRate = 0.00015;
|
||||
};
|
||||
class Large {
|
||||
name = "$STR_ACE_Medical_Wounds_Abrasion_Large";
|
||||
minDamage = 0.3;
|
||||
bleedingRate = 0.0002;
|
||||
};
|
||||
@ -327,23 +324,26 @@ class ACE_Medical_Advanced {
|
||||
|
||||
// Occur when an entire structure or part of it is forcibly pulled away, such as the loss of a permanent tooth or an ear lobe. Explosions, gunshots, and animal bites may cause avulsions.
|
||||
class Avulsions {
|
||||
name = "Avulsion";
|
||||
name = "$STR_ACE_Medical_Wounds_Avulsion";
|
||||
selections[] = {"All"};
|
||||
bleedingRate = 0.01;
|
||||
pain = 0.3;
|
||||
causes[] = {"explosive", "vehiclecrash", "grenade", "shell", "bullet", "backblast", "bite"};
|
||||
minDamage = 0.2;
|
||||
class Minor {
|
||||
name = "$STR_ACE_Medical_Wounds_Avulsion_Minor";
|
||||
minDamage = 0.2;
|
||||
maxDamage = 0.3;
|
||||
bleedingRate = 0.01;
|
||||
};
|
||||
class Medium {
|
||||
name = "$STR_ACE_Medical_Wounds_Avulsion_Medium";
|
||||
minDamage = 0.3;
|
||||
maxDamage = 0.6;
|
||||
bleedingRate = 0.02;
|
||||
};
|
||||
class Large {
|
||||
name = "$STR_ACE_Medical_Wounds_Avulsion_Large";
|
||||
minDamage = 0.5;
|
||||
bleedingRate = 0.05;
|
||||
};
|
||||
@ -351,22 +351,25 @@ class ACE_Medical_Advanced {
|
||||
|
||||
// Also called bruises, these are the result of a forceful trauma that injures an internal structure without breaking the skin. Blows to the chest, abdomen, or head with a blunt instrument (e.g. a football or a fist) can cause contusions.
|
||||
class Contusion {
|
||||
name = "Bruise";
|
||||
name = "$STR_ACE_Medical_Wounds_Contusion";
|
||||
selections[] = {"All"};
|
||||
bleedingRate = 0.0;
|
||||
pain = 0.05;
|
||||
causes[] = {"bullet", "backblast", "punch","vehiclecrash","falling"};
|
||||
causes[] = {"bullet", "backblast", "punch", "vehiclecrash", "falling"};
|
||||
minDamage = 0.01;
|
||||
maxDamage = 0.1;
|
||||
class Minor {
|
||||
name = "$STR_ACE_Medical_Wounds_Contusion_Minor";
|
||||
minDamage = 0.01;
|
||||
maxDamage = 0.1;
|
||||
};
|
||||
class Medium {
|
||||
name = "$STR_ACE_Medical_Wounds_Contusion_Medium";
|
||||
minDamage = 0.1;
|
||||
maxDamage = 0.15;
|
||||
};
|
||||
class Large {
|
||||
name = "$STR_ACE_Medical_Wounds_Contusion_Large";
|
||||
minDamage = 0.15;
|
||||
maxDamage = 0.2;
|
||||
};
|
||||
@ -374,23 +377,26 @@ class ACE_Medical_Advanced {
|
||||
|
||||
// Occur when a heavy object falls onto a person, splitting the skin and shattering or tearing underlying structures.
|
||||
class CrushWound {
|
||||
name = "Crushed tissue";
|
||||
name = "$STR_ACE_Medical_Wounds_Crush";
|
||||
selections[] = {"All"};
|
||||
bleedingRate = 0.01;
|
||||
pain = 0.1;
|
||||
causes[] = {"falling", "vehiclecrash", "punch", "unknown"};
|
||||
minDamage = 0.1;
|
||||
class Minor {
|
||||
name = "$STR_ACE_Medical_Wounds_Crush_Minor";
|
||||
minDamage = 0.1;
|
||||
maxDamage = 0.45;
|
||||
bleedingRate = 0.005;
|
||||
};
|
||||
class Medium {
|
||||
name = "$STR_ACE_Medical_Wounds_Crush_Medium";
|
||||
minDamage = 0.4;
|
||||
maxDamage = 0.7;
|
||||
bleedingRate = 0.007;
|
||||
};
|
||||
class Large {
|
||||
name = "$STR_ACE_Medical_Wounds_Crush_Large";
|
||||
minDamage = 0.6;
|
||||
bleedingRate = 0.0095;
|
||||
};
|
||||
@ -398,23 +404,26 @@ class ACE_Medical_Advanced {
|
||||
|
||||
// Slicing wounds made with a sharp instrument, leaving even edges. They may be as minimal as a paper cut or as significant as a surgical incision.
|
||||
class Cut {
|
||||
name = "Cut";
|
||||
name = "$STR_ACE_Medical_Wounds_Cut";
|
||||
selections[] = {"All"};
|
||||
bleedingRate = 0.01;
|
||||
pain = 0.075;
|
||||
causes[] = {"vehiclecrash", "grenade", "explosive", "shell", "backblast", "stab", "unknown"};
|
||||
minDamage = 0.1;
|
||||
class Minor {
|
||||
name = "$STR_ACE_Medical_Wounds_Cut_Minor";
|
||||
minDamage = 0.1;
|
||||
maxDamage = 0.3;
|
||||
bleedingRate = 0.005;
|
||||
};
|
||||
class Medium {
|
||||
name = "$STR_ACE_Medical_Wounds_Cut_Medium";
|
||||
minDamage = 0.3;
|
||||
maxDamage = 0.65;
|
||||
bleedingRate = 0.02;
|
||||
};
|
||||
class Large {
|
||||
name = "$STR_ACE_Medical_Wounds_Cut_Large";
|
||||
minDamage = 0.65;
|
||||
bleedingRate = 0.05;
|
||||
};
|
||||
@ -422,23 +431,26 @@ class ACE_Medical_Advanced {
|
||||
|
||||
// Also called tears, these are separating wounds that produce ragged edges. They are produced by a tremendous force against the body, either from an internal source as in childbirth, or from an external source like a punch.
|
||||
class Laceration {
|
||||
name = "Tear";
|
||||
name = "$STR_ACE_Medical_Wounds_Laceration";
|
||||
selections[] = {"All"};
|
||||
bleedingRate = 0.01;
|
||||
pain = 0.075;
|
||||
causes[] = {"vehiclecrash", "punch"};
|
||||
minDamage = 0.01;
|
||||
class Minor {
|
||||
name = "$STR_ACE_Medical_Wounds_Laceration_Minor";
|
||||
minDamage = 0.1;
|
||||
maxDamage = 0.5;
|
||||
bleedingRate = 0.005;
|
||||
};
|
||||
class Medium {
|
||||
name = "$STR_ACE_Medical_Wounds_Laceration_Medium";
|
||||
minDamage = 0.5;
|
||||
maxDamage = 0.7;
|
||||
bleedingRate = 0.01;
|
||||
};
|
||||
class Large {
|
||||
name = "$STR_ACE_Medical_Wounds_Laceration_Large";
|
||||
minDamage = 0.7;
|
||||
bleedingRate = 0.03;
|
||||
};
|
||||
@ -446,22 +458,25 @@ class ACE_Medical_Advanced {
|
||||
|
||||
// Also called velocity wounds, they are caused by an object entering the body at a high speed, typically a bullet or small peices of shrapnel.
|
||||
class velocityWound {
|
||||
name = "Velocity Wound";
|
||||
name = "$STR_ACE_Medical_Wounds_VelocityWound";
|
||||
selections[] = {"All"};
|
||||
bleedingRate = 0.01;
|
||||
pain = 0.2;
|
||||
causes[] = {"bullet", "grenade","explosive", "shell", "unknown"};
|
||||
minDamage = 0.15;
|
||||
class Minor {
|
||||
name = "$STR_ACE_Medical_Wounds_VelocityWound_Minor";
|
||||
minDamage = 0.15;
|
||||
maxDamage = 0.3;
|
||||
bleedingRate = 0.025;
|
||||
};
|
||||
class Medium {
|
||||
name = "$STR_ACE_Medical_Wounds_VelocityWound_Medium";
|
||||
minDamage = 0.3;
|
||||
bleedingRate = 0.05;
|
||||
};
|
||||
class Large {
|
||||
name = "$STR_ACE_Medical_Wounds_VelocityWound_Large";
|
||||
minDamage = 0.75;
|
||||
bleedingRate = 0.1;
|
||||
};
|
||||
@ -469,23 +484,26 @@ class ACE_Medical_Advanced {
|
||||
|
||||
// Deep, narrow wounds produced by sharp objects such as nails, knives, and broken glass.
|
||||
class punctureWound {
|
||||
name = "Puncture Wound";
|
||||
name = "$STR_ACE_Medical_Wounds_PunctureWound";
|
||||
selections[] = {"All"};
|
||||
bleedingRate = 0.01;
|
||||
pain = 0.075;
|
||||
causes[] = {"stab", "grenade"};
|
||||
minDamage = 0.01;
|
||||
class Minor {
|
||||
name = "$STR_ACE_Medical_Wounds_PunctureWound_Minor";
|
||||
minDamage = 0.01;
|
||||
maxDamage = 0.5;
|
||||
bleedingRate = 0.01;
|
||||
};
|
||||
class Medium {
|
||||
name = "$STR_ACE_Medical_Wounds_PunctureWound_Medium";
|
||||
minDamage = 0.5;
|
||||
maxDamage = 0.75;
|
||||
bleedingRate = 0.03;
|
||||
};
|
||||
class Large {
|
||||
name = "$STR_ACE_Medical_Wounds_PunctureWound_Large";
|
||||
minDamage = 0.65;
|
||||
bleedingRate = 0.08;
|
||||
};
|
||||
@ -493,7 +511,7 @@ class ACE_Medical_Advanced {
|
||||
};
|
||||
class fractures {
|
||||
class Femur {
|
||||
name = "Broken Femur";
|
||||
name = "$STR_ACE_Medical_Wounds_Femur";
|
||||
selections[] = {"Head", "Torso"};
|
||||
pain = 0.2;
|
||||
causes[] = {"Bullet", "VehicleCrash", "Backblast", "Explosive", "Shell", "Grenade"};
|
||||
|
@ -33,9 +33,6 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_packingBandage: ACE_ItemCore {
|
||||
scope = 2;
|
||||
value = 1;
|
||||
count = 1;
|
||||
type = 16;
|
||||
displayName = $STR_ACE_MEDICAL_PACKING_BANDAGE_DISPLAY;
|
||||
picture = QUOTE(PATHTOF(ui\items\packingBandage_x_ca.paa));
|
||||
model = QUOTE(PATHTOF(data\packingbandage.p3d));
|
||||
@ -47,9 +44,6 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_elasticBandage: ACE_ItemCore {
|
||||
scope = 2;
|
||||
value = 1;
|
||||
count = 1;
|
||||
type = 16;
|
||||
displayName = $STR_ACE_MEDICAL_BANDAGE_ELASTIC_DISPLAY;
|
||||
picture = QUOTE(PATHTOF(ui\items\elasticBandage_x_ca.paa));
|
||||
model = "\A3\Structures_F_EPA\Items\Medical\Bandage_F.p3d";
|
||||
@ -61,9 +55,6 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_tourniquet: ACE_ItemCore {
|
||||
scope = 2;
|
||||
value = 1;
|
||||
count = 1;
|
||||
type = 16;
|
||||
displayName = $STR_ACE_MEDICAL_TOURNIQUET_DISPLAY;
|
||||
picture = QUOTE(PATHTOF(ui\items\tourniquet_x_ca.paa));
|
||||
model = QUOTE(PATHTOF(data\tourniquet.p3d));
|
||||
@ -75,9 +66,6 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_morphine: ACE_ItemCore {
|
||||
scope = 2;
|
||||
value = 1;
|
||||
count = 1;
|
||||
type = 16;
|
||||
displayName = $STR_ACE_MEDICAL_MORPHINE_DISPLAY;
|
||||
picture = QUOTE(PATHTOF(ui\items\morphine_x_ca.paa));
|
||||
model = QUOTE(PATHTOF(data\morphine.p3d));
|
||||
@ -89,9 +77,6 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_atropine: ACE_ItemCore {
|
||||
scope = 2;
|
||||
value = 1;
|
||||
count = 1;
|
||||
type = 16;
|
||||
displayName = $STR_ACE_MEDICAL_ATROPINE_DISPLAY;
|
||||
picture = QUOTE(PATHTOF(ui\items\atropine_x_ca.paa));
|
||||
model = QUOTE(PATHTOF(data\atropine.p3d));
|
||||
@ -104,9 +89,6 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_epinephrine: ACE_ItemCore {
|
||||
scope = 2;
|
||||
value = 1;
|
||||
count = 1;
|
||||
type = 16;
|
||||
displayName = $STR_ACE_MEDICAL_EPINEPHRINE_DISPLAY;
|
||||
picture = QUOTE(PATHTOF(ui\items\epinephrine_x_ca.paa));
|
||||
model = QUOTE(PATHTOF(data\epinephrine.p3d));
|
||||
@ -118,8 +100,6 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_plasmaIV: ACE_ItemCore {
|
||||
scope = 2;
|
||||
value = 1;
|
||||
count = 1;
|
||||
displayName = $STR_ACE_MEDICAL_PLASMA_IV;
|
||||
picture = QUOTE(PATHTOF(ui\items\plasmaIV_x_ca.paa));
|
||||
descriptionShort = $STR_ACE_MEDICAL_PLASMA_IV_DESC_SHORT;
|
||||
@ -142,8 +122,6 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_bloodIV: ACE_ItemCore {
|
||||
scope = 2;
|
||||
value = 1;
|
||||
count = 1;
|
||||
model = "\A3\Structures_F_EPA\Items\Medical\BloodBag_F.p3d";
|
||||
displayName = $STR_ACE_MEDICAL_BLOOD_IV;
|
||||
picture = QUOTE(PATHTOF(ui\items\bloodIV_x_ca.paa));
|
||||
@ -167,8 +145,6 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_salineIV: ACE_ItemCore {
|
||||
scope = 2;
|
||||
value = 1;
|
||||
count = 1;
|
||||
displayName = $STR_ACE_MEDICAL_SALINE_IV;
|
||||
picture = QUOTE(PATHTOF(ui\items\salineIV_x_ca.paa));
|
||||
descriptionShort = $STR_ACE_MEDICAL_SALINE_IV_DESC_SHORT;
|
||||
@ -191,9 +167,6 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_quikclot: ACE_ItemCore {
|
||||
scope = 2;
|
||||
value = 1;
|
||||
count = 1;
|
||||
type = 16;
|
||||
displayName = $STR_ACE_MEDICAL_QUIKCLOT_DISPLAY;
|
||||
picture = QUOTE(PATHTOF(ui\items\quickclot_x_ca.paa));
|
||||
descriptionShort = $STR_ACE_MEDICAL_QUIKCLOT_DESC_SHORT;
|
||||
@ -204,9 +177,6 @@ class CfgWeapons {
|
||||
};
|
||||
class ACE_personalAidKit: ACE_ItemCore {
|
||||
scope = 2;
|
||||
value = 1;
|
||||
count = 1;
|
||||
type = 16;
|
||||
displayName = $STR_ACE_MEDICAL_AID_KIT_DISPLAY;
|
||||
picture = QUOTE(PATHTOF(ui\items\personal_aid_kit_x_ca.paa));
|
||||
descriptionShort = $STR_ACE_MEDICAL_AID_KIT_DESC_SHORT;
|
||||
|
@ -7,6 +7,7 @@ PREP(actionCheckBloodPressureLocal);
|
||||
PREP(actionCheckPulse);
|
||||
PREP(actionCheckPulseLocal);
|
||||
PREP(actionCheckResponse);
|
||||
PREP(actionDiagnose);
|
||||
PREP(actionPlaceInBodyBag);
|
||||
PREP(actionRemoveTourniquet);
|
||||
PREP(actionLoadUnit);
|
||||
@ -55,6 +56,7 @@ PREP(isInMedicalVehicle);
|
||||
PREP(isMedic);
|
||||
PREP(isMedicalVehicle);
|
||||
PREP(itemCheck);
|
||||
PREP(modifyMedicalAction);
|
||||
PREP(onMedicationUsage);
|
||||
PREP(onWoundUpdateRequest);
|
||||
PREP(onPropagateWound);
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {"ACE_medicalSupplyCrate", "ACE_fieldDressingItem", "ACE_packingBandageItem", "ACE_elasticBandageItem", "ACE_tourniquetItem", "ACE_morphineItem", "ACE_atropineItem", "ACE_epinephrineItem", "ACE_plasmaIVItem", "ACE_bloodIVItem", "ACE_salineIVItem", "ACE_quikclotItem", "ACE_personalAidKitItem", "ACE_surgicalKitItem", "ACE_bodyBagItem", "ACE_bodyBagObject"};
|
||||
units[] = {"ACE_medicalSupplyCrate", "ACE_medicalSupplyCrate_advanced", "ACE_fieldDressingItem", "ACE_packingBandageItem", "ACE_elasticBandageItem", "ACE_tourniquetItem", "ACE_morphineItem", "ACE_atropineItem", "ACE_epinephrineItem", "ACE_plasmaIVItem", "ACE_bloodIVItem", "ACE_salineIVItem", "ACE_quikclotItem", "ACE_personalAidKitItem", "ACE_surgicalKitItem", "ACE_bodyBagItem", "ACE_bodyBagObject"};
|
||||
weapons[] = {"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_tourniquet", "ACE_morphine", "ACE_atropine", "ACE_epinephrine", "ACE_plasmaIV", "ACE_plasmaIV_500", "ACE_plasmaIV_250", "ACE_bloodIV", "ACE_bloodIV_500", "ACE_bloodIV_250", "ACE_salineIV", "ACE_salineIV_500", "ACE_salineIV_250", "ACE_quikclot", "ACE_personalAidKit", "ACE_surgicalKit", "ACE_bodyBag"};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_interaction","ace_modules"};
|
||||
|
@ -33,20 +33,20 @@ if ([_caller] call FUNC(isMedic)) then {
|
||||
} else {
|
||||
if (_bloodPressureHigh > 20) then {
|
||||
_output = "STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_2";
|
||||
_logOutPut = "Low";
|
||||
_logOutPut = localize "STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_LOW";
|
||||
if (_bloodPressureHigh > 100) then {
|
||||
_output = "STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_3";
|
||||
_logOutPut = "Normal";
|
||||
_logOutPut = localize "STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_NORMAL";
|
||||
if (_bloodPressureHigh > 160) then {
|
||||
_output = "STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_4";
|
||||
_logOutPut = "High";
|
||||
_logOutPut = localize "STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_HIGH";
|
||||
};
|
||||
|
||||
};
|
||||
} else {
|
||||
if (random(10) > 3) then {
|
||||
_output = "STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_5";
|
||||
_logOutPut = "No Blood Pressure";
|
||||
_logOutPut = localize "STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_NOBLOODPRESSURE";
|
||||
} else {
|
||||
_output = "STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_6";
|
||||
};
|
||||
@ -56,5 +56,5 @@ if ([_caller] call FUNC(isMedic)) then {
|
||||
["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller]] call EFUNC(common,targetEvent);
|
||||
|
||||
if (_logOutPut != "") then {
|
||||
[_target,"activity", "%1 checked Blood Pressure: %2", [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog);
|
||||
[_target,"activity", localize "STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_LOG", [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog);
|
||||
};
|
||||
|
@ -33,14 +33,14 @@ if (_heartRate > 1.0) then {
|
||||
} else {
|
||||
// non medical personel will only find a pulse/HR
|
||||
_heartRateOutput = "STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_2";
|
||||
_logOutPut = "Weak";
|
||||
_logOutPut = localize "STR_ACE_MEDICAL_CHECK_PULSE_WEAK";
|
||||
if (_heartRate > 60) then {
|
||||
if (_heartRate > 100) then {
|
||||
_heartRateOutput = "STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_3";
|
||||
_logOutPut = "Strong";
|
||||
_logOutPut = localize "STR_ACE_MEDICAL_CHECK_PULSE_STRONG";
|
||||
} else {
|
||||
_heartRateOutput = "STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_4";
|
||||
_logOutPut = "Normal";
|
||||
_logOutPut = localize "STR_ACE_MEDICAL_CHECK_PULSE_NORMAL";
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -49,5 +49,5 @@ if (_heartRate > 1.0) then {
|
||||
["displayTextStructured", [_caller], [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller]] call EFUNC(common,targetEvent);
|
||||
|
||||
if (_logOutPut != "") then {
|
||||
[_unit,"activity","%1 checked Heart Rate: %2",[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog);
|
||||
[_unit,"activity", localize "STR_ACE_MEDICAL_CHECK_PULSE_LOG",[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog);
|
||||
};
|
||||
|
41
addons/medical/functions/fnc_actionDiagnose.sqf
Normal file
41
addons/medical/functions/fnc_actionDiagnose.sqf
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Action for diagnosing in basic medical
|
||||
*
|
||||
* Arguments:
|
||||
* 0: The medic <OBJECT>
|
||||
* 1: The patient <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* NONE
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_caller","_target","_title","_content"];
|
||||
_caller = _this select 0;
|
||||
_target = _this select 1;
|
||||
|
||||
_genericMessages = ["STR_ACE_MEDICAL_diagnoseMessage"];
|
||||
|
||||
_genericMessages pushBack ([_target] call EFUNC(common,getName));
|
||||
if (alive _target) then {
|
||||
_genericMessages pushback "STR_ACE_MEDICAL_diagnoseAlive";
|
||||
} else {
|
||||
_genericMessages pushback "STR_ACE_MEDICAL_diagnoseDead";
|
||||
};
|
||||
if (_target getvariable[QGVAR(hasLostBlood), false]) then {
|
||||
_genericMessages pushback "STR_ACE_MEDICAL_lostBlood";
|
||||
} else {
|
||||
_genericMessages pushback "STR_ACE_MEDICAL_noBloodloss";
|
||||
};
|
||||
|
||||
if (_target getvariable[QGVAR(hasPain), false]) then {
|
||||
_genericMessages pushback "STR_ACE_MEDICAL_inPain";
|
||||
} else {
|
||||
_genericMessages pushback "STR_ACE_MEDICAL_noPain";
|
||||
};
|
||||
|
||||
["displayTextStructured", [_caller], [_genericMessages, 3.0, _caller]] call EFUNC(common,targetEvent);
|
@ -14,6 +14,8 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
// Exit for basic medical
|
||||
if (GVAR(level) < 2) exitWith {};
|
||||
private ["_target", "_show", "_selectionN"];
|
||||
_target = _this select 0;
|
||||
_show = if (count _this > 1) then {_this select 1} else {true};
|
||||
@ -184,7 +186,7 @@ if (_show) then {
|
||||
_lbCtrl lbSetColor [_foreachIndex + _amountOfGeneric, _x select 1];
|
||||
}foreach _allInjuryTexts;
|
||||
if (count _allInjuryTexts == 0) then {
|
||||
_lbCtrl lbAdd "No injuries on this bodypart..";
|
||||
_lbCtrl lbAdd (localize "STR_ACE_Medical_NoInjuriesBodypart");
|
||||
};
|
||||
|
||||
_logCtrl = (_display displayCtrl 302);
|
||||
|
@ -58,7 +58,7 @@ if (_show) then {
|
||||
}foreach _log;
|
||||
|
||||
if (count _triageCardTexts == 0) then {
|
||||
_lbCtrl lbAdd "No entries on this triage card..";
|
||||
_lbCtrl lbAdd (localize "STR_ACE_MEDICAL_TriageCard_NoEntry");
|
||||
};
|
||||
{
|
||||
_lbCtrl lbAdd _x;
|
||||
|
40
addons/medical/functions/fnc_modifyMedicalAction.sqf
Normal file
40
addons/medical/functions/fnc_modifyMedicalAction.sqf
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Author: esteldunedain
|
||||
* Modify the visuals of a medical action point.
|
||||
* On Basic medical: modify the icon color based on damage on that body part.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: The Patient Unit <OBJECT>
|
||||
* 1: The Diagnosing Unit <OBJECT>
|
||||
* 2: Selection Number <NUMBER>
|
||||
* 3: The action to modify <OBJECT>
|
||||
*
|
||||
* ReturnValue:
|
||||
* nil
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
EXPLODE_4_PVT(_this,_target,_player,_selectionN,_actionData);
|
||||
if (GVAR(level) < 2) exitwith {
|
||||
private ["_pointDamage"];
|
||||
_pointDamage = _target getHitPointDamage (["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"] select _selectionN);
|
||||
|
||||
if (_pointDamage >= 0.8) exitWith {
|
||||
_actionData set [2, QUOTE(PATHTOF(UI\icons\medical_crossRed.paa))];
|
||||
};
|
||||
if (_pointDamage > 0) exitWith {
|
||||
_actionData set [2, QUOTE(PATHTOF(UI\icons\medical_crossYellow.paa))];
|
||||
};
|
||||
};
|
||||
|
||||
private ["_openWounds", "_amountOf"];
|
||||
_openWounds = _target getvariable [QGVAR(openWounds), []];
|
||||
{
|
||||
_amountOf = _x select 3;
|
||||
if (_amountOf > 0 && {(_selectionN == (_x select 2))}) exitwith {
|
||||
_actionData set [2, QUOTE(PATHTOF(UI\icons\medical_crossRed.paa))];
|
||||
};
|
||||
}foreach _openWounds;
|
@ -26,7 +26,7 @@ if !(_set) exitwith {
|
||||
_unit setvariable ["ACE_isUnconscious", false, true];
|
||||
};
|
||||
|
||||
if !(!(isNull _unit) && {(_unit isKindOf "CaManBase") && ([_unit] call EFUNC(common,isAwake))}) exitwith{};
|
||||
if !(!(isNull _unit) && {(_unit isKindOf "CAManBase") && ([_unit] call EFUNC(common,isAwake))}) exitwith{};
|
||||
|
||||
if (!local _unit) exitwith {
|
||||
[[_unit], QUOTE(DFUNC(setUnconscious)), _unit, false] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */
|
||||
@ -86,4 +86,7 @@ _startingTime = time;
|
||||
|
||||
[DFUNC(unconsciousPFH), 0.1, [_unit,_animState, _originalPos, _startingTime, _minWaitingTime, false, vehicle _unit isKindOf "ParachuteBase"] ] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
// unconscious can't talk
|
||||
[_unit, "isUnconscious"] call EFUNC(common,muteUnit);
|
||||
|
||||
["medical_onUnconscious", [_unit, true]] call EFUNC(common,globalEvent);
|
||||
|
@ -31,6 +31,8 @@ if (!alive _unit) exitwith {
|
||||
[_unit, false] call EFUNC(common,disableAI);
|
||||
//_unit setUnitPos _originalPos;
|
||||
_unit setUnconscious false;
|
||||
|
||||
[_unit, "isUnconscious"] call EFUNC(common,unmuteUnit);
|
||||
["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent);
|
||||
|
||||
[(_this select 1)] call cba_fnc_removePerFrameHandler;
|
||||
@ -71,6 +73,8 @@ if !(_unit getvariable ["ACE_isUnconscious",false]) exitwith {
|
||||
|
||||
_unit setUnconscious false;
|
||||
|
||||
[_unit, "isUnconscious"] call EFUNC(common,unmuteUnit);
|
||||
|
||||
// ensure this statement runs only once
|
||||
_args set [5, true];
|
||||
};
|
||||
|
@ -1,15 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Medical">
|
||||
<Key ID="TR_ACE_Medical_litterSimulationDetail">
|
||||
<Key ID="STR_ACE_Medical_Injuries">
|
||||
<English>INJURIES</English>
|
||||
<German>VERLETZUNGEN</German>
|
||||
<Russian>ТРАВМЫ</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_NoInjuriesBodypart">
|
||||
<English>No injuries on this bodypart ...</English>
|
||||
<German>Körperteil nicht verletzt ...</German>
|
||||
<Russian>Данная часть тела не повреждена ...</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_litterSimulationDetail">
|
||||
<English>Litter Simulation Detail</English>
|
||||
<Polish>Detale zużytych medykamentów</Polish>
|
||||
<Spanish>Detalle de simulación de basura</Spanish>
|
||||
<Russian>Количество мусора от медицины</Russian>
|
||||
</Key>
|
||||
<Key ID="TR_ACE_Medical_litterSimulationDetail_Desc">
|
||||
<Key ID="STR_ACE_Medical_litterSimulationDetail_Desc">
|
||||
<English>Litter simulation detail level sets the number of litter items which will be locally spawned in the client. Excessive amounts in local areas could cause FPS lag, so this is a client only setting.</English>
|
||||
<Polish>Opcja ta ustawia liczbę zużytych medykamentów, jakie pojawiają się lokalnie wokół gracza. Ich zbyt duża ilość może spowodować spadki FPS, dlatego jest to ustawienie tylko po stronie klienta.</Polish>
|
||||
<Spanish>Detalle simulación de basura establece el número de artículos de basura que se generan a nivel local en el cliente. Las cantidades excesivas en áreas locales podrían causar caída de rendimiento, así que esto es un ajuste de cliente únicamente.</Spanish>
|
||||
<Russian>Устанавливает количество мусора, который появляется после использования мед. препаратов. Большое количество мусора может уменьшить производительность, поэтому данная настройка локальна для клиента.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Inject_Atropine">
|
||||
<English>Inject Atropine</English>
|
||||
@ -82,7 +94,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Apply_Tourniquet">
|
||||
<English>Apply Tourniquet</English>
|
||||
<German>Aderpresse anwenden</German>
|
||||
<German>Tourniquet anwenden</German>
|
||||
<Spanish>Aplicar torniquete</Spanish>
|
||||
<Czech>Aplikovat škrtidlo</Czech>
|
||||
<Polish>Załóż stazę</Polish>
|
||||
@ -257,7 +269,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Applying_Tourniquet">
|
||||
<English>Applying Tourniquet ...</English>
|
||||
<German>Setze Aderpresse an ...</German>
|
||||
<German>Setze Tourniquet an ...</German>
|
||||
<Spanish>Aplicando torniquete ...</Spanish>
|
||||
<Czech>Aplikuji škrtidlo</Czech>
|
||||
<Polish>Zakładanie stazy ...</Polish>
|
||||
@ -345,7 +357,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIONS_TriageCard">
|
||||
<English>Triage Card</English>
|
||||
<German>Verletztenanhängekarte</German>
|
||||
<German>Triagekarte</German>
|
||||
<Spanish>Tarjeta de triaje</Spanish>
|
||||
<Russian>Медкарта</Russian>
|
||||
<Polish>Karta segregacyjna</Polish>
|
||||
@ -354,9 +366,14 @@
|
||||
<Hungarian>Orvosi lap</Hungarian>
|
||||
<Italian>Triage Card</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_TriageCard_NoEntry">
|
||||
<English>No entries on this triage card.</English>
|
||||
<German>Keine Einträge auf der Triagekarte</German>
|
||||
<Russian>Нет записей.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIONS_Tourniquet">
|
||||
<English>Tourniquet</English>
|
||||
<German>Aderpresse</German>
|
||||
<German>Tourniquet</German>
|
||||
<Spanish>Torniquete</Spanish>
|
||||
<Russian>Жгут</Russian>
|
||||
<Czech>Škrtidlo</Czech>
|
||||
@ -367,7 +384,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIONS_RemoveTourniquet">
|
||||
<English>Remove Tourniquet</English>
|
||||
<German>Aderpresse entfernen</German>
|
||||
<German>Tourniquet entfernen</German>
|
||||
<Spanish>Quitar torniquete</Spanish>
|
||||
<Russian>Снять жгут</Russian>
|
||||
<Czech>Sundat škrtidlo</Czech>
|
||||
@ -376,6 +393,26 @@
|
||||
<Hungarian>Érszorító leszedése</Hungarian>
|
||||
<Italian>Rimuovi laccio emostatico</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIONS_Diagnose">
|
||||
<English>Diagnose</English>
|
||||
<German>Diagnose</German>
|
||||
<Russian>Диагностика</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIONS_Diagnosing">
|
||||
<English>Diagnosing ...</English>
|
||||
<German>Diagnostizieren ...</German>
|
||||
<Russian>Диагностика ...</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIONS_CPR">
|
||||
<English>CPR</English>
|
||||
<German>HLW</German>
|
||||
<Russian>Сердечно-легочная реанимация</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIONS_PerformingCPR">
|
||||
<English>Performing CPR ...</English>
|
||||
<German>HLW durchführen ...</German>
|
||||
<Russian>Сердечно-легочная реанимация ...</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIONS_Blood4_1000">
|
||||
<English>Give Blood IV (1000ml)</English>
|
||||
<German>Bluttransfusion IV (1000ml)</German>
|
||||
@ -444,7 +481,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIONS_Saline4_1000">
|
||||
<English>Give Saline IV (1000ml)</English>
|
||||
<German>Kochsaltzlösung IV (1000ml)</German>
|
||||
<German>Kochsalzlösung IV (1000ml)</German>
|
||||
<Spanish>Dar Salino IV (1000ml)</Spanish>
|
||||
<Russian>Перелить пакет физраствора (1000 мл)</Russian>
|
||||
<Polish>Podaj sól fizjologiczną IV (1000ml)</Polish>
|
||||
@ -455,7 +492,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIONS_Saline4_500">
|
||||
<English>Give Saline IV (500ml)</English>
|
||||
<German>Kochsaltzlösung IV (500ml)</German>
|
||||
<German>Kochsalzlösung IV (500ml)</German>
|
||||
<Spanish>Dar Salino IV (500ml)</Spanish>
|
||||
<Russian>Перелить пакет физраствора (500 мл)</Russian>
|
||||
<Polish>Podaj sól fizjologiczną IV (500ml)</Polish>
|
||||
@ -466,7 +503,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIONS_Saline4_250">
|
||||
<English>Give Saline IV (250ml)</English>
|
||||
<German>Kochsaltzlösung IV (250ml)</German>
|
||||
<German>Kochsalzlösung IV (250ml)</German>
|
||||
<Spanish>Dar Salino IV (250ml)</Spanish>
|
||||
<Russian>Перелить пакет физраствора (250 мл)</Russian>
|
||||
<Polish>Podaj sól fizjologiczną IV (250ml)</Polish>
|
||||
@ -609,7 +646,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_STATUS_TOURNIQUET_APPLIED">
|
||||
<English>Tourniquet [CAT]</English>
|
||||
<German>Aderpresse [CAT]</German>
|
||||
<German>Tourniquet [CAT]</German>
|
||||
<Russian>Жгут</Russian>
|
||||
<Spanish>Torniquete [CAT]</Spanish>
|
||||
<French>Garrot [CAT]</French>
|
||||
@ -672,7 +709,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_PACKING_BANDAGE_DESC_SHORT">
|
||||
<English>Used to pack medium to large wounds and stem the bleeding</English>
|
||||
<German>Verwendet, um mittlere bis große Wunden abzudecken und Blutungen zu stoppen</German>
|
||||
<German>Wird verwendet, um mittlere bis große Wunden abzudecken und Blutungen zu stoppen</German>
|
||||
<Russian>Для тампонирования ран среднего и большого размера и остановки кровотечения.</Russian>
|
||||
<Spanish>Se utiliza para vendar heridas medianas o grandes y detener el sangrado</Spanish>
|
||||
<French>Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragies</French>
|
||||
@ -688,6 +725,7 @@
|
||||
<Polish>Opatrunek stosowany w celu zatrzymania krwawienia i osłony większych ran.</Polish>
|
||||
<Hungarian>Egy kötszerfajta, melyet a sebek nyomására használnak a vérzés elállítása és sebgyógyulás érdekében. A nyomókötés egy lehetőség nagyobb polytraumatikus sérülések esetén.</Hungarian>
|
||||
<Italian>Un bendaggio usato per bendare ferite con emorragie e facilitare la guarigione. Bendare una ferita è una opzione su ferite di vario tipo.</Italian>
|
||||
<German>Ein Verband, um die Wunde abzudecken und die Wundheilung zu fördern. Wunden abdecken ist eine Option bei größeren Polytraumen</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_BANDAGE_ELASTIC_DISPLAY">
|
||||
<English>Bandage (Elastic)</English>
|
||||
@ -712,7 +750,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_BANDAGE_ELASTIC_DESC_USE">
|
||||
<English>Allows an even compression and extra support to the injured area.</English>
|
||||
<German></German>
|
||||
<German>Ermöglicht eine gleichmäßige Kompression und zusätzliche Unterstützung für den verletzten Bereich.</German>
|
||||
<Russian>Давящая повязка обеспечивает равномерное сжатие и дополнительную поддержку поврежденной области</Russian>
|
||||
<French>Ce bandage peut être utilisé pour compresser la plaie afin de ralentir le saignement et assurer la tenue du bandage lors de mouvement.</French>
|
||||
<Polish>Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów.</Polish>
|
||||
@ -722,7 +760,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_TOURNIQUET_DISPLAY">
|
||||
<English>Tourniquet (CAT)</English>
|
||||
<German>Aderpresse (CAT)</German>
|
||||
<German>Tourniquet [CAT]</German>
|
||||
<Russian>Жгут</Russian>
|
||||
<Spanish>Torniquete (CAT)</Spanish>
|
||||
<French>Garrot (CAT)</French>
|
||||
@ -830,7 +868,7 @@
|
||||
<Spanish>Aumenta la frecuencia cardiaca y contraresta los efectos de las reacciones alérgicas</Spanish>
|
||||
<French>Augmente la fréquence cadiaque et annule les effets d'une réaction anaphylactique</French>
|
||||
<Polish>Adrenalina. Zwiększa puls i przeciwdziała efektom wywołanym przez reakcje alergiczne</Polish>
|
||||
<German>Steigert die Herzfrequenz, um den Effekt von allergischen Reaktionen zu bekämpfen</German>
|
||||
<German>Steigert die Herzfrequenz und bekämpft Symptome von allergischen Reaktionen.</German>
|
||||
<Hungarian>Növeli a szívverést és ellenzi az allergiás reakciók hatásait</Hungarian>
|
||||
<Italian>Aumenta il battito cardiaco e combatte gli effetti di reazioni allergiche.</Italian>
|
||||
</Key>
|
||||
@ -841,6 +879,7 @@
|
||||
<French>Medicament qui fonctionne sur le système nerveux sympathique créant une dilatation des bronches, augmente la fréquence cardiaque et annule les effets d'une réaction allergique (anaphylaxie). Utilisé lors d'arrêt cardio-respiratoire pour augmenter les chances de retrouver un pouls.</French>
|
||||
<Polish>EpiPen z adrenaliną ma działanie sympatykomimetyczne, tj. pobudza receptory alfa- i beta-adrenergiczne. Pobudzenie układu współczulnego prowadzi do zwiększenia częstotliwości pracy serca, zwiększenia pojemności wyrzutowej serca i przyśpieszenia krążenia wieńcowego. Pobudzenie oskrzelowych receptorów beta-adrenergicznych wywołuje rozkurcz mięśni gładkich oskrzeli, co w efekcie zmniejsza towarzyszące oddychaniu świsty i duszności.</Polish>
|
||||
<Italian>Una sostanza che permette di dilatare i bronchi, aumentare il battito cardiaco e combattere effetti di reazioni allergiche. Usato anche in casi di arresto cardiaco.</Italian>
|
||||
<German>Ein Medikament, dass die Bronchien erweitert, die Herzfrequenz erhöht und Symptome von allergischen Reaktionen(Anaphylaxie) bekämpft. Wird bei plötzlichem Herzstillstand verabreicht.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_PLASMA_IV">
|
||||
<English>Plasma IV (1000ml)</English>
|
||||
@ -860,6 +899,7 @@
|
||||
<Polish>Składnik krwi, używany do zwiększenia jej objętości.</Polish>
|
||||
<Hungarian>Egy térfogatnövelő vérkiegészítmény.</Hungarian>
|
||||
<Italian>Aiuta ad aumentare il volume sanguigno.</Italian>
|
||||
<German>Volumenerweiterungsmittel (künstliches Blutvolumen)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_PLASMA_IV_DESC_USE">
|
||||
<English>A volume-expanding blood supplement.</English>
|
||||
@ -869,6 +909,7 @@
|
||||
<Polish>Składnik krwi, używany do zwiększenia jej objętości.</Polish>
|
||||
<Hungarian>Egy térfogatnövelő vérkiegészítmény.</Hungarian>
|
||||
<Italian>Aiuta ad aumentare il volume sanguigno.</Italian>
|
||||
<German>Volumenerweiterungsmittel (künstliches Blutvolumen)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_PLASMA_IV_500">
|
||||
<English>Plasma IV (500ml)</English>
|
||||
@ -908,6 +949,7 @@
|
||||
<Polish>Krew IV, używana do uzupełnienia krwi u pacjenta, trzymać w warunkach chłodniczych</Polish>
|
||||
<Hungarian>Vér-infúzió, intravénás bejuttatásra egy páciensnek (hidegen tárolandó)</Hungarian>
|
||||
<Italian>Sangue usato per ripristinare pazienti in cui si è verificata una perdita di sangue (conservare al fresco)</Italian>
|
||||
<German>Blut IV, Bluthaushalt des Patienten wiederherstellen. (Kühl halten)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_BLOOD_IV_DESC_USE">
|
||||
<English>O Negative infusion blood used in strict and rare events to replenish blood supply usually conducted in the transport phase of medical care.</English>
|
||||
@ -916,6 +958,7 @@
|
||||
<Spanish>Utilice sólo durante gran pérdida de sangre para reemplazar el volumen de sangre perdida. Uso habitual durante el transporte de heridos.</Spanish>
|
||||
<Italian>Sangue 0 negativo usato per ripristinare sangue in pazienti in cui si è verificata una perdita di sangue.</Italian>
|
||||
<French>Cullot sanguin O- utilisé dans de rares et stricts cas pour compléter une perte de sang importante. Administré normalement lors d'un MEDEVAC</French>
|
||||
<German>O Negative Blutinfusion wird nur in seltenen Fällen verwendet, um den Bluthaushalt des Patienten zu ergänzen. Wird in der Regel wärend der Transportphase durchgeführt.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_BLOOD_IV_500">
|
||||
<English>Blood IV (500ml)</English>
|
||||
@ -955,6 +998,7 @@
|
||||
<Polish>Sól fizjologiczna, podawana dożylnie (IV), używana w celu uzupełnienia krwi u pacjenta</Polish>
|
||||
<Hungarian>0,9%-os sósvíz-infúzió, a páciens vérmennyiségének helyreállítására</Hungarian>
|
||||
<Italian>Soluzione salina, usata per ripristinare sangue nei pazienti.</Italian>
|
||||
<German>Kochsalzlösung, ein medizinisches Volumenersatzmittel</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_SALINE_IV_DESC_USE">
|
||||
<English>A medical volume-replenishing agent introduced into the blood system through an IV infusion.</English>
|
||||
@ -964,6 +1008,7 @@
|
||||
<Polish>Używany w medycynie w formie płynu infuzyjnego jako środek nawadniający i uzupełniający niedobór elektrolitów, podawany dożylnie (IV).</Polish>
|
||||
<Hungarian>Egy orvosi térfogat-helyreállító készítmény, melyet intravénás módon lehet a szervezetbe juttatni.</Hungarian>
|
||||
<Italian>Una soluzione medica per ripristinare il volume del sangue introdotta tramite trasfusione IV.</Italian>
|
||||
<German>Ein medizinisches Volumenersatzmittel, dass durch einen intravenösen Zugang in den Blutkreislauf verabreicht wird. </German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_SALINE_IV_500">
|
||||
<English>Saline IV (500ml)</English>
|
||||
@ -1036,12 +1081,14 @@
|
||||
<Italian>Include vario materiale medico per trattamenti avanzati.</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_AID_KIT_DESC_USE">
|
||||
<English></English>
|
||||
<Russian></Russian>
|
||||
<French></French>
|
||||
<Spanish></Spanish>
|
||||
<English>Personal Aid Kit for in field stitching or advanced treatment</English>
|
||||
<Polish>W znacznym stopniu poprawia stan pacjenta</Polish>
|
||||
<Italian></Italian>
|
||||
<Russian>Полевая аптчека для продвинутого лечения и зашивания ран</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_USE_AID_KIT">
|
||||
<English>Use Personal Aid Kit</English>
|
||||
<German>Verbandpäckchen benutzen</German>
|
||||
<Russian>Использовать аптечку</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_SURGICALKIT_DISPLAY">
|
||||
<English>Surgical Kit</English>
|
||||
@ -1073,6 +1120,11 @@
|
||||
<Hungarian>Sebészeti készlet komplex orvosi feladatok terepen való ellátására</Hungarian>
|
||||
<Italian>Kit chirurgico per trattamenti avanzati sul campo.</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_USE_SURGICALKIT">
|
||||
<English>Use Surgical Kit</English>
|
||||
<German>Operationsset benutzen</German>
|
||||
<Russian>Использовать хирургический набор</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_BODYBAG_DISPLAY">
|
||||
<English>Bodybag</English>
|
||||
<French>Housse mortuaire</French>
|
||||
@ -1123,6 +1175,11 @@
|
||||
<Hungarian>Vérnyomás megmérése...</Hungarian>
|
||||
<Italian>Controllando la pressione sanguigna..</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_LOG">
|
||||
<English>%1 checked Blood Pressure: %2</English>
|
||||
<German>%1 kontrollierte Blutdruck: %2</German>
|
||||
<Russian>%1 проверил артериальное давление: %2</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_CHECKED_MEDIC">
|
||||
<English>You checked %1</English>
|
||||
<French>Vous diagnostiquez %1</French>
|
||||
@ -1141,6 +1198,7 @@
|
||||
<Hungarian>A vérnyomás %2/%3</Hungarian>
|
||||
<Italian>Hai riscontrato una pressione di %2/%3</Italian>
|
||||
<Polish>Wyczuwasz ciśnienie krwi o wartości %2/%3</Polish>
|
||||
<German>Der Blutdruck liegt bei %2/%3</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_2">
|
||||
<English>You find a low blood pressure</English>
|
||||
@ -1192,6 +1250,26 @@
|
||||
<Hungarian>Nem sikerült a vérnyomás megmérése</Hungarian>
|
||||
<Italian>Manca strumento per misurare pressione sanguigna</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_LOW">
|
||||
<English>Low</English>
|
||||
<German>Niedrig</German>
|
||||
<Russian>Низкое</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_NORMAL">
|
||||
<English>Normal</English>
|
||||
<German>Normal</German>
|
||||
<Russian>Нормальное</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_HIGH">
|
||||
<English>High</English>
|
||||
<German>Hoch</German>
|
||||
<Russian>Высокое</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_NOBLOODPRESSURE">
|
||||
<English>No Blood Pressure</English>
|
||||
<German>Kein Blutdruck</German>
|
||||
<Russian>Артериальное давление отсутствует</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_PULSE">
|
||||
<English>Pulse</English>
|
||||
<Russian>Пульс</Russian>
|
||||
@ -1203,14 +1281,14 @@
|
||||
<Italian>Polso</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_PULSE_CONTENT">
|
||||
<English>Checking Heart Rate..</English>
|
||||
<English>Checking Heart Rate ...</English>
|
||||
<French>Vérification du rythme cardiaque ...</French>
|
||||
<Russian>Проверка пульса ...</Russian>
|
||||
<Spanish>Comprobando ritmo cardíaco...</Spanish>
|
||||
<Polish>Sprawdzanie tętna...</Polish>
|
||||
<German>Kontrolliere Herzfrequenz</German>
|
||||
<Spanish>Comprobando ritmo cardíaco ...</Spanish>
|
||||
<Polish>Sprawdzanie tętna ...</Polish>
|
||||
<German>Kontrolliere Herzfrequenz ...</German>
|
||||
<Hungarian>Szívverés-szám mérése...</Hungarian>
|
||||
<Italian>Controllando il battito cardiaco..</Italian>
|
||||
<Italian>Controllando il battito cardiaco ...</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_PULSE_CHECKED_MEDIC">
|
||||
<English>You checked %1</English>
|
||||
@ -1218,10 +1296,30 @@
|
||||
<French>Vous examinez %1</French>
|
||||
<Spanish>Examinando a %1</Spanish>
|
||||
<Polish>Zbadałeś %1</Polish>
|
||||
<German>Kontrolliertt %1</German>
|
||||
<German>Kontrolliert %1</German>
|
||||
<Hungarian>A %1 ellenőrizve</Hungarian>
|
||||
<Italian>Hai diagnosticato %1</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_PULSE_LOG">
|
||||
<English>%1 checked Heart Rate: %2</English>
|
||||
<German>%1 kontrollierte Herzfrequenz: %2</German>
|
||||
<Russian>%1 проверил пульс: %2</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_PULSE_WEAK">
|
||||
<English>Weak</English>
|
||||
<German>Schwach</German>
|
||||
<Russian>Слабый</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_PULSE_NORMAL">
|
||||
<English>Normal</English>
|
||||
<German>Normal</German>
|
||||
<Russian>Нормальный</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_PULSE_STRONG">
|
||||
<English>Strong</English>
|
||||
<German>Stark</German>
|
||||
<Russian>Сильный</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_1">
|
||||
<English>You find a Heart Rate of %2</English>
|
||||
<French>Rythme carquiaque de %2</French>
|
||||
@ -1318,10 +1416,38 @@
|
||||
<French>Vous avez examiné %1</French>
|
||||
<Spanish>Examinas a %1</Spanish>
|
||||
<Polish>Zbadałeś %1</Polish>
|
||||
<German>Du versucht %1 anzusprechen</German>
|
||||
<German>Du hast versucht, %1 anzusprechen</German>
|
||||
<Hungarian>Megnézted %1-t</Hungarian>
|
||||
<Italian>Hai controllato %1</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_diagnoseMessage">
|
||||
<English>Patient %1<br/>is %2.<br/>%3.<br/>%4</English>
|
||||
<Russian>Пациент %1<br/>%2.<br/>%3.<br/>%4</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_diagnoseAlive">
|
||||
<English>alive</English>
|
||||
<Russian>жив</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_diagnoseDead">
|
||||
<English>dead</English>
|
||||
<Russian>мертв</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_lostBlood">
|
||||
<English>He's lost some blood</English>
|
||||
<Russian>Есть кровопотеря</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_noBloodloss">
|
||||
<English>He hasn't lost blood</English>
|
||||
<Russian>Нет кровопотери</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_inPain">
|
||||
<English>He is in pain</English>
|
||||
<Russian>Испытывает боль</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_noPain">
|
||||
<English>He is not in pain</English>
|
||||
<Russian>Не испытывает боли</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_BANDAGED">
|
||||
<English>Bandaged</English>
|
||||
<French>Bandé</French>
|
||||
@ -1330,6 +1456,7 @@
|
||||
<Polish>Zabandażowano</Polish>
|
||||
<Hungarian>Bekötözve</Hungarian>
|
||||
<Italian>Bendato</Italian>
|
||||
<German>verbunden</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_APPLY_BANDAGE">
|
||||
<English>You bandage %1 (%2)</English>
|
||||
@ -1339,6 +1466,7 @@
|
||||
<Polish>Bandażujesz %1 (%2)</Polish>
|
||||
<Hungarian>Bekötözöd %1-t (%2)</Hungarian>
|
||||
<Italian>Stai bendando %1 (%2)</Italian>
|
||||
<German>Du verbindest %1 (%2)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_IS_BANDAGING_YOU">
|
||||
<English>%1 is bandaging you</English>
|
||||
@ -1348,10 +1476,12 @@
|
||||
<Polish>%1 bandażuje Ciebie</Polish>
|
||||
<Hungarian>%1 bekötöz téged</Hungarian>
|
||||
<Italian>%1 ti sta bendando</Italian>
|
||||
<German>%1 verbindet dich</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MEDICAL_START_STITCHING_INJURIES">
|
||||
<English>You start stitching injures from %1 (%2)</English>
|
||||
<English>You start stitching injuries from %1 (%2)</English>
|
||||
<Russian>Вы зашиваете ранения от %1 (%2)</Russian>
|
||||
<German>Du nähst die Wunden von %1 (%2)</German>
|
||||
<French>Vous suturez %1 (%2)</French>
|
||||
<Spanish>Estás suturando heridas de %1 en %2</Spanish>
|
||||
<Polish>Zszywasz rany %1 (%2)</Polish>
|
||||
@ -1361,8 +1491,9 @@
|
||||
<Key ID="STR_ACE_MEDICAL_STITCHING">
|
||||
<English>Stitching</English>
|
||||
<Russian>Наложение швов</Russian>
|
||||
<French>Sutures</French>
|
||||
<Spanish>Suturando</Spanish>
|
||||
<German>Nähen</German>
|
||||
<French>Sutures</French>
|
||||
<Polish>Szycie</Polish>
|
||||
<Hungarian>Összevarrás</Hungarian>
|
||||
<Italian>Suturando</Italian>
|
||||
@ -1370,8 +1501,9 @@
|
||||
<Key ID="STR_ACE_MEDICAL_YOU_TREAT_AIRWAY">
|
||||
<English>You treat the airway of %1</English>
|
||||
<Russian>Вы интубируете раненого %1</Russian>
|
||||
<French>Vous traitez les voies respiratoires de %1</French>
|
||||
<Spanish>Estás intubando a %1</Spanish>
|
||||
<German>Du behandelst die Atemwege von %1</German>
|
||||
<French>Vous traitez les voies respiratoires de %1</French>
|
||||
<Polish>Udrażniasz drogi oddechowe %1</Polish>
|
||||
<Hungarian>Kezeled %1 légútját</Hungarian>
|
||||
<Italian>Controlli le vie respiratorie di %1</Italian>
|
||||
@ -1392,6 +1524,7 @@
|
||||
<French>%1 traite vos voies respiratoires</French>
|
||||
<Spanish>%1 te está intubando</Spanish>
|
||||
<Polish>%1 udrażnia Twoje drogi oddechowe</Polish>
|
||||
<German>%1 behandelt deine Atemwege</German>
|
||||
<Hungarian>%1 kezeli a légútadat</Hungarian>
|
||||
<Italian>%1 ti sta trattando le vie respiratorie</Italian>
|
||||
</Key>
|
||||
@ -1459,6 +1592,7 @@
|
||||
<English>Unload patient</English>
|
||||
<Spanish>Descargar el paciente</Spanish>
|
||||
<Russian>Выгрузить пациента</Russian>
|
||||
<German>Patient Ausladen</German>
|
||||
<Polish>Wyładuj pacjenta</Polish>
|
||||
<French>Débarquer le patient</French>
|
||||
<Hungarian>Sebesült kihúzása</Hungarian>
|
||||
@ -1468,6 +1602,7 @@
|
||||
<English>Load patient</English>
|
||||
<Spanish>Cargar el paciente en</Spanish>
|
||||
<Russian>Погрузить пациента</Russian>
|
||||
<German>Patient Einladen</German>
|
||||
<Polish>Załaduj pacjenta</Polish>
|
||||
<French>Embarquer le patient</French>
|
||||
<Hungarian>Sebesült berakása</Hungarian>
|
||||
@ -1477,6 +1612,7 @@
|
||||
<English>Place body in bodybag</English>
|
||||
<Spanish>Colocar cuerpo en bolsa para cadáveres</Spanish>
|
||||
<Russian>Поместить тело в мешок для трупов</Russian>
|
||||
<German>Körper in Leichesack verstauen</German>
|
||||
<Polish>Zapakuj ciało do worka na zwłoki</Polish>
|
||||
<French>Mettre le corps dans la housse mortuaire</French>
|
||||
<Hungarian>Test hullazsákba helyezése</Hungarian>
|
||||
@ -1486,6 +1622,7 @@
|
||||
<English>Placing body in bodybag</English>
|
||||
<Spanish>Colocando cuerpo en bolsa para cadáveres</Spanish>
|
||||
<Russian>Упаковка тела ...</Russian>
|
||||
<German>Verstaue Körper in Leichensack</German>
|
||||
<Polish>Pakowanie ciała do worka na zwłoki</Polish>
|
||||
<French>Placement du corps dans la housse</French>
|
||||
<Hungarian>Test hullazsákba helyezése ...</Hungarian>
|
||||
@ -1495,6 +1632,7 @@
|
||||
<English>%1 has bandaged patient</English>
|
||||
<Spanish>%1 has vendado al paciente</Spanish>
|
||||
<Russian>%1 перевязал пациента</Russian>
|
||||
<German>%1 hat den Patienten verbunden</German>
|
||||
<Polish>%1 zabandażował pacjenta</Polish>
|
||||
<French>%1 a pansé le patient</French>
|
||||
<Hungarian>%1 bekötözte a pácienst</Hungarian>
|
||||
@ -1503,6 +1641,7 @@
|
||||
<Key ID="STR_ACE_MEDICAL_ACTIVITY_usedItem">
|
||||
<English>%1 used %2</English>
|
||||
<Spanish>%1 usó %2</Spanish>
|
||||
<German>%1 benutzt %2</German>
|
||||
<Russian>%1 использовал %2</Russian>
|
||||
<Polish>%1 użył %2</Polish>
|
||||
<French>%1 utilise %2</French>
|
||||
@ -1513,6 +1652,7 @@
|
||||
<English>%1 has given an IV</English>
|
||||
<Spanish>%1 has puesto una IV</Spanish>
|
||||
<Russian>%1 провел переливание</Russian>
|
||||
<German>%1 hat eine Infusion verabreicht</German>
|
||||
<Polish>%1 podał IV</Polish>
|
||||
<French>%1 a administré une IV</French>
|
||||
<Hungarian>%1 infúziót adott</Hungarian>
|
||||
@ -1522,6 +1662,7 @@
|
||||
<English>%1 applied a tourniquet</English>
|
||||
<Spanish>%1 aplicado torniquete</Spanish>
|
||||
<Russian>%1 наложил жгут</Russian>
|
||||
<German>%1 hat einen Tourniquet angelegt</German>
|
||||
<Polish>%1 założył stazę</Polish>
|
||||
<French>%1 a appliqué un garrot</French>
|
||||
<Hungarian>%1 felhelyezett egy érszorítót</Hungarian>
|
||||
@ -1635,5 +1776,170 @@
|
||||
<Spanish>Aberración cromática</Spanish>
|
||||
<French>Aberration chromatique</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Abrasion">
|
||||
<English>Scrape</English>
|
||||
<German>Kratzer</German>
|
||||
<Russian>Ссадина</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Abrasion_Minor">
|
||||
<English>Minor Scrape</English>
|
||||
<German>Kleiner Kratzer</German>
|
||||
<Russian>Малая ссадина</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Abrasion_Medium">
|
||||
<English>Medium Scrape</English>
|
||||
<German>Mittlerer Kratzer</German>
|
||||
<Russian>Средняя ссадина</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Abrasion_Large">
|
||||
<English>Large Scrape</English>
|
||||
<German>Großer Kratzer</German>
|
||||
<Russian>Большая ссадина</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Avulsion">
|
||||
<English>Avulsion</English>
|
||||
<German>Avulsion</German>
|
||||
<Russian>Рваная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Avulsion_Minor">
|
||||
<English>Minor Avulsion</English>
|
||||
<German>Kleine Avulsion</German>
|
||||
<Russian>Малая рваная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Avulsion_Medium">
|
||||
<English>Medium Avulsion</English>
|
||||
<German>Mittlere Avulsion</German>
|
||||
<Russian>Средняя рваная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Avulsion_Large">
|
||||
<English>Large Avulsion</English>
|
||||
<German>Große Avulsion</German>
|
||||
<Russian>Большая рваная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Contusion">
|
||||
<English>Bruise</English>
|
||||
<German>Prellung</German>
|
||||
<Russian>Ушиб</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Contusion_Minor">
|
||||
<English>Minor Bruise</English>
|
||||
<German>Kleine Prellung</German>
|
||||
<Russian>Малый ушиб</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Contusion_Medium">
|
||||
<English>Medium Bruise</English>
|
||||
<German>Mittlere Prellung</German>
|
||||
<Russian>Средний ушиб</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Contusion_Large">
|
||||
<English>Large Bruise</English>
|
||||
<German>Große Prellung</German>
|
||||
<Russian>Большой ушиб</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Crush">
|
||||
<English>Crushed tissue</English>
|
||||
<German>Quetschverletzung</German>
|
||||
<Russian>Компресионная травма</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Crush_Minor">
|
||||
<English>Minor crushed tissue</English>
|
||||
<German>Kleine Quetschverletzung</German>
|
||||
<Russian>Малая компрессионная травма</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Crush_Medium">
|
||||
<English>Medium crushed tissue</English>
|
||||
<German>Mittlere Quetschverletzung</German>
|
||||
<Russian>Средняя компрессионная травма</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Crush_Large">
|
||||
<English>Large crushed tissue</English>
|
||||
<German>Große Quetschverletzung</German>
|
||||
<Russian>Большая компрессионная травма</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Cut">
|
||||
<English>Cut</English>
|
||||
<German>Schnittwunde</German>
|
||||
<Russian>Резаная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Cut_Minor">
|
||||
<English>Small Cut</English>
|
||||
<German>Kleine Schnittwunde</German>
|
||||
<Russian>Малая резаная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Cut_Medium">
|
||||
<English>Medium Cut</English>
|
||||
<German>Mittlere Schnittwunde</German>
|
||||
<Russian>Средняя резаная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Cut_Large">
|
||||
<English>Large Cut</English>
|
||||
<German>Große Schnittwunde</German>
|
||||
<Russian>Большая резаная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Laceration">
|
||||
<English>Tear</English>
|
||||
<German>Riss</German>
|
||||
<Russian>Рваная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Laceration_Minor">
|
||||
<English>Small Tear</English>
|
||||
<German>Kleiner Riss</German>
|
||||
<Russian>Малая рваная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Laceration_Medium">
|
||||
<English>Medium Tear</English>
|
||||
<German>Mittlerer Riss</German>
|
||||
<Russian>Средняя рваная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Laceration_Large">
|
||||
<English>Large Tear</English>
|
||||
<German>Großer Riss</German>
|
||||
<Russian>Большая рваная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_VelocityWound">
|
||||
<English>Velocity Wound</English>
|
||||
<German>Ballistisches Trauma</German>
|
||||
<Russian>Огнестрельная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_VelocityWound_Minor">
|
||||
<English>Smal Velocity Wound</English>
|
||||
<German>Kleines Ballistisches Trauma</German>
|
||||
<Russian>Малая огнестрельная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_VelocityWound_Medium">
|
||||
<English>Medium Velocity Wound</English>
|
||||
<German>Mittleres Ballistisches Trauma</German>
|
||||
<Russian>Средняя огнестрельная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_VelocityWound_Large">
|
||||
<English>Large Velocity Wound</English>
|
||||
<German>Großes Ballistisches Trauma</German>
|
||||
<Russian>Большая огнестрельная рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_PunctureWound">
|
||||
<English>Puncture Wound</English>
|
||||
<German>Stichwunde</German>
|
||||
<Russian>Колотая рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_PunctureWound_Minor">
|
||||
<English>Minor Puncture Wound</English>
|
||||
<German>Kleine Stichwunde</German>
|
||||
<Russian>Малая колотая рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_PunctureWound_Medium">
|
||||
<English>Medium Puncture Wound</English>
|
||||
<German>Mittlere Stichwunde</German>
|
||||
<Russian>Средняя колотая рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_PunctureWound_Large">
|
||||
<English>Large Puncture Wound</English>
|
||||
<German>Große Stichwunde</German>
|
||||
<Russian>Большая колотая рана</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_Femur">
|
||||
<English>Broken Femur</English>
|
||||
<German>Gebrochener Oberschenkelknochen</German>
|
||||
<Russian>Перелом</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -60,7 +60,7 @@ class Rsctitles {
|
||||
font = "PuristaMedium";
|
||||
colorText[] = {0.95, 0.95, 0.95, 0.75};
|
||||
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
|
||||
text = "INJURIES";
|
||||
text = "$STR_ACE_Medical_Injuries";
|
||||
};
|
||||
class InjuryList: ACE_gui_listBoxBase {
|
||||
idc = 200;
|
||||
|
BIN
addons/medical/ui/icons/medical_crossRed.paa
Normal file
BIN
addons/medical/ui/icons/medical_crossRed.paa
Normal file
Binary file not shown.
BIN
addons/medical/ui/icons/medical_crossYellow.paa
Normal file
BIN
addons/medical/ui/icons/medical_crossYellow.paa
Normal file
Binary file not shown.
@ -49,7 +49,7 @@ class GVAR(triageCard) {
|
||||
font = "PuristaMedium";
|
||||
colorText[] = {0,0,0,1};
|
||||
colorBackground[] = {0,0,0,0};
|
||||
text = "TRIAGE CARD";
|
||||
text = "$STR_ACE_MEDICAL_ACTIONS_TriageCard";
|
||||
};
|
||||
class TriageList: ACE_gui_listBoxBase {
|
||||
idc = 200;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user