/** * Doll * Mahray */ #define POSITIONS ({ "upwards", "backwards", "downwards", "sideways" }) inherit OBJECT_OBJ; int pos; void setup(){ set_name("doll"); set_short("wooden doll"); add_extra_look(TO); add_adjective("wooden"); add_alias("toy"); add_plural("toys"); set_long("This is a rather poorly made wooden doll. There are numerous " "marks where the carver has slipped, and it is dressed in cheap " "cotton clothing. Its arms and legs can be moved around to make " "it assume different positions.\n"); set_weight(15); set_value(250); } /* setup */ void init(){ TP->add_command("move", TO, "{arms|legs|limbs} [of|on] <direct:object:me>"); } /* init */ int do_move() { int i; i = random( sizeof( POSITIONS ) ); if( i == pos ) i = ( i + 1 ) % sizeof( POSITIONS ); pos = i; add_succeeded_mess("$N fiddle$s with the limbs of $D, and manage$s to " "move some of them to different positions.\n"); return 1; } /* do_move */ /** @ignore yes */ mapping query_dynamic_auto_load() { mapping map; if( !clonep(TO) ) return 0; map = ([ "::" : ::query_dynamic_auto_load() ]); if( pos ) map["pos"] = pos; return map; } /* query_dynamic_auto_load() */ /** @ignore yes */ void init_dynamic_arg( mapping map ) { if( map["::"] ) ::init_dynamic_arg( map["::"] ); if( map["pos"] ) pos = map["pos"]; } /* init_dynamic_arg() */ string extra_look() { return "The limbs of the wooden doll are pointing vaguely "+ POSITIONS[pos]+".\n"; } /* extra_look() */