// $Id: fry.c,v 1.2 2000/05/13 00:36:36 taffyd Exp $
// Lightning zap - based on meteor code
// Wrytten by Rue and Drakkos
// 15/04/2000
#include <playerinfo.h>
#define LIGHTNING "%^WHITE%^BOLD%^lightning%^RESET%^"
#define THUNDER "%^RED%^BOLD%^thunder%^RESET%^"
inherit "/cmds/base";
mapping banned = ([
"macchirton" : "it's tradition.",
"que" : "you're an arse.",
]);
mixed cmd(string words) {
string player, reason;
object ob;
add_failed_mess("At Pinkfish's request this command has been disabled.\n" );
return 0;
if(member_array (this_player()->query_name(), keys(banned)) != -1)
{
return notify_fail("You cannot use 'fry', because " +
banned[this_player()->query_name()] + "\n");
}
if(!words || sscanf(words, "%s %s", player, reason ) != 2) {
return notify_fail("Usage: fry <player> <reason>\n");
}
if (!"/secure/master"->query_senior(this_player()->query_name()))
{
return notify_fail ("Only Senior Creators and above may smite players "
"with Righteous Vengeance!\n");
}
ob = find_player(this_player()->expand_nickname(player));
if(!ob) {
return notify_fail(player+" not found!\n");
}
write("Warning: This is not to be used for pranks. If you "
"do not have a valid reason to use this, do not use it! "
"Are you quite sure you wish to proceed? (y/n): ");
input_to("are_sure", ob, reason);
return 1;
} /* cmd() */
void are_sure(string str, object ob, string reason) {
string gender = "boy";
if(this_player()->query_gender() == 2) {
gender = "girl";
}
str = lower_case(str);
if(str[0] != 'y') {
write("There's a good "+gender+"! Now you go play nice with little "
+ ob->one_short() + "!\n");
return;
}
write("Would you like the whole Disc to be aware of the reason "
"for your ire? (y/n): ");
input_to("positive", ob, reason);
}
void positive (string str, object ob, string reason) {
str = lower_case(str);
if(str[0] != 'y') {
write ("Okay, we'll keep it between you and me.\n");
call_out("fry2", 5+random (3), ob);
}
else
{
write ("Bwah-ha-ha-ha!\n");
call_out("fry2", 5+random (3), ob, reason);
}
PLAYERINFO_HANDLER->add_entry(this_player(),
ob->query_name(),
"meteor",
reason);
log_file("SMITE", "%s: %s smote %s: %s\n", ctime(time()),
this_player()->query_short(), ob->query_short(), reason);
shout("The sky grows dark. Thick black clouds roll in.\n");
shout("A loud peal of " + THUNDER + " rumbles, shaking the ground, "
"and bolts of " + LIGHTNING + " flash through the sky!\n");
write("Smiting "+capitalize (ob->query_name()) +" with Righteous Vengeance!\n");
} /* are_sure() */
varargs void fry2(object ob, string reason) {
string *shout_mess = ({
"A bolt of ferocious " + LIGHTNING + " rips the sky in two! ",
"A peal of deafening " + THUNDER + " rumbles o'er the land! ",
"The clouds gather, spitting forth bolts of vicious " + LIGHTNING +
" from their folds! ",
"The clouds gather into great dark masses, spitting " + LIGHTNING +
" at the cowering Disc below! "
});
string *player_mess = ({
"A bolt of shimmering " + LIGHTNING + " spears the ground in front "
"of you!\n",
"A bolt of " + LIGHTNING + " pierces the air above you, melting "
"your eyebrows.\n",
"A bolt of " + LIGHTNING + " flares before your face, causing "
"little blobs of light to dance over your retinas.\n"
});
shout (shout_mess[random(sizeof(shout_mess))] + "It appears one "
"of the " + mud_name() + "'s creators is unhappy...\n");
tell_object(ob, player_mess[random(sizeof(player_mess))]);
call_out("fry3", 8 + random (10), ob, reason);
} /* nuke2() */
varargs void fry3(object ob, string reason)
{
string name;
string *TMs = ({
"You feel more able to spear players with bolts of lightning!\n",
"You feel more confident about your aim when trying to hit small "
"scurrying figures from Cori Celesti!\n",
"You manage to grasp one of the principles of creator justice "
"more firmly!\n",
});
string *shout_mess = ({
"Another spear of " + LIGHTNING + " lances through the clouds, "
"followed closely by a deafening peal of " + THUNDER + "!\n",
"A deafening roll of " + THUNDER + " followed by a bolt of brilliant "
+ LIGHTNING + " rolls over the " + mud_list() + ".\n",
"The clouds spit out another violent bolt of " + LIGHTNING + " as "
+ THUNDER + " shatters the relative peace of the " + mud_list() + ".\n"
});
string *player_mess = ({
"A bolt of " + LIGHTNING + " strikes you and sends you into the "
"%^RED%^oblivion%^RESET%^ of the real world!\n",
"A bolt of " + LIGHTNING + " pierces the skies and strikes you! "
"%^RED%^Zzzzzot!%^RESET%^\n",
"A bolt of " + LIGHTNING + " spears down from the sky and %^RED%^"
"smites%^RESET%^ you!\n",
});
/*
No point actually putting this through the tasker since it's only
supposed to be a joke anyway. :-P
*/
if (random (100) > 80)
{
tell_object (this_player(), "The " + LIGHTNING + " blasts " + ob->short() +
" into oblivion!\n");
tell_object (this_player(), "%^YELLOW%^%^BOLD%^" + TMs[random(sizeof(TMs))]
+ "%^RESET%^");
this_player()->add_skill_level ("fighting.combat.range.thrown", 1);
}
shout(shout_mess[random(sizeof(shout_mess))]);
if (this_player()->query_invis())
{
name = "Someone";
}
else
{
name = this_player()->short();
}
if (reason)
{
shout(name + " shouts from the clouds: This is " + reason +
", " + ob->short() +"!\n");
}
else
{
shout(name + " cackles in the distance.\n");
}
tell_object(ob, player_mess[random(sizeof(player_mess))]);
ob->save();
ob->quit();
shout(ob->query_cap_name()+" was smote by " + name + "'s "
"lightning.\n"+ capitalize(ob->query_pronoun())+" is no more.\n");
shout ("The clouds roll back across the sky.");
} /* fry3() */