hark130 / gamemaster_guidance Goto Github PK
View Code? Open in Web Editor NEWGM aid for Pathfinder 2nd Edition written in Python 3
License: GNU General Public License v3.0
GM aid for Pathfinder 2nd Edition written in Python 3
License: GNU General Public License v3.0
From the legacy README...
- Randomize Something
[ ] 2. REfactor GG_Menu's "randomize a name" entry into "randomize [something]" and create a sub-menu
Why can't the percentages for a guild's functional specialties be at 0%? Seems reasonable that some guilds just don't do certain jobs.
I was justing a local (so far) file to manually test my Extortion implementation. To do so, I set extortion to 100% and everything else to 0% and I got this...
Traceback (most recent call last):
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/home/joe/Documents/Personal/Programming/Gamemaster_Guidance/gamemaster_guidance/__main__.py", line 29, in <module>
main()
File "/home/joe/Documents/Personal/Programming/Gamemaster_Guidance/gamemaster_guidance/__main__.py", line 25, in main
menu(city_dict, guild_dict)
File "/home/joe/Documents/Personal/Programming/Gamemaster_Guidance/gamemaster_guidance/gg_menu.py", line 163, in menu
user_input = guild_menu(guild_obj)
File "/home/joe/Documents/Personal/Programming/Gamemaster_Guidance/gamemaster_guidance/gg_menu.py", line 102, in guild_menu
guild_obj.rando_jobs()
File "/home/joe/Documents/Personal/Programming/Gamemaster_Guidance/gamemaster_guidance/gg_guild.py", line 57, in rando_jobs
job_list = self._job_obj.rando_jobs(num_jobs=self._num_jobs)
File "/home/joe/Documents/Personal/Programming/Gamemaster_Guidance/gamemaster_guidance/gg_job.py", line 110, in rando_jobs
self._validate_input()
File "/home/joe/Documents/Personal/Programming/Gamemaster_Guidance/gamemaster_guidance/gg_job.py", line 863, in _validate_input
self._validate_special_dict()
File "/home/joe/Documents/Personal/Programming/Gamemaster_Guidance/gamemaster_guidance/gg_job.py", line 886, in _validate_special_dict
validate_percent(self._special_dict[func_special_entry], func_special_entry)
File "/home/joe/Documents/Personal/Programming/Gamemaster_Guidance/gamemaster_guidance/gg_misc.py", line 86, in validate_percent
raise ValueError(f'The {name} may not be less than 1')
ValueError: The corruption may not be less than 1
One exists... but it's not written right.
Common options include, but are not necessarily limited to, the following:
Likely, these values should be standardized in gg_globals.py
. Meanwhile, all hard-coded references to these values should be refactored to use the SPOT from gg_globals.py
.
Also, consider automating the visual formatting of printed menu items to zfill
, or something similar, based on the width of the largest menu item selection value.
From the legacy README...
Double back and implement the "validate defined" method for the "GG City" class
[ ] 2. Magic Items (always recalculate?)
Add the following information to the wiki page:
git
commands (see below)git branch --merged | egrep -v "(^*|master|dev|development)" | xargs git branch -d
git remote prune origin
From the legacy README...
- Custom Exceptions for new classes
[ ] 1. GG_Ancestry Exception to indicate unsupported feature
[ ] 2. GG_Character(?) Exception
_construct_ancestry_string()
has a BUG forming the ancestry string. If there are equal values, the same race will be printed more than once. Replicate this bug with: python -m gamemaster_guidance --cityfile configs/test_city.yml
, 4
, 1
.
------------
DEMOGRAPHICS
------------
Government Autocracy
Population 196302 (24537 Dwarfs; 24537 Dwarfs; 24537 Dwarfs; 24537 Dwarfs; 24537 Dwarfs; 73617 other)
Instead of getting
[JOB]: Guard Duty - Prison guard for 3-10 prisoners
it would be nice to have something like
[JOB]: Guard Duty - Prison guard for 3-10 prisoners: priest, 3x gang members, assassin
You know the players are gonna ask. It will make it easier to put a bit more detail behind this job. Randomize from the antagonist database. Maybe even throw in a local guild member or an ally to keep things spicy.
Reasons? Inter-guild hostage, intra-guild suspicion of malfeasance, profitable hostage, antagonist to the guild, unwilling member of witness protection, identity theft, etc.
From the legacy README...
- Add more to character creation
[ ] 1. Add "quirks" to character creation. Use:
- https://nerdsonearth.com/2016/01/creating-memorable-npc-100-character-quirks/
- http://dndspeak.com/2017/12/100-personality-quirks/
- D&D 3.5 Dungeon Master's Guide P. 128
[ ] 2. Add appearance notes to characer creation. (e.g., neatly pressed clothes, worn and thin jacket, mismatched fashion)
From the legacy README...
- Expand the Human ethnicity of Tian
[ ] 1. Add all subgroups to the Human ethnicity of Tian
--gang, -g
command line argument to read gang detailsSome descriptors/objects/verbs are more nefarious than others. As of now, they're all going into a flat database. It could help to assign 1-to-10 scale morals (1 - good, 10 - evil) to some descriptors to help guide job generation for a given gang.
For instance, on the matter of Property Crimes - Pickpocketing/Shoplifting...
These verbs are not all created equally: distract, accost, trick, lure, assist, watch, attack, kill.
Some of these verbs are inherently more evil than others. On a scale of 1-to-10, they could be ranked thusly:
Another example could come from Arson. The verb "char" and "singe" are significantly less evil than "incinerate" and "cremate". Also, values could be assigned to the target. The act of charring/incinerating a document is significantly less "evil" than charring/incinerating a house/business/neighborhood.
From the legacy README...
- Update remaining settlement status
[ ] 4. Danger
This is a list of code improvements that aren't necessarily BUGs:
'Use this'
gg_ancestry
duplicates the string literals.Make GAGU a Python package
Add usage instructions
Add entries to the relevant menus (e.g., city, guild) to generate the following:
Do it the right way
From the legacy README...
- Human ethnicity Nidalese
[ ] 1. Find and implement character functionality for the Nidalese ethnicity (missing?!)
From the README...
- Read city-based yml file to calculate geographic bias
[ ] 6. Update NPC generation of "NPC Classes" (e.g., Adept, Warrior) once Paizo releases them for 2nd edition. NOTE: REfactor G_City.rando_remaining_npc_population() to consolidate the top-down NPC-class-calculation with the population-left-overs-calcuation
[ ] 7. Add support for magic item generation. While you're at it, add functionality to print the magic items in the Marketplace as well.
[ ] 8. Add support for user-driven "Notable NPCs". Don't make it mandatory. Print it if available under DEMOGRAPHICS.
From the legacy README...
- Miscellaneous
[ ] 1. AESTHETIC: Don't print notes for characters if there are no notes
[ ] 2. BUG: REfactor GG_City DEMOGRAPHICS-Population string construction to use parsed attributes (raceLookup) instead of cityDict
[ ] 3. BUG: Verify there's no way for calculated NPC levels to go below 0. (e.g., smallest city type + lowest roll)
[ ] 4. AESTHETIC: Properly pluralize ancestries when calculating Demographic Populations in GG_City's "print city details" functionality
[ ] 5. BUG?: Why am I printing things from the dictionary instead of parsing to class attributes and then printing?!
[ ] 6. AESTHETIC: Rename 'private' GG_City class attributes by prepending them with an underscore
[ ] 8. BUG: Providing a population that contains a comma results in an error: ValueError: invalid literal for int() with base 10: '18,300'
[ ] 10. BUG: Some names have two spaces in them and it's annoying
[ ] 11. BUG: Oppara config file prints out "1092 Elfs; 1092 Elfs; -346 other" for City Details
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.