//::///////////////////////////////////////////////
//:: Default: On Spawn In
//:: NW_C2_DEFAULT9
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Determines the course of action to be taken
    after having just been spawned in
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Oct 25, 2001
//:://////////////////////////////////////////////
#include "NW_O2_CONINCLUDE"
#include "NW_I0_GENERIC"

void main()
{
// OPTIONAL BEHAVIORS (Comment In or Out to Activate ) ****************************************************************************
     //SetSpawnInCondition(NW_FLAG_SPECIAL_CONVERSATION);
     //SetSpawnInCondition(NW_FLAG_SPECIAL_COMBAT_CONVERSATION);
                // This causes the creature to say a special greeting in their conversation file
                // upon Perceiving the player. Attach the [NW_D2_GenCheck.nss] script to the desired
                // greeting in order to designate it. As the creature is actually saying this to
                // himself, don't attach any player responses to the greeting.

     //SetSpawnInCondition(NW_FLAG_SHOUT_ATTACK_MY_TARGET);
                // This will set the listening pattern on the NPC to attack when allies call
     //SetSpawnInCondition(NW_FLAG_STEALTH);
                // If the NPC has stealth and they are a rogue go into stealth mode
     //SetSpawnInCondition(NW_FLAG_SEARCH);
                // If the NPC has Search go into Search Mode
     //SetSpawnInCondition(NW_FLAG_SET_WARNINGS);
                // This will set the NPC to give a warning to non-enemies before attacking

     //SetSpawnInCondition(NW_FLAG_SLEEP);
                //Creatures that spawn in during the night will be asleep.
     //SetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING);
     //SetSpawnInCondition(NW_FLAG_APPEAR_SPAWN_IN_ANIMATION);
     //SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS);
     //SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS);
                //This will play Ambient Animations until the NPC sees an enemy or is cleared.
                //NOTE that these animations will play automatically for Encounter Creatures.

    // NOTE: ONLY ONE OF THE FOLOOWING ESCAPE COMMANDS SHOULD EVER BE ACTIVATED AT ANY ONE TIME.
    //SetSpawnInCondition(NW_FLAG_ESCAPE_RETURN);    // OPTIONAL BEHAVIOR (Flee to a way point and return a short time later.)
    //SetSpawnInCondition(NW_FLAG_ESCAPE_LEAVE);     // OPTIONAL BEHAVIOR (Flee to a way point and do not return.)
    //SetSpawnInCondition(NW_FLAG_TELEPORT_LEAVE);   // OPTIONAL BEHAVIOR (Teleport to safety and do not return.)
    //SetSpawnInCondition(NW_FLAG_TELEPORT_RETURN);  // OPTIONAL BEHAVIOR (Teleport to safety and return a short time later.)

// CUSTOM USER DEFINED EVENTS
/*
    The following settings will allow the user to fire one of the blank user defined events in the NW_D2_DefaultD.  Like the
    On Spawn In script this script is meant to be customized by the end user to allow for unique behaviors.  The user defined
    events user 1000 - 1010
*/
    //SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT);        //OPTIONAL BEHAVIOR - Fire User Defined Event 1001
    //SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT);         //OPTIONAL BEHAVIOR - Fire User Defined Event 1002
    //SetSpawnInCondition(NW_FLAG_ATTACK_EVENT);           //OPTIONAL BEHAVIOR - Fire User Defined Event 1005
    //SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT);          //OPTIONAL BEHAVIOR - Fire User Defined Event 1006
    //SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT);        //OPTIONAL BEHAVIOR - Fire User Defined Event 1008
    //SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1003
    //SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT);      //OPTIONAL BEHAVIOR - Fire User Defined Event 1004
    //SetSpawnInCondition(NW_FLAG_DEATH_EVENT);            //OPTIONAL BEHAVIOR - Fire User Defined Event 1007

    int nScaleFactor = GetLocalInt(GetObjectByTag("TrashCan"), "nDifficultylevel");
    int nChallengeFactor = GetLocalInt(GetObjectByTag("TrashCan"), "nChallengelevel");
    location loc = GetLocation(OBJECT_SELF);
    int nRandom;

    nRandom = d8() + nChallengeFactor;
    if(nScaleFactor > 1 && nScaleFactor < 4 && nRandom > 9)
    {
        string sTag = GetTag(OBJECT_SELF);
        if (sTag == "ms_spawnpoint1")
        {
        CreateObject(OBJECT_TYPE_CREATURE, "orcelite001", loc, TRUE);
        DestroyObject(OBJECT_SELF);
        }
        if (sTag == "ms_spawnpoint2")
        {
        CreateObject(OBJECT_TYPE_CREATURE, "orcelite002", loc, TRUE);
        DestroyObject(OBJECT_SELF);
        }
        if (sTag == "ms_spawnlord1")
        {
        CreateObject(OBJECT_TYPE_CREATURE, "orcelite001", loc, TRUE);
        DestroyObject(OBJECT_SELF);
        }
        if (sTag == "ms_spawnlord2")
        {
        CreateObject(OBJECT_TYPE_CREATURE, "orcelite002", loc, TRUE);
        DestroyObject(OBJECT_SELF);
        }
    }
    nRandom = d2() + nChallengeFactor;
    if(nScaleFactor > 3 && nRandom > 11)
        {
        string sTag = GetTag(OBJECT_SELF);
        if (sTag == "ms_spawnpoint1")
        {
        CreateObject(OBJECT_TYPE_CREATURE, "orclord001", loc, TRUE);
        DestroyObject(OBJECT_SELF);
        }
        if (sTag == "ms_spawnpoint2")
        {
        CreateObject(OBJECT_TYPE_CREATURE, "orclord002", loc, TRUE);
        DestroyObject(OBJECT_SELF);
        }
        if (sTag == "ms_spawnelite1")
        {
        CreateObject(OBJECT_TYPE_CREATURE, "orclord001", loc, TRUE);
        DestroyObject(OBJECT_SELF);
        }
        if (sTag == "ms_spawnelite2")
        {
        CreateObject(OBJECT_TYPE_CREATURE, "orclord002", loc, TRUE);
        DestroyObject(OBJECT_SELF);
        }
    }


// DEFAULT GENERIC BEHAVIOR (DO NOT TOUCH) *****************************************************************************************
    SetListeningPatterns();    // Goes through and sets up which shouts the NPC will listen to.
    WalkWayPoints();           // Optional Parameter: void WalkWayPoints(int nRun = FALSE, float fPause = 1.0)
                               // 1. Looks to see if any Way Points in the module have the tag "WP_" + NPC TAG + "_0X", if so walk them
                               // 2. If the tag of the Way Point is "POST_" + NPC TAG the creature will return this way point after
                               //    combat.
    GenerateNPCTreasure(2);     //* Use this to create a small amount of treasure on the creature

// Modified By: Dalantriel Jul 22, 2002
// If a PC Banner exists at this outpost destroy it, otherwise move to it

    if(GetCurrentHitPoints(GetObjectByTag("pcbanner009")) > 0)
    {
    ActionAttack(GetObjectByTag("pcbanner009"));
    }
    else if(GetCurrentHitPoints(GetObjectByTag("pcbanner006")) > 0)
    {
    ActionAttack(GetObjectByTag("pcbanner006"));
    }
    else if(GetCurrentHitPoints(GetObjectByTag("pcbanner007")) > 0)
    {
    ActionAttack(GetObjectByTag("pcbanner007"));
    }
else if(GetCurrentHitPoints(GetObjectByTag("pcbanner008")) > 0)
    {
    ActionAttack(GetObjectByTag("pcbanner008"));
    }
else if(GetCurrentHitPoints(GetObjectByTag("pcbanner010")) > 0)
    {
    ActionAttack(GetObjectByTag("pcbanner010"));
    }
else if(GetCurrentHitPoints(GetObjectByTag("pcbanner003")) > 0)
    {
    ActionAttack(GetObjectByTag("pcbanner003"));
    }
else if(GetCurrentHitPoints(GetObjectByTag("pcbanner004")) > 0)
    {
    ActionAttack(GetObjectByTag("pcbanner004"));
    }
else if(GetCurrentHitPoints(GetObjectByTag("pcbanner005")) > 0)
    {
    ActionAttack(GetObjectByTag("pcbanner005"));
    }
else if(GetCurrentHitPoints(GetObjectByTag("pcbanner001")) > 0)
    {
    ActionAttack(GetObjectByTag("pcbanner001"));
    }
else if(GetCurrentHitPoints(GetObjectByTag("pcbanner002")) > 0)
    {
    ActionAttack(GetObjectByTag("pcbanner002"));
    }
else
{
ActionMoveToObject(GetObjectByTag("POST_ms_spawnmerchant001"));
}

}