// Simple SIM flood disaster // Script move vater level between min and max levels // // 08.2023 Pagane Succubus // Place anywhere in your SIM and water level will change // between min and max levels. // Sometime on random base will have disaster floods. float minlevel = 19.5; //minimal water level in meters float maxlevel = 20.1; //maximal water level in meters float incrementor = 0.01; //water level increment in meters float gap = 10; //time steps to change in seconds // True flood disaster float floodlevel = 40; //Disaster water level in meters float floodgap = 4; //Disaster time steps in seconds float floodincrementor = 0.25; //Disaster water level increment in meters // Dry level float drylevel = 18.8; //dry level = no water in SIM //========================================================= float waterlevel; float increment; float watermin; float watermax; float randval; list waterChoices = ["Flood", "Reset", "Dry" ]; string dialogInfo = "\nPlease make a choice amd wait..."; key ToucherID; integer dialogChannel; integer listenHandle; default { state_entry() { llSetTimerEvent(gap); waterlevel = minlevel; watermin = minlevel; watermax = maxlevel; increment = incrementor; dialogChannel = -1 - (integer)("0x" + llGetSubString( (string)llGetKey(), -7, -1) ); llSetText("FLOOD MACHINE V1", <1.0, 0.0, 0.0>, 3.0); } touch_start(integer num_detected) { ToucherID = llDetectedKey(0); llDialog(ToucherID, dialogInfo, waterChoices, dialogChannel); listenHandle = llListen(dialogChannel, "", ToucherID, ""); } listen(integer channel, string name, key id, string message) { if (message == "Flood") { watermax = floodlevel; increment = floodincrementor; llSetTimerEvent(floodgap); llSay(0, "FLOOD DISASTER WARNING!"); } else if (message == "Reset") { llSetTimerEvent(gap); waterlevel = minlevel; watermin = minlevel; watermax = maxlevel; increment = incrementor; } else if (message == "Dry") { llSetTimerEvent(gap); waterlevel = drylevel; watermin = minlevel; watermax = maxlevel; increment = floodincrementor; llSetTimerEvent(floodgap); llSay(0, "Please save water!"); } else {} } timer() { waterlevel = waterlevel + increment; if ((waterlevel > watermax) || (waterlevel <= watermin)) { if ((waterlevel > watermax) & (llFrand(10) > 9) & (watermax != floodlevel)) { watermax = floodlevel; increment = floodincrementor; llSetTimerEvent(floodgap); llSay(0, "FLOOD DISASTER WARNING!"); } else { increment = increment * -1; } if (waterlevel <= watermin) { watermax = maxlevel; increment = incrementor; llSetTimerEvent(gap); } } osSetRegionWaterHeight(waterlevel); llSetText("FLOOD DISASTER\n Edit script for adjust\nWater level="+(string)waterlevel+"m", <1.0, 0.0, 0.0>, 3.0); } }