h3sed


Nameh3sed JSON
Version 3.1 PyPI version JSON
download
home_pagehttps://github.com/suurjaak/h3sed
SummaryHeroes3 Savegame Editor
upload_time2025-09-01 17:37:01
maintainerNone
docs_urlNone
authorErki Suurjaak
requires_pythonNone
licenseMIT
keywords homm homm3 heroes3 savegame
VCS
bugtrack_url
requirements pyyaml step-template wxPython
Travis-CI No Travis.
coveralls test coverage No coveralls.
            h3sed
=====

h3sed is a Heroes3 Savegame Editor, written in Python.

It opens savegame files from Heroes of Might and Magic III,
allowing to see an overview of all heroes, and edit any and all hero attributes:

- primary skills, like Attack
- other primary attributes, like level, experience points, spell points etc
- war machines, like Ballista
- secondary skills, like Logistics (more than 8 skills can be added)
- artifacts, like Boots of Speed, both equipment and inventory items
- spells, like Slow
- army creatures, like Golden Dragons

Attributes can be copied from one hero and pasted to another.

Hero data can be exported as HTML or spreadsheet or JSON/YAML data.

Supports savegames from: Restoration of Erathia, Armageddon's Blade, Shadow of Death,
Heroes Chronicles, and Horn of the Abyss.

Usable as a graphical program, command-line program, or library.

Downloads at https://suurjaak.github.io/h3sed.


Graphical Usage
---------------

Navigate the file view to Heroes3 games-folder and open a savegame file to edit,
or drag and drop a savegame file onto the program window.

Choose a hero to modify, change attributes to your liking, and save the file.
Changes will be available in Heroes3 after loading the changed savegame.

Attributes from one hero can be copied to clipboard as text,
and pasted onto another hero, overwriting their data.

A timestamped daily backup copy is automatically created of the savegame file, one per day.

