

#include <lib.h>
#include <position.h>
//#include "include/crawl.h"

inherit LIB_VERB;

static void create() {
    verb::create();
    SetVerb("crawl");
    SetRules("STR", "into STR");
    SetErrorMessage("Crawl in which direction?");
    SetHelp("Syntax: <crawl DIRECTION>\n"
      "        <crawl into PLACE>\n\n"
      "Moves you towards the direction you specify, or into the place "
      "you specify.  The command \"crawl into\" is synonymous with the "
      "\"enter\" command.");
}


mixed can_crawl_str(string str) {
    if( !environment(this_player()) ) return "You are nowhere.";
    if( (int)this_player()->GetStaminaPoints() <3 )
        return "You are too tired to crawl anywhere right now.";
    if(this_player()->GetPosition() != POSITION_LYING &&
      this_player()->GetPosition() != POSITION_SITTING){
        return "You can't crawl in your current position.";
    }
    return 1;
}

mixed can_crawl_into_str(string str) {
    if( !environment(this_player()) ) return "You are nowhere.";
    if( (int)this_player()->GetStaminaPoints() <3 )
        return "You are too tired right now.";
    if(this_player()->GetPosition() != POSITION_LYING &&
      this_player()->GetPosition() != POSITION_SITTING){
        return "You can't crawl in your current position.";
    }
    return 1;
}

mixed do_crawl_str(string str) {
    this_player()->AddStaminaPoints(-5);
    (mixed)environment(this_player())->eventGo(this_player(), str);
    return 1;
}

mixed do_crawl_into_str(string str) {
    object targ;
    str = remove_article(lower_case(str));
    targ = present(str,environment(this_player()));
    if(!targ) targ = present(str,this_player());
    if(!targ) return "That's not possible.";
    this_player()->AddStaminaPoints(-5);
    return targ->eventEnter(this_player(), str,"crawl");
}
//
