/****************************************************************************
* ResortMUD Version 5.0 was mainly programmed by Ntanel, Garinan, Josh, *
* Badastaz, Digifuzz, Senir, Kratas, Scion, Shogar and Tagith. *
* ------------------------------------------------------------------------ *
* Copyright (C) 1996 - 2001 Haslage Net Electronics: MudWorld of Lorain, *
* Ohio. ALL RIGHTS RESERVED See /doc/RMLicense.txt for more details. *
****************************************************************************/
/****************************************************************************
* [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
/* 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 "Mortal Homes"
/* Location of housing directory */
#define HOUSE_DIR "../homes/"
/* Location of housing list for loadup of houses */
#define HOUSE_LIST HOUSE_DIR "homes.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 500
/* Minimum amount an apartment may go up on auction for */
#define MIN_APARTMENT_BID 200
/* Default percentage of current bid to be used for the bid increment */
#define DEFAULT_BID_INCREMENT_PERCENTAGE 2
/* Percentage of bid that will be taken from either the bidder or seller for a penalty */
#define PENALTY_PERCENTAGE 2
/* Cost of a player creating another room for their house using 'home addroom' */
#define ADDITIONAL_ROOM_COST 300
/* Max number of rooms allowed for a player house, this includes the first room given the player */
#define MAX_HOUSE_ROOMS 5
#ifdef HOUSE_MOBS
/* Default price for a mob on accessories. Used by the house mob extension snippet. */
#define DEFAULT_MOB_PRICE 50
#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( );
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 );