#include <lib.h>
#include <rounds.h>

inherit LIB_VERB;

varargs void eventSmoke(object who, object what, string id);

static void create() {
    verb::create();
    SetVerb("smoke");
    SetRules("OBJ", "from OBJ");
    SetErrorMessage("Smoke what?");
    SetHelp("Syntax: <smoke THING>\n"
            "        <smoke from THING>\n\n"
            "Allows you to smoke a smokable item.\n"
            "See also: pack");
    SetSynonyms("puff");
}

mixed can_smoke_obj(string verb) { return this_player()->CanManipulate(); }

mixed can_smoke_from_obj(string verb) { return this_player()->CanManipulate(); }

    mixed do_smoke_obj(object ob) {
        if( (int)this_player()->GetInCombat() )
            this_player()->SetAttack(0, (: eventSmoke, this_player(), ob :),
                    ROUND_OTHER);
        else eventSmoke(this_player(), ob);
        return 1;
    }

    mixed do_smoke_from_obj(object ob, string id) {
        if( (int)this_player()->GetInCombat() )
            this_player()->SetAttack(0, (: eventSmoke, this_player(), ob, id :),
                    ROUND_OTHER);
        else eventSmoke(this_player(), ob, id);
        return 1;
    }

varargs void eventSmoke(object who, object what, string id) {
    return (mixed)what->eventSmoke(who, what);
}
