/****************************************************************************
* [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 Source File *
****************************************************************************
* Author : Senir *
* E-Mail : oldgaijin@yahoo.com *
****************************************************************************/
#include "h/mud.h"
bool in_hash_table(const char *str);
void do_invite(CHAR_DATA *ch, char *argument)
{
char arg[MIL];
CHAR_DATA *victim;
argument = one_argument(argument, arg);
if((victim = get_char_world(ch, arg)) == NULL)
{
send_to_char("They aren't here.\r\n", ch);
return;
}
if(victim == ch)
{
send_to_char("Why are you trying to invite yourself?\r\n", ch);
return;
}
if(IS_NPC(ch) || IS_NPC(victim))
return;
if(ch->pcdata->lair == 0)
return;
if(ch->race == RACE_DRAGON)
{
ch_printf(ch, "You invite %s to your lair.\r\n", victim->name);
ch_printf(victim, "%s is wanting to invite you over to their %s lair.\r\n", ch->name, ch->pcdata->htown_name);
ch_printf(victim, "Type reject to refuse the invitation, otherwise you can now walk to their lair.\r\n");
}
else
{
ch_printf(ch, "You invite %s to your house.\r\n", victim->name);
ch_printf(victim, "%s is wanting to invite you over to their %s house.\r\n", ch->name, ch->pcdata->htown_name);
ch_printf(victim, "Type reject to refuse the invitation, otherwise you can now walk to their house.\r\n");
}
victim->pcdata->invite = ch->pcdata->lair;
}
void do_reject(CHAR_DATA *ch, char *argument)
{
char buf[MSL];
if(IS_NPC(ch))
return;
if(ch->pcdata->invite > 0)
{
ch->pcdata->invite = 0;
sprintf(buf, "&C%s has rejected an invite to a house.", ch->name);
announce(buf);
return;
}
}
void do_house(CHAR_DATA *ch, char *argument)
{
ROOM_INDEX_DATA *location = NULL;
switch (ch->substate)
{
default:
break;
case SUB_ROOM_DESC:
location = (ROOM_INDEX_DATA *)ch->dest_buf;
if(!location)
{
bug("%s", "redit: sub_room_desc: NULL ch->dest_buf");
location = ch->in_room;
}
if(VLD_STR(location->description))
STRFREE(location->description);
location->description = copy_buffer(ch);
stop_editing(ch);
ch->substate = ch->tempnum;
if(xIS_SET(ch->act, PLR_MUSIC))
send_to_char("!!SOUND(sound/queen.wav)\r\n", ch);
return;
}
if(IS_NPC(ch))
{
send_to_char_color("&CMob's don't have houses.\r\n", ch);
return;
}
if(!ch->pcdata->lair)
{
send_to_char_color("&CYou don't have a house.\r\n", ch);
return;
}
if(!(location = get_room_index(ch->pcdata->lair)))
{
send_to_char("Your house doesn't exist.\r\n", ch);
return;
}
if(ch->in_room != location)
{
send_to_char_color("&CThat's not your house.\r\n", ch);
return;
}
ch->tempnum = SUB_NONE;
ch->substate = SUB_ROOM_DESC;
ch->dest_buf = location;
start_editing(ch, location->description);
}