/**************************************************************************** * [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 "megaplexex.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 1000000 /* Minimum amount an apartment may go up on auction for */ #define MIN_APARTMENT_BID 2000000 /* 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 417000 /* 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 50000 #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; sh_int 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; sh_int 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, sh_int type ); void check_loginmsg( CHAR_DATA * ch ); /*Function declarations from reset.c used for house mobs resets and removal of resets in general.*/ void delete_reset( AREA_DATA * pArea, RESET_DATA * pReset ); bool is_room_reset( RESET_DATA * pReset, ROOM_INDEX_DATA * aRoom, AREA_DATA * pArea );