/*//////////////////////////////////////////////////////////////////////////////
 Script Name: pe_test
 Programmer: Philos
////////////////////////////////////////////////////////////////////////////////
    PEPS Plugin to help test errors.
    Gives gold, Heals, etc.
/*//////////////////////////////////////////////////////////////////////////////
#include "0i_main"
void main()
{
    // Get the last player to use targeting mode
    object oPC = GetLastPlayerToSelectTarget();
    string sTargetMode = GetLocalString(oPC, AI_TARGET_MODE);
    if(oPC == OBJECT_SELF && sTargetMode != "")
    {
        // Get the targeting mode data
        object oTarget = GetTargetingModeSelectedObject();
        vector vTarget = GetTargetingModeSelectedPosition();
        location lLocation = Location(GetArea(oPC), vTarget, GetFacing(oPC));
        object oAssociate = GetLocalObject(oPC, AI_TARGET_ASSOCIATE);
        // If the user manually exited targeting mode without selecting a target, return
        if(!GetIsObjectValid(oTarget) && vTarget == Vector())
        {
            return;
        }
        // Targeting code here.
        if(sTargetMode == "TEST_LEVEL_TARGET")
        {
            int nLevel = ai_GetCharacterLevels(oTarget);
            int nXPNeeded = StringToInt(Get2DAString("exptable", "XP", nLevel));
            int nXPToGive = nXPNeeded - GetXP(oTarget);
            GiveXPToCreature(oTarget, nXPToGive);
            ai_SendMessages(GetName(oTarget) + " has gained " + IntToString(nXPToGive) + " experience to gain 1 level.", AI_COLOR_YELLOW, oPC);
        }
        else if(sTargetMode == "TEST_GOLD_TARGET")
        {
            GiveGoldToCreature(oTarget, 10000);
            ai_SendMessages(GetName(oTarget) + " has gained 10,000 gold.", AI_COLOR_YELLOW, oPC);
        }
        else if(sTargetMode == "TEST_REST_TARGET")
        {
            ForceRest(oTarget);
            ai_SendMessages(GetName(oTarget) + " has rested.", AI_COLOR_GREEN, oPC);
        }
        else if(sTargetMode == "TEST_HEAL_TARGET")
        {
            int nHeal = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget);
            if(nHeal > 0)
            {
                effect eHeal = EffectHeal(nHeal);
                ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
                ai_SendMessages(GetName(oTarget) + " has been healed.", AI_COLOR_GREEN, oPC);
            }
        }
        else if(sTargetMode == "TEST_ID_TARGET") SetIdentified(oTarget, !GetIdentified(oTarget));
        else if(sTargetMode == "TEST_CLEAR_TARGET")
        {
            ClearAllActions(TRUE, oTarget);
        }
        else if(sTargetMode == "TEST_KILL_TARGET")
        {
            effect eDmg = EffectDamage(10000);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eDmg, oTarget);
            ai_SendMessages(GetName(oTarget) + " has been killed.", AI_COLOR_RED, oPC);
            // Set this variable on the player so PEPS can run the targeting script for this plugin.
            SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
            // Set Targeting variables.
            SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
            SetLocalString(oPC, AI_TARGET_MODE, "TEST_KILL_TARGET");
            EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE, MOUSECURSOR_KILL, MOUSECURSOR_NOKILL);
        }
        else if(sTargetMode == "TEST_REMOVE_TARGET")
        {
            SetIsDestroyable(TRUE, FALSE, FALSE, oTarget);
            DestroyObject(oTarget);
            ai_SendMessages(GetName(oTarget) + " has been removed!", AI_COLOR_RED, oPC);
        }
        else if(sTargetMode == "TEST_JUMP")
        {
            JumpToLocation(lLocation);
            int nIndex;
            object oAssociate;
            for(nIndex = 2; nIndex < 6; nIndex++)
            {
                oAssociate = GetAssociate(nIndex, oPC);
                if(oAssociate != OBJECT_INVALID) AssignCommand(oAssociate, JumpToLocation(lLocation));
            }
            for(nIndex = 1; nIndex < AI_MAX_HENCHMAN; nIndex++)
            {
                oAssociate = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, nIndex);
                if(oAssociate != OBJECT_INVALID) AssignCommand(oAssociate, JumpToLocation(lLocation));
            }
            // Set this variable on the player so PEPS can run the targeting script for this plugin.
            SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
            // Set Targeting variables.
            SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
            SetLocalString(oPC, AI_TARGET_MODE, "TEST_JUMP");
            EnterTargetingMode(oPC, OBJECT_TYPE_TILE, MOUSECURSOR_TRANSITION, MOUSECURSOR_NOWALK);
        }
        else if(sTargetMode == "TEST_KILL_AREA")
        {
            effect eDmg = EffectDamage(10000);
            object oKill = GetFirstObjectInShape(SHAPE_SPHERE, 6.67, lLocation, FALSE);
            while(oKill != OBJECT_INVALID)
            {
                ApplyEffectToObject(DURATION_TYPE_INSTANT, eDmg, oKill);
                oKill = GetNextObjectInShape(SHAPE_SPHERE, 6.67, lLocation, FALSE);
            }
        }
    }
    // Run all non-targeting code here, usually NUI events.
    else
    {
        object oPC = NuiGetEventPlayer();
        int nToken  = NuiGetEventWindow();
        string sEvent = NuiGetEventType();
        string sElem  = NuiGetEventElement();
        int nIndex = NuiGetEventArrayIndex();
        //string sWndId = NuiGetWindowId(oPC, nToken);
        //**********************************************************************
        //if(GetLocalInt(oPC, AI_NO_NUI_SAVE)) return;
        if(sEvent == "click")
        {
            if(sElem == "btn_level")
            {
                // Set this variable on the player so PEPS can run the targeting script for this plugin.
                SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
                // Set Targeting variables.
                SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
                SetLocalString(oPC, AI_TARGET_MODE, "TEST_LEVEL_TARGET");
                EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE , MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE);
            }
            else if(sElem == "btn_gold")
            {
                // Set this variable on the player so PEPS can run the targeting script for this plugin.
                SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
                // Set Targeting variables.
                SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
                SetLocalString(oPC, AI_TARGET_MODE, "TEST_GOLD_TARGET");
                EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE , MOUSECURSOR_CREATE, MOUSECURSOR_NOCREATE);
            }
            else if(sElem == "btn_rest")
            {
                // Set this variable on the player so PEPS can run the targeting script for this plugin.
                SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
                // Set Targeting variables.
                SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
                SetLocalString(oPC, AI_TARGET_MODE, "TEST_REST_TARGET");
                EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE , MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE);
            }
            else if(sElem == "btn_heal")
            {
                // Set this variable on the player so PEPS can run the targeting script for this plugin.
                SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
                // Set Targeting variables.
                SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
                SetLocalString(oPC, AI_TARGET_MODE, "TEST_HEAL_TARGET");
                EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE, MOUSECURSOR_HEAL, MOUSECURSOR_NOHEAL);
            }
            else if(sElem == "btn_id_item")
            {
                // Set this variable on the player so PEPS can run the targeting script for this plugin.
                SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
                // Set Targeting variables.
                SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
                SetLocalString(oPC, AI_TARGET_MODE, "TEST_ID_TARGET");
                EnterTargetingMode(oPC, OBJECT_TYPE_ITEM, MOUSECURSOR_HEAL, MOUSECURSOR_NOHEAL);
            }
            else if(sElem == "btn_clear")
            {
                // Set this variable on the player so PEPS can run the targeting script for this plugin.
                SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
                // Set Targeting variables.
                SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
                SetLocalString(oPC, AI_TARGET_MODE, "TEST_CLEAR_TARGET");
                EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE, MOUSECURSOR_MAGIC, MOUSECURSOR_NOMAGIC);
            }
            else if(sElem == "btn_kill")
            {
                // Set this variable on the player so PEPS can run the targeting script for this plugin.
                SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
                // Set Targeting variables.
                SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
                SetLocalString(oPC, AI_TARGET_MODE, "TEST_KILL_TARGET");
                EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE, MOUSECURSOR_KILL, MOUSECURSOR_NOKILL);
            }
            else if(sElem == "btn_remove")
            {
                // Set this variable on the player so PEPS can run the targeting script for this plugin.
                SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
                // Set Targeting variables.
                SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
                SetLocalString(oPC, AI_TARGET_MODE, "TEST_REMOVE_TARGET");
                EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE |
                                 OBJECT_TYPE_DOOR | OBJECT_TYPE_ITEM |
                                 OBJECT_TYPE_PLACEABLE, MOUSECURSOR_KILL, MOUSECURSOR_NOKILL);
            }
            else if(sElem == "btn_jump")
            {
                // Set this variable on the player so PEPS can run the targeting script for this plugin.
                SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
                // Set Targeting variables.
                SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
                SetLocalString(oPC, AI_TARGET_MODE, "TEST_JUMP");
                EnterTargetingMode(oPC, OBJECT_TYPE_TILE, MOUSECURSOR_TRANSITION, MOUSECURSOR_NOWALK);
            }
            else if(sElem == "btn_kill_area")
            {
                // Set this variable on the player so PEPS can run the targeting script for this plugin.
                SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_test");
                // Set Targeting variables.
                SetLocalObject(oPC, AI_TARGET_ASSOCIATE, OBJECT_SELF);
                SetLocalString(oPC, AI_TARGET_MODE, "TEST_KILL_AREA");
                SetEnterTargetingModeData(oPC, SPELL_TARGETING_SHAPE_SPHERE, 6.67, 0.0, 3);
                EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_KILL, MOUSECURSOR_NOKILL);
            }
        }
        else if(sEvent == "watch")
        {
            if(sElem == "txt_debug_creature")
            {
            }
        }
    }
}


