Das Problem ist gelöst.Für diejenigen, die das interessiert:
Meine Gegner-Events sind Events mit vielen Seiten. Die letzte Seite ist das eigentliche Event, in welcher die Hauptabfrage abläuft, die anderen Seiten sind Codes mit verschiedenen Funktionen (Sehen, Bewegen,...). Dabei wird zuerst durch obligatorische Variablen die ID abgefragt:
ThisX, ThisY;
Store Event-ID -> ThisID (ThisX, ThisY);
ThisID = EnemyType (Eine längere Berechnung, wird unten ein wenig erklärt);
Modulus ThisID;
If ThisID == 0
Call Event [This Event, Page 1];
...Auf Seite 1 werden die Werte verteilt durch eine "dynamische Variable". Im Hauptarray der Variablen ist ab Variable 101 bis 4001 für Gegner reserviert. Mit jeweils 5 Gegnervariablen heißt das theoretische 780 Gegner in einer Map, was jedoch aufgrund der Performance nicht geht. Wie dem auch sei, ich arbeite viel mit der "Wert der Referenz"-Variablenfunktion, also dass ich in "ThisControl" den Wert 101 gespeichert hab und deswegen die 101. Variable manipuliere - also den Gegner-Typus. Dabei hab ich ein immer gleiches Muster, wie Typus (Was für eine Art Gegner das ist), HP, ATK, ... welches durch Common Events (Befehl "Call Event") eingespeichert und definiert wird.
Nachdem die Werte verteilt wurden muss die Grafik als "Move Event" gegeben werden. Da war mein erstes Problem: Ohne "Proceed With Movement" gäbe es keine Grafik, da sich die parallelen Prozesse überschneiden (Gegen meine Erwartung). Genau das gleiche Problem war bei dem eigentlichen Bewegungsmuster, aber dazu später mehr. Direkt vor der Wert- und Grafikvergabe für das Event hatte ich eine kleine Abfrage eingebaut, ob ein Rudel gerade generiert wird. Wie wird ein Rudel generiert? Auch wenn es ein wenig umständlich ist, scheint mir dies die einfachste und speichersparendste Lösung zu sein: Bei der Wertvergabe wird bei den Rudelmonstern eine Variable auf den Mostertypus gesetzt. Danach wird die Rudelgröße abhängig von der Schwierigkeitsstufe bestimmt. Gleichzeitig wird das "Rudelzentrum", also der im ersten Post erwähnte Spawn-Point der Monster mit den aktuellen "ThisX" und "ThisY" Variablen gleichgesetzt. Wenn nun ein nächstes Monster generiert wird, wird nicht nach Wahrscheinlichkeit und anderen Switches und Variablen bestimmt, sondern sofort auf den MonsterTypus des Rudels gesetzt. Im Event steht nun die Abfrage, ob diese besagte Variable auf 0 steht: Wenn ja, dann wird ein neues Monster nach den alten Regeln generiert. Wenn nicht, dann wird das Event zum Spawn-Point des Rudels verschoben und der Typus angeglichen.
Mein Problem war, dass dies überhaupt nicht der Fall war, wenn alles andere gut funktioniert hat. Die Monster blieben beim ersten erscheinen auf ihren eigenen Punkt. Erst nachdem ich alle Gegnerwerte resettet hab (Und die Gegner sich automatisch neue Werte zugewiesen hatten), wurde dies gemacht. Und selbst dann nicht reibungslos: Manchmal blieben Gegner auf ihrem 0-Typus und wechselten dauernd die Grafik und das Bewegungsmuster, manchmal erschienen Monster in einem Rudel, welche keine Rudelmonster waren. Im Endeffekt waren die Überschneidungen der ganzen Events das Problem. Das hab ich gelöst, indem ich ein "InUse"-Switch abfrage (Im Hauptprogramm des Events):
...
If InUse ON;
{
;
}
Else
{
Switch "InUse" turn ON;
...
[Programm]
}Nachdem das komplette Programm einmal durchgelaufen ist, wird das Switch wieder ausgemacht. So gibt es auch keine Überschneidungen. Der einzige Nachteil an der Sache ist, dass die Gegner nicht mehr sofort generiert werden sondern 1 Gegner in ca. 0,1Sekunden. Doch damit kann man leben wenn man in Levels genug Puffer einbaut

Ich hoffe dass ich durch diesen Text jemanden weiterhelfen kann, der vielleicht ein ähnliches Problem hat, oder jemanden neue Denkanstöße geben kann.
Danke fürs Durchlesen!
Cheers,
Clave