/* -*- LPC -*- */ /* * $Locker: $ * $Id: clock.c,v 1.6 2001/06/01 20:54:45 ceres Exp $ * * */ /** * The base file for clocks in player houses. * @author Ceres */ #include <move_failures.h> #include <position.h> inherit "/obj/clock"; inherit "/std/room/furniture/inherit/furniture_base"; /** @ignore yes */ void chime(string mess) { int *co_ords; if(environment(this_object())) { co_ords = (int *)environment(this_object())->query_co_ord(); "/obj/handlers/broadcaster"->broadcast_event(users(), co_ords, mess, 20, 1, 0 ); tell_room(environment(this_object()), mess); } } /* chime() */ void create() { do_setup++; clock::create(); add_alias( "furniture" ); add_plural( "furniture" ); set_opaque(); furniture_base::create(); do_setup--; if ( !do_setup ) { this_object()->setup(); } } /* create() */ private int do_real_move(mixed dest, string messin, string messout) { return clock::move(dest, messin, messout); } /* do_real_move() */ /** @ignore yes */ /* Furniture is much harder to carry than just its weight, therefore we * multiply its weight by 5 to determine if someone can carry it. */ varargs int move( mixed dest, string messin, string messout ) { int i, t, f; object from; if(stringp(dest)) { dest = find_object(dest); } if (!move_check(dest)) { write(the_short() + " resists being picked up and shocks you slightly.\n"); return MOVE_INVALID_DEST; } if(!dest) { return MOVE_INVALID_DEST; } if(living(dest)) { t = (int)this_object()->query_complete_weight() * 2; if(!(dest->add_weight(t))) { return MOVE_TOO_HEAVY; } debug_printf("Added %d", t); } i = ::move(dest, messin, messout); if(i != MOVE_OK) { dest->add_weight(-t); return i; } from = environment(); if(from && living(from)) { f = (int)this_object()->query_complete_weight() * 2; from->add_weight(-f); } return i; } /* move() */ /** @ignore yes * This stops people dragging items away if they aren't allowed to. */ int get(mixed dest) { if(!move_check(dest)) { write("You feel it would be wrong to take " + the_short() + ".\n"); return 2; } return ::get(dest); } /** @ignore yes */ mixed query_static_auto_load() { if ( base_name(this_object()) + ".c" == __FILE__ ) { return int_query_static_auto_load(); } return ([ ]); } /* query_static_auto_load() */