/* -*- LPC -*- */
/*
* $Locker: $
* $Id: em_ote.c,v 1.10 2001/11/22 17:53:05 taffyd Exp $
* $Log: em_ote.c,v $
* Revision 1.10 2001/11/22 17:53:05 taffyd
* Patched to allow double spaces only.,
*
* Revision 1.9 2000/03/05 16:34:35 mansarde
* added the same support for possessive emotes that i did with cre@
*
* Revision 1.8 1999/05/19 06:34:37 pinkfish
* Fix up some stuff.
*
* Revision 1.7 1999/05/04 22:56:36 pinkfish
* Fix it up to really capitlise npc names :)
*
* Revision 1.6 1999/05/04 22:23:51 pinkfish
* Fix it up so that npcs capitalize correctly.
*
* Revision 1.5 1999/05/04 22:22:12 ceres
* Forcibly unlocked by pinkfish
*
* Revision 1.4 1999/04/28 05:36:38 pinkfish
* Changed the emote length limit to only work on players.
*
* Revision 1.3 1999/04/26 22:16:32 ceres
* Modified to prevent abuses.
*
* Revision 1.2 1998/11/01 12:10:34 terano
* added a call too room->event_emote...
*
* Revision 1.1 1998/01/06 05:28:43 ceres
* Initial revision
*
*/
#include <library.h>
#include <player.h>
inherit "/cmds/base";
mixed cmd( string words ) {
string pad = " ";
if(!environment(this_player())) {
return notify_fail("You are in limbo, you cannot emote.\n");
}
if ( userp( this_player() ) && !this_player()->query_creator() ) {
if ( this_player()->query_property( "emote" ) ) {
LIBRARY->set_quest( (string)this_player()->query_name(), "emote" );
this_player()->remove_property( "emote" );
}
if ( !LIBRARY->query_quest_done( (string)this_player()->query_name(),
"emote" ) ) {
return notify_fail( NOT_ALLOWED );
}
// so we can remove the permission to do emotes.
if(this_player()->query_property("no emote")) {
return notify_fail(NOT_ALLOWED);
}
if ( (int)this_player()->adjust_sp( -EMOTE_COST ) < 0 ) {
return notify_fail( NO_POWER );
}
}
if ( !words || ( words == "" ) ) {
return notify_fail( "Syntax: emote <text>\n" );
}
words = strip_colours(words);
// have a go at replacing multiple spaces with a single one. This should
// stop anyone trying to format the emote to look as though it's an emote
// followed by a tell or somesuch.
words = replace(words, ({" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
// " ", " "}));
}) );
this_player()->adjust_time_left( -5 );
if (words[0..0] == "'") pad = "";
environment( this_player() )->event_emote( this_player(),
"$C$" + this_player()->one_short() + pad +
words +"\n" );
all_inventory( environment( this_player() ) )->
event_emote( this_player(), "$C$" + this_player()->one_short() +
pad + words + "%^RESET%^\n" );
write( "You emote: $C$"+
(string)this_player()->pretty_short( this_player() ) + pad + words +
"%^RESET%^\n" );
return 1;
} /* cmd() */