//
// Spawn Check - Custom
//
int ParseFlagValue(string sName, string sFlag, int nDigits, int nDefault);
int ParseSubFlagValue(string sName, string sFlag, int nDigits, string sSubFlag, int nSubDigits, int nDefault);
object GetChildByTag(object oSpawn, string sChildTag);
object GetChildByNumber(object oSpawn, int nChildNum);
object GetSpawnByID(int nSpawnID);
void DeactivateSpawn(object oSpawn);
void DeactivateSpawnsByTag(string sSpawnTag);
void DeactivateAllSpawns();
void DespawnChildren(object oSpawn);
void DespawnChildrenByTag(object oSpawn, string sSpawnTag);
//
//
int SpawnCheckCustom(object oSpawn)
{
    // Initialize Values
    int nSpawnCheckCustom = GetLocalInt(oSpawn, "f_SpawnCheckCustom");

    // Block Spawn by Default
    int nProcessSpawn = FALSE;

//
// Only Make Modifications Between These Lines
// -------------------------------------------

    // Check 00
    if (nSpawnCheckCustom == 0)
    {
        // Example, Allow Spawn
        nProcessSpawn = TRUE;
    }
    //

    //
    if (nSpawnCheckCustom == 1)
    {
        if (GetIsDawn() == TRUE || GetIsDay() == TRUE)
        {
            nProcessSpawn = TRUE;
            SetLocalInt(oSpawn, "SpawnProcessed", FALSE);
        }
        else
        {
            int nSpawnProcessed = GetLocalInt(oSpawn, "SpawnProcessed");
            if (nSpawnProcessed == FALSE)
            {
                nProcessSpawn = TRUE;
                SetLocalInt(oSpawn, "SpawnProcessed", TRUE);
            }
        }
    }
    //

    // Reproducing Predators
    if (nSpawnCheckCustom == 10)
    {
        int nChildren = GetLocalInt(oSpawn, "ChildrenSpawned");
        if (nChildren >= 10)
        {
            int nHappy = 0;
            int nPredators;
            int nNth = 1;
            object oPredator = GetNearestObject(OBJECT_TYPE_CREATURE, oSpawn, nNth);
            while (oPredator != OBJECT_INVALID)
            {
                if (GetLocalInt(oPredator, "Predator") == TRUE)
                {
                    nPredators++;
                    if (GetLocalInt(oPredator, "CurrentHungerState") > 0)
                    {
                        nHappy++;
                    }
                }
                nNth++;
                oPredator = GetNearestObject(OBJECT_TYPE_CREATURE, oSpawn, nNth);
            }
            SendMessageToAllDMs("There are " + IntToString(nPredators) + " Predators Alive.");
            if (nHappy >= 2)
            {
                nProcessSpawn = TRUE;
            }
        }
        else
        {
            nProcessSpawn = TRUE;
        }
        if (nProcessSpawn == TRUE)
        {
            SendMessageToAllDMs("A Predator is Born!");
        }
    }
    //


// -------------------------------------------
// Only Make Modifications Between These Lines
//

    // Return whether Spawn can Proceed
    return nProcessSpawn;
}