/* * AREA HEADER */ #define AREA_OPEN 0 #define AREA_WORTHLESS 1 #define AREA_ABANDONED 2 #define AREA_PROGRESSING 3 #define AREA_PENDING 4 #define AREA_BLANK 5 #define AREA_IMMORTAL 6 #define MAX_AREA_STATUS 7 #define MAX_AREA 200 extern area_data* area_list; extern const char* area_status [ MAX_AREA_STATUS ]; void load_area ( const char* ); void load_rooms ( FILE*, area_data* ); bool save_area ( area_data*, bool = FALSE ); bool set_area_file ( char_data*, char*, const char*& ); class Area_Data { public: area_data* next; room_data* room_first; char* file; const char* creator; const char* name; const char* help; bool modified; int nplayer; int level; int reset_time; int age; int status; int flags; Area_Data( ); }; room_data* get_room_index ( int, bool = FALSE ); bool can_edit ( char_data*, room_data*, bool = TRUE ); /* * EXIT HEADER */ #define MAX_DOOR 6 #define EX_ISDOOR 0 #define EX_CLOSED 1 #define EX_LOCKED 2 #define EX_SECRET 3 #define EX_PICKPROOF 4 #define EX_NO_SHOW 5 #define EX_NO_OPEN 6 #define EX_RESET_CLOSED 7 #define EX_RESET_LOCKED 8 #define EX_RESET_OPEN 9 #define EX_REQUIRES_CLIMB 10 #define EX_SEARCHABLE 11 #define MAX_DFLAG 12 extern const char* open_msg []; extern const char* close_msg []; extern const char* lock_door_msg []; extern const char* unlock_door_msg []; extern const char* knock_door_msg []; class Exit_Data : public Visible_Data { public: room_data* to_room; int exit_info; int key; int strength; int size; int direction; int light; const char* name; const char* keywords; Exit_Data ( ); ~Exit_Data ( ); virtual int Type( ) { return EXIT_DATA; } virtual const char* Name ( char_data*, int = 1, bool = FALSE ); virtual const char* Seen_Name ( char_data*, int = 1, bool = FALSE ); virtual const char* Keywords ( char_data* ); virtual bool Seen ( char_data* ); void Look_At ( char_data* ); }; int exits_prompt ( char*, char_data* ); void read_exits ( FILE*, room_data*, int ); void autoexit ( char_data* ); exit_data* exit_direction ( room_data*, int ); exit_data* reverse ( exit_data* ); int find_door ( char_data*, char*, bool = TRUE ); int find_door_always ( char_data*, char* ); exit_data* random_exit ( room_data* ); exit_data* random_open_exit ( room_data* ); exit_data* random_movable_exit ( char_data* ); bool open_door ( char_data*, exit_data* ); bool close_door ( char_data*, exit_data* ); bool lock_door ( char_data*, exit_data* ); bool unlock_door ( char_data*, exit_data* ); bool pick_door ( char_data*, exit_data* ); void bash_door ( char_data*, exit_data* ); void knock_door ( char_data*, exit_data* ); /* * LOCATIONS TYPES */ #define LOC_INDOORS 0 #define LOC_OUTDOORS 1 #define LOC_SUNLIGHT 2 #define LOC_FULLMOON 3 #define LOC_FOREST 4 #define LOC_UNDERWATER 5 #define MAX_LOCATION 6 bool allowed_location ( char_data*, int*, const char*, const char* ); extern flag_data location_flags; /* * ROOM HEADER */ #define ROOM_LIMBO 2 #define ROOM_CHAT 9 #define ROOM_BEGIN 904 #define ROOM_TEMPLE 904 #define ROOM_ALTAR 904 #define ROOM_CHIIRON_TEMPLE 904 #define ROOM_MEDIENNE_TEMPLE 101 #define ROOM_LLEWYRR_TEMPLE 19040 #define ROOM_DWARF_TEMPLE 27017 #define ROOM_DARKHAVEN_ALTAR 30010 #define ROOM_GNOME_CHURCH 33558 #define ROOM_PRISON 13 #define ROOM_DEATH 33751 #define ROOM_CRASH 33752 #define RFLAG_LIT 0 #define RFLAG_SAFE 1 #define RFLAG_INDOORS 2 #define RFLAG_NO_MOB 3 #define RFLAG_NO_RECALL 4 #define RFLAG_NO_MAGIC 5 #define RFLAG_NO_AUTOSCAN 6 #define RFLAG_ALTAR 7 #define RFLAG_ALTAR_GOOD 8 #define RFLAG_ALTAR_NEUTRAL 9 #define RFLAG_ALTAR_EVIL 10 #define RFLAG_BANK 11 #define RFLAG_SHOP 12 #define RFLAG_PET_SHOP 13 #define RFLAG_OFFICE 14 #define RFLAG_NO_PRAY 15 #define RFLAG_SAVE_ITEMS 16 #define RFLAG_UNDERGROUND 17 #define RFLAG_AUCTION_HOUSE 18 #define RFLAG_RESET0 19 #define RFLAG_RESET1 20 #define RFLAG_RESET2 21 #define RFLAG_STATUS0 22 #define RFLAG_STATUS1 23 #define RFLAG_STATUS2 24 #define RFLAG_NO_MOUNT 25 #define RFLAG_ARENA 26 #define RFLAG_DONATION 27 #define RFLAG_NO_PKILL 28 #define MAX_RFLAG 29 class Room_Data : public Thing_Data { public: exit_array exits; extra_array extra_descr; room_data* next; room_data* next_list; area_data* area; action_data* action; reset_data* reset; track_data* track; char* name; char* description; char* comments; int vnum; int room_flags; int sector_type; int distance; int counter; int size; Room_Data( ) { record_new( sizeof( room_data ), MEM_ROOM ); track = NULL; action = NULL; area = NULL; reset = NULL; vnum = -1; name = empty_string; description = empty_string; comments = empty_string; room_flags = 0; sector_type = 0; size = SIZE_DINOSAUR; distance = MAX_INTEGER; } virtual ~Room_Data( ) { record_delete( sizeof( room_data ), MEM_ROOM ); free_string( name, MEM_ROOM ); free_string( description, MEM_ROOM ); free_string( comments, MEM_ROOM ); } virtual int Type ( ) { return ROOM_DATA; } virtual int Light ( int = -1 ); const char* Location ( content_array* = NULL ); bool is_dark ( ); bool Seen ( char_data* ); }; void save_room_items ( room_data* ); void load_room_items ( void ); /* * TERRAIN HEADER */ #define SECT_INSIDE 0 #define SECT_CITY 1 #define SECT_FIELD 2 #define SECT_FOREST 3 #define SECT_HILLS 4 #define SECT_MOUNTAIN 5 #define SECT_WATER_SURFACE 6 #define SECT_UNDERWATER 7 #define SECT_RIVER 8 #define SECT_AIR 9 #define SECT_DESERT 10 #define SECT_CAVES 11 #define SECT_ROAD 12 #define SECT_SHALLOWS 13 #define MAX_TERRAIN 14 class Terrain_Type { public: const char* name; int movement_cost; }; extern const class terrain_type terrain [ MAX_TERRAIN ]; bool water_logged ( room_data* ); bool deep_water ( room_data* ); bool is_submerged ( char_data* );