Last active
March 11, 2018 17:08
-
-
Save dancodan/fa01d899f18763fd6d1a5191bc9107b4 to your computer and use it in GitHub Desktop.
Calendar for Mundana
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
/* | |
Calendar for Mundana | |
Created by Kirsty (https://app.roll20.net/users/1165285/kirsty) | |
Many thanks to Aaron (https://app.roll20.net/users/104025/the-aaron) for his NoteLog script, parts of which I "borrowed" | |
API Commands: | |
!cal (as Player) - Shows world, date, time, moon, weather and counted days | |
!cal (as GM) - Same as player but includes options to advance the date/time, alter the weather, add a note or view the settings menu. | |
!calSet (GM only) - Allows the GM to change the world, date, time display, show/hide days until full moon, adjust day counter or set the start date | |
Red Colour: #7E2D40 | |
*/ | |
var Calendar = Calendar || (function() { | |
'use strict'; | |
var version = '1.0', | |
handoutName = 'Events Log', | |
setDefaults = function() { | |
state.Calendar = { | |
now: { | |
version: '1.0', | |
ordinal: 1, | |
year: 2945, | |
down: 0, | |
divider: 0, | |
weather: "It is a cool but sunny day.", | |
timetype: "OFF", | |
time: "Morning (dawn)", | |
mooncount: "OFF", | |
startdate: "1,Mörkerviste,2945", | |
events: "" | |
}, | |
}; | |
}, | |
checkDefaults = function() { | |
if( state.Calendar.now.version != version ){ | |
state.Calendar.now.version = version; | |
} | |
if( ! state.Calendar.now.ordinal){state.Calendar.now.ordinal = 1}; | |
if( ! state.Calendar.now.year){state.Calendar.now.year = 2945}; | |
if( ! state.Calendar.now.down){state.Calendar.now.down = '0'}; | |
if( ! state.Calendar.now.divider){state.Calendar.now.divider = '0'}; | |
if( ! state.Calendar.now.weather){state.Calendar.now.weather = "It is a cool but sunny day."}; | |
if( ! state.Calendar.now.timetype){state.Calendar.now.timetype = "OFF"}; | |
if( ! state.Calendar.now.time){state.Calendar.now.time = "Morning (dawn)"}; | |
if( ! state.Calendar.now.time){state.Calendar.now.mooncount = "OFF"}; | |
if( ! state.Calendar.now.startdate){state.Calendar.now.startdate = "1,Mörkerviste,2945"}; | |
if( ! state.Calendar.now.startdate){state.Calendar.now.events = ""}; | |
}, | |
handleInput = function(msg) { | |
var args = msg.content.split(","); | |
if (msg.type !== "api") { | |
return; | |
} | |
if(playerIsGM(msg.playerid)){ | |
switch(args[0]) { | |
case '!cal': | |
calmain(); | |
break; | |
case '!settings': | |
calmenu(); | |
break; | |
case '!setworld': | |
state.Calendar.now.world=args[1]; | |
calmenu(); | |
break; | |
case '!startdate': | |
state.Calendar.now.startdate=args[1]+','+args[2]+','+args[3]; | |
calmenu(); | |
break; | |
case '!setday': | |
getOrdinal(msg); | |
weather(); | |
calmenu(); | |
break; | |
case '!setmonth': | |
getOrdinal(msg); | |
weather(); | |
calmenu(); | |
break; | |
case '!setyear': | |
state.Calendar.now.year=args[1]; | |
calmenu(); | |
break; | |
case '!setordinal': | |
state.Calendar.now.ordinal=args[1]; | |
calmenu(); | |
break; | |
case '!settimetype': | |
var type = args[1]; | |
state.Calendar.now.timetype=type; | |
if (type == 'OFF') { state.Calendar.now.time = 'OFF' }; | |
if (type == 'General') { state.Calendar.now.time = 'Morning (dawn)' }; | |
if (type == '24 Hour') { state.Calendar.now.time = '00:00' }; | |
calmenu(); | |
break; | |
case '!settime': | |
var type = state.Calendar.now.timetype; | |
if (type == 'General'){ | |
state.Calendar.now.time = args[1]; | |
} else if (type == '24 Hour') { | |
state.Calendar.now.time = args[1]+args[2]; | |
} | |
calmain(); | |
break; | |
case '!setdown': | |
var down = Number(args[1]); | |
state.Calendar.now.down = down; | |
getdown(down); | |
calmenu(); | |
break; | |
case '!setdiv': | |
state.Calendar.now.divider=Number(args[1]); | |
calmenu(); | |
break; | |
case '!mooncounter': | |
state.Calendar.now.mooncount=args[1]; | |
calmenu(); | |
break; | |
case '!addday': | |
addday(args[1]); | |
weather(); | |
calmain(); | |
break; | |
case '!addtime': | |
addtime(args[1]); | |
calmain(); | |
break; | |
case '!weather': | |
if(args[1]=='Roll}'){ | |
weather(); | |
}else{ | |
var string = args[1]; | |
for (var i = 2; i < args.length; i++) { | |
string = string + ", " + args[i]; | |
} | |
state.Calendar.now.weather = string; | |
} | |
calmain(); | |
break; | |
case '!log': | |
log(msg); | |
break; | |
case '!playercal': | |
showcal(msg); | |
break; | |
} | |
}else if(args[0]=='!cal'){ | |
showcal(msg); | |
} | |
}, | |
calstyle = function() { | |
var colour = '#7E2D40'; | |
var divstyle = 'style="width: 189px; border: 1px solid black; background-color: #ffffff; padding: 5px; font-size: 12px;"' | |
var astyle1 = 'style="text-align:center; border: 1px solid black; margin: 1px; padding: 2px; background-color: ' + colour + '; border-radius: 4px; box-shadow: 1px 1px 1px #707070; width: 100px;'; | |
var astyle2 = 'style="text-align:center; border: 1px solid black; margin: 1px; padding: 2px; background-color: ' + colour + '; border-radius: 4px; box-shadow: 1px 1px 1px #707070; width: 150px;'; | |
var tablestyle = ''; | |
var arrowstyle = 'style="border: none; border-top: 3px solid transparent; border-bottom: 3px solid transparent; border-left: 195px solid ' + colour + '; margin-bottom: 2px; margin-top: 2px;"'; | |
var headstyle = 'style="color: ' + colour + '; font-size: 18px; text-align: left; font-variant: small-caps; font-family: Times, serif;"'; | |
var substyle = 'style="font-size: 11px; line-height: 13px; margin-top: -3px; font-style: italic;"'; | |
var styles = colour + '|' + divstyle + '|' + astyle1 + '|' + astyle2 + '|' + tablestyle + '|' + arrowstyle + '|' + headstyle + '|' + substyle; | |
return styles; | |
}, | |
calmain = function() { | |
var styles = calstyle().split("|"); | |
var colour = styles[0]; | |
var divstyle = styles[1]; | |
var astyle1 = styles[2]; | |
var astyle2 = styles[3]; | |
var tablestyle = styles[4]; | |
var arrowstyle = styles[5]; | |
var headstyle = styles[6]; | |
var substyle = styles[7]; | |
var world = "Mundana"; | |
var down = Number(state.Calendar.now.down); | |
down = getdown(down); | |
var moMenu = getMoMenu(); | |
var ordinal = state.Calendar.now.ordinal; | |
var nowdate = getDate(ordinal).split(','); | |
var month = nowdate[0]; | |
var day = nowdate[1]; | |
var moon = getMundanaMoon(); | |
var start = state.Calendar.now.startdate.split(','); | |
var startdate = start[1]+' '+start[0]+', '+start[2]; | |
var timeselect = timemenu(); | |
sendChat('Kalender', '/w gm <div ' + divstyle + '>' + //-- | |
'<div ' + headstyle + '>Kalender</div>' + //-- | |
'<div ' + substyle + '>Menu (v.' + state.Calendar.now.version + ')</div>' + //-- | |
'<div ' + arrowstyle + '></div>' + //-- | |
'<table ' + tablestyle + '>' + //-- | |
'<tr><td>World: </td><td>' + world + '</td></tr>' + //-- | |
'<tr><td>Date: </td><td>'+ month + ' ' + day + ', ' + state.Calendar.now.year + '</td></tr>' + //-- | |
'<tr><td>Days: </td><td>' + down + '</td></tr>' + //-- | |
moon + //-- | |
'<tr><td>Time: </td><td><a ' + astyle1 + '" href="!settime,'+ timeselect + '">' + state.Calendar.now.time + '</a></td></tr>' + //-- | |
'</table>' + //-- | |
'<br>Weather: ' + state.Calendar.now.weather + //-- | |
'<br><br><div style="text-align:center;"><a ' + astyle2 + '" href="!addday,?{Days to add?|1}">Advance the Date</a></div>' + //-- | |
'<div style="text-align:center;"><a ' + astyle2 + '" href="!addtime,?{Advance how many hours?|1}">Advance the Time</a></div>' + //-- | |
'<div style="text-align:center;"><a ' + astyle2 + '" href="!weather,?{Weather|Roll|Edit,?{Edit Weather}}">Change Weather</a></div>' + //-- | |
'<div style="text-align:center;"><a ' + astyle2 + '" href="!log,?{Include time?|Yes|No},?{Notes}">Log Day</a></div>' + //-- | |
'<div style="text-align:center;"><a ' + astyle2 + '" href="!playercal">Show to Players</a></div>' + //-- | |
'<div style="text-align:center;"><a ' + astyle2 + '" href="!settings">Settings</a></div>' + //-- | |
'</div>' | |
); | |
}, | |
calmenu = function() { | |
var styles = calstyle().split("|"); | |
var colour = styles[0]; | |
var divstyle = styles[1]; | |
var astyle1 = styles[2]; | |
var astyle2 = styles[3]; | |
var tablestyle = styles[4]; | |
var arrowstyle = styles[5]; | |
var headstyle = styles[6]; | |
var substyle = styles[7]; | |
var world = "Mundana"; | |
var down = Number(state.Calendar.now.down); | |
down = getdown(down); | |
var moMenu = getMoMenu(); | |
var ordinal = state.Calendar.now.ordinal; | |
var nowdate = getDate(ordinal).split(','); | |
var month = nowdate[0]; | |
var day = nowdate[1]; | |
var start = state.Calendar.now.startdate.split(','); | |
var startdate = start[1]+' '+start[0]+', '+start[2]; | |
var timeselect = timemenu(); | |
sendChat('Kalender', '/w gm <div ' + divstyle + '>' + //-- | |
'<div ' + headstyle + '>Kalender</div>' + //-- | |
'<div ' + substyle + '>Menu (v.' + state.Calendar.now.version + ')</div>' + //-- | |
'<div ' + arrowstyle + '></div>' + //-- | |
'<table>' + //-- | |
'<tr><td>World: </td><td>' + world + '</a></td></tr>' + //-- | |
'<tr><td>Start Date: </td><td><a ' + astyle1 + '" href="!startdate,?{Day},?{Month},?{Year}">' + startdate + '</a></td></tr>' + //-- | |
'<tr><td>Day: </td><td><a ' + astyle1 + '" href="!setday,?{Day?|1},' + month +'">' + day + '</a></td></tr>' + //-- | |
'<tr><td>Month: </td><td><a ' + astyle1 + '" href="!setmonth,' + day + moMenu + month + '</a></td></tr>' + //-- | |
'<tr><td>Year: </td><td><a ' + astyle1 + '" href="!setyear,?{Year?|1486}">' + state.Calendar.now.year + '</a></td></tr>' + //-- | |
//'<tr><td>Ordinal: </td><td><a ' + astyle1 + '" href="!setordinal,?{Ordinal?|1}">' + ordinal + '</a></td></tr>' + //- | |
'<tr><td>Time type: </td><td><a ' + astyle1 + '" href="!settimetype,?{Time?|OFF|24 Hour|General}">' + state.Calendar.now.timetype + '</a></td></tr>' + //- | |
'<tr><td>Time: </td><td><a ' + astyle1 + '" href="!settime,'+ timeselect + '">' + state.Calendar.now.time + '</a></td></tr>' + //-- | |
'<tr><td>Down Day<br>Divider: </td><td><a ' + astyle1 + '" href="!setdiv,?{Down Day Divider?|1}">' + state.Calendar.now.divider + '</a></td></tr>' + //-- | |
'<tr><td>Moon Counter: </td><td><a ' + astyle1 + '" href="!mooncounter,?{Moon Counter|OFF|ON}">' + state.Calendar.now.mooncount + '</a></td></tr>' + //-- | |
'</table>' + //-- | |
'<div style="text-align:center;"><a ' + astyle2 + '" href="!cal">Main Menu</a></div>' + //-- | |
'</div>' | |
); | |
}, | |
showcal = function(msg) { | |
var ordinal = state.Calendar.now.ordinal; | |
var nowdate = getDate(ordinal).split(','); | |
var month = nowdate[0]; | |
var day = nowdate[1]; | |
var down = state.Calendar.now.down; | |
down = getdown(down); | |
var world = "Mundana"; | |
var colour = '#7E2D40'; | |
var divstyle = 'style="width: 189px; border: 1px solid black; background-color: #ffffff; padding: 5px;"' | |
var tablestyle = 'style="text-align:center; table-layout: auto; width: 170px;"'; | |
var arrowstyle = 'style="border: none; border-top: 3px solid transparent; border-bottom: 3px solid transparent; border-left: 195px solid ' + colour + '; margin-bottom: 2px; margin-top: 2px;"'; | |
var headstyle = 'style="color: ' + colour + '; font-size: 18px; text-align: left; font-variant: small-caps; font-family: Times, serif;"'; | |
var substyle = 'style="font-size: 11px; line-height: 13px; margin-top: -3px; font-style: italic;"'; | |
var moon = '<table '+tablestyle+'>'+getMundanaMoon()+'</table>'; | |
var timestr; | |
var downstr; | |
if(state.Calendar.now.time!="OFF"){ | |
timestr = '<br>The time is: '+state.Calendar.now.time; | |
}else{ | |
timestr = ''; | |
} | |
if(down!=0){ | |
downstr = '<br>Players have ' + down + ' down days.'; | |
}else{ | |
downstr = ''; | |
} | |
sendChat(msg.who, '<div ' + divstyle + '>' + //-- | |
'<div ' + headstyle + '>Kalender</div>' + //-- | |
'<div ' + substyle + '>' + world + '</div>' + //-- | |
'<div ' + arrowstyle + '></div>' + //-- | |
month + ' ' + day + ', ' + state.Calendar.now.year + //-- | |
timestr + '<br>' + //-- | |
downstr + //-- | |
moon + //-- | |
'<br>Today\'s weather:<br>' + state.Calendar.now.weather | |
); | |
}, | |
getdown = function(days) { | |
var down = Number(days); | |
var div = Number(state.Calendar.now.divider); | |
if(div!=0){ | |
down = down/div; | |
} | |
return down; | |
}, | |
getMoMenu = function() { | |
var moMenu = ',?{Month|Mörkerviste|Långsnö|Frostfall|Vårkomstdagen|Vattensvall|Blomsterkomst|Gröngräs|Midsommardagen|Högsol|Skördevärv|Sommaränd|Lövfäll|Bittervind|Vinterkomstdagen|Midvinter}">'; | |
return moMenu; | |
}, | |
getDate = function(options){ | |
var day = Number(options); | |
var date; | |
var month; | |
if(day>0 && day<=31){ | |
month="Mörkerviste"; | |
date=day; | |
}else if(day>31 && day<=59){ | |
month="Långsnö"; | |
date=day-31; | |
}else if(day>59 && day<=90){ | |
month="Frostfall"; | |
date=day-59; | |
}else if(day==91){ | |
month="Vårkomstdagen"; | |
date='festival'; | |
}else if(day>91 && day<=121){ | |
month="Vattensvall"; | |
date=day-91; | |
}else if(day>121 && day<=152){ | |
month="Blomsterkomst"; | |
date=day-121; | |
}else if(day>152 && day<=182){ | |
month="Gröngräs"; | |
date=day-152; | |
}else if(day==183){ | |
month="Midsommardagen"; | |
date='festival'; | |
}else if(day>183 && day<=214){ | |
month="Högsol" | |
date=day-183; | |
}else if(day>214 && day<=245){ | |
month="Skördevärv"; | |
date=day-214; | |
}else if(day>245 && day<=275){ | |
month="Sommaränd"; | |
date=day-245; | |
}else if(day>275 && day<=306){ | |
month="Lövfäll"; | |
date=day-275; | |
}else if(day>306 && day<=336){ | |
month="Bittervind"; | |
date=day-306; | |
}else if(day==337){ | |
month="Vinterkomstdagen"; | |
date='festival'; | |
}else if(day>337 && day<=368){ | |
month="Midvinter"; | |
date=day-337; | |
}else{ | |
month="Mörkerviste"; | |
date='1'; | |
} | |
var array=month+','+String(date); | |
return array; | |
}, | |
getOrdinal = function(options){ | |
var args = options.content.split(","); | |
var date = args[1]; | |
var month = args[2]; | |
var ordinal = state.Calendar.now.ordinal; | |
if(date == 'festival'){ | |
date = 1; | |
}else{ | |
date = Number(args[1]); | |
} | |
switch(month) { | |
case 'Mörkerviste': | |
ordinal = date; | |
break; | |
case 'Långsnö': | |
ordinal = 31+date; | |
break; | |
case 'Frostfall': | |
ordinal = 59+date; | |
break; | |
case 'Vårkomstdagen': | |
ordinal = 91; | |
break; | |
case 'Vattensvall': | |
ordinal = 91+date; | |
break; | |
case 'Blomsterkomst': | |
ordinal = 121+date; | |
break; | |
case 'Gröngräs': | |
ordinal = 152+date; | |
break; | |
case 'Midsommardagen': | |
ordinal = 183; | |
break; | |
case 'Högsol': | |
ordinal = 183+date; | |
break; | |
case 'Skördevärv': | |
ordinal = 214+date; | |
break; | |
case 'Sommaränd': | |
ordinal = 245+date; | |
break; | |
case 'Lövfäll': | |
ordinal = 275+date; | |
break; | |
case 'Bittervind': | |
ordinal = 306+date; | |
break; | |
case 'Vinterkomstdagen': | |
ordinal = 337; | |
break; | |
case 'Midvinter': | |
ordinal = 337+date; | |
break; | |
} | |
state.Calendar.now.ordinal = ordinal; | |
}, | |
addday = function(no){ | |
var days = Number(no); | |
var ordinal = Number(state.Calendar.now.ordinal); | |
var div = state.Calendar.now.divider; | |
if(div!=0){ | |
state.Calendar.now.down = Number(state.Calendar.now.down)+days; | |
} | |
var newordinal = ordinal+days; | |
if(newordinal>368){ | |
state.Calendar.now.ordinal=newordinal-368; | |
state.Calendar.now.year = Number(state.Calendar.now.year)+1; | |
}else{ | |
state.Calendar.now.ordinal = newordinal; | |
} | |
}, | |
addtime = function(no){ | |
if (state.Calendar.now.timetype === "OFF" || state.Calendar.now.timetype === "General"){ | |
sendChat("Calendar","/w gm You must select the 24 hour clock to use the advance time function."); | |
return; | |
} | |
var addhours = Number(no); | |
var timecheck = state.Calendar.now.time; | |
var currtime = state.Calendar.now.time.split(":"); | |
var hour = currtime[0]; | |
var newhour = Number(hour) + addhours; | |
var day = 0; | |
while (newhour > 24) { | |
newhour = newhour - 24; | |
day ++; | |
} | |
if (day > 0) { | |
addday(day); | |
weather(); | |
} | |
state.Calendar.now.time = newhour + ":" + currtime[1]; | |
}, | |
getsuffix = function(day) { | |
var date = day; | |
var suffix; | |
if (date == 'festival'){ | |
suffix = ''; | |
}else if (date == 1 || date == 2 || date == 21 || date == 22 || date == 31 ){ | |
suffix = ':a'; | |
}else{ | |
suffix = ':e'; | |
} | |
return suffix; | |
}, | |
weather = function() { | |
var roll; | |
var temperature; | |
var wind; | |
var precipitation; | |
var season; | |
var ordinal = state.Calendar.now.ordinal; | |
if(ordinal > 349 || ordinal <= 75){ | |
season = 'Winter' | |
}else if(ordinal <= 166){ | |
season = 'Spring' | |
}else if(ordinal <=257 ){ | |
season = 'Summer' | |
}else if(ordinal <=349 ){ | |
season = 'Fall' | |
} | |
roll = Math.floor(Math.random()*(20-1+1)+1); | |
if(roll>=15 && roll<=17){ | |
switch(season) { | |
case 'Winter': | |
temperature = 'It is a bitterly cold winter day. '; | |
break; | |
case 'Spring': | |
temperature = 'It is a cold spring day. '; | |
break; | |
case 'Summer': | |
temperature = 'It is a cool summer day. '; | |
break; | |
case 'Fall': | |
temperature = 'It is a cold fall day. '; | |
break; | |
} | |
}else if(roll>=18 && roll<=20){ | |
switch(season) { | |
case 'Winter': | |
temperature = 'It is a warm winter day. '; | |
break; | |
case 'Spring': | |
temperature = 'It is a hot spring day. '; | |
break; | |
case 'Summer': | |
temperature = 'It is a blisteringly hot summer day. '; | |
break; | |
case 'Fall': | |
temperature = 'It is a hot fall day. '; | |
break; | |
} | |
}else{ | |
switch(season) { | |
case 'Winter': | |
temperature = 'It is a cold winter day. '; | |
break; | |
case 'Spring': | |
temperature = 'It is a mild spring day. '; | |
break; | |
case 'Summer': | |
temperature = 'It is a hot summer day. '; | |
break; | |
case 'Fall': | |
temperature = 'It is a mild fall day. '; | |
break; | |
} | |
} | |
roll = Math.floor(Math.random()*(20-1+1)+1); | |
if(roll>=15 && roll<=17){ | |
wind='There is a light breeze and '; | |
}else if(roll>=18 && roll<=20){ | |
wind='There is a howling wind and '; | |
}else{ | |
wind='The air is still and '; | |
} | |
roll = Math.floor(Math.random()*(20-1+1)+1); | |
if(roll>=15 && roll<=17){ | |
precipitation="Light rain or snow."; | |
if(season=='Winter'){ | |
precipitation = 'snow falls softly on the ground.'; | |
}else{ | |
precipitation = 'a light rain falls from the sky.'; | |
} | |
}else if(roll>=18 && roll<=20){ | |
if(season=='Winter'){ | |
precipitation = 'snow falls thick and fast from the sky.'; | |
}else{ | |
precipitation = 'a torrential rain begins to fall.'; | |
} | |
}else{ | |
roll = randomInteger(2); | |
if(roll==1){ | |
precipitation = 'the sky is overcast.'; | |
}else{ | |
precipitation = 'the sky is clear.'; | |
} | |
} | |
var forecast=temperature+wind+precipitation; | |
state.Calendar.now.weather = forecast; | |
}, | |
getMundanaMoon = function() { | |
var ordinal = Number(state.Calendar.now.ordinal); | |
var tristianaArray = '0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16'; | |
var izagardArray = '0,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16,1,2,3,3,4,5,5,6,7,7,8,9,10,11,11,12,13,13,14,15,15,16,16'; | |
var tristianaNO = tristianaArray.split(","); | |
var tristianaImg = tristianaNO[ordinal]; | |
var tristiana = getMoon(tristianaImg); | |
var izagardNO = izagardArray.split(","); | |
var izagardImg = izagardNO[ordinal]; | |
var izagard = getMoon(izagardImg); | |
var moon = '<tr><td><img src="'+tristiana+'" style="width:40px;height:40px;"></td><td><img src="'+izagard+'" style="width:30px;height:30px;"></td></tr><tr><td>Tristiana</td><td>Izagard</td></tr>'; | |
return moon; | |
}, | |
getMoon = function(moonNo) { | |
var args = moonNo; | |
var moon; | |
switch(args) { | |
case '1': | |
// moon = 'Full Moon'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Twemoji_1f315.svg/512px-Twemoji_1f315.svg.png'; | |
break; | |
case '2': | |
// moon = 'Waning Gibbous'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Twemoji_1f316.svg/512px-Twemoji_1f316.svg.png'; | |
break; | |
case '3': | |
// moon = 'Waning Gibbous'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Twemoji_1f316.svg/512px-Twemoji_1f316.svg.png'; | |
break; | |
case '4': | |
// moon = 'Waning Gibbous'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Twemoji_1f316.svg/512px-Twemoji_1f316.svg.png'; | |
break; | |
case '5': | |
// moon = 'Last Quarter'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Twemoji_1f317.svg/512px-Twemoji_1f317.svg.png'; | |
break; | |
case '6': | |
// moon = 'Waning Crescent'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/9/96/Twemoji_1f318.svg/512px-Twemoji_1f318.svg.png'; | |
break; | |
case '7': | |
// moon = 'Waning Crescent'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/9/96/Twemoji_1f318.svg/512px-Twemoji_1f318.svg.png'; | |
break; | |
case '8': | |
// moon = 'Waning Crescent'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/9/96/Twemoji_1f318.svg/512px-Twemoji_1f318.svg.png'; | |
break; | |
case '9': | |
// moon = 'New Moon'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Twemoji_1f311.svg/512px-Twemoji_1f311.svg.png'; | |
break; | |
case '10': | |
// moon = 'Waxing Crescent'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Twemoji_1f312.svg/512px-Twemoji_1f312.svg.png'; | |
break; | |
case '11': | |
// moon = 'Waxing Crescent'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Twemoji_1f312.svg/512px-Twemoji_1f312.svg.png'; | |
break; | |
case '12': | |
// moon = 'Waxing Crescent'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Twemoji_1f312.svg/512px-Twemoji_1f312.svg.png'; | |
break; | |
case '13': | |
// moon = 'First Quarter'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Twemoji_1f313.svg/512px-Twemoji_1f313.svg.png'; | |
break; | |
case '14': | |
// moon = 'Waxing Gibbous'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Twemoji_1f314.svg/512px-Twemoji_1f314.svg.png'; | |
break; | |
case '15': | |
// moon = 'Waxing Gibbous'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Twemoji_1f314.svg/512px-Twemoji_1f314.svg.png'; | |
break; | |
case '16': | |
// moon = 'Waxing Gibbous'; | |
moon = 'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Twemoji_1f314.svg/512px-Twemoji_1f314.svg.png'; | |
break; | |
} | |
return moon; | |
}, | |
timemenu = function() { | |
var timetype = state.Calendar.now.timetype; | |
var timeselect = 'OFF'; | |
switch(timetype) { | |
case 'General': | |
timeselect = '?{Time?|Morning (dawn)|Early Morning|Late Morning|Noon|Afternoon|Early Evening|Evening (dusk)|Late Evening|Midnight|After Midnight}'; | |
break; | |
case '24 Hour': | |
timeselect = '?{Hour|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24},?{Minute|00,:00|15,:15|30,:30|45,:45}'; | |
break; | |
} | |
return timeselect; | |
}, | |
createHandout = function() { | |
var handout = createObj('handout',{ | |
name: handoutName | |
}); | |
return handout; | |
}, | |
getHandout = function() { | |
var handout = filterObjs(function(o){ | |
return ( 'handout' === o.get('type') && handoutName === o.get('name') && false === o.get('archived')); | |
})[0]; | |
if(handout) { | |
return handout; | |
} | |
return createHandout(); | |
}, | |
log = function(msg) { | |
var args = msg.content.split(","); | |
var text = args[2]; | |
var addTime = args[1]; | |
var handout = getHandout(); | |
var nowdate = getDate(ordinal).split(','); | |
var ordinal = state.Calendar.now.ordinal; | |
var month = nowdate[0]; | |
var day = nowdate[1]; | |
var suffix = getsuffix(day); | |
var year = state.Calendar.now.year; | |
var date = day + suffix + " " + month + ", " + year; | |
handout.get('notes', function(nts) { | |
if(!_.isNull(nts)){ | |
setTimeout(function(){ | |
var newtext; | |
if (addTime === "Yes"){ | |
newtext = nts + "<br>" + date + " " + state.Calendar.now.time + " - " + text; | |
} else { | |
newtext = nts + "<br>" + date + " - " + text; | |
} | |
handout.set('notes', newtext); | |
},0); | |
} | |
setTimeout(function(){},0); | |
}); | |
sendChat('Calendar','/w gm A new note has been added to the Events Log handout.'); | |
}, | |
checkInstall = function() { | |
if(typeof state.Calendar == "undefined"){ | |
setDefaults(); | |
} | |
if ( state.Calendar.now.version != version ){ | |
checkDefaults(); | |
} | |
}, | |
registerEventHandlers = function() { | |
on('chat:message', handleInput); | |
}; | |
return { | |
CheckInstall: checkInstall, | |
RegisterEventHandlers: registerEventHandlers | |
}; | |
}()); | |
on("ready",function(){ | |
'use strict'; | |
Calendar.CheckInstall(); | |
Calendar.RegisterEventHandlers(); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment