Jump to content

[RELEASE] Black and white fatigue effect

Recommended Posts


  • Script that turns your screen black & white gradually as you get fatigued, and returns color as you recover.


Long description:


It always bothered me the lack of tiredness feeling given to the player, besides some dark spots on the screen, inability to sprint and weapon sway there's nothing else (there's a brief slight desaturation).

ACE3 came along with scientific fatigue calculations and added heavy breathing and inability to jog, but still is not enough as far as effects go.
This very simple code uses the respective (ACE if present or vanilla) fatigue values to turn your screen gradually black and white as your character gets tired and obviously restore it as your character recovers.
The ACE3 effect is way superior to the vanilla one, so you should try it if you're into this.
This is for the ultra hardcore milsim fans so if you wanna jog all day this is not for you (softened with minimum 0.1 instead of too agressive 0 color). I guarantee  you'll think twice before any sprint after a few test runs 🙂 and you'll appreciate a lot more a good vehicle ride (instead of having the feeling your character is a limitless vehicle).
I'd love to hear your thoughts on this as an overall tired effect and why any game never applied this as it seems so intuitive to me. (I've seen a game recently using this technique actually (forgot the name though)).



  • Works with ACE and Vanilla.
  • It does not affect ACE3 values.
  • It's not configured to run on respawn.



  • Bohemia Interactive
  • ACE Team
  • BI Arma Forum Contributors


PS: If there's problems with the ACE code being used please delete this thread.

PS2: If you wanna help and get values directly from ACE3 addon (#include "\z\ace\addons\advanced_fatigue\script_component.hpp"), i'd appreciate it. Thanks.



//fatiguebwfx=execVM "fatiguebwfx.sqf";

if (hasInterface) then{
    //JIP player
    waitUntil {!isNull findDisplay 46};

    private _ppcolor = ppEffectCreate ["ColorCorrections", 8989];
    _ppcolor ppEffectEnable true;
    _ppcolor ppEffectForceInNVG true;

    if (isClass(configFile >> "CfgPatches" >> "ace_main")) then{ //ACE
        //#include "\z\ace\addons\advanced_fatigue\script_component.hpp"
        #define ACE_AE1_MAXRESERVE 4000000
        #define ACE_AE2_MAXRESERVE 84000
        #define ACE_AN_MAXRESERVE 2300

        while{sleep 0.5; alive player} do{
            //Source: ACE3/addons/advanced_fatigue/functions/fnc_mainLoop.sqf
            private _ae1Reserve = missionNameSpace getVariable "ace_advanced_fatigue_ae1reserve";
            private _ae2Reserve = missionNameSpace getVariable "ace_advanced_fatigue_ae2reserve";
            private _anReserve = missionNameSpace getVariable "ace_advanced_fatigue_anreserve";

            private _aeReservePercentage = _ae1Reserve / ACE_AE1_MAXRESERVE + _ae2Reserve / ACE_AE2_MAXRESERVE / 2;
            private _anReservePercentage = _anReserve / ACE_AN_MAXRESERVE;
            private _perceivedFatigue = (_anReservePercentage min _aeReservePercentage); //aerobic fatigue

            _ppcolor ppEffectAdjust [1, 1, 0, [1, 1, 1, 0], [1, 1, 1, (_perceivedFatigue max 0.1)], [0.199, 0.587, 0.114, 0]];
            //_ppcolor ppEffectAdjust [1, 1, 0, [1, 1, 1, 0], [1, 1, 1, ((1-(missionNameSpace getVariable "ace_advanced_fatigue_anfatigue")) max 0.1)], [0.199, 0.587, 0.114, 0]]; //anaerobic fatigue
            _ppcolor ppEffectCommit 0.1;
            waituntil{ppEffectCommitted "ColorCorrections"};
            //hint str [_perceivedFatigue, (missionNameSpace getVariable "ace_advanced_fatigue_anfatigue")];
    }else{ //Vanilla
        //mrcurry https://forums.bohemia.net/forums/topic/215365-extend-stamina-duration-with-commands/
        player setUnitTrait ["loadCoef", (player getUnitTrait "loadCoef")/2]; //<--- optional

        while{sleep 0.5; alive player} do{
            _ppcolor ppEffectAdjust [1, 1, 0, [1, 1, 1, 0], [1, 1, 1, ((1-(getFatigue player)) max 0.1)], [0.199, 0.587, 0.114, 0]];
            _ppcolor ppEffectCommit 0.1;
            waituntil{ppEffectCommitted "ColorCorrections"};
            //hint str (1-(getFatigue player));

    _ppcolor ppEffectAdjust [1, 1, 0, [1, 1, 1, 0], [1, 1, 1, 1], [0.199, 0.587, 0.114, 0]];
    _ppcolor ppEffectCommit 5;
    sleep 5;
    _ppcolor ppEffectEnable false;
    ppEffectDestroy _ppcolor;


  • Like 1

Share this post

Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in

Sign In Now