/* -*- LPC -*- */ /* * $Locker: $ * $Id: sneak.c,v 1.1 1998/01/06 04:20:30 ceres Exp $ * $Log: sneak.c,v $ * Revision 1.1 1998/01/06 04:20:30 ceres * Initial revision * */ /** * This is the effect skelton docs. This effect * has a classification of "covert.sneaking". * <p> * Describe the arguments in here. * <p> * This effect has a shadow associated with it. * @classification covert.sneaking * @see help::effects */ #include "path.h" #include <effect.h> #define COST_PER_ROUND 3 /** @ignore yes */ void beginning( object player, int lev ) { //tell_object( player, "You will now attempt to move stealthily.\n" ); player->start_sneaking(lev); player->submit_ee( "decrease_points", ({ 10, 10 }), EE_CONTINUOUS ); } /* beginning() */ void restart( object player ) { player->submit_ee( 0, 0, EE_REMOVE ); } /* restart() */ /** @ignore yes */ void merge_effect( object player, int old, int lev ) { player->start_sneaking(lev); return; } /** @ignore yes */ void end( object player ) { player->remove_hide_invis("sneaking"); if(query_verb() != "hide") player->remove_hide_invis("hiding"); } /* end() */ void decrease_points( object player ) { int level; if ( player->query_auto_loading() ) return; level = player->query_sneak_level(); if ( (int)player->query_specific_gp("covert") < (COST_PER_ROUND * level)) { tell_object(player, "You can't concentrate sufficiently to sneak " "anymore.\n"); player->submit_ee( 0, 0, EE_REMOVE ); return; } // yes, set_gp() is used deliberately to prevent huge gp tms // since this is continuous. player->set_gp(player->query_gp() - (COST_PER_ROUND * level)); } /** @ignore yes */ string query_classification() { return "covert.sneaking"; } /** @ignore yes */ string query_shadow_ob() { return SHADOWS +"sneak"; }