hyperborea3


Namehyperborea3 JSON
Version 0.5.4 PyPI version JSON
download
home_page
SummaryCharacter Generator plus other tools for the Hyperborea RPG, 3rd Edition
upload_time2023-02-09 01:53:07
maintainer
docs_urlNone
authorJeremy Deram
requires_python>=3.8
licenseMIT License Copyright (c) 2021 Jeremy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords dungeons dragons hyperborea hyperborea3 rpg
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # hyperborea3

![Tests](https://github.com/jderam/hyperborea3/actions/workflows/tests.yml/badge.svg)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

An app for creating randomly-generated characters for the [Hyperborea](https://www.hyperborea.tv/) 3rd edition tabletop roleplaying game.

## Table of Contents
- [hyperborea3](#hyperborea3)
  - [Table of Contents](#table-of-contents)
  - [Installation](#installation)
  - [Usage](#usage)
  - [Parameters](#parameters)
  - [Sample Output](#sample-output)
  - [`class_id_map`](#class_id_map)
  - [Use Cases](#use-cases)
  - [Links](#links)
  - [Future Development](#future-development)
  - [Contributions](#contributions)



## Installation

``` bash
$ python -m pip install hyperborea3
```



## Usage

The main entry point to this application is the `PlayerCharacter` class. By default, a random character will be generated with the following options:

* Abilities are rolled using dice method III (4d6 drop lowest)
* Class is randomly selected from amongst those where ability score requirements are met
* 0 experience points
* All character class options are enabled
* The by-the-book descending Armour Class system is used

``` python
from pprint import pprint
from hyperborea3.player_character import PlayerCharacter

pc = PlayerCharacter()
pprint(pc.to_dict())
```
See [Sample Output](#sample-output) for some examples of what the generated characters look like.

## Parameters

Parameter | Description
----------|------------
`method` | _int, default 3_<br>Dice method used to roll ability scores. <br>**Allowed Values**: If no `class_id` is passed, `1`, `2`, `3`, `4`, `5` may be used. If a specific `class_id` other than `0` is passed, any value passed is ignored and `method=6` is automatically used.<br>**Example**: `pc = PlayerCharacter(method=5)` to create a random-classed PC using dice method V for rolling ability scores.
`class_id` | _int, default 0_<br>If `0`, a random class will be selected and dice methods 1 through 5 can be used. Otherwise, a value of 1 to 33 can be entered, and the dice method will automatically be set to 6, regardless of what is passed.<br>**Allowed Values**: `0` through `33`. See [`class_id_map`](#classidmap) below.<br>**Example**: `pc = PlayerCharacter(class_id=10)` to create a Ranger.
`subclasses` | _int, default 2_<br>Determines which classes are selected from when generating a character of a random class.<br>**Allowed Values**: `0`=Principal classes only (Fighter, Magician, Cleric, Thief); `1`=Principal classes plus subclasses; `2`=Principal classes, subclasses, and variant subclasses like the Ice Thief and Fell Paladin.<br>**Example**: `pc = PlayerCharacter(subclasses=0)` to create a random character from one of the 4 principal classes.
`xp` | _int, default 0_<br>The number of experience points the character has. This will determine the character's level, which is capped at 12.<br>**Allowed Values**: Any positive integer<br>**Example**: `pc = PlayerCharacter(class_id=1, xp=4000)` to create a 3rd-level Fighter.
`ac_type` | _str, default "descending"_<br>Choose whether to use ascending or descending AC system.<br>**Allowed Values**: `"descending"`, `"ascending"`<br>**Example**: `pc = PlayerCharacter(ac_type="ascending")`


## Sample Output

Check out the [directory of sample characters](https://github.com/jderam/hyperborea3/tree/main/hyperborea3/sample_data/PlayerCharacter) to examine and explore the data structures.



## `class_id_map`
Use this as a reference if you need to pass `class_id` to generate a character of a specific class.

``` python
1: "Fighter"
2: "Magician"
3: "Cleric"
4: "Thief"
# --------------> subclasses=0 will return a choice from above this line
5: "Barbarian"
6: "Berserker"
7: "Cataphract"
8: "Huntsman"
9: "Paladin"
10: "Ranger"
11: "Warlock"
12: "Cryomancer"
13: "Illusionist"
14: "Necromancer"
15: "Pyromancer"
16: "Witch"
17: "Druid"
18: "Monk"
19: "Priest"
20: "Runegraver"
21: "Shaman"
22: "Assassin"
23: "Bard"
24: "Legerdemainist"
25: "Purloiner"
26: "Scout"
# --------------> subclasses=1 will return a choice from above this line
27: "Fell Paladin"
28: "Ice Lord"
29: "Fire Lord"
30: "Death Soldier"
31: "Mountebank"
32: "Fire Thief"
33: "Ice Thief"
# --------------> subclasses=2 will return a choice from above this line
```



## Use Cases

I developed this package to generate characters for my personal gaming group. I use the package along with FastAPI and host the app on Heroku. I use it in conjunction with Google's app script (javascript) to get the character data from the Heroku endpoint, and populate it into a Google Sheets character sheet. It's a bit janky, but it gets the job done for us. I put a lot of work into implementing the rules to generate characters of any class and any level up to the game's maximum of level 12.

If someone out there were to use this and create a proper front-end website for it, that would bring me much joy. If you use this, please share what you've built with it!

That being said, I also plan to hone my own web skills and try to build a web-based front end for it, but that will take time.



## Links

[**App on render**](https://rpg-tools.onrender.com/docs):  All the endpoints prefixed with `/hyperborea3/` use this package. If you are curious about the container that gets deployed, see [this repo](https://github.com/jderam/rpg-tools-containers).

[**Google Sheet**](https://docs.google.com/spreadsheets/d/1Ll5aQwxn-bHl_GIYN9iQWbO3TitqnWJLHMm6BHP3EoM/edit?usp=sharing): with character generator integrated via Google's _Apps Script_. If you are intersted in simply making a copy of the Google Sheet character generator for your gaming group to use, see [this blog post](https://peoplethemwithmonsters.blogspot.com/2022/02/google-sheets-character-generator-for.html) for instructions on how to do that.



## Future Development

I plan to implement the following features into this package, as time and motivation allows:

* Additional character data:
  * Secondary Skills
  * Random name generation based on the tables in the rulebook
  * Height and Weight based on the tables in the rulebook

* Add detailed html-formatted spell descriptions to the spells database table in order to enable spell lookups and possibly some sort of tool to create character spellbook documents. Detailed spell information could be added to the character output as well.

* A fully-detailed monster database table that would enable the lookup of full monster stat blocks.

* A random treasure generator tool. Pass the treasure type and get a randomly generated result with monetary treasure and/or magic items.

* Given completed spells, monsters, and treasure data, I'd like to create compendiums for use with [Foundry VTT](https://foundryvtt.com/).



## Contributions

Pull requests for small updates and bug fixes are always welcome. If you have a larger update you're interested in contributing, please create an Issue and we can have a conversation about it. If you are a talented front end developer and are interested in creating pretty web tools for this, I'd love to do whatever I can to help you!

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "hyperborea3",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "Dungeons,Dragons,Hyperborea,Hyperborea3,RPG",
    "author": "Jeremy Deram",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/77/90/321feb1f60c5c8052b000548390e8c2e61c5053502129a91b6fb903696d8/hyperborea3-0.5.4.tar.gz",
    "platform": null,
    "description": "# hyperborea3\n\n![Tests](https://github.com/jderam/hyperborea3/actions/workflows/tests.yml/badge.svg)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\nAn app for creating randomly-generated characters for the [Hyperborea](https://www.hyperborea.tv/) 3rd edition tabletop roleplaying game.\n\n## Table of Contents\n- [hyperborea3](#hyperborea3)\n  - [Table of Contents](#table-of-contents)\n  - [Installation](#installation)\n  - [Usage](#usage)\n  - [Parameters](#parameters)\n  - [Sample Output](#sample-output)\n  - [`class_id_map`](#class_id_map)\n  - [Use Cases](#use-cases)\n  - [Links](#links)\n  - [Future Development](#future-development)\n  - [Contributions](#contributions)\n\n\n\n## Installation\n\n``` bash\n$ python -m pip install hyperborea3\n```\n\n\n\n## Usage\n\nThe main entry point to this application is the `PlayerCharacter` class. By default, a random character will be generated with the following options:\n\n* Abilities are rolled using dice method III (4d6 drop lowest)\n* Class is randomly selected from amongst those where ability score requirements are met\n* 0 experience points\n* All character class options are enabled\n* The by-the-book descending Armour Class system is used\n\n``` python\nfrom pprint import pprint\nfrom hyperborea3.player_character import PlayerCharacter\n\npc = PlayerCharacter()\npprint(pc.to_dict())\n```\nSee [Sample Output](#sample-output) for some examples of what the generated characters look like.\n\n## Parameters\n\nParameter | Description\n----------|------------\n`method` | _int, default 3_<br>Dice method used to roll ability scores. <br>**Allowed Values**: If no `class_id` is passed, `1`, `2`, `3`, `4`, `5` may be used. If a specific `class_id` other than `0` is passed, any value passed is ignored and `method=6` is automatically used.<br>**Example**: `pc = PlayerCharacter(method=5)` to create a random-classed PC using dice method V for rolling ability scores.\n`class_id` | _int, default 0_<br>If `0`, a random class will be selected and dice methods 1 through 5 can be used. Otherwise, a value of 1 to 33 can be entered, and the dice method will automatically be set to 6, regardless of what is passed.<br>**Allowed Values**: `0` through `33`. See [`class_id_map`](#classidmap) below.<br>**Example**: `pc = PlayerCharacter(class_id=10)` to create a Ranger.\n`subclasses` | _int, default 2_<br>Determines which classes are selected from when generating a character of a random class.<br>**Allowed Values**: `0`=Principal classes only (Fighter, Magician, Cleric, Thief); `1`=Principal classes plus subclasses; `2`=Principal classes, subclasses, and variant subclasses like the Ice Thief and Fell Paladin.<br>**Example**: `pc = PlayerCharacter(subclasses=0)` to create a random character from one of the 4 principal classes.\n`xp` | _int, default 0_<br>The number of experience points the character has. This will determine the character's level, which is capped at 12.<br>**Allowed Values**: Any positive integer<br>**Example**: `pc = PlayerCharacter(class_id=1, xp=4000)` to create a 3rd-level Fighter.\n`ac_type` | _str, default \"descending\"_<br>Choose whether to use ascending or descending AC system.<br>**Allowed Values**: `\"descending\"`, `\"ascending\"`<br>**Example**: `pc = PlayerCharacter(ac_type=\"ascending\")`\n\n\n## Sample Output\n\nCheck out the [directory of sample characters](https://github.com/jderam/hyperborea3/tree/main/hyperborea3/sample_data/PlayerCharacter) to examine and explore the data structures.\n\n\n\n## `class_id_map`\nUse this as a reference if you need to pass `class_id` to generate a character of a specific class.\n\n``` python\n1: \"Fighter\"\n2: \"Magician\"\n3: \"Cleric\"\n4: \"Thief\"\n# --------------> subclasses=0 will return a choice from above this line\n5: \"Barbarian\"\n6: \"Berserker\"\n7: \"Cataphract\"\n8: \"Huntsman\"\n9: \"Paladin\"\n10: \"Ranger\"\n11: \"Warlock\"\n12: \"Cryomancer\"\n13: \"Illusionist\"\n14: \"Necromancer\"\n15: \"Pyromancer\"\n16: \"Witch\"\n17: \"Druid\"\n18: \"Monk\"\n19: \"Priest\"\n20: \"Runegraver\"\n21: \"Shaman\"\n22: \"Assassin\"\n23: \"Bard\"\n24: \"Legerdemainist\"\n25: \"Purloiner\"\n26: \"Scout\"\n# --------------> subclasses=1 will return a choice from above this line\n27: \"Fell Paladin\"\n28: \"Ice Lord\"\n29: \"Fire Lord\"\n30: \"Death Soldier\"\n31: \"Mountebank\"\n32: \"Fire Thief\"\n33: \"Ice Thief\"\n# --------------> subclasses=2 will return a choice from above this line\n```\n\n\n\n## Use Cases\n\nI developed this package to generate characters for my personal gaming group. I use the package along with FastAPI and host the app on Heroku. I use it in conjunction with Google's app script (javascript) to get the character data from the Heroku endpoint, and populate it into a Google Sheets character sheet. It's a bit janky, but it gets the job done for us. I put a lot of work into implementing the rules to generate characters of any class and any level up to the game's maximum of level 12.\n\nIf someone out there were to use this and create a proper front-end website for it, that would bring me much joy. If you use this, please share what you've built with it!\n\nThat being said, I also plan to hone my own web skills and try to build a web-based front end for it, but that will take time.\n\n\n\n## Links\n\n[**App on render**](https://rpg-tools.onrender.com/docs):  All the endpoints prefixed with `/hyperborea3/` use this package. If you are curious about the container that gets deployed, see [this repo](https://github.com/jderam/rpg-tools-containers).\n\n[**Google Sheet**](https://docs.google.com/spreadsheets/d/1Ll5aQwxn-bHl_GIYN9iQWbO3TitqnWJLHMm6BHP3EoM/edit?usp=sharing): with character generator integrated via Google's _Apps Script_. If you are intersted in simply making a copy of the Google Sheet character generator for your gaming group to use, see [this blog post](https://peoplethemwithmonsters.blogspot.com/2022/02/google-sheets-character-generator-for.html) for instructions on how to do that.\n\n\n\n## Future Development\n\nI plan to implement the following features into this package, as time and motivation allows:\n\n* Additional character data:\n  * Secondary Skills\n  * Random name generation based on the tables in the rulebook\n  * Height and Weight based on the tables in the rulebook\n\n* Add detailed html-formatted spell descriptions to the spells database table in order to enable spell lookups and possibly some sort of tool to create character spellbook documents. Detailed spell information could be added to the character output as well.\n\n* A fully-detailed monster database table that would enable the lookup of full monster stat blocks.\n\n* A random treasure generator tool. Pass the treasure type and get a randomly generated result with monetary treasure and/or magic items.\n\n* Given completed spells, monsters, and treasure data, I'd like to create compendiums for use with [Foundry VTT](https://foundryvtt.com/).\n\n\n\n## Contributions\n\nPull requests for small updates and bug fixes are always welcome. If you have a larger update you're interested in contributing, please create an Issue and we can have a conversation about it. If you are a talented front end developer and are interested in creating pretty web tools for this, I'd love to do whatever I can to help you!\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2021 Jeremy  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
    "summary": "Character Generator plus other tools for the Hyperborea RPG, 3rd Edition",
    "version": "0.5.4",
    "split_keywords": [
        "dungeons",
        "dragons",
        "hyperborea",
        "hyperborea3",
        "rpg"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b09843f7eeadaca0244008f254b565b4df39eb34dac9b0acaee9ca0cfe26e31c",
                "md5": "0509860b92b8667994fa4ec8a5f7d4fe",
                "sha256": "c7dfb6dd285431f4512a32825114ca471fdd22288e6972b448524588e8b7ed1e"
            },
            "downloads": -1,
            "filename": "hyperborea3-0.5.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0509860b92b8667994fa4ec8a5f7d4fe",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 253527,
            "upload_time": "2023-02-09T01:53:05",
            "upload_time_iso_8601": "2023-02-09T01:53:05.520371Z",
            "url": "https://files.pythonhosted.org/packages/b0/98/43f7eeadaca0244008f254b565b4df39eb34dac9b0acaee9ca0cfe26e31c/hyperborea3-0.5.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7790321feb1f60c5c8052b000548390e8c2e61c5053502129a91b6fb903696d8",
                "md5": "2dc0a6fede9b2a8747cc17ec39122ff0",
                "sha256": "0d67b5c446e46a5452851861410cbfd583d138a4a587ea2e0b115a7a5b4ef1a1"
            },
            "downloads": -1,
            "filename": "hyperborea3-0.5.4.tar.gz",
            "has_sig": false,
            "md5_digest": "2dc0a6fede9b2a8747cc17ec39122ff0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 267090,
            "upload_time": "2023-02-09T01:53:07",
            "upload_time_iso_8601": "2023-02-09T01:53:07.325281Z",
            "url": "https://files.pythonhosted.org/packages/77/90/321feb1f60c5c8052b000548390e8c2e61c5053502129a91b6fb903696d8/hyperborea3-0.5.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-02-09 01:53:07",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "hyperborea3"
}
        
Elapsed time: 0.04220s