#+OPTIONS: toc:2 num:2

#+TITLE: WOiN Character Sheet Template v1

#+AUTHOR: Suskeyhose

#+STARTUP: align

* [0/8] Character Creation Checklist

- [ ] Choose a Race

+ [ ] Choose three racial skills

+ [ ] Add all ratial exploits

- [ ] Design a Hook

+ [ ] Create a hook description

+ [ ] Choose a hook attribute

- [ ] Choose Five Careers

Choose five careers, with one starter and four further careers.

For each career grade, do the following:

+ [ ] Note all attribute attributes

Keep in mind that you can also gain a bunus in one of your ratial

or hook attributes instead of the normal bonuses.

+ [ ] Choose two skills from the career

You may substitute either or both of these skills for a /[defensive]/ skill

+ [ ] Choose one new exploit from the career

You may also substitute a universal exploit instead.

+ [ ] Roll the number of years you spent in the career

You may choose to spend more years in the career than listed.

- [ ] Select Exploits

+ [ ] Choose Aim or Feint

+ [ ] Choose one other universal exploit

- [ ] Choose a trait

Traits are chosen based on your highest or lowest attribute.

You only get one, so choose wisely, or roll for it!

- [ ] Age Your Character

+ [ ] Determine Total Age

+ [ ] Apply Age Expoit (if any)

- [ ] Calculate Derived Statistics

+ [ ] Health

+ [ ] Speed

+ [ ] Jump

+ [ ] Carry

+ [ ] Perception

+ [ ] Defense

- [ ] Equip Your Character

+ [ ] Purchase a Weapon

+ [ ] Purchase Some Armor

+ [ ] Purchase General Goods

* Rules Reference :noexport:

** Die Pools

*** Forming a Die Pool

#+NAME:DIE_POOLS

| ! | MIN | MAX | DIE_POOL |

| | Min | Max | Die |

| | Value | Value | Pool |

|---+-------+-------+----------|

| | 1 | 2 | 1 |

| | 3 | 5 | 2 |

| | 6 | 9 | 3 |

| | 10 | 14 | 4 |

| | 15 | 20 | 5 |

| | 21 | 27 | 6 |

| | 28 | 35 | 7 |

| | 36 | 44 | 8 |

| | 45 | 54 | 9 |

*** Maximum Die Pool by Grade

#+NAME:MAX_DIE_POOL

| ! | MIN | MAX | DIE_POOL |

| | Min | Max | Max Die |

| | Grade | Grade | Pool |

|---+-------+-------+----------|

| | 1 | 3 | 3 |

| | 4 | 4 | 4 |

| | 5 | 5 | 5 |

| | 6 | 7 | 6 |

| | 8 | 10 | 7 |

| | 11 | 14 | 8 |

| | 15 | 19 | 9 |

| | 20 | 25 | 10 |

| | 26 | 32 | 11 |

| | 33 | 40 | 12 |

** Attribute Abbreviations

#+NAME:ATTRIBUTE_ABBREVIATIONS

| / | <10> | <6> |

| ! | ATTRIBUTE_NAME | ABBREVIATION |

| | Attribute | Abbrev |

|---+------------+--------|

| | Strength | STR |

| | Agility | AGI |

| | Endurance | END |

| | Intuition | INT |

| | Logic | LOG |

| | Willpower | WIL |

| | Charisma | CHA |

| | Luck | LUC |

| | Reputation | REP |

| | Magic | MAG |

| | Chi | CHI |

| | Psi | PSI |

* Character Sheet

:PROPERTIES:

