mud/lib/verbs/items/skin.c
2020-09-06 05:43:07 -07:00

76 lines
2.2 KiB
C

/* /verbs/items/skin.c
* From the Dead Souls Mud Library
* Verb for skinging things
* Created by Descartes of Borg 951030
* Version: @(#) skin.c 1.2@(#)
* Last modified: 97/01/01
*/
#include <lib.h>
#include <rounds.h>
#include <position.h>
inherit LIB_VERB;
string skin;
static void create() {
verb::create();
SetVerb("skin");
SetRules("STR with OBJ", "OBJ with OBJ");
SetErrorMessage("Skin with what? Is there anything in particular to skin?");
SetHelp("Syntax: <skin THING with TOOL>\n\n"
"Allows you to skin with skinning tools. Sometimes you may "
"be required to specify what it is you wish to skin. In "
"that case, you can use the thing field to specify what it is "
"you wish to skin.\n\n"
"See also: fillet");
}
static void eventSkin(object who, object tool, object target, object check) {
if( !who || check != environment(who) ) {
return;
}
if( !tool || (environment(tool) != who) ) {
who->eventPrint("You have lost your equipment.");
return;
}
skin = target->GetSkin();
if(skin){
// write( "You Skin a " + object->GetShort() + " with a " + tool->GetShort() + ".");
new(skin)->eventMove(environment(who));
}
}
varargs static void eventPrepareSkin(object who, object tool, object what) {
function f = (: eventSkin($(who), $(tool), $(what), environment($(who))) :);
if( this_player()->GetInCombat() ) {
send_messages("start", "$agent_name $agent_verb to skin with " +
tool->GetShort() + ".", who, 0, environment(who));
who->SetAttack(0, f, ROUND_OTHER);
}
else {
evaluate(f);
}
}
mixed can_skin_with_obj(object tool) {
if( this_player()->GetParalyzed() ) {
return "You cannot do anything!";
}
if( this_player()->GetPosition() != POSITION_STANDING ) {
return "skin when you are not standing?";
}
return this_player()->CanManipulate();
}
mixed can_skin_obj_with_obj(object corpse, object tool) {
return can_skin_with_obj(tool);
}
mixed do_skin_obj_with_obj(object what, object ob, string id) {
eventPrepareSkin(this_player(), ob, what);
return 1;
}