nicolealexawalter / Dungeons-and-Dragons-Utility-Tool

https://nicolealexawalter.github.io/Dungeons-and-Dragons-Utility-Tool/
0 stars 0 forks source link

Create NPC Screen #2

Closed nicolealexawalter closed 3 years ago

nicolealexawalter commented 3 years ago

Actually, just do it as in the comment below. Split into three sections, with new values for the relevant ones!

Need a screen where I can generate a brand new NPC with the following features:

  1. Name
    • custom generated by race, using word generator
  2. race
  3. age
  4. gender
  5. sexuality
  6. all stats
  7. moral
  8. ideal
  9. trait
  10. emotion
  11. trade
  12. skill
  13. ideal (aka worth, religion, etc)

nicolealexawalter commented 3 years ago

all items will be equally likely to promote diversity and prevent me from having to re-generate an npc just to get someone unique and interesting

also if I add a whole bunch of new races then it will keep me from having a million orcs generated at random, ya know?

create a config file that will enumerate each options for all given characteristics (at least race, age, gender, sexuality, stats - other items can be 1:1 for entries in the given list) and allow me to dictate their commonality in a simple way

as in, a race.config could look like: Human,70% Elf,10% Dwarf,10% Halfling,5% Gnome,5%

nicolealexawalter commented 3 years ago

Need to have word generator (#7) completed for generation of names.

will need one language file per race (so each race can have its own custom name sounds)

Consider filtering languages by sounds? (EG all words with two consecutive consonants (foot, feet), all words with SH/CH/TH/DR/... sounds, etc)

could also filter language by the scripts of books - text of the Bible for one language, text of moby dick for another, etc

nicolealexawalter commented 3 years ago

will be included in the race file, not done programmatically

Allow for race mixing :) select two (or four) races at random and combine them into a half & half

nicolealexawalter commented 3 years ago

Notes on ticket (concerning this ticket + #7 ):

FORMAT

/Name /Age /Sexuality /Gender /Race, /Stats Is /Trait, Values /Ideal, Feels /Emotion Born /Locale, grew up /activity, currently works as a /trade

EXAMPLE

Silura amiable old androphilic queer Orc Values Creativity | Feels Surprised | STR -2 / DEX +2 Born in a magical womb, grew up as a knight's squire, currently is a aristocrat.

REQUIREMENTS

Need files for: [-] trades

nicolealexawalter commented 3 years ago

To-Do

  1. Implement markov chain functionality

  2. Modify markov chain to take in arrays of individual words and split them apart so I can generate new words instead of word chains

  3. Generate NPC text using hardcoded values and add it into the pane 3a. Add a reset button so I can clear the pane as needed!

  4. set up basic random implementation 4a. Use basic markov chain to generate example name 4b. Set up random choosing of file & non-file values

  5. create / finalize non-race files 5a. Trades / remove duplicate rows / set up (a / an / the) prefixes 5b. Activities / create file / make sure they follow (grew up) prefix 5c. Locales / expand the list of locations / set up (on a / in a / near the) prefixes 5d. Emotions / clean up any I dont understand? 5e. Ideals / make sure they fit into (Values X) format 5f. Traits / make sure they all fit as adjectives

  6. load files into global variables

  7. set up race/language files & name/race generation 7a. start with basic master race file (human-human) and testing language file 7b. ensure we can automatically get the language file for a given race and use it as below i. build markov chains for each language ii. build function to generate name for a given race using the relevant markov chain iii. load in master race list iv. IN NPC GEN, select a race at random v. grab primary race vi. use primary race to generate name from relevant markov chain vii. set descriptive race as race value viii. set up basic human/elf test case to determine that it works!

  8. Build out list of all primary races (see below for checklist)

  9. Build out list of descrip races on each primary (see below for ideas)

  10. Add both lists to races file!

  11. Create a language file for each primary race and add it to repo (see below for ideas)

  12. Add code to A) fetch raw language array, B) train chain on raw array, C) switch statement in determineName by primayrace

  13. For adding the actual determination of name, consider the max length / number of names / how to conjoin them (`-,) 6a. consider adding code to create minimum length of word - could just generate a new word and append it to the word in generate word, and if it goes over max just trim it down! 6b. see below for considerations / ideas

    MASTER RACE FILE
    - should follow primary:description format
    - dont forget to include half/quarter/mixed/1% races (any possible combinations!)
    - dont forget to review all source material for PLAYABLE races & NPC races! (as in, certain creatures!)
    - review race ideas in comment below
    LANGUAGE FILES
    - should each be totally distinct, as in...:
    - all words with [two consecutive consonants](https://grammar.yourdictionary.com/word-lists/words-with-double-letters.html)
    - all words with SH/CH/TH/DR/... sounds
    - all poly/bi/mono-syllabic sounds
    - words that end/start with certain letters/sounds
    - specific types of words (from bible, moby dick, ancient writes, slang words from urban dictionary or AAVE)
    - maybe literal writing of certain accents? Like, every word in english, but written out with a scottish accent??? (would include apostrophes and stuff, which would help keep the accent going)
    - could customize to a races speech patterns (like an in S' or 's to words for Yuan-ti language!)
    - latin names would be a good one to have
    - lists of names or words from fictional languages? or place names from various places? or fictional times?
    DETERMINING A NAME
    - for each primary race, there should be a different way of determining a name for them
    - each race should have different naming structures
    - EG 1 very long name / 1 short name, 1 long name / 2 sets of 2 names connected via apostrophes to indicate full ancestry? / etc

FINAL TASKS

  1. Consider adding rich text formatting to NPCS? Name bigger & bolded, description italicized, rest paragraph format?
  2. Make sure to implement #7 now that I have all language files in!
nicolealexawalter commented 3 years ago

functionality accomplished! admittedly with tech debt (#48) but still