The weather system of Sociopolitical Ramifications was originally developed by Neikrad for Brazilian Dreams (hence the name). This document describes how you can use it to add weather messages to your room @descs. - unci Other weather sources: news weather-install - How to add or maintain a new weather zone news weather-example - A detailed MUF example of a room with weather news weather-details - Details about the involved MUF programs. If you wish to install the weather system on another MUCK, please contact Neikrad (firmiss@cae.wisc.edu) directly for MUF sources and full documentations. ========================================================================== === Brazilian Dreams MUCK Weather System [ for General Users ] === === Written by Neikrad of Brazilian Dreams and FurryMUCK === ========================================================================== Here's some info to let you get a feeling of what the weather system. What it is and what it is not as well as how you'd go about using the system. This info is meant for the casual user/builder and for the curious. The MUCK weather system is based heavily on the NarniaMUSH weather system by Corikan@Narnia. (In fact, almost every MUSH weather routine has an analogous MUF routine in the main program. Most of the program was simply MUSH to MUF translation). ---[ What can this weather system do? ]--- The MUCK weather system is a set of programs which help create a weather environment for a MUCK. The weather system gives out two kinds of information to each weather 'zone' ('zones' are typically areas of >30 rooms). 1: Each zone has a set of publicly readable weather properties which are periodically updated. With these properties you can describe rooms and objects so they vary with different weather conditions. 2: Within each zone, significant weather changes are told to a list of 'outdoor rooms'. For example.. if its raining and the precipitation rate changes from '1' (very light) to '3' (steady) then each 'outdoor room' in the zone would see the message.. It begins to rain more heavily. [Note: Some have expressed interest in having these change of weather messages user-definable.. The construction of the messages is rather involved and to try to make nearly 40 base messages user-definded would be a mess at best. If there is sufficient interest I COULD set up a way you can 'prepend' a string to a room's messages... For example.. instead of the default... A light rain begins to fall. You might see... <> A light rain begins to fall. End of Note:] ---[ How would I use it? ]--- There are two global weather commands... * weather * forecast The first gives the current weather status in your current weather zone. The second gives a reasonable but not always perfect weather forecast for today and tomorrow. But that alone would be rather boring... Each zone has a 'barometer object' (I like to call it a 'glyph') which containing 21 publicly readable properties such as _daytime, _temp, _tempf, _precip, _sky. Some, like _temp have descriptive strings, while others, like _prate (precipitation rate) contain a number. A small 'reader' program reads these properties off the local zone's barometer glyph. The reader program can be either called via global MPI macro {weather} or via MUF call to the reader program. Simple example: @desc here=The temperature is {weather:temp} here. {weather:temp} can return these possible values: freezing, cold, chilly, cool, crisp, warm, hot. so if the temperature were 52 F the resulting text would be... The temperature is chilly here. If you're building something in an established weather zone and would like to have some of those rooms be in the 'outdoor room' list, you will have to ask the owner of the local weather zone to install it. ---[ How does it work? ]--- A clock program ticks every 15 minutes. At that time, it tells the main weather program to run. Normally it runs 'advance_quarter' which does the following: 1. Updates the properties in each zone's barometer glyph. 2. Announces significant weather changes to each zone's outdoor rooms. The weather-change annoucments are made at about a minute apart after the barometer glyph changes so you aren't overloaded with a bunch of weather changes all at once. Once a day, just after 12 midnight in each zone, the weather program runs 'advance_day'. This routine updates a different object (the 'recorder glyph') which contains several internally used properties, such as '_bias/today/sky' (a number which influences how cloudy [and hence how rainy] the day will be). advance_day calculates this data one day ahead of time so the forecaster program can read today's AND tomorrow's weather forecast. --[ Additional info about the weather program ]-- The program is NOT meteorologically or astronomically correct nor does it attempt to be. Put simply, it just a 'special effects' machine however because its properties are inter-related, it is smart enough to not do silly things such as; have winds spin all over the place, have temperatures which shoot from 3 to 89 in September, or have it sleet when the sky is clear on a hot sunny day. All weather within a zone is updated at the same time so you can't 'chase storms around'. Each weather zone is completly independend of other zones as well. Overall, the system is designed to be a very good balance between realism and simplicity. It is suprisingly easy on the processor so it shouldn't be a significant source of lag. It is also ment to be very easy for the casual builder to incorperate weather-dependant descriptions in their building. ---[ Barometer Glpyh Properties and Values ]--- The following are all the values readable on a barometer glyph. Note: All the property names begin with an underscore '_' but when using the MPI macro {weather} don't include the underscore e.g. {weather:daytime} property possible values --- TIME RELATED --- _daytime: sunrise , dawn , morning , afternoon , sunset , dusk , night ( dawn or dusk occur if its cloudy during sunrise or sunset ) _season: winter , spring , summer , fall _tide: high-tide , mid-tide , low-tide _moon: new waxing , crescent waxing , half waxing , gibbous waxing , full waning , gibbous waning , half waning , crescent waning --- AIR RELATED --- _temp: freezing , cold , chilly , cool , crisp , warm , hot NOTE: Should I add more values? freezing = < 35F , hot = > 85F _tempf: value (farenboogers) _tempc: value (celcius) _wind: calm , breezy , gusty , windy , hi_wind _windspd: value (mph) _windspd_n: value (knots) _windspd_k: value (kph) _winddir: north , north-northeast , northeast , east-northeast east , east-southeast , southeast , south-southeast south , south-southwest , southwest , west-southwest west , west-northwest , northwest , north-northwest _winddir#: value from 0 - 15 0 = north , 1 = north-northeast ... --- WATER RELATED --- _precip: none , rain , hail , sleet , snow _prate: value from 0 - 4 0 = none, 1 = very light , 2 = light , 3 = steady , 4 = heavy _last_precip: last _precip value which wasn't 'none' _last_ptime: value (systime of last precipitation) --- SKY RELATED --- _sky: overcast , cloudy , some_clouds , clear _moonstat: rising , low , high , setting , set , hidden , obscured "low" or "high" mean the moon is low or high in the sky "set" means the moon is below the horizon "hidden" means the moon is up but hidden during bright daylight "obscured" means the moon is up but obscured due to overcast conditions --- GROUND RELATED --- _ground: snowy , icy , wet , dry _watertable: flooded , high , normal , low , dry ----------[ Written by Neikrad @ Brazilian Dreams ]------------