mud/lib/domains/town/room/well1.c
2020-09-06 05:43:07 -07:00

89 lines
2.8 KiB
C

#include <lib.h>
inherit LIB_ROOM;
int humidity = 0;
string GetDryDesc(){
string ret = "This is the bottom of the old town well. It is quite dark "+
"and unpleasant down here. Years of disuse have provided a haven for "+
"vermin, dirt, and dust here. A service door of some kind is set in "+
"the west wall here.\n%^GREEN%^There is a lever set in the wall here."+
"%^RESET%^";
return ret;
}
string GetWetDesc(){
string ret = "This is the bottom of the old town well. It is quite dark "+
"and humid down here. A service door of some kind is set in "+
"the west wall here.\n%^GREEN%^There is a lever set in the wall here."+
"%^RESET%^";
return ret;
}
string GetWellDesc(){
string ret;
if(humidity) ret = GetWetDesc();
else ret = GetDryDesc();
return ret;
}
static void create() {
room::create();
SetClimate("indoors");
SetAmbientLight(0);
SetShort("Town Well");
SetLong( (: GetWellDesc :) );
SetItems( ([
({ "bottom","well" }) : "Dirty, musty, "
"and unpleasant.",
"haven" : "A nice place for vermin.",
({"dirt","dust"}) : "There's plenty of that "
"here. Empty wells rarely get much "
"priority on cleaning day.",
({"vermin","rats","bugs"}) : "Looks "
"like they're hiding from you at the "
"moment."
]) );
SetInventory(([
"/domains/town/obj/well_lever" : 1,
]));
SetExits( ([
"up" : "/domains/town/room/south_road1",
"west" : "/domains/town/room/well2",
]) );
SetDoor("west", "/domains/town/doors/welldoor1.c");
SetFlowLimit(1);
}
void init(){
::init();
}
int eventCompleteQuest(object ob){
string *quests;
quests = ob->GetQuests();
if(ob && !ob->GetQuest("Town Well Quest")){
ob->AddQuest("the Plumber","Town Well Quest");
tell_player(ob, "%^BOLD%^%^RED%^You have solved the Town Well Quest.");
tell_player(ob, "%^BOLD%^%^RED%^Congratulations!");
tell_player(ob, "%^BOLD%^%^RED%^You are awarded 7 quest points and "+
"1500 experience points.");
ob->AddQuestPoints(7);
ob->AddExperiencePoints(1500);
}
return 1;
}
int eventReceiveObject(object ob){
if(base_name(ob) == LIB_FLOW && !humidity){
object player;
mixed wheel = objects((: base_name($1) ==
"/domains/town/obj/waterwheel" && clonep($1) :));
if(sizeof(wheel)) wheel = wheel[0];
if(objectp(wheel)) player = wheel->GetTurner();
if(player) eventCompleteQuest(player);
humidity = 1;
SetItems(([]));
}
return ::eventReceiveObject(ob);
}