eldhamud/boards/
eldhamud/clans/
eldhamud/classes/
eldhamud/councils/
eldhamud/deity/
eldhamud/doc/
eldhamud/doc/DIKU/
eldhamud/doc/MERC/
eldhamud/doc/mudprogs/
eldhamud/gods/
eldhamud/houses/
eldhamud/lockers/
eldhamud/player/a/
/****************************************************************************
 *   _______  _        ______            _______  _______           ______   *
 *  (  ____ \( \      (  __  \ |\     /|(  ___  )(       )|\     /|(  __  \  *
 *  | (    \/| (      | (  \  )| )   ( || (   ) || () () || )   ( || (  \  ) *
 *  | (__    | |      | |   ) || (___) || (___) || || || || |   | || |   ) | *
 *  |  __)   | |      | |   | ||  ___  ||  ___  || |(_)| || |   | || |   | | *
 *  | (      | |      | |   ) || (   ) || (   ) || |   | || |   | || |   ) | *
 *  | (____/\| (____/\| (__/  )| )   ( || )   ( || )   ( || (___) || (__/  ) *
 *  (_______/(_______/(______/ |/     \||/     \||/     \|(_______)(______/  *
 *              +-+-+-+  +-+-+-+-+-+-+-+  +-+-+-+-+-+-+-+-+-+-+              *
 *              |T|h|e|  |O|a|k|l|a|n|d|  |C|h|r|o|n|i|c|l|e|s|              *
 *              +-+-+-+  +-+-+-+-+-+-+-+  +-+-+-+-+-+-+-+-+-+-+              *
 * ------------------------------------------------------------------------- *
 * EldhaMUD code (C) 2003-2005 by Robert Powell (Tommi)                      *
 * EldhaMUD Team: Celest, Altere and Krelowyn                                *
 * ------------------------------------------------------------------------- *
 *                                                                           *
 ****************************************************************************/
/****************************************************************************
 * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame      |   \\._.//   *
 * -----------------------------------------------------------|   (0...0)   *
 * SMAUG 1.4 (C) 1994, 1995, 1996, 1998  by Derek Snider      |    ).:.(    *
 * -----------------------------------------------------------|    {o o}    *
 * SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus,      |   / ' ' \   *
 * Scryn, Rennard, Swordbearer, Gorog, Grishnakh, Nivek,      |~'~.VxvxV.~'~*
 * Tricops and Fireblade                                      |             *
 * ------------------------------------------------------------------------ *
 * Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael        *
 * Chastain, Michael Quan, and Mitchell Tse.                                *
 * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,          *
 * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.     *
 * ------------------------------------------------------------------------ *
 *                     Housing Module Header File                           *
 ****************************************************************************
 * Author : Senir                                                           *
 * E-Mail : oldgaijin@yahoo.com                                             *
 ****************************************************************************/

/* So other snippets know this is installed */
#define HOUSING_CODE

/* Comment the line if you don't want support for house mobs */
#define HOUSE_MOBS

/* Uncomment the line below if you've installed a banking snippet */
#define BANK_INSTALLED

/* Uncomment the line below if you've changed your room flags into extended bitvectors*/
#define EXTENDED_ROOMS

/* Uncomment the line below and change the area if you want to search another area for free
 * rooms to turn into additional housing rooms, instead of having it search the area where
 * the original house room is.
*/ 
/*#define ADDED_ROOM_HOUSING_AREA "house.are" */

/* Location of housing directory */
#define HOUSE_DIR             "../houses/"
/* Location of housing list for loadup of houses */
#define HOUSE_LIST            "house.lst" 
/* Location of automated housing auction file */
#define HOMEBUY_FILE          HOUSE_DIR "homebuy.dat"
/* Location of house accessories file */
#define ACCESSORIES_FILE      HOUSE_DIR "homeaccessories.dat"

/* Minimum amount a house may go up on auction for */
#define MIN_HOUSE_BID 50000
/* Minimum amount an apartment may go up on auction for */
#define MIN_APARTMENT_BID 20000
/* Default percentage of current bid to be used for the bid increment */
#define DEFAULT_BID_INCREMENT_PERCENTAGE 3
/* Percentage of bid that will be taken from either the bidder or seller for a penalty */
#define PENALTY_PERCENTAGE 20

