/* -*- LPC -*- */
/*
* $Locker: $
* $Id: chef_curse.c,v 1.1 1998/01/06 04:02:57 ceres Exp $
* $Log: chef_curse.c,v $
* Revision 1.1 1998/01/06 04:02:57 ceres
* Initial revision
*
*/
#include "path.h"
#define MY_NAME "chef curse"
/*
* The shout curse. Makes people unable to shout...
*/
object my_player;
int init_curse(object pl) {
string str, i;
if (sscanf((str = file_name(this_object())), "%s#%d", str, i) != 2) {
/* A class, not a clone. */
seteuid((string)"/secure/master"->creator_file(str));
return (int)clone_object(str)->init_curse(pl);
}
my_player = pl;
pl->add_curse(MY_NAME, str);
if (!shadow(pl, 1)) {
pl->remove_curse(MY_NAME);
return 0;
}
return 1;
} /* init_curse() */
/*
* No special requirements for removeing this curse...
*/
int query_remove(string name) {
if (name != MY_NAME)
return (int)my_player->query_remove(name);
return 1;
} /* query_remove() */
/*
* Called when the player logs on
*/
int player_start(object pl) {
object ob;
if (!pl)
pl = this_player();
ob = clone_object(HERE+"chef_curse");
ob->init_curse(pl);
} /* player_start() */
/*
* This gets called with the name of the curse we are getting rid of.
*/
int destruct_curse(string str) {
if (str == MY_NAME)
destruct(this_object());
else
my_player->destruct_curse(str);
} /* destruct_curse() */
int do_emote_all(string str) {
return (int)my_player->do_emote_all((HERE+"chef_mangle")->do_transmute(str));
} /* do_emote_all() */
int do_shout(string str) {
return (int)my_player->do_shout((HERE+"chef_mangle")->do_transmute(str));
} /* do_shout() */
int do_say(string str) {
return (int)my_player->do_say((HERE+"chef_mangle")->do_transmute(str));
} /* do_say() */
int do_loud_say(string str) {
return (int)my_player->do_loud_say((HERE+"chef_mangle")->do_transmute(str));
} /* do_loud_say() */
int do_emote(string str) {
return (int)my_player->do_emote((HERE+"chef_mangle")->do_transmute(str));
} /* do_emote() */
int do_tell(string str) {
string s1;
if (sscanf(str, "%s %s", s1, str) != 2)
return (int)my_player->do_tell(str);
return (int)my_player->do_tell(s1+" "+(HERE+"chef_mangle")->do_transmute(str));
} /* do_tell() */