/* -*- LPC -*- */
/*
* $Locker: $
* $Id: align.c,v 1.10 2002/09/11 04:25:30 pinkfish Exp $
*
*
*/
/* Added no teleport property- 26-06-98- Shalla */
/* New room to allow new players to set their alignment when they start the
game. Ceres
*/
#include "path.h"
inherit "/std/room/basic_room";
inherit PATH+"common";
object _wlever;
object _blever;
object _glever;
int do_pull(object lever);
void setup() {
object sign;
set_zone("Newbie");
set_short("alignment room" );
set_light( 75 );
add_property("no teleport", 1);
set_long( "This is a small, bare room that is quite empty apart from "
"a lever stuck onto each of three walls and a small wooden "
"sign placed in the centre of the room.\n"
"A door to the east leads back to the foyer.\n");
add_item(({"west wall", "south wall", "east wall"}),
"A plain, flat wall with a lever sticking out of it.");
sign=add_sign("A sign marked 'alignment'.\n",
FOYER->format_sign(
"Alignment is how good or evil you are. This changes gradually "
"depending on the things you do. Because it changes so slowly "
"you can choose to start out with a good, neutral or evil "
"alignment. To become evil, pull the black lever, to become "
"good pull the white lever, and to stay neutral don't pull "
"either lever, or pull the grey lever if you have already pulled "
"one of the other ones.\n"),0,"sign","general");
sign->set_short("sign");
sign->add_adjective("wooden");
/* Make it so you cannot godmother out of here */
add_property("no godmother", 1);
add_exit( "foyer", PATH + "foyer", "door");
add_alias( "east", "foyer");
room_chat(({10, 40, ({"A voice which seems to come from the black lever "
"says: Don't be a goody-goody, pull me!",
"A voice which seems to come from the white lever "
"says: You should be nice, pull me!",
"A voice which seems to come from the grey lever "
"says: It's all about balance in the end."})}));
}
void init() {
if (_wlever) {
this_player()->add_command("pull", _wlever, "<direct:object>",
(: do_pull(_wlever) :));
}
if (_blever) {
this_player()->add_command("pull", _blever, "<direct:object>",
(: do_pull(_blever) :));
}
if (_glever) {
this_player()->add_command("pull", _glever, "<direct:object>",
(: do_pull(_glever) :));
}
::init();
}
void reset() {
if(!_wlever) {
_wlever = clone_object("/std/object");
_wlever->set_name("lever");
_wlever->add_adjective("white");
_wlever->set_short("white lever");
_wlever->set_long("This is a lever which is set into the wall. It "
"radiates a soft white glow. The closer you stand "
"to it the more peaceful you feel.\n");
_wlever->reset_get();
_wlever->add_property("there", "on the east wall");
_wlever->move(this_object());
}
if(!_blever) {
_blever = clone_object("/std/object");
_blever->set_name("lever");
_blever->add_adjective("black");
_blever->set_short("black lever");
_blever->set_long("This is a lever which is set into the wall. It "
"is pure black and emanates a deep, blood-red glow. "
"The closer you get to it the more angry and hateful "
"you feel.\n");
_blever->reset_get();
_blever->add_property("there", "on the west wall");
_blever->move(this_object());
}
if(!_glever) {
_glever = clone_object("/std/object");
_glever->set_name("lever");
_glever->add_adjective("grey");
_glever->set_short("grey lever");
_glever->set_long("This is a lever which is set into the wall. It "
"is a dull grey and very boring.\n");
_glever->reset_get();
_glever->add_property("there", "on the south wall");
_glever->move(this_object());
}
}
int do_pull(object lever) {
int align;
if(lever == _glever) {
add_succeeded_mess(({ "$N $V $I and feel an overwhelming urge to do "
"absolutely nothing about the world's problems.\n",
"$N $V $I and suddenly looks very apathetic.\n" }),
({ _glever }));
this_player()->set_al(0);
return 1;
}
align = 300 + random(400);
if(lever == _wlever) {
align = -align;
}
this_player()->set_al(align);
if(lever == _wlever) {
add_succeeded_mess(({ "$N $V $I and suddenly feel$s like hugging "
"everyone.\n",
"$N $V $I and looks bright and cheery.\n" }),
({ _wlever }));
} else {
add_succeeded_mess(({ "$N $V $I and get a sudden urge to pull the "
"wings off butterflies and torture small furry creatures.\n",
"$N $V $I and a dark scowl crosses $p face.\n" }),
({ _blever }));
}
return 1;
}