1
0
mirror of https://github.com/acemod/ACE3.git synced 2024-08-30 18:23:18 +00:00

Recoil - Code cleanup ()

* Recoil code cleanup

* Store recoil values as numbers in config, only `compile` if needed

* Updated header

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
This commit is contained in:
johnb432 2024-07-27 14:43:07 +02:00 committed by GitHub
parent b85150e6eb
commit 8eefffe811
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 292 additions and 295 deletions

@ -1 +1 @@
z\ace\addons\recoil
z\ace\addons\recoil

@ -1,4 +1,3 @@
class Extended_PreStart_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_SCRIPT(XEH_preStart));

@ -1,4 +1,3 @@
// Completely disable BI's camshake on fire.
#define ACE_CAMSHAKEFIRE_BASE 0
#define ACE_CAMSHAKEFIRE_LESS 0

@ -1,4 +1,3 @@
#define KICKBACK 1.4
#define MUZZLETEMP 1.2
@ -15,28 +14,28 @@ class CfgRecoils {
// doc: http://forums.bistudio.com/showthread.php?188999-Recoil-Overhaul-Feedback&s=dba8590ec07adb5ffa87f72d38dde6fc&p=2886744&viewfull=1#post2886744
// {horizontal axis position, vertical axis position, horizontal magnitude, vertical magnitude}
muzzleOuter[] = {
QUOTE(0*MUZZLERIGHT_POS),
QUOTE(0.4*MUZZLECLIMB_POS),
QUOTE(0.5*MUZZLERIGHT_MAG),
QUOTE(0.6*MUZZLECLIMB_MAG)
0*MUZZLERIGHT_POS,
0.4*MUZZLECLIMB_POS,
0.5*MUZZLERIGHT_MAG,
0.6*MUZZLECLIMB_MAG
};
// restricted area inside the outer ellipse where the recoil cannot end
muzzleInner[] = {0,0.05,0.2,0.2};
// minimum and maximum interval for backward force
kickBack[] = {
QUOTE(0.05*KICKBACK),
QUOTE(0.1*KICKBACK)
0.05*KICKBACK,
0.1*KICKBACK
};
permanent = QUOTE(0.1*MUZZLEPERM);
temporary = QUOTE(0.01*MUZZLETEMP);
permanent = 0.1*MUZZLEPERM;
temporary = 0.01*MUZZLETEMP;
};
class recoil_default: Default {
muzzleOuter[] = {
QUOTE(0.3*MUZZLERIGHT_POS),
QUOTE(1*MUZZLECLIMB_POS),
QUOTE(0.3*MUZZLERIGHT_MAG),
QUOTE(0.2*MUZZLECLIMB_MAG)
0.3*MUZZLERIGHT_POS,
1*MUZZLECLIMB_POS,
0.3*MUZZLERIGHT_MAG,
0.2*MUZZLECLIMB_MAG
};
muzzleInner[] = {0,
0,
@ -44,528 +43,528 @@ class CfgRecoils {
0.1
};
kickBack[] = {
QUOTE(0.03*KICKBACK),
QUOTE(0.06*KICKBACK)
0.03*KICKBACK,
0.06*KICKBACK
};
permanent = QUOTE(0.1*MUZZLEPERM);
temporary = QUOTE(0.01*MUZZLETEMP);
permanent = 0.1*MUZZLEPERM;
temporary = 0.01*MUZZLETEMP;
};
class recoil_mk20: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(0.6*MUZZLECLIMB_POS),
QUOTE(0.2*MUZZLERIGHT_MAG),
QUOTE(0.2*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
0.6*MUZZLECLIMB_POS,
0.2*MUZZLERIGHT_MAG,
0.2*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.01*KICKBACK),
QUOTE(0.03*KICKBACK)
0.01*KICKBACK,
0.03*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP);
temporary = 0.01*MUZZLETEMP;
};
class recoil_mk20c: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(0.8*MUZZLECLIMB_POS),
QUOTE(0.3*MUZZLERIGHT_MAG),
QUOTE(0.2*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
0.8*MUZZLECLIMB_POS,
0.3*MUZZLERIGHT_MAG,
0.2*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.04*KICKBACK)
0.02*KICKBACK,
0.04*KICKBACK
};
temporary = QUOTE(0.015*MUZZLETEMP);
temporary = 0.015*MUZZLETEMP;
};
class recoil_trg20: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(1*MUZZLECLIMB_POS),
QUOTE(0.3*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
1*MUZZLECLIMB_POS,
0.3*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.04*KICKBACK)
0.02*KICKBACK,
0.04*KICKBACK
};
temporary = QUOTE(0.015*MUZZLETEMP);
temporary = 0.015*MUZZLETEMP;
};
class recoil_trg21: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(0.8*MUZZLECLIMB_POS),
QUOTE(0.3*MUZZLERIGHT_MAG),
QUOTE(0.2*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
0.8*MUZZLECLIMB_POS,
0.3*MUZZLERIGHT_MAG,
0.2*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.01*KICKBACK),
QUOTE(0.03*KICKBACK)
0.01*KICKBACK,
0.03*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP);
temporary = 0.01*MUZZLETEMP;
};
class recoil_mx: recoil_default {
muzzleOuter[] = {
QUOTE(0.3*MUZZLERIGHT_POS),
QUOTE(1*MUZZLECLIMB_POS),
QUOTE(0.4*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.3*MUZZLERIGHT_POS,
1*MUZZLECLIMB_POS,
0.4*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.04*KICKBACK)
0.02*KICKBACK,
0.04*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP);
temporary = 0.01*MUZZLETEMP;
};
class recoil_mxc: recoil_default {
muzzleOuter[] = {
QUOTE(0.3*MUZZLERIGHT_POS),
QUOTE(1.2*MUZZLECLIMB_POS),
QUOTE(0.4*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.3*MUZZLERIGHT_POS,
1.2*MUZZLECLIMB_POS,
0.4*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.03*KICKBACK),
QUOTE(0.06*KICKBACK)
0.03*KICKBACK,
0.06*KICKBACK
};
temporary = QUOTE(0.015*MUZZLETEMP);
temporary = 0.015*MUZZLETEMP;
};
class recoil_sw: recoil_default {
muzzleOuter[] = {
QUOTE(0.3*MUZZLERIGHT_POS),
QUOTE(0.8*MUZZLECLIMB_POS),
QUOTE(0.5*MUZZLERIGHT_MAG),
QUOTE(0.2*MUZZLECLIMB_MAG)
0.3*MUZZLERIGHT_POS,
0.8*MUZZLECLIMB_POS,
0.5*MUZZLERIGHT_MAG,
0.2*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.04*KICKBACK)
0.02*KICKBACK,
0.04*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP); //0.005*MUZZLETEMP;
temporary = 0.01*MUZZLETEMP; //0.005*MUZZLETEMP;
};
class recoil_mxm: recoil_default {
muzzleOuter[] = {
QUOTE(0.3*MUZZLERIGHT_POS),
QUOTE(0.8*MUZZLECLIMB_POS),
QUOTE(0.4*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.3*MUZZLERIGHT_POS,
0.8*MUZZLECLIMB_POS,
0.4*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.04*KICKBACK)
0.02*KICKBACK,
0.04*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP);
temporary = 0.01*MUZZLETEMP;
};
class recoil_ktb: recoil_default {
muzzleOuter[] = {
QUOTE(0.3*MUZZLERIGHT_POS),
QUOTE(1*MUZZLECLIMB_POS),
QUOTE(0.3*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.3*MUZZLERIGHT_POS,
1*MUZZLECLIMB_POS,
0.3*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.04*KICKBACK)
0.02*KICKBACK,
0.04*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP);
temporary = 0.01*MUZZLETEMP;
};
class recoil_ktbc: recoil_default {
muzzleOuter[] = {
QUOTE(0.3*MUZZLERIGHT_POS),
QUOTE(1.2*MUZZLECLIMB_POS),
QUOTE(0.3*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.3*MUZZLERIGHT_POS,
1.2*MUZZLECLIMB_POS,
0.3*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.03*KICKBACK),
QUOTE(0.06*KICKBACK)
0.03*KICKBACK,
0.06*KICKBACK
};
temporary = QUOTE(0.015*MUZZLETEMP);
temporary = 0.015*MUZZLETEMP;
};
class recoil_smg_01: recoil_default {
muzzleOuter[] = {
QUOTE(0.1*MUZZLERIGHT_POS),
QUOTE(0.8*MUZZLECLIMB_POS),
QUOTE(0.3*MUZZLERIGHT_MAG),
QUOTE(0.2*MUZZLECLIMB_MAG)
0.1*MUZZLERIGHT_POS,
0.8*MUZZLECLIMB_POS,
0.3*MUZZLERIGHT_MAG,
0.2*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.01*KICKBACK),
QUOTE(0.03*KICKBACK)
0.01*KICKBACK,
0.03*KICKBACK
};
temporary = QUOTE(0.015*MUZZLETEMP);
temporary = 0.015*MUZZLETEMP;
};
class recoil_smg_02: recoil_default {
muzzleOuter[] = {
QUOTE(0.1*MUZZLERIGHT_POS),
QUOTE(0.6*MUZZLECLIMB_POS),
QUOTE(0.2*MUZZLERIGHT_MAG),
QUOTE(0.2*MUZZLECLIMB_MAG)
0.1*MUZZLERIGHT_POS,
0.6*MUZZLECLIMB_POS,
0.2*MUZZLERIGHT_MAG,
0.2*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.01*KICKBACK),
QUOTE(0.02*KICKBACK)
0.01*KICKBACK,
0.02*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP);
temporary = 0.01*MUZZLETEMP;
};
class recoil_pdw: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(1*MUZZLECLIMB_POS),
QUOTE(0.3*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
1*MUZZLECLIMB_POS,
0.3*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.04*KICKBACK)
0.02*KICKBACK,
0.04*KICKBACK
};
temporary = QUOTE(0.02*MUZZLETEMP);
temporary = 0.02*MUZZLETEMP;
};
class recoil_sdar: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(1*MUZZLECLIMB_POS),
QUOTE(0.3*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
1*MUZZLECLIMB_POS,
0.3*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.04*KICKBACK)
0.02*KICKBACK,
0.04*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP);
temporary = 0.01*MUZZLETEMP;
};
class recoil_pistol_p07: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(1*MUZZLECLIMB_POS),
QUOTE(0.2*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
1*MUZZLECLIMB_POS,
0.2*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.03*KICKBACK),
QUOTE(0.06*KICKBACK)
0.03*KICKBACK,
0.06*KICKBACK
};
temporary = QUOTE(0.03*MUZZLETEMP);
temporary = 0.03*MUZZLETEMP;
};
class recoil_pistol_rook40: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(1*MUZZLECLIMB_POS),
QUOTE(0.2*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
1*MUZZLECLIMB_POS,
0.2*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.03*KICKBACK),
QUOTE(0.06*KICKBACK)
0.03*KICKBACK,
0.06*KICKBACK
};
temporary = QUOTE(0.02*MUZZLETEMP);
temporary = 0.02*MUZZLETEMP;
};
class recoil_pistol_acpc2: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(1.5*MUZZLECLIMB_POS),
QUOTE(0.2*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
1.5*MUZZLECLIMB_POS,
0.2*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.04*KICKBACK),
QUOTE(0.08*KICKBACK)
0.04*KICKBACK,
0.08*KICKBACK
};
temporary = QUOTE(0.04*MUZZLETEMP);
temporary = 0.04*MUZZLETEMP;
};
class recoil_pistol_4five: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(1.5*MUZZLECLIMB_POS),
QUOTE(0.2*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
1.5*MUZZLECLIMB_POS,
0.2*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.04*KICKBACK),
QUOTE(0.08*KICKBACK)
0.04*KICKBACK,
0.08*KICKBACK
};
temporary = QUOTE(0.06*MUZZLETEMP);
temporary = 0.06*MUZZLETEMP;
};
class recoil_pistol_zubr: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(1.5*MUZZLECLIMB_POS),
QUOTE(0.2*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
1.5*MUZZLECLIMB_POS,
0.2*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.04*KICKBACK),
QUOTE(0.08*KICKBACK)
0.04*KICKBACK,
0.08*KICKBACK
};
temporary = QUOTE(0.08*MUZZLETEMP);
temporary = 0.08*MUZZLETEMP;
};
class recoil_pistol_signal: recoil_default {
muzzleOuter[] = {
QUOTE(0.2*MUZZLERIGHT_POS),
QUOTE(1.5*MUZZLECLIMB_POS),
QUOTE(0.2*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.2*MUZZLERIGHT_POS,
1.5*MUZZLECLIMB_POS,
0.2*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.04*KICKBACK)
0.02*KICKBACK,
0.04*KICKBACK
};
temporary = QUOTE(0.02*MUZZLETEMP);
temporary = 0.02*MUZZLETEMP;
};
class recoil_rpg: recoil_default {
muzzleOuter[] = {
QUOTE(2*MUZZLERIGHT_POS),
QUOTE(3*MUZZLECLIMB_POS),
QUOTE(1*MUZZLERIGHT_MAG),
QUOTE(0.5*MUZZLECLIMB_MAG)
2*MUZZLERIGHT_POS,
3*MUZZLECLIMB_POS,
1*MUZZLERIGHT_MAG,
0.5*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.08*KICKBACK),
QUOTE(0.1*KICKBACK)
0.08*KICKBACK,
0.1*KICKBACK
};
temporary = QUOTE(0.1*MUZZLETEMP);
temporary = 0.1*MUZZLETEMP;
};
class recoil_nlaw: recoil_default {
muzzleOuter[] = {
QUOTE(2*MUZZLERIGHT_POS),
QUOTE(3*MUZZLECLIMB_POS),
QUOTE(1*MUZZLERIGHT_MAG),
QUOTE(0.5*MUZZLECLIMB_MAG)
2*MUZZLERIGHT_POS,
3*MUZZLECLIMB_POS,
1*MUZZLERIGHT_MAG,
0.5*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.06*KICKBACK),
QUOTE(0.08*KICKBACK)
0.06*KICKBACK,
0.08*KICKBACK
};
temporary = QUOTE(0.08*MUZZLETEMP);
temporary = 0.08*MUZZLETEMP;
};
class recoil_titan_long: recoil_default {
muzzleOuter[] = {
QUOTE(2*MUZZLERIGHT_POS),
QUOTE(3*MUZZLECLIMB_POS),
QUOTE(1*MUZZLERIGHT_MAG),
QUOTE(0.5*MUZZLECLIMB_MAG)
2*MUZZLERIGHT_POS,
3*MUZZLECLIMB_POS,
1*MUZZLERIGHT_MAG,
0.5*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.1*KICKBACK),
QUOTE(0.12*KICKBACK)
0.1*KICKBACK,
0.12*KICKBACK
};
temporary = QUOTE(0.15*MUZZLETEMP);
temporary = 0.15*MUZZLETEMP;
};
class recoil_titan_short: recoil_default {
muzzleOuter[] = {
QUOTE(2*MUZZLERIGHT_POS),
QUOTE(3*MUZZLECLIMB_POS),
QUOTE(1*MUZZLERIGHT_MAG),
QUOTE(0.5*MUZZLECLIMB_MAG)
2*MUZZLERIGHT_POS,
3*MUZZLECLIMB_POS,
1*MUZZLERIGHT_MAG,
0.5*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.1*KICKBACK),
QUOTE(0.12*KICKBACK)
0.1*KICKBACK,
0.12*KICKBACK
};
temporary = QUOTE(0.12*MUZZLETEMP);
temporary = 0.12*MUZZLETEMP;
};
class recoil_mk200: recoil_default {
muzzleOuter[] = {
QUOTE(0.4*MUZZLERIGHT_POS),
QUOTE(0.6*MUZZLECLIMB_POS),
QUOTE(0.6*MUZZLERIGHT_MAG),
QUOTE(0.2*MUZZLECLIMB_MAG)
0.4*MUZZLERIGHT_POS,
0.6*MUZZLECLIMB_POS,
0.6*MUZZLERIGHT_MAG,
0.2*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.03*KICKBACK),
QUOTE(0.06*KICKBACK)
0.03*KICKBACK,
0.06*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP); //0.005*MUZZLETEMP;
temporary = 0.01*MUZZLETEMP; //0.005*MUZZLETEMP;
};
class recoil_zafir: recoil_default {
muzzleOuter[] = {
QUOTE(0.5*MUZZLERIGHT_POS),
QUOTE(1*MUZZLECLIMB_POS),
QUOTE(0.7*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.5*MUZZLERIGHT_POS,
1*MUZZLECLIMB_POS,
0.7*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.08*KICKBACK)
0.02*KICKBACK,
0.08*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP); //0.005*MUZZLETEMP;
temporary = 0.01*MUZZLETEMP; //0.005*MUZZLETEMP;
};
class recoil_m320: recoil_default {
muzzleOuter[] = {
QUOTE(1*MUZZLERIGHT_POS),
QUOTE(3*MUZZLECLIMB_POS),
QUOTE(0.5*MUZZLERIGHT_MAG),
QUOTE(0.6*MUZZLECLIMB_MAG)
1*MUZZLERIGHT_POS,
3*MUZZLECLIMB_POS,
0.5*MUZZLERIGHT_MAG,
0.6*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.08*KICKBACK),
QUOTE(0.1*KICKBACK)
0.08*KICKBACK,
0.1*KICKBACK
};
temporary = QUOTE(0.02*MUZZLETEMP);
temporary = 0.02*MUZZLETEMP;
};
class recoil_gm6: recoil_default {
muzzleOuter[] = {
QUOTE(1.4*MUZZLERIGHT_POS),
QUOTE(3.5*MUZZLECLIMB_POS),
QUOTE(0.7*MUZZLERIGHT_MAG),
QUOTE(0.8*MUZZLECLIMB_MAG)
1.4*MUZZLERIGHT_POS,
3.5*MUZZLECLIMB_POS,
0.7*MUZZLERIGHT_MAG,
0.8*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.1*KICKBACK),
QUOTE(0.12*KICKBACK)
0.1*KICKBACK,
0.12*KICKBACK
};
temporary = QUOTE(0.025*MUZZLETEMP);
temporary = 0.025*MUZZLETEMP;
};
class recoil_ebr: recoil_default {
muzzleOuter[] = {
QUOTE(0.4*MUZZLERIGHT_POS),
QUOTE(1.5*MUZZLECLIMB_POS),
QUOTE(0.6*MUZZLERIGHT_MAG),
QUOTE(0.4*MUZZLECLIMB_MAG)
0.4*MUZZLERIGHT_POS,
1.5*MUZZLECLIMB_POS,
0.6*MUZZLERIGHT_MAG,
0.4*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.04*KICKBACK),
QUOTE(0.07*KICKBACK)
0.04*KICKBACK,
0.07*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP);
temporary = 0.01*MUZZLETEMP;
};
class recoil_dmr_01: recoil_default {
muzzleOuter[] = {
QUOTE(0.5*MUZZLERIGHT_POS),
QUOTE(2*MUZZLECLIMB_POS),
QUOTE(0.5*MUZZLERIGHT_MAG),
QUOTE(0.5*MUZZLECLIMB_MAG)
0.5*MUZZLERIGHT_POS,
2*MUZZLECLIMB_POS,
0.5*MUZZLERIGHT_MAG,
0.5*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.03*KICKBACK),
QUOTE(0.08*KICKBACK)
0.03*KICKBACK,
0.08*KICKBACK
};
temporary = QUOTE(0.015*MUZZLETEMP);
temporary = 0.015*MUZZLETEMP;
};
class recoil_dmr_02: recoil_default {
muzzleOuter[] = {
QUOTE(0.5*MUZZLERIGHT_POS),
QUOTE(2.5*MUZZLECLIMB_POS),
QUOTE(0.6*MUZZLERIGHT_MAG),
QUOTE(0.5*MUZZLECLIMB_MAG)
0.5*MUZZLERIGHT_POS,
2.5*MUZZLECLIMB_POS,
0.6*MUZZLERIGHT_MAG,
0.5*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.06*KICKBACK),
QUOTE(0.08*KICKBACK)
0.06*KICKBACK,
0.08*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP);
temporary = 0.01*MUZZLETEMP;
};
class recoil_dmr_03: recoil_default {
muzzleOuter[] = {
QUOTE(0.3*MUZZLERIGHT_POS),
QUOTE(1.5*MUZZLECLIMB_POS),
QUOTE(0.5*MUZZLERIGHT_MAG),
QUOTE(0.4*MUZZLECLIMB_MAG)
0.3*MUZZLERIGHT_POS,
1.5*MUZZLECLIMB_POS,
0.5*MUZZLERIGHT_MAG,
0.4*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.03*KICKBACK),
QUOTE(0.06*KICKBACK)
0.03*KICKBACK,
0.06*KICKBACK
};
temporary = QUOTE(0.005*MUZZLETEMP);
temporary = 0.005*MUZZLETEMP;
};
class recoil_dmr_04: recoil_default {
muzzleOuter[] = {
QUOTE(0.4*MUZZLERIGHT_POS),
QUOTE(1.5*MUZZLECLIMB_POS),
QUOTE(0.5*MUZZLERIGHT_MAG),
QUOTE(0.4*MUZZLECLIMB_MAG)
0.4*MUZZLERIGHT_POS,
1.5*MUZZLECLIMB_POS,
0.5*MUZZLERIGHT_MAG,
0.4*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.04*KICKBACK)
0.02*KICKBACK,
0.04*KICKBACK
};
temporary = QUOTE(0.015*MUZZLETEMP);
temporary = 0.015*MUZZLETEMP;
};
class recoil_dmr_05: recoil_default {
muzzleOuter[] = {
QUOTE(0.5*MUZZLERIGHT_POS),
QUOTE(2.5*MUZZLECLIMB_POS),
QUOTE(0.8*MUZZLERIGHT_MAG),
QUOTE(0.6*MUZZLECLIMB_MAG)
0.5*MUZZLERIGHT_POS,
2.5*MUZZLECLIMB_POS,
0.8*MUZZLERIGHT_MAG,
0.6*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.08*KICKBACK),
QUOTE(0.1*KICKBACK)
0.08*KICKBACK,
0.1*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP);
temporary = 0.01*MUZZLETEMP;
};
class recoil_dmr_06: recoil_default {
muzzleOuter[] = {
QUOTE(0.5*MUZZLERIGHT_POS),
QUOTE(2*MUZZLECLIMB_POS),
QUOTE(0.7*MUZZLERIGHT_MAG),
QUOTE(0.5*MUZZLECLIMB_MAG)
0.5*MUZZLERIGHT_POS,
2*MUZZLECLIMB_POS,
0.7*MUZZLERIGHT_MAG,
0.5*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.05*KICKBACK),
QUOTE(0.1*KICKBACK)
0.05*KICKBACK,
0.1*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP);
temporary = 0.01*MUZZLETEMP;
};
class recoil_mmg_01: recoil_default {
muzzleOuter[] = {
QUOTE(0.6*MUZZLERIGHT_POS),
QUOTE(1.5*MUZZLECLIMB_POS),
QUOTE(0.8*MUZZLERIGHT_MAG),
QUOTE(0.3*MUZZLECLIMB_MAG)
0.6*MUZZLERIGHT_POS,
1.5*MUZZLECLIMB_POS,
0.8*MUZZLERIGHT_MAG,
0.3*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.02*KICKBACK),
QUOTE(0.08*KICKBACK)
0.02*KICKBACK,
0.08*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP); //0.005*MUZZLETEMP;
temporary = 0.01*MUZZLETEMP; //0.005*MUZZLETEMP;
};
class recoil_mmg_02: recoil_default {
muzzleOuter[] = {
QUOTE(0.5*MUZZLERIGHT_POS),
QUOTE(1.5*MUZZLECLIMB_POS),
QUOTE(0.6*MUZZLERIGHT_MAG),
QUOTE(0.4*MUZZLECLIMB_MAG)
0.5*MUZZLERIGHT_POS,
1.5*MUZZLECLIMB_POS,
0.6*MUZZLERIGHT_MAG,
0.4*MUZZLECLIMB_MAG
};
kickBack[] = {
QUOTE(0.04*KICKBACK),
QUOTE(0.08*KICKBACK)
0.04*KICKBACK,
0.08*KICKBACK
};
temporary = QUOTE(0.01*MUZZLETEMP); //0.005*MUZZLETEMP;
temporary = 0.01*MUZZLETEMP; //0.005*MUZZLETEMP;
};
};

