
class GlobalLevelHandler : EventHandler
{
    // 0 is Doom
    // 1 is Duke
    int LevelType;
    Array<int> SectorType;

    int imonstercount;
    bool randomsettingsloaded;

    Array<actor> particlelist;
    Array<actor> gibslist;
    Array<actor> bloodlist;
    Array<actor> firelist;
    Array<actor> metallist;
    Array<actor> icechunklist;
    Array<actor> casinglist;
    Array<actor> smokelist;

    void InitRandomMapSettings(int prob)
    {
	if(randomsettingsloaded) return;

	imonstercount = 0;

	if(random[RIDMAPPROB](1,256)>(256.0-(256.0*(prob/100.0)))) {
		LevelType = 0;
	} else {
		LevelType = 1;
	}
	for (int i = 0; i < level.sectors.size(); i++) {
		if(random[RIDMAPPROB](1,256)>(256.0-(256.0*(prob/100.0)))) {
			SectorType.Push(0);
		} else {
			SectorType.Push(1);
		}
       	}

	randomsettingsloaded = true;
    }

    int MonsterCount()
    {
	return imonstercount++;
    }

    void QueueListActor(Array<actor> actorlist, Actor lactor, int plimit, int failchance=0)
    {
	if(random[RIDMAPPROB](1,256)>failchance) {
		if(actorlist.size() > plimit)
		{
			while(actorlist.size() > plimit)
			{
				if(actorlist[0]) actorlist[0].destroy();
				actorlist.delete(0);
			}
		}
		actorlist.push(lactor);
	}
    }
}