Git Product home page Git Product logo

trilogy-save-editor's Introduction

Trilogy Save Editor

A save editor for Mass Effect Trilogy (and Legendary)

Screenshot

Features

This software is similar to Gibbed's save editors (and forks) but adds a lot of stuff.

  • Support for the 2 Mass Effect Trilogies (Original and Legendary)
  • 100% of the saves can be edited (except ME1OT)
  • Thousands of plot flags
  • Bioware's plot database
  • Import / Export head morph
  • ME1LE inventory management
  • Multiple bonus powers for all games (except ME1OT)
  • Xbox 360 and PS4 support
  • Free (as freedom) and open-source software with CeCILL license

Frequently Asked Questions

You can read the FAQ here.

Command line usage

USAGE:
    trilogy_save_editor(.exe) [FLAGS] [SAVE]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

ARGS:
    <SAVE>    Mass Effect save file

Acknowledgments

Without them I could not have done anything.

Compile from source

rustup target add wasm32-unknown-unknown
npm install
cargo install cargo-make
cargo make release

trilogy-save-editor's People

Contributors

karlitosvii avatar lyssieth avatar seragunn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

trilogy-save-editor's Issues

Add Achievement

Is it possible to add/give yourself an achievement in ME1, ME2 or ME3 in the "Trilogy Save Editor"?
If not, can you add this feature?

High Booleans, Floats and Integers freeze Trilogy Save Editor

When a save has a high Boolean, Float or Integer count due to mods, the Trilogy Save Editor freezes trying to load any of them, probably because the game writes empty booleans, floats and integers up to the ones that are actually added by a mod and the editor struggles to load all of them.
The highest number supported by the modding toolset is 9 digits long so that should be the maximum that the editor should support.

Example Save:
John00_07.zip

Mass Effect 1 inventory improvement requests

I don't really have a lot of experience with rust programming so my ability is currently limited but I have some ideas for how the ME1 inventory screen could be improved for easier use.

  • Titles for each equipment line. ( ARMOR|GRENADE|OMNI|BIOAMP: [DROPDOWN] [LEVEL DROPDOWN])
  • Replace [Grenade] line for player with grenade mod
  • Validate/filter each dropdown to the correct types available
  • Remove grenade line for squad since they can't use grenades
  • Add missing items I am not sure what items in my save are missing but there are some showing as Unknown Item. Possibly the spectre master omni/bio amps?
  • Weapons currently missing options to specify weapon mods and ammo mods
  • Total inventory sorting/filtering
  • Equipped on player or squad marker in the total inventory list if this is something available in the save file data

Attached save file to check the items
Kate00_QuickSave.pcsav.zip

High GPU usage

I get 30% usage on a RTX 3060, as long as the editor is not minimized.
It's not critical, but it seems very very strange.

Feature: Open the save dialog in the save file's directory

Caveat: I'm running this on Linux but I don't believe that changes this particular behaviour.

Problem: when saving, the save dialog opens in the current working directory instead of the directory holding the open save file. It would be more convenient for me if the save dialog were to open in the directory of the open save file.

I think this can be fixed by simply changing

- file_name: file_name.to_string_lossy().into()
+ file_path: path.to_string_lossy().into()

in

