diff --git a/module/boss.mjs b/module/boss.mjs
index 83ac602..c6cc8af 100644
--- a/module/boss.mjs
+++ b/module/boss.mjs
@@ -35,6 +35,7 @@ const bossData = {
moves: [
{
marked: true,
+ locked: true,
name: "Force of Will",
description: `Whenever you act, do not draw. Simply declare what you do, and what happens after.`,
hasWriteIn: false,
@@ -85,14 +86,14 @@ const bossData = {
{
marked: false,
name: "Exceptional Planning",
- description: `At the start of each mission, remove one card from the deck. Any time one of your henches draws, you may replace the card they play with the removed card.`,
+ description: `At the start of each mission, remove one card from the deck, then shuffle. When one of your henches draws, you may replace the card they play with the removed card.`,
hasWriteIn: false,
writeIn: null,
},
{
marked: false,
- name: "Limelight Lovers",
- description: `If your heat is in Tier III, your henches can take 1 stress to take +1 card to any draw (possibly drawing 4).`,
+ name: "Push the Limits",
+ description: `Your henches can take 2 stress to take +1 card to any draw (possibly drawing 4).`,
hasWriteIn: false,
writeIn: null,
},
@@ -113,7 +114,7 @@ const bossData = {
{
marked: false,
name: "Guild Bigwig",
- description: `During fallout, you may draw a second time and use that card instead. Explain who intervenes on your behalf, and how.`,
+ description: `During engagement, you may draw a second time and use that card instead.`,
hasWriteIn: false,
writeIn: null,
},
diff --git a/module/data-models.mjs b/module/data-models.mjs
index 1f2c630..4e2dde1 100644
--- a/module/data-models.mjs
+++ b/module/data-models.mjs
@@ -30,6 +30,7 @@ const cappedArrayField = (innerField, maxSize, defaultValue = undefined) => new
const moveField = () => new SchemaField({
marked: new BooleanField({ required: true, initial: false }),
+ locked: new BooleanField({ required: false, initial: false }),
name: textField(),
description: textField(),
hasWriteIn: new BooleanField({ required: true, initial: false }),
@@ -123,12 +124,12 @@ export class BossDataModel extends foundry.abstract.TypeDataModel {
details: cappedArrayField(promptField(), 4),
storyline: new StringField({ required: true, blank: false, initial: nullStorylineKey, options: storylineKeys}),
- heat: new NumberField({ required: true, integer: true, min: 0, initial: 0, max: 18}),
-
experienceTriggers: cappedArrayField(markableField(), 4),
experience: new NumberField({ required: true, integer: true, min: 0, initial: 0, max: 5 }),
moves: cappedArrayField(moveField(), 13),
+
+ notes: textField(),
};
}
@@ -144,10 +145,4 @@ export class BossDataModel extends foundry.abstract.TypeDataModel {
return this.updateSource(initMutation);
}
-
- get tier() {
- const divisor = 18 / 3;
-
- return Math.ceil(this.heat / divisor);
- }
}
\ No newline at end of file
diff --git a/module/helpers/update-helper.mjs b/module/helpers/update-helper.mjs
index ce0edaf..a80453f 100644
--- a/module/helpers/update-helper.mjs
+++ b/module/helpers/update-helper.mjs
@@ -4,15 +4,17 @@ export const versions = {
UNDEFINED: undefined,
DRAFT_0: '0',
DRAFT_1: '1',
+ DRAFT_2: '2',
};
-export const CURRENT_VERSION = versions.DRAFT_1;
+export const CURRENT_VERSION = versions.DRAFT_2;
const updateMap = {
[versions.UNDEFINED]: versions.DRAFT_0,
[versions.EMPTY]: versions.DRAFT_0,
[versions.NULL]: versions.DRAFT_0,
[versions.DRAFT_0]: versions.DRAFT_1,
+ [versions.DRAFT_1]: versions.DRAFT_2,
};
const updateWarnings = {
@@ -24,6 +26,15 @@ const updateWarnings = {
You delete and recreate your deck, or update the Ace of Diamonds and add a joker.
`,
},
+ [versions.DRAFT_2]: {
+ title: `Draft 2 update!`,
+ content: `The module is now compatible with Draft 2. Due to these changes, we recommend:
+
+
You create new character sheets for Henches and Bosses, and delete the old ones.
+
You delete and recreate your deck, as most cues have changed.
+
+ `,
+ }
};
function getWarningsSinceVersion(oldVersion) {
diff --git a/module/playbooks.mjs b/module/playbooks.mjs
index 22f244b..5ca9896 100644
--- a/module/playbooks.mjs
+++ b/module/playbooks.mjs
@@ -151,12 +151,11 @@ const playbooks = {
{
marked: false,
name: "Encyclopedic Knowledge",
- description: `When you first meet a new heroic or villainous character, The Boss may ask you one of the following. You've heard of them before: answer. Whatever you state is true.
+ description: `When you first meet a new heroic or villainous character, you can decide you've heard of them before, and choose to answer one of the below. Whatever you state is true.
What is their power?
Why are they here?
Who do they work with?
-
Any yes or no question.
`,
hasWriteIn: false,
writeIn: null,
@@ -171,7 +170,7 @@ const playbooks = {
{
marked: false,
name: "Just an Average Citizen",
- description: `When you are out of uniform no one will suspect you are a henchman until you reveal yourself or act with violence.`,
+ description: `When you are out of uniform no one can identify you as a henchman until you reveal yourself or act with violence.`,
hasWriteIn: false,
writeIn: null,
},
@@ -183,9 +182,10 @@ const playbooks = {
writeIn: null,
},
{
- marked: false,
+ marked: true,
+ locked: true,
name: "Forum Lurker",
- description: `As a prep action you can trawl the web for information about a piece of the setting. State a single fact about this thing and draw. Ignore the cue, and use the rank:
+ description: `As a prep action you can trawl the web for information about a piece of the setting. State a single fact about this thing and draw 2. Ignore the cue, and use the rank:
1-2 — You learn your information is correct but flawed.
3-6 — You learn your information is false but holds a kernel of truth.
@@ -246,7 +246,7 @@ const playbooks = {
{
marked: false,
name: "Go Overboard",
- description: `Once per session, when you throw yourself into overwhelming danger, you can treat any played card as -1 rank and ignore any harm as consequence. This does not extend to your team. (This doesn't reduce a 1 to a 0).`,
+ description: `Once per session, when you throw yourself into overwhelming danger, you can treat any played card as -1 rank and ignore any harm as consequence. This does not extend to your team. (This wont change the cue of a 2).`,
hasWriteIn: false,
writeIn: null,
},
@@ -261,7 +261,7 @@ const playbooks = {
Quick
Unbreakable
Explosive
-
Explosive
+
Untraceable
Sniping
`,
hasWriteIn: true,
@@ -282,13 +282,14 @@ const playbooks = {
writeIn: null,
},
{
- marked: false,
- name: "Like Old Times",
- description: `As a prep action, you can take an old friend out on the town. Describe how things were between you, back in the day and how you spend time with them now. Then, draw. Ignore the cue, and use the rank:
+ marked: true,
+ locked: true,
+ name: "Phone a Friend",
+ description: `As a prep action, you can ask an old friend to complete a favor. State what you want, then draw 2. Ignore the cue, and instead use the rank:
-
1-2 — They want back on your good side. What is the same? What is different now?
-
3-4 — They might forgive you. What did you do to hurt them?
-
5-6 — Things will never be the same as they used to be. Why?
+
1-2 — They do it cleanly.
+
3-4 — They do it sloppily. A new complication arises.
+
5-6 — You get roped into doing a favor for them during the next mission. If you fail to follow through, take 2 harm, “Damaged Reputation.”
`,
hasWriteIn: false,
writeIn: null,
@@ -311,7 +312,7 @@ const playbooks = {
"Doing something unexpected",
],
missionPlanningQuestions: [
- "Present your new prototype weapon, which the target is probably weak to.",
+ "Explain an unconventional or secret weakness of the target.”",
"State a fact about the target's defense systems.",
"Ask the boss: what secret research is the target hiding?",
],
@@ -344,28 +345,22 @@ const playbooks = {
moves: [
{
marked: false,
- name: "Always Prepared",
- description: `At the beginning of the action, write a new piece of gear in below. Choose one flaw. You may use this gear this mission, without counting towards your slots. At the end of the mission, erase it.
-
-
Inaccurate
-
Slow
-
Unstable
-
Cumbersome
-
`,
- hasWriteIn: true,
- writeIn: "",
- },
- {
- marked: false,
- name: "Wirey",
- description: `Treat all played ♣ cards as -1 rank. Treat all played ♠ cards as +1 rank. (This won't turn a 1 into a 0, or a 6 into a 7).`,
+ name: "Unorthodox",
+ description: `When you use your gear in a manner other than its intended purpose, and you play a 2, 3, or face card, clear 3 stress.`,
hasWriteIn: false,
writeIn: null,
},
{
marked: false,
- name: "Packmule",
- description: `Gain +1 gear slot. Your teammates can mark gear from your sheet, if you let them.`,
+ name: "Wirey",
+ description: `Treat all played ♣ cards as -1 rank. Treat all played ♠ cards as +1 rank. (This won't turn a 2 into a 1, or a 6 into a 7).`,
+ hasWriteIn: false,
+ writeIn: null,
+ },
+ {
+ marked: false,
+ name: "Hammerspace",
+ description: `You can mark any number of gear slots.`,
hasWriteIn: false,
writeIn: null,
},
@@ -377,16 +372,24 @@ const playbooks = {
writeIn: null,
},
{
- marked: false,
- name: "Logistics",
- description: `As a prep action you may tap your connections to procure something unusual. State what you're trying to find, then draw. Ignore the cue, and instead use the rank:
+ marked: true,
+ locked: true,
+ name: "Always Prepared",
+ description: `As a prep action, you can design a new prototype invention. Write it in below and pick 1 flaw. You may use it as gear this mission. Then, draw 2. Ignore the cue, and use the rank:
-
1-2 — You find a source in ample supply. However much you need, you got.
-
3-4 — You're able to squeeze out a sample. You have barely enough to work with.
-
5-6 — You catch trouble. Mark 2 heat.
+
1-2 — You make enough prototypes for the whole team to use. Each player may write it in as an extra gear option for this mission.
+
3-4 — You're able to make one for yourself.
+
5-6 — You barely get it out of the lab. Pick an additional flaw.
+
+
Flaws:
+
+
Inaccurate
+
Slow
+
Unstable
+
Cumbersome
`,
- hasWriteIn: false,
- writeIn: null,
+ hasWriteIn: true,
+ writeIn: "",
},
],
},
@@ -447,14 +450,14 @@ const playbooks = {
{
marked: false,
name: "You're Dead, Kiddo",
- description: `When you intimidate someone by describing a past villainous deed, treat any ♥ as -1 rank. (This won't turn an ace into a 0).`,
+ description: `When you intimidate someone by describing a past villainous deed, treat any ♥ as -1 rank. (This won't change the cue for a 2).`,
hasWriteIn: false,
writeIn: null,
},
{
marked: false,
name: "I've Seen Worse",
- description: `During The Action, you can help another character. Describe a similar memory from your past that has prepared you for this moment. They take +1 to their draw (possibly up to 4 cards), and you take one stress.`,
+ description: `When you team up with a fellow hench, describe a similar memory from your past that has prepared you for this moment. Take +1 to the draw (possibly up to 4 cards), and you take one stress.`,
hasWriteIn: false,
writeIn: null,
},
@@ -466,13 +469,14 @@ const playbooks = {
writeIn: null,
},
{
- marked: false,
- name: "Friends in Low Places",
- description: `As a prep action, you can ask an underworld contact to complete an unusual favor. State what you want, then draw. Ignore the cue, and instead use the rank:
+ marked: true,
+ locked: true,
+ name: "Like Old Times",
+ description: `As a prep action, you can take some henches on a minor crime spree. Explain your petty crimes, then draw 2. Ignore the cue, and instead use the rank:
-
1-2 — They phone it in, but they do it.
-
3-4 — They do it sloppily. A new complication arises.
-
5-6 — You get roped into doing a favor for them during the next mission. If you fail to follow through, take 2 harm, "Damaged Reputation."
+
1-2 — You stir up some recognition and pride. Mark 2 experience, and describe something you've found on the scene.
+
3-4 — The night is a blur. Mark 1 experience, then describe something you've lost, and something you’ve gained.
+
5-6 — You cause a complete ruckus. When you draw engagement, treat the result as one level worse. How have you put the mission in jeopardy?
`,
hasWriteIn: false,
writeIn: null,
@@ -527,7 +531,7 @@ const playbooks = {
],
moves: [
{
- marked: true,
+ marked: false,
name: "Teacher's Pet",
description: `You live at the base, and are specially favored by the boss. Describe a privilege that only you receive. You cannot clock out.`,
hasWriteIn: true,
@@ -550,14 +554,15 @@ const playbooks = {
{
marked: false,
name: "Folie à Deux",
- description: `At the beginning of the action, choose another hench. Whenever they help you or show support, clear 1 stress. Whenever they fail or are hurt, take 1 stress.`,
+ description: `At the beginning of the action, choose another hench. Whenever they help you or show support, clear 2 stress. Whenever they fail or are hurt, take 2 stress.`,
hasWriteIn: false,
writeIn: null,
},
{
- marked: false,
+ marked: true,
+ locked: true,
name: "Eavesdropper",
- description: `As a prep action, you can lurk around where you shouldn't be and listen for secrets. Choose a target or an ally, then draw. Ignore the cue, and instead use the rank:
+ description: `As a prep action, you can lurk around where you shouldn't be and listen for secrets. Choose a target or an ally, then draw 2. Ignore the cue, and instead use the rank:
1-2 — You overhear something no one else knows - a future plan, a haunting deed, or their shame.
3-4 — You overhear a common rumor - a worst held secret, a trick they've pulled, or a romantic tryst.
@@ -618,14 +623,14 @@ const playbooks = {
{
marked: false,
name: "Defiant",
- description: `When you act in opposition to the boss's orders, take 1 less stress if you resist consequences.`,
+ description: `When you act in opposition to the boss's orders, take 2 less stress if you resist consequences.`,
hasWriteIn: false,
writeIn: null,
},
{
marked: false,
name: "Steal the Spotlight",
- description: `When you claim the boss's actions as your own, clear 1 stress. If your audience believes you, clear 2.`,
+ description: `When you claim the boss's actions as your own, clear 2 stress. If your audience believes you, clear 3.`,
hasWriteIn: false,
writeIn: null,
},
@@ -638,19 +643,20 @@ const playbooks = {
},
{
marked: false,
- name: "Machinations",
- description: `At the start of each mission, secretly note your own goal for this mission. When you complete it, reveal it, and take a free flashback to explain how it fits into your larger plans. Then, you may mark 2 ticks on any one of your tinker clocks.`,
+ name: "Splinter Cell",
+ description: `You have loyal henches on the team. When you take the team-building prep time action, you can draw 3 and hold two of the cards for the mission.`,
hasWriteIn: false,
writeIn: null,
},
{
- marked: false,
- name: "Understudy",
- description: `As a prep action, you can take some henches on a minor crime spree. Explain your petty crimes, then draw. Ignore the cue, and instead use the rank:
+ marked: true,
+ locked: true,
+ name: "Machinations",
+ description: `As a prep action, secretly note your own goal for this mission, and show it to the boss. During the mission, if you complete this goal, reveal it, then choose one:
-
1-2 — You stir up some recognition and pride. Clear 1 heat, and mark 1 tick on one of your tinker clocks.
-
3-4 — The night is a blur. Describe something you've lost, and something you've gained.
-
5-6 — You cause a complete ruckus. Mark 2 heat.
+
Clear all stress.
+
Reduce all marked harm by 1 level. (Level 1 harm is cleared).
+
Mark 2 ticks on one of your tinker clocks.
`,
hasWriteIn: false,
writeIn: null,
@@ -670,7 +676,7 @@ const playbooks = {
],
fixedInclinations: [
"Invoking rules or regulations.",
- "Taking the laziest approach.",
+ "Draw on skills from your mundane life.",
],
missionPlanningQuestions: [
"State something that, by Guild rule, the target cannot do to you this mission.",
@@ -733,11 +739,12 @@ const playbooks = {
writeIn: null,
},
{
- marked: false,
+ marked: true,
+ locked: true,
name: "Hobbyist",
- description: `As a prep action, you can invite a fellow hench to join you in your hobby. Name the hobby, and how they're involved, then draw. Ignore the cue, and instead use the rank:
+ description: `As a prep action, you can invite a fellow hench to join you in your hobby. Name the hobby, and how they're involved, then draw 2. Ignore the cue, and instead use the rank:
-
1-2 — You have a wonderful time and brighten each others' spirits. Gain +1 card to your next home life draw.
+
1-2 — You have a wonderful time and brighten each others' spirits. You each clear 2 stress.
3-4 — You have a pleasant, but ordinary, time. Clear 1 stress; they mark 1 experience.
5-6 — You completely lose track of time. Lose a remaining prep action, or take 1 harm "sleep deprived."