ActionUseSkill(int, object, int, object)

Causes a creature to attempt to use a skill on another object.

void ActionUseSkill(
    int nSkill,
    object oTarget,
    int nSubSkill = 0,
    object oItemUsed = OBJECT_INVALID
);

Parameters

nSkill

SKILL_*

oTarget

Target to use the skill on

nSubSkill

SUBSKILL_* (Default: 0)

oItemUsed

Item to use in conjunction with the skill (Default: OBJECT_INVALID)


Description

Adding this action to the queue of a creature will make it attempt to use the specified skill. It will have no effect on the wrong sort of object - you cannot unlock a creature, or taunt a door.

The nSubSkill parameter is used for recovering, disarming and flagging traps.

oItemUsed must be a valid item appropriate to the skill. For example, a Healing Kit can be used with SKILL_HEAL. The creature must possess the item.

Use ActionUseSkill with the same parameter values on oTarget again to cause it to stop using a skill which it is currently using.



Remarks

Some skills can be hostile acts, and invite attacks of opportunity, e.g. SKILL_TAUNT.

Also note that most skills are not selectable, so really only SKILL_ANIMAL_EMPATHY, SKILL_DISABLE_TRAP, SKILL_HEAL, SKILL_OPEN_LOCK, SKILL_PICK_POCKET and SKILL_TAUNT.

The skills SKILL_HIDE, and SKILL_SEARCH can be toggled with SetActionMode.


Known Bugs

SKILL_SET_TRAP does not work at all with this function, and therefore NPC's can never ever set traps.

SKILL_PARRY also doesn't work, however, SetActionMode introduced means this would be redunant anyway.


Version

1.61

Example

// The NPC in conversation with a PC Attempts to heal a PC with a healing kit
void main()
{
    // Quick loop of inventory - get first BASE_ITEM_HEALERSKIT
    object oInventory = GetFirstItemInInventory();
    object oKit;
    while(GetIsObjectValid(oInventory))
    {
        // Get if healers kit
        if(GetBaseItemType(oInventory) == BASE_ITEM_HEALERSKIT)
        {
            oKit = oInventory;
            break;
        }
        oInventory = GetNextItemInInventory();
    }
    // Check oKit
    if(GetIsObjectValid(oKit))
    {
        // Use our heal skill.
        ActionUseSkill(SKILL_HEAL, GetPCSpeaker(), 0, oKit);
    }
}

See Also

functions: ActionUseFeat | GetHasSkill | GetSkillRank
categories: Action on Object Functions | Henchmen/Familiars/Summoned Functions | Talents/Skills/Feats Functions
constants: SKILL_* Constants | SUBSKILL_* Constants


 author: Iskander Merriman, editor: Jasperre, additional contributor(s): Pedro Vaz, Jasperre