async fn open_save(path: String, ui_addr: Sender<UiEvent>) -> Result<()> {

From my brief search, I can only find the file_name field being used in the save dialog, so I don't think this breaks anything.

Easier way to select all unlockables?

I am using the editor to create a Mass Effect 3 save game with everything unlocked so that I don't need to play one and two again (played one years ago) and clicking all the checkboxes manually is a bit tedious and prone to human error.

Could you add an option to select all unlockables (weapons, armor, quest rewards, credits etc..) so that people like me would only need to select mission results and who is alive instead of having to select all items one by one?

It also is confusing as some weapon upgrades take the number of upgrades as input so I have no clue which value is reflecting the best upgrade that can be legitimately unlocked in the previous game.

Linux Support

How feasible is supporting Linux in this?

Since ME:LE (and other ME games) runs over Proton (currently with a lot of patches required) and some people may prefer Linux over Windows for their gaming, a save editor might be wanted for them (and me) as well.

Feature request: No way to export Headmorph data individually

The feature request:
Without knowing the backend issues this might run into, I'm missing a way of saving individual Headmorph parameters as spreadsheet data, like xml or json or csv, such as the "LOD" tabs, or "Morph Features".

Making this possible would potentially allow people to import custom Shepard designs and create NPCs from them with way less steps, and I've already asked the Legendary Explorer team to look for ways to import from TSE's headmorph reading.

Not counting on this, but it would be sweet.

Problem with The Arrival DLC status affecting war assets

If you don't play The Arrival and just mark it as completed in ME2 save using the ediotr and if later import that save to ME3, your war assets for 103rd Marine Division will say that they destroyed the relay and suffered heavy losses instead of Shepard.

There must be some other plot variable missing which the game is checking for this.

Open File Dialog (Linux?)

By default the Filter "Mass Effect Trilogy Save" string doesn't show any save files until I remove the filter.

Screenshot_20210629_201933
Screenshot_20210629_202008

Ps4 save Support

Could you Add support to Load in .ps4sav files (Me2/3 since they are not encrypted can be loaded)
Me1 format from SW has the Encryption layer taken off but the format under is the exact same If you have the ability to Skip the ME1 Crypt when it sees a .ps4save file could import, and then on Save Skip Me1 encryption again

Great Program.
hope it helps .. Save
Jane00_01.zip

Installation fails on Windows 11 on Parallels (x64 not recognized)

Installation of TSE seems not possible on windows 11 Home emulated on Parallels.
The (strange) error message that shows up when I launch the installer states:

"This program can be only installed on version of windows designed for x64 CPU architecture"

...that should be exactly my case 🤔

Those are my system data, hopping will be useful for the identification and resolution of the problem I'm facing:

Parallels Desktop v18.1.0 (53311)
Windows 11 Home
Vers.: 22H2
Build: 22621.525
Windows Feature Experience Pack 1000.22634.1000.0
Processor: Apple Silicon   3.20 GHz  (4 processori)
RAM: 6,00 GB
System type: 64 bit, ARM based processor

Thanks in advice

Export plot/unlockable variables similar to face morph exports?

Say I've done a trilogy playthrough with femShep. Now I want to replay do a SaveGamePlus PT or just replay ME2/ME3, but with mShep (possibly to experience a different romance option or whatever) but I would like the character to have all the same ME1 (and/or ME2-3) plot/equipment/etc variables as my previous playthrough, so I can decide when and where I want to make different choices.

Currently the only way to do this is to open the two savegame files side-by-side and replicate every variable individually.

Since I really can't import a mShep face morph into a femShep savegame, it would really be best to be able to export the femShep variables and import those (simply changing the "Player is female" flags.)

The way I see it working is to have an "Import Plot Variables" button or menu option, then you select the savegame whose variables you want to replicate. Then, if the targeted savegame has different gender flags from the destination savegame, you get a popup confirming that you want to change the gender, and the appropriate variables are changed upon import.

Or simply don't add any gender flags to the import and preserve the destinations gender flags. That would be easier, I suppose.

Alternatively, there could be an "Export plot variables" button or menu option, and a file (preferably one that can be edited in a text editor, the way the .ron files can) would be generated that could later be imported into another savegame.

Would this be possible, or am I missing something obvious for accomplishing this that's already available?

[ME3LE] Marking bonus powers in the save file does nothing

As the title says, once your local_profile file in the Saves directory gets corrupted, loading any save from any career with bonus powers marked as unlocked and avaialble doesn't do anything -- the console for purchasing them in the Medbay is empty.

I guess this is more of a feature request -- there should be a way to edit local_profile as well (old local profile editor for the original ME3 cannot decompress the new file), and set the bonus powers to unlocked.

Feature Request: export headmorph in AMM-friendly XML formatting

I'm trying to add a bunch of my favorite headmorphs to the list of available presets in Appearance Mod Menu. I know you can add them to the character creator with just the face code, but adding them to AMM is a bit more complex.

I'd be more than happy to help implement this feature, I'm looking through the project now to see if I can monkey-see/monkey-do the export into this format. But I might have questions or need guidance.

Here is what the morph presets look like in AMM:

				<!-- Rihanna -->
				<Value type="3">(
					comment="Rihanna",
					Gender=Gender_Female,
					ChoiceEntry=(srChoiceName=4216103),
					number=19,
					Delta=(
						HeadMesh="None",
						HairMesh="biog_hmf_hir_pro.Hair_Classy.HMF_HIR_Cls_MDL_CC",
						RemoveCombatHairMeshOverride=true,
						AccessoryMeshDeltas[0]=(Name="*",Remove=true),
						MorphFeatureDeltas[0]=(Feature="*",Remove=true),
						MorphFeatureDeltas[1]=(Feature="race_yngBlk",Offset="0"),
						MorphFeatureDeltas[2]=(Feature="race_oldBlk",Offset="0"),
						MorphFeatureDeltas[3]=(Feature="race_yngAsn",Offset="0"),
						MorphFeatureDeltas[4]=(Feature="race_oldAsn",Offset="0"),
						MorphFeatureDeltas[5]=(Feature="race_yngCauc",Offset="0"),
						MorphFeatureDeltas[6]=(Feature="race_oldCauc",Offset="0"),
						MorphFeatureDeltas[7]=(Feature="race_iconic",Offset="0"),
						MorphFeatureDeltas[8]=(Feature="race_Ashley",Offset="0.7"),
						MorphFeatureDeltas[9]=(Feature="race_liara",Offset="0"),
						MorphFeatureDeltas[10]=(Feature="neck_wide",Offset="0.2"),
						MorphFeatureDeltas[11]=(Feature="neck_Thin",Offset="0"),
						MorphFeatureDeltas[12]=(Feature="shape_chubby",Offset="0"),
						MorphFeatureDeltas[13]=(Feature="shape_skinny",Offset="0.17999999"),
						MorphFeatureDeltas[14]=(Feature="cheek_BonesOut",Offset="0.4800001"),
						MorphFeatureDeltas[15]=(Feature="cheek_BonesIn",Offset="0"),
						MorphFeatureDeltas[16]=(Feature="cheek_DepthFront",Offset="0.16000004"),
						MorphFeatureDeltas[17]=(Feature="cheek_DepthBack",Offset="0"),
						MorphFeatureDeltas[18]=(Feature="cheek_Gaunt",Offset="0.02666667"),
						MorphFeatureDeltas[19]=(Feature="ears_large",Offset="0"),
						MorphFeatureDeltas[20]=(Feature="ears_small",Offset="0.16"),
						MorphFeatureDeltas[21]=(Feature="ears_In",Offset="0.32000002"),
						MorphFeatureDeltas[22]=(Feature="ears_Out",Offset="0"),
						MorphFeatureDeltas[23]=(Feature="eyeShape_droop",Offset="0.7"),
						MorphFeatureDeltas[24]=(Feature="eyeShape_sleepy",Offset="0"),
						MorphFeatureDeltas[25]=(Feature="eyeShape_SlantUp",Offset="0"),
						MorphFeatureDeltas[26]=(Feature="eyeShape_highInside",Offset="0"),
						MorphFeatureDeltas[27]=(Feature="eyeShape_flatTop",Offset="0"),
						MorphFeatureDeltas[28]=(Feature="eyes_SlantDown",Offset="0"),
						MorphFeatureDeltas[29]=(Feature="eyeShape_liara",Offset="0"),
						MorphFeatureDeltas[30]=(Feature="eyeShape_Ashley",Offset="0"),
						MorphFeatureDeltas[31]=(Feature="eyeShape_yngAsn",Offset="0"),
						MorphFeatureDeltas[32]=(Feature="eyes_PosUp",Offset="0"),
						MorphFeatureDeltas[33]=(Feature="eyes_PosDown",Offset="0.09333333"),
						MorphFeatureDeltas[34]=(Feature="eyes_Wide",Offset="0.05333338"),
						MorphFeatureDeltas[35]=(Feature="eyes_narrow",Offset="0"),
						MorphFeatureDeltas[36]=(Feature="eyes_Forward",Offset="0"),
						MorphFeatureDeltas[37]=(Feature="eyes_Back",Offset="0"),
						MorphFeatureDeltas[38]=(Feature="eyes_browForward",Offset="0.33000004"),
						MorphFeatureDeltas[39]=(Feature="eyes_browBack",Offset="0"),
						MorphFeatureDeltas[40]=(Feature="eyes_browUp",Offset="0"),
						MorphFeatureDeltas[41]=(Feature="eyes_browDown",Offset="0.3333333"),
						MorphFeatureDeltas[42]=(Feature="jaw_chinUp",Offset="0.08000002"),
						MorphFeatureDeltas[43]=(Feature="jaw_chinDown",Offset="0"),
						MorphFeatureDeltas[44]=(Feature="jaw_chinOut",Offset="0"),
						MorphFeatureDeltas[45]=(Feature="jaw_chinIn",Offset="0026666641"),
						MorphFeatureDeltas[46]=(Feature="jaw_chinThin",Offset="0"),
						MorphFeatureDeltas[47]=(Feature="jaw_chinWide",Offset="0.24"),
						MorphFeatureDeltas[48]=(Feature="jaw_wide",Offset="0"),
						MorphFeatureDeltas[49]=(Feature="jaw_narrow",Offset="0.19999993"),
						MorphFeatureDeltas[50]=(Feature="mouthShape_iconic",Offset="0"),
						MorphFeatureDeltas[51]=(Feature="mouthShape_ashley",Offset="0"),
						MorphFeatureDeltas[52]=(Feature="mouthShape_liara",Offset="0"),
						MorphFeatureDeltas[53]=(Feature="mouthShape_oldAsn",Offset="0"),
						MorphFeatureDeltas[54]=(Feature="mouthShape_oldBlk",Offset="0"),
						MorphFeatureDeltas[55]=(Feature="mouthShape_yngBlk",Offset="0"),
						MorphFeatureDeltas[56]=(Feature="mouthShape_yngCauc",Offset="0"),
						MorphFeatureDeltas[57]=(Feature="mouthShape_yngAsn",Offset="1"),
						MorphFeatureDeltas[58]=(Feature="mouth_Forward",Offset="0.32000008"),
						MorphFeatureDeltas[59]=(Feature="mouth_Back",Offset="0"),
						MorphFeatureDeltas[60]=(Feature="mouth_Wide",Offset="0"),
						MorphFeatureDeltas[61]=(Feature="mouth_Narrow",Offset="0.2"),
						MorphFeatureDeltas[62]=(Feature="mouth_lipsFat",Offset="0.60000014"),
						MorphFeatureDeltas[63]=(Feature="mouth_lipsThin",Offset="0"),
						MorphFeatureDeltas[64]=(Feature="mouth_Up",Offset="0"),
						MorphFeatureDeltas[65]=(Feature="mouth_Down",Offset="0.22"),
						MorphFeatureDeltas[66]=(Feature="nose_BridgeOut",Offset="0"),
						MorphFeatureDeltas[67]=(Feature="nose_BridgeIn",Offset="0"),
						MorphFeatureDeltas[68]=(Feature="nose_BridgeThin",Offset="0"),
						MorphFeatureDeltas[69]=(Feature="nose_BridgeWide",Offset="0.8"),
						MorphFeatureDeltas[70]=(Feature="nose_nostrilsnarrow",Offset="0"),
						MorphFeatureDeltas[71]=(Feature="nose_nostrilsWide",Offset="0.6"),
						MorphFeatureDeltas[72]=(Feature="nose_tipNarrow",Offset="0"),
						MorphFeatureDeltas[73]=(Feature="nose_tipWide",Offset="0.55"),
						MorphFeatureDeltas[74]=(Feature="nose_TipDown",Offset="0.2"),
						MorphFeatureDeltas[75]=(Feature="nose_TipUp",Offset="0"),
						MorphFeatureDeltas[76]=(Feature="nose_topOut",Offset="0"),
						MorphFeatureDeltas[77]=(Feature="nose_topIn",Offset="0"),
						MorphFeatureDeltas[78]=(Feature="nose_Up",Offset="0.08000002"),
						MorphFeatureDeltas[79]=(Feature="nose_Down",Offset="0"),
						MorphFeatureDeltas[80]=(Feature="nose_BottomOut",Offset="0.13000003"),
						MorphFeatureDeltas[81]=(Feature="nose_BottomIn",Offset="0"),
						ScalarParameterDeltas[0]=(Name="*",Remove=true),
						ScalarParameterDeltas[1]=(Name="HED_Scalp_Mask_Scalar",Value="1"),
						ScalarParameterDeltas[2]=(Name="HED_Blush_Scalar",Value="0.28"),
						ScalarParameterDeltas[3]=(Name="HED_Addn_Spec_Lips_Scalar",Value="0.3"),
						ScalarParameterDeltas[4]=(Name="HED_Addn_SPwr_Lips_Scalar",Value="7"),
						ScalarParameterDeltas[5]=(Name="HED_Norm_Blend",Value="0"),
						ScalarParameterDeltas[6]=(Name="HAIR_Shine_Desaturate_Scalar",Value="0"),
						ScalarParameterDeltas[7]=(Name="HED_Scalp_PhongSpec_Scalar",Value="3"),
						ScalarParameterDeltas[8]=(Name="Highlight1SpecExp_Scalar",Value="50"),
						ScalarParameterDeltas[9]=(Name="Highlight2SpecExp_Scalar",Value="250"),
						ScalarParameterDeltas[10]=(Name="Hair_Spec_Aniso_Exp_Scalar",Value="3.5"),
						ScalarParameterDeltas[11]=(Name="HAIR_Spec_Contribution_Scalar",Value="1.25"),
						ScalarParameterDeltas[12]=(Name="HED_Addn_Colour_02_Scalar",Value="1"),
						ScalarParameterDeltas[13]=(Name="HED_Addn_Blowout_Scalar",Value="1.5"),
						ScalarParameterDeltas[14]=(Name="HED_Scar_Scalar",Value="0"),
						ScalarParameterDeltas[15]=(Name="HED_Addn_Blend_Scalar",Value="1"),
						ScalarParameterDeltas[16]=(Name="HED_Mask_Scalar",Value="0"),
						ScalarParameterDeltas[17]=(Name="HED_Lips_Tint_Scalar",Value="1"),
						ScalarParameterDeltas[18]=(Name="HED_EyeShadow_Tint_Scalar",Value="1"),
						ScalarParameterDeltas[19]=(Name="HED_Brow_Tint_Scalar",Value="1.1"),
						ScalarParameterDeltas[20]=(Name="HED_SPwr_Scalar",Value="5.354"),
						ScalarParameterDeltas[21]=(Name="HED_Frek_RedChannel_Scalar",Value="0"),
						ScalarParameterDeltas[22]=(Name="HED_Frek_GreenChannel_Scalar",Value="0.23099999"),
						ScalarParameterDeltas[23]=(Name="HAIR_SPwr_Scalar",Value="1.5"),
						ScalarParameterDeltas[24]=(Name="HED_Spec_NoBrow",Value="1"),
						ScalarParameterDeltas[25]=(Name="HED_Custom_Scar_Scalar",Value="1"),
						ScalarParameterDeltas[26]=(Name="HED_Scar_Diffuse_Scalar",Value="0"),
						ScalarParameterDeltas[27]=(Name="HED_Addn_Colour_Blend_Scalar",Value="0"),
						ScalarParameterDeltas[28]=(Name="HED_Addn_Multiply_Scalar",Value="0"),
						ScalarParameterDeltas[29]=(Name="HED_Addn_Add_Scalar",Value="0"),
						ScalarParameterDeltas[30]=(Name="Hightlight1Intensity",Value="2"),
						ScalarParameterDeltas[31]=(Name="Hightlight2Intensity",Value="2"),
						ScalarParameterDeltas[32]=(Name="HED_Scalp_Buzzcut_Alpha_Scalar",Value="0"),
						ScalarParameterDeltas[33]=(Name="HED_Scalp_Mask_OverlayKill_Scalar",Value="0"),
						ScalarParameterDeltas[34]=(Name="HAIR_Mask_Alpha_Scalar",Value="0"),
						VectorParameterDeltas[0]=(Name="*",Remove=true),
						VectorParameterDeltas[1]=(Name="HED_Blush_Vector",Value=(R="0.38891026",G="0.06772459",B="0.020951131",A="1")),
						VectorParameterDeltas[2]=(Name="SkinTone",Value=(R="0.37361503",G="0.13902245",B="0.06381487",A="1")),
						VectorParameterDeltas[3]=(Name="EYE_White_Colour_Vector",Value=(R="0.6253447",G="0.52344316",B="0.42050794",A="1")),
						VectorParameterDeltas[4]=(Name="HED_Spec_Add_Vector",Value=(R="0.3586539",G="0.3636039",B="0.34886482",A="1")),
						VectorParameterDeltas[5]=(Name="HED_Scar_Colour_Vector",Value=(R="0.8045591",G="0.7082978",B="0.6523701",A="1")),
						VectorParameterDeltas[6]=(Name="EYE_Iris_Colour_Vector",Value=(R="0.51139784",G="0.13609855",B="0.052841626",A="1")),
						VectorParameterDeltas[7]=(Name="HED_Hair_Colour_Vector",Value=(R="0.4259053",G="0.03561437",B="0.44787085",A="1")),
						VectorParameterDeltas[8]=(Name="HED_Addn_Colour_Vector",Value=(R="0.025371278",G="0.0033027031",B="0.026548684",A="1")),
						VectorParameterDeltas[9]=(Name="blonde",Value=(R="0.025371278",G="0.0033027031",B="0.026548684",A="1")),
						VectorParameterDeltas[10]=(Name="HED_Mask_Vector",Value=(R="0",G="0",B="0",A="1")),
						VectorParameterDeltas[11]=(Name="HED_Lips_Tint_Vector",Value=(R="0",G="0",B="0",A="1")),
						VectorParameterDeltas[12]=(Name="HED_EyeShadow_Tint_Vector",Value=(R="0.019917838",G="0.004559755",B="0.011126082",A="1")),
						VectorParameterDeltas[13]=(Name="HED_Brow_Tint_Vector",Value=(R="0.009021492",G="0.0077510276",B="0.009021492",A="1")),
						VectorParameterDeltas[14]=(Name="HED_Frek_RedChannel_Vector",Value=(R="0",G="0",B="0",A="1")),
						VectorParameterDeltas[15]=(Name="HED_Frek_GreenChannel_Vector",Value=(R="0.000056921766",G="0.000005077052",B="0.000005077052",A="1")),
						VectorParameterDeltas[16]=(Name="HED_Aniso_Colour01_Vector",Value=(R="0.7154654",G="0.45345646",B="0.3992933",A="1")),
						VectorParameterDeltas[17]=(Name="HED_Aniso_Colour02_Vector",Value=(R="0.66611695",G="0.37361503",B="0.31576276",A="1")),
						VectorParameterDeltas[18]=(Name="HED_Teeth_Vector",Value=(R="0.82772577",G="0.3537409",B="0.22713652",A="1")),
						VectorParameterDeltas[19]=(Name="HED_Scar_Vector",Value=(R="0",G="0",B="0",A="1")),
						VectorParameterDeltas[20]=(Name="Highlight1Color",Value=(R="0.95736957",G="0",B="0",A="1")),
						VectorParameterDeltas[21]=(Name="Highlight2Color",Value=(R="0.95736957",G="0",B="0",A="1")),
						TextureParameterDeltas[0]=(Name="*",Remove=true),
						TextureParameterDeltas[1]=(Name="HED_Scalp_Diff",Texture="biog_hmf_hir_pro.Hair_Pulled02.HMF_HIR_SCP_Pll02_Diff"),
						TextureParameterDeltas[2]=(Name="HED_Scalp_Norm",Texture="biog_hmf_hir_pro.Hair_Pulled02.HMF_HIR_SCP_Pll02_Norm"),
						TextureParameterDeltas[3]=(Name="HAIR_Diff",Texture="biog_hmf_hir_pro.Global.HAIR_Long_Diff"),
						TextureParameterDeltas[4]=(Name="HED_Diff",Texture="BIOG_HMF_HED_PROMorph_R.Diffuse.HMF_HED_PROBase_Face_Diff"),
						TextureParameterDeltas[5]=(Name="HED_Addn",Texture="BIOG_HMF_HED_PROMorph_R.Brow.HMF_HED_PRO_Add4"),
						TextureParameterDeltas[6]=(Name="HED_Mask",Texture="BIOG_HMM_HED_PROMorph.Masks.HED_PRO_Mask3"),
						TextureParameterDeltas[7]=(Name="HED_Lash_Diff",Texture="BIOG_HMF_HED_PROMorph_R.Custom.HMF_HED_PROLash_Opac_M02"),
						TextureParameterDeltas[8]=(Name="HED_Frek",Texture="BIOG_HMM_HED_PROMorph.Freckles.HMM_HED_PROBase_Face_Frk3"),
						TextureParameterDeltas[9]=(Name="HED_Norm",Texture="BIOG_HMF_HED_PROMorph_R.Normal.HMF_HED_PROBase_Face_Norm"),
						TextureParameterDeltas[10]=(Name="HED_Norm_02",Texture="BIOG_HMF_HED_PROMorph_R.Normal.HMF_HED_PROOld1_Face_Norm"),
						TextureParameterDeltas[11]=(Name="HED_Makeup_Mask",Texture="BIOG_HMF_HED_PROMorph_R.Masks.HMF_HED_PROCustom_MKup_01"),
						TextureParameterDeltas[12]=(Name="HED_Scalp_Spec",Texture="biog_hmf_hir_pro.Hair_Pulled02.HMF_HIR_SCP_Pll02_Mask"),
						TextureParameterDeltas[13]=(Name="HED_Tang",Texture="biog_hmf_hir_pro.Hair_Pulled02.HMF_HIR_SCP_Pll02_Tang"),
						TextureParameterDeltas[14]=(Name="HAIR_Norm",Texture="None"),
						TextureParameterDeltas[15]=(Name="HAIR_Mask",Texture="biog_hmf_hir_pro.Global.HAIR_Long_Diff"),
						TextureParameterDeltas[16]=(Name="HAIR_Tang",Texture="None"),
						TextureParameterDeltas[17]=(Name="HED_Scalp_SpecShift",Texture="None"),
						TextureParameterDeltas[18]=(Name="HED_Scalp_SpecShift2",Texture="None"),
						TextureParameterDeltas[19]=(Name="HAIR_SpecShift",Texture="None"),
						TextureParameterDeltas[20]=(Name="HAIR_SpecShift2",Texture="None"),
						TextureParameterDeltas[21]=(Name="HED_Brow",Texture="BIOG_HMF_HED_PROMorph_R.Brow.HMF_HED_PROCustom_ArchedHighBrow"),
					))
				</Value>

Black screen on start

Hello, I don't know why but I've a black screen with a error message when I start the editor. I've downloaded the required files Visual C++ and I tried to start with the cmd command but still nothing...

TSE error

Display error message if content files are not found

After downloading this program I extracted the files to my desktop, then moved the executable to its own folder and spent 30 minutes wondering what is wrong with the program since most of the options I expected to see were missing. Turns out I had not copied all of the required files to this new folder, but the program was still able to run. Instead of failing silently it would be beneficial to display an error message if the required content files are not present.

cannot call wasm-bindgen imported functions on non-wasm targets

Hi !

Here is my configuration :

  • Intel(R) Core(TM) i3-6100H CPU @ 2.70GHz 2.70 GHz
  • Windows 10 Pro x64 -- version 21H2

I compiled the last version (date: 26th of december 2021 ) because I did not trust the executable files I have found online.

I have only little knowledge in rust, and apparently it seems that a recent code refactory has added new dependencies.

I followed the compilation instructions and got an error when I reach the "make install" phase :

$ cargo make release
[cargo-make] INFO - cargo make 0.35.7
[cargo-make] INFO - Project: trilogy-save-editor
[cargo-make] INFO - Build File: Makefile.toml
[cargo-make] INFO - Task: release
[cargo-make] INFO - Profile: development
[cargo-make] INFO - Running Task: legacy-migration
[cargo-make] INFO - Execute Command: "powershell" "-Command" "npm" "run" "release"

> release
> tailwindcss -i index.css -o target/index.css --jit --minify


Done in 827ms.
[cargo-make] INFO - Execute Command: "trunk" "build" "--dist" "target/dist" "--release"
[cargo-make] ERROR - Error while executing command, error: Os {
    code: 2,
    kind: NotFound,
    message: "Le fichier spécifié est introuvable.",
}
[cargo-make] WARN - Build Failed.

It did not take much time to realize what was wrong and I simply fixed it with :

$ cargo install trunk

Then I tried a cargo run

$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.28s
     Running `target\debug\trilogy-save-editor.exe`
thread 'main' panicked at 'cannot call wasm-bindgen imported functions on non-wasm targets', C:\Users\delev\.cargo\registry\src\github.com-1ecc6299db9ec823\js-sys-0.3.55\src\lib.rs:5412:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: process didn't exit successfully: `target\debug\trilogy-save-editor.exe` (exit code: 101)

Before that, I followed all the lines of the README including the "rustup target add wasm32-unknown-unknown" line, and I tried the whole process twice

$ rustup target add wasm32-unknown-unknown
info: component 'rust-std' for target 'wasm32-unknown-unknown' is up to date

With the backtrace :

$ ./trilogy-save-editor.exe
thread 'main' panicked at 'cannot call wasm-bindgen imported functions on non-wasm targets', C:\Users\delev\.cargo\registry\src\github.com-1ecc6299db9ec823\js-sys-0.3.55\src\lib.rs:5412:9
stack backtrace:
   0: std::panicking::begin_panic<str>
             at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\std\src\panicking.rs:543
   1: js_sys::global::get_global_object::impl$2::get_self::__wbg_self_c6fbdfc2918d5e58
             at C:\Users\delev\.cargo\registry\src\github.com-1ecc6299db9ec823\js-sys-0.3.55\src\lib.rs:5412
   2: js_sys::global::get_global_object::Global::get_self
             at C:\Users\delev\.cargo\registry\src\github.com-1ecc6299db9ec823\js-sys-0.3.55\src\lib.rs:5412
   3: js_sys::global::get_global_object
             at C:\Users\delev\.cargo\registry\src\github.com-1ecc6299db9ec823\js-sys-0.3.55\src\lib.rs:5431
   4: js_sys::global::GLOBAL::__init
             at C:\Users\delev\.cargo\registry\src\github.com-1ecc6299db9ec823\js-sys-0.3.55\src\lib.rs:5390
   5: core::ops::function::FnOnce::call_once<js_sys::Object (*)(),tuple$<> >
             at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\ops\function.rs:227
   6: std::thread::local::lazy::LazyKeyInner<js_sys::Object>::initialize<js_sys::Object,js_sys::Object (*)()>
             at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\std\src\thread\local.rs:431
   7: std::thread::local::fast::Key<js_sys::Object>::try_initialize<js_sys::Object,js_sys::Object (*)()>
             at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\std\src\thread\local.rs:609
   8: std::thread::local::fast::Key<js_sys::Object>::get<js_sys::Object,js_sys::Object (*)()>
             at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\std\src\thread\local.rs:592
   9: js_sys::global::GLOBAL::__getit
             at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\std\src\thread\local.rs:311
  10: std::thread::local::LocalKey<js_sys::Object>::try_with<js_sys::Object,js_sys::global::closure$0,js_sys::Object>
             at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\std\src\thread\local.rs:398
  11: std::thread::local::LocalKey<js_sys::Object>::with<js_sys::Object,js_sys::global::closure$0,js_sys::Object>
             at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\std\src\thread\local.rs:375
  12: js_sys::global
             at C:\Users\delev\.cargo\registry\src\github.com-1ecc6299db9ec823\js-sys-0.3.55\src\lib.rs:5392
  13: web_sys::window
             at C:\Users\delev\.cargo\registry\src\github.com-1ecc6299db9ec823\web-sys-0.3.55\src\lib.rs:31
  14: gloo_utils::window
             at C:\Users\delev\.cargo\registry\src\github.com-1ecc6299db9ec823\gloo-utils-0.1.1\src\lib.rs:6
  15: gloo_utils::document
             at C:\Users\delev\.cargo\registry\src\github.com-1ecc6299db9ec823\gloo-utils-0.1.1\src\lib.rs:11
  16: trilogy_save_editor::main
             at C:\Users\delev\Documents\trilogy-save-editor\src\main.rs:17
  17: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
             at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\ops\function.rs:227
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Seems like a wasm issue. The problem is; I have no idea what it is because I don't do web dev

Googling did not help me

Support MassEffectProfile

It's not really that big deal (and it's a quite different format than saves), though it sits in the same folder, and I'm not aware of existing tools supporting it.
EDIT: I mean, there was "critical mass" (which even had sources) but it's nowhere to be found

