mud/lib/domains/Praxis/party.c
2020-09-06 05:43:07 -07:00

199 lines
6.9 KiB
C

#include <lib.h>
inherit LIB_ROOM;
static private int __EntryAllowed, __PartyTime;
int query_party_time();
int x;
void create() {
room::create();
SetProperties( ([ "light":2, "indoors":1, "no attack":1,
"no teleport":1, "no steal":1, "no magic":1 ]) );
SetShort("%^MAGENTA%^%^BOLD%^In the volcano%^RESET%^");
SetLong(
"You are standing on a wide, circular platform, surrounded on "
"all sides by %^RED%^bubbling lava%^RESET%^. The platform floats "
"above the pool of lava at a safe distance, yet close enough for "
"you to feel the heat as the lava sometimes flares upward. "
"The platform is decorated with %^MAGENTA%^floating lights "
"%^RESET%^of %^BLUE%^varying %^ORANGE%^hues and %^RESET%^size. "
"Tables with refreshments have also been placed near the edges of "
"the platform. ");
SetItems(
([
({"platform", "wide platform", "circular platform"}) :
"The platform floats "
"above the pool of lava at a safe distance, yet close enough for "
"you to feel the heat as the lava sometimes flares upward. "
"The platform is decorated with %^MAGENTA%^floating lights "
"%^RESET%^of %^BLUE%^varying %^ORANGE%^hues and %^RESET%^size. "
"Tables with refreshments have also been placed near the "
"edges of the platform. ",
({"sides", "side", "edges", "edge"}) :
"The platform is surrounded on all sides by "
"%^RED%^bubbling lava.%^RESET%^",
({"pool", "pool of lava", "lava", "bubbling lava"}) :
(:this_object(), "look_lava":),
({"lights", "light", "floating lights", "floating light"}) :
(:this_object(), "look_lights":),
({"tables", "table"}) :
"The tables are covered with many delicious treats. "
"Bottles containing every conceivable combination "
"of drink possible are set up along the tables. As a matter-of-fact, you feel like pouring yourself a glass of frosty beverage right now. "
"You intuit that pour <drinkname> will provide you with a glass of your favorite "
"frosty beverage. ",
({"treats", "treat"}) : (:this_object(), "look_treat":)
]) );
SetExits( ([ "square" : "/domains/Praxis/square" ]) );
}
void init() {
room::init();
add_action("cmd_pour", "pour");
}
void start_party(string msg) {
if(base_name(previous_object()) != "/cmds/mortal/_mudparty") return;
if(query_party_time()) return;
message("shout", sprintf("Party announcement from %s: A %s party is now "
"being held to celebrate %s!", this_player()->query_cap_name(),
mud_name(), msg), users());
message("shout", "You have 2 minutes to type \"mudparty join\" in "
"order to join the party!", users());
__EntryAllowed = 1;
__PartyTime = 1;
call_out("deny_entry", 120);
}
static void deny_entry() { __EntryAllowed = 0; }
int query_party_time() { return __PartyTime; }
int query_entry_allowed() { return __EntryAllowed; }
string look_lava(string unused)
{
x=random(3)+1;
if(x==1)
{
message("info",
"%^RED%^A magnificent geyser of lava explodes into the air and "
"parts before striking the platform, sparing you certain death. "
"%^RESET%^",
environment(this_player()));
}
if(x==2)
{
message("info",
"%^RED%^A jet of flame falres from the lava and casts the room "
"in red-hued light.%^RESET%^", environment(this_player()));
}
if(x==3)
{
message("info",
"%^RED%^%^BOLD%^The platform shifts about as a large pillar of lava "
"gushes up from beneath it.%^RESET%^",
environment(this_player()));
}
if(x==4)
{
message("info",
"%^MAGENTA%^The lava changes hues and from %^RED%^red %^MAGENTA%^to "
"purple.%^RESET%^",
environment(this_player()));
}
return("The lava is constantly shifting and bubbling. You can see large "
"chunks of rock floating within it. ");
}
string look_lights(string unused)
{
x=random(3)+1;
if(x==1)
{
return(
"A pretty %^YELLOW%^yellow%^RESET%^ orb drifts near to you and casts "
"a cheery glow on you. ");
}
if(x==2)
{
return(
"A pretty %^BLUE%^blue%^RESET%^ orb drifts near to you and casts "
"a mellow glow on you. ");
}
if(x==3)
{
return(
"A pretty %^MAGENTA%^purple%^RESET%^ orb drifts near to you and casts "
"a purple glow over your body. ");
}
if(x==4)
{
return(
"A pretty %^RED%^red%^RESET%^ orb drifts near to you and casts "
"a rosy glow over your body. ");
}
}
int look_treat()
{
message("other_action",
this_player()->query_cap_name()+" eats and drinks "
"refreshments from the table after looking them over. ",
environment(this_player()), this_player());
message("my_action",
"After looking at the vast array of treats before you, you "
"decide to try and sample all of them! Punch, cookies, meats.."
"The sky is the limit!", this_player());
return 1;
}
int cmd_pour(string str) {
object ob;
string *words;
// if(!str) return notify_fail("Pour what?\n");
// if(this_player()->query_mp() < 10)
// return notify_fail("You are too weak for that!\n");
// words = explode(str, " ");
// if(words[0] == "A" || words[0] == "An") words[0] = lower_case(words[0]);
// ob = new(DRINK);
// ob->SetKeyName(words[sizeof(words)-1]);
// ob->SetMass(75);
// ob->SetId(explode(strip_colours(str), " "));
// if(sizeof(words) > 2)
// SetAdjectives(words[0..sizeof(words)-2]);
// ob->SetShort(implode(words, " "));
// ob->SetLong("A nice drink created by "+
// this_player()->query_cap_name()+".");
// ob->SetStrength(random(30)+2);
// ob->set_drink("$N drink $O.",
// "$N drinks $O poured by "+this_player()->query_cap_name()+".");
// this_player()->add_hp(-2);
// if(ob->move(this_player())) {
// message("my_action", "You cannot carry that!", this_player());
// ob->destruct();
// return 1;
// }
// message("my_action", "You pour "+implode(words, " ")+".", this_player());
// message("other_action", sprintf("%s pours %s.",
// this_player()->query_cap_name(), implode(words, " ")),
// this_object(), ({ this_player() }));
return 1;
}