/* Cost of a player creating another room for their house using 'home addroom' */
#define ADDITIONAL_ROOM_COST 30000
/* Max number of rooms allowed for a player house, this includes the first room given the player */
#define MAX_HOUSE_ROOMS 10

#ifdef HOUSE_MOBS
/* Default price for a mob on accessories. Used by the house mobs. */
  #define DEFAULT_MOB_PRICE  5000
#endif

/*For automated housing auction*/
typedef struct  homebuy_data   HOMEBUY_DATA; 
struct homebuy_data
{
    HOMEBUY_DATA *prev;
    HOMEBUY_DATA *next;
    char *bidder;
    char *seller;
    int vnum;
    short incpercent; 
    int bid;    
    int endtime;
    bool apartment;  
}; 

HOMEBUY_DATA *first_homebuy;
HOMEBUY_DATA *last_homebuy;

/* For automated housing login messaging */
typedef struct lmsg_data LMSG_DATA;
struct lmsg_data
{
	LMSG_DATA *prev;
	LMSG_DATA *next;
	char *name;
	short  type;
};

LMSG_DATA *first_lmsg;
LMSG_DATA *last_lmsg;

/* For basic housing */
typedef struct  home_data   HOME_DATA; 
struct home_data
{
    HOME_DATA   *prev;
    HOME_DATA   *next;
	char        *name;
	bool        apartment;
    int         vnum[MAX_HOUSE_ROOMS];
}; 

HOME_DATA *first_home;
HOME_DATA *last_home;


/* For the accessories auction */
typedef struct  accessories_data   ACCESSORIES_DATA; 
struct accessories_data
{
    ACCESSORIES_DATA *prev;
    ACCESSORIES_DATA *next;
    int vnum;
    int price;
	bool mob;
}; 

ACCESSORIES_DATA *first_accessory;
ACCESSORIES_DATA *last_accessory;


/* Commands added for housing system. */
DECLARE_DO_FUN( do_accessories); /* Only command for housing accessories.*/
DECLARE_DO_FUN( do_gohome);      /* Command for a player to be instantly transported to their residence.*/
DECLARE_DO_FUN( do_homebuy);     /* Main housing auction command.*/
DECLARE_DO_FUN( do_house);       /* House personalization command and also immortal command to manually */
                                 /* edit residences.*/
DECLARE_DO_FUN( do_residence);   /* Command to list current houses and their stats.*/
DECLARE_DO_FUN( do_sellhouse);   /* Player command to sell their residence and place it on auction.*/

/* Functions for basic housing functionality and functionality of the house command. */
void save_residence(ROOM_INDEX_DATA *location);
bool set_house( CHAR_DATA *ch, int vnum, bool apartment);
bool remove_house( CHAR_DATA *ch);
bool add_room( HOME_DATA *homedata, ROOM_INDEX_DATA *location, char *argument);
bool give_key( CHAR_DATA *ch, int vnum);
void fwrite_house(HOME_DATA *homedata);
void load_homedata();
bool load_house_file( char *name );
void update_house_list( );
int fread_house( FILE *fp );
void save_house_by_vnum(int vnum);

/* Functions for accessories functionality */
void save_accessories();
void load_accessories();
void fread_accessories( FILE *fp );

/* Functions for housing auction functionality */
bool add_homebuy( CHAR_DATA *seller, int vnum, bool apartment, int price);
bool remove_homebuy(HOMEBUY_DATA *tmphome);
void save_homebuy();
void load_homebuy();
void fread_homebuy( FILE *fp );
void homebuy_update();
bool check_parse_name( char *name, bool newchar ); /* Used from comm.c to prevent /dev/null bug */
CHAR_DATA *load_player( char *name );
void logoff( CHAR_DATA *ch );
void fread_loginmsg( FILE *fp );
void add_loginmsg( char *name, short type);
void check_loginmsg(CHAR_DATA *ch);