Missing options

When I load a save(me3 LE) for example there is no option to change weapon levels anymore. I can't change it for squad mates either

[ME3] Unlocking Reave

I missed the conversation with Kaidan and I did not unlock Reave. When using the save editor to enable Reave, it gets disabled from the save file the moment I use the reassign powers "console". Is there any plot points I missed when I edited the save?

I know I can just set the bonus power to Reave manually, but just wanted to ask for "completeness".

Program won't start on virtualized Windows

When attempting to start this program on Windows 10 running on VMware Fusion, the following terminal window appears for a few fractions of a second after which the program crashes.

Screenshot 2021-06-02 at 8 15 18

Little improvements

  • Point out "End" plot flags in ME1 aren't really meaningful?
  • Add little country flag buttons to switch DLC names (e.g. "Impatto imminente" => "Bring Down the Sky"), so that you can easily switch across languages

Appearance options missing in 1.10.0

Under ME3 - Appearances - Full Body
We appear to be missing the Shade, Spirit and Nightmare options.
They were there in previous versions.
Thank you.

Raw plot data format in file explanation

Hi @KarlitosVII :)

I've just bought ME Legendary Edition and wanted to play ME2 and ME3, having previously played ME1. The problem is that it is impossible to import original ME1 saves into ME2 but I've managed to open my original ME1 save in TSE, as well as some arbitrary LE ME1 save downloaded from the Internet.

