Created
April 19, 2020 12:23
-
-
Save ConnorAU/a95c61efb75279cfbe9e8fa361280ae3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*──────────────────────────────────────────────────────┐ | |
│ Author: ConnorAU │ | |
│ Steam: https://steamcommunity.com/id/_connor │ | |
│ Github: https://github.com/ConnorAU │ | |
│ │ | |
│ Please do not modify or remove this comment block │ | |
└──────────────────────────────────────────────────────*/ | |
#define BASE_WEATHER_CHANGE_TIME (7*60) | |
#define RAND_WEATHER_CHANGE_TIME (5*60) | |
#define TRANSITION_TIME 15 | |
#define FORCE_UPDATE_VAR "SERV_DYNWEATHER_FORCEUPDATE" | |
#define SET_WEATHER(F,R,O,L) \ | |
TRANSITION_TIME setFog F;\ | |
TRANSITION_TIME setRain R;\ | |
TRANSITION_TIME setOvercast O;\ | |
TRANSITION_TIME setLightnings L; | |
#define WEATHER_CLEAR "CLEAR" | |
#define WEATHER_CLEAR_TICKETS 30 | |
#define WEATHER_CLEAR_SELECT SET_WEATHER(0,0,0.5,0) | |
#define WEATHER_OVERCAST "OVERCAST" | |
#define WEATHER_OVERCAST_TICKETS 20 | |
#define WEATHER_OVERCAST_SELECT SET_WEATHER(0.05,0,0.7,0) | |
#define WEATHER_RAIN_LIGHT "RAIN_LIGHT" | |
#define WEATHER_RAIN_LIGHT_TICKETS 3 | |
#define WEATHER_RAIN_LIGHT_SELECT SET_WEATHER(0.05,0.2,0.7,0) | |
#define WEATHER_RAIN_HEAVY "RAIN_HEAVY" | |
#define WEATHER_RAIN_HEAVY_TICKETS 1 | |
#define WEATHER_RAIN_HEAVY_SELECT SET_WEATHER(0.15,0.7,1,0) | |
#define WEATHER_STORM "STORM" | |
#define WEATHER_STORM_TICKETS 1 | |
#define WEATHER_STORM_SELECT SET_WEATHER(0.2,1,0.7,1) | |
/*------------------------------------------------------- | |
| | | |
| Things get pretty wild after this point | | |
| | | |
-------------------------------------------------------*/ | |
if !isServer exitwith {}; | |
if !canSuspend exitwith {[] execVM __FILE__}; | |
scriptName "Dynamic Weather System"; | |
WEATHER_CLEAR_SELECT | |
forceWeatherChange; | |
private _weatherTickets = []; | |
{ | |
_x params ["_mode","_count"]; | |
for '_i' from 1 to _count do {_weatherTickets pushBack _mode}; | |
}foreach [ | |
[WEATHER_CLEAR,WEATHER_CLEAR_TICKETS], | |
[WEATHER_OVERCAST,WEATHER_OVERCAST_TICKETS], | |
[WEATHER_RAIN_LIGHT,WEATHER_RAIN_LIGHT_TICKETS], | |
[WEATHER_RAIN_HEAVY,WEATHER_RAIN_HEAVY_TICKETS], | |
[WEATHER_STORM,WEATHER_STORM_TICKETS] | |
]; | |
private _tick = 0; | |
private _mode = ""; | |
for '_i' from 0 to 1 step 0 do { | |
_tick = diag_ticktime + (BASE_WEATHER_CHANGE_TIME+random RAND_WEATHER_CHANGE_TIME); | |
waituntil {diag_tickTime > _tick || !isNil FORCE_UPDATE_VAR}; | |
_mode = missionNameSpace getVariable [FORCE_UPDATE_VAR,selectRandom _weatherTickets]; | |
switch _mode do { | |
case WEATHER_OVERCAST:{WEATHER_OVERCAST_SELECT}; | |
case WEATHER_RAIN_LIGHT:{WEATHER_RAIN_LIGHT_SELECT}; | |
case WEATHER_RAIN_HEAVY:{WEATHER_RAIN_HEAVY_SELECT}; | |
case WEATHER_STORM:{WEATHER_STORM_SELECT}; | |
default {WEATHER_CLEAR_SELECT}; | |
}; | |
diag_log parsetext format["[Dynamic Weather System] Changing to: %1",_mode]; | |
missionNameSpace setVariable [FORCE_UPDATE_VAR,nil]; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment