//::///////////////////////////////////////////////
//:: FileName re_spawnerhb
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This script is used in the heartbeat of the
BESIE MMORPG Spawner tool, part of the BESIE Random
Encounter package by Ray Miller.
*/
//:://////////////////////////////////////////////
//:: Created By: Ray Miller
//:: Created On: 9-2-02
//:://////////////////////////////////////////////
#include "re_rndenc"
void main()
{
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
//Set this parameter to FALSE if you wish
//your encounter distances to be constant
//
int RandomDistance = TRUE
//
//////////////////////////////////////////////////////

    ;
    float fChanceOfEncounter = IntToFloat(GetMaxHitPoints(OBJECT_SELF)) / 100;
    object oEncounterObject = GetArea(OBJECT_SELF);
    string sTemplate = GetTag(OBJECT_SELF);
    int iNumberOfParties;
    int iOrientation = 0;
    int iMinDistance = RandomDistance;
    int iDifficulty = GetFortitudeSavingThrow(OBJECT_SELF);
    int iChanceFromBehind = GetReflexSavingThrow(OBJECT_SELF);
    int iMaxDistance = GetWillSavingThrow(OBJECT_SELF);
    if(!iMaxDistance)
        {
        iMaxDistance = 1;
        }
    if(GetStringLeft(sTemplate, 3) != "re_")
        sTemplate = "random";
    object oObject = GetFirstObjectInArea(oEncounterObject);
        while(GetIsObjectValid(oObject))
            {
            if(GetIsPC(oObject))
                {
                if(GetFactionLeader(oObject) == oObject)
                    {
                    iNumberOfParties++;
                    }
                }
            oObject = GetNextObjectInArea(oEncounterObject);
            }
    fChanceOfEncounter = IntToFloat(iNumberOfParties) * fChanceOfEncounter;

    if((Random(99) + 1) < iChanceFromBehind)
        {
        iOrientation = 180;
        iMaxDistance = 2;
        }
    RandomEncounter(fChanceOfEncounter, oEncounterObject, sTemplate, 0, 0, iMinDistance, iMaxDistance, iOrientation, 30, 0, iDifficulty);
    CleanHouse();
}