Now, I wanted to modify the arbitrary save so that it contains the same choices I made while playing ME1 and I wanted to copy raw plot data. The problem is that there are thousands of Booleans, so I wanted to write a script that will copy values from my save into LE save.

Unfortunately I don't know Rust and it's hard for me to reverse-engineer how to read and write those values from the binary save file itself. Could you point me to a website/document that explains the structure of the save files or do it yourself?

GitHub doesn't support writing direct messages between users and I see that you have chosen to hide your e-mail address, so creating this issue was the only possibility to ask that :)

If that is okay with you, you can use my e-mail address to respond, or add me on LinkedIn.

vcruntime140_1.dll error

Editor (1.13.1) doesn't run. Downloaded here.

Error: The code execution cannot proceed because VCRUNTIME140_1.dll was not found. Reinstalling the program may fix this problem.

vcredist 2010, 2013, 2015, 2019 installed. Both x86 & x64 versions

Casual clothing - Underwear

There was an option in the ME3 Gibbed that had the male Shepard in black boxer briefs.
Can this be added to the mod?

Thank you.

"accepted spectre reinstatement" flag broken

Checking this flag doesn't actually do anything. Either this flag was somehow broken when implementing it in the save editor or another flag somewhere was missed that needs to be activated at the same time as the supposedly faulty flag in order for Shepard's spectre status to get upheld and not "reinstated", perhaps a flag somewhere that says that the "Citadel: The Council" mission was complete. Or it could be an integer, who knows.

