/* /lib/events/dig_with.c
* From the Dead Souls Object Library
* handles functions to allow something to dig
* Created by Descartes of Borg 951030
* Version: @(#) dig_with.c 1.3@(#)
* Last modified: 97/01/01
*/
#include <function.h>
varargs mixed CanBuryWith(object who, object what) {
int fp = functionp(environment(who)->GetBury());
if( !fp || (fp & FP_OWNER_DESTED) ) {
return "This is not a very good place for burying.";
}
return 1;
}
varargs mixed CanDigWith(object who, object what) {
if( what ) { // the parser will trigger CanDig() there
return 1;
}
else {
int fp = functionp(environment(who)->GetDig());
if( !fp || (fp & FP_OWNER_DESTED) ) {
return "This is not a very good place for that kind of digging.";
}
return 1;
}
}
mixed eventBuryWith(object who, object what) {
mixed tmp = environment(who)->eventBuryItem(who, this_object(), what);
if( tmp == 1 ) {
return tmp;
}
else {
who->eventPrint(tmp || "The burial did not work well.");
}
return 1;
}
varargs mixed eventDigWith(object who, object what) {
object target;
mixed tmp;
if( what ) {
target = what;
}
else {
target = environment(who);
}
tmp = target->eventDig(who, this_object());
if( tmp == 1 ) {
return tmp;
}
else {
who->eventPrint(tmp || "The digging did not work so well.");
return 1;
}
}
mixed direct_bury_str_with_obj(string str) {
if( environment() != this_player() ) {
return "#You must have it to dig with it!";
}
return CanBuryWith(this_player());
}
mixed direct_dig_with_obj() {
if( environment() != this_player() ) {
return "#You must have it to dig with it!";
}
return CanDigWith(this_player());
}
mixed direct_dig_str_with_obj(string what) {
if( environment() != this_player() ) {
return "#You must have it to dig with it!";
}
if( remove_article(lower_case(what)) != "hole" ) {
return "Dig a what?";
}
return CanDigWith(this_player());
}
mixed indirect_bury_obj_with_obj(object what) {
if( environment() != this_player() ) {
return "#You must have it to bury with it!";
}
return CanBuryWith(this_player(), what);
}
mixed indirect_dig_obj_with_obj(object what) {
if( environment() != this_player() ) {
return "#You must have it to dig with it!";
}
return CanDigWith(this_player(), what);
}