#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "utils.h"
#include "olc.h"
#include "recycle.h"
REDIT(redit_delete)
{
ROOM_INDEX_DATA *pRoomIndex;
ROOM_INDEX_DATA *pRoom;
EXIT_DATA *pExit;
BUFFER *buffer;
char buf[MAX_INPUT_LENGTH];
int iHash, door;
EDIT_ROOM(ch, pRoom);
pRoomIndex = pRoom;
if (get_trust(ch) < IMMORTAL) {
send_to_char("Only imps may delete rooms, sorry.", ch);
return FALSE;
}
if (pRoom->deleted) {
pRoom->deleted = FALSE;
send_to_char("Deletion mark removed.\n\r", ch);
return TRUE;
} else {
if (strcmp(argument, "room now")) {
send_to_char
("You must type 'delete room now' in order to remove an room permanently.\r\n",
ch);
return FALSE;
}
pRoom->deleted = TRUE;
sprintf(buf, "%s deleted room %ld.", ch->name, pRoom->vnum);
log_printf(buf);
send_to_char("{RRoom marked for deletion.\r\n{x", ch);
buffer = new_buf();
for (iHash = 0; iHash < MAX_KEY_HASH; iHash++) {
for (pRoom = room_index_hash[iHash]; pRoom;
pRoom = pRoom->next) {
for (door = 0; door < MAX_DIR; door++) {
if ((pExit = pRoom->exit[door])
&& pExit->u1.to_room->vnum == pRoomIndex->vnum
&& pExit->u1.to_room->deleted) {
sprintf(buf,
"Found door to this room at room %ld\r\n",
pRoom->vnum);
add_buf(buffer, buf);
}
}
}
}
page_to_char(buf_string(buffer), ch);
free_buf(buffer);
return TRUE;
}
return FALSE;
}
OEDIT(oedit_delete)
{
OBJ_INDEX_DATA *pObj;
ROOM_INDEX_DATA *pRoom;
RESET_DATA *pReset;
BUFFER *buffer;
char buf[MAX_INPUT_LENGTH];
int iHash;
int count = 0;
EDIT_OBJ(ch, pObj);
if (get_trust(ch) < IMMORTAL) {
send_to_char("Only imps may delete objects, sorry.\r\n", ch);
return FALSE;
}
if (pObj->deleted) {
pObj->deleted = FALSE;
send_to_char("Deletion mark removed.\n\r", ch);
return TRUE;
} else {
if (strcmp(argument, "object now")) {
send_to_char
("You must type 'delete object now' in order to remove an object permanently.\r\n",
ch);
return FALSE;
}
pObj->deleted = TRUE;
buffer = new_buf();
sprintf(buf,
"********** %s deleted object %ld ***********************",
ch->name, pObj->vnum);
log_printf(buf);
for (iHash = 0; iHash < MAX_KEY_HASH; iHash++) {
for (pRoom = room_index_hash[iHash]; pRoom;
pRoom = pRoom->next) {
for (pReset = pRoom->reset_first; pReset;
pReset = pReset->next) {
if (
(pReset->arg1 == pObj->vnum
&& (pReset->command == '0'
|| pReset->command == 'P'
|| pReset->command == 'G'
|| pReset->command == 'E'))) {
sprintf(buf,
"Deleting object %ld ( %s ) in room %ld.",
pObj->vnum, pObj->short_descr,
pRoom->vnum);
log_printf(buf);
add_buf(buffer, buf);
add_buf(buffer, "\r\n"); /*
* guh. log_printf adds newline for ya
*/
count++;
}
}
}
}
sprintf(buf, "%d instances of item removed.\r\n", count);
add_buf(buffer, buf);
sprintf(buf, "{RObject Marked For Deletion.{x\n\r");
add_buf(buffer, buf);
page_to_char(buf_string(buffer), ch);
free_buf(buffer);
}
return TRUE;
}
MEDIT(medit_delete)
{
MOB_INDEX_DATA *pMob;
ROOM_INDEX_DATA *pRoom;
RESET_DATA *pReset;
BUFFER *buffer;
char buf[MAX_INPUT_LENGTH];
int iHash;
int count = 0;
EDIT_MOB(ch, pMob);
if (get_trust(ch) < IMMORTAL) {
medit_show(ch, "");
send_to_char("Only imps may delete mobiles, sorry.\r\n", ch);
return FALSE;
}
if (pMob->deleted) {
pMob->deleted = FALSE;
medit_show(ch, "");
send_to_char("Deletion mark removed.\n\r", ch);
return TRUE;
} else {
if (strcmp(argument, "mob now")) {
medit_show(ch, "");
send_to_char
("You must type 'delete mob now' in order to remove an object permanently.\r\n",
ch);
return FALSE;
}
pMob->deleted = TRUE;
buffer = new_buf();
sprintf(buf,
"********** %s deleted mobile %ld ***********************",
ch->name, pMob->vnum);
log_printf(buf);
for (iHash = 0; iHash < MAX_KEY_HASH; iHash++) {
for (pRoom = room_index_hash[iHash]; pRoom;
pRoom = pRoom->next) {
for (pReset = pRoom->reset_first; pReset;
pReset = pReset->next) {
if (pReset->arg1 == pMob->vnum
&& pReset->command == 'M') {
sprintf(buf,
"Deleting mobile %ld ( %s ) in room %ld.",
pMob->vnum, pMob->short_descr,
pRoom->vnum);
log_printf(buf);
add_buf(buffer, buf);
add_buf(buffer, "\r\n"); /*
* guh. log_printf() adds newline for ya
*/
count++;
}
}
}
}
sprintf(buf, "%d instances of mobile removed.\r\n", count);
add_buf(buffer, buf);
sprintf(buf, "{RMobile Marked For Deletion. *snif*{x\n\r");
add_buf(buffer, buf);
page_to_char(buf_string(buffer), ch);
free_buf(buffer);
}
return TRUE;
}