I've checked all the flags that say I played ME1 and ME2 and that the save was "imported" from ME2, in addition to the flags that say Anderson was chosen as the councilor, and the council was saved. This issue is not new, I've also encountered it in Gibbed's ME3 save editor (both the original and the various forks), and I've done extensive testing on both the PC and Xbox 360 version of ME3, using different combos of relevant flags on or off, to confirm this issue.

It's strange because when you actually import a file from ME2 where spectre reinstatement was accepted, Shepard's spectre status is upheld but when you try to simulate having "imported" a ME2 file using the trilogy save editor (in additon to Gibbed's save editors) with the same plot point as above, this flag for some reason is broken

HiDPI support

I have a 1440p monitor (and god forbid those poor souls with a 4K one), and I'm killing my eyes trying to read the little text.

Export ME2LE save for importing in old ME3.

Could add an option to export an ME2 LE save in the ME 2 format, so that it could be imported in the old ME3.

As I see it, the only difference between the 2 formats is "me1_import_rewards: Me1ImportRewards," and the save version number.
I was able to get an ME2 Le save to import into old ME3 by just skip serializing that Me1ImportRewards stuff and changing the version number.

Best regards.

360 save games support?

Here are two samples (courtesy by The Tech Game).
Of course I understand if this is too much of a work, though if you could at least get them to convert to pc format.. I always liked the idea of making people ascend, if I can explain.

Major Kyle issue on version 1.13

In release version 1.13 the Major Kyle quest line is flipped. The surrendered is fought and the fought is surrendered. I have tested both were I got the news in the elevator to confirm.

ME1 Changes - Achievements?

Hey,

I'm wondering if the changes we can make to ME1, in particular, can help activate achievements? For example, romancing someone? I forgot to romance someone in ME1, if I edited my save, saved it and reloaded it in the game, would it activate the achievement for me? I just beat the game, so I really don't want to go back just for 1 achievement. lol

[ME3LE] How to mark DLC missions as finished?

For all core missions it is easy to mark them as finished but for Omega DLC and Leviathan DLC there is no easy way to mark them as finished, and also unlock the bonus powers (Flare, Lash, Dominate) and war assets or items they grant.

I guess this is another feature request then? Cheers.

Save as ME2 functionality

Apparently there is a way to import an LE2 save into ME3 (OT). I do not know the flags that need to be flipped but I know some people already do this. Would you consider adding "Save as ME2" functionality for LE2 saves for people who want to play the game in LE1 -> LE2 -> ME3(OT) order? I'm guessing the hard work of noting the flag differences between the saves has already been done. With no multiplayer assets in LE we may never see a full Miranda mod or a full EGM additional squadmate implementation for LE3. Thanks for your consideration.

[ME3LE] How to edit War Asset descriptions?

You can un-authorize Spectre Terminal requests in the Raw Plot section, but this doesn't seem to update the description in the specific War Assets entry.
Is there a way to update the descriptions in each War Asset manually? You can already edit the number of points for each Asset in Raw Data > Player > War Assets.

Steam Deck support via Flatpak

I've recently gotten a Steam Deck, which playes Mass Effect Legendary Edition perfectly, and was wondering about running Trilogy Save Editor on it.

I came across this thread #7 and was able to build the project without any issues on a regular Arch Linux setup, using these commands:

pacman -Sy rustup  
rustup default stable  
rustup target add wasm32-unknown-unknown  
npm update  
cargo install cargo-make trunk  
cargo make release  

So I thought it would be easy enough to copy across or follow the same steps on the Deck, being as it's Arch Linux based too.

However, the Deck's root filesystem is locked down, so regular system packages can't be installed through the package manager (at least, not out of the box - I assume there's a workaround somewhere). So I can't install the dependencies required to build the project, or the libraries required to run it. Copying the built Linux executable across to the Deck resulted in an error of not having libwebkit2gtk installed, but I wasn't able to install it.

Perhaps I could get it working by copying libraries from another machine into the directory, or by finding a way around the file system lockdown, but it's all getting a bit manual. Since I was trying to help someone less Linux-savvy with it, I didn't want the steps to be complex or risky.

The recommended way of installing and running software on the Steam Deck is Flatpaks. I don't know a whole lot about these, but I assume that it'd be possible to set up a Flatpak manifest to build Trilogy Save Editor into a container that includes all the dependencies and libraries.

I'm probably going to look into this myself next week. But I was wondering if you or anyone else had any insight, or had tried this before at all? If not, I'll give it a go myself, would a pull request be welcome to include Flatpak build files?

Failing all of that, hopefully this may serve as a guide for anyone else in the future that's trying to get it working on the Steam Deck!

Legendary Edition, ME2, Project Firewalker-Prothean Ruins, Investigate Dig Site

Legendary Edition, ME2, Project Firewalker-Prothean Ruins, Investigate Dig Site not working.
It's checked in the TSE as completed, but still shows up on my "Assignments".
I went to the planet, scanned and found the site, but it won't let me land or show it as completed.
The rest of the game is also 100% done.

Also, Tali died in the ending, even though everyone was loyal.
Chose the correct team members, Tali (Tech) & Miranda (Lead). Then Miranda (Lead) and Mordin to escort.
Not sure why Tali died.

Please assist.

Thank you,
RLG
ME-2 Assignment stuck

My reputation score is stuck at 1 no matter how many times I try to modify it. (ME3)

Every single time I try to modify my reputation score (not my reputation POINTS score) it simply gets reset back to 1. I heard it as something to do with the paragon and renegade scores added up but I've tried everything and can't see to get the score to change. In fact, I'm midway through the game at Rannoch, and I'm stuck at 1. Is this an issue with my game or with the save or am i just playing the game wrong???

add a new tab "GAW Assets ME3 Compatible"

add a new tab "GAW Assets ME3 Compatible"
add a new plot in Me1KnownPlot.ron

    "GAW Accets ME3 Compatible": PlotCategory(
        booleans: {
            2883: "Retrieved Gavin's data",
            3141: "[The Fan] Met Conrad Verner",
            3142: "[The Fan] Charmed him",
            3899: "[Rita's Sister] Completed assignment",
            5386: "[Scan the Keepers] Accepted quest",
            7164: "Got Elkoss Combine license",
        },
        ints: {
            39: "Citadel: Keepers scanned (0-21)",
            43: "League Medallions (0-10 max 12)",
            48: "Light Metals (0-20 max 34)",
            50: "Heavy Metals (0-20 max34)",
            51: "Gases (0-6 max 10)",
            52: "Rare Earths (0-20 max 36)",
            53: "Prothean Artifact (0-7 max 10)",
            54: "Asari Writings(0-10 max 16)",
            55: "Turian Emblem (0-13 max 17)",
            56: "Salarian ID Tags (0-3 max 4)",
        },
    ),

GAW Assets ME3 Compatible

PS4 SAVE

Hello,

I have not managed to identify with file I can use to make modifications with the SAVEDATA of the PS4.

Or is it necessary to do something else before just using the software?

image

Any way to mark side quests "complete" (grayed out) in journal?

I'm sure there's a way to do this, but maybe I'm just too dense to figure it out. Maybe someone can clarify this. Some quests just linger in the journal as you progress, whether they were failed due to time constraints or otherwise not completed because a certain area or NPC is no longer accessible.

For example. "Citadel: Inspirational Stories" has a bug where if you accept the request and leave the cargo hold without completing it, it can not be finished as none of the photo opportunity "activation" spots will appear anymore. Despite toggling it as "complete" and even messing with different numbers for the "photos taken" value, the only thing that changed (from marking it complete) was Solik disappearing, but the quest remained in the journal, in yellow. The number of photos seemed to have no impact at all.

"Eden Prime: Resistance Movement" is also eternally stuck, highlighted in yellow, in my journal, as I missed the third info terminal there. With this one, checking the "assisted resistance" option had no effect on journal progress, either, though I can't find any way to change the amount of info terminals/intel accessed.

I am also not aware of any changes in credits or war assets from these edits, either, though they may be counted, just not pop a notification like usual.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.