From 116586e6696de2fd3fe9e4fae78a5d4a9f076eaf Mon Sep 17 00:00:00 2001 From: drusepth Date: Mon, 18 Jul 2022 16:14:16 -0700 Subject: [PATCH 1/2] WIP on cleaning up proof of concept --- .../attributes/character/age_field.rb | 19 ++++++ .../attributes/character/alignment_field.rb | 14 ++++ .../attributes/character/appearance_field.rb | 64 +++++++++++++++++++ .../attributes/character/archetype_field.rb | 15 +++++ .../attributes/character/background_field.rb | 11 ++++ .../attributes/character/blood_type_field.rb | 11 ++++ .../attributes/character/education_field.rb | 20 ++++++ .../attributes/character/ethnicity_field.rb | 13 ++++ .../character/fantasy_race_field.rb | 21 ++++++ .../attributes/character/favorites_field.rb | 18 ++++++ .../attributes/character/gender_field.rb | 11 ++++ .../attributes/character/height_field.rb | 32 ++++++++++ .../attributes/character/hobbies_field.rb | 16 +++++ .../attributes/character/human_race_field.rb | 11 ++++ .../attributes/character/job_field.rb | 12 ++++ .../attributes/character/languages_field.rb | 16 +++++ .../attributes/character/location_field.rb | 11 ++++ .../attributes/character/name_field.rb | 41 ++++++++++++ .../attributes/character/politics_field.rb | 27 ++++++++ .../attributes/character/religion_field.rb | 22 +++++++ .../attributes/character/superpower_field.rb | 11 ++++ app/services/attributes/field.rb | 18 ++++++ app/services/generators/character.rb | 59 +++++++++++++++++ app/services/generators/generator.rb | 5 ++ app/services/templates/character.rb | 5 ++ app/services/templates/template.rb | 4 ++ bin/tristan.rb | 2 +- 27 files changed, 508 insertions(+), 1 deletion(-) create mode 100644 app/services/attributes/character/age_field.rb create mode 100644 app/services/attributes/character/alignment_field.rb create mode 100644 app/services/attributes/character/appearance_field.rb create mode 100644 app/services/attributes/character/archetype_field.rb create mode 100644 app/services/attributes/character/background_field.rb create mode 100644 app/services/attributes/character/blood_type_field.rb create mode 100644 app/services/attributes/character/education_field.rb create mode 100644 app/services/attributes/character/ethnicity_field.rb create mode 100644 app/services/attributes/character/fantasy_race_field.rb create mode 100644 app/services/attributes/character/favorites_field.rb create mode 100644 app/services/attributes/character/gender_field.rb create mode 100644 app/services/attributes/character/height_field.rb create mode 100644 app/services/attributes/character/hobbies_field.rb create mode 100644 app/services/attributes/character/human_race_field.rb create mode 100644 app/services/attributes/character/job_field.rb create mode 100644 app/services/attributes/character/languages_field.rb create mode 100644 app/services/attributes/character/location_field.rb create mode 100644 app/services/attributes/character/name_field.rb create mode 100644 app/services/attributes/character/politics_field.rb create mode 100644 app/services/attributes/character/religion_field.rb create mode 100644 app/services/attributes/character/superpower_field.rb create mode 100644 app/services/attributes/field.rb create mode 100644 app/services/generators/character.rb create mode 100644 app/services/generators/generator.rb create mode 100644 app/services/templates/character.rb create mode 100644 app/services/templates/template.rb diff --git a/app/services/attributes/character/age_field.rb b/app/services/attributes/character/age_field.rb new file mode 100644 index 0000000..b50dae4 --- /dev/null +++ b/app/services/attributes/character/age_field.rb @@ -0,0 +1,19 @@ +module Character + class AgeField < Field + field_key :age + + depends_on :job + + def self.value_for(template) + age = 2 + rand(15) + rand(15) + rand(5) + if rand(100) < 30 + age += rand(25) + end + + { + self.key => age, + birthday: Faker::Date.birthday(min_age: age, max_age: age + 1).strftime("%B %-d") # %A, %B %-d, %Y + } + end + end +end diff --git a/app/services/attributes/character/alignment_field.rb b/app/services/attributes/character/alignment_field.rb new file mode 100644 index 0000000..75692df --- /dev/null +++ b/app/services/attributes/character/alignment_field.rb @@ -0,0 +1,14 @@ +module Character + class AlignmentField < Field + field_key :alignment + + def self.value_for(template) + alignment = %w(Lawful Neutral Chaotic).sample + ' ' + %w(Good Neutral Evil).sample + alignment = 'True Neutral' if alignment == 'Neutral Neutral' + + { + self.key => alignment + } + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/appearance_field.rb b/app/services/attributes/character/appearance_field.rb new file mode 100644 index 0000000..8a26d1b --- /dev/null +++ b/app/services/attributes/character/appearance_field.rb @@ -0,0 +1,64 @@ +module Character + class AppearanceField < Field + field_key :appearance + + depends_on :gender, :ethnicity + + def self.value_for(template) + optional_values = {} + + if rand(100) < 90 + eye_color = eye_colors.sample + else + eye_color = "one #{eye_colors.sample.downcase}, one #{eye_colors.sample.downcase}" + end + + # Facial hair + if rand(100) < 50 && template.fetch(:gender, nil) == 'Male' + optional_values[:facial_hair] = facial_hairs.sample + end + + # Hair color/style + hair_color = hair_colors.sample + unless %w(Bald).include? hair_color + hair_style = hair_styles.sample + end + hair_description = "#{hair_color} #{hair_style.downcase}" + + # Skin tone + unless template.include?('ethnicity') + optional_values[:skin_tone] = skin_tones.sample + end + + { + body_type: body_types.sample, + eye_color: eye_color, + hair: hair_description, + }.merge(optional_values) + end + + def self.body_types + %w(Delicate Flat Fragile Lean Lightly\ muscled Small-shouldered Thin Athletic Hourglass Bodybuilder Rectangular Muscular Thick-skinned Big-boned Round\ physique Pear-shaped) + end + + def self.eye_colors + %w(Amber Black Arctic\ blue Baby\ blue China\ blue Cornflower\ blue Crystal\ blue Denim\ blue Electric\ blue Indigo Sapphire\ blue Sky\ blue Champagne\ brown Chestnut\ brown Chocolate\ brown Golden\ brown Honey\ brown Topaz Charcoal\ grey Cloudy\ grey Steel\ grey Chartreuse Emerald\ green Forest\ green Grass\ green Jade\ green Leaf\ green Sea\ green Seafoam Hazel Amethyst Hyacinth Ultramarine\ blue Light\ violet Dark\ violet) + end + + def self.facial_hairs + %w(Long\ beard Short\ beard Chin\ curtain Chinstrap Fu\ Manchu Goatee Handlebar\ mustache Horseshoe\ mustache Mustache Mutton\ chops Neckbeard Pencil\ mustache Shenandoah Sideburns Soul\ patch Light\ stubble Dark\ stubble Toothbrush\ mustache Van\ Dyke\ beard Patchy\ beard Patchy\ mustache Braided\ beard Braided\ mustache Twirled\ mustache) + end + + def self.hair_colors + %w(Blonde Black Brown Red Bald White Grey Balding Greying Bleached Blue Green Purple Orange Auburn Strawberry Chestnut Dirty\ Blonde Rainbow Jet\ black Raven\ black) + end + + def self.hair_styles + %w(Afro Bob\ cut Bowl\ cut Bouffant Braided Bun Butch Buzz\ cut Cignon Chonmage Combover Cornrows Crew\ cut Dreadlocks Emo Fauxhawk Feathered Flattop Fringe Liberty\ spikes Straight\ long Curly\ long Wavy\ long Thin\ long Mohawk Mop-top Parted Pigtails Pixie\ cut Pompadour Ponytail Rat-tail Rocker Slicked\ back Spiked Curly\ short Wavy\ short Thin\ short Straight\ short) + end + + def self.skin_tones + %w(Albino Light Pale Fair White Grey Medium Olive Moderate\ brown Brown Dark\ brown Chocolate Black) + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/archetype_field.rb b/app/services/attributes/character/archetype_field.rb new file mode 100644 index 0000000..168799b --- /dev/null +++ b/app/services/attributes/character/archetype_field.rb @@ -0,0 +1,15 @@ +module Character + class ArchetypeField < Field + field_key :archetype + + def self.value_for(template) + { + self.key => possible_values.sample + } + end + + def self.possible_values + %w(Anthropomorphic\ Personification Anti-Hero Archmage Barefoot\ Sage Background\ Character Big\ Fun Blind\ Seer Blue-Collar\ Warlock Bruiser\ with\ a\ Soft\ Center The\ Champion The\ Chosen\ One The\ Chooser\ of\ The\ One Classic\ Villain The\ Cynic The\ Dragonslayer The\ Drunken\ Sailor Dumb\ Muscle Eccentric\ Mentor Enigmatic\ Empowering\ Entity Evil\ Overlord The\ Fair\ Folk Father\ Neptune Ferryman The\ Fool Fool\ for\ Love Gary\ Sue Gentle\ Giant The\ Good\ King Granny\ Classic The\ Grotesque Herald Heroic\ Archetype Heroic\ Wannabe The\ High\ Queen Higher\ Self The\ Hunter Ideal\ Hero The\ Idealist Ineffectual\ Loner The\ Kirk The\ Klutz Knight\ in\ Shining\ Armor Lady\ and\ Knight Loser\ Archetype Lovable\ Rogue Magical\ Barefooter Mary\ Sue The\ McCoy Mentor Messianic Mixed Mock\ Millionaire Modern\ Major\ General My\ Girl\ Back\ Home Obstructive\ Bureaucrat Oedipus\ Complex Old\ Soldier The\ Paladin The\ Patriarch Person\ of\ Mass\ Destruction The\ Pollyanna Powers\ That\ Be Prince\ Charming Princess\ Classic Protagonist Rebel\ Leader Rebellious\ Spirit Reluctant\ Monster Satanic\ Archetype Seeker\ Archetype Shadow\ Archetype Shapeshifter Side\ Character The\ Spock Star-Crossed\ Lovers The\ Storyteller Threshold\ Guardians Turn\ Coat The\ Trickster Visitor Wicked\ Stepmother Wicked\ Witch Wizard\ Classic Wolf\ Man Witch) + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/background_field.rb b/app/services/attributes/character/background_field.rb new file mode 100644 index 0000000..83e6a03 --- /dev/null +++ b/app/services/attributes/character/background_field.rb @@ -0,0 +1,11 @@ +module Character + class BackgroundField < Field + field_key :background + + def self.value_for(template) + { + self.key => "background TBD" + } + end + end +end diff --git a/app/services/attributes/character/blood_type_field.rb b/app/services/attributes/character/blood_type_field.rb new file mode 100644 index 0000000..c4dfbc3 --- /dev/null +++ b/app/services/attributes/character/blood_type_field.rb @@ -0,0 +1,11 @@ +module Character + class BloodTypeField < Field + field_key :blood_type + + def self.value_for(template) + { + self.key => Faker::Blood.group + } + end + end +end diff --git a/app/services/attributes/character/education_field.rb b/app/services/attributes/character/education_field.rb new file mode 100644 index 0000000..825eba1 --- /dev/null +++ b/app/services/attributes/character/education_field.rb @@ -0,0 +1,20 @@ +module Character + class EducationField < Field + field_key :education + + depends_on :age + + def self.value_for(template) + degree = Faker::Demographic.educational_attainment + + case degree.split(' ').last.downcase + when 'degree' + degree += " in #{Faker::Educator.subject} from #{Faker::Educator.university}" + end + + { + self.key => degree + } + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/ethnicity_field.rb b/app/services/attributes/character/ethnicity_field.rb new file mode 100644 index 0000000..025ea5f --- /dev/null +++ b/app/services/attributes/character/ethnicity_field.rb @@ -0,0 +1,13 @@ +module Character + class EthnicityField < Field + field_key :ethnicity + + def self.value_for(template) + { self.key => possible_values.sample } + end + + def self.possible_values + %w(American\ Indian Alaskan\ Native Asian Black African\ American Native\ Hawaiian Pacific\ Islander White White White African Caribbean Indian Melanesian Aboriginal Chinese Guamanian Japanese Korean Polynesian European Anglo\ Saxon Latino Arabic Vietnamese Micronesian Hispanic Puerto\ Rican Filipino Mexican Cuban Spaniard Italian Russian) + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/fantasy_race_field.rb b/app/services/attributes/character/fantasy_race_field.rb new file mode 100644 index 0000000..85ce7e0 --- /dev/null +++ b/app/services/attributes/character/fantasy_race_field.rb @@ -0,0 +1,21 @@ +module Character + class FantasyRaceField < Field + field_key :species + + def self.value_for(template) + species = if rand(100) < 20 + Faker::Fantasy::Tolkien.race + else + possible_values.sample + end + + { + self.key => species + } + end + + def self.possible_values + %w(Android Angel Animal Arachnoid Alien Bird Dark\ Elf Dwarf Elemental Elf Fairy Fey Genie Gnome Half-Dwarf Half-Elf Half-Orc Halfling Human Insectoid Orc Reptilian Robot Spirit Troll Vampire Werewolf) + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/favorites_field.rb b/app/services/attributes/character/favorites_field.rb new file mode 100644 index 0000000..0f511cb --- /dev/null +++ b/app/services/attributes/character/favorites_field.rb @@ -0,0 +1,18 @@ +module Character + class FavoritesField < Field + field_key :favorites + + def self.value_for(template) + { + favorite_book: Faker::Book.title, + favorite_author: Faker::Book.author, + favorite_genre: Faker::Book.genre, + favorite_movie: Faker::Movie.title, + favorite_artist: Faker::Artist.name, + favorite_animal: Faker::Creature::Animal.name.capitalize, + favorite_food: Faker::Food.dish, + favorite_quote: "\"#{Faker::GreekPhilosophers.quote}\"" + } + end + end +end diff --git a/app/services/attributes/character/gender_field.rb b/app/services/attributes/character/gender_field.rb new file mode 100644 index 0000000..7b1df47 --- /dev/null +++ b/app/services/attributes/character/gender_field.rb @@ -0,0 +1,11 @@ +module Character + class GenderField < Field + field_key :gender + + def self.value_for(template) + { + self.key => Faker::Gender.type + } + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/height_field.rb b/app/services/attributes/character/height_field.rb new file mode 100644 index 0000000..a03ee9d --- /dev/null +++ b/app/services/attributes/character/height_field.rb @@ -0,0 +1,32 @@ +module Character + class HeightField < Field + field_key :height + + depends_on :age + + def self.value_for(template) + case template.fetch(:age, 25) + when 0..1 + inches = rand(10..30) + when 1..5 + inches = rand(30..45) + when 5..10 + inches = rand(40..65) + when 10..15 + inches = rand(45..70) + when 15..18 + inches = rand(50..70) + when 18..50 + inches = rand(50..75) + when 50..99 + inches = rand(40..70) + end + + feet = inches / 12 + inches = inches % 12 + { + height: "#{feet} ft, #{inches} in" + } + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/hobbies_field.rb b/app/services/attributes/character/hobbies_field.rb new file mode 100644 index 0000000..8f13f0d --- /dev/null +++ b/app/services/attributes/character/hobbies_field.rb @@ -0,0 +1,16 @@ +module Character + class HobbiesField < Field + field_key :job + + def self.value_for(template) + hobbies = [] + 3.times do + hobbies << Faker::Hobby.activity + end + + { + self.key => hobbies.uniq.join(', ') + } + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/human_race_field.rb b/app/services/attributes/character/human_race_field.rb new file mode 100644 index 0000000..3089978 --- /dev/null +++ b/app/services/attributes/character/human_race_field.rb @@ -0,0 +1,11 @@ +module Character + class HumanRaceField < Field + field_key :race + + def self.value_for(template) + { + self.key => Faker::Demographic.race + } + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/job_field.rb b/app/services/attributes/character/job_field.rb new file mode 100644 index 0000000..16604b4 --- /dev/null +++ b/app/services/attributes/character/job_field.rb @@ -0,0 +1,12 @@ +module Character + class JobField < Field + field_key :job + + def self.value_for(template) + { + self.key => Faker::Company.profession.capitalize, + dream_job: Faker::Company.profession.capitalize + } + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/languages_field.rb b/app/services/attributes/character/languages_field.rb new file mode 100644 index 0000000..34f0c77 --- /dev/null +++ b/app/services/attributes/character/languages_field.rb @@ -0,0 +1,16 @@ +module Character + class LanguagesField < Field + field_key :languages + + def self.value_for(template) + languages = [Faker::Nation.language] + while rand(100) < 10 + languages << Faker::Nation.language + end + + { + self.key => languages.uniq.join(', ') + } + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/location_field.rb b/app/services/attributes/character/location_field.rb new file mode 100644 index 0000000..302816e --- /dev/null +++ b/app/services/attributes/character/location_field.rb @@ -0,0 +1,11 @@ +module Character + class LocationField < Field + field_key :location + + def self.value_for(template) + { + self.key => Faker::Address.country + } + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/name_field.rb b/app/services/attributes/character/name_field.rb new file mode 100644 index 0000000..4b253db --- /dev/null +++ b/app/services/attributes/character/name_field.rb @@ -0,0 +1,41 @@ +module Character + class NameField < Field + field_key :name + + depends_on :gender + + def self.value_for(template) + name = [] + + # First name + case template.fetch(:gender) + when 'Male' + name << Faker::Name.male_first_name + when 'Female' + name << Faker::Name.female_first_name + else + name << Faker::Name.first_name + end + + # Middle name(s) + if rand(100) < 95 + name << Faker::Name.middle_name + end + while rand(100) < 10 + name << Faker::Name.middle_name + end + + # Last name + name << Faker::Name.last_name + + # Suffix + if (rand(100) < 5) + name << Faker::Name.suffix + end + + { + self.key => name.join(' ') + } + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/politics_field.rb b/app/services/attributes/character/politics_field.rb new file mode 100644 index 0000000..a676b6c --- /dev/null +++ b/app/services/attributes/character/politics_field.rb @@ -0,0 +1,27 @@ +module Character + class PoliticsField < Field + field_key :politics + + depends_on :age + + def self.value_for(template) + politics = affiliations.sample + + if rand(100) < 5 + politics = 'Extremist ' + politics + end + + if template.fetch(:age, 25) < 10 + politics = "Being raised #{politics}" + end + + { + self.key => affiliation + } + end + + def self.affiliations + %w(Democrat Republican Liberal Conservative Libertarian Progressive Centrist Independent Socialist Communist Imperialist Nationalist Environmentalism Constitutionalist Paleoconservatism Reformist Radical\ Centrism Marxism–Leninism Anarchist Temperance Piracy Transhumanism Populism Nativism Distributism Neo-fascism Secularism Fiscal\ Conservatism Anarcho-socialism) + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/religion_field.rb b/app/services/attributes/character/religion_field.rb new file mode 100644 index 0000000..f6e6c51 --- /dev/null +++ b/app/services/attributes/character/religion_field.rb @@ -0,0 +1,22 @@ +module Character + class ReligionField < Field + field_key :religion + + def self.value_for(template) + religion = if rand(100) < 90 + possible_values.sample + else + transition = possible_values.sample(2) + "Transitioning from #{transition.first} to #{transition.last}" + end + + { + self.key => religion + } + end + + def self.possible_values + %w(Atheist Agnostic Undecided Syntheism Christianity Catholic Protestant Quaker Baptist Lutheranism Methodism Pentecostalism Unitarianism Calvanism Mormonism Paganism Druidism Wicca Scientology Mysticism Islam Hinduism Buddhism Shinto Taoism Vodou Hoodoo Sikhism Judaism Spiritism Shamanism Caodaism Confucianism Jainism Cheondoism Zoroastrianism Rastafari Pastafarianism Jediism Luciferianism Occultism Satanism Chrislam Witch) + end + end +end \ No newline at end of file diff --git a/app/services/attributes/character/superpower_field.rb b/app/services/attributes/character/superpower_field.rb new file mode 100644 index 0000000..7b25a08 --- /dev/null +++ b/app/services/attributes/character/superpower_field.rb @@ -0,0 +1,11 @@ +module Character + class SuperpowerField < Field + field_key :superpower + + def self.value_for(template) + { + self.key => Faker::Superhero.power + } + end + end +end diff --git a/app/services/attributes/field.rb b/app/services/attributes/field.rb new file mode 100644 index 0000000..2c1c4eb --- /dev/null +++ b/app/services/attributes/field.rb @@ -0,0 +1,18 @@ +class Field + def self.field_key(key) + @key = key + end + def self.key + @key + end + + def self.depends_on(*fields) + @dependencies = fields + end + + def self.fill(template) + # TODO first make sure all dependencies already exist in template values + + template.merge!(value_for(template)) + end +end diff --git a/app/services/generators/character.rb b/app/services/generators/character.rb new file mode 100644 index 0000000..39694e2 --- /dev/null +++ b/app/services/generators/character.rb @@ -0,0 +1,59 @@ +module Generators + class Character + def self.fill(attributes=[]) + generator = Generators::Character.new + template = Templates::Character.new + + filled_attributes = [] + attributes_queue = attributes + + while attributes_queue.any? + # Only choose from attributes that can be computed now + # fillable_candidates = attributes_queue.select(&:attribute.all_dependencies_met?) + + # Sort our candidates by least-first entropy + # fillable_candidates.sort_by!(&:entropy) + + if fillable_candidates.empty? + # error state -- handle this later! + end + + # Fill the least-entropy attribute next + # attribute = fillable_candidates.shift + # template.send(attribute) = send(attribute).call(template) + # attributes_queue.remove(attribute) + end + end + + ##################### + # Attribute fillers # + ##################### + + # meta-attributes for each field: + # - requires: can't be computed until these fields are computed first + # - depends_on: lists fields that should be computed first but don't HAVE to be + fill :first_name do |template| + depends_on :gender + + case template.fetch(:gender) + when 'Male' + Faker::Name.male_first_name + when 'Female' + Faker::Name.female_first_name + else + Faker::Name.first_name + end + end + end +end + + +# class FirstNameAttribute < Attribute +# depends_on :gender +# +# def fill_for(template) +# end + +# def entropy_score(template) +# end +# end \ No newline at end of file diff --git a/app/services/generators/generator.rb b/app/services/generators/generator.rb new file mode 100644 index 0000000..6aaa1f1 --- /dev/null +++ b/app/services/generators/generator.rb @@ -0,0 +1,5 @@ +module Generators + class Generator + + end +end \ No newline at end of file diff --git a/app/services/templates/character.rb b/app/services/templates/character.rb new file mode 100644 index 0000000..7f10093 --- /dev/null +++ b/app/services/templates/character.rb @@ -0,0 +1,5 @@ +module Templates + class character + attribute :name + end +end \ No newline at end of file diff --git a/app/services/templates/template.rb b/app/services/templates/template.rb new file mode 100644 index 0000000..041a139 --- /dev/null +++ b/app/services/templates/template.rb @@ -0,0 +1,4 @@ +module Templates + class Character + end +end \ No newline at end of file diff --git a/bin/tristan.rb b/bin/tristan.rb index e2c290a..a5fdaa3 100644 --- a/bin/tristan.rb +++ b/bin/tristan.rb @@ -276,7 +276,7 @@ def generate_character(event:, template:) end if template.include?('height') - age == character_template.fetch(:age, 25) + age = character_template.fetch(:age, 25) case age when 0..1 inches = rand(10..30) From 73cc05efa97a1b47c5416ae5c35e6050f958a773 Mon Sep 17 00:00:00 2001 From: drusepth Date: Tue, 17 Jan 2023 11:30:33 -0800 Subject: [PATCH 2/2] tweak religions --- bin/tristan.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/tristan.rb b/bin/tristan.rb index a5fdaa3..90d64d2 100644 --- a/bin/tristan.rb +++ b/bin/tristan.rb @@ -319,7 +319,7 @@ def generate_character(event:, template:) if template.include?('religion') # So many more at https://en.wikipedia.org/wiki/List_of_religions_and_spiritual_traditions # -- PR to Faker gem? - character_template[:religion] = %w(Atheist Agnostic Undecided Syntheism Christianity Catholic Protestant Quaker Baptist Lutheranism Methodism Pentecostalism Unitarianism Calvanism Mormonism Paganism Druidism Wicca Scientology Mysticism Islam Hinduism Buddhism Shinto Taoism Vodou Hoodoo Sikhism Judaism Spiritism Shamanism Caodaism Confucianism Jainism Cheondoism Zoroastrianism Rastafari Pastafarianism Jediism Luciferianism Occultism Satanism Chrislam Witch).sample + character_template[:religion] = %w(Atheist Agnostic Undecided Bahai Mennonite Amish Syntheism Christianity Catholic Protestant Quaker Baptist Lutheranism Methodism Pentecostalism Unitarianism Calvanism Mormonism Paganism Druidism Wicca Scientology Mysticism Islam Hinduism Buddhism Shinto Taoism Vodou Hoodoo Sikhism Judaism Spiritism Shamanism Caodaism Confucianism Jainism Cheondoism Zoroastrianism Rastafari Pastafarianism Jediism Luciferianism Occultism Satanism Chrislam Witch).sample end if template.include?('languages')