Skip to content

Instantly share code, notes, and snippets.

@dancodan
Created March 21, 2018 19:40
Show Gist options
  • Save dancodan/23f4c1f868cdd6e3bfdd44f9e496ce1c to your computer and use it in GitHub Desktop.
Save dancodan/23f4c1f868cdd6e3bfdd44f9e496ce1c to your computer and use it in GitHub Desktop.
const WeatherRoller = (function(){
'use strict';
var version = 1.0,
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'
}
//Lets roll 1d100 to determine the temperature
roll = Math.floor(Math.random()*(99));
//5% chance it will be a bitterly cold day
if(roll>=0 && roll<=4){
switch(season) {
case 'Winter':
temperature = `Det är en extremt kall vinterdag med en temperatur runt ${Math.floor(Math.random() * 10 - 40)} grader. `;
break;
case 'Spring':
temperature = `Det är en extremt kall vårdag med en temperatur runt ${Math.floor(Math.random() * 5 -3)} grader. `;
break;
case 'Summer':
temperature = `Det är en extremt kall sommardag med en temperatur runt ${Math.floor(Math.random() * 5 + 9)} grader. `;
break;
case 'Fall':
temperature =`Det är en extremt kall höstdag med en temperatur runt ${Math.floor(Math.random() * 5 - 3)} grader. `;
break;
}
}else if(roll>=5 && roll<=9){
//5% chance it will be a very cold day
switch(season) {
case 'Winter':
temperature = `Det är en väldigt kall vinterdag med en temperatur runt ${Math.floor(Math.random() * 5 - 30)} grader. `;
break;
case 'Spring':
temperature = `Det är en väldigt kall vårdag med en temperatur runt ${Math.floor(Math.random() * 5 + 1)} grader. `;
break;
case 'Summer':
temperature = `Det är en väldigt kall sommardag med en temperatur runt ${Math.floor(Math.random() * 5 + 12)} grader. `;
break;
case 'Fall':
temperature = `Det är en väldigt kall höstdag med en temperatur runt ${Math.floor(Math.random() * 5 + 0)} grader. `;
break;
}
}else if(roll>=10 && roll<=19){
//10% chance it will be a cold day
switch(season) {
case 'Winter':
temperature = `Det är en kall vinterdag med en temperatur runt ${Math.floor(Math.random() * 5 - 25)} grader. `;
break;
case 'Spring':
temperature = `Det är en kall vårdag med en temperatur runt ${Math.floor(Math.random() * 5 + 4)} grader. `;
break;
case 'Summer':
temperature = `Det är en kall sommardag med en temperatur runt ${Math.floor(Math.random() * 5 + 15)} grader. `;
break;
case 'Fall':
temperature = `Det är en kall höstdag med en temperatur runt ${Math.floor(Math.random() * 5 + 3)} grader. `;
break;
}
}else if(roll>=20 && roll<=79){
//60% chance of a mild and normal day
switch(season) {
case 'Winter':
temperature = `Det är en mild vinterdag med en temperatur runt ${Math.floor(Math.random() * 10 - 20)} grader.`;
break;
case 'Spring':
temperature = `Det är en mild vårdag med en temperatur runt ${Math.floor(Math.random() * 10 + 8)} grader. `;
break;
case 'Summer':
temperature = `Det är en mild sommardag med en temperatur runt ${Math.floor(Math.random() * 10 + 15)} grader. `;
break;
case 'Fall':
temperature = `Det är en mild höstdag med en temperatur runt ${Math.floor(Math.random() * 10 + 8)} grader. `;
break;
}
}else if(roll>=80 && roll<=89){
//10% chance of a warm day
switch(season) {
case 'Winter':
temperature = `Det är en varm vinterdag med en temperatur runt ${Math.floor(Math.random() * 10 - 15)} grader.`;
break;
case 'Spring':
temperature = `Det är en varm vårdag med en temperatur runt ${Math.floor(Math.random() * 10 + 10)} grader. `;
break;
case 'Summer':
temperature = `Det är en varm sommardag med en temperatur runt ${Math.floor(Math.random() * 10 + 20)} grader. `;
break;
case 'Fall':
temperature = `Det är en varm höstdag med en temperatur runt ${Math.floor(Math.random() * 10 + 10)} grader. `;
break;
}
}else if(roll>=90 && roll<=94){
//5% chance of a very warm day
switch(season) {
case 'Winter':
temperature = `Det är en väldigt varm vinterdag med en temperatur runt ${Math.floor(Math.random() * 10 - 10)} grader.`;
break;
case 'Spring':
temperature = `Det är en väldigt varm vårdag med en temperatur runt ${Math.floor(Math.random() * 10 + 13)} grader. `;
break;
case 'Summer':
temperature = `Det är en väldigt varm sommardag med en temperatur runt ${Math.floor(Math.random() * 10 + 25)} grader. `;
break;
case 'Fall':
temperature = `Det är en väldigt varm höstdag med en temperatur runt ${Math.floor(Math.random() * 10 + 13)} grader. `;
break;
}
}else{
//5% chance of an extremely hot day
switch(season) {
case 'Winter':
temperature = `Det är en extremnt varm vinterdag med en temperatur runt ${Math.floor(Math.random() * 10 - 5)} grader.`;
break;
case 'Spring':
temperature = `Det är en extremnt varm vårdag med en temperatur runt ${Math.floor(Math.random() * 10 + 15)} grader. `;
break;
case 'Summer':
temperature = `Det är en extremnt varm sommardag med en temperatur runt ${Math.floor(Math.random() * 10 + 30)} grader. `;
break;
case 'Fall':
temperature = `Det är en extremnt varm höstdag med en temperatur runt ${Math.floor(Math.random() * 10 + 15)} grader. `;
break;
}
}
//Ok lets do 1d100 for wind
roll = Math.floor(Math.random()*(99));
if(roll>=0 && roll<=9){
wind='Det är vindstilla och ';
}else if(roll>=10 && roll<=29){
wind='Vinden blåser med en svag bris och ';
}else if(roll>=30 && roll<=49){
wind='En bris blåser milt och ';
}else if(roll>=50 && roll<=69){
wind='En måttlig vind blåser och ';
}else if(roll>=70 && roll<=89){
wind='En frisk vind blåser och ';
}else if(roll>=90 && roll<=95){
wind='En hård vind blåser och ';
}else if(roll=96){
wind='Lokala stormbyar piskar lander och ';
}else if(roll=97){
wind='En storm blåser och ';
}else if(roll=98){
wind='En orkan blåser och ';
}else {
wind='Luften känns elektrisk, huvudet värker, en magistorm förstör allt i sin väg och ';
}
//Lets check if there is some precipitation
roll = Math.floor(Math.random()*(99));
if(roll>=0 && roll<=14){
precipitation="Light rain or snow.";
if(season=='Winter'){
precipitation = 'molnen lyser med sin frånvaro.';
}else{
precipitation = 'det är en klarblå himmel.';
}
}else if(roll>=15 && roll<=39){
if(season=='Winter'){
precipitation = 'på himmelen syns vita moln.';
}else{
precipitation = 'på himmelen syns vita moln.';
}
}else if(roll>=40 && roll<=54){
if(season=='Winter'){
precipitation = 'himmelen täcks av mörka moln som spricker upp emellanåt.';
}else{
precipitation = 'himmelen täcks av mörka moln som spricker upp emellanåt.';
}
}else if(roll>=55 && roll<=59){
if(season=='Winter'){
precipitation = 'enstaka snöflingor dalar sakta mot marken.';
}else{
precipitation = 'ett lätt duggregn faller sakta.';
}
}else if(roll>=60 && roll<=69){
if(season=='Winter'){
precipitation = 'små snöflingor virvlar i luften.';
}else{
precipitation = 'spridda regnskurar faller under några timmar.';
}
}else if(roll>=70 && roll<=79){
if(season=='Winter'){
precipitation = 'snön faller.';
}else{
precipitation = 'ett lätt regn strilar ner mot marken.';
}
}else if(roll>=80 && roll<=85){
if(season=='Winter'){
precipitation = 'ett snöväder täcker lander.';
}else{
precipitation = 'ett regnväder faller från en mörk himmel.';
}
}else if(roll>=86 && roll<=91){
if(season=='Winter'){
precipitation = 'ett snöväder faller tungt.';
}else{
precipitation = 'ett ösregn faller från en mörk himmel.';
}
}else if(roll>=92 && roll<=93){
if(season=='Winter'){
precipitation = 'snön faller tungt från tjocka moln på himmelen.';
}else{
precipitation = 'ett ösregn faller från en mörk himmel, på avstånd hörs en lätt åska.';
}
}else if(roll>=94 && roll<=95){
if(season=='Winter'){
precipitation = 'snön faller tungt från mörka, tunga moln på himmelen.';
}else{
precipitation = 'ett ösregn börjar falla från en mörk himmel, på avstånd hörs en rejäl åska.';
}
}else if(roll>=96 && roll<=97){
if(season=='Winter'){
precipitation = 'snön faller intensivt från himmelen. Begränsad sikt och framkomlighet.';
}else{
precipitation = 'ett skyfall faller från himmelen. Bäckar och floder har svämmat över. Begränsad framkomlighet.';
}
}else{
if(season=='Winter'){
precipitation = 'snön faller intensivt från himmelen. Begränsad sikt och framkomlighet.';
}else{
precipitation = 'ett skyfall faller från himmelen och en intensiv åska råder. Bäckar och floder har svämmat över. Begränsad framkomlighet.';
}
}
var forecast = temperature + '<br>' + wind + '<br>' + precipitation;
return forecast;
};
return {
weather: weather
};
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment