/* A tin of paint. */ inherit "/obj/vessel"; #define VOLUME 5000 private nosave string _colour; void setup() { set_name( "tin" ); set_short( "tin of paint" ); set_main_plural( "tins of paint"); add_adjective( ({ "tin", "of"})); add_alias(({"paint"})); set_long( "A tin of paint. It has a picture of a man with " "a big smile on his face painting a wall.\n"); set_leak_rate( 0 ); set_max_volume( VOLUME ); set_value( 30 ); set_weight( 10 ); set_max_weight( 30 ); } void setup_attribs() { set_short( "tin of " + _colour + " paint" ); set_main_plural( "tins of " + _colour + " paint"); add_adjective( ({ _colour})); set_long( "A tin of " + _colour + " paint. It has a picture of a man with " "a big smile on his face painting a wall.\n"); } void make_tin( string colour ) { object liquid; liquid = clone_object( LIQUID_OBJ ); liquid->set_name( "paint" ); liquid->set_short( colour + " paint" ); liquid->add_adjective(({colour })); liquid->set_amount( VOLUME ); liquid->set_continuous(); liquid->set_long( "This is " + colour + " paint, it's thick and gloopy.\n"); liquid->set_pile_name( "puddle" ); liquid->add_eat_effect( "/std/effects/ingested/poison", 10 ); liquid->move( this_object() ); set_closed(); _colour = colour; setup_attribs(); } /** @ignore yes */ void init() { ::init(); this_player()->add_command("paint", this_object(), "<indirect:object:here> with <direct:object>"); } int do_paint(mixed *in_dir, string direct, string indirect, mixed *args, string) { object *obs; obs = match_objects_for_existence("paint", this_object()); if(!query_volume() || !sizeof(obs)) { this_player()->add_failed_mess(this_object(), "$D appears to be empty.\n", ({ })); return 0; } if(query_closed()) { this_player()->add_failed_mess(this_object(), "$D is closed.\n", ({ })); return 0; } if(!sizeof(filter(this_player()->query_holding() - ({ 0 }), (: $1->id("paint brush") :)))) { this_player()->add_failed_mess(this_object(), "You must be holding a " "paint brush to paint the walls.\n", ({ })); return 0; } if(!function_exists("decorate_surface", environment(this_player()))) { this_player()->add_failed_mess(this_object(), "You can't $V the walls " "here.\n", ({ })); return 0; } if(!environment(this_player())->test_occupier(this_player()->query_name())) { this_player()->add_failed_mess(this_object(), "You don't own this house.\n", ({ })); return 0; } if(!environment(this_player())-> decorate_surface(indirect, "covered with " + obs[0]->query_short())) { this_player()->add_failed_mess(this_object(), "You can't $V the " + indirect + ".\n", ({ })); return 0; } remove_volume(query_volume()); this_player()->add_succeeded_mess(this_object(), "$N $V the " + indirect + " with $D using " "broad, smooth strokes.\n", ({ })); return 1; } /** @ignore yes */ mapping int_query_static_auto_load() { mapping tmp; tmp = ::int_query_static_auto_load(); return ([ "::" : tmp, "colour" : _colour, ]); } /* int_query_static_auto_load() */ /** @ignore yes */ mapping query_static_auto_load() { if ( base_name(this_object()) + ".c" == __FILE__ ) return int_query_static_auto_load(); return ([ ]); } /* query_static_auto_load() */ /** @ignore yes */ void init_static_arg(mapping args) { if (args["::"]) ::init_static_arg(args["::"]); if (!undefinedp(args["colour"])) _colour = args["colour"]; if(_colour) setup_attribs(); } /* init_static_arg() */