Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Mystara weather with Recursive Tables, TableExport and a bunch of macros

January 26 (6 years ago)

Edited June 28 (6 years ago)

I'm not sure if this belongs in the API or the Specific Use/Macro forum, but since I use a couple of APIs and would probably look into turning all of this into one at some point I post here.

Anyway. My favourite gaming accessory ever is probably TM1: The Western Countries Trail Map, among other things because of the wonderful weather-tables that were of course never used in my days of basic D&D. After discovering The Aarons wonderful Mystara calender API (the first one I ever installed) and the great event tracking update from Brent T. I always dreamt of using the the tables in my Roll20 Mystara-based campaigns. And now I have, using chat menus (thanks to keithcurtis) and another few of The Aarons scripts, Recursive Tables and TableExport.

It looks like this. This is my "Calendar" chat menu:
https://imgur.com/a/4KLHHrF


Selecting "Check Weather" gives me this menu, to select the current month:
https://imgur.com/a/QsWQfLV

And from this table I select the location(s) I want to check. I've only added Selenica and Specularum so far, as these are the closest locations with weather-data to my players:
https://imgur.com/a/PyLLN0y

Selecting a location gives me the acutal weather:

https://imgur.com/a/Cyw3W46

https://imgur.com/a/bgpaLi2

Do you want to see under the hood? Well, ok, but that is a lot of text so I'll post the things I'm thinking about first.


Annoyingly, I couldn't find a way to get the macro to roll the 1d6+9 in the freetext at the end, without the number turning up in the wrong place.


There are also some improvements that I guess would need a full API approach to work:
- read date from calendar script to skip "select month" stage
- make rolls and adjustments for optional seasonal variations when entering new seasons (an extra cold spring or warm winter etc.)
- save weather to date in the calendar or a handout
- skip the details of rain, snow or fog if there is none
- describe rain or snow depending on temperature
- base daily tempratures on temprature the previous day - but this would incur a number of other considerations and create a whole new temprature model

So, let's peek under the hood:

First I've made a character called The Weather Man to put all these macros on as ablities. Mainly as a macro mule to move the macros between games using the Transmogrifier, but also to keep thing tidy. There will be a lot of macros after a while.

This is the Calendar chat menu:

/w gm &{template:5e-shaped} {{title=Calendar}}{{text_big=[Day](!cal today) - [Month](!cal) - [Year](!cal year)
**Advance:**
[Next day](!cal next) - [Back one day](!cal prev)
**View Events:**
[Future](!cal GetEvents future) [Past](!cal GetEvents past)
**Add Public Event:**
[Today](~Public-event-today) [At date](~Public-event-at-date)
**Add Hidden Event**
[Today](~GM-event-today) - [At date](~GM-event-at-date)
**Weather**
[Check Weather](~check-weather)}}


This is the Check Weather menu:

/w gm &{template:5e-shaped} {{title=Weather: Month}}{{text_big=[Nuwmont](~Nuwmont) - [Vatermont](~Vatermont) 
[Thaumont](~Thaumont) - [Flaurmont](~Flaurmont) - [Yarthmont](~Yarthmont)
[Klarmont](~Klarmont) - [Felmont](~Felmont) - [Fyrmont](~Fyrmont)
[Ambyrmont](~Ambyrmont) - [Sviftmont](~Sviftmont) - [Eirmont](~Eirmont)
[Kaldmont](~Kaldmont)}}


When you pick a month you are taken to a location menu. Every month gets a location menu. This is my location menus for Thaumont:

/w gm &{template:5e-shaped} {{title=Weather: Location}} {{[Selenica](~3-Selenica) - [Specularum](~3-Specularum)}}


Selecting location from this menu sends you to the actual weather check. This are different for each month since I adjusted the temperature slightly between each month, but the Trail Map only gives details for each season. These are the commands for Thaumont in Specularum and Selenica:

