/**********************************************************************
* Weather.h -- Definitions for new zone-based weather routines. Made  
* 12/23/91 by Smandoggi/Dbra/abradfor. This is for DikuMUD, and whatever 
* legal things that apply to it, apply here as well, so there.  
*********************************************************************/

#ifndef WEATHER_H
#define WEATHER_H

/* Season patterns */
#define ONE_SEASON 1
#define TWO_SEASONS_EQUAL 2
#define TWO_SEASONS_FIRST_LONG 3
#define TWO_SEASONS_SECOND_LONG 4
#define THREE_SEASONS_EQUAL 5
#define FOUR_SEASONS_EQUAL 6
#define FOUR_SEASONS_EVEN_LONG 7
#define FOUR_SEASONS_ODD_LONG 8

#define MAX_SEASONS 4

/* Seasonal Wind characteristics */
#define SEASON_CALM 1
#define SEASON_BREEZY 2
#define SEASON_UNSETTLED 3
#define SEASON_WINDY 4
#define SEASON_CHINOOK 5
#define SEASON_VIOLENT 6
#define SEASON_HURRICANE 7

/* Seasonal Precipitation characteristics */
#define SEASON_NO_PRECIP_EVER 1
#define SEASON_ARID 2
#define SEASON_DRY 3
#define SEASON_LOW_PRECIP 4
#define SEASON_AVG_PRECIP 5
#define SEASON_HIGH_PRECIP 6
#define SEASON_STORMY 7
#define SEASON_TORRENT 8
#define SEASON_CONSTANT_PRECIP 9  /* Interesting if it's cold enough to snow */

/* Seasonal Temperature characteristics */
#define SEASON_FROSTBITE 1     /* Need to keep warm...*/
#define SEASON_NIPPY 2
#define SEASON_FREEZING 3
#define SEASON_COLD 4
#define SEASON_COOL 5
#define SEASON_MILD 6
#define SEASON_WARM 7
#define SEASON_HOT 8
#define SEASON_BLUSTERY 9
#define SEASON_HEATSTROKE 10   /* Definite HP loss for these two */
#define SEASON_BOILING 11

/* Flags */
#define NO_MOON_EVER 1
#define NO_SUN_EVER 2
#define NON_CONTROLLABLE 4
#define AFFECTS_INDOORS 8

struct climate {
    int season_pattern;
    int season_wind[MAX_SEASONS];
    int season_wind_dir[MAX_SEASONS];
    int season_wind_variance[MAX_SEASONS];
    int season_precip[MAX_SEASONS];
    int season_temp[MAX_SEASONS];
    int flags;
    signed int energy_add;
};


/* Weather flags */
#define MOON_VISIBLE 1
#define SUN_VISIBLE 2
#define WEATHER_CONTROLLED 4        /* Idea for expansion */

struct weather_data {
    signed int temp; /* In Celsius... So what if I'm a yankee, I */
		  /* still prefer the metric system */
    signed int humidity;
    signed int precip_rate;
    int  windspeed;
    int wind_dir;
    int pressure;               /* Kept from previous system */
    int ambient_light;         /* Interaction between sun, moon, */
		  /* clouds, etc. Local lights ignored */
    int free_energy;
    int flags;
    int precip_depth; /* Snowpack, flood level */
    int pressure_change,precip_change;
};

#endif /* !defined(WEATHER_H) */