Giter Club home page Giter Club logo

gamemaster_guidance's People

Contributors

hark130 avatar

Watchers

 avatar  avatar

gamemaster_guidance's Issues

GAGU-25: Guild % can't go lower than 1

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

GAGU-19: Refactor modules to standardize common options

Common options include, but are not necessarily limited to, the following:

  • 42: Main Menu
  • 999: Exit

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.

GAGU-11: Update wiki

Add the following information to the wiki page:

  • Useful git commands (see below)
  • Review instructions
  • Release instructions
git branch --merged | egrep -v "(^*|master|dev|development)" | xargs git branch -d
git remote prune origin

GAGU-20: `GGCity()` BUG Details-Demographics

_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)

GAGU-23: Add prisoner details as a feature to `GGJob._rando_guild_job_details_guard()`

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.

GAGU-14: Add "gang" features

  • Implement an optional --gang, -g command line argument to read gang details
  • Add "gang" sub-menu
    • Add option to change default gang (default is top entry)
    • Add option to randomize jobs/scores for default gang (default to 10 jobs); Jobs include complications
    • Add option to generate random weekly event (e.g., double diplomatic penalties, listen for..., watch for..., key guild member is sick)

GAGU-22: Consider refactoring job generation to include/consider morals

Some 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:

  1. watch
  2. lure
  3. distract
  4. trick
  5. _
  6. _
  7. _
  8. accost
  9. attack
  10. kill
    A guild's morals could factor into which of these verbs is randomized. A "good" guild may settle for a pure lookout (e.g., whistle when the cops show up and we all run) whereas an "evil" guild might murder cops in the local area before the property theft even begins).

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.

GAGU-15: General code polish

This is a list of code improvements that aren't necessarily BUGs:

  • Refactor all classes so that constructors do not raise Exceptions
  • Standardize string literals to default to 'Use this'
  • Add type hints
  • The SPOT for race string literals, as an example, is not globally used throughout. For instance, gg_ancestry duplicates the string literals.

GAGU-24: Fix Guild Menu job BUG

Fix a BUG in the Guild Menu's job randomization output.

2. [JOB]: Escort - Accompany one master thief2 master thieves to a field observation at a(n) grain distributor

Focus on the one master thief2 master thieves portion of

Screenshot from 2024-01-04 13-50-46

GAGU-5: Read city-based yml file to calculate geographic bias (LEGACY TASK)

From the README...

  1. 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.

GAGU-12: Miscellaneous (LEGACY TASK)

From the legacy README...

  1. 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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.