!rt[Delimiter:BR] /w gm &{template:5e-shaped}{{title=Specularum}}{{Highest temperature=[[1t[Specularum-Thaumont-HiTemp]]]}}{{Lowest temperature=[[1t[Specularum-Thaumont-LoTemp]]]}}{{Rain/Snow/Fog=[[1t[Specularum-Spring-Percipation/Fog]]]}}{{Rain/Snow start=[[1t[Percipation-start]]]}}{{Fog duration=[[1t[Fog-Duration]]]}}{{Rain/Snow intensity=[[1t[Percipation-Intensity]]]}}{{Wind=[[1t[Costal-Wind]]]}}{{Wind Direction=[[1t[Wind-Direction-SW-Dominant]]]}}{{freetext=If high winds, reduce temperature with 1d6+9. For every 1000' altitude above chosen location reduce temperature by 6.}}
!rt[Delimiter:BR] /w gm &{template:5e-shaped}{{title=Selenica}}{{Highest temperature=[[1t[Selenica-Thaumont-HiTemp]]]}}{{Lowest temperature=[[1t[Selenica-Thaumont-LoTemp]]]}}{{Rain/Snow/Fog=[[1t[Selenica-Spring-Percipation/Fog]]]}}{{Rain/Snow start=[[1t[Percipation-start]]]}}{{Fog duration=[[1t[Fog-Duration]]]}}{{Rain/Snow intensity=[[1t[Percipation-Intensity]]]}}{{Wind=[[1t[Wind]]]}}{{Wind Direction=[[1t[Wind-Direction-SW-Dominant]]]}}{{freetext=If high winds, reduce temperature with 1d6+9. For every 1000' altitude above chosen location reduce temperature by 6.}}


It uses Recursive Tables to roll on an number of tables, and adds a bit of freetext at the end.
Some of the tables are customized to location, others are general. All of this is based on the trail maps tables, though I've added a few more options to wind direction, and given each month a unique temperature table. The map gives data for each season on highest and lowest temperature, chance of percipation and fog for each location. Wind direction in the Known World is dominantly SW, based on this map by Bruce Heard.

These are the tables, I write them in a text editor and import them using TableExport. I've been thinking about making a spreadsheet that calculated some ot the tables based on the data from the original map, but these are the tables I need for now so...

!import-table --Selenica-Thaumont-HiTemp --hide
!import-table-item --Selenica-Thaumont-HiTemp --50 F --1 --
!import-table-item --Selenica-Thaumont-HiTemp --51 F --1 --
!import-table-item --Selenica-Thaumont-HiTemp --52 F --1 --
!import-table-item --Selenica-Thaumont-HiTemp --53 F --1 --
!import-table-item --Selenica-Thaumont-HiTemp --54 F --1 --
!import-table-item --Selenica-Thaumont-HiTemp --55 F --1 --
!import-table-item --Selenica-Thaumont-HiTemp --56 F --1 --
!import-table-item --Selenica-Thaumont-HiTemp --57 F --1 --
!import-table-item --Selenica-Thaumont-HiTemp --58 F --1 --
!import-table-item --Selenica-Thaumont-HiTemp --59 F --1 --
!import-table-item --Selenica-Thaumont-HiTemp --60 F --1 --

!import-table --Selenica-Thaumont-LoTemp --hide
!import-table-item --Selenica-Thaumont-LoTemp --35 F --1 --
!import-table-item --Selenica-Thaumont-LoTemp --36 F --1 --
!import-table-item --Selenica-Thaumont-LoTemp --37 F --1 --
!import-table-item --Selenica-Thaumont-LoTemp --38 F --1 --
!import-table-item --Selenica-Thaumont-LoTemp --39 F --1 --
!import-table-item --Selenica-Thaumont-LoTemp --40 F --1 --
!import-table-item --Selenica-Thaumont-LoTemp --41 F --1 --
!import-table-item --Selenica-Thaumont-LoTemp --42 F --1 --
!import-table-item --Selenica-Thaumont-LoTemp --43 F --1 --
!import-table-item --Selenica-Thaumont-LoTemp --44 F --1 --
!import-table-item --Selenica-Thaumont-LoTemp --45 F --1 --

!import-table --Selenica-Flaurmont-HiTemp --hide
!import-table-item --Selenica-Flaurmont-HiTemp --55 F --1 --
!import-table-item --Selenica-Flaurmont-HiTemp --56 F --1 --
!import-table-item --Selenica-Flaurmont-HiTemp --57 F --1 --
!import-table-item --Selenica-Flaurmont-HiTemp --58 F --1 --
!import-table-item --Selenica-Flaurmont-HiTemp --59 F --1 --
!import-table-item --Selenica-Flaurmont-HiTemp --60 F --1 --
!import-table-item --Selenica-Flaurmont-HiTemp --61 F --1 --
!import-table-item --Selenica-Flaurmont-HiTemp --62 F --1 --
!import-table-item --Selenica-Flaurmont-HiTemp --64 F --1 --
!import-table-item --Selenica-Flaurmont-HiTemp --64 F --1 --
!import-table-item --Selenica-Flaurmont-HiTemp --65 F --1 --

!import-table --Selenica-Flaurmont-LoTemp --hide
!import-table-item --Selenica-Flaurmont-LoTemp --35 F --1 --
!import-table-item --Selenica-Flaurmont-LoTemp --36 F --1 --
!import-table-item --Selenica-Flaurmont-LoTemp --37 F --1 --
!import-table-item --Selenica-Flaurmont-LoTemp --38 F --1 --
!import-table-item --Selenica-Flaurmont-LoTemp --39 F --1 --
!import-table-item --Selenica-Flaurmont-LoTemp --40 F --1 --
!import-table-item --Selenica-Flaurmont-LoTemp --41 F --1 --
!import-table-item --Selenica-Flaurmont-LoTemp --42 F --1 --
!import-table-item --Selenica-Flaurmont-LoTemp --43 F --1 --
!import-table-item --Selenica-Flaurmont-LoTemp --44 F --1 --
!import-table-item --Selenica-Flaurmont-LoTemp --45 F --1 --

!import-table --Selenica-Spring-Percipation/Fog --hide
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 1h --1 --
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 2h --2 --
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 3h --2 --   
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 4h --2 --
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 5h --2 --
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 6h --2 --
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 7h --2 --
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 8h --2 --
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 9h --2 --
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 10h --1 --
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 11h --1 --
!import-table-item --Selenica-Spring-Percipation/Fog --Rain or snow for 12h --1 --
!import-table-item --Selenica-Spring-Percipation/Fog --No rain, snow or fog --70 --   
!import-table-item --Selenica-Spring-Percipation/Fog --Fog during dusk or sunrise, visibility 10' --            
!import-table-item --Selenica-Spring-Percipation/Fog --Fog during dusk or sunrise, visibility 20' --            
!import-table-item --Selenica-Spring-Percipation/Fog --Fog during dusk or sunrise, visibility 30' --           
!import-table-item --Selenica-Spring-Percipation/Fog --Fog during dusk or sunrise, visibility 40' --            
!import-table-item --Selenica-Spring-Percipation/Fog --Fog during dusk or sunrise, visibility 50' --            
!import-table-item --Selenica-Spring-Percipation/Fog --Fog during dusk or sunrise, visibility 60' --            
!import-table-item --Selenica-Spring-Percipation/Fog --Fog during dusk or sunrise, visibility 70' --            
!import-table-item --Selenica-Spring-Percipation/Fog --Fog during dusk or sunrise, visibility 80' --            
!import-table-item --Selenica-Spring-Percipation/Fog --Fog during dusk or sunrise, visibility 90' --            
!import-table-item --Selenica-Spring-Percipation/Fog --Fog during dusk or sunrise, visibility 01' --   

!import-table --Specularum-Thaumont-HiTemp --hide
!import-table-item --Specularum-Thaumont-HiTemp --50 F --1 --
!import-table-item --Specularum-Thaumont-HiTemp --51 F --1 --
!import-table-item --Specularum-Thaumont-HiTemp --52 F --1 --
!import-table-item --Specularum-Thaumont-HiTemp --53 F --1 --
!import-table-item --Specularum-Thaumont-HiTemp --54 F --1 --
!import-table-item --Specularum-Thaumont-HiTemp --55 F --1 --
!import-table-item --Specularum-Thaumont-HiTemp --56 F --1 --
!import-table-item --Specularum-Thaumont-HiTemp --57 F --1 --
!import-table-item --Specularum-Thaumont-HiTemp --58 F --1 --
!import-table-item --Specularum-Thaumont-HiTemp --59 F --1 --
!import-table-item --Specularum-Thaumont-HiTemp --60 F --1 --

!import-table --Specularum-Thaumont-LoTemp --hide
!import-table-item --Specularum-Thaumont-LoTemp --45 F --1 --
!import-table-item --Specularum-Thaumont-LoTemp --46 F --1 --
!import-table-item --Specularum-Thaumont-LoTemp --47 F --1 --
!import-table-item --Specularum-Thaumont-LoTemp --48 F --1 --
!import-table-item --Specularum-Thaumont-LoTemp --49 F --1 --
!import-table-item --Specularum-Thaumont-LoTemp --50 F --1 --
!import-table-item --Specularum-Thaumont-LoTemp --51 F --1 --
!import-table-item --Specularum-Thaumont-LoTemp --52 F --1 --
!import-table-item --Specularum-Thaumont-LoTemp --53 F --1 --
!import-table-item --Specularum-Thaumont-LoTemp --54 F --1 --
!import-table-item --Specularum-Thaumont-LoTemp --55 F --1 --

!import-table --Specularum-Spring-Percipation/Fog --hide
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 1h --1 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 2h --2 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 3h --3 --   
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 4h --3 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 5h --3 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 6h --3 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 7h --3 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 8h --3 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 9h --3 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 10h --3 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 11h --3 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 12h --2 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 13h --1 --
!import-table-item --Specularum-Spring-Percipation/Fog --Rain or snow for 14h --1 --
!import-table-item --Specularum-Spring-Percipation/Fog --No rain, snow or fog --25 --
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 01' --2 --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 02' --2 --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 03' --2 --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 04' --2 --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 05' --1 --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 06' --2 --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 07' --1 --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 08' --2 --                
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 09' --2 --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 10' --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 11' --3 --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 20' --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 21' --1 --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 22' --1 --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 30' --           
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 31' --           
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 32' --           
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 33' --           
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 34' --           
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 35' --           
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 40' --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 50' --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 60' --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 70' --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 80' --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 90' --            
!import-table-item --Specularum-Spring-Percipation/Fog --Fog at night, visibility 01' --   

!import-table --Percipation-start
!import-table-item --Percipation-start --Any rain or snow starts a 00 hours. --3 --
!import-table-item --Percipation-start --Any rain or snow starts a 01 hours. --2 --
!import-table-item --Percipation-start --Any rain or snow starts a 02 hours. --2 --
!import-table-item --Percipation-start --Any rain or snow starts a 03 hours. --
!import-table-item --Percipation-start --Any rain or snow starts a 04 hours. --
!import-table-item --Percipation-start --Any rain or snow starts a 05 hours. --
!import-table-item --Percipation-start --Any rain or snow starts a 06 hours. --
!import-table-item --Percipation-start --Any rain or snow starts a 07 hours. --2 --
!import-table-item --Percipation-start --Any rain or snow starts a 08 hours. --2 --
!import-table-item --Percipation-start --Any rain or snow starts a 09 hours. --2 --
!import-table-item --Percipation-start --Any rain or snow starts a 10 hours. --
!import-table-item --Percipation-start --Any rain or snow starts a 11 hours. --
!import-table-item --Percipation-start --Any rain or snow starts a 12 hours. --
!import-table-item --Percipation-start --Any rain or snow starts a 13 hours. --
!import-table-item --Percipation-start --Any rain or snow starts a 14 hours. --
!import-table-item --Percipation-start --Any rain or snow starts a 15 hours. --2 --
!import-table-item --Percipation-start --Any rain or snow starts a 16 hours. --2 --
!import-table-item --Percipation-start --Any rain or snow starts a 17 hours. --2 --
!import-table-item --Percipation-start --Any rain or snow starts a 18 hours. --2 --
!import-table-item --Percipation-start --Any rain or snow starts a 19 hours. --2 --
!import-table-item --Percipation-start --Any rain or snow starts a 20 hours. --2 --
!import-table-item --Percipation-start --Any rain or snow starts a 21 hours. --3 --
!import-table-item --Percipation-start --Any rain or snow starts a 22 hours. --3 --
!import-table-item --Percipation-start --Any rain or snow starts a 23 hours. --3 --

!import-table --Fog-Duration
!import-table-item --Fog-Duration --Any fog lasts one hour --
!import-table-item --Fog-Duration --Any fog lasts two hours --
!import-table-item --Fog-Duration --Any fog lasts three hours --
!import-table-item --Fog-Duration --Any fog lasts four hours --

!import-table --Percipation-Intensity
!import-table-item --Percipation-Intensity --Any rain or snow is drizzle or flurries --2 --
!import-table-item --Percipation-Intensity --Any rain or snow is light, about 1-6" total, double in hilly areas, triple in mountains. --4 --
!import-table-item --Percipation-Intensity --Any rain or snow is heavy, about 1" pr hour, double in hilly areas, triple in mountains. --3 --
!import-table-item --Percipation-Intensity --Any rain or snow is thunderstorm or Snowstorm, about 2" pr hour, double in hilly areas, triple in mountains. --1 --

!import-table --Wind
!import-table-item --Wind --Little or no wind --2 --
!import-table-item --Wind --Moderate Breeze --4 --
!import-table-item --Wind --Strong Breeze --3 --
!import-table-item --Wind --High Winds --1 --

!import-table --Costal-Wind
!import-table-item --Costal-Wind --Little or no wind --1 --
!import-table-item --Costal-Wind --Moderate Breeze --4 --
!import-table-item --Costal-Wind --Strong Breeze --3 --
!import-table-item --Costal-Wind --High Winds --2 --

!import-table --Wind-Direction-SW-Dominant
!import-table-item --Wind-Direction-SW-Dominant --South West --22 --
!import-table-item --Wind-Direction-SW-Dominant --West South West --4 --
!import-table-item --Wind-Direction-SW-Dominant --South South West --4 --
!import-table-item --Wind-Direction-SW-Dominant --West --2 --
!import-table-item --Wind-Direction-SW-Dominant --South --2 --
!import-table-item --Wind-Direction-SW-Dominant --South South East --1 --
!import-table-item --Wind-Direction-SW-Dominant --South East --1 --
!import-table-item --Wind-Direction-SW-Dominant --East South East --1 --
!import-table-item --Wind-Direction-SW-Dominant --East --1 --
!import-table-item --Wind-Direction-SW-Dominant --East North East --1 --
!import-table-item --Wind-Direction-SW-Dominant --North North Eeast --1 --
!import-table-item --Wind-Direction-SW-Dominant --North --1 --
!import-table-item --Wind-Direction-SW-Dominant --North North West --1 --
!import-table-item --Wind-Direction-SW-Dominant --North West --1 --
!import-table-item --Wind-Direction-SW-Dominant --West North West --1 --
January 26 (6 years ago)

Inserting images into the post didn't work for some reason.

January 26 (6 years ago)
vÍnce
Pro
Sheet Author


Marius said:

Inserting images into the post didn't work for some reason.

I feel your pain!


January 30 (6 years ago)

Edited January 30 (6 years ago)

Hm. Looks like I'm able to insert images into this comment, but not edit them into the original post. Anyway, here the menu images are:


First the Calendar chat menu:



And then my images wouldn't load again - but after selection the month and the loaction we end with this "forecast":