![Screenshot](https://raw.githubusercontent.com/suurjaak/h3sed/gh-pages/img/screen.png)

Note: savegames from different releases of Armageddon's Blade may have different
structure for equipment and inventory. For working with savegames from an earlier
version, uncheck "New format in Armageddon's Blade" in program menu File -> Options.

**Warning:** as Heroes3 savefile format is not publicly known,
loaded data and saved results may be invalid and cause problems in game.
This program is based on unofficial information
gathered from observation and online forums.


Command-line Interface
----------------------

```
$ h3sed -h

usage: h3sed [-h] [-v] {gui,info,export} ...

h3sed - Heroes3 Savegame Editor.

positional arguments:
  {gui,info,export}
    gui              launch h3sed graphical program (default option)
    info             print information on savegame
    export           export heroes from savegame

optional arguments:
  -h, --help         show this help message and exit
  -v, --version      show program's version number and exit
```

```
$ h3sed -h gui

usage: h3sed gui [SAVEGAME [SAVEGAME ...]]

Launch h3sed graphical program (default option).

positional arguments:
  SAVEGAME    Heroes3 savegames(s) to open on startup, if any (supports * wildcards)
```

```
$ h3sed -h info

usage: h3sed info SAVEGAME [SAVEGAME ...]

Print information on given savegame(s).

positional arguments:
  SAVEGAME    Heroes3 savegame(s) to read (supports * wildcards)
```

```
$ h3sed -h export

usage: h3sed export [-f {csv,html,json,yaml}] [-s [TEXT [TEXT ...]]] [-o [OUTFILE]]
                    SAVEGAME [SAVEGAME ...]

Export heroes from savegame as CSV, HTML, JSON or YAML.

positional arguments:
  SAVEGAME              Heroes3 savegame(s) to read (supports * wildcards)

optional arguments:
  -h, --help            show this help message and exit
  -f {csv,html,json,yaml}, --format {csv,html,json,yaml}
                        output format (defaults to "yaml")
  -s [TEXT [TEXT ...]], --search [TEXT [TEXT ...]]
                        filter heroes by name or any matching properties
                        (supports keyword search like "skill=Luck")
  -o [FILE], --output [FILE]
                        write output to file instead of printing to console;
                        filename will be auto-generated if not given;
                        automatic for non-printable formats (csv, html)
```


Library usage
-------------

```python
import h3sed

savefile = h3sed.Savefile("path/to/my.CGM")

hero = next(savefile.find_heroes(name="Solmyr"))
hero.stats.attack += 10
hero.skills.append(name="Logistics", level="Expert")
hero.army.append(name="Master Gremlin", count=1000)
hero.equipment.feet = "Boots of Speed"
hero.inventory.append("Spyglass")
hero.spells.add("Haste")

for hero in savefile.find_heroes(skill="Earth Magic"):
    hero.equipment.side1 = "Orb of Silt"

savefile.realize()
savefile.write()
```


Installation
------------

Windows: download and launch the latest setup from
https://suurjaak.github.io/h3sed/downloads.html.

Mac/Linux/other: install Python and pip, run `pip install h3sed`.

The pip installation will add the `h3sed` command to path.

Windows installers have been provided for convenience. The program itself
is stand-alone, can work from any directory, and does not need additional
installation. The installed program can be copied to a USB stick and used
elsewhere, same goes for the source code.

If running from pip installation, run `h3sed` from the command-line.
If running straight from source code, open a terminal to `h3sed/src`
and run `python -m h3sed`.


Source Dependencies
-------------------

If running from source code, h3sed needs Python 2.7 or Python 3.6 or higher,
and the following 3rd-party Python packages:
* pyyaml (https://pyyaml.org)
* step (https://pypi.org/project/step-template)
* wxPython 4.0+ (https://wxpython.org) (optional, required for graphical interface)


Attribution
-----------

Knowledge on Heroes3 savegames gathered mostly from Heroes Community forum,
http://heroescommunity.com/viewthread.php3?TID=18817.

Contains several icons from Heroes of Might and Magic III, (c) 1999 3DO.

Binaries compiled with PyInstaller, https://www.pyinstaller.org.

Installers created with Nullsoft Scriptable Install System,
https://nsis.sourceforge.net/.


License
-------

Copyright (c) 2020 by Erki Suurjaak.
Released as free open source software under the MIT License,
see LICENSE.md for full license text.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/suurjaak/h3sed",
    "name": "h3sed",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "homm homm3 heroes3 savegame",
    "author": "Erki Suurjaak",
    "author_email": "erki@lap.ee",
    "download_url": null,
    "platform": "any",
    "description": "h3sed\r\n=====\r\n\r\nh3sed is a Heroes3 Savegame Editor, written in Python.\r\n\r\nIt opens savegame files from Heroes of Might and Magic III,\r\nallowing to see an overview of all heroes, and edit any and all hero attributes:\r\n\r\n- primary skills, like Attack\r\n- other primary attributes, like level, experience points, spell points etc\r\n- war machines, like Ballista\r\n- secondary skills, like Logistics (more than 8 skills can be added)\r\n- artifacts, like Boots of Speed, both equipment and inventory items\r\n- spells, like Slow\r\n- army creatures, like Golden Dragons\r\n\r\nAttributes can be copied from one hero and pasted to another.\r\n\r\nHero data can be exported as HTML or spreadsheet or JSON/YAML data.\r\n\r\nSupports savegames from: Restoration of Erathia, Armageddon's Blade, Shadow of Death,\r\nHeroes Chronicles, and Horn of the Abyss.\r\n\r\nUsable as a graphical program, command-line program, or library.\r\n\r\nDownloads at https://suurjaak.github.io/h3sed.\r\n\r\n\r\nGraphical Usage\r\n---------------\r\n\r\nNavigate the file view to Heroes3 games-folder and open a savegame file to edit,\r\nor drag and drop a savegame file onto the program window.\r\n\r\nChoose a hero to modify, change attributes to your liking, and save the file.\r\nChanges will be available in Heroes3 after loading the changed savegame.\r\n\r\nAttributes from one hero can be copied to clipboard as text,\r\nand pasted onto another hero, overwriting their data.\r\n\r\nA timestamped daily backup copy is automatically created of the savegame file, one per day.\r\n\r\n![Screenshot](https://raw.githubusercontent.com/suurjaak/h3sed/gh-pages/img/screen.png)\r\n\r\nNote: savegames from different releases of Armageddon's Blade may have different\r\nstructure for equipment and inventory. For working with savegames from an earlier\r\nversion, uncheck \"New format in Armageddon's Blade\" in program menu File -> Options.\r\n\r\n**Warning:** as Heroes3 savefile format is not publicly known,\r\nloaded data and saved results may be invalid and cause problems in game.\r\nThis program is based on unofficial information\r\ngathered from observation and online forums.\r\n\r\n\r\nCommand-line Interface\r\n----------------------\r\n\r\n```\r\n$ h3sed -h\r\n\r\nusage: h3sed [-h] [-v] {gui,info,export} ...\r\n\r\nh3sed - Heroes3 Savegame Editor.\r\n\r\npositional arguments:\r\n  {gui,info,export}\r\n    gui              launch h3sed graphical program (default option)\r\n    info             print information on savegame\r\n    export           export heroes from savegame\r\n\r\noptional arguments:\r\n  -h, --help         show this help message and exit\r\n  -v, --version      show program's version number and exit\r\n```\r\n\r\n```\r\n$ h3sed -h gui\r\n\r\nusage: h3sed gui [SAVEGAME [SAVEGAME ...]]\r\n\r\nLaunch h3sed graphical program (default option).\r\n\r\npositional arguments:\r\n  SAVEGAME    Heroes3 savegames(s) to open on startup, if any (supports * wildcards)\r\n```\r\n\r\n```\r\n$ h3sed -h info\r\n\r\nusage: h3sed info SAVEGAME [SAVEGAME ...]\r\n\r\nPrint information on given savegame(s).\r\n\r\npositional arguments:\r\n  SAVEGAME    Heroes3 savegame(s) to read (supports * wildcards)\r\n```\r\n\r\n```\r\n$ h3sed -h export\r\n\r\nusage: h3sed export [-f {csv,html,json,yaml}] [-s [TEXT [TEXT ...]]] [-o [OUTFILE]]\r\n                    SAVEGAME [SAVEGAME ...]\r\n\r\nExport heroes from savegame as CSV, HTML, JSON or YAML.\r\n\r\npositional arguments:\r\n  SAVEGAME              Heroes3 savegame(s) to read (supports * wildcards)\r\n\r\noptional arguments:\r\n  -h, --help            show this help message and exit\r\n  -f {csv,html,json,yaml}, --format {csv,html,json,yaml}\r\n                        output format (defaults to \"yaml\")\r\n  -s [TEXT [TEXT ...]], --search [TEXT [TEXT ...]]\r\n                        filter heroes by name or any matching properties\r\n                        (supports keyword search like \"skill=Luck\")\r\n  -o [FILE], --output [FILE]\r\n                        write output to file instead of printing to console;\r\n                        filename will be auto-generated if not given;\r\n                        automatic for non-printable formats (csv, html)\r\n```\r\n\r\n\r\nLibrary usage\r\n-------------\r\n\r\n```python\r\nimport h3sed\r\n\r\nsavefile = h3sed.Savefile(\"path/to/my.CGM\")\r\n\r\nhero = next(savefile.find_heroes(name=\"Solmyr\"))\r\nhero.stats.attack += 10\r\nhero.skills.append(name=\"Logistics\", level=\"Expert\")\r\nhero.army.append(name=\"Master Gremlin\", count=1000)\r\nhero.equipment.feet = \"Boots of Speed\"\r\nhero.inventory.append(\"Spyglass\")\r\nhero.spells.add(\"Haste\")\r\n\r\nfor hero in savefile.find_heroes(skill=\"Earth Magic\"):\r\n    hero.equipment.side1 = \"Orb of Silt\"\r\n\r\nsavefile.realize()\r\nsavefile.write()\r\n```\r\n\r\n\r\nInstallation\r\n------------\r\n\r\nWindows: download and launch the latest setup from\r\nhttps://suurjaak.github.io/h3sed/downloads.html.\r\n\r\nMac/Linux/other: install Python and pip, run `pip install h3sed`.\r\n\r\nThe pip installation will add the `h3sed` command to path.\r\n\r\nWindows installers have been provided for convenience. The program itself\r\nis stand-alone, can work from any directory, and does not need additional\r\ninstallation. The installed program can be copied to a USB stick and used\r\nelsewhere, same goes for the source code.\r\n\r\nIf running from pip installation, run `h3sed` from the command-line.\r\nIf running straight from source code, open a terminal to `h3sed/src`\r\nand run `python -m h3sed`.\r\n\r\n\r\nSource Dependencies\r\n-------------------\r\n\r\nIf running from source code, h3sed needs Python 2.7 or Python 3.6 or higher,\r\nand the following 3rd-party Python packages:\r\n* pyyaml (https://pyyaml.org)\r\n* step (https://pypi.org/project/step-template)\r\n* wxPython 4.0+ (https://wxpython.org) (optional, required for graphical interface)\r\n\r\n\r\nAttribution\r\n-----------\r\n\r\nKnowledge on Heroes3 savegames gathered mostly from Heroes Community forum,\r\nhttp://heroescommunity.com/viewthread.php3?TID=18817.\r\n\r\nContains several icons from Heroes of Might and Magic III, (c) 1999 3DO.\r\n\r\nBinaries compiled with PyInstaller, https://www.pyinstaller.org.\r\n\r\nInstallers created with Nullsoft Scriptable Install System,\r\nhttps://nsis.sourceforge.net/.\r\n\r\n\r\nLicense\r\n-------\r\n\r\nCopyright (c) 2020 by Erki Suurjaak.\r\nReleased as free open source software under the MIT License,\r\nsee LICENSE.md for full license text.\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Heroes3 Savegame Editor",
    "version": "3.1",
    "project_urls": {
        "Homepage": "https://github.com/suurjaak/h3sed"
    },
    "split_keywords": [
        "homm",
        "homm3",
        "heroes3",
        "savegame"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d5ccaf71d7134559502696e31bd318beae8204836b79c2e70f8978b76ef504d9",
                "md5": "940d98e9f9d313664714f69987115414",
                "sha256": "97e66c1fd5e5ed26013bb698ec2fb9359cda0748a730be8f322525571ca54ad4"
            },
            "downloads": -1,
            "filename": "h3sed-3.1-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "940d98e9f9d313664714f69987115414",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 172643,
            "upload_time": "2025-09-01T17:37:01",
            "upload_time_iso_8601": "2025-09-01T17:37:01.520037Z",
            "url": "https://files.pythonhosted.org/packages/d5/cc/af71d7134559502696e31bd318beae8204836b79c2e70f8978b76ef504d9/h3sed-3.1-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-01 17:37:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "suurjaak",
    "github_project": "h3sed",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "pyyaml",
            "specs": []
        },
        {
            "name": "step-template",
            "specs": [
                [
                    ">=",
                    "0.0.4"
                ]
            ]
        },
        {
            "name": "wxPython",
            "specs": [
                [
                    ">=",
                    "4.0"
                ]
            ]
        }
    ],
    "lcname": "h3sed"
}
        
Elapsed time: 3.18832s