revive tmr camshake

This commit is contained in:
commy2 2015-04-25 07:21:11 +02:00
parent d7d0f00592
commit 12280bbcad
7 changed files with 181 additions and 2 deletions

View File

@ -0,0 +1,14 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preInit));
};
};
class Extended_FiredBIS_EventHandlers {
class CAManBase {
class ADDON {
clientFiredBIS = QUOTE(if (_this select 0 == ACE_player) then {_this call FUNC(camshake)};);
};
};
};

View File

@ -0,0 +1,85 @@
// Completely disable BI's camshake on fire.
#define ACE_CAMSHAKEFIRE_BASE 0
#define ACE_CAMSHAKEFIRE_LESS 0
#define ACE_CAMSHAKEFIRE_MORE 0
// Go through all modes that have a camshakefire defined and change it to ours.
class CfgMovesBasic {
class Default {
camShakeFire = ACE_CAMSHAKEFIRE_NORMAL;
};
};
class CfgMovesMaleSdr: CfgMovesBasic {
class States {
class AmovPercMstpSlowWrflDnon;
class AmovPknlMstpSlowWrflDnon: AmovPercMstpSlowWrflDnon {
camShakeFire = ACE_CAMSHAKEFIRE_LESS;
};
class AmovPercMstpSrasWrflDnon;
class AmovPpneMstpSrasWrflDnon: AmovPercMstpSrasWrflDnon {
camShakeFire = ACE_CAMSHAKEFIRE_LESS;
};
class AmovPknlMstpSrasWlnrDnon: Default {
camShakeFire = ACE_CAMSHAKEFIRE_LESS;
};
class AmovPknlMrunSlowWrflDf;
class AmovPknlMtacSlowWrflDf: AmovPknlMrunSlowWrflDf {
camShakeFire = ACE_CAMSHAKEFIRE_MORE;
};
class AmovPknlMrunSlowWrflDfl;
class AmovPknlMtacSlowWrflDfl: AmovPknlMrunSlowWrflDfl {
camShakeFire = ACE_CAMSHAKEFIRE_MORE;
};
class AmovPknlMrunSlowWrflDl;
class AmovPknlMtacSlowWrflDl: AmovPknlMrunSlowWrflDl {
camShakeFire = ACE_CAMSHAKEFIRE_MORE;
};
class AmovPknlMrunSlowWrflDbl;
class AmovPknlMtacSlowWrflDbl: AmovPknlMrunSlowWrflDbl {
camShakeFire = ACE_CAMSHAKEFIRE_MORE;
};
class AmovPknlMrunSlowWrflDb;
class AmovPknlMtacSlowWrflDb: AmovPknlMrunSlowWrflDb {
camShakeFire = ACE_CAMSHAKEFIRE_MORE;
};
class AmovPknlMrunSlowWrflDbr;
class AmovPknlMtacSlowWrflDbr: AmovPknlMrunSlowWrflDbr {
camShakeFire = ACE_CAMSHAKEFIRE_MORE;
};
class AmovPknlMrunSlowWrflDr;
class AmovPknlMtacSlowWrflDr: AmovPknlMrunSlowWrflDr {
camShakeFire = ACE_CAMSHAKEFIRE_MORE;
};
class AmovPknlMrunSlowWrflDfr;
class AmovPknlMtacSlowWrflDfr: AmovPknlMrunSlowWrflDfr {
camShakeFire = ACE_CAMSHAKEFIRE_MORE;
};
class AmovPknlMstpSrasWrflDnon;
class AmovPknlMwlkSrasWrflDf: AmovPknlMstpSrasWrflDnon {
camShakeFire = ACE_CAMSHAKEFIRE_NORMAL;
};
class AmovPknlMrunSrasWrflDf;
class AmovPknlMtacSrasWrflDf: AmovPknlMrunSrasWrflDf {
camShakeFire = ACE_CAMSHAKEFIRE_MORE;
};
class AmovPknlMwlkSrasWpstDf;
class AmovPknlMtacSrasWpstDf: AmovPknlMwlkSrasWpstDf {
camShakeFire = ACE_CAMSHAKEFIRE_MORE;
};
};
};

View File

@ -1,11 +1,11 @@
#define KICKBACK 1.4 #define KICKBACK 1.4
#define MUZZLETEMP 1 #define MUZZLETEMP 1.2
#define MUZZLEPERM 0.4 #define MUZZLEPERM 0.4
#define MUZZLECLIMB_POS 1 #define MUZZLECLIMB_POS 1
#define MUZZLERIGHT_POS 0.4 #define MUZZLERIGHT_POS 0.2
#define MUZZLECLIMB_MAG 1 #define MUZZLECLIMB_MAG 1
#define MUZZLERIGHT_MAG 1 #define MUZZLERIGHT_MAG 1

View File

@ -0,0 +1,8 @@
// by commy2
#include "script_component.hpp"
ADDON = false;
PREP(camshake);
ADDON = true;

View File

@ -12,4 +12,12 @@ class CfgPatches {
}; };
}; };
#include "CfgEventHandlers.hpp"
#include "CfgMoves.hpp"
#include "CfgRecoils.hpp" #include "CfgRecoils.hpp"
class CfgCameraShake {
// What does this do, really? It seems like the engine no longer respects it.
defaultCaliberCoefWeaponFire = 0;
};

View File

@ -0,0 +1,63 @@
// TMR: Small Arms - Recoil initialization and functions
// (C) 2013 Ryan Schultz. See LICENSE.
// Edited prefixes for compatability in AGM_Realism by KoffeinFlummi
// Edited by commy2
#include "script_component.hpp"
#define BASE_POWER 0.40
#define BASE_TIME 0.19
#define BASE_FREQ 13
#define RECOIL_COEF 40
private ["_unit", "_weapon", "_muzzle"];
_unit = _this select 0;
_weapon = _this select 1;
_muzzle = _this select 2;
if (toLower _weapon in ["throw", "put"]) exitWith {};
private ["_powerMod", "_timeMod", "_freqMod"];
_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));
_timeMod = 0;
_freqMod = 0;
// to get camshake read kickback
private ["_config", "_recoil"];
_config = configFile >> "CfgWeapons" >> _weapon;
_recoil = if (_muzzle == _weapon) then {
getText (_config >> "recoil")
} else {
getText (_config >> _muzzle >> "recoil")
};
_recoil = getArray (configFile >> "CfgRecoils" >> _recoil >> "kickBack");
if (count _recoil < 2) then {
_recoil = [0, 0];
};
// parse numbers
_recoil set [0, call compile format ["%1", _recoil select 0]];
_recoil set [1, call compile format ["%1", _recoil select 1]];
private "_powerCoef";
_powerCoef = RECOIL_COEF * linearConversion [0, 1, random 1, _recoil select 0, _recoil select 1, false];
if (isWeaponRested _unit) then {_powerMod = _powerMod - 0.07};
if (isWeaponDeployed _unit) then {_powerMod = _powerMod - 0.11};
private "_camshake";
_camshake = [
_powerCoef * (BASE_POWER + _powerMod) max 0,
BASE_TIME + _timeMod max 0,
BASE_FREQ + _freqMod max 0
];
/*
systemChat str _camshake;
copyToClipboard format ["addCamShake %1;", _camshake];
*/
addCamShake _camshake;

View File

@ -0,0 +1 @@
#include "\z\ace\addons\overpressure\script_component.hpp"