/* /lib/events/dig.c
* From the Dead Souls V Object Library
* Handles things that can be dug
* Created by Descartes of Borg 961231
* Version: @(#) dig.c 1.1@(#)
* Last modified: 97/01/01
*/
private static mixed Dig = 0;
// abstract methods
string GetShort();
// end abstract methods
mixed GetDig() {
return Dig;
}
int RemoveDig() {
Dig = 0;
return 1;
}
mixed SetDig(mixed val) {
if( !stringp(val) && !arrayp(val) && !functionp(val) ) {
error("Bad argument 1 to SetDig().\n\tExpected: string or function "
"or mixed array, Got: " + typeof(val) + "\n");
}
return (Dig = val);
}
mixed CanDig(object who) {
if( !Dig ) {
return 0;
}
else {
return 1;
}
}
mixed eventDig(object who, object tool) {
mixed val = Dig;
if( arrayp(val) ) {
val = val[query_night()];
}
if( stringp(val) ) {
environment(who)->eventPrint(who->GetName() + " digs " +
GetShort() + " with " +
tool->GetShort() + ".", who);
who->eventPrint(val);
}
else {
return evaluate(val, who, tool);
}
}
mixed direct_dig_obj_with_obj() {
return CanDig(this_player());
}