/* -*- LPC -*- */
/*
* $Locker: $
* $Id: ward.c,v 1.3 1998/12/15 06:34:06 mansarde Exp $
* $Log: ward.c,v $
* Revision 1.3 1998/12/15 06:34:06 mansarde
* Fixed a couple of bugs in merge_effect:
* 1) Tells players if the new ward is stronger.
* 2) Keeps the old ward, if it's stronger than the new one. (but
* updates the other args)
*
* Revision 1.2 1998/01/11 17:03:41 pinkfish
* fixed_up_the_extra_look_stuff,_tomake_them_ignored.
*
* Revision 1.1 1998/01/06 04:19:27 ceres
* Initial revision
*
*/
/**
* This effect protects an object by causing damage to anyone (except the
* warder) if they try to steal it. It has a classification of
* "ritual.object.warded".
* <p>
* Args are: ({ duration, damage, warder's name }) Note that the first
* argument is no longer used, and wards don't disappear after a time.
* <p>
* This effect has a shadow associated with it.
* @classification ritual.object.warded
* @see help::effects
*/
#include <effect.h>
/* args are ({ duration, damage, caster_name }) */
/** @ignore yes */
string query_classification() { return "ritual.object.warded"; }
/** @ignore yes */
string query_shadow_ob() { return "/std/shadows/object/ward"; }
string query_name() { return "priests ward"; }
int query_indefinite() { return 1; }
/** @ignore yes */
mixed beginning( object thing, mixed args, int id ) {
// thing->submit_ee( 0, args[ 0 ], EE_REMOVE );
thing->add_extra_look( this_object() );
tell_object( find_player( args[ 2 ] ),
(string)thing->the_short() + " is warded.\n" );
return args;
} /* beginning() */
/* simply use new args */
/** @ignore yes */
mixed merge_effect( object thing, mixed old_args, mixed new_args, int id ) {
switch (new_args[1] > old_args[1]) {
case 1:
tell_object(find_player( new_args[2] ),
"The ward on " + (string)thing->the_short() + " has been strengthened.\n");
return new_args;
default:
tell_object( find_player( new_args[ 2 ] ),
(string)thing->the_short() + " is still warded.\n" );
}
// Since the old ward was stronger, keep that, but update the rest of the args.
return ({ new_args[0], old_args[1], new_args[2] });
} /* merge_effect() */
void restart( object thing, mixed args, int id ) {
thing->add_extra_look( this_object() );
} /* restart() */
/** @ignore yes */
void end( object thing, mixed args, int id ) {
thing->remove_extra_look( this_object() );
} /* end() */
/** @ignore yes */
string extra_look( object thing ) {
return "It is warded.\n";
} /* extra_look() */