:LOOKUP_DIE_POOL: (lambda (value) (let* ((mins (mapcar #'string-to-number (list remote(DIE_POOLS, @I$MIN..@>$MIN)))) (maxes (mapcar #'string-to-number (list remote(DIE_POOLS, @I$MAX..@>$MAX)))) (ranges (mapcar* #'list mins maxes)) (die-pools (list remote(DIE_POOLS, @I$DIE_POOL..@>$DIE_POOL))) (result (org-lookup-first value ranges die-pools (lambda (val s) (when (and (<= val (second s)) (>= val (first s))) t))))) (if result result "N/A")))

:LOOKUP_ATTRIBUTE: (lambda (attrib) (let ((abbrevs (list remote(ATTRIBUTES, @I$2..@>$2))) (pools (mapcar (lambda (num) (if (string= num "N/A") 0 (string-to-number num))) (list remote(ATTRIBUTES, @I$3..@>$3))))) (org-lookup-first attrib abbrevs pools)))

:LOOKUP_SKILL: (lambda (skill) (let ((skills (list remote(SKILLS, @I$2..@>$2))) (pools (mapcar (lambda (num) (if (string= num "N/A") 0 (string-to-number num))) (list remote(SKILLS, @I$3..@>$3))))) (or (org-lookup-first skill skills pools) 0)))

:END:

** Description

*** Descriptor

#+NAME:DESCRIPTOR_SENTANCE

| # | | is a | | | 0 | year old | | | | who | |

#+TBLFM: @1$2='(identity remote(DESCRIPTOR, @4$3))::@1$4='(identity remote(RACE, @4$SIZE))::@1$5='(identity remote(TRAIT, @4$TRAIT))::@1$6='(identity remote(CAREERS, @>$AGE))::@1$8='(identity remote(DESCRIPTOR, @5$VALUE))::@1$9='(identity remote(RACE, @4$RACE))::@1$10='(identity remote(CAREERS, @>$CAREER))::@1$12='(identity remote(DESCRIPTOR, @6$VALUE))

#+NAME:DESCRIPTOR

| / | | |

| ! | NAME | VALUE |

| | Descriptor | Value |

|---+----------------+-------|

| | Name | |

| | Sex | |

| | Hook | |

| | Hook Attribute | |

*** Character Description

** Character Stats

*** Max Die Pool

#+NAME:MAX_DIE_POOL_CHARACTER

| # | 0 |

#+TBLFM: @1$2='(let* ((min-grades (list remote(MAX_DIE_POOL, @I$2..@>$2))) (max-grades (list remote(MAX_DIE_POOL, @I$3..@>$3))) (grades (mapcar* #'list min-grades max-grades)) (die-pools (list remote(MAX_DIE_POOL, @I$4..@>$4))) (max-die-pool (org-lookup-first remote(GRADE, @2$2) grades die-pools (lambda (val s) (and (>= val (first s)) (<= val (second s))))))) (or max-die-pool 0));N

*** Experience

#+NAME:EXPERIENCE_POINTS

| Experience Points |

|-------------------|

| 0 |

*** Attributes

#+NAME:ATTRIBUTES

| / | <4> | <4> | | | | <5> | <4> | |

| ! | ATTRIB | POOL | TOTAL | CAREER | RACIAL | HOMEWORLD | LIFE_PATH | OTHER |

| | Attr | Die | Total | Career | Racial | Home | Life | Other |

| | | Pool | | | | World | Path | |

|---+------+------+-------+--------+--------+-------+------+-------|

| # | STR | 2 | 3 | 0 | STR | 0 | | |

| # | AGI | 2 | 3 | 0 | AGI | 0 | | |

| # | END | 2 | 3 | 0 | END | 0 | | |

| # | INT | 2 | 3 | 0 | INT | 0 | | |

| # | LOG | 2 | 3 | 0 | LOG | 0 | | |

| # | WIL | 2 | 3 | 0 | WIL | 0 | | |

| # | CHA | 2 | 3 | 0 | CHA | 0 | | |

| # | LUC | 2 | 3 | 0 | LUC | 0 | | |

| # | REP | N/A | 0 | 0 | REP | 0 | | |

| # | MAG | N/A | 0 | 0 | MAG | 0 | | |

| # | CHI | N/A | 0 | 0 | CHI | 0 | | |

| # | PSI | N/A | 0 | 0 | PSI | 0 | | |

#+TBLFM: $3='($PROP_LOOKUP_DIE_POOL (string-to-number $TOTAL))::@5$4..@12$4='(+ 3 $CAREER..$>);N::@5$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$9..@>$9)))) (total (apply #'+ num-list))) (number-to-string total))::@5$6=remote(RACE, @I$STR)::@5$7=remote(HOMEWORLD, @I$STR)::@6$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$10..@>$10)))) (total (apply #'+ num-list))) (number-to-string total))::@6$6=remote(RACE, @I$AGI)::@6$7=remote(HOMEWORLD, @I$AGI)::@7$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$11..@>$11)))) (total (apply #'+ num-list))) (number-to-string total))::@7$6=remote(RACE, @I$END)::@7$7=remote(HOMEWORLD, @I$END)::@8$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$12..@>$12)))) (total (apply #'+ num-list))) (number-to-string total))::@8$6=remote(RACE, @I$INT)::@8$7=remote(HOMEWORLD, @I$INT)::@9$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$13..@>$13)))) (total (apply #'+ num-list))) (number-to-string total))::@9$6=remote(RACE, @I$LOG)::@9$7=remote(HOMEWORLD, @I$LOG)::@10$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$14..@>$14)))) (total (apply #'+ num-list))) (number-to-string total))::@10$6=remote(RACE, @I$WIL)::@10$7=remote(HOMEWORLD, @I$WIL)::@11$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$15..@>$15)))) (total (apply #'+ num-list))) (number-to-string total))::@11$6=remote(RACE, @I$CHA)::@11$7=remote(HOMEWORLD, @I$CHA)::@12$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$16..@>$16)))) (total (apply #'+ num-list))) (number-to-string total))::@12$6=remote(RACE, @I$LUC)::@12$7=remote(HOMEWORLD, @I$LUC)::@13$4..@16$4='(+ $CAREER..$>);N::@13$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$17..@>$17)))) (total (apply #'+ num-list))) (number-to-string total))::@13$6=remote(RACE, @I$REP)::@13$7=remote(HOMEWORLD, @I$REP)::@14$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$18..@>$18)))) (total (apply #'+ num-list))) (number-to-string total))::@14$6=remote(RACE, @I$MAG)::@14$7=remote(HOMEWORLD, @I$MAG)::@15$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$19..@>$19)))) (total (apply #'+ num-list))) (number-to-string total))::@15$6=remote(RACE, @I$CHI)::@15$7=remote(HOMEWORLD, @I$CHI)::@16$5='(let* ((num-list (mapcar #'string-to-number (list remote(CAREERS, @I$20..@>$20)))) (total (apply #'+ num-list))) (number-to-string total))::@16$6=remote(RACE, @I$PSI)::@16$7=remote(HOMEWORLD, @I$PSI)

*** Skills

#+NAME:SKILLS

| / | | | | | | <5> | <4> | |

| ! | SKILL | POOL | TOTAL | CAREER | RACE | HOMEWORLD | LIFE_PATH | OTHER |

| | Skill | Die | Total | Career | Race | Home | Life | Other |

| | | Pool | | | | World | Path | |

|---+-------+------+-------+--------+------+-------+------+-------|

| | | | | | | | | |

#+TBLFM: $3='($PROP_LOOKUP_DIE_POOL (string-to-number $TOTAL))::$4='(+ $CAREER..$>);N::$5='(number-to-string (length (seq-filter (lambda (elt) (string= elt $SKILL)) (list remote(CAREERS, @4$7..@>$8)))))::$6='(if (or (equalp remote(RACE, @I$7) $SKILL) (equalp remote(RACE, @I$8) $SKILL) (equalp remote(RACE, @I$9) $SKILL)) 1 0)::$7='(if (equalp remote(HOMEWORLD, @3$4) $SKILL) 1 0)

*** Movement

#+NAME:SPEED

| ! | TYPE | SPEED | SIZE | EXPLOITS | OTHER |

| | Movement | Base | Size | Exploits | Other |

| | Type | Speed | | | |

|---+----------+-------+------+----------+-------|

| # | Base | 4 | 0 | | |

| # | Swim | 2 | 0 | | |

| # | Climb | 2 | 0 | | |

| # | High-g | 2 | 0 | | |

| # | Zero-g | 2 | 0 | | |

| # | Fly | 2 | 0 | | |

#+TBLFM: $4='(if (equalp "Small" remote(RACE, @4$SIZE)) -1 0)::@4$3='(+ remote(ATTRIBUTES, @5$POOL..@6$POOL) $SIZE..$OTHER);N::@5$3..@>$3='(+ $EXPLOITS..$OTHER (/ @4$3 2));N

#+NAME:JUMP

| ! | TYPE | DISTANCE |

| | Jump Type | Distance |

|---+------------+----------|

| # | Horizontal | 6 |

| # | High | 3 |

#+TBLFM: @3$3=2 * remote(ATTRIBUTES, @6$TOTAL)::@4$3='(min remote(ATTRIBUTES, @5$TOTAL) @3$3);N

*** Defense

#+NAME:DEFENSE

| ! | TYPE | STATIC | TOTAL | ATTRIBUTE | SKILL | EQUIPMENT | OTHER | SIZE | ARMOR | SHEILD |

| | Type | Static | Total | Attribute | Skill | Equipment | Other | Size | Armor | Sheild |

|---+--------+--------+-------+-----------+-------+-----------+-------+------+-------+--------|

| # | Melee | 10 | 0 | 2 | 0 | | | 0 | | |

| # | Ranged | 10 | 0 | 2 | 0 | | | 0 | | |

| # | Mental | 10 | 0 | 2 | 0 | | | | | |

#+TBLFM: $3='(max 10 (let ((pool (list remote(STATIC_DEFENSE, @I$2..@>$2))) (static (list remote(STATIC_DEFENSE, @I$3..@>$3)))) (+ (or (org-lookup-first $TOTAL pool static) 0) $SIZE..$OTHER)));N::$4='(min remote(MAX_DIE_POOL_CHARACTER, @1$2) (+ $ATTRIBUTE..$EQUIPMENT));N::@3$5=max(remote(ATTRIBUTES, @5$3), remote(ATTRIBUTES, @6$3))::@3$6..@4$6='(apply #'max (mapcar $PROP_LOOKUP_SKILL (list "acrobatics" "dodging" "foresight")))::@3$9..@4$9='(let ((size (downcase remote(RACE, @4$4)))) (cond ((equalp size "tiny") 4) ((equalp size "small") 2) ((equalp size "medium") 0) ((equalp size "large") -4) ((equalp size "enormous") -8) ((equalp size "gigantic") -16) ((equalp size "colossal") -32) (t 0)))::@4$5=remote(ATTRIBUTES, @6$3)::@5$5=max(max(remote(ATTRIBUTES, @8$3), remote(ATTRIBUTES, @9$3)), remote(ATTRIBUTES, @10$3))::@5$6='(apply #'max (mapcar $PROP_LOOKUP_SKILL (list "bravery" "concentration" "conviction" "discipline" "leadership" "meditation" "psychology" "religion" "rulership")))

**** Static Defense :noexport:

#+NAME:STATIC_DEFENSE

| ! | POOL | STATIC |

| | Pool | Static |

|---+------+--------|

| | 1 | 4 |

| | 2 | 7 |

| | 3 | 11 |

| | 4 | 14 |

| | 5 | 18 |

| | 6 | 21 |

| | 7 | 25 |

| | 8 | 28 |

| | 9 | 32 |

*** Health

#+NAME:HEALTH

| # | Average Health | 16 |

| | Max Health | |

| | Current Health | |

#+TBLFM: @1$3='(let* ((hardy ($PROP_LOOKUP_SKILL "Hardy")) (health (* 4 (+ ($PROP_LOOKUP_ATTRIBUTE "END") ($PROP_LOOKUP_ATTRIBUTE "WIL") hardy)))) (if (< health 10) 10 health))

*** Exploits

#+NAME:EXPLOITS

| / | <25> | | <80> |

| ! | EXPLOIT | SOURCE | DESCRIPTION |

| | Exploit | Source | Description |

|---+---------------------------+--------+----------------------------------------------------------------------------------|

| | | | |

*** Magic

**** Secrets

**** Mana

#+NAME:MANA

| # | Max Mana | 0 |

| | Current Mana | |

#+TBLFM: @1$3=remote(ATTRIBUTES, @14$4) * 3

**** Spellbook

*** Chi

**** Chi Points

#+NAME:CHI

| # | Max Chi | 0 |

| | Current Chi | |

#+TBLFM: $3='($PROP_LOOKUP_ATTRIBUTE "CHI")

**** Stances

#+NAME:MAX_STANCES

| # | Max Stances | 0 |

| | Stances Known | |

#+TBLFM: $3='($PROP_LOOKUP_ATTRIBUTE "CHI")

*** Psionics

**** Psi Points

#+NAME:PSI

| # | Max Psi | 0 |

| | Current Psi | |

#+TBLFM: @1$3=10 * remote(ATTRIBUTES, @16$4)

**** Psi Powers

*** Initiative

#+NAME:INITIATIVE

| ! | TOTAL | ATTRIBUTE | SKILLS | EXPLOITS | OTHER |

| | Total | Attribute | Skills | Exploits | Other |

|---+-------+-----------+--------+----------+-------|

| # | 2 | 2 | 0 | | |

#+TBLFM: @3$2='(+ $ATTRIBUTE..$OTHER);N::@3$3=remote(ATTRIBUTES, @8$3)::@3$4='(let ((reactions ($PROP_LOOKUP_SKILL "Reactions")) (tactics ($PROP_LOOKUP_SKILL "Tactics"))) (+ reactions tactics))

*** Perception

#+NAME:PERCEPTION

| ! | TOTAL | ATTRIBUTE | SKILL | OTHER |

| | Total | Attribute | Skill | Other |

|---+-------+-----------+-------+-------|

| # | 2 | 2 | 0 | |

#+TBLFM: @3$2='(+ $ATTRIBUTE..$OTHER);N::@3$3='($PROP_LOOKUP_ATTRIBUTE "INT")::@3$4='($PROP_LOOKUP_SKILL "Perception")

*** Carrying Capacity

#+NAME:CARRYING_CAPACITY

| | Burden | Weight |

|---+-----------+--------|

| # | Increment | 60 |

| # | Maximum | 150 |

#+TBLFM: @2$3=10 * (remote(ATTRIBUTES, @5$TOTAL) + remote(ATTRIBUTES, @7$TOTAL))::@3$3=50 * remote(ATTRIBUTES, @5$TOTAL)

*** Careers

#+NAME:CAREERS

| / | | | | | <15> | | | | | | | | | | | | | | |

| ! | CAREER | GRADE | TIME | AGE | EXPLOIT | SKILL_1 | SKILL_2 | STR | AGI | END | INT | LOG | WIL | CHA | LUC | REP | MAG | CHI | PSI |

| | Career | Grade | Time | Age | Exploit | Skill 1 | Skill 2 | STR | AGI | END | INT | LOG | WIL | CHA | LUC | REP | MAG | CHI | PSI |

|---+--------+-------+------+-----+-----------------+---------+---------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|

| # | | | | 0 | | | | | | | | | | | | | | | |

#+TBLFM: $5='(+ @I+1$TIME..@@#$TIME);N

#+NAME:GRADE

| | Total Grade |

|---+-------------|

| # | 0 |

#+TBLFM: @2$2='(length (list remote(CAREERS, @I$2..@>$2)))

*** Trait

#+NAME:TRAIT

| / | | <60> |

| ! | TRAIT | DESCRIPTION |

| | Trait | Description |

|---+-------+--------------------------------------------------------------|

| # | | |

#+TBLFM: @4$3='(let* ((traits-list (list remote(POSSIBLE_TRAITS, @3$<..@>$3))) (traits (mapcar #'rest (seq-partition traits-list 3))) (traits-names (mapcar #'first traits)) (traits-descriptions (mapcar #'second traits)) (trait-description (org-lookup-first $TRAIT traits-names traits-descriptions))) (or trait-description ""));E

**** Possible Traits :noexport:

#+NAME:POSSIBLE_TRAITS

| / | | <60> |

| ! | TRAIT | DESCRIPTION |

|---+-------+--------------------------------------------------------------|

| | Lame | You have a limp, and move slowly, possibly with a cane. This causes people to underestimate you, granting you a +1d6 bonus to INITIATIVE checks. |

*** Race

#+NAME:RACE

| / | | | | | | | | | <20> | | | | | | | | | | | | |

| ! | RACE | TYPE | SIZE | ADULT | OLD | SKILL_1 | SKILL_2 | SKILL_3 | EXPLOITS | STR | AGI | END | INT | LOG | WIL | CHA | LUC | REP | MAG | CHI | PSI |

| | Race | Type | Size | Adult Age | Old Age | Skill 1 | Skill 2 | Skill 3 | Exploits | STR | AGI | END | INT | LOG | WIL | CHA | LUC | REP | MAG | CHI | PSI |

|---+------+------+------+-----------+---------+---------+---------+---------+----------------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|

| # | | | | 0 | 0 | | | | | STR | AGI | END | INT | LOG | WIL | CHA | LUC | REP | MAG | CHI | PSI |

#+TBLFM: @4$3='(let* ((race-list (list remote(POSSIBLE_RACES, @3$<..@>$>))) (races (mapcar #'rest (seq-partition race-list 20))) (races-names (mapcar #'first races)) (races-type (mapcar (lambda (elt) (second elt)) races)) (race-type (org-lookup-first $RACE races-names races-type))) (or race-type ""));E::@4$4='(let* ((race-list (list remote(POSSIBLE_RACES, @3$<..@>$>))) (races (mapcar #'rest (seq-partition race-list 20))) (races-names (mapcar #'first races)) (races-size (mapcar (lambda (elt) (nth 2 elt)) races)) (race-size (org-lookup-first $RACE races-names races-size))) (or race-size ""));E::@4$5='(let* ((race-list (list remote(POSSIBLE_RACES, @3$<..@>$>))) (races (mapcar #'rest (seq-partition race-list 20))) (races-names (mapcar #'first races)) (races-adult (mapcar (lambda (elt) (nth 3 elt)) races)) (race-adult (org-lookup-first $RACE races-names races-adult))) (or race-adult 0));E::@4$6='(let* ((race-list (list remote(POSSIBLE_RACES, @3$<..@>$>))) (races (mapcar #'rest (seq-partition race-list 20))) (races-names (mapcar #'first races)) (races-old (mapcar (lambda (elt) (nth 4 elt)) races)) (race-old (org-lookup-first $RACE races-names races-old))) (or race-old 0));E::@4$10='(let* ((race-list (list remote(POSSIBLE_RACES, @3$<..@>$>))) (races (mapcar #'rest (seq-partition race-list 20))) (races-names (mapcar #'first races)) (races-exploits (mapcar (lambda (elt) (nth 6 elt)) races)) (race-exploits (org-lookup-first $RACE races-names races-exploits))) (or race-exploits ""));E::@4$11..@4$>='(let* ((race-list (list remote(POSSIBLE_RACES, @3$<..@>$>))) (races (mapcar #'rest (seq-partition race-list 20))) (races-names (mapcar #'first races)) (races-attribs (mapcar (lambda (elt) (mapcar #'string-to-number (subseq elt 7))) races)) (race-attribs (org-lookup-first $RACE races-names races-attribs)) (attrib-list (list @2$11..@2$>)) (attrib (org-lookup-first @2 attrib-list race-attribs))) (or attrib ""));E

**** Possible Races :noexport:

#+NAME:POSSIBLE_RACES

| / | | | | | | <20> | <20> | | | | | | | | | | | | |

| ! | RACE | TYPE | SIZE | ADULT | OLD | SKILLS | EXPLOITS | STR | AGI | END | INT | LOG | WIL | CHA | LUC | REP | MAG | CHI | PSI |

|---+----------------+-----------+--------+-------+-----+----------------------+----------------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|

| | Human | Humanoid | Medium | 26 | 60 | /[crafting]/, /[gaming]/, /[lore]/, climbing, dungeoneering, running, sailing, swimming | Explorers, Varied | | | | | | | | 2 | | | | |

| | Ogre | Goblinoid | Large | 20 | 40 | axes, brawling, bravery, carrying, clubs, hardy, intimidate, swords | Acid Bood, Darksight, Smelly, Thick Hide | 3 | | 3 | | | | | | | | | |

| | Grand Elf | Fey | Medium | 190 | 550 | /[musical]/, alchemy, intimidate, law, leadership, muskets, pistols, sailing, swords | Cultural Weapon, Fey, Magic Sense, Meditation, Naturally Magical | | 2 | | | 2 | | | -2 | | 3 | | |

| | Sylvan Elf | Fey | Medium | 120 | 350 | animal handling, bows, climbing, herbalism, nature, running, stealth, survival, tracking | Fey, Healthy, Nature Affinity, Trance, Tree-Dwellers, Unimpeded | | 2 | 2 | | | | | | | 2 | | |

| | Mountain Dwarf | Humanoid | Small | 90 | 210 | /[crafting]/, alchemy, appraisal, axes, engineering, carousing, hammers, mining | Darksight, Earthy, Iron Constitution, Sturdy | | | 2 | | | 2 | | | | | | |

| | Orc | Humanoid | Medium | 34 | 68 | /[combat]/, blacksmithing, carousing, hunting, intimidation, mining, running, tactics, tracking | Bloodlust, Darksight, Glory | 2 | 2 | | 3 | | | | | | | | |

| | Smallfolk | Humanoid | Small | 39 | 85 | /[crafting]/, appraisal, bluffing, brewing, cooking, diplomacy, farming, fishing, slings, stealth, thievery | Evaison, Stubborn | | 2 | | | | | 2 | 2 | | 1 | | |

*** Homeworld

#+NAME:HOMEWORLD

| ! | HOMEWORLD | NAME | SKILL | STR | AGI | END | INT | LOG | WIL | CHA | LUC | REP | MAG | CHI | PSI |

| | Homeworld | Name | Skill | STR | AGI | END | INT | LOG | WIL | CHA | LUC | REP | MAG | CHI | PSI |

|---+-----------+------+-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|

| # | | | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

#+TBLFM: @3$5..@3$>='(let* ((homeworlds-list (list remote(POSSIBLE_HOMEWORLDS, @3$<..@>$>))) (homeworlds (mapcar #'rest (seq-partition homeworlds-list 15))) (homeworlds-types (mapcar #'first homeworlds)) (homeworlds-skills (mapcar (lambda (elt) (second elt)) homeworlds)) (homeworlds-attribs (mapcar (lambda (elt) (subseq elt 2)) homeworlds)) (homeworld-attribs (org-lookup-first $HOMEWORLD homeworlds-types homeworlds-attribs)) (attrib (nth (- $# 5) homeworld-attribs))) (or attrib 0));E

**** Possible Homeworlds :noexport:

#+NAME:POSSIBLE_HOMEWORLDS

| / | | <30> | | | | | | | | | | | | |

| ! | HOMEWORLD | SKILLS | STR | AGI | END | INT | LOG | WIL | CHA | LUC | REP | MAG | CHI | PSI |

|---+-----------+--------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|

| | Arctic | Hardy, Survival, Brewing | | -1 | 1 | | | | | | | | | |

*** Augments

#+NAME:MAX_AUGMENTS

| | Maximum Augments |

|---+------------------|

| # | 3 |

#+TBLFM: @2$2=remote(ATTRIBUTES, @7$4)

#+NAME:AUGMENTS

| / | | | <80> |

| | Augment | Location | Description |

|---+---------+----------+----------------------------------------------------------------------------------|

| | | | |

** Equipment

*** Equipment

#+NAME:EQUIPMENT

| / | | | | | <3> | <80> |

| ! | ITEM_NAME | QUALITY | COST | WEIGHT | QUANTITY | DESCRIPTION |

| | Item Name | Quality | Cost | Weight | Qty | Description |

|---+-----------+---------+------+--------+-----+----------------------------------------------------------------------------------|

| | | | | | | |

#+NAME:WEIGHT

| | Total Weight |

|---+--------------|

| # | 0 |

#+TBLFM: @2$2='(+ remote(EQUIPMENT, @I$5..@II$5));N

*** Money

#+NAME:MONEY

| Credits |

|---------|

| |

*** Equipment Quality :noexport:

#+NAME:EQUIPMENT_QUALITY

| / | | <5> |

| | Item Quality | Bonus |

|---+--------------+-------|

| | Improvised | -2 |

| | Standard | 0 |

| | High | 1 |

| | Exceptional | 2 |

| | Mastercraft | 3 |

| | Artisanal | 4 |

| | Legendary | 5 |

** Combat

*** Attacks

#+NAME:ATTACKS

| / | | | | | | | | | <30> |

| | Weapon | Attribute | Skill | Quality | Attack | Damage | Range | Damage | Notes |

| | | | | | | | | Type | |

|---+--------+-----------+-------+---------+--------+--------+-------+--------+--------------------------------|

| # | | | | | 0 | | | | |

#+TBLFM: $6='(let ((skill ($PROP_LOOKUP_SKILL $4)) (attribute ($PROP_LOOKUP_ATTRIBUTE $3)) (quality (org-lookup-first $5 (list remote(EQUIPMENT_QUALITY, @I$2..@>$2)) (mapcar #'string-to-number (list remote(EQUIPMENT_QUALITY, @I$3..@>$3)))))) (+ (or skill 0) (or attribute 0) (or quality 0)))

*** Soak

#+NAME:SOAK

| / | | | | <25> |

| | Soak | Overcome | Source | Notes |

| | Value | By | | |

|---+-------+----------+--------+---------------------------|

| | | | | |

* Game Notes

** World Notes

** Character Notes