// Declarations
// StaticSpawn - Summon the monster with the given tag at the given spot.
// Set the local variable ms_info to the given value
void StaticSpawn(string szClass, location lWhere, string info);
// The main event handler.
void main()
{
// VARIABLES
// The Spawnmaster object
object oSpawnMaster;
// The tag for this monster
string szMonsterTag = GetTag(OBJECT_SELF);
int nLength = 0;
string szSpawnPointTag = "";
string szSpawnPointInfo;
string szMonsterClass;
object oSpawnPoint;
float fSpawnTime;
location lSpawnPoint;
// Check to see if we are an "ms_" monster
if( GetSubString(szMonsterTag, 0, 3) == "ms_" ) {
nLength = GetStringLength(szMonsterTag);
// Get the Spawn Point for this monster
szSpawnPointTag = GetSubString(szMonsterTag, 3, (nLength - 3));
} else {
// Check to see if we have an ms_info local variable
szSpawnPointTag = GetLocalString(OBJECT_SELF, "ms_info");
}
// If this creature has a spawn point...
if(szSpawnPointTag != "") {
// ActionSpeakString("I was a MSMonster with SpawnPointTag " + szSpawnPointTag, TALKVOLUME_SHOUT);
// Get the waypoint and info
oSpawnPoint = GetWaypointByTag(szSpawnPointTag);
szSpawnPointInfo = GetName(oSpawnPoint);
// ActionSpeakString("SpawnpointInfo is "+szSpawnPointInfo, TALKVOLUME_SHOUT);
nLength = GetStringLength(szSpawnPointInfo);
// Spawn time is the first 3 characters
fSpawnTime = StringToFloat( GetSubString(szSpawnPointInfo, 0, 3) + ".0" );
// Monster class to spawn is the 4th char onward
szMonsterClass = GetSubString(szSpawnPointInfo, 4, (nLength - 4));
// Location to spawn is the loc. of the spawnpoint...
lSpawnPoint = GetLocation(oSpawnPoint);
// Get the spawn master
oSpawnMaster = GetObjectByTag("spawnmaster");
// Dispatch the command to the spawn master.
AssignCommand(
oSpawnMaster,
DelayCommand(fSpawnTime, StaticSpawn(szMonsterClass, lSpawnPoint, szSpawnPointTag))
);
}
}
// SummonMonster
// Conjure a monster with the given class at the given point.
void StaticSpawn(string szClass, location lWhere, string info) {
object oNewMonster = CreateObject(OBJECT_TYPE_CREATURE, szClass, lWhere);
SetLocalString(oNewMonster, "ms_info", info);
object oPC = GetLastKiller();

while (GetIsObjectValid(GetMaster(oPC)))
   {
   oPC=GetMaster(oPC);
   }

if (!GetIsPC(oPC)) return;

if (!(GetHitDice(oPC) >= 20))
   return;
  GiveXPToCreature (oPC, 250);
//RewardPartyXP(250, oPC, FALSE);

}
//}