/**
* This effect has a classification of "mudlib.gagged".
* <p>
* @author Shiannar
* @classification "mudlib.gagged"
* @see help::effects
*/
#include <effect.h>
#include "path.h"
/* @ignore yes */
string query_classification() { return "mudlib.gagged"; }
/* @ignore yes */
string query_shadow_ob() { return SHADOWS+"gagged"; }
/* @ignore yes */
void beginning(object player, mixed *arg) {
int duration;
string gagger;
string name;
duration = arg[0];
gagger = arg[1];
if(gagger) {
if(find_player(gagger)) {
name = find_player(gagger)->the_short();
}
else {
name = capitalize(gagger);
}
}
else {
name = "an unknown person or thing";
}
tell_object(player, "You have been gagged by "+name+" for "+
time_string(duration)+". Until the gag is removed, "
"you will be unable to shout or use channels.\n");
player->submit_ee(0, duration, EE_REMOVE);
} /* beginning() */
/* @ignore yes */
void end(object player, mixed *arg) {
string gagger;
string reason;
gagger = arg[1];
reason = arg[2];
tell_object(player, "Your gag has been lifted.\nPlease let this be "
"a lesson to you.\n");
if(find_player(gagger)) {
tell_object(find_player(gagger), "Your gag on "+
capitalize(player->query_name())+" for \""+reason+"\" has expired "
"or otherwise been removed.\n");
}
} /* end() */
mixed *merge_effect(object player, mixed *old_arg, mixed *new_arg) {
int old_time;
int new_time;
string gagger;
string name;
old_time = player->expected_tt();
new_time = new_arg[0];
gagger = new_arg[1];
if(old_time > new_time) {
if(gagger && find_player(gagger)) {
tell_object(find_player(gagger), capitalize(player->query_name())+
" has already been gagged for a longer duration by "+
capitalize(old_arg[1])+"!\n");
}
return old_arg;
}
if(gagger) {
if(find_player(gagger)) {
name = find_player(gagger)->the_short();
}
else {
name = capitalize(gagger);
}
}
else {
name = "an unknown person or thing";
}
tell_object(player, "Your gag has been extended by "+name+" to "+
time_string(new_time)+".\n");
player->submit_ee(0, new_time, EE_REMOVE);
return new_arg;
}