Merge branch 'main' into custom-stocks

pull/11/head
commit c4e93b2142
  1. 31
      README.md
  2. 2
      src/views/index.erb
  3. 4
      src/views/partials/help.erb
  4. 1
      tests/Algoric the Apologist Character Sheet.char
  5. 1
      tests/Algoric the Apologist Character Sheet.model
  6. 1
      tests/Tyastanarphen Character Sheet.char
  7. 1
      tests/Tyastanarphen Character Sheet.model

@ -1,14 +1,10 @@
# Charred Gold
This is a fork of [https://github.com/modality/charred-black](Charred Black)
Below is the original README of Charred Black, possibly to be updated in the future;
especially since there is a departure from some of the original values.
The unofficial, online, Burning Wheel Gold (+Codex) character burner. Adapted from [Charred](https://charred.herokuapp.com/).
This is a fork of [Charred Black](https://github.com/modality/charred-black) Below is a partial fork of the original README of Charred Black; especially since there is a departure from some of the original values. The unofficial, online, Burning Wheel Gold (+Codex) character burner. Adapted from [Charred](https://charred.herokuapp.com/). Later adapted from [Charred Black](https://github.com/modality/charred-black)
## Project Structure
* `Dockerfile` and `Dockerfile.dev` - Container definition files. The dev container has automated reloading if you mount the container's filesystem to the host machine. If you are unfamiliar with Docker, this app uses Sinatra and you can _probably_ get by with a bundle install and `ruby ./src/app.rb`.
* `Dockerfile` and `Dockerfile.dev` - Container definition files. The dev container has automated reloading if you mount the container's filesystem to the host machine. These mostly serve as examples to launch the app yourself, and are no longer supported. The app uses Sinatra to hope, and you should just be able to `bundle install` and then run `ruby app.rb` from the source directory. I will try to publish a SysV initscript soon.
* `src/data` - Binaries and data files for lifepaths live here, see `dark_elf` and `wizard` directory for well-defined examples
* `src/lib` - Ruby scripts for caching, PDF generation, and data loading
* `src/public` - Javascript and CSS
@ -17,38 +13,27 @@ The unofficial, online, Burning Wheel Gold (+Codex) character burner. Adapted fr
## Beliefs
I welcome community contributions, and you are welcome to fork this source code if you want to go your own way. As the maintainer,
here's what you can expect from me when I judge contributions.
We welcome community contributions, and you are welcome to fork this source code if you want to go your own way. As the maintainer, here's what you can expect from me when I judge contributions.
### Do One Thing Well
Charred Black is a character creation utility. You are welcome to use the data, source code, or character files in the creation
of other gaming tools, but let's keep this tool focused on one thing and do it really well.
Charred Gold is a character creation utility. You are welcome to use the data, source code, or character files in the creation of other gaming tools, but let's keep this tool focused on one thing and do it really well.
### Stick To Published Material
In order to keep the scope of my maintainership finite, I'm not planning to accept community-made lifepaths et al. for inclusion
in this codebase. Each additional data set increases Charred Black's startup time and memory requirements. The design of your lifepath
requirements and emotional attributes may not be supported by the editor, or may be convoluted to implement. Most importantly, deciding to include any community-made content makes me an arbiter of quality, and I'd prefer not to have the Enmity Clause invoked because I rejected
someone's homebrew.
In order to keep the scope of my maintainership finite, I'm not planning to accept community-made lifepaths et al. for inclusion in this codebase. Each additional data set increases Charred Gold's startup time and memory requirements. The design of your lifepath requirements and emotional attributes may not be supported by the editor, or may be convoluted to implement. Most importantly, deciding to include any community-made content makes me an arbiter of quality, and I'd prefer not to have the Enmity Clause invoked because I rejected someone's homebrew.
**However**, I am working on a solution for uploading lifepaths et. al which would be stored locally in your browser and not permanently on
a server. This way, you can create data files to use with this tool and share them with your friends. If someone else
wants to keep a repository or forum thread of data files known to work with Charred Black, I am happy to link to it in this
documentation and from the website itself. I don't want to discourage contributions, I just want do one thing well.
The current maintainers of Charred Gold are working on some tooling to allow "easy" creation of new settings, stocks, LPs, and so on. The exact method for handling has not been decided precisely.
### Keep It Mostly Stateless
Charred Black uses an in-memory cache to allow users to upload JSON and then download .char and .pdf files. I don't know how the
original Charred handled this, but the tradeoffs of this approach are:
Charred Gold uses an in-memory cache to allow users to upload JSON and then download .char and .pdf files. I don't know how the original Charred handled this, but the tradeoffs of this approach are:
1. Works as expected without an update to the frontend
2. PDF generation happens entirely in one process, limiting the amount of futzing you have to do with distributed systems
3. Because the cache is in memory, you can't scale processes horizontally
The cache has a limited number of keys, and only the first 16kb of data are used, with the aim of making this this app useless
for nefarious purposes. The average size of a 4-lifepath character is around 4kb, so this should be more than enough. If you're
trying to do something weird and your character file is bigger than this, consider using a pencil and paper.
The cache has a limited number of keys, and only the first 16kb of data are used, with the aim of making this this app useless for nefarious purposes. The average size of a 4-lifepath character is around 4kb, so this should be more than enough. If you're trying to do something weird and your character file is bigger than this, consider using a pencil and paper.
More guidelines:

@ -18,7 +18,7 @@
<title>Charred - The Burning Wheel Gold Character Burner</title>
</head>
<body>
<a href="https://github.com/modality/charred-black" class="github-corner" target="_blank" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
<a href="https://git.obscuritus.ca:3000/danwizard208/charred-gold/" class="github-corner" target="_blank" aria-label="View source on GitTea"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
<div class='container' ng-controller='BurningCtrl'>
<nav class='navbar navbar-default' role='navigation'>
<div class='navbar-header'>

@ -58,7 +58,7 @@
in the main view. At the end is a description of some tricks for specific stocks.
</p>
<p>
The source code for this version can be found on Github: <a href="https://github.com/modality/charred-black" target="_blank">Charred Black source</a>.
The source code for this version can be found on Gittea: <a href="https://git.obscuritus.ca:3000/danwizard208/charred-gold" target="_blank">Charred Gold source</a>.
</p>
<h2 id='tools'>Tools</h2>
<p>
@ -235,4 +235,4 @@
</p>
</div>
</div>
</div>
</div>

@ -0,0 +1 @@
{"serialize_version":1,"name":"Algoric the Apologist","gender":"male","stock":"man","lifepaths":[["Peasant Setting","Born Peasant",0,null,null,null,[]],["College of Magic Setting","Supplicant",0,null,null,null,[]],["College of Magic Setting","Junior Student",0,null,null,null,[[1,"p"]]],["Outcast Subsetting","Rogue Wizard",0,null,null,null,[[1,"p"],[1,"m"]]],["Servitude And Captive Setting","Captive Of War",0,null,null,null,[]],["City Dweller Setting","Criminal",0,null,null,null,[[1,"pm"]]],["City Dweller Setting","Temple Acolyte",0,null,null,null,[[1,"m"]]],["Religious Subsetting","Priest",0,null,null,null,[[1,"m"]]]],"stats":[{"name":"Will","shade":"B","mentalPoints":5,"physicalPoints":0,"eitherPoints":1},{"name":"Perception","shade":"B","mentalPoints":5,"physicalPoints":0,"eitherPoints":0},{"name":"Power","shade":"B","mentalPoints":0,"physicalPoints":3,"eitherPoints":0},{"name":"Forte","shade":"B","mentalPoints":0,"physicalPoints":4,"eitherPoints":0},{"name":"Agility","shade":"B","mentalPoints":0,"physicalPoints":4,"eitherPoints":0},{"name":"Speed","shade":"B","mentalPoints":0,"physicalPoints":3,"eitherPoints":0}],"skills":{"lifepath":[{"name":"Animal Husbandry","lifepathPoints":1,"generalPoints":0},{"name":"Firebuilding","lifepathPoints":1,"generalPoints":0},{"name":"Read","lifepathPoints":1,"generalPoints":0},{"name":"Write","lifepathPoints":1,"generalPoints":0},{"name":"Ancient History","lifepathPoints":1,"generalPoints":0},{"name":"Circination","lifepathPoints":2,"generalPoints":0},{"name":"Illuminations","lifepathPoints":1,"generalPoints":0},{"name":"Astrology","lifepathPoints":2,"generalPoints":0},{"name":"Symbology","lifepathPoints":1,"generalPoints":0},{"name":"Sorcery","lifepathPoints":5,"generalPoints":0},{"name":"Inconspicuous","lifepathPoints":1,"generalPoints":0},{"name":"Graveyard-wise","lifepathPoints":1,"generalPoints":0},{"name":"Bloodletting","lifepathPoints":1,"generalPoints":0},{"name":"Ugly Truth","lifepathPoints":1,"generalPoints":0},{"name":"Apocalypse-wise","lifepathPoints":1,"generalPoints":0},{"name":"Enchanting","lifepathPoints":2,"generalPoints":0},{"name":"Alchemy","lifepathPoints":1,"generalPoints":0},{"name":"Cell-wise","lifepathPoints":1,"generalPoints":0},{"name":"Chain-wise","lifepathPoints":1,"generalPoints":0},{"name":"Streetwise","lifepathPoints":1,"generalPoints":0},{"name":"Intimidation","lifepathPoints":1,"generalPoints":0},{"name":"Knives","lifepathPoints":1,"generalPoints":0},{"name":"Climbing","lifepathPoints":1,"generalPoints":0},{"name":"Doctrine","lifepathPoints":1,"generalPoints":0},{"name":"Bureaucracy","lifepathPoints":1,"generalPoints":0},{"name":"Temple-wise","lifepathPoints":1,"generalPoints":0},{"name":"Oratory","lifepathPoints":1,"generalPoints":0},{"name":"Suasion","lifepathPoints":2,"generalPoints":0},{"name":"Ritual","lifepathPoints":1,"generalPoints":0},{"name":"Religious History","lifepathPoints":1,"generalPoints":0}],"general":[{"name":"Whip-wise","lifepathPoints":0,"generalPoints":1},{"name":"Herbalism","lifepathPoints":0,"generalPoints":2}]},"traits":[{"name":"Gifted"},{"name":"Second Sight"},{"name":"Fey Blood"},{"name":"Aura Of Fear"},{"name":"Obscure Aura"},{"name":"Poker Face"},{"name":"Faithful"}],"gear":[{"cost":1,"desc":"Clothes"},{"cost":1,"desc":"Traveling Gear"},{"cost":1,"desc":"Personal Effects"},{"cost":5,"desc":"Riding Mount Or Pack Animal"},{"cost":10,"desc":"Armor, Light Mail, Run Of The Mill Quality"},{"cost":14,"desc":"Spells"}],"property":[{"cost":10,"desc":"Property, A House"}],"relationships":[],"affiliations":[{"desc":"The Scurrilous Foes","importance":"small"}],"reputations":[{"desc":"An Escaped Prisoner","importance":"regional"}],"attr_mod_questions":{"Health":[{"question":"Was the character severely wounded in the past?","answer":true},{"question":"Is the character athletic and active?","answer":true}],"Steel":[{"question":"Has the character ever been severely wounded?","answer":true},{"question":"Has the character ever murdered or killed with his own hand more than once?","answer":true},{"question":"Has the character been raised in a competitive (but non-violent) culture - sports, debate, strategy games, courting?","answer":true}],"Faith":[{"question":"Is it only through God that you best serve your allies?","answer":false}]},"brutal_life_withdrawn":false,"approp_weapons":{}}

@ -0,0 +1 @@
{"name":"Algoric the Apologist","age":41,"stock":"man","lifepaths":["Born Peasant","Supplicant","Junior Student","Rogue Wizard","Captive Of War","Criminal","Temple Acolyte","Priest"],"stats":{"will":["B",6],"perception":["B",5],"power":["B",3],"forte":["B",4],"agility":["B",4],"speed":["B",3]},"attributes":{"mortal wound":["B",9],"reflexes":["B",4],"health":["B",5],"steel":["B",6],"hesitation":["",4],"stride":["",7],"circles":["B",3],"resources":["B",3],"faith":["B",3]},"skills":[["Animal Husbandry","B",3,false],["Firebuilding","B",2,false],["Read","B",2,false],["Write","B",2,false],["Ancient History","B",2,false],["Circination","B",2,false],["Illuminations","B",2,false],["Astrology","B",3,false],["Symbology","B",2,false],["Sorcery","B",5,false],["Inconspicuous","B",3,false],["Graveyard-wise","B",2,null],["Bloodletting","B",2,false],["Ugly Truth","B",2,false],["Apocalypse-wise","B",2,null],["Enchanting","B",2,false],["Alchemy","B",2,false],["Cell-wise","B",2,null],["Chain-wise","B",2,null],["Streetwise","B",2,false],["Intimidation","B",3,false],["Knives","B",2,false],["Climbing","B",1,false],["Doctrine","B",2,false],["Bureaucracy","B",3,false],["Temple-wise","B",2,null],["Oratory","B",3,false],["Suasion","B",4,false],["Ritual","B",2,false],["Religious History","B",2,false],["Whip-wise","B",2,false],["Herbalism","B",3,false]],"traits":[["Gifted","die"],["Second Sight","die"],["Fey Blood","die"],["Aura Of Fear","die"],["Obscure Aura","die"],["Poker Face","call_on"],["Faithful","die"],["Broken In","die"],["Hazed","die"],["Spooky","character"],["Claustrophobic","die"],["Cynical","character"],["Believer","die"],["Vested","die"]],"gear":["Clothes","Traveling Gear","Personal Effects","Riding Mount Or Pack Animal","Armor, Light Mail, Run Of The Mill Quality","Spells"],"property":["Property, A House"],"relationships":[],"reputations":["An Escaped Prisoner 2D"],"affiliations":["The Scurrilous Foes 1D"],"ptgs":{"su":3,"li":5,"mi":6,"se":7,"tr":8,"mo":9},"attr_mod_questions":{"Health":[{"question":"Does the character live in squalor and filth?","math_label":"(-1 Health)","modifier":-1},{"question":"Is the character frail or sickly?","math_label":"(-1 Health)","modifier":-1},{"question":"Was the character severely wounded in the past?","math_label":"(-1 Health)","modifier":-1,"answer":true},{"question":"Has the character been tortured and enslaved?","math_label":"(-1 Health)","modifier":-1},{"question":"Is the character athletic and active?","math_label":"(+1 Health)","modifier":1,"answer":true},{"question":"Does the character live in a really clean and happy place, like the hills in the Sound of Music?","math_label":"(+1 Health)","modifier":1}],"Steel":[{"question":"Has the character ever been severely wounded?","math_label":"(+1 Steel if combat lifepath taken/-1 Steel if not)","computeModifier":true,"answer":true},{"question":"Has the character ever murdered or killed with his own hand more than once?","math_label":"(+1 Steel)","modifier":1,"answer":true},{"question":"Has the character been tortured, enslaved or beaten terribly over time?","math_label":"(+1 Steel if Will is > 4, -1 Steel if Will < 4, +0 if Will is 4)","computeModifier":true},{"question":"Has the character lead a sheltered life, free of violence and pain?","math_label":"(-1 Steel)","modifier":-1},{"question":"Has the character been raised in a competitive (but non-violent) culture - sports, debate, strategy games, courting?","math_label":"(+1 Steel)","modifier":1,"answer":true},{"question":"Has the character given birth to a child?","math_label":"(+1 Steel)","modifier":1}],"Faith":[{"question":"Is God who you trust the most?","math_label":"(+1 Faith)","modifier":1},{"question":"When in danger, do you consult God for aid?","math_label":"(+1 Faith)","modifier":1},{"question":"Is it only through God that you best serve your allies?","math_label":"(+1 Faith)","modifier":1,"answer":false}]}}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
{"name":"Tyastanarphen","age":676,"stock":"elf","lifepaths":["Citadel Born","Wanderer","Song Singer","Bard","Loremaster","Griever","Liar","Deceiver","Recluse"],"stats":{"will":["B",8],"perception":["G",6],"power":["B",6],"forte":["B",5],"agility":["B",5],"speed":["B",5]},"attributes":{"mortal wound":["B",11],"reflexes":["B",6],"health":["B",5],"steel":["B",9],"hesitation":["",2],"stride":["",8],"circles":["B",4],"resources":["B",1],"grief":["G",4],"spite":["B",9]},"skills":[["Elven Script","G",4,false],["Sing","B",4,false],["Song Of Paths And Ways","G",3,false],["Air Of Gates","B",4,false],["Foraging","G",3,false],["Road-wise","G",3,false],["Song Of Songs","B",4,false],["Song Of Soothing","B",4,false],["Lament Of Stars","B",4,false],["Song Of Merriment","B",4,false],["Lament Of Mourning","B",4,false],["Tract Of Enmity","B",4,false],["Oratory","B",6,false],["Conspicuous","B",4,false],["Lyre","B",3,false],["Flute","B",3,false],["Ancient And Obscure History","G",3,false],["Research","G",3,false],["Ballad Of History","G",3,false],["Lyric Of Law","G",3,false],["Canticle Of Years","B",4,false],["Rhyme Of Tongues","B",4,false],["Sorrow Of Truth","B",4,false],["Dark Elf-wise","G",3,null],["Falsehood","B",4,false],["Soothing Platitudes","B",4,false],["Persuasion","B",6,false],["Twisted Tongue","B",4,false],["Sleight Of Hand","B",4,false],["Disguise","B",3,false],["Inconspicuous","B",4,false],["Rhyme Of The Unraveller","B",4,false],["Ancient History","G",3,false],["Dwarf-wise","G",3,false],["Elven Politics-wise","G",3,null],["Cut Of The Quickened Mind","B",4,false],["Antiphon Union Training","B",5,true],["Almanac","G",3,false]],"traits":[["Grim","character"],["Glib","call_on"],["Oikofugic","character"],["Voice In The Crowd","character"],["Spite","character"],["Compulsive Liar","character"],["Deceptive","call_on"],["Vengeful","die"],["Born Under The Silver Stars","character"],["Essence Of The Earth","die"],["Fair And Statuesque","character"],["First Born","die"],["Grief","die"],["Keen Sight","die"]],"gear":["Morlin Armor, Light Mail","Long Knife","Tome Of Lore","Cloak Of Darkness"],"property":["Remote Refuge, Safe House"],"relationships":[],"reputations":[],"affiliations":[],"ptgs":{"su":3,"li":6,"mi":8,"se":9,"tr":10,"mo":11},"attr_mod_questions":{"Health":[{"question":"Does the character live in squalor and filth?","math_label":"(-1 Health)","modifier":-1,"answer":true},{"question":"Is the character frail or sickly?","math_label":"(-1 Health)","modifier":-1},{"question":"Was the character severely wounded in the past?","math_label":"(-1 Health)","modifier":-1,"answer":true},{"question":"Has the character been tortured and enslaved?","math_label":"(-1 Health)","modifier":-1,"answer":true},{"question":"Is the character athletic and active?","math_label":"(+1 Health)","modifier":1,"answer":true},{"question":"Does the character live in a really clean and happy place, like the hills in the Sound of Music?","math_label":"(+1 Health)","modifier":1}],"Steel":[{"question":"Has the character ever been severely wounded?","math_label":"(+1 Steel if combat lifepath taken/-1 Steel if not)","computeModifier":true,"answer":true},{"question":"Has the character ever murdered or killed with his own hand more than once?","math_label":"(+1 Steel)","modifier":1,"answer":true},{"question":"Has the character been tortured, enslaved or beaten terribly over time?","math_label":"(+1 Steel if Will is > 4, -1 Steel if Will < 4, +0 if Will is 4)","computeModifier":true,"answer":true},{"question":"Has the character lead a sheltered life, free of violence and pain?","math_label":"(-1 Steel)","modifier":-1},{"question":"Has the character been raised in a competitive (but non-violent) culture - sports, debate, strategy games, courting?","math_label":"(+1 Steel)","modifier":1,"answer":true},{"question":"Has the character given birth to a child?","math_label":"(+1 Steel)","modifier":1,"answer":true}],"Grief":[{"question":"Does the character's history include tragedy?","math_label":"(+1 Grief)","modifier":1,"answer":true},{"question":"Has the character lived among non-Elven people?","math_label":"(+1 Grief)","modifier":1,"answer":true}],"Spite":[{"question":"Has the character been betrayed by their friends?","math_label":"(+1 Spite)","modifier":1,"answer":true},{"question":"Is the character lovesick or broken hearted?","math_label":"(+1 Spite)","modifier":1,"answer":true},{"question":"Has the character been abandoned by those they held dear?","math_label":"(+1 Spite)","modifier":1,"answer":true},{"question":"Has the character been abused or tortured?","math_label":"(+1 Spite)","modifier":1,"answer":true},{"question":"Does the character still respect or admire someone on the other side?","math_label":"(-1 Spite)","modifier":-1,"answer":true},{"question":"Does the character still love someone on the other side?","math_label":"(-2 Spite)","modifier":-2}]}}
Loading…
Cancel
Save