inherit OBJECT_OBJ; private int crumpled; /** * This method returns 1 to notify that we can be written on, * or 0 if we are crumpled and cannot be written on. * @return 1 if we can be written on, 0 if not */ int query_writeable() { return !crumpled; } /** @ignore yes */ void create() { do_setup++; ::create(); do_setup--; set_name("paper"); if( !function_exists("setup", TO ) ) { set_short("piece of writing paper"); add_adjective( ({"piece", "pieces", "of", "writing"}) ); set_long("This is a nice sheet of writing paper.\n"); } add_extra_look(TO); set_value(100); set_material("wood"); add_property("paper", 1 ); set_max_size(1000); if( !do_setup ) TO->setup(); } /* create() */ /** @ignore yes */ void init() { add_command("eat"); add_command("crumple"); add_command("untangle"); add_command("uncrumple"); } /* init() */ /** @ignore yes */ int do_eat() { move("/room/rubbish"); return 1; } /* do_eat() */ /** * This method queries whether or not this object is a paper. * @return always returns 1 */ int query_paper() { return 1; } /** * This method queries whether or not this paper is edible. * @return always returns 1 */ int query_edible() { return 1; } /** @ignore yes */ string short( int dark ) { if( crumpled && !query_property("being crumpled") ) return "crumpled up "+::short( dark ); return ::short( dark ); } /* short() */ /** @ignore yes */ string extra_look( object ob ) { if( ob != TO || !crumpled ) return ""; return "It appears to have been crumpled.\n"; } /* extra_look() */ /** @ignore yes */ int do_crumple() { if( crumpled ) { add_failed_mess("$D $V$0=is,are$V$ already crumpled.\n"); return 0; } add_property("being crumpled", 1, 2 ); crumpled = 1; return 1; } /* do_crumple() */ /** @ignore yes */ int do_untangle() { if( !crumpled ) { add_failed_mess("$D $V$0=is,are$V$ already $Vd.\n"); return 0; } crumpled = 0; return 1; } /* do_untangle() */ /** @ignore yes */ int do_uncrumple() { return do_untangle(); } /** @ignore yes */ string query_readable_message( object player, int ignore_labels ) { string ret; ret = ::query_readable_message( player, ignore_labels ); if( !crumpled || !ret ) return ret; return "Only bits of ink can be seen on the crumpled paper.\n"; } /* query_readable_message() */ /** @ignore yes */ mapping query_dynamic_auto_load() { mapping map; map = ([ "::" : ::query_dynamic_auto_load() ]); if( crumpled ) map["crumpled"] = crumpled; return map; } /* query_dynamic_auto_load() */ /** @ignore yes */ void init_dynamic_arg( mapping map ) { if( mapp(map) ) { ::init_dynamic_arg( map["::"] ); crumpled = map["crumpled"]; } } /* init_dynamic_arg() */ /** @ignore yes */ mapping query_static_auto_load() { if( base_name(TO) == __FILE__[0..<3] ) return int_query_static_auto_load(); return ([ ]); } /* query_static_auto_load() */ /** @ignore yes */ string *parse_command_adjectiv_id_list() { if( crumpled ) return ::parse_command_adjectiv_id_list() + ({"crumpled", "up"}); return ::parse_command_adjectiv_id_list(); } /* parse_command_adjectiv_id_list() */ /** @ignore yes */ mixed stats() { return ::stats() + ({ ({"crumpled", crumpled }) }); }