// Include necessary file
#include "nw_i0_generic"

void main()
{
    // Check for a 1% chance to spawn enemies
    if (Random(100) + 1 == 1)
    {
        // Initialize and populate the enemy array
        array aEnemies;
        AddArrayString(aEnemies, "cas_enooze3");
        AddArrayString(aEnemies, "cas_enemyooze1");
        AddArrayString(aEnemies, "cas_enemyooze004");
        AddArrayString(aEnemies, "cas_enemyooze003");
        AddArrayString(aEnemies, "cas_enemyooze002");

        // Initialize and populate the waypoint array
        array aWaypoints;
        AddArrayString(aWaypoints, "WP_CAS_INVASIONPOINT1");
        AddArrayString(aWaypoints, "WP_CAS_INVASIONPOINT2");
        AddArrayString(aWaypoints, "WP_CAS_INVASIONPOINT3");
        AddArrayString(aWaypoints, "WP_CAS_INVASIONPOINT4");

        // Decide the number of enemies to spawn (up to 8)
        int nEnemiesToSpawn = Random(8) + 1;

        // Variables for loop
        int i;
        string sEnemy, sWaypoint;
        object oWaypoint;

        // Spawn the enemies
        for (i = 0; i < nEnemiesToSpawn; i++)
        {
            // Select a random enemy and waypoint
            sEnemy = GetArrayString(aEnemies, Random(GetArraySize(aEnemies)));
            sWaypoint = GetArrayString(aWaypoints, Random(GetArraySize(aWaypoints)));

            // Get the waypoint location object
            oWaypoint = GetObjectByTag(sWaypoint);

            // Spawn the enemy at the waypoint
            CreateObject(OBJECT_TYPE_CREATURE, sEnemy, GetLocation(oWaypoint));
        }

        // Delete the LOOT_ID variable from the boss
        DeleteLocalInt(OBJECT_SELF, "LOOT_ID");
    }
}
