summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-15 07:15:09 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-15 07:15:09 +0000
commit132eb85118f95f81a0ebf3225b8baec5618e8315 (patch)
treef73662f3cffa5ae03cd89505ac27aba5385e11da
parent21260ccb6797b0ad4864dd7217aa9b05ad2546b4 (diff)
automatic import of python-bl3-cli-saveedit
-rw-r--r--.gitignore1
-rw-r--r--python-bl3-cli-saveedit.spec1498
-rw-r--r--sources1
3 files changed, 1500 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..8a03c28 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/bl3-cli-saveedit-1.16.0.tar.gz
diff --git a/python-bl3-cli-saveedit.spec b/python-bl3-cli-saveedit.spec
new file mode 100644
index 0000000..8dbe848
--- /dev/null
+++ b/python-bl3-cli-saveedit.spec
@@ -0,0 +1,1498 @@
+%global _empty_manifest_terminate_build 0
+Name: python-bl3-cli-saveedit
+Version: 1.16.0
+Release: 1
+Summary: Borderlands 3 Savegame Editor
+License: zlib/libpng
+URL: https://github.com/apocalyptech/bl3-cli-saveedit
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/e6/70/21116e3b43574da647c8dc54e047329bbdbcbac5fac43e486afbcd36cab5/bl3-cli-saveedit-1.16.0.tar.gz
+BuildArch: noarch
+
+Requires: python3-protobuf
+
+%description
+# Borderlands 3 Commandline Savegame/Profile Editor
+
+This project is a commandline Python-based Borderlands 3 Savegame
+and Profile Editor. It's a companion to the very similar
+[CLI editor for BL2/TPS](https://github.com/apocalyptech/borderlands2),
+and provides some very similar functionality. It can be used
+to level up your characters, unlock Mayhem modes early in the
+game, unlock TVHM, add SDUs, unlock equipment slots, and more.
+
+This editor has only been tested on PC Savegames -- other platforms'
+savegames are not supported at the moment.
+
+Please keep the following in mind:
+
+- This app does not have any graphical interface. You must be
+ on a commandline in order to use it.
+- The app has only very limited item-editing capability at the
+ moment, which is restricted to:
+ - Item Levels can be changed
+ - Mayhem Level can be set on items
+- It does not offer any direct ability to alter Guardian Rank status.
+- While I have not experienced any data loss with the app,
+ **take backups of your savegames before using this**, and
+ keep in mind that it could end up corrupting your saves. If
+ you do encounter any data loss problems, please contact me
+ and I'll try to at least fix whatever bug caused it.
+
+# Table of Contents
+
+- [Installation](#installation)
+ - [Upgrading](#upgrading)
+ - [Notes for People Using Windows](#notes-for-people-using-windows)
+ - [Running from Github](#running-from-github)
+ - [Finding Savegames](#finding-savegames)
+- [Editor Usage](#editor-usage)
+- [TODO](#todo)
+- [Credits](#credits)
+- [License](#license)
+- [Other Utilities](#other-utilities)
+- [Changelog](#changelog)
+
+# Installation
+
+This editor requires [Python 3](https://www.python.org/), and has been
+tested on 3.7, 3.8, and 3.9. It also requires the [protobuf package](https://pypi.org/project/protobuf/).
+
+The easiest way to install this app is via `pip`/`pip3`. Once Python 3 is
+installed, you should be able to run this to install the app:
+
+ pip3 install bl3-cli-saveedit
+
+Once installed, there should be a few new commandline utilities available
+to you. The main editor is `bl3-save-edit`, and you can see its possible
+arguments with `-h`/`--help`:
+
+ bl3-save-edit -h
+
+There's also a `bl3-save-info` utility which just shows some information
+about a specified savefile. You can see its possible arguments with
+`-h`/`--help` as well:
+
+ bl3-save-info -h
+
+If you've got a raw savegame protobuf file that you've hand-edited (or
+otherwise processed) that you'd like to import into an existing savegame,
+you can do that with `bl3-save-import-protobuf`:
+
+ bl3-save-import-protobuf -h
+
+Alternatively, if you've got a savegame exported as JSON that you'd like
+to import into an existing savegame, you can do that with
+`bl3-save-import-json`:
+
+ bl3-save-import-json -h
+
+Finally, there's a utility which I'd used to generate my
+[BL3 Savegame Archive Page](http://apocalyptech.com/games/bl-saves/bl3.php).
+This one won't be useful to anyone but me, but you can view its arguments
+as well, if you like:
+
+ bl3-process-archive-saves -h
+
+There are also profile-specific versions of most of those commands, which
+can be used to edit the main BL3 `profile.sav`:
+
+ bl3-profile-edit -h
+ bl3-profile-info -h
+ bl3-profile-import-protobuf -h
+ bl3-profile-import-json -h
+
+### Upgrading
+
+When a new version is available, you can update using `pip3` like so:
+
+ pip3 install --upgrade bl3-cli-saveedit
+
+You can check your current version by running any of the apps with the
+`-V`/`--version` argument:
+
+ bl3-save-info --version
+
+### Notes for People Using Windows
+
+This is a command-line utility, which means there's no graphical interface,
+and you'll have to run it from either a Windows `cmd.exe` prompt, or presumably
+running through PowerShell should work, too. The first step is to
+install Python:
+
+- The recommended way is to [install Python from python.org](https://www.python.org/downloads/windows/).
+ Grab what's available in the 3.x series (at time of writing, that's 3.9.4),
+ and when it's installing, make sure to check the checkbox which says something
+ like "add to PATH", so that you can run Python from the commandline directly.
+- If you're on Windows 10, you can apparently just type `python3` into a command
+ prompt to be taken to the Windows store, where you can install Python with
+ just one click. I've heard reports that this method does *not* provide the
+ ability to add Python to your system PATH, though, so it's possible that
+ running it would be more complicated.
+
+When it's installed, test that you can run it from the commandline. Open up
+either `cmd.exe` or PowerShell, and make sure that you see something like this
+when you run `python -V`:
+
+ C:\> python -V
+ Python 3.9.4
+
+If that works, you can then run the `pip3 install bl3-cli-saveedit` command
+as mentioned above, and use the commandline scripts to edit to your heart's
+content.
+
+### Running from Github
+
+Alternatively, if you want to download or run the Github version of
+the app: clone the repository and then install `protobuf` (you can
+use `pip3 install -r requirements.txt` to do so, though a `pip3 install protobuf`
+will also work just fine).
+
+You can then run the scripts directly from the Github checkout, though
+you'll have to use a slightly different syntax. For instance, rather than
+running `bl3-save-edit -h` to get help for the main savegame editor, you
+would run:
+
+ python -m bl3save.cli_edit -h
+
+The equivalents for each of the commands are listed in their individual
+README files, linked below.
+
+### Finding Savegames
+
+This app doesn't actually know *where* your savegames or profiles are located.
+When you give it a filename, it'll expect that the file lives in your "current"
+directory, unless the filename includes all its path information. When launching
+a `cmd.exe` on Windows, for instance, you'll probably start out in your home
+directory (`C:\Users\username`), but your savegames will actually live in a
+directory more like `C:\Users\username\My Documents\My Games\Borderlands 3\Saved\SaveGames\<numbers>\`.
+The easiest way to run the utilities is to just use `cd` to go into the dir
+where your saves are (or otherwise launch your commandline in the directory you
+want). Otherwise, you could copy the save into your main user dir (and then
+copy back after editing), or even specify the full paths with the filenames.
+
+# Editor Usage
+
+For instructions on using the Savegame portions of the editor, see
+[README-saves.md](https://github.com/apocalyptech/bl3-cli-saveedit/blob/master/README-saves.md).
+
+FOr instructions on using the Profile portions of the editor, see
+[README-profile.md](https://github.com/apocalyptech/bl3-cli-saveedit/blob/master/README-profile.md).
+
+# TODO
+
+- Would anyone appreciate an option to *delete* Fabricators? Hm.
+- Would be nice to have some anointment-setting functions in here.
+- Did we want a function to *clear* Vault Card progress?
+- PS4 Support (for already-unlocked saves, anyway)
+- If we fail to read a savefile or profile, might be nice to *actually* check
+ if it's the other of profile-or-savefile, and give a more helpful message in
+ those cases.
+- Something a bit more Enum-like for various things in `__init__.py`; I
+ know that's not very Pythonic, but when dealing with extra-Python data
+ formats, one must sometimes make exceptions.
+- Unit tests?
+
+# Credits
+
+The encryption/decryption stanzas in `BL3Save.__init__` and `BL3Save.save_to`
+were [helpfully provided by Gibbed](https://twitter.com/gibbed/status/1246863435868049410?s=19)
+(rick 'at' gibbed 'dot' us), so many thanks for that! The protobuf definitions
+are also provided by Gibbed, from his
+[Borderlands3Protos](https://github.com/gibbed/Borderlands3Protos) repo,
+and used with permission. Gibbed also kindly provided the exact hashing
+mechanism used to work with weapon skins and trinkets.
+
+The rest of the savegame format was gleaned from 13xforever/Ilya's
+`gvas-converter` project: https://github.com/13xforever/gvas-converter
+
+Many thanks also to Baysix, who endured an awful lot of basic questions about
+pulling apart item serial numbers. Without their help, we wouldn't have
+item level editing (or nice item names in the output)!
+
+Basically what I'm saying is that anything remotely "hard" in here is all thanks
+to lots of other folks. I'm just pasting together all their stuff. Thanks, all!
+
+# License
+
+All code in this project is licensed under the
+[zlib/libpng license](https://opensource.org/licenses/Zlib). A copy is
+provided in [COPYING.txt](COPYING.txt).
+
+# Other Utilities
+
+Various BL3 Savegame/Profile editors have been popping up, ever since Gibbed
+released the encryption details. Here's a few which could be more to your
+liking, if you didn't want to use this one for whatever reason:
+
+- [FromDarkHell's BL3 Save/Profile Editor](https://github.com/FromDarkHell/BL3SaveEditor) -
+ Written in C#, has EXE downloads for ease of use on Windows.
+- [Zak's Borderlands 3 Saver Editor](https://github.com/ZakisM/bl3_save_edit) - Written
+ in Rust, and is cross-platform. Edits both saves and profiles.
+- [Raptor's Editor](https://bl3.swiss.dev/) - This is a web-fronted editor,
+ though it uses a [local executable](https://github.com/cfi2017/bl3-save/releases)
+ to do all the work. Sourcecode is available, and it works on Windows, Mac,
+ and Linux. Coded in [Go](https://golang.org/).
+- [HackerSmaker's CSave Editor](https://github.com/HackerSmacker/CSave) - Cross-platform
+ commandline editor written in C. Has a terminal (ncurses) UI on UNIX-like OSes.
+
+A couple others exist but as of July 2021, are out of date and not really great
+for use on newer saves. Here they are, though, in case they get updated without
+me noticing:
+
+- [sandsmark's borderlands3-save-editor](https://github.com/sandsmark/borderlands3-save-editor) -
+ Written in C++ with Qt for GUI. Is still in development. Native downloads
+ for Windows, but should compile fine on other platforms.
+
+In Memoriam: Baysix, the author of the original web-based editor at bl3editor.com,
+passed away in early 2021, and that editor is now permanently offline. RIP!
+
+# Changelog
+
+**v1.16.0** - November 18, 2021
+ - Updated name of "Seventh Sense (unknown version)" to "Seventh Sense (purple
+ version)", since realizing that it's now a valid drop from the Diamond
+ Armory (presumably since DLC5's release).
+ - Updated for Vault Card 3 patch:
+ - Data Updates (to understand new gear)
+ - Vault Card 3 Keys/Chests
+
+**v1.15.1** - August 11, 2021
+ - Updated with some Character Heads which were shipped with the Vault Card 2
+ update but overlooked for 1.15.0.
+
+**v1.15.0** - August 5, 2021
+ - Updated for Vault Card 2 patch:
+ - Data Updates (to understand new gear)
+ - Vault Card 2 Keys/Chests
+ - Updated Bank SDU count
+
+**v1.14.0** - July 7, 2021
+ - Added `--mission-paths` to `bl3-save-info`
+ - Added `--delete-pt1-mission` and `--delete-pt2-mission` to `bl3-save-edit`
+ - Added options to clear seasonal event challenge progress (Bloody Harvest,
+ Broken Hearts, Revenge of the Cartels)
+
+**v1.13.0** - June 24, 2021
+ - Updated for today's patch
+ - Updated level cap to 72
+ - Updated protobufs
+ - Added `--reverse` option for my Savegame Archive processing script, for some more
+ flexibility on the CSS when outputting HTML
+
+**v1.12.0** - April 11, 2021
+ - Updated with DLC6 (Director's Cut) compatibility.
+ - Support for updated item serial number format
+ - Added `--guardian-keys`, `--vaultcard1-keys`, and `--vaultcard1-chests` arguments
+ for profile editor
+ - Fixed a few item names which weren't being mapped properly
+
+**v1.11.1** - February 12, 2021
+ - Fixed name of the Broken Hearts 2021 weapon trinket "Cosmic Romance" to be "Tentacle
+ Ventricles" like in game -- it was updated with an OakTMS update on Feb 11 by GBX.
+
+**v1.11.0** - February 1, 2021
+ - Added Citizen Science editing functionality to profile editor, thanks
+ to [@apple1417](https://github.com/apple1417/)
+
+**v1.10.4** - January 21, 2021
+ - Updated with the new cosmetics data from today's patch. *(Totally forgot to do that
+ in v1.10.3.)*
+
+**v1.10.3** - January 21, 2021
+ - Updated internal inventory DB with data from today's patch. (No real functionality
+ changes with this.)
+
+**v1.10.2** - November 10, 2020
+ - Updated internal inventory DB with a minor change which was in the previous GBX
+ patch. (Probably no actual functionality changes with this.)
+
+**v1.10.1** - November 10, 2020
+ - A second patch was released, about 12 hours after the Designer's Cut release, which
+ updated the protobufs and was causing us to not read saves properly. This has been
+ fixed up now.
+ - Also require at least protobuf v3.12, which appears to be required as of my
+ latest protobuf generation.
+
+**v1.10.0** - November 9, 2020
+ - Updated with DLC5 (Designer's Cut) support
+
+**v1.9.2** - October 8, 2020
+ - Added in the missed weapon skin "Porphyrophobia," from Bloody Harvest 2020.
+
+**v1.9.1** - September 30, 2020
+ - Fixed unlocking FL4K's "Antisoci4l" head (though you should still get
+ that one [all legit-like](https://gearboxloot.com/products/borderlands-3-mask-skins-head-pack))
+
+**v1.9.0** - September 10, 2020
+ - Updated with DLC4 (Psycho Krieg and the Fantastic Fustercluck) support
+
+**v1.8.2** - July 27, 2020
+ - Updated to allow unlocking the Battle Driver and Devil Tooth weapon trinkets, since
+ the July 23 patch fixed those so that they properly stay in your profile.
+
+**v1.8.1** - July 14, 2020
+ - `--item-mayhem-max` and `--item-mayhem-levels` will now apply Mayhem parts to
+ grenades as well as weapons.
+
+**v1.8.0** - July 11, 2020
+ - Added `--mayhem-seed` option to `bl3-save-edit`, to set the random seed used to
+ determine active Mayhem modifiers. The seed is now shown in the `bl3-save-info`
+ output, as well.
+
+**v1.7.2** - July 6, 2020
+ - Allow characters to use skill trees properly if levelled higher directly from level 1.
+
+**v1.7.1** - June 29, 2020
+ - Added three more DLC3 room decorations that I'd missed orginally, for the profile
+ editor's cosmetic-unlock ability
+ - Added Jetbeast unlocks (both parts and skins)
+
+**v1.7.0** - June 26, 2020
+ - Updated for DLC3 (Bounty of Blood) content
+ - Jetbeast vehicle unlocks are forthcoming, until I can actually test them out.
+ - Added various Guardian Rank processing
+ - For savegames and profiles, added `--zero-guardian-rank`
+ - For only profiles, added `--min-guardian-rank`, `--guardian-rank-rewards`, and
+ `--guardian-rank-tokens`
+ - Added `--unlock cubepuzzle` to reset the Eridian Cube puzzle in Desolation's Edge
+ - Added `--clear-takedowns` to get rid of the Takedown mission-pickup notifications
+ for chars you never intend to do Takedowns with.
+ - Item name processing will now recognize the specific legendary artifact balances
+ added by the Maliwan Takedown update (they're functionally identical to the world-
+ drop versions)
+ - Updated `bl3-process-archive-saves` to wipe out Guardian Rank entirely
+
+**v1.6.2** - June 18, 2020
+ - Allow setting character/item levels higher than the currently-known max, in case
+ users want to pre-level their saves ahead of level cap increases (and in case
+ they don't want to wait for an official update of this app)
+
+**v1.6.1** - June 13, 2020
+ - Updated room decoration/trinket/weaponskin alphabetization to ignore case (so
+ "Casino Banner" sorts before "COV Bat," for instance).
+ - Counts of unlocked cosmetic items in `bl3-profile-info` will now include the
+ "default" cosmetics which are always unlocked, so those counts match the numbers
+ in-game.
+
+**v1.6.0** - June 11, 2020
+ - Updated for extra content introduced by Takedown at the Guardian Breach
+ - Added `--golden-keys` option to `bl3-profile-edit`, to set available Golden Keys
+ - Added `--randomize-guid` option to `bl3-save-edit`
+
+**v1.5.2** - May 23, 2020
+ - Updated item name mapping to include the COM Balances used by Trials bosses, for
+ their dedicated COM drops.
+ - Add in the `--csv` option to allow importing/exporting items into CSV files,
+ instead of just text files (which is the default without `--csv`). Has no effect
+ except on item imports/exports.
+
+**v1.5.1** - May 5, 2020
+ - Fixed alphabetization of COV Buzzaxe room decoration. In the game data it looks
+ like it's called "Psycho Buzzaxe," but the actual in-game label is COV Buzzaxe.
+ - Fixed name displays for "regular" (non-E-Tech, non-Legendary) Maliwan snipers and
+ Tediore pistols.
+ - Updated item name mapping to distinguish between the blue-rarity mission reward
+ version of Redistributor from the legendary version from Maliwan Takedown.
+ - Updated `bl3-process-archive-saves` to clear out some 3rd-playthrough data
+ which earlier versions had accidentally introduced *(only really of interest
+ to myself)*
+
+**v1.5.0** - April 28, 2020
+ - Added ability to alter Mayhem level for items, both in savegames and profile.
+ `--item-mayhem-max` will set items to the max Mayhem level (`10`), or
+ `--item-mayhem-levels <num>` will set a specific level (`0` to remove Mayhem
+ from items entirely).
+ - Item level reports when viewing contents or exporting items will include
+ the Mayhem levels
+ - Info views will show the total number of available SDUs along with the
+ purchased count
+ - Various internal code reorganization
+
+**v1.4.0** - April 23, 2020
+ - Updated for the Cartels + Mayhem 2.0 patch:
+ - Update item/weapon handling to understand new serial number versions
+ - Added in new cosmetic unlocks
+ - Mayhem level can now be set as high as 10
+ - Extra SDU levels added
+ - Fixed a bug related to viewing vehicle unlocks, thanks to new game data
+ - Introduction of profile editing utilities, via `bl3-profile-edit`,
+ `bl3-profile-info`, `bl3-profile-import-json`, and `bl3-profile-import-protobuf`.
+ The following functionality is supported:
+ - Importing/Exporting to both JSON and Protobuf
+ - Importing/Exporting items to/from the bank
+ - Altering the level of gear stored in the bank
+ - Unlocking all global customizations/cosmetics
+ - Alphabetizing the list of room decorations, trinkets, and weapon skins
+ - Display changes for `bl3-save-info` - introduced individual arguments to
+ show more detailed information as-requested, instead of only having a
+ global `-v`/`--verbose` option:
+ - Added `-i`/`--items` argument, to show inventory information
+ - Added `--fast-travel` argument, to show unlocked fast travel stations
+ - Added `--all-challenges` argument, to list all challenges in the save file
+ and their statuses (note: this will be over 1.5k items!)
+ - Added `--all-missions` argument, to list all completed missions in addition
+ to active ones
+ - `-v`/`--verbose` now implies the four options above.
+ - `bl3-save-info` will now also report on whether the savegame has finished the
+ main game or any of the DLCs.
+ - Added `--unfinish-nvhm` option to `bl3-save-edit`, to completely clear out
+ any TVHM data and pretend that NVHM was never finished.
+
+**v1.3.1** - April 14, 2020
+ - Bah, forgot a few more README tweaks about the JSON export/import
+
+**v1.3.0** - April 14, 2020
+ - Added `json` output type, to export the protobuf as encoded into JSON
+ - Added `bl3-save-import-json` utility, to load JSON into a savegame
+
+**v1.2.2** - April 12, 2020
+ - Updated README with some more specific Windows 10 installation advice.
+
+**v1.2.1** - April 12, 2020
+ - Updated Credits section of the README with one more credit that I'd
+ wanted to put in but forgot. :)
+
+**v1.2.0** - April 12, 2020
+ - Added ability to change item/weapon levels, using `--items-to-char`
+ or `--item-levels`
+ - Item Imports will now *not* import Fabricators unless explicitly
+ told to with the `--allow-fabricator` option.
+ - Item names and levels are now shown where appropriate:
+ - In verbose `bl3-save-info` output
+ - In item export files
+ - While importing items
+ - Updated to Protobuf v3, which is what BL3 itself uses. Now when we
+ re-save without any edits, the save should be identical to the
+ original savegame.
+ - Item export will now be done without any encryption, so an item will
+ have the exact same item code regardless of where it came from
+ (previously, item codes would change every time the game was saved,
+ so the same item could have very different-looking codes)
+ - Added `-V`/`--version` flag to show version number
+
+**v1.1.1** - April 7, 2020
+ - Added in Citizen Science mission name.
+
+**v1.1.0** - April 7, 2020
+ - Added `bl3-save-import-protobuf` command, to load a raw protobuf file
+ into an existing savegame.
+
+**v1.0.1** - April 5, 2020
+ - Some saves include Eridium as an ammo type, presumably related to the
+ Fabricator. Fixed a crash in `bl3-save-info` related to that.
+
+**v1.0.0** - April 5, 2020
+ - Initial version
+
+
+
+
+
+%package -n python3-bl3-cli-saveedit
+Summary: Borderlands 3 Savegame Editor
+Provides: python-bl3-cli-saveedit
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-bl3-cli-saveedit
+# Borderlands 3 Commandline Savegame/Profile Editor
+
+This project is a commandline Python-based Borderlands 3 Savegame
+and Profile Editor. It's a companion to the very similar
+[CLI editor for BL2/TPS](https://github.com/apocalyptech/borderlands2),
+and provides some very similar functionality. It can be used
+to level up your characters, unlock Mayhem modes early in the
+game, unlock TVHM, add SDUs, unlock equipment slots, and more.
+
+This editor has only been tested on PC Savegames -- other platforms'
+savegames are not supported at the moment.
+
+Please keep the following in mind:
+
+- This app does not have any graphical interface. You must be
+ on a commandline in order to use it.
+- The app has only very limited item-editing capability at the
+ moment, which is restricted to:
+ - Item Levels can be changed
+ - Mayhem Level can be set on items
+- It does not offer any direct ability to alter Guardian Rank status.
+- While I have not experienced any data loss with the app,
+ **take backups of your savegames before using this**, and
+ keep in mind that it could end up corrupting your saves. If
+ you do encounter any data loss problems, please contact me
+ and I'll try to at least fix whatever bug caused it.
+
+# Table of Contents
+
+- [Installation](#installation)
+ - [Upgrading](#upgrading)
+ - [Notes for People Using Windows](#notes-for-people-using-windows)
+ - [Running from Github](#running-from-github)
+ - [Finding Savegames](#finding-savegames)
+- [Editor Usage](#editor-usage)
+- [TODO](#todo)
+- [Credits](#credits)
+- [License](#license)
+- [Other Utilities](#other-utilities)
+- [Changelog](#changelog)
+
+# Installation
+
+This editor requires [Python 3](https://www.python.org/), and has been
+tested on 3.7, 3.8, and 3.9. It also requires the [protobuf package](https://pypi.org/project/protobuf/).
+
+The easiest way to install this app is via `pip`/`pip3`. Once Python 3 is
+installed, you should be able to run this to install the app:
+
+ pip3 install bl3-cli-saveedit
+
+Once installed, there should be a few new commandline utilities available
+to you. The main editor is `bl3-save-edit`, and you can see its possible
+arguments with `-h`/`--help`:
+
+ bl3-save-edit -h
+
+There's also a `bl3-save-info` utility which just shows some information
+about a specified savefile. You can see its possible arguments with
+`-h`/`--help` as well:
+
+ bl3-save-info -h
+
+If you've got a raw savegame protobuf file that you've hand-edited (or
+otherwise processed) that you'd like to import into an existing savegame,
+you can do that with `bl3-save-import-protobuf`:
+
+ bl3-save-import-protobuf -h
+
+Alternatively, if you've got a savegame exported as JSON that you'd like
+to import into an existing savegame, you can do that with
+`bl3-save-import-json`:
+
+ bl3-save-import-json -h
+
+Finally, there's a utility which I'd used to generate my
+[BL3 Savegame Archive Page](http://apocalyptech.com/games/bl-saves/bl3.php).
+This one won't be useful to anyone but me, but you can view its arguments
+as well, if you like:
+
+ bl3-process-archive-saves -h
+
+There are also profile-specific versions of most of those commands, which
+can be used to edit the main BL3 `profile.sav`:
+
+ bl3-profile-edit -h
+ bl3-profile-info -h
+ bl3-profile-import-protobuf -h
+ bl3-profile-import-json -h
+
+### Upgrading
+
+When a new version is available, you can update using `pip3` like so:
+
+ pip3 install --upgrade bl3-cli-saveedit
+
+You can check your current version by running any of the apps with the
+`-V`/`--version` argument:
+
+ bl3-save-info --version
+
+### Notes for People Using Windows
+
+This is a command-line utility, which means there's no graphical interface,
+and you'll have to run it from either a Windows `cmd.exe` prompt, or presumably
+running through PowerShell should work, too. The first step is to
+install Python:
+
+- The recommended way is to [install Python from python.org](https://www.python.org/downloads/windows/).
+ Grab what's available in the 3.x series (at time of writing, that's 3.9.4),
+ and when it's installing, make sure to check the checkbox which says something
+ like "add to PATH", so that you can run Python from the commandline directly.
+- If you're on Windows 10, you can apparently just type `python3` into a command
+ prompt to be taken to the Windows store, where you can install Python with
+ just one click. I've heard reports that this method does *not* provide the
+ ability to add Python to your system PATH, though, so it's possible that
+ running it would be more complicated.
+
+When it's installed, test that you can run it from the commandline. Open up
+either `cmd.exe` or PowerShell, and make sure that you see something like this
+when you run `python -V`:
+
+ C:\> python -V
+ Python 3.9.4
+
+If that works, you can then run the `pip3 install bl3-cli-saveedit` command
+as mentioned above, and use the commandline scripts to edit to your heart's
+content.
+
+### Running from Github
+
+Alternatively, if you want to download or run the Github version of
+the app: clone the repository and then install `protobuf` (you can
+use `pip3 install -r requirements.txt` to do so, though a `pip3 install protobuf`
+will also work just fine).
+
+You can then run the scripts directly from the Github checkout, though
+you'll have to use a slightly different syntax. For instance, rather than
+running `bl3-save-edit -h` to get help for the main savegame editor, you
+would run:
+
+ python -m bl3save.cli_edit -h
+
+The equivalents for each of the commands are listed in their individual
+README files, linked below.
+
+### Finding Savegames
+
+This app doesn't actually know *where* your savegames or profiles are located.
+When you give it a filename, it'll expect that the file lives in your "current"
+directory, unless the filename includes all its path information. When launching
+a `cmd.exe` on Windows, for instance, you'll probably start out in your home
+directory (`C:\Users\username`), but your savegames will actually live in a
+directory more like `C:\Users\username\My Documents\My Games\Borderlands 3\Saved\SaveGames\<numbers>\`.
+The easiest way to run the utilities is to just use `cd` to go into the dir
+where your saves are (or otherwise launch your commandline in the directory you
+want). Otherwise, you could copy the save into your main user dir (and then
+copy back after editing), or even specify the full paths with the filenames.
+
+# Editor Usage
+
+For instructions on using the Savegame portions of the editor, see
+[README-saves.md](https://github.com/apocalyptech/bl3-cli-saveedit/blob/master/README-saves.md).
+
+FOr instructions on using the Profile portions of the editor, see
+[README-profile.md](https://github.com/apocalyptech/bl3-cli-saveedit/blob/master/README-profile.md).
+
+# TODO
+
+- Would anyone appreciate an option to *delete* Fabricators? Hm.
+- Would be nice to have some anointment-setting functions in here.
+- Did we want a function to *clear* Vault Card progress?
+- PS4 Support (for already-unlocked saves, anyway)
+- If we fail to read a savefile or profile, might be nice to *actually* check
+ if it's the other of profile-or-savefile, and give a more helpful message in
+ those cases.
+- Something a bit more Enum-like for various things in `__init__.py`; I
+ know that's not very Pythonic, but when dealing with extra-Python data
+ formats, one must sometimes make exceptions.
+- Unit tests?
+
+# Credits
+
+The encryption/decryption stanzas in `BL3Save.__init__` and `BL3Save.save_to`
+were [helpfully provided by Gibbed](https://twitter.com/gibbed/status/1246863435868049410?s=19)
+(rick 'at' gibbed 'dot' us), so many thanks for that! The protobuf definitions
+are also provided by Gibbed, from his
+[Borderlands3Protos](https://github.com/gibbed/Borderlands3Protos) repo,
+and used with permission. Gibbed also kindly provided the exact hashing
+mechanism used to work with weapon skins and trinkets.
+
+The rest of the savegame format was gleaned from 13xforever/Ilya's
+`gvas-converter` project: https://github.com/13xforever/gvas-converter
+
+Many thanks also to Baysix, who endured an awful lot of basic questions about
+pulling apart item serial numbers. Without their help, we wouldn't have
+item level editing (or nice item names in the output)!
+
+Basically what I'm saying is that anything remotely "hard" in here is all thanks
+to lots of other folks. I'm just pasting together all their stuff. Thanks, all!
+
+# License
+
+All code in this project is licensed under the
+[zlib/libpng license](https://opensource.org/licenses/Zlib). A copy is
+provided in [COPYING.txt](COPYING.txt).
+
+# Other Utilities
+
+Various BL3 Savegame/Profile editors have been popping up, ever since Gibbed
+released the encryption details. Here's a few which could be more to your
+liking, if you didn't want to use this one for whatever reason:
+
+- [FromDarkHell's BL3 Save/Profile Editor](https://github.com/FromDarkHell/BL3SaveEditor) -
+ Written in C#, has EXE downloads for ease of use on Windows.
+- [Zak's Borderlands 3 Saver Editor](https://github.com/ZakisM/bl3_save_edit) - Written
+ in Rust, and is cross-platform. Edits both saves and profiles.
+- [Raptor's Editor](https://bl3.swiss.dev/) - This is a web-fronted editor,
+ though it uses a [local executable](https://github.com/cfi2017/bl3-save/releases)
+ to do all the work. Sourcecode is available, and it works on Windows, Mac,
+ and Linux. Coded in [Go](https://golang.org/).
+- [HackerSmaker's CSave Editor](https://github.com/HackerSmacker/CSave) - Cross-platform
+ commandline editor written in C. Has a terminal (ncurses) UI on UNIX-like OSes.
+
+A couple others exist but as of July 2021, are out of date and not really great
+for use on newer saves. Here they are, though, in case they get updated without
+me noticing:
+
+- [sandsmark's borderlands3-save-editor](https://github.com/sandsmark/borderlands3-save-editor) -
+ Written in C++ with Qt for GUI. Is still in development. Native downloads
+ for Windows, but should compile fine on other platforms.
+
+In Memoriam: Baysix, the author of the original web-based editor at bl3editor.com,
+passed away in early 2021, and that editor is now permanently offline. RIP!
+
+# Changelog
+
+**v1.16.0** - November 18, 2021
+ - Updated name of "Seventh Sense (unknown version)" to "Seventh Sense (purple
+ version)", since realizing that it's now a valid drop from the Diamond
+ Armory (presumably since DLC5's release).
+ - Updated for Vault Card 3 patch:
+ - Data Updates (to understand new gear)
+ - Vault Card 3 Keys/Chests
+
+**v1.15.1** - August 11, 2021
+ - Updated with some Character Heads which were shipped with the Vault Card 2
+ update but overlooked for 1.15.0.
+
+**v1.15.0** - August 5, 2021
+ - Updated for Vault Card 2 patch:
+ - Data Updates (to understand new gear)
+ - Vault Card 2 Keys/Chests
+ - Updated Bank SDU count
+
+**v1.14.0** - July 7, 2021
+ - Added `--mission-paths` to `bl3-save-info`
+ - Added `--delete-pt1-mission` and `--delete-pt2-mission` to `bl3-save-edit`
+ - Added options to clear seasonal event challenge progress (Bloody Harvest,
+ Broken Hearts, Revenge of the Cartels)
+
+**v1.13.0** - June 24, 2021
+ - Updated for today's patch
+ - Updated level cap to 72
+ - Updated protobufs
+ - Added `--reverse` option for my Savegame Archive processing script, for some more
+ flexibility on the CSS when outputting HTML
+
+**v1.12.0** - April 11, 2021
+ - Updated with DLC6 (Director's Cut) compatibility.
+ - Support for updated item serial number format
+ - Added `--guardian-keys`, `--vaultcard1-keys`, and `--vaultcard1-chests` arguments
+ for profile editor
+ - Fixed a few item names which weren't being mapped properly
+
+**v1.11.1** - February 12, 2021
+ - Fixed name of the Broken Hearts 2021 weapon trinket "Cosmic Romance" to be "Tentacle
+ Ventricles" like in game -- it was updated with an OakTMS update on Feb 11 by GBX.
+
+**v1.11.0** - February 1, 2021
+ - Added Citizen Science editing functionality to profile editor, thanks
+ to [@apple1417](https://github.com/apple1417/)
+
+**v1.10.4** - January 21, 2021
+ - Updated with the new cosmetics data from today's patch. *(Totally forgot to do that
+ in v1.10.3.)*
+
+**v1.10.3** - January 21, 2021
+ - Updated internal inventory DB with data from today's patch. (No real functionality
+ changes with this.)
+
+**v1.10.2** - November 10, 2020
+ - Updated internal inventory DB with a minor change which was in the previous GBX
+ patch. (Probably no actual functionality changes with this.)
+
+**v1.10.1** - November 10, 2020
+ - A second patch was released, about 12 hours after the Designer's Cut release, which
+ updated the protobufs and was causing us to not read saves properly. This has been
+ fixed up now.
+ - Also require at least protobuf v3.12, which appears to be required as of my
+ latest protobuf generation.
+
+**v1.10.0** - November 9, 2020
+ - Updated with DLC5 (Designer's Cut) support
+
+**v1.9.2** - October 8, 2020
+ - Added in the missed weapon skin "Porphyrophobia," from Bloody Harvest 2020.
+
+**v1.9.1** - September 30, 2020
+ - Fixed unlocking FL4K's "Antisoci4l" head (though you should still get
+ that one [all legit-like](https://gearboxloot.com/products/borderlands-3-mask-skins-head-pack))
+
+**v1.9.0** - September 10, 2020
+ - Updated with DLC4 (Psycho Krieg and the Fantastic Fustercluck) support
+
+**v1.8.2** - July 27, 2020
+ - Updated to allow unlocking the Battle Driver and Devil Tooth weapon trinkets, since
+ the July 23 patch fixed those so that they properly stay in your profile.
+
+**v1.8.1** - July 14, 2020
+ - `--item-mayhem-max` and `--item-mayhem-levels` will now apply Mayhem parts to
+ grenades as well as weapons.
+
+**v1.8.0** - July 11, 2020
+ - Added `--mayhem-seed` option to `bl3-save-edit`, to set the random seed used to
+ determine active Mayhem modifiers. The seed is now shown in the `bl3-save-info`
+ output, as well.
+
+**v1.7.2** - July 6, 2020
+ - Allow characters to use skill trees properly if levelled higher directly from level 1.
+
+**v1.7.1** - June 29, 2020
+ - Added three more DLC3 room decorations that I'd missed orginally, for the profile
+ editor's cosmetic-unlock ability
+ - Added Jetbeast unlocks (both parts and skins)
+
+**v1.7.0** - June 26, 2020
+ - Updated for DLC3 (Bounty of Blood) content
+ - Jetbeast vehicle unlocks are forthcoming, until I can actually test them out.
+ - Added various Guardian Rank processing
+ - For savegames and profiles, added `--zero-guardian-rank`
+ - For only profiles, added `--min-guardian-rank`, `--guardian-rank-rewards`, and
+ `--guardian-rank-tokens`
+ - Added `--unlock cubepuzzle` to reset the Eridian Cube puzzle in Desolation's Edge
+ - Added `--clear-takedowns` to get rid of the Takedown mission-pickup notifications
+ for chars you never intend to do Takedowns with.
+ - Item name processing will now recognize the specific legendary artifact balances
+ added by the Maliwan Takedown update (they're functionally identical to the world-
+ drop versions)
+ - Updated `bl3-process-archive-saves` to wipe out Guardian Rank entirely
+
+**v1.6.2** - June 18, 2020
+ - Allow setting character/item levels higher than the currently-known max, in case
+ users want to pre-level their saves ahead of level cap increases (and in case
+ they don't want to wait for an official update of this app)
+
+**v1.6.1** - June 13, 2020
+ - Updated room decoration/trinket/weaponskin alphabetization to ignore case (so
+ "Casino Banner" sorts before "COV Bat," for instance).
+ - Counts of unlocked cosmetic items in `bl3-profile-info` will now include the
+ "default" cosmetics which are always unlocked, so those counts match the numbers
+ in-game.
+
+**v1.6.0** - June 11, 2020
+ - Updated for extra content introduced by Takedown at the Guardian Breach
+ - Added `--golden-keys` option to `bl3-profile-edit`, to set available Golden Keys
+ - Added `--randomize-guid` option to `bl3-save-edit`
+
+**v1.5.2** - May 23, 2020
+ - Updated item name mapping to include the COM Balances used by Trials bosses, for
+ their dedicated COM drops.
+ - Add in the `--csv` option to allow importing/exporting items into CSV files,
+ instead of just text files (which is the default without `--csv`). Has no effect
+ except on item imports/exports.
+
+**v1.5.1** - May 5, 2020
+ - Fixed alphabetization of COV Buzzaxe room decoration. In the game data it looks
+ like it's called "Psycho Buzzaxe," but the actual in-game label is COV Buzzaxe.
+ - Fixed name displays for "regular" (non-E-Tech, non-Legendary) Maliwan snipers and
+ Tediore pistols.
+ - Updated item name mapping to distinguish between the blue-rarity mission reward
+ version of Redistributor from the legendary version from Maliwan Takedown.
+ - Updated `bl3-process-archive-saves` to clear out some 3rd-playthrough data
+ which earlier versions had accidentally introduced *(only really of interest
+ to myself)*
+
+**v1.5.0** - April 28, 2020
+ - Added ability to alter Mayhem level for items, both in savegames and profile.
+ `--item-mayhem-max` will set items to the max Mayhem level (`10`), or
+ `--item-mayhem-levels <num>` will set a specific level (`0` to remove Mayhem
+ from items entirely).
+ - Item level reports when viewing contents or exporting items will include
+ the Mayhem levels
+ - Info views will show the total number of available SDUs along with the
+ purchased count
+ - Various internal code reorganization
+
+**v1.4.0** - April 23, 2020
+ - Updated for the Cartels + Mayhem 2.0 patch:
+ - Update item/weapon handling to understand new serial number versions
+ - Added in new cosmetic unlocks
+ - Mayhem level can now be set as high as 10
+ - Extra SDU levels added
+ - Fixed a bug related to viewing vehicle unlocks, thanks to new game data
+ - Introduction of profile editing utilities, via `bl3-profile-edit`,
+ `bl3-profile-info`, `bl3-profile-import-json`, and `bl3-profile-import-protobuf`.
+ The following functionality is supported:
+ - Importing/Exporting to both JSON and Protobuf
+ - Importing/Exporting items to/from the bank
+ - Altering the level of gear stored in the bank
+ - Unlocking all global customizations/cosmetics
+ - Alphabetizing the list of room decorations, trinkets, and weapon skins
+ - Display changes for `bl3-save-info` - introduced individual arguments to
+ show more detailed information as-requested, instead of only having a
+ global `-v`/`--verbose` option:
+ - Added `-i`/`--items` argument, to show inventory information
+ - Added `--fast-travel` argument, to show unlocked fast travel stations
+ - Added `--all-challenges` argument, to list all challenges in the save file
+ and their statuses (note: this will be over 1.5k items!)
+ - Added `--all-missions` argument, to list all completed missions in addition
+ to active ones
+ - `-v`/`--verbose` now implies the four options above.
+ - `bl3-save-info` will now also report on whether the savegame has finished the
+ main game or any of the DLCs.
+ - Added `--unfinish-nvhm` option to `bl3-save-edit`, to completely clear out
+ any TVHM data and pretend that NVHM was never finished.
+
+**v1.3.1** - April 14, 2020
+ - Bah, forgot a few more README tweaks about the JSON export/import
+
+**v1.3.0** - April 14, 2020
+ - Added `json` output type, to export the protobuf as encoded into JSON
+ - Added `bl3-save-import-json` utility, to load JSON into a savegame
+
+**v1.2.2** - April 12, 2020
+ - Updated README with some more specific Windows 10 installation advice.
+
+**v1.2.1** - April 12, 2020
+ - Updated Credits section of the README with one more credit that I'd
+ wanted to put in but forgot. :)
+
+**v1.2.0** - April 12, 2020
+ - Added ability to change item/weapon levels, using `--items-to-char`
+ or `--item-levels`
+ - Item Imports will now *not* import Fabricators unless explicitly
+ told to with the `--allow-fabricator` option.
+ - Item names and levels are now shown where appropriate:
+ - In verbose `bl3-save-info` output
+ - In item export files
+ - While importing items
+ - Updated to Protobuf v3, which is what BL3 itself uses. Now when we
+ re-save without any edits, the save should be identical to the
+ original savegame.
+ - Item export will now be done without any encryption, so an item will
+ have the exact same item code regardless of where it came from
+ (previously, item codes would change every time the game was saved,
+ so the same item could have very different-looking codes)
+ - Added `-V`/`--version` flag to show version number
+
+**v1.1.1** - April 7, 2020
+ - Added in Citizen Science mission name.
+
+**v1.1.0** - April 7, 2020
+ - Added `bl3-save-import-protobuf` command, to load a raw protobuf file
+ into an existing savegame.
+
+**v1.0.1** - April 5, 2020
+ - Some saves include Eridium as an ammo type, presumably related to the
+ Fabricator. Fixed a crash in `bl3-save-info` related to that.
+
+**v1.0.0** - April 5, 2020
+ - Initial version
+
+
+
+
+
+%package help
+Summary: Development documents and examples for bl3-cli-saveedit
+Provides: python3-bl3-cli-saveedit-doc
+%description help
+# Borderlands 3 Commandline Savegame/Profile Editor
+
+This project is a commandline Python-based Borderlands 3 Savegame
+and Profile Editor. It's a companion to the very similar
+[CLI editor for BL2/TPS](https://github.com/apocalyptech/borderlands2),
+and provides some very similar functionality. It can be used
+to level up your characters, unlock Mayhem modes early in the
+game, unlock TVHM, add SDUs, unlock equipment slots, and more.
+
+This editor has only been tested on PC Savegames -- other platforms'
+savegames are not supported at the moment.
+
+Please keep the following in mind:
+
+- This app does not have any graphical interface. You must be
+ on a commandline in order to use it.
+- The app has only very limited item-editing capability at the
+ moment, which is restricted to:
+ - Item Levels can be changed
+ - Mayhem Level can be set on items
+- It does not offer any direct ability to alter Guardian Rank status.
+- While I have not experienced any data loss with the app,
+ **take backups of your savegames before using this**, and
+ keep in mind that it could end up corrupting your saves. If
+ you do encounter any data loss problems, please contact me
+ and I'll try to at least fix whatever bug caused it.
+
+# Table of Contents
+
+- [Installation](#installation)
+ - [Upgrading](#upgrading)
+ - [Notes for People Using Windows](#notes-for-people-using-windows)
+ - [Running from Github](#running-from-github)
+ - [Finding Savegames](#finding-savegames)
+- [Editor Usage](#editor-usage)
+- [TODO](#todo)
+- [Credits](#credits)
+- [License](#license)
+- [Other Utilities](#other-utilities)
+- [Changelog](#changelog)
+
+# Installation
+
+This editor requires [Python 3](https://www.python.org/), and has been
+tested on 3.7, 3.8, and 3.9. It also requires the [protobuf package](https://pypi.org/project/protobuf/).
+
+The easiest way to install this app is via `pip`/`pip3`. Once Python 3 is
+installed, you should be able to run this to install the app:
+
+ pip3 install bl3-cli-saveedit
+
+Once installed, there should be a few new commandline utilities available
+to you. The main editor is `bl3-save-edit`, and you can see its possible
+arguments with `-h`/`--help`:
+
+ bl3-save-edit -h
+
+There's also a `bl3-save-info` utility which just shows some information
+about a specified savefile. You can see its possible arguments with
+`-h`/`--help` as well:
+
+ bl3-save-info -h
+
+If you've got a raw savegame protobuf file that you've hand-edited (or
+otherwise processed) that you'd like to import into an existing savegame,
+you can do that with `bl3-save-import-protobuf`:
+
+ bl3-save-import-protobuf -h
+
+Alternatively, if you've got a savegame exported as JSON that you'd like
+to import into an existing savegame, you can do that with
+`bl3-save-import-json`:
+
+ bl3-save-import-json -h
+
+Finally, there's a utility which I'd used to generate my
+[BL3 Savegame Archive Page](http://apocalyptech.com/games/bl-saves/bl3.php).
+This one won't be useful to anyone but me, but you can view its arguments
+as well, if you like:
+
+ bl3-process-archive-saves -h
+
+There are also profile-specific versions of most of those commands, which
+can be used to edit the main BL3 `profile.sav`:
+
+ bl3-profile-edit -h
+ bl3-profile-info -h
+ bl3-profile-import-protobuf -h
+ bl3-profile-import-json -h
+
+### Upgrading
+
+When a new version is available, you can update using `pip3` like so:
+
+ pip3 install --upgrade bl3-cli-saveedit
+
+You can check your current version by running any of the apps with the
+`-V`/`--version` argument:
+
+ bl3-save-info --version
+
+### Notes for People Using Windows
+
+This is a command-line utility, which means there's no graphical interface,
+and you'll have to run it from either a Windows `cmd.exe` prompt, or presumably
+running through PowerShell should work, too. The first step is to
+install Python:
+
+- The recommended way is to [install Python from python.org](https://www.python.org/downloads/windows/).
+ Grab what's available in the 3.x series (at time of writing, that's 3.9.4),
+ and when it's installing, make sure to check the checkbox which says something
+ like "add to PATH", so that you can run Python from the commandline directly.
+- If you're on Windows 10, you can apparently just type `python3` into a command
+ prompt to be taken to the Windows store, where you can install Python with
+ just one click. I've heard reports that this method does *not* provide the
+ ability to add Python to your system PATH, though, so it's possible that
+ running it would be more complicated.
+
+When it's installed, test that you can run it from the commandline. Open up
+either `cmd.exe` or PowerShell, and make sure that you see something like this
+when you run `python -V`:
+
+ C:\> python -V
+ Python 3.9.4
+
+If that works, you can then run the `pip3 install bl3-cli-saveedit` command
+as mentioned above, and use the commandline scripts to edit to your heart's
+content.
+
+### Running from Github
+
+Alternatively, if you want to download or run the Github version of
+the app: clone the repository and then install `protobuf` (you can
+use `pip3 install -r requirements.txt` to do so, though a `pip3 install protobuf`
+will also work just fine).
+
+You can then run the scripts directly from the Github checkout, though
+you'll have to use a slightly different syntax. For instance, rather than
+running `bl3-save-edit -h` to get help for the main savegame editor, you
+would run:
+
+ python -m bl3save.cli_edit -h
+
+The equivalents for each of the commands are listed in their individual
+README files, linked below.
+
+### Finding Savegames
+
+This app doesn't actually know *where* your savegames or profiles are located.
+When you give it a filename, it'll expect that the file lives in your "current"
+directory, unless the filename includes all its path information. When launching
+a `cmd.exe` on Windows, for instance, you'll probably start out in your home
+directory (`C:\Users\username`), but your savegames will actually live in a
+directory more like `C:\Users\username\My Documents\My Games\Borderlands 3\Saved\SaveGames\<numbers>\`.
+The easiest way to run the utilities is to just use `cd` to go into the dir
+where your saves are (or otherwise launch your commandline in the directory you
+want). Otherwise, you could copy the save into your main user dir (and then
+copy back after editing), or even specify the full paths with the filenames.
+
+# Editor Usage
+
+For instructions on using the Savegame portions of the editor, see
+[README-saves.md](https://github.com/apocalyptech/bl3-cli-saveedit/blob/master/README-saves.md).
+
+FOr instructions on using the Profile portions of the editor, see
+[README-profile.md](https://github.com/apocalyptech/bl3-cli-saveedit/blob/master/README-profile.md).
+
+# TODO
+
+- Would anyone appreciate an option to *delete* Fabricators? Hm.
+- Would be nice to have some anointment-setting functions in here.
+- Did we want a function to *clear* Vault Card progress?
+- PS4 Support (for already-unlocked saves, anyway)
+- If we fail to read a savefile or profile, might be nice to *actually* check
+ if it's the other of profile-or-savefile, and give a more helpful message in
+ those cases.
+- Something a bit more Enum-like for various things in `__init__.py`; I
+ know that's not very Pythonic, but when dealing with extra-Python data
+ formats, one must sometimes make exceptions.
+- Unit tests?
+
+# Credits
+
+The encryption/decryption stanzas in `BL3Save.__init__` and `BL3Save.save_to`
+were [helpfully provided by Gibbed](https://twitter.com/gibbed/status/1246863435868049410?s=19)
+(rick 'at' gibbed 'dot' us), so many thanks for that! The protobuf definitions
+are also provided by Gibbed, from his
+[Borderlands3Protos](https://github.com/gibbed/Borderlands3Protos) repo,
+and used with permission. Gibbed also kindly provided the exact hashing
+mechanism used to work with weapon skins and trinkets.
+
+The rest of the savegame format was gleaned from 13xforever/Ilya's
+`gvas-converter` project: https://github.com/13xforever/gvas-converter
+
+Many thanks also to Baysix, who endured an awful lot of basic questions about
+pulling apart item serial numbers. Without their help, we wouldn't have
+item level editing (or nice item names in the output)!
+
+Basically what I'm saying is that anything remotely "hard" in here is all thanks
+to lots of other folks. I'm just pasting together all their stuff. Thanks, all!
+
+# License
+
+All code in this project is licensed under the
+[zlib/libpng license](https://opensource.org/licenses/Zlib). A copy is
+provided in [COPYING.txt](COPYING.txt).
+
+# Other Utilities
+
+Various BL3 Savegame/Profile editors have been popping up, ever since Gibbed
+released the encryption details. Here's a few which could be more to your
+liking, if you didn't want to use this one for whatever reason:
+
+- [FromDarkHell's BL3 Save/Profile Editor](https://github.com/FromDarkHell/BL3SaveEditor) -
+ Written in C#, has EXE downloads for ease of use on Windows.
+- [Zak's Borderlands 3 Saver Editor](https://github.com/ZakisM/bl3_save_edit) - Written
+ in Rust, and is cross-platform. Edits both saves and profiles.
+- [Raptor's Editor](https://bl3.swiss.dev/) - This is a web-fronted editor,
+ though it uses a [local executable](https://github.com/cfi2017/bl3-save/releases)
+ to do all the work. Sourcecode is available, and it works on Windows, Mac,
+ and Linux. Coded in [Go](https://golang.org/).
+- [HackerSmaker's CSave Editor](https://github.com/HackerSmacker/CSave) - Cross-platform
+ commandline editor written in C. Has a terminal (ncurses) UI on UNIX-like OSes.
+
+A couple others exist but as of July 2021, are out of date and not really great
+for use on newer saves. Here they are, though, in case they get updated without
+me noticing:
+
+- [sandsmark's borderlands3-save-editor](https://github.com/sandsmark/borderlands3-save-editor) -
+ Written in C++ with Qt for GUI. Is still in development. Native downloads
+ for Windows, but should compile fine on other platforms.
+
+In Memoriam: Baysix, the author of the original web-based editor at bl3editor.com,
+passed away in early 2021, and that editor is now permanently offline. RIP!
+
+# Changelog
+
+**v1.16.0** - November 18, 2021
+ - Updated name of "Seventh Sense (unknown version)" to "Seventh Sense (purple
+ version)", since realizing that it's now a valid drop from the Diamond
+ Armory (presumably since DLC5's release).
+ - Updated for Vault Card 3 patch:
+ - Data Updates (to understand new gear)
+ - Vault Card 3 Keys/Chests
+
+**v1.15.1** - August 11, 2021
+ - Updated with some Character Heads which were shipped with the Vault Card 2
+ update but overlooked for 1.15.0.
+
+**v1.15.0** - August 5, 2021
+ - Updated for Vault Card 2 patch:
+ - Data Updates (to understand new gear)
+ - Vault Card 2 Keys/Chests
+ - Updated Bank SDU count
+
+**v1.14.0** - July 7, 2021
+ - Added `--mission-paths` to `bl3-save-info`
+ - Added `--delete-pt1-mission` and `--delete-pt2-mission` to `bl3-save-edit`
+ - Added options to clear seasonal event challenge progress (Bloody Harvest,
+ Broken Hearts, Revenge of the Cartels)
+
+**v1.13.0** - June 24, 2021
+ - Updated for today's patch
+ - Updated level cap to 72
+ - Updated protobufs
+ - Added `--reverse` option for my Savegame Archive processing script, for some more
+ flexibility on the CSS when outputting HTML
+
+**v1.12.0** - April 11, 2021
+ - Updated with DLC6 (Director's Cut) compatibility.
+ - Support for updated item serial number format
+ - Added `--guardian-keys`, `--vaultcard1-keys`, and `--vaultcard1-chests` arguments
+ for profile editor
+ - Fixed a few item names which weren't being mapped properly
+
+**v1.11.1** - February 12, 2021
+ - Fixed name of the Broken Hearts 2021 weapon trinket "Cosmic Romance" to be "Tentacle
+ Ventricles" like in game -- it was updated with an OakTMS update on Feb 11 by GBX.
+
+**v1.11.0** - February 1, 2021
+ - Added Citizen Science editing functionality to profile editor, thanks
+ to [@apple1417](https://github.com/apple1417/)
+
+**v1.10.4** - January 21, 2021
+ - Updated with the new cosmetics data from today's patch. *(Totally forgot to do that
+ in v1.10.3.)*
+
+**v1.10.3** - January 21, 2021
+ - Updated internal inventory DB with data from today's patch. (No real functionality
+ changes with this.)
+
+**v1.10.2** - November 10, 2020
+ - Updated internal inventory DB with a minor change which was in the previous GBX
+ patch. (Probably no actual functionality changes with this.)
+
+**v1.10.1** - November 10, 2020
+ - A second patch was released, about 12 hours after the Designer's Cut release, which
+ updated the protobufs and was causing us to not read saves properly. This has been
+ fixed up now.
+ - Also require at least protobuf v3.12, which appears to be required as of my
+ latest protobuf generation.
+
+**v1.10.0** - November 9, 2020
+ - Updated with DLC5 (Designer's Cut) support
+
+**v1.9.2** - October 8, 2020
+ - Added in the missed weapon skin "Porphyrophobia," from Bloody Harvest 2020.
+
+**v1.9.1** - September 30, 2020
+ - Fixed unlocking FL4K's "Antisoci4l" head (though you should still get
+ that one [all legit-like](https://gearboxloot.com/products/borderlands-3-mask-skins-head-pack))
+
+**v1.9.0** - September 10, 2020
+ - Updated with DLC4 (Psycho Krieg and the Fantastic Fustercluck) support
+
+**v1.8.2** - July 27, 2020
+ - Updated to allow unlocking the Battle Driver and Devil Tooth weapon trinkets, since
+ the July 23 patch fixed those so that they properly stay in your profile.
+
+**v1.8.1** - July 14, 2020
+ - `--item-mayhem-max` and `--item-mayhem-levels` will now apply Mayhem parts to
+ grenades as well as weapons.
+
+**v1.8.0** - July 11, 2020
+ - Added `--mayhem-seed` option to `bl3-save-edit`, to set the random seed used to
+ determine active Mayhem modifiers. The seed is now shown in the `bl3-save-info`
+ output, as well.
+
+**v1.7.2** - July 6, 2020
+ - Allow characters to use skill trees properly if levelled higher directly from level 1.
+
+**v1.7.1** - June 29, 2020
+ - Added three more DLC3 room decorations that I'd missed orginally, for the profile
+ editor's cosmetic-unlock ability
+ - Added Jetbeast unlocks (both parts and skins)
+
+**v1.7.0** - June 26, 2020
+ - Updated for DLC3 (Bounty of Blood) content
+ - Jetbeast vehicle unlocks are forthcoming, until I can actually test them out.
+ - Added various Guardian Rank processing
+ - For savegames and profiles, added `--zero-guardian-rank`
+ - For only profiles, added `--min-guardian-rank`, `--guardian-rank-rewards`, and
+ `--guardian-rank-tokens`
+ - Added `--unlock cubepuzzle` to reset the Eridian Cube puzzle in Desolation's Edge
+ - Added `--clear-takedowns` to get rid of the Takedown mission-pickup notifications
+ for chars you never intend to do Takedowns with.
+ - Item name processing will now recognize the specific legendary artifact balances
+ added by the Maliwan Takedown update (they're functionally identical to the world-
+ drop versions)
+ - Updated `bl3-process-archive-saves` to wipe out Guardian Rank entirely
+
+**v1.6.2** - June 18, 2020
+ - Allow setting character/item levels higher than the currently-known max, in case
+ users want to pre-level their saves ahead of level cap increases (and in case
+ they don't want to wait for an official update of this app)
+
+**v1.6.1** - June 13, 2020
+ - Updated room decoration/trinket/weaponskin alphabetization to ignore case (so
+ "Casino Banner" sorts before "COV Bat," for instance).
+ - Counts of unlocked cosmetic items in `bl3-profile-info` will now include the
+ "default" cosmetics which are always unlocked, so those counts match the numbers
+ in-game.
+
+**v1.6.0** - June 11, 2020
+ - Updated for extra content introduced by Takedown at the Guardian Breach
+ - Added `--golden-keys` option to `bl3-profile-edit`, to set available Golden Keys
+ - Added `--randomize-guid` option to `bl3-save-edit`
+
+**v1.5.2** - May 23, 2020
+ - Updated item name mapping to include the COM Balances used by Trials bosses, for
+ their dedicated COM drops.
+ - Add in the `--csv` option to allow importing/exporting items into CSV files,
+ instead of just text files (which is the default without `--csv`). Has no effect
+ except on item imports/exports.
+
+**v1.5.1** - May 5, 2020
+ - Fixed alphabetization of COV Buzzaxe room decoration. In the game data it looks
+ like it's called "Psycho Buzzaxe," but the actual in-game label is COV Buzzaxe.
+ - Fixed name displays for "regular" (non-E-Tech, non-Legendary) Maliwan snipers and
+ Tediore pistols.
+ - Updated item name mapping to distinguish between the blue-rarity mission reward
+ version of Redistributor from the legendary version from Maliwan Takedown.
+ - Updated `bl3-process-archive-saves` to clear out some 3rd-playthrough data
+ which earlier versions had accidentally introduced *(only really of interest
+ to myself)*
+
+**v1.5.0** - April 28, 2020
+ - Added ability to alter Mayhem level for items, both in savegames and profile.
+ `--item-mayhem-max` will set items to the max Mayhem level (`10`), or
+ `--item-mayhem-levels <num>` will set a specific level (`0` to remove Mayhem
+ from items entirely).
+ - Item level reports when viewing contents or exporting items will include
+ the Mayhem levels
+ - Info views will show the total number of available SDUs along with the
+ purchased count
+ - Various internal code reorganization
+
+**v1.4.0** - April 23, 2020
+ - Updated for the Cartels + Mayhem 2.0 patch:
+ - Update item/weapon handling to understand new serial number versions
+ - Added in new cosmetic unlocks
+ - Mayhem level can now be set as high as 10
+ - Extra SDU levels added
+ - Fixed a bug related to viewing vehicle unlocks, thanks to new game data
+ - Introduction of profile editing utilities, via `bl3-profile-edit`,
+ `bl3-profile-info`, `bl3-profile-import-json`, and `bl3-profile-import-protobuf`.
+ The following functionality is supported:
+ - Importing/Exporting to both JSON and Protobuf
+ - Importing/Exporting items to/from the bank
+ - Altering the level of gear stored in the bank
+ - Unlocking all global customizations/cosmetics
+ - Alphabetizing the list of room decorations, trinkets, and weapon skins
+ - Display changes for `bl3-save-info` - introduced individual arguments to
+ show more detailed information as-requested, instead of only having a
+ global `-v`/`--verbose` option:
+ - Added `-i`/`--items` argument, to show inventory information
+ - Added `--fast-travel` argument, to show unlocked fast travel stations
+ - Added `--all-challenges` argument, to list all challenges in the save file
+ and their statuses (note: this will be over 1.5k items!)
+ - Added `--all-missions` argument, to list all completed missions in addition
+ to active ones
+ - `-v`/`--verbose` now implies the four options above.
+ - `bl3-save-info` will now also report on whether the savegame has finished the
+ main game or any of the DLCs.
+ - Added `--unfinish-nvhm` option to `bl3-save-edit`, to completely clear out
+ any TVHM data and pretend that NVHM was never finished.
+
+**v1.3.1** - April 14, 2020
+ - Bah, forgot a few more README tweaks about the JSON export/import
+
+**v1.3.0** - April 14, 2020
+ - Added `json` output type, to export the protobuf as encoded into JSON
+ - Added `bl3-save-import-json` utility, to load JSON into a savegame
+
+**v1.2.2** - April 12, 2020
+ - Updated README with some more specific Windows 10 installation advice.
+
+**v1.2.1** - April 12, 2020
+ - Updated Credits section of the README with one more credit that I'd
+ wanted to put in but forgot. :)
+
+**v1.2.0** - April 12, 2020
+ - Added ability to change item/weapon levels, using `--items-to-char`
+ or `--item-levels`
+ - Item Imports will now *not* import Fabricators unless explicitly
+ told to with the `--allow-fabricator` option.
+ - Item names and levels are now shown where appropriate:
+ - In verbose `bl3-save-info` output
+ - In item export files
+ - While importing items
+ - Updated to Protobuf v3, which is what BL3 itself uses. Now when we
+ re-save without any edits, the save should be identical to the
+ original savegame.
+ - Item export will now be done without any encryption, so an item will
+ have the exact same item code regardless of where it came from
+ (previously, item codes would change every time the game was saved,
+ so the same item could have very different-looking codes)
+ - Added `-V`/`--version` flag to show version number
+
+**v1.1.1** - April 7, 2020
+ - Added in Citizen Science mission name.
+
+**v1.1.0** - April 7, 2020
+ - Added `bl3-save-import-protobuf` command, to load a raw protobuf file
+ into an existing savegame.
+
+**v1.0.1** - April 5, 2020
+ - Some saves include Eridium as an ammo type, presumably related to the
+ Fabricator. Fixed a crash in `bl3-save-info` related to that.
+
+**v1.0.0** - April 5, 2020
+ - Initial version
+
+
+
+
+
+%prep
+%autosetup -n bl3-cli-saveedit-1.16.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-bl3-cli-saveedit -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 1.16.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..8cc7b04
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+bde7c0fb3cd62f0ec59e2a8c2ae1333c bl3-cli-saveedit-1.16.0.tar.gz