#define COMPONENT particles
#include "\z\ace\addons\main\script_mod.hpp"

// #define DEBUG_MODE_FULL
// #define DISABLE_COMPILE_CACHE
// #define ENABLE_PERFORMANCE_COUNTERS

#ifdef DEBUG_ENABLED_PARTICLES
    #define DEBUG_MODE_FULL
#endif

#ifdef DEBUG_SETTINGS_PARTICLES
    #define DEBUG_SETTINGS DEBUG_SETTINGS_PARTICLES
#endif

#include "\z\ace\addons\main\script_macros.hpp"

#define SMOKE_COLOR_RED    {0.9528, 0.0438, 0.0410, 0.8}
#define SMOKE_COLOR_GREEN  {0.0328, 0.1626, 0.1023, 0.8}
#define SMOKE_COLOR_YELLOW {0.9610, 0.4505, 0.0109, 0.8}
#define SMOKE_COLOR_PURPLE {0.4622, 0.0578, 0.3154, 0.8}
#define SMOKE_COLOR_BLUE   {0.0355, 0.1863, 1.0000, 0.8}
#define SMOKE_COLOR_ORANGE {0.9132, 0.1763, 0.0070, 0.8}

#define EFFECT_HANDGRENADE(color) class SmokeShell##color##Effect: SmokeShellWhiteEffect { \
    class SmokeShell: SmokeShell { \
        type = "ACE_SmokeBaseMedium"; \
    }; \
}
#define MERGE(var1,var2) var1####var2
#define EFFECT_40MM(color) class ACE_40mmSmokeShell##color##Effect: ACE_40mmSmokeShellWhiteEffect { \
    class SmokeShellUW { \
        simulation = "particles"; \
        type = QUOTE(MERGE(SmokeShell,MERGE(color,UW))); \
        position[] = {0, 0, 0}; \
        intensity = 1; \
        interval = 1; \
    }; \
    class SmokeShell2UW { \
        simulation = "particles"; \
        type = QUOTE(MERGE(SmokeShell,MERGE(color,2UW))); \
        position[] = {0, 0, 0}; \
        intensity = 1; \
        interval = 1; \
    }; \
}
#define EFFECT_AFTER_WATER(color) class ACE_SmokeAfterWater##color: ACE_SmokeAfterWaterWhite { \
    class SmokeAfterWater: SmokeAfterWater { \
        type = QUOTE(MERGE(ACE_SmokeAfterWater,color)); \
    }; \
}

#define CLOUDLET_UNDERWATER(color) class SmokeShell##color##UW; \
class SmokeShell##color##2UW: SmokeShell##color##UW { \
    postEffects = QUOTE(MERGE(ACE_SmokeAfterWater,color)); \
}