/*:://////////////////////////////////////////////
//:: Name Summon Monster - On Perception
//:: FileName SMP_AI_Summ_Perc
//:://////////////////////////////////////////////
    On Perception.

    Attacks the last person seen if it was an enemy. If it disappeared
    and was our target, we do another combat round.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/

#include "SMP_AI_INCLUDE"

void main()
{
    // Delcare major variables
    object oSelf = OBJECT_SELF;
    object oSeen = GetLastPerceived();
    object oMaster = GetMaster();
    int bHeard = GetLastPerceptionHeard();// If oSeen is NOW heard
    int bInaudible = GetLastPerceptionInaudible();// If oSeen is NOW not heard
    int bSeen = GetLastPerceptionSeen();//  If oSeen is NOW seen
    int bVanished = GetLastPerceptionVanished();//  If oSeen is NOW not seen
    int bEnemy = GetIsEnemy(oSeen);

    // Check if in combat
    if(!GetIsInCombat() && GetIsObjectValid(oSeen))
    {
        // Attack any enemy we see
        if(bEnemy)
        {
            if(bSeen || bHeard)
            {
                // Attack!
                SMPAI_SummonAttack(oSeen);
            }
            else if(bVanished || bInaudible)
            {
                if(GetLocalObject(oSelf, "SMPAI_LAST_TARGET") == oSeen)
                {
                    // Check area's. If they moved, and master is not in this area
                    // too, we follow
                    if(GetArea(oMaster) == GetArea(oSeen) &&
                       GetArea(oSeen) != GetArea(oSelf))
                    {
                        // Follow
                        ClearAllActions();
                        ActionMoveToObject(oSeen, TRUE);
                    }
                    else
                    {
                        // Reevaluate
                        SMPAI_SummonAttack();
                    }
                }
            }
        }
    }
}