I did it guys! I found the script that allows you to unlock characters as you proceed through the game. It took me a bit but I happened to find and take it from the sewers mission where you save Gambit from Marrow. When he leaves his cell, he is automatically unlocked and joins your team.
Here's the original script:
setInCampaign("gambit", "TRUE" )
If we want to unlock all characters from the start, we will be using the same method we did to unlock characters in X-Men Legends 2 (minus having to use the required button combinations because the first game doesn't have this cheat).
And now to our tutorial on how to do this:
In our Assetsfb, we'll open up our script that plays at the very beginning of game, which will be the file Alison.py since that's the script that initiates the preview movie before the very first mission begins. We can find it under the Scripts folder in the root of the assetsfb.
So Assetsfb>scripts>missions>alison.py. The default Alison.py file won't allow you to edit this because it's a Read-Only file. So you'll need to right-click the file, open its properties, and uncheck the Read-Only box, apply changes and you'll be able to make edits to it.
(https://i.imgur.com/jXO6DPB.png)
Now if we add multiple copies of the script used to unlock Gambit to the Alison.py with all the heroes listed in the game. We'll paste all the added scripts above the loadMap("nyc/alison/nyc1_1_1") so they are read first before the map loads and save the file. I don't know if this affects anything but just to be safe:
(https://i.imgur.com/NpeAULC.png)
With our new edited Alison.py, we'll replace the one in the assetsfb, and import the assetsfb into the X-Men Legends ISO using GCNRebuilder.
And now for the results...
POOF! All characters unlocked from the very beginning! Professor X is also in the character selection now! He starts out high level because those are his default stats in the herostats. Since I'm using my permanent 4-player modpack, I can easily preview them in the very first mission after defeating Mystique. (I also had to change the two placeholder characters from REQUIREDHERO to RECOMMENDEDHERO so I can swap them out.). If you're doing this on a clean version of the game, then you'll have to wait till the HAARP facility mission to see your results.
(https://i.imgur.com/xFUiaPC.png)
(https://i.imgur.com/DfSaoME.png)
And yes, it looks like all heroes remain permanent in the roster, so when you attend the next mission, you'll be able to have the entire x-men join the second mission with you! And If you forgot to talk to Beast at the X-Mansion before you start the HAARP mission, it won't affect the roster because he is already unlocked.
(https://i.imgur.com/FQJPk5m.png)
Good luck with modding XML1, guys!
This is absolutely amazing! Terrific work!
Fun fact: you can force the game to allow you to play as NPCs. I think we discussed this before, but the proof is in the "ProfXGladiator" character in the last Astral Plane level. He is not in the herostat, but the game selects him. See assetsfb.zip > data\missions\astral_sk.eng.
<MISSION descname="Astral_SK" description="[This zone is currently un-available] Fight Shadow King on the Astral Plane" scriptstart="" minheros="1" maxheros="1" location="42 36" remote="true" mapload="astral/savepx/final_astral" maploadblackbird="true" skinset="default" teamselect="false">
<REQUIREDHERO name="PROFXGLADIATOR"/>
<OBJECTIVE name="defeat" descname="Battle Shadow King." enabled="true" description="Combat Shadow King and defeat him." xp="1000000"/>
</MISSION>
Speaking of Professor X, technically we could have the normal version, ProfXAstral, as an NPC too, which frees up a mod hero slot. I wonder if we can add him (ProfXAstral) to the list of playables using SetInCampaign() on a NPC (instead of him being in the herostat), and if not maybe it'd be fun to have some other NPCs playable in other missions, like Havok in the one Weapon X mission.
***EDIT***
I just realized I don't have the XML1-specific PY commands in the Modding Rundown: PY scripts topic
http://marvelmods.com/forum/index.php/topic,1367.0.html
Quote from: Teancum on July 10, 2019, 07:21AM
Fun fact: you can force the game to allow you to play as NPCs. I think we discussed this before, but the proof is in the "ProfXGladiator" character in the last Astral Plane level. He is not in the herostat, but the game selects him. See assetsfb.zip > data\missions\astral_sk.eng.
<MISSION descname="Astral_SK" description="[This zone is currently un-available] Fight Shadow King on the Astral Plane" scriptstart="" minheros="1" maxheros="1" location="42 36" remote="true" mapload="astral/savepx/final_astral" maploadblackbird="true" skinset="default" teamselect="false">
<REQUIREDHERO name="PROFXGLADIATOR"/>
<OBJECTIVE name="defeat" descname="Battle Shadow King." enabled="true" description="Combat Shadow King and defeat him." xp="1000000"/>
</MISSION>
Speaking of Professor X, technically we could have the normal version, ProfXAstral, as an NPC too, which frees up a mod hero slot. I wonder if we can add him (ProfXAstral) to the list of playables using SetInCampaign() on a NPC, and if not maybe it'd be fun to have some other NPCs playable in other missions, like Havok in the one Weapon X mission.
Indeed. In the 4 player mod i released a while back, I used that method so in specific missions that originally don't allow a full party, the remaining players spawn as NPCs as placeholder characters. In the weapon X mission, I removed Havok as in NPC and had him spawn as a playable character instead, but he is only temporarily like how Professor X is in the Astral missions. As for adding SetInCampaign() to an NPC character, it would nice to see if they get added in to the hero roster. Other than that, i think it might just register those who are listed in the herostat.
A preview of him in action:
https://www.youtube.com/watch?v=iJWXQTBXlME&list=PLcIaD7xk8XKjsif41miqEazw3YzPzIKvP&index=5
As for testing out custom characters, I just tested unlocking one from the start, and it worked! Although I still chose to remove a someone in the hero roster because I don't know the limit in the herostat. But now, you no longer have to make changes to an existing X-Man's files and have their roll call as the person you modified them over.
We're getting closer to adding custom characters for this game! The only downfall is getting voices to work will be a problem since we can't open the Gamecube version's file that contains their voices at the moment.
(https://i.imgur.com/lhXW5do.png)
Amazing work! I must say, it's fascinating finally seeing Xavier's character icon to select him. There's never any point where you'd be able to see it in the vanilla game, at least that I recall, so it's interesting that they even made him a selection portrait.
How smoothly does XML1 play on the Dolphin emulator? I can get the PS2 version to work on it quite crisp and stable. Is Dolphin similar?
You know, back in the day when I had the console version of XML1, I had prayed for someone to find a way to have all the X-Men unlocked at the very beginning (via Gameshark or other code breakers), so that I can play as any of them all throughout the game. This is because I was so pissed that Psylocke came so late in the game. Sadly, that code never came.
Even though this is the PC version, I'm glad someone found it. Well done.
Hey Lags, try this Cyclops model out. UltraMegaMagnus converted it and it works great in XML1 Xbox. I've re-optimized it for Gamecube but don't currently have a way to test it.
https://www.mediafire.com/file/75oo9yc6033v60m/Cyclops_GameCube_%28UltraMegaMagnus_conversion%29.7z/file
It won't work file size is too big
What makes you say that? Worked fine on the Xbox, and I only converted the texture to GameCube formatting
Because the gamecube version has a file size limit
Oh. How did you find that out lol?
Also, I can make the texture size smaller I think
By testing ps2 models and some don't work,also it would suggest you make under 200kb
It doesn't work
Makes sense. I'll probably set up Dolphin emulator to see just how small I have to make it without making someone else test each time.
Make it under 180kb to be safe
Dang, I already encountered a small problem with giving a custom character additional skins. It doesn't matter how minimum the extra skin you give to a custom character, but for some reason, when you get to their last skin on their list and attempt to switch, the game will crash thinking there's another skin in line and doesn't loop around back to the default costume like it should. It doesn't have this problem, if their only skin is their default, and you're able to push the skin swap button without it crashing.
Edit:
What's worse, there are sudden crashes when attempting to change a custom hero's gear or leveling up their skill points before returning to the game. It randomly happens and randomly doesn't. It doesn't crash however, when gearing up your custom hero an Xtraction point.
For quick reference you can jump to a map using the alison.py script. Here are the map codes (ignore my notes, it's from XML1PC Project). Truthfully I'd recommend using beginMission("missionname"), replacing missionname with one from \data\missions
#NEW YORK -- INTRO
#loadMap("nyc/alison/nyc1_1_1") #working
#loadMap("nyc/alison/nyc1_1_2") #working
#loadMap("nyc/alison/nyc1_1_2b") #working -- Pyro's fire wall and Mystique's boss fight need work
#loadMap("nyc/alison/nyc1_1_3") #working
#loadMap("nyc/alison/nyc1_1_4") #working
#loadMap("nyc/alison/nyc1_1_5") #working
#X-MANSION -- ACT1-1
#loadMap("mocap/mocap1/mocap1") #cutscene
#loadMap("mansion/man1a/mansion1a_1") #working
#loadMap("mansion/man1a/mansion1a_2") #working
#loadMap("mansion/man1a/subbasement1a") #working
#loadMap("mansion/man1a/hangar1a") #working
#HAARP FACILITY
#loadMap("mocap/mocap2/mocap2") #cutscene
#loadMap("haarp/ext/haarp_ext01") #working
#loadMap("haarp/ext/haarp_ext02") #working
#loadMap("haarp/ext/haarp_ext03") #working
#loadMap("haarp/ext/haarp_ext04") #working -- cutscene door not opening (for now we just load the next level)
#loadMap("haarp/int/haarp2_1") #working
#loadMap("haarp/int/haarp2_2") #working
#loadMap("haarp/int/haarp2_3") #working -- skipped (back to title screen when played in sequence)
#loadMap("haarp/int/haarp2_6") #working
#loadMap("haarp/int/icetunnel1") #working
#loadMap("haarp/int/icetunnel2") #working
#loadMap("haarp/ext/haarp_ext_boss") #working (fight with Toad needs work -- toadpoin_new.py)
#X-MANSION -- ACT1-2
#loadMap("mansion/man2/man_back2") #working
#loadMap("mansion/man2/man2_1") #working
#loadMap("mansion/man2/man2_2") #working
#loadMap("mansion/man2/mansb2") #working
#MAGMA'S DANGER ROOM TRAINING, PART 1
#loadMap("mansion/dr_mag/dr_mag01") #working
#loadMap("mansion/dr_mag/dr_mag03") #working
# NYC - SENTINEL FLASHBACK -- TALK TO NIGHTCRAWLER in man2_1 (SIDE MISSION)
#loadMap("nyc/fb/nyc_fb1") #working, sentinels have no attacks
#loadMap("nyc/fb/nyc_fb2") #loads, sentinels have no attacks
#loadMap("nyc/fb/nyc_fb3") #loads, sentinels have no attacks
#loadMap("nyc/fb/nyc_fb4") #loads, sentinels have no attacks
#X-MANSION - JUGGERNAUT FLASHBACK -- TALK TO BEAST in basement after Magma's first training (SIDE MISSION)
#loadMap("mansion/jugrnt/jugrnt01") #working -- had to remove objects, scripting problems
#SEWERS -- HUB
#loadMap("mocap/mocap3/mocap3") #cutscene
#loadMap("sewers/hub/sewers1_1_1") #working
#loadMap("sewers/hub/sewers1_1_2") #working
#loadMap("sewers/hub/sewers1_1_3") #working
#loadMap("sewers/hub/sewers1_1_4") #working
#loadMap("sewers/hub/sewhub") #working -- door won't open
#loadMap("sewers/hub/sewers1_2_1") #working
#loadMap("sewers/hub/sewers1_2_3") #working
#loadMap("sewers/hub/sewers1_2_4") #working (Marrow boss fight #1)
#USS ARBITER -- needs INTERIOR sentinel launchers fixed
#loadMap("mocap/mocap4/mocap4") #cutscene
#loadMap("arbiter/deck/arb_fd1") #working
#loadMap("arbiter/deck/arb_fd2") #working
#loadMap("arbiter/a_int/arb2_1") #working
#loadMap("arbiter/a_int/arb2_2") #working
#loadMap("arbiter/a_int/arb2_3") #working
#loadMap("arbiter/a_int/arb2_4") #working
#loadMap("arbiter/a_int/arb3_1") #working -- locks up first cutscene, zone anims
#loadMap("arbiter/a_int/arb3_2") #working
#loadMap("arbiter/a_int/arb3_3") #working, zone anims
#loadMap("arbiter/a_int/arb3_4") #working
#################### "ACT 2" #########################
#X-MANSION -- ACT2-1
#loadMap("mansion/man3/hangar3") #working
#loadMap("mansion/man3/mansion3_1") #working
#loadMap("mansion/man3/mansion3_2") #BROKEN -- loads, but crashes at stairs
#loadMap("mansion/man3/subbasement3b") #working
#MAGMA'S DANGER ROOM TRAINING, PART 2 -- NYC REINACTMENT
#loadMap("mansion/dr_mag2/mag_nyc1") #working
#loadMap("mansion/dr_mag2/mag_nyc2") #working
#loadMap("mansion/dr_mag2/mag_nyc3") #working
#loadMap("mansion/dr_mag2/mag_nyc4") #working
#loadMap("mansion/man3/danger_room") #working
#WEAPON X FACILITY - WOLVERINE FLASHBACK - talk to Wolverine in X-Jet hangar (SIDE MISSION)
#loadMap("weapon_x/wfb/wx1_1") #working
#loadMap("weapon_x/wfb/wx1_2") #working -- you can fall through in the transition to wx1_3 (not solid)
#loadMap("weapon_x/wfb/wx1_3") #working -- needs "out" dialog, fission gate should damage player
#NUCLEAR PLANT
#loadMap("mocap/mocap5/mocap5") #cutscene
#loadMap("nuke_plant/nuke/nuke1_1") #working
#loadMap("nuke_plant/nuke/nuke1_2") #BROKEN? - falling forever
#loadMap("nuke_plant/nuke/nuke1_3") #working
#loadMap("nuke_plant/nuke/nuke1_4") #works
#loadMap("nuke_plant/nuke/nuke2_2") #works -- Colossus' effects are missing
#loadMap("nuke_plant/nuke/nuke2_2a") #working -- does not drop forcefield (impassable) - forcefield_remove.py
#loadMap("nuke_plant/nuke/nuke2_3") #working
#MUIR ISLAND
#loadMap("muir_is/muir2/muir_in2") #working
#loadMap("muir_is/muir2/muir_comcore") #BROKEN -- falling forever (no ENG -- unused map?)
#loadMap("muir_is/muir2/mui_comcore") #working
#loadMap("muir_is/muir2/muir_brig") #working (cutscene?)
#WEAPON X FACILITY -- (SIDE MISSION) w/Cyclops
#loadMap("weapon_x/old/wx2_1") #working
#loadMap("weapon_x/old/wx2_2") #working -- stuck in cutscene
#X-MANSION -- ACT2-2 (includes GRSO attack)
#loadMap("mocap/mocap6/mocap6") #cutscene
#loadMap("mansion/man4/grso_debriefing") #BROKEN -- crashes during conversation
#loadMap("mansion/man4/mansion_back4") #working -- water fx for pool still missing?
#loadMap("mansion/man4/mansion_back4_grso") #works -- locks up during cutscenes, check new objectives
#loadMap("mansion/man4/mansion_front4_grso") #working
#loadMap("mansion/man4/mansion4_1") #working
#loadMap("mansion/man4/mansion4_2") #working
#loadMap("mansion/man4/subbasement4") #working
#ASTRAL PLANE
#loadMap("mocap/mocap7/mocap7") #cutscene
#loadMap("astral/ast1/astral1_1") #working
#loadMap("astral/ast1/astral1_2") #working -- locks up after hitting a swtich
#loadMap("astral/ast1/astral1_3") #working -- locks up near end (cutscene?)
#loadMap("astral/ast1/astral4_3") #working
#X-MANSION -- ACT3-1
#loadMap("mansion/man5/mansion_front5") #working
#loadMap("mansion/man5/mansion5_1") #working
#loadMap("mansion/man5/mansion5_2") #working
#loadMap("mansion/man5/subbasement5") #working
#loadMap("mansion/man5/subbasement5b") #BROKEN -- crashes during load
#SEWERS -- HEALER
#loadMap("mocap/mocap8/mocap8") #cutscene
#loadMap("sewers/healer/sewers_hub2") #working
#loadMap("sewers/healer/sewers2_1_1") #working
#loadMap("sewers/healer/sewers2_1_2") #working
#loadMap("sewers/healer/sewers2_1_3") #working
#loadMap("sewers/healer/sewers2_1_4") #working
#MOUNT
#loadMap("mount/mount/mount") #working
#loadMap("mount/mount/mount2") #working
#################### "ACT 3" #########################
#X-MANSION -- ACT3-2
#loadMap("mansion/man6/mansion6_1") #working
#loadMap("mansion/man6/mansion6_2") #working
#loadMap("mansion/man6/subbasement6") #BROKEN -- crashes while loading
#loadMap("mocap/mocap9/mocap9") #cutscene - Used for Juggernaut, NYC Riots and Sewers GRSO missions
#MUIR ISLAND -- JUGGERNAUT
#loadMap("muir_is/muir3/muir_brig") #working
#loadMap("muir_is/muir3/muir_in3") #working
#NEW YORK -- RIOTS
#loadMap("nyc/riots/nyc3_1_1") #working 100% aside from sentinel issues
#loadMap("nyc/riots/nyc3_1_2") #working, has objective issues
#loadMap("nyc/riots/nyc3_1_3") #working, has objective issues
#loadMap("nyc/riots/nyc3_2_1") #working, has objective issues (Bishop as a kid)
#loadMap("nyc/riots/nyc3_2_2") #UNUSED --- copy of an Asteroid M map ("astroid_m/visit1/asteroid2_2")?
#SEWERS -- GRSO
#loadMap("sewers/grso/sewers3_1_1") #works
#loadMap("sewers/grso/sewers3_1_2") #works
#loadMap("sewers/grso/sewers3_1_3") #works
#loadMap("sewers/grso/sewers_marrow") #works
#X-MANSION -- ACT4-1
#loadMap("mansion/man7/mansion7_1") #working
#loadMap("mansion/man7/mansion7_2") #working
#loadMap("mansion/man7/subbasement7") #working
#loadMap("mansion/man7/status_meeting") #works, cutscene only -- UNUSED?
#ASTRAL PLANE -- VISIT 2
#loadMap("mocap/mocap11/mocap11") #cutscene
#loadMap("astral/ast3/astral3_2") #working
#loadMap("astral/ast3/astral3_3") #working
#loadMap("astral/ast3/astral3_4") #working
#loadMap("astral/ast3/astral3_5") #working
#loadMap("astral/ast3/colosseum") #working
#FACTORY / HIVE
#loadMap("mocap/mocap10/mocap10") #cutscene
#loadMap("hive/h_ext/hive1_1_1") #working
#loadMap("hive/h_int/hive1_2_1") #working
#loadMap("hive/h_int/hive1_2_2") #working
#loadMap("hive/h_int/hive1_2_3") #working
#loadMap("hive/h_int/hive1_3_1") #working
#loadMap("hive/h_int/hive1_3_2") #working
#loadMap("hive/h_int/hive1_3_3") #working
#loadMap("hive/h_int/hive2_2_1") #working
#loadMap("hive/h_int/hive2_2_2") #working -- #working -- had to remove objects??????
#loadMap("hive/h_int/hive2_2_3") #BROKEN -- dumped to title screen
#loadMap("hive/h_int/hive2_2_4") #BROKEN -- dumped to title screen
#loadMap("hive/h_int/hive2_2_5") #working -- had to remove objects???
#ASTRAL PLANE -- SAVE PROFESSOR X
#loadMap("mocap/mocap12/mocap12") cutscene
#loadMap("astral/savepx/astral2_1") #working
#loadMap("astral/savepx/astral2_2") #working
#loadMap("astral/savepx/final_astral") #working
#loadMap("astral/savepx/astral2_3") #working -- crashes when you free Xavier
#X-MANSION -- ACT4-2
#loadMap("mansion/man8/mansion8_1") #working
#loadMap("mansion/man8/mansion8_2") #working
#loadMap("mansion/man8/subbasement8") #working
#loadMap("mansion/man8/subbasement8b") #working (CUTSCENE)
#loadMap("mansion/man8/hangar8") #working
#ASTEROID M
#loadMap("mocap/mocap13/mocap13") #cutscene
#loadMap("astroid_m/visit1/asteroid1_1") #working
#loadMap("astroid_m/visit1/asteroid1_2") #BROKEN -- crashes when you meet Mystique
#loadMap("astroid_m/visit1/asteroid1_3") #working
#loadMap("astroid_m/visit1/asteroid2_1") #working
#loadMap("astroid_m/visit1/asteroid2_2") #working
#loadMap("astroid_m/visit1/asteroid2_3") #working
#FINALE -- MASTER MOLD
#loadMap("mastermold/mastermold1") #working
#loadMap("mastermold/mastermold2") #loads, gets stuck on initial cutscene
Nice! That makes it easier for testing mods so you don't have to run through the tutorial all the time
You can also use beginMission("haarp"), etc to load anything in /data/missions