fnr1r / kadishutu

A save editor for Shin Megami Tensei V: Vengeance.
2 stars 0 forks source link
save-editor shin-megami-tensei-5-vengance shin-megami-tensei-v-vengance

Qadištu (カディシュトゥ, Kadishutu) save editor

A save editor for Shin Megami Tensei V: Vengeance.

Installation

I recommend installing this with pipx.

pipx install git+https://github.com/fnr1r/kadishutu.git

Regular pip might also work, but it also might not due to PEP 668. It's also more of a hastle. Pipx is built for installing Python apps and handles updates better.

In other words, if you want to update, run:

pipx upgrade kadishutu

Here's more info on pipx.

Binaries are also available, but because they're built with pyinstaller, they might get flagged by your antivirus.

Additional setup

Some data is not bundled with the editor. While not strictly necesary, adding it gives you a better experience with the editor.

The files can be dumped/saved/exported with umodel.

(don't use the Linux version, it's outdated)

Game data

Game/Blueprints/Gamedata/BinTable/GodParameter/Table/GodParameterDataTable.uexp

(GodParameter means Miracle)

Game image data

Game/Design/UI/CharaIcon/Textures/*
Game/Design/UI/Icon/Element/Textures/icon_element_01.tga
Game/Design/UI/LoadingCharaIcon/*

App data directory

For Linux, it's usually:

$HOME/.local/share/kadishutu

For Windows, it's:

$HOME/AppData/Local/kadishutu

And for macOS, it's:

$HOME/Library/Application Support/kadishutu

The app can also be made portable by setting the PORTABLE_APP environment variable. Then data is stored in/loaded from:

./_appdata/data

(more info in paths.py)

Usage

GUI

You can open the GUI by running kadishutu gui $OPTIONALLY_A_SAVE_FILE in a terminal or by double-clicking the executable.

In a terminal

Available subcommands:

Edit subcommand

DLC

As a library

from kadishutu import DecryptedSave, GameSaveEditor
from pathlib import Path

path = Path(...)
savefile = EncryptedSave.open(path).decrypt()
game = SaveEditor(savefile)

stats = game.player.stats
stats.max_with_sbis()
stats.current.hp = 999
stats.current.mp = 999

# Yes. This surprisingly works.
stats.current.strength = 0xffff

game.player.healable.hp = 999
game.player.healable.mp = 999
game.macca = 9999999
game.items.from_name("Big Glory Crystal").amount = 99

savefile.hash_update()
savefile.encrypt().save(path)

What works?

NOTE: This is tested with the Switch version of the game (010069C01AB82000 with all DLCs more specifically). It might work with the PC version.

What doesn't?

What's planned?

FAQ

Changes made to resistances are reverted

This is expected (at least for demons) since those values are only copies.

Changes made to skill potentials are reverted

If the skill potential of a demon is below 1, the skill potential can't be increased (neither in-game with sutras, nor by editing).

As for the player, it might be recalculated based on bought miracles.

Documentation

The documentation for the save files is in the docs folder:

GameSave.md SysSave.md

Credits

And some save editors for the OG version:

External links

This project is also on GameBanana.