Skip to content

Commit

Permalink
Add advanced careers for apothecary
Browse files Browse the repository at this point in the history
and add test for missing skills in careers
  • Loading branch information
davismr committed Jan 3, 2025
1 parent cf0ba2c commit 65b74cc
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 0 deletions.
61 changes: 61 additions & 0 deletions src/wfrp/character/data/careers.py
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,67 @@ def get_career(species, die_roll):
"Pestle and Mortar",
],
},
"Apothecary": {
"status": {"tier": "Silver", "standing": 1},
"attributes": ["Fellowship"],
"skills": [
"Charm",
"Haggle",
"Lore (Science)",
"Gossip",
"Language (Guilder)",
"Perception",
],
"talents": [
"Criminal",
"Dealmaker",
"Etiquette (Guilder)",
"Pharmacist",
],
"trappings": [
"Guild Licence",
"Trade Tools",
],
},
"Master Apothecary": {
"status": {"tier": "Silver", "standing": 3},
"attributes": ["Intelligence"],
"skills": [
"Intuition",
"Leadership",
"Research",
"Secret Signs (Guilder)",
],
"talents": [
"Bookish",
"Master Tradesman (Apothecary)",
"Resistance (Poison)",
"Savvy",
],
"trappings": [
"Book (Apothecary)",
"Apprentice",
"Workshop",
],
},
"Apothecary-General ": {
"status": {"tier": "Gold", "standing": 1},
"attributes": ["Willpower"],
"skills": [
"Intimidate",
"Ride (Horse)",
],
"talents": [
"Acute Sense (Taste)",
"Coolheaded",
"Master Tradesman (Poisoner)",
"Savant (Apothecary)",
],
"trappings": [
"Commission Papers",
"Large Workshop",
],
},
},
"Engineer": {
"class": "Academics",
Expand Down
21 changes: 21 additions & 0 deletions src/wfrp/character/data/talents.py
Original file line number Diff line number Diff line change
Expand Up @@ -736,6 +736,15 @@ def get_random_talent(die_roll):
"(this does not count towards your Advances)."
),
},
"Master Tradesman": {
"max": "Dexterity Bonus",
"tests": "Any appropriate Extended Trade Tests",
"description": (
"You are exceptionally skilled at your specified Trade skill. You reduce "
"the required SL of any Extended Test using your Trade Skill by the level "
"of your Master Tradesman Talent."
),
},
"Menacing": {
"description": (
"You have an imposing presence. When using the Intimidate Skill, gain a SL "
Expand Down Expand Up @@ -972,6 +981,18 @@ def get_random_talent(die_roll):
"watching for hidden spies."
),
},
"Savant": {
"max": "Intelligence Bonus",
"tests": "Lore (chosen Lore)",
"description": (
"You are exceptionally learned, and have a significant degree of "
"specialised knowledge in a single field of study. You automatically know "
"a number of pieces of correct information equal to you Savant (Lore) "
"level about a relevant issue without having to test your Lore Skill. "
"Testing, as always, will provide yet more information as normal as "
"determined by the GM."
),
},
"Savvy": {
"max": 1,
"short_description": "+5 Int, already included",
Expand Down
24 changes: 24 additions & 0 deletions tests/test_skills.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import pytest

from wfrp.character.data.careers import CAREER_DATA
from wfrp.character.data.skills import SKILL_DATA


@pytest.mark.data
def test_skill_characteristics():
for skill in SKILL_DATA:
assert SKILL_DATA[skill]["characteristic"]


@pytest.mark.data
def test_skill():
missing = []
for career_data in CAREER_DATA:
for career in CAREER_DATA[career_data]:
if career == "class":
continue
for skill in CAREER_DATA[career_data][career]["skills"]:
skill = skill.split(" (")[0]
if skill not in SKILL_DATA:
missing.append(skill)
assert not missing, sorted(missing)

0 comments on commit 65b74cc

Please sign in to comment.