/*~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- ~ Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, ~ ~ Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. ~ ~ ~ ~ Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael ~ ~ Chastain, Michael Quan, and Mitchell Tse. ~ ~ ~ ~ Ack 2.2 improvements copyright (C) 1994 by Stephen Dooley ~ ~ ACK!MUD is modified Merc2.0/2.1/2.2 code (c)Stephen Zepp 1998 Ver: 4.3 ~ ~ ~ ~ In order to use any part of this PA Diku Mud, you must comply with ~ ~ both the original Diku license in 'license.doc' as well the Merc ~ ~ license in 'license.txt', and the Ack!Mud license in 'ack_license.txt'.~ ~ In particular, you may not remove any of these copyright notices. ~ ~ ~ ~ _______ _____ ~ ~ / __ /\ / ___ \ 222222 PA_MUD by Amnon Kruvi ~ ~ /______/ / / /___\ \ 2 PA_MUD is modified ~ ~ / _______/ / _______ \ 2 Ack!Mud, v4.3 ~ ~ /_/ /_/ \_\ 2 ~ ~ 2 ~ ~ 2222222 ~ ~ ~ ~ ~ ~ Years of work have been invested to create DIKU, Merc, Ack and PA. ~ ~ Please show your respect by following the licenses, and issuing ~ ~ credits where due. ~ ~ ~ ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-*/ #if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <stdio.h> #include <time.h> #include "ack.h" /* * All of the global linked lists, in one clump. Variables here, * declarations in lists.h * -- Altrag */ AREA_DATA * first_area = NULL; AREA_DATA * last_area = NULL; BAN_DATA * first_ban = NULL; BAN_DATA * last_ban = NULL; CHAR_DATA * first_char = NULL; CHAR_DATA * last_char = NULL; BUILDING_DATA * first_building = NULL; BUILDING_DATA * last_building = NULL; BUILDING_DATA * first_active_building = NULL; BUILDING_DATA * last_active_building = NULL; VEHICLE_DATA * first_vehicle = NULL; VEHICLE_DATA * last_vehicle = NULL; DESCRIPTOR_DATA * first_desc = NULL; DESCRIPTOR_DATA * last_desc = NULL; HELP_DATA * first_help = NULL; HELP_DATA * last_help = NULL; OBJ_DATA * first_obj = NULL; OBJ_DATA * first_bomb = NULL; OBJ_DATA * last_bomb = NULL; OBJ_DATA * last_obj = NULL; CONTROL_LIST * first_control_list = NULL; CONTROL_LIST * last_control_list = NULL; QUEUED_INTERACT_LIST * first_queued_interact = NULL; QUEUED_INTERACT_LIST * last_queued_interact = NULL; INFLUENCE_LIST * first_influence_list = NULL; INFLUENCE_LIST * last_influence_list = NULL; DL_LIST * first_brand = NULL; DL_LIST * last_brand = NULL; BOARD_DATA * first_board = NULL; BOARD_DATA * last_board = NULL; BUF_DATA_STRUCT * first_buf=NULL; BUF_DATA_STRUCT * last_buf = NULL; AREA_DATA * area_free = NULL; BAN_DATA * ban_free = NULL; CHAR_DATA * char_free = NULL; DESCRIPTOR_DATA * desc_free = NULL; HELP_DATA * help_free = NULL; OBJ_DATA * obj_free = NULL; OBJ_INDEX_DATA * oid_free = NULL; ROOM_INDEX_DATA * rid_free = NULL; PC_DATA * pcd_free = NULL; BUILD_DATA_LIST * build_free = NULL; INTERACT_DATA * interact_free = NULL; INFLUENCE_DATA * influence_free= NULL; CONTROL_DATA * control_data_free = NULL; CONTROL_LIST * control_list_free = NULL; QUEUED_INTERACT_LIST * queued_interact_free = NULL; INFLUENCE_LIST * influence_list_free = NULL; DL_LIST * dl_list_free = NULL; BRAND_DATA * brand_data_free = NULL; BOARD_DATA * board_free = NULL; MESSAGE_DATA * message_free = NULL; BUF_DATA_STRUCT * buf_free = NULL; HASH_ENTRY * hash_free = NULL; BUILDING_DATA * building_free = NULL; VEHICLE_DATA * vehicle_free = NULL; QUEUE_DATA * queue_free = NULL; BOMB_DATA * bomb_free = NULL; void (*area_free_destructor ) ( AREA_DATA * adat ) = NULL; void (*desc_free_destructor ) ( DESCRIPTOR_DATA * ddat ) = NULL; //void (*help_free_destructor ) ( HELP_DATA * hdat ) = NULL; void (*build_free_destructor ) ( BUILD_DATA_LIST * bddat ) = NULL; void (*interact_free_destructor ) ( INTERACT_DATA * idat ) = NULL; void (*influence_free_destructor) ( INFLUENCE_DATA * idat ) = NULL; void (*control_data_free_destructor ) ( CONTROL_DATA * cdat ) = NULL; void (*control_list_free_destructor ) ( CONTROL_LIST * cldat ) = NULL; void (*queued_interact_free_destructor ) ( QUEUED_INTERACT_LIST * qildat ) = NULL; void (*influence_list_free_destructor ) ( INFLUENCE_LIST * ildat ) = NULL; void (*dl_list_free_destructor ) ( DL_LIST * dldat ) = NULL; void (*board_free_destructor ) ( BOARD_DATA * bdat ) = NULL; void (*buf_free_destructor ) ( BUF_DATA_STRUCT * bdat ) = NULL; void (*hash_free_destructor ) ( HASH_ENTRY * hdat )= NULL; void help_free_destructor (HELP_DATA *hdat) { free_string(hdat->keyword); free_string(hdat->text); } void queue_free_destructor ( QUEUE_DATA * qdat ) { free_string(qdat->command); } void message_free_destructor ( MESSAGE_DATA * mdat ) { free_string(mdat->author); free_string(mdat->title); free_string(mdat->message); } void ban_free_destructor( BAN_DATA * bdat ) { free_string( bdat->name ); free_string( bdat->banned_by ); free_string( bdat->note ); } void oid_free_destructor( OBJ_INDEX_DATA * oidat ) { /* Free strings */ free_string(oidat->name); free_string(oidat->short_descr); free_string(oidat->description); free_string(oidat->image); } void brand_data_free_destructor( BRAND_DATA * bdat ) { free_string( bdat->branded); free_string( bdat->branded_by); free_string( bdat->dt_stamp); free_string( bdat->message); free_string( bdat->priority); } void pcd_free_destructor( PC_DATA * pcdat ) { sh_int cnt; free_string( pcdat->pwd ); free_string( pcdat->bamfin ); free_string( pcdat->room_enter ); free_string( pcdat->room_exit ); free_string( pcdat->bamfout ); free_string( pcdat->title ); free_string( pcdat->host ); free_string( pcdat->header ); free_string( pcdat->message ); free_string( pcdat->who_name ); free_string( pcdat->lastlogin ); for ( cnt = 0; cnt < MAX_IGNORES ; cnt++ ) { free_string( pcdat->ignore_list[cnt] ); } free_string( pcdat->load_msg ); free_string( pcdat->pedit_state ); for ( cnt = 0; cnt < 5 ; cnt++ ) { free_string( pcdat->pedit_string[cnt] ); } free_string( pcdat->email_address ); } void char_free_destructor( CHAR_DATA * cdat ) { free_string( cdat->name ); free_string( cdat->prompt ); free_string( cdat->old_prompt ); free_string( cdat->last_tell ); { int i; for ( i=0;i<5;i++ ) { free_string( cdat->alias[i] ); free_string( cdat->alias_command[i] ); } } } void obj_free_destructor( OBJ_DATA * odat ) { free_string( odat->owner ); free_string( odat->name ); free_string( odat->description ); free_string( odat->short_descr ); } void building_free_destructor( BUILDING_DATA * bdat ) { free_string( bdat->owned ); free_string( bdat->name ); free_string( bdat->attacker ); } void vehicle_free_destructor( VEHICLE_DATA * vdat ) { free_string( vdat->name ); free_string( vdat->desc ); } void bomb_free_destructor( BOMB_DATA *bdat ) { }