@ -1,2 +1 @@
PREP(camshake);

@ -7,4 +7,6 @@ PREP_RECOMPILE_START;
#include "XEH_PREP.hpp"
PREP_RECOMPILE_END;
GVAR(recoilCache) = createHashMap;
ADDON = true;

@ -1,17 +1,17 @@
#include "..\script_component.hpp"
/*
* Author: Orginal by Ryan Schultz, edited by KoffeinFlummi, commy2
* Author: Original by Ryan Schultz, edited by KoffeinFlummi, commy2
* Adds camera shake when firing. Called from the unified fired EH only for the local player.
* From TMR: Small Arms
*
* Arguments:
* None. Parameters inherited from EFUNC(common,firedEH)
* Parameters inherited from EFUNC(common,firedEH)
*
* Return Value:
* None
*
* Example:
* [player, (currentWeapon player), (currentMuzzle player)] call ace_recoil_fnc_camshake;
* [player, currentWeapon player, currentMuzzle player] call ace_recoil_fnc_camshake
*
* Public: No
*/
@ -28,20 +28,19 @@ if (toLowerANSI _weapon in ["throw", "put"]) exitWith {};
private _powerMod = ([0, -0.1, -0.1, 0, -0.2] select (["STAND", "CROUCH", "PRONE", "UNDEFINED", ""] find stance _unit)) + ([0, -1, 0, -1] select (["INTERNAL", "EXTERNAL", "GUNNER", "GROUP"] find cameraView));
// to get camshake read kickback
private _recoil = missionNamespace getVariable format [QGVAR(%1-%2), _weapon, _muzzle];
if (isNil "_recoil") then {
// Get camshake read kickback
private _recoil = GVAR(recoilCache) getOrDefaultCall [_weapon + _muzzle, {
private _config = configFile >> "CfgWeapons" >> _weapon;
if (_muzzle == _weapon) then {
_recoil = getText (_config >> "recoil")
private _recoil = if (_muzzle == _weapon) then {
getText (_config >> "recoil")
} else {
_recoil = getText (_config >> _muzzle >> "recoil")
getText (_config >> _muzzle >> "recoil")
};
if (isClass (configFile >> "CfgRecoils" >> _recoil)) then {
_recoil = getArray (configFile >> "CfgRecoils" >> _recoil >> "kickBack");
if (count _recoil < 2) then {
_recoil = [0, 0];
};
@ -51,12 +50,12 @@ if (isNil "_recoil") then {
TRACE_3("Caching Recoil config",_weapon,_muzzle,_recoil);
// parse numbers
_recoil set [0, call compile format ["%1", _recoil select 0]];
_recoil set [1, call compile format ["%1", _recoil select 1]];
// Ensure format is correct
_recoil resize [2, 0];
missionNamespace setVariable [format [QGVAR(%1-%2), _weapon, _muzzle], _recoil];
};
// Parse numbers
_recoil apply { if (_x isEqualType 0) then { _x } else { call compile format ["%1", _x] } } // return
}, true];
private _powerCoef = RECOIL_COEF * linearConversion [0, 1, random 1, _recoil select 0, _recoil select 1, false];