In the map's .eng file, there should be a code that looks something like:
<inst name="player_start01" pos="3247.05 1793.95 30" extents="3225.48 1776 30 3276 1811.92 113.954" orient="0 0 3.14159"/>
or something like that at the bottom somewhere (all maps use this to spawn heroes i believe, and this player_start is just an example I pulled out from Astral mission's). Adding in more of those <entinst type="player_startXX">'s should spawn additional heroes into the map. It's easy to just copy and paste player 1's script (and player 2's if there is one) and renaming the player_start(XX) to 02, 03, and 04, so it applies to the respective players. I don't have a point of reference (like X, Y, and Z axis) on how to position where each hero will spawn, so they'll just fall on top of each other and get pushed aside when a map loads.
But that's not all, I'm pretty sure setting spawn points just tells the game that certain amount of heroes can join the map. In order to tell the game which hero you want to spawn, you'll have to navigate over to the assetsfb/data/missions/and edit the script for a missions .eng file and set which heroes to appear. So in that case, (I believe I pulled out the right one that corresponds to the very first mission's) it looks something like this:
<MISSION descname="Alison in NYC" description="Save Alison from bad guys" scriptstart="missions/alison" remote="true" minheros="2" maxheros="2" skinset="default" teamselect="false" keepheroes="false">
<REQUIREDHERO name="wolverine"/>
<REQUIREDHERO name="cyclops"/>
<OBJECTIVE name="defeat_blob" descname="Defeat Blob" description="Defeat Blob to rescue Alison." updatedescription="Blob Defeated!" enabled="false"/>
<OBJECTIVE name="defeat_mystique" descname="Defeat Mystique" description="Defeat Mystique to get to Blob." updatedescription="Mystique Defeated!" enabled="false"/>
<OBJECTIVE name="get_to_jet" descname="Get to the X-Jet" enabled="false" description="Make your way through the rooftops to the X-Jet."/>
<OBJECTIVE name="find_blob" descname="Find Blob" description="Find Blob's trail and track him down." updatedescription="You found Blob!" enabled="true"/>
</MISSION>
You'll have to add in two additional <HERO name="X-men"/> after Wolverine and Cyclops so it adds in the last two heroes. Names are based on what their file name is in the Characters folder so if you're adding Iceman and Jean Grey in the first mission, an example would be:
<REQUIREDHERO name="wolverine"/>
<REQUIREDHERO name="cyclops"/>
<REQUIREDHERO name="iceman"/>
<REQUIREDHERO name="phoenix"/>
This way, it should register them into the mission and they are ready to appear anywhere in the mission as long as a spawn point is set when a map loads.
And lastly, a mission's eng file seems pretty explanatory but we should mainly focus on these:
minheros = min amount of heroes you want
maxheros = maximum amount of heroes you can have. (I recommend just keeping both of them at 4.)
You'll also want to keep in mind of these:
<REQUIREDHERO name="X-HERO SLOT"/> - Cannot be removed out of team even at Xtraction points.
<RECOMMENDEDHERO name="X-HERO SLOT"/> - Who the mission recommends you to use. Can be swapped out. (It's used when a you're in the team select screen at the beginning of the mission, they start you off with a certain set of heroes.)
<RESTRICTEDHERO name="X-HERO SLOT"/> - Cannot use them (usually applies to Jean Grey in certain missions)
<MUSTLIVEHERO name="X-Hero SLOT"/> - A side thing that's applied in the file and does not correspond to selecting a hero to start off with in a mission. I assume if this hero dies, you instant game over. Which is applied on Professor X on the Astral mission.
As for the Cyclops.py, I haven't messed around with that but I think that's just a script to have you perform a little more work to get him into the team when you walk past him, rather than having him spawn instantly into the team when the map loads.