/* Do not remove the headers from this file! see /USAGE for more info. */
// The drink source module.
// Coded by Uae of Zork. 2/20/98.
//:MODULE
//This module picks up where m_fluid_source
//leaves off. It allows drinking from a source.
mixed drink_action = "$N $vdrink some $o from $o1.";
mixed fluid_disturb;
void remove_id( string array id... );
object is_source_of();
mixed get_fluid_disturb_action();
string query_primary_id();
string *query_id();
//:FUNCTION set_drink_action
//void set_drink_action( mixed x )
//x is a simple_action string or
//a function that is evaluated whenever
//this source of fluid is drunk from.
//x can contain $o to represent the fluid.
//$o1 can represent the drink source.
void set_drink_action( mixed x ){
if (!x) remove_id( "drink_source" );
drink_action = x;
}
int drink_from_it( mixed fluid ){
mixed taste_action;
object fluid_ob;
int cntinue =1;
fluid_ob = new( is_source_of() );
if (functionp( drink_action )) cntinue = evaluate( drink_action );
else this_body()-> simple_action
( drink_action, fluid_ob -> query_primary_name(), this_object() -> the_short() );
if (!cntinue) return 0;
fluid_disturb = get_fluid_disturb_action();
if (fluid_disturb)
{
if (functionp( fluid_disturb )) cntinue = evaluate( fluid_disturb );
else
this_body() -> my_action( fluid_disturb, fluid, this_object() );
};
if (!cntinue) return 0;
taste_action = fluid_ob -> get_taste_action();
if (taste_action)
{
if (functionp( taste_action )) return evaluate( taste_action) ;
this_body()-> my_action( taste_action, fluid_ob );
};
return 1;
}
int is_drink_source(){
return 1;
}
mixed direct_drink_obj(){
return "#You cannot drink an entire " + query_primary_id();
}
mixed direct_drink_str_from_obj( string fluid ){
if ( !member_array( fluid+"_source", query_id() )) return "You cannot drink "+fluid+" from that.\n";
return 1;
}
mixed indirect_drink_obj_from_obj()
{
return 1;
}
mixed direct_drink_from_obj()
{
return 1;
}