Very much simplified script - simple three spawns on same tile on subsequent turns results in randomly occuring CTD a random number of turns after last spawn. Can't duplicate reason when playing one of the spawned factions but stopping them spawning on same spot seems to stop problem (so far so good).

So need to try and add a check to see if anyone is on tile before spawning:

Code:
  if whatever_conditions

;sets counter to stop spawn
   if I_CharacterTypeNearTile alemanni general, 0 97,121
	set_counter nospawn 2
   end_if
   if I_CharacterTypeNearTile alemanni family, 0 97,121
	set_counter nospawn 2
   end_if

;only triggers if army not on tile
	if I_CompareCounter nospawn < 2
         spawn_army
            faction slave
            character Moireabh, named character, command 1, influence 1, management 1, subterfuge 0, age 23, x 97, y 121
            unit souleatergeneral, exp 1 armour 0 weapon_lvl 0
         end
        end_if

;reset for other if/monitors
    if I_CompareCounter nospawn = 2
       set_counter nospawn 0
    end_if

; terminate_monitor
 end_if
seems to work to just stop them spawning on exact same tile as alemanni, but would need same entry for all factions, luckily I haven't got full set of factions in use, but wonder if anyone knows of way of wording that for 'any faction' on tile that's shorter....?

Any other advice on lines of 'Scripters Guide to CTD's' might also be useful in-case there is anything else causing problem.