diff --git a/content/awq/articles/anatomy-of-a-player-character.mdoc b/content/awq/articles/anatomy-of-a-player-character.mdoc deleted file mode 100644 index 93b9a1d..0000000 --- a/content/awq/articles/anatomy-of-a-player-character.mdoc +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Anatomy of a Player Character -path: awq -cover: - showInHeader: false -meta: - publicationDate: 2025-10-08T08:43:00.000Z - status: draft - isFeatured: false - tags: [] -seo: - noIndex: false ---- -Every model shares some common abilities - -## Main Characteristics -Characteristics define the innate abilities of a model, and each characteristic has two skills associated with it -- **Weapon Skill (WS):** Aptitude in landing and avoiding blows in close combat; governs _Melee_ and _Defence_ -- **Ballistic Skill (BS):** Capability of Hand-Eye-Coordination; governs _Skirmish_ and _Evasion_ -- **Strength (S):** Used for brute force, stamina and might; governs _Brawn_ and _Toil_ -- **Toughness (T):** Resistance to physical Trauma; governs _Consume Alcohol_ and _Endurance_ -- **Initiative(I):** Reflects speed of thought and perception; governs _Perception_ and _Outdoor Survival_ -- **Dexterity (Dex):** Affinity for performing fine and delicate manual tasks; governs _Skullduggery_ and _Tradecraft_ -- **Agility (Ag):** Physical coordination and natural athleticism; governs _Stealth_ and _Athletics_ -- **Intelligence (Int):** Power of thought, analysis, and understanding; governs _Intuition_ and _Education_ -- **Willpower (WP):** General strength if mind; governs _Cool_ and _Animal Handling_ -- **Fellowship (Fel):** Ability to get on with people; governs _Leadership_ and _Charm_ - -## Secondary Characteristics -- **Corruption Threshold (CT):[^*]** Ability to withstand _Mutation_ -- **Insanity Threshold (IT):[^*]** Ability to withstand _Insanity_ -- **Wounds (W):** Number of wounds a model can endure before _out of play_ -- **Movement (M):** Indicator of how far a model can move under normal conditionsA -- **Fate Points (FP):[^*]** Can be used to avoid certain death and dark fates -- **Luck Points (LP):[^*]** Used for Re-rolls -- **Attacks (A):** Indicator of the numbers of attacks a character can make in a single round -- **Magic (Mag):** Denotes the Model's Wizard Level - -## Skills -Used in _Checks_ -- **Melee (WS):** Used to make _Melee Attack_ actions -- **Defense (WS):** Used to defend against a model's _Melee Attack_ action -- **Shooting (BS):** Used to make _Ranged Attack_ actions with _Missile_ weapons -- **Throwing (BS):** Used to make _Ranged Attack_ actions with _Throwing_ weapons -- **Brawn (S):** Used for immediate feats of strength -- **Toil (T):** Used for prolonged manual labor -- **Consume Alcohol (T):** Used for resisting short-term hazards like alcohol and poison -- **Endurance (T):** Used to endure hardship, withstand deprivation, and survive harsh environments -- **Perception (I):** Used to notice things -- **Dodge (I):** Used to evade attacks and immediate hazards, e.g. Traps -- **Stealth (Ag):** Used for moving quietly and concealing -- **Athletics (Ag):** Used for running, jumping, climbing, and swimming -- **Streetwise (Dex):** Used for picking locks or pockets, disarming traps and other feats of Sleight of Hand -- **Crafting (Dex):** Used when crafting trappings -- **Intuition (Int):** Used for detecting subterfuge and determining value of objects -- **Education (Int):** Used for recalling relevant information -- **Cool (WP):** Used to remain calm under stress, resisting fear, and psychological coercion -- **Animal Handling (WP):** Used to charm, train, and care for animals -- **Leadership (Fel):** Used for intimidation, command, and coercing obedience; often resisted by _Discipline_ -- **Charm (Fel):** Used for deceiving, blathering, haggling, gossiping; usually resisted by _Intuition_ - -## Traits -Inherent abilities often based on Species, examples include Flier (for flying Monsters), Dark Vision, Mutation, and so on - -## Lore[^*] -Define what a character knows and specialist skills and come in the following categories -- _Academic:_ Represent various academic fields like Accountancy, Anatomy, History and Law -- _Cultural:_ Represent the knowledge of social groups and language -- _Enemy:_ Represent the knowledge of adversaries and how to effectively combat them -- _Environment:_ Represent the knowledge of surviving in various hazardous environment -- _Magic Lores:_ Represent the knowledge of the various forms of magic and enables casting spells from them+ -- _Specialist Weapon Groups:_ Represent training with special weapons like Polearms, Two-Handed Swords, Blackpowder Guns -- _Trade Lores:_ Represent the knowledge and ability to create certain trappings or work in certain fields, example Blacksmith, Weaver, Engineer, Artist -- _Vehicle Lores:_ Represent knowledge in operating vehicles and mounts - -## Talents[^*] -Represent certain knacks, tricks and innate abilities a character has, examples would be Ambidextrous, Aetheric Attunement, Menacing or Acute Senses - -## Maneuvers[^*] -Represent special combat actions and tactics a character can employ during combat, examples include Formation Fighting, Disarm, and Shield Bash - -## Careers[^*] -Represent building blocks of a character, that provide certain skills, lores, talents, maneuvers, etc. - - -[^*]: Only applicable for _Player Characters_ diff --git a/content/awq/articles/checks.mdoc b/content/awq/articles/checks.mdoc new file mode 100644 index 0000000..630173f --- /dev/null +++ b/content/awq/articles/checks.mdoc @@ -0,0 +1,88 @@ +--- +title: Checks +summary: How we roll dice and why +path: rules/general +cover: + showInHeader: false +meta: + publicationDate: 2025-10-19T22:16:00.000Z + status: draft + isFeatured: false + tags: + - crunch + - how-and-what + author: dave-damage +seo: + noIndex: false +--- +- Determine the outcome of an action +- Use a **Obstacle (Ob.)** to determine **Outcome** +- **AWQ** exclusively uses **D6** for checks + +## Outcomes{% Sidenote #outcome-fallbacks marker="§" content="Not all actions ship with the complete set of outcomes, so if a specific outcome is missing, use the following fallbacks: **Boons** become **Failures**, **Complications** become **Successes**, and a missing **Boon** is considered a **Success**" type="crunch" /%} + +- **Bane(⊗):** Action fails spectacular +- **Failure(⊖):** Action simply fails +- **Complications(⊜):** Action succeeds but with a *Twist* +- **Success(⊕):** Actions succeeds +- **Boon(⊛):** Actions succeeds with additional benefits + +## Check Modifiers + +### Favour & Peril + +- **Favour (⥣):** Increase chance of success +- **Peril (⥥):** Increase chance of failure +- **Resolution:** Multiple instances cancel each other + - `Peril > Favour`: Roll is *perilous* + - `Peril = Favour`: Normal roll + - `Favour > Peril`: Roll is *favourable* + +### Re-Rolls(⧆) + +- Re-rolled result is always final result +- One attempt per check (Exception: *Dark Deals*) +- **Sources:** + - *Luck Points:* Spend 1 **LP** + - *Dark Deals:* Suffer 1 **Corruption** + - *Pushing:* Suffer 1 **Fatigue** or **Stress** + +#### Pushing + +- If initial roll was a *Bane* and succeeds after the *pushing*, the outcome becomes a *Complication* +- Cost of a *Push,* depends on the check's **Characteristic**{% Sidenote #push-cost marker="" content="**Fatigue:** **WS**, **BS**, **S**, **T**, **Ag**
\n**Stress:** **I**, **Dex**, **Int**, **WP**, **Fel**" type="crunch" /%} + +## Anatomy + +### Reference Value (RV) +Denotes the **Skill** or **Characteristic** used for calculating the **Obtacle** + +### Check Type +Denotes the roll-type +- **Basic** +- **Complex** +- **Extended** + +### Check Mode +- **Unopposed[⥤]:** RV based on _Self_ +- **Opposed[🣑]** RV based on _Target_ + +### Difficulty +Always modifies _RV,_ never _Ob._ +- Very Easy [○] +- Easy [◔ ] +- Routine [◑] +- Challenging [●] +- Difficult [∶] +- Hard [∵] +- Very Hard [∷] +- Impossible [∺] + +### Notation Format +`[Check Type] [Check Difficulty] [Check Mode]` + +**Examples:** +- `Basic[∶] Cool` (unopposed marker usually omitted) +- `Extended[∶] Charm 🣑 Perception` + + diff --git a/content/awq/articles/general.mdoc b/content/awq/articles/general.mdoc new file mode 100644 index 0000000..418962d --- /dev/null +++ b/content/awq/articles/general.mdoc @@ -0,0 +1,17 @@ +--- +title: General Crunch +path: rules +cover: + showInHeader: false +meta: + publicationDate: 2025-10-19T22:14:00.000Z + status: draft + isFeatured: false + tags: + - how-and-what + - crunch + author: dave-damage +seo: + noIndex: false +--- +Rules that apply in EVERY situation, maybe add some test you lazy bastard diff --git a/content/awq/articles/rules-summary.md b/content/awq/articles/rules-summary.md new file mode 100644 index 0000000..36485ca --- /dev/null +++ b/content/awq/articles/rules-summary.md @@ -0,0 +1,823 @@ +## Core Concepts + +### Roles + +**Players** +Every natural person playing the game. + +**Adventurers** + +- Players who undergo Expeditions +- Have access to Momentum [✠] +- Optional roles: Cartographer, Quartermaster, Archivist, Shotcaller, Marshall, Torchbearer + +**Dungeon Master/Mistress (DM)** + +- Controls Adversaries and Hazards +- Has access to Threat [✦] + +**Models** +Any entity on the Game Board controlled by a Player, represented by a miniature. + +### Model Types + +**Party Models** (controlled by Adventurers) + +- Characters: One per Adventurer; access to most Activities; evolve via Advances +- Followers: Follow a single Character; use Obedience to track loyalty +- Henchmen: Specialized hired help; use Morale to track loyalty + +**Adversaries** (controlled by DM) + +- Minion [⁎]: Basic Activities +- Elite [⁑]: Situational Activities +- Champion [⁂]: Wide array of Activities; can use Threat directly; can become Nemesis +- Nemesis [⋇]: Returning adversary; evolves like Characters + +**Non-Player Characters (NPCs)** + +- Spawned by Events, Hazards, or Scenarios +- Represent neutral parties or quest objectives + +### Resources + +**Character Resources** + +- Luck Points: Re-roll checks +- Fate Points: Escape certain death + +**Party Resources** + +- Momentum [✠]: Used during Encounters; fuels Manoeuvres and tactical options; fluctuates throughout combat + +**DM Resources** + +- Threat [✦]: Used during Expeditions and Encounters; powers Adversary abilities and escalates Encounters + +**Momentum Uses** + +- Varies: Perform an Action +- 1pt: Decrease Check Difficulty by 2 +- 1pt: Automatically perform Change Place Manoeuvre +- 2pt: Automatically perform Disengage Manoeuvre +- 2pt: Activate Weapon Quality requiring Critical Hit +- 2pt: Gain 1 additional Reaction until start of next Model's activation +- 4pt: Increase Attacks by 1 for next Action + +### Time Structure + +Nested scales from largest to smallest: + +**Season** + +- Consumed by Endeavours and Expeditions +- Represents weeks of activity + +**Event** + +- Immediately resolved incident + +**Endeavour** + +- Downtime activity characters undertake + +**Expedition** + +- Single delve into a Dungeon +- Contains one or more Encounters + +**Encounter** + +- Isolated interaction with Adversaries or Hazards +- Consists of one or more Rounds + +**Round** + +- Each Model acts once +- Consists of structured phases + +**Activity** + +- Single action taken by Model +- Interaction with location, Hazard, or other Models + +### Locations + +**Dungeon Structure** + +- Dungeon: Confined locality where Expeditions take place; can have multiple Dungeon Levels +- Dungeon Level: Single floor/area; represented by Game Board; danger increases with depth +- Board Section: Physical tiles representing rooms and corridors + +**Overland Locations** + +- Region: Large area containing multiple location types +- Settlement: Safe haven for trading and Endeavours +- Wilderness: Dangerous areas connecting Settlements and Dungeons; contains Encounters and Hazards + +**Hazards** +Catch-all term for interactive environmental dangers and obstacles. + +**Keywords** +Used to signify synergies and antipodes; multiple occurrences usually beneficial for cost or outcome. + +--- + +## Checks System + +### Overview + +- Always use D6 +- Determines outcome of activities +- Rolled against Obstacle (Ob.) +- Three check types: Basic, Complex, Extended + +### Check Components + +**Reference Value** +Denotes the Skill or Characteristic used for calculating Target Number. + +**Check Mode** + +- Unopposed [⥤]: Reference Value based on Model's Skill +- Opposed [⇌]: Reference Value based on Target's skill + +**Difficulty** +Always modifies Reference Value, never Obstacle: + +- Very Easy [○] +- Easy [◔] +- Routine [◑] +- Challenging [●] +- Difficult [∶] +- Hard [∵] +- Very Hard [∷] +- Impossible [∺] + +**Notation Format** +`[Check Type] [Check Difficulty] [Check Mode]` + +Examples: + +- `Basic[∶] Cool` (unopposed marker usually omitted) +- `Extended[∷] Charm⇌Perception` + +### Check Outcomes + +**Bane [⊗]** +Check fails with dire consequences. If not specified, treat as Failure. + +**Failure [⊖]** +Check simply fails. + +**Complication [⊜]** +Check succeeds but with consequences. If not specified, treat as Success. + +**Success [⊕]** +Check succeeds as intended. + +**Boon [⊛]** +Check succeeds with additional benefits. If not specified, treat as Success. + +### Favour & Peril + +**Favour [⥣]** +Increases chances of success. + +**Peril [⥥]** +Reduces chances of success. + +**Resolution** +Multiple instances cancel each other: + +- Peril > Favour: Roll is perilous +- Peril = Favour: Normal roll +- Favour > Peril: Roll is favourable + +### Re-Rolls + +**Limitation** +One attempt per check (except Dark Deal). +Re-rolled result is always final. + +**Sources** + +- Luck Points: Spend 1 LP +- Dark Deal: Suffer 1 Corruption +- Push: Suffer 1 Stress or Fatigue + +### Basic Checks + +**Procedure** +Single D6 roll against Obstacle. + +**Outcomes** + +- Bane: Roll = 1 +- Failure: Roll < Obstacle +- Complication: Roll = Obstacle +- Success: Roll > Obstacle +- Boon: Roll = 6 + +**Note** +For Obstacle ≥6, Boon requires confirmation by rolling success again. + +### Complex Checks + +**Procedure** +Roll multiple D6 (number equals Reference Value). +Each die ≥ Target generates one Mark. + +**Evaluation** + +- Rolling 1: -1 Mark +- Rolling 6: Roll again for bonus Mark + +**Resolution** +Compare total Marks to Obstacle for Outcome. + +**Obstacle Determination** + +- Unopposed: Fixed number (1-10) +- Opposed: Target's Reference Value + +### Extended Checks + +**Procedure** +Use Complex Check rules. +Multiple rolls allowed until Obstacle reached. + +**Time Cost** +Each roll consumes 1 unit of Time. + +**Failure Condition** +If Marks reach 0 or below, Check ends as Bane. + +--- + +## Abilities + +### Main Characteristics + +Innate abilities of a Model. Each has 2 associated Skills. + +**Weapon Skill (WS)** +Close combat aptitude. Governs Melee and Defense. + +**Ballistic Skill (BS)** +Hand-eye coordination. Governs Shooting and Throwing. + +**Strength (S)** +Brute force and stamina. Governs Brawn and Toil. + +**Toughness (T)** +Physical resistance. Governs Consume Alcohol and Endurance. + +**Initiative (I)** +Speed of thought and perception. Governs Perception and Dodge. + +**Dexterity (Dex)** +Fine manual tasks. Governs Streetwise and Crafting. + +**Agility (Ag)** +Physical coordination and athleticism. Governs Stealth and Athletics. + +**Intelligence (Int)** +Analytical thinking. Governs Intuition and Education. + +**Willpower (WP)** +Mental strength. Governs Cool and Animal Handling. + +**Fellowship (Fel)** +Social aptitude. Governs Leadership and Charm. + +### Secondary Characteristics + +**Wounds (W)** +Number of Wounds before knocked out. + +**Movement (M)** +Movement distance under normal conditions. + +**Attacks (A)** +Number of attacks per round. + +**Magic (Mag)** +Wizard level; determines Magic Pool for spellcasting. + +**Corruption Threshold (CT)** +Ability to resist Corruption. + +**Insanity Threshold (IT)** +Ability to resist Insanity. + +**Fate Points (FP)** +Used to avoid death and dark fates. + +**Luck Points (LP)** +Used for re-rolls. + +### Skills + +Skills are used in Checks. Each associated with a Main Characteristic. + +**Melee (WS)** +Make Melee Attack actions. + +**Defense (WS)** +Defend against Melee Attack actions. + +**Shooting (BS)** +Make Ranged Attack actions with Missile weapons. + +**Throwing (BS)** +Make Ranged Attack actions with Throwing weapons. + +**Brawn (S)** +Immediate feats of strength. + +**Toil (S)** +Prolonged manual labor. + +**Consume Alcohol (T)** +Resist short-term hazards like alcohol and poison. + +**Endurance (T)** +Endure hardship, withstand deprivation, survive harsh environments. + +**Perception (I)** +Notice things. + +**Dodge (I)** +Evade attacks and immediate hazards like traps. + +**Stealth (Ag)** +Move quietly and conceal. + +**Athletics (Ag)** +Running, jumping, climbing, swimming. + +**Streetwise (Dex)** +Lockpicking, pickpocketing, disarming traps, sleight of hand. + +**Crafting (Dex)** +Create trappings. + +**Intuition (Int)** +Detect subterfuge and determine value of objects. + +**Education (Int)** +Recall relevant information. + +**Cool (WP)** +Remain calm under stress, resist fear and psychological coercion. + +**Animal Handling (WP)** +Charm, train, and care for animals. + +**Leadership (Fel)** +Intimidation, command, coerce obedience. Often resisted by Discipline. + +**Charm (Fel)** +Deceiving, blathering, haggling, gossiping. Usually resisted by Intuition. + +### Traits + +Inherent abilities based on Species. +Examples: Flier, Dark Vision, Mutation. + +### Lores + +Define what a character knows and specialist skills. + +**Categories** + +- Academic: Various fields like Accountancy, Anatomy, History, Law +- Cultural: Knowledge of social groups and languages +- Enemy: Knowledge of adversaries and combat tactics against them +- Environment: Surviving in hazardous environments +- Magic Lores: Knowledge of magic forms; enables spell casting +- Specialist Weapon Groups: Training with special weapons (Polearms, Two-Handed Swords, Blackpowder Guns) +- Trade Lores: Knowledge to create trappings or work in fields (Blacksmith, Weaver, Engineer, Artist) +- Vehicle Lores: Operating vehicles and mounts + +### Talents + +Represent knacks, tricks, and innate abilities. +Examples: Ambidextrous, Aetheric Attunement, Menacing, Acute Senses. + +### Manoeuvres + +Special combat actions and tactics. +Examples: Formation Fighting, Disarm, Shield Bash. + +### Careers + +Building blocks of a character providing Skills, Lores, Talents, Manoeuvres, etc. +Only applicable for Player Characters. + +--- + +## Encounters & Combat + +### Overview + +Encounter is a conflict between Adventurers and Adversaries. +Triggered by Event or Location. + +### Turn Sequence + +**1. Encounter Setup (First Round Only)** + +_I. Determine Encounter Parameters_ + +- Encounters may have specific Effects +- DM spends Threat to modify duration/severity or buy additional Effects + +_II. Determine Surprise_ + +Company Surprised: + +- No Momentum in first round +- Henchmen and Followers receive no Activation +- Declare all actions before Adversaries + +Adversaries Surprised: + +- No Adversary Pool in first round +- Common Adversaries lose Activation +- Elite and Champion Adversaries use Basic Actions only +- Declare all actions after Company + +_III. Calculate Initial Momentum_ +Starting Momentum equals Company's current Fortune Pool. + +_IV. Prepare Adversaries_ + +- DM selects Adversary Group and Models +- Spend Threat for Talents, better models, or additional Pool values +- Prepare Adversary Pool by summing A/C/E values of each Model +- Position Adversary Models on board + +**2. Determine Winds of Magic** +See Magic Systems section. + +**3. Declare Actions** + +- Roll D6: Even = Explorers declare first, Odd = DM declares first +- Alternate declaring actions +- DM declares Adversary actions in Groups + +**4. Determine Initiative** +Roll 1D6 + Initiative Characteristic - Action modifier +Resolve in descending order (highest first). + +**5. Resolve Actions** +Each Model receives Activation in Initiative order. + +**6. Bookkeeping** + +_Update Momentum_ + +1. Torchbearer modifies Pool: + - +1 per Elite Adversary defeated + - +2 per Champion Adversary defeated + - +5 Nemesis Adversary defeated + - +2 if Company outnumbers Adversaries + - Varies for Action/Talent effects +2. Subtract Action costs from Pool +3. Result is Momentum Pool for next turn +4. If below 0: All Company Models gain Banes equal to deficit; set Pool to 0 + +_Refresh Adversary Pool_ +Sum A/C/E values of remaining non-routed Adversaries. + +_Apply Global Effects_ +Resolve effects discreetly. +Reduce Duration trackers by 1. +Remove effects with Duration 0 after applying. + +_Check Morale_ +See Psychology & Leadership rules. + +_End Condition_ +Combat ends when no Adversaries remain on Board Section. + +### Activation + +**Structure** +Each Model receives one discrete Activation per Round. +Activation must finish before next begins. + +**Exception** +Interrupts can occur during another Activation. + +**Activation Sequence** + +_1. Start Phase_ +Apply condition effects. + +_2. Action Phase_ + +- Perform one Major Action OR gain 2 free Minor Actions +- Perform one free Minor Action (before or after Major Action) +- Main Characters: Additional Minor Actions cost 1 Fatigue each + +_3. End Phase_ + +- Reduce condition tracker by 1 (remove if zero) +- Gain Interrupts equal to Attacks Characteristic + +### Actions + +**Minor Actions [◇]** +Standard activities like Movement. + +**Major Actions [⬡]** +Complex combat actions like Attacks and Spell Casting. + +**Reactions [▽]** +Reactive activities that break normal turn order. + +### Minor Actions + +**Assist** +Aid another Model. + +**Interact** +Open doors, grab items, use hazards/trappings. + +**Movement** + +- Advance: Move up to Movement (M) +- Drag: Move adjacent prone Model up to ½M +- Disengage: Challenging Opposed Athletics vs WS to leave enemy Danger Zone +- Change Place: Challenging Opposed Athletics vs WS to swap with adjacent engaged ally +- Reposition: Move to adjacent square within enemy Danger Zone + +**Manage Equipment** +Switch weapon, sling/unsling shield, drink potion, draw from container. + +**Recuperate** + +- Recover Stress: Challenging Cool check to recover 1 Stress +- Recover Fatigue: Challenging Endurance check to recover 1 Fatigue + +**Mount/Dismount** +Mount or dismount vehicle/creature. + +**Prepare** +Reduce single check Difficulty by 1. + +**Use a Skill** +Apply relevant skill to situation. + +--- + +## Combat - Attacks + +### Melee Attacks + +**Overview** +Made with Melee Weapons against targets in Danger Zone (DZ). +Usually Opposed Simple Checks. + +**Danger Zone** +Area controlled by weapon's Reach rating: + +- Reach M: Ring of fields directly adjacent to Model +- Reach P: Squares directly front, back, left, right of Model +- Reach R: Reach M plus additional adjacent ring + +**Engaged** +Models in enemy's Danger Zone. +Model stops when entering enemy DZ regardless of remaining Movement. + +**Movement Restrictions** +Only Disengage, Change Place, or Reposition allowed in DZ. +Other Manoeuvres trigger Interrupts. + +**Interrupts** +Actions with Interrupt keyword. +Performed during another Model's Activation by spending a Reaction. +Resolved before interrupted action. + +**Two-Weapon Fighting** + +- Use 1-H Melee Weapon, Shield, or Pistol in off-hand +- Off-hand actions: Difficulty +2 +- Gain +1 additional Interrupt + +### Ranged Attacks + +**Overview** +Made with Ranged Weapons against targets in Line of Sight. +Usually Unopposed Simple Checks. + +**Exceptions to Unopposed** +Opposed if target has Shield Rating 2+ or is in Point Blank Range. + +**Engagement Restriction** +Cannot attack when Engaged unless weapon has Pistol Quality. + +**Line of Sight** +Draw line from center of attacker's square to any point of target square. +Line must not cross walls, obstacles, or models. + +**Shooting into Melee** +Each Model target is engaged with: Difficulty +1. +On miss: Randomly determine hit model. + +**Size Modifiers (Attack Difficulty)** + +- Tiny: +3 +- Little: +2 +- Small: +1 +- Average: 0 +- Large: -1 +- Enormous: -2 +- Monstrous: -3 + +**Template Attacks** +All Models in template affected unless specified otherwise. + +--- + +## Wounds & Healing + +### Damage Resolution + +**Dealing Damage** +Opposed Damage vs Toughness check to cause a Wound. +Armor increases Toughness value. + +**Wound Effects** +When Wound caused, draw Injury card with Severity rating and effects. + +- Severity = Obstacle for healing +- Wounds < 0 = Death +- Wounds = 0 = Out-of-play + +**Out-of-Play** + +- Adversaries: Removed from board +- Characters: Must be dragged or abandoned (dire consequences) + +### Soak Mechanic + +Certain actions/armor provide Soak. +Soak cancels Wound before dealt (no Injury drawn). +Using Soak damages armor. + +### Healing + +Healing uses Extended Toughness check. +Usually performed as Endeavour in settlements. + +### Additional Conditions + +**Injuries** +Can become permanent. + +**Disease/Poison** +Work similarly to Injuries with Severity rating. + +--- + +## Conditions & Effects + +### Duration Types + +**Fleeting** +Ends at character's next End Phase. + +**Persistent** +Has X counters. +Reduce by 1 each End Phase. +X = number of tokens/stacks. + +**Ongoing** +Lasts until specific condition met. + +### Common Conditions + +**Staggered (Fleeting)** +Cannot perform Manoeuvres. +If X > 1: Limited actions. + +**Hidden (Ongoing)** +Movement: ½M +Attacks vs ▷Hidden Model: Attacker treated as [*Blinded*] +[▷Hidden attacks] ⇒ Remove *Hidden* @End Phase + +**Stunned (Fleeting)** +Miss next Activation. + +**Surprised (Fleeting)** +Miss next Activation. + +**Bleeding (Persistent)** +Start Phase: Automatic S[X] hit. + +**Prone (Ongoing)** +Melee attacks against: Favour. +Ranged attacks against: Peril. +Remove: Spend Major Action to stand. + +**Engaged (Ongoing)** +Cannot use Ranged actions. +Remove: Leave Danger Zone. + +**Entangled (Ongoing)** +Movement -X. +Remove: Athletics check [X]. + +**Ablaze (Ongoing)** +Start Phase: Automatic S[varies] hit. + +**Broken (Ongoing)** +Move away from enemies. +Cannot use Actions. + +**Blinded (Ongoing)** +All checks: Peril. +Cannot use Ranged actions. + +**Frenzied (Ongoing)** +Attacks ×2. +Attack nearest Model. +Only Melee Strike actions and Advance manoeuvres. +Immune to Psychology. +After removal: Fatigue [X]. + +**Hatred (Ongoing)** +Against specified target: Favour on Opposed checks. +Immunity to Fear of target. + +**Distressed (Ongoing)** +Mental checks: Peril. + +**Drained (Ongoing)** +Physical checks: Peril. + +**Strained (Ongoing)** +All checks: Peril. +Start Phase: Cool check or gain Broken. + +**Animosity (Ongoing)** +Against specified target: Cannot use Teamwork actions. +Social actions: +1 Difficulty. + +**Deafened (Ongoing)** +Immune to Social actions. + +**Weakened (Persistent)** +Strength -[X]. + +**Inspired (Persistent)** +All checks: -[X] Difficulty. + +**Demoralized (Persistent)** +All checks: +[X] Difficulty. + +**Cowed (Persistent)** +Against specified source: Opposed checks +[X] Difficulty. + +--- + +## Magic Systems + +### Arcane Magic + +**Casting Procedure** +Extended Check using Magic Pool. +Magic Pool = number of dice equal to Mag attribute. + +**Obstacle** +Casting Number of spell. + +**Miscasts** +Count total 1s rolled across all attempts = Miscast Number. + +**Miscast Severity** + +- Miscast Number = Mag: Minor Miscast +- Miscast Number > Mag: Major Miscast +- Miscast Number ≥ Mag×2: Catastrophic Miscast + +### Divine Magic + +Handled as Manoeuvres. +Specific mechanics vary by deity and prayer. + +--- + +## Keywords & Synergies + +Keywords signify synergies and antipodes. +Multiple occurrences of same keyword usually beneficial for cost or outcome. +Used throughout Activities, Traits, Equipment, and Effects. + +--- + +_End of Rules Reference Document_ diff --git a/content/awq/articles/rules.mdoc b/content/awq/articles/rules.mdoc new file mode 100644 index 0000000..0b25ba3 --- /dev/null +++ b/content/awq/articles/rules.mdoc @@ -0,0 +1,16 @@ +--- +title: The Crunch +cover: + showInHeader: false +meta: + publicationDate: 2025-10-19T22:12:00.000Z + status: draft + isFeatured: false + tags: + - how-and-what + - crunch + author: dave-damage +seo: + noIndex: false +--- +General Rules and Game Terms Definitions should come here diff --git a/content/awq/articles/simple.mdoc b/content/awq/articles/simple.mdoc new file mode 100644 index 0000000..1b5644a --- /dev/null +++ b/content/awq/articles/simple.mdoc @@ -0,0 +1,258 @@ +--- +title: Simple Checks +path: rules/general/checks +cover: + showInHeader: false +meta: + publicationDate: 2025-11-06T09:12:00.000Z + status: draft + isFeatured: false + tags: + - crunch + - how-and-what + author: dave-damage +seo: + noIndex: false +--- +## Anatomy + +- Uses a single D6 +- Used when a simple *Yes* or *No* is required +- Mainly used during **Encounters** +- **Result** of roll is compared to the *Obstacle:* + - `Result === 1 [⚀]` => *Bane* + - `Result < Ob.` => *Failure* + - `Result = Ob.` => *Complication* + - `Result > Ob.` => *Success* + - `Result === 6 [⚅]` => *Boon* + +## Favour & Peril + +- **Favoured:** Add an additional die to the roll and take the higher result +- **Perilous:** Add an additional die to the roll and take the lower result + +## Obstacle + +- Always calculate on the basis of a skill or characteristic +- Depends on the check's *Mode* + +**Note** +For Obstacle > 6, *Boon_ requires confirmation by rolling success again + +### Unopposed Checks + +*Unopposed checks* use the following table to calculate *Ob.* + +{% table %} +- RV +- 1 +- 2 +- 3 +- 4 +- 5 +- 6 +- 7 +- 8 +- 9 +- 10 +--- +- **OB.** +- 6+ +- 5+ +- 4+ +- 3+ +- 2+ +- 2+ +- 2+ +- 2+ +- 2+ +- 2+ +{% /table %} + +{% Callout type="option" title="More gradual table" %} +Groups with a greater appetite for granulation my use the following table: + +{% table %} +- RV +- -4 +- -3 +- -2 +- -1 +- 0 +- 1 +- 2 +- 3 +- 4 +- 5 +- 6 +- 7 +- 8 +- 9 +- 10 +--- +- Ob. +- Impossible +- 9 +- 8 +- 7 +- 6 +- 6 +- 5 +- 4 +- 3 +- 2 +- 2/6 +- 2/5 +- 2/4 +- 2/3 +- 2/2 +{% /table %} + +- **Ob. 9+** requires a result of 6, followed by a 6 +- **Ob. 8+** requires a result of 6, followed by a 5 or 6 +- **Ob. 7+** requires a result of 6, followed by a 4,5 or 6 +- **2/x** means that on a *Failure,* the model may re-roll for free and achieve a *Success* (not a *Boon*) using the second Ob. + +Note that this option can slow the game significantly down, and the core rules assume that the simpler table is used +{% /Callout %} + +### Opposed Checks + +- **Instigator (T)** is the model attempting the action (row) +- **Target (T)** is the model targeted by the action +- Determine **TN** by looking for the Instigator's modifed value and the column for the target's value + +{% table %} +- **I/T** +- **1** +- **2** +- **3** +- **4** +- **5** +- **6** +- **7** +- **8** +- **9** +- **10** +--- +- **1** +- 4 +- 4 +- 5 +- 5 +- 6 +- 6 +- 6 +- 6 +- 6 +- 6 +--- +- **2** +- 3 +- 4 +- 4 +- 4 +- 5 +- 5 +- 6 +- 6 +- 6 +- 6 +--- +- **3** +- 2 +- 3 +- 4 +- 4 +- 4 +- 4 +- 5 +- 5 +- 6 +- 6 +--- +- **4** +- 2 +- 3 +- 3 +- 4 +- 4 +- 4 +- 4 +- 4 +- 5 +- 5 +--- +- **5** +- 2 +- 2 +- 3 +- 3 +- 4 +- 4 +- 4 +- 4 +- 4 +- 4 +--- +- **6** +- 2 +- 2 +- 3 +- 3 +- 3 +- 4 +- 4 +- 4 +- 4 +- 4 +--- +- **7** +- 2 +- 2 +- 2 +- 3 +- 3 +- 3 +- 4 +- 4 +- 4 +- 4 +--- +- **8** +- 2 +- 2 +- 2 +- 3 +- 3 +- 3 +- 3 +- 4 +- 4 +- 4 +--- +- **9** +- 2 +- 2 +- 2 +- 2 +- 3 +- 3 +- 3 +- 3 +- 4 +- 4 +--- +- **10** +- 2 +- 2 +- 2 +- 2 +- 3 +- 3 +- 3 +- 3 +- 3 +- 4 +{% /table %} + diff --git a/content/awq/articles/styleguide.md b/content/awq/articles/styleguide.md new file mode 100644 index 0000000..55cc9b6 --- /dev/null +++ b/content/awq/articles/styleguide.md @@ -0,0 +1,694 @@ +--- +title: AWQ Style Guide & Notation Reference +description: Formatting standards, symbols, and notation conventions for Advanced Warhammer Quest documentation +version: 1.1 +date: 2025-10-18 +purpose: Machine-readable reference for consistent rule documentation +--- + +# AWQ Style Guide & Notation Reference + +## Text Formatting Standards + +### Bold Text +**Annotation:** `**bold**` +**Usage:** Major gameplay mechanics and important terms +**Examples:** Momentum, Character, Expedition, Dungeon, Encounter, Party, Magic Pool, Wounds, Stress, Threat + +### Italic Text +**Annotation:** `*italics*` +**Usage:** Individual skills, conditions, check types, and game states +**Examples:** Melee, Poisoned, Basic Check, Out of Action, Engaged, Stunned, Blinded, Hidden + +### Code Text +**Annotation:** `` `code` `` +**Usage:** Dice notation, calculations, and specific values +**Examples:** `2d6+3`, `TN 12`, `3W`, `[Movement]`, `D3`, `D6` + +### Pipes +**Annotation:** `|` +**Usage:** Separates inline information and alternatives +**Examples:** Roll *Defense* | *Dodge* | Choose one option | Another option + +### Double Pipes +**Annotation:** `||` +**Usage:** Logical OR - one or the other, not both +**Examples:** `WP → Career Characteristic || [WP = Career] ⇒ Advance Cost -1` + +### Brackets +**Annotation:** `[optional information]` +**Usage:** Indicate optional elements and situational information +**Examples:** Move up to `[Movement]` and make attack | Gain `[X]` Wounds + +--- + +## Visual Symbols Reference + +### Dice Results + +| Roll Result | Symbol | +|-------------|--------| +| 1 | ⚀ | +| 2 | ⚁ | +| 3 | ⚂ | +| 4 | ⚃ | +| 5 | ⚄ | +| 6 | ⚅ | +| Re-roll | ⧆ | + +### Check Outcomes + +| Outcome | Symbol | +|--------------|--------| +| Bane | ⊗ | +| Failure | ⊖ | +| Complication | ⊜ | +| Success | ⊕ | +| Boon | ⊛ | + +### Check Difficulty + +| Difficulty | Symbol | +|--------------|--------| +| Very Easy | ○ | +| Easy | ◔ | +| Routine | ◑ | +| Challenging | ● | +| Difficult | ∶ | +| Hard | ∵ | +| Very Hard | ∷ | +| Impossible | ∺ | +| Favour | ⇑ | +| Peril | ⇓ | + +### Check Modes + +| Mode | Symbol | +|------------|--------| +| Unopposed | ⥤ | +| Opposed | ⇌ | + +### Enemy Tiers + +| Tier | Symbol | +|----------|--------| +| Minion | ⁎ | +| Elite | ⁑ | +| Champion | ⁂ | +| Nemesis | ⋇ | + +### Skill Ranks + +| Rank | Symbol | +|-----------|--------| +| Untrained | — | +| Trained | ⁎ | +| Expertise | ⁑ | +| Mastery | ⁂ | + +### Action Types + +| Action Type | Symbol | +|--------------|--------| +| Minor Action | ◇ | +| Major Action | ⬡ | +| Reaction | ▽ | + +### Resources + +| Resource | Symbol | +|------------|--------| +| Threat | ✦ | +| Momentum | ✠ | +| Fatigue | ✱ | +| Stress | ❖ | +| Corruption | 🞼 | +| Wounds | ❡ | + +### Area Effects + +| Effect | Symbol | +|---------------|--------| +| Radius | ⌀ | +| Cone | ∢ | +| Line | ⋮ | +| Board Section | ▩ | + +--- + +## Notation Conventions + +### Conditional Notation + +**If/Then Conditions** +``` +[Condition] ⇒ Effect +``` +**Usage:** Express conditional relationships where condition must be true for effect to occur. + +**Examples:** +- `[*Engaged*] ⇒ Cannot use Ranged actions` +- `[Wounds < 0] ⇒ Death` +- `[Rolling 6] ⇒ Roll again for bonus Mark` +- `[Two weapons] ⇒ **Attacks**: +1` + +**Trigger Events** +``` +@Event: Effect +``` +**Usage:** Express effects that occur when specific game events happen. + +**Examples:** +- `@Start Phase: Apply condition effects` +- `@End Phase: Reduce condition tracker by 1` +- `@Entering DZ: Model stops movement` +- `@Successful *Dispel* ⇒ **Magic Pool** +[Rank]` +- `@Combat start ⇒ 1 ▽ → Free attack` +- `@After Initiative ⇒ Move [Rank] positions` +- `@Assisted ally hits ⇒ Free *Melee* vs target` +- `@Enemy forces movement [Push | Drag | Knock back] ⇒ Free *Melee* vs ◁Enemy (before moving)` +- `@First NPC meeting ⇒ **Disposition** +1` +- `@End Round [*Frenzied*] ⇒ *Cool* check: [Success] ⇒ Remove [*Frenzied*]` + +**Requirements/Costs** +``` +Cost → Action/Effect +``` +**Usage:** Express costs or requirements needed to perform action or gain effect. + +**Examples:** +- `1 **Fatigue** [✱] → Additional Minor Action` +- `2 **Momentum** [✠] → Automatic Disengage` +- `Challenging *Cool* check → Recover 1 **Stress**` +- `1 ▽ → Pet: +1 action` +- `1 LP → Cancel **Threat**` + +### Model Role Notation + +**Target (Receiving Action)** +``` +◁ Model +``` +**Usage:** Indicates model receiving action, effect, or being targeted. + +**Examples:** +- `Melee Attack vs ◁Enemy` +- `Damage check vs ◁Target's **Toughness**` +- `Apply condition to ◁Model` +- `◁Attacker: ⇓` +- `◁Listeners: ⇓ on *Intuition*` + +**Instigator (Performing Action)** +``` +▷ Model +``` +**Usage:** Indicates model performing action or originating effect. + +**Examples:** +- `▷Attacker makes WS check` +- `▷Character rolls **Initiative**` +- `▷Caster uses **Magic Pool**` +- `▷Self: Free *Melee* vs target` +- `▷Caster: S3 DMG ⇒ **Magic Pool** +1` + +**Combined Notation** +``` +▷Model: Action ⇌ ◁Model +``` +**Usage:** Express opposed actions clearly showing both parties. + +**Examples:** +- `▷Attacker: *Melee* ⇌ ◁Defender: *Defense*` +- `▷Character: *Charm* ⇌ ◁Target: *Intuition*` +- `▷Model: *Athletics* ⇌ ◁Enemy: WS` + +### Value Placeholders + +**Variable Values** +``` +[X] +``` +**Usage:** Indicates value varies by circumstance, specified elsewhere, or scales. + +**Examples:** +- `**Bleeding** [X]: Automatic S[X] hit` +- `**Entangled**: **Movement** -[X]` +- `**Inspired**: All checks -[X] **Difficulty**` + +**Rank-Based Scaling** +``` +[Rank] +``` +**Usage:** References talent rank for scaling effects. + +**Examples:** +- `**Attacks**: +1/[Rank]` +- `**Miscast Number**: -1/[Rank]` +- `DMG +[Rank]` +- `**Disease Severity**: -1/[Rank]` + +**Characteristic/Stat Reference** +``` +[Characteristic Name] +``` +**Usage:** References model's characteristic or stat value. + +**Examples:** +- `Move up to [Movement]` +- `Roll [Initiative] for turn order` +- `**Magic Pool** = [Mag]` + +### Range Notation + +**Comparison Operators** +``` += (equals) +< (less than) +> (greater than) +≤ (less than or equal) +≥ (greater than or equal) +± (plus or minus, up or down) +``` + +**Examples:** +- `Roll = 1 ⇒ Bane` +- `Roll > Obstacle ⇒ Success` +- `**Miscast Number** ≥ Mag×2 ⇒ Catastrophic Miscast` +- `[CN ≤ 3] ⇒ Does not count toward **Memory Limit**` +- `Adjust position: ±[Rank] in order` + +--- + +## Talent/Ability Notation Patterns + +### Bracket Types for Different Contexts + +**Square Brackets `[X]`:** +- Conditions: `[*Blinded*]`, `[*Hidden*]`, `[*Frenzied*]`, `[*Engaged*]` +- Keywords: `[Urban]`, `[Gunpowder]`, `[Touch]`, `[Chaos]`, `[Blessing]`, `[Psychological]` +- Variable values: `[Rank]`, `[X]` +- Comparisons: `[CN ≤ 3]`, `[X > 1]` +- Target types: `[Origin | Faction | Region]` +- Conditions for effects: `[Off-hand]`, `[Would gain *Stunned*]`, `[Two weapons]` + +**Curly Braces `{X}`:** +- Equipment qualities: `{Brawling}`, `{Undamaging}`, `{Improvised}`, `{Grappling}` +- Special weapon properties + +### Skill/Characteristic References + +**With Rank:** +``` +Skill[Rank Symbol] +``` +Examples: `*Melee*[⁑]`, `*Charm*[⁎]`, `*Endurance*[⁂]` + +**Minimum Value:** +``` +Characteristic: Value+ +``` +Examples: `**Magic**: 2+`, `**Willpower**: 5+`, `**Initiative**: 4+` + +### Per-Rank Scaling +``` +Effect: +X/[Rank] +Effect: -X/[Rank] +``` +Examples: +- `**Attacks**: +1/[Rank]` +- `**Movement**: +1/[Rank]` +- `**Miscast Number**: -1/[Rank]` +- `**Disease Severity**: -1/[Rank]` +- `**Reload**: -1/[Rank]` + +--- + +## Common Effect Patterns + +### Skill Bonus +``` +*Skill*: +X ⇑ +``` +Examples: +- `*Charm*: +1 ⇑` +- `*Perception*: +1 ⇑` + +### Resource Cost to Benefit +``` +X Resource [Symbol] → Effect +``` +Examples: +- `1 ❖ → Cast as ◇` +- `1 LP → Cancel **Threat**` +- `2 ✠ → **Critical Hit**` +- `1 ▽ → Pet: +1 action` +- `1 🞼 → **Magic Pool** +1` + +### Location-Based Effects +``` +[Location Type] ⇒ Effect +``` +Examples: +- `[Urban] ⇒ [*Hidden*] ⇒ **Movement** (no penalty)` +- `[Subterranean] ⇒ [*Hidden*] ⇒ **Movement** (no penalty)` +- `[Wilderness] ⇒ [*Hidden*] ⇒ **Movement** (no penalty)` +- `[Rural] ⇒ [*Hidden*] ⇒ **Movement** (no penalty)` + +### Weapon/Item Quality Effects +``` +[Quality] ⇒ Effect +``` +Examples: +- `[Gunpowder] weapons ⇒ -1 **Reload**/[Rank]` +- `[Touch] spells ⇒ +1 ⇑` +- `[Brawling | Unarmed | Improvised] ⇒ Remove {Undamaging}` +- `[Missile] weapons ⇒ -1 **Reload**/[Rank]` + +### Action Trigger Effects +``` +@Action/Event ⇒ Effect +``` +Examples: +- `@Successful **Dispel Manoeuvre** ⇒ **Magic Pool** +[Rank]` +- `@Successful *Disengage* ⇒ Free *Advance*` +- `@Combat start (before Initiative) ⇒ 1 ▽ → Free attack` +- `@After Initiative determined ⇒ Move [Rank] positions` +- `@Assisted ally hits ⇒ Free *Melee* vs target` +- `@Enemy forces movement [Push | Drag | Knock back] ⇒ Free *Melee* vs ◁Enemy (before moving)` +- `@First NPC meeting ⇒ **Disposition** +1` +- `@Successful **Melee** hit ⇒ 1 ✠ → +[Rank] DMG` +- `@Successful *Defense* ⇒ Recover 1 ❖ | 1 ✱` +- `@*Prepare* ◇ ⇒ **Stress** -1` + +### Conditional State Changes +``` +[State] ⇒ Modified Effect +``` +Examples: +- `[*Broken*] ⇒ +1 **Movement**` +- `[*Blinded*] ⇒ *Perception*: +1 ⇑` +- `[*Frenzied*] @End Round ⇒ *Cool* check: [Success] ⇒ Remove [*Frenzied*]` +- `[Psychological] **Conditions** (▷Self | Adjacent allies)` +- `[*Hatred*] enemies ⇒ Offensive [Blessing]: +[Rank] DMG` + +### Cost Reduction +``` +Effect cost: Original → New +Action: Cost (instead of Original Cost) +``` +Examples: +- `Stand from [*Prone*]: ⬡ → ◇` +- `Command pet attack: ⬡ → ◇` +- `**Attacks** +1 via ✠: Cost 3 (instead of 4)` + +### Immunity/Negation +``` +[Condition/Effect]: Immune +[Quality/Penalty] ⇒ Negated/Removed/0 +``` +Examples: +- `[*Broken*]: Immune` +- `[*Surprised*]: Immune` +- `[Distance | Size] penalties ⇒ 0` +- `**Armor** ⇒ No **Movement** penalty` +- `{Undamaging} ⇒ Removed` +- `[Dim Light | Darkness] ⇒ No penalty` + +### Substitution +``` +[Condition] ⇒ May substitute *Skill A* for *Skill B* +``` +Examples: +- `[Relevant academic knowledge] ⇒ May substitute *Education* for *Int*/*WP* skills` +- `[Intimidate] ⇒ May substitute with **Strength**` + +### Persistent Conditions +``` +**Condition** (Persistent) +Stacks: [X] +``` +Note: Stacks represent both duration and severity. Reduced by 1 each End Phase. + +Examples: +- `**Bleeding** [3]: @Start Phase: S3 hit | @End Phase: -1 Stack` +- `**Persistent**: -1 Stack (min 1)` +- `**Entangled** +[Rank] **Severity**` +- `[Psychological **Persistent**] ⇒ -1 Stack` + +### Automatic Success +``` +Effect: Auto-success +[Condition] ⇒ Automatic +``` +Examples: +- `**Recuperate** (*Stress*) ⇒ Auto-success` +- `Standard doors/locks ⇒ Auto-success (no check)` + +### Multiple Targets/Effects +``` +Effect (▷Self | Allies | Enemies) +``` +Examples: +- `**Conditions** (▷Self | Adjacent allies)` +- `[Blessing] (▷Self | Allies) ⇒ +1 Round duration` +- `[*Charm* to lie] ⇒ ◁Listeners: ⇓ on *Intuition*` + +### Replacement/Instead Of +``` +Original → New +Effect: New (instead of Original) +[Condition] ⇒ Replace with [New Condition] +``` +Examples: +- `[*Stunned*] incoming ⇒ *Endurance* check: [Success] ⇒ [*Staggered*] instead` +- `Command pet attack: ⬡ → ◇` +- `Treat **Terror** as **Fear**` + +### Free Actions +``` +Free Action ++X Free Action (per Y) +Action: 0 cost +``` +Examples: +- `Free *Manage Equipment*` +- `+1 Free *Parry* **Reaction** per **Activation**` +- `Free *Melee* vs target` +- `Free attack (before moving)` +- `@Assisted ally hits ⇒ Free *Melee* vs target` + +### Permanent Effects +``` +Permanent [Condition] +[Condition] (cannot be removed) +[Condition] (Permanent) vs [Target] +``` +Examples: +- `Permanent [*Hatred*] vs chosen [Origin | Faction | Region]` + +### Does Not Count Toward Limits +``` +[Condition] ⇒ Does not count toward [Limit] +[Condition] ⇒ Exempt from [Limit] +``` +Examples: +- `[CN ≤ 2] ⇒ Does not count toward **Memory Limit**` +- `[CN ≤ 3] ⇒ Does not count toward **Memory Limit**` + +### Duration Extension +``` +Effect: +X Round/Turn duration +``` +Examples: +- `[Blessing] (▷Self | Allies) when fighting [*Hatred*] ⇒ +1 Round duration` + +### Enable/Can Use +``` +Can [Action/Spell Type] +Enables [Action/Spell Type] +``` +Examples: +- `Can cast [Blessing] spells` +- `Can use *Skirmish*` + +### Advance/XP Cost Modification +``` +Effect ⇒ **Advance Cost** ±X +Lore Type ⇒ -X **Advance Cost** +``` +Examples: +- `**Cultural Lores** ⇒ -1 **Advance Cost**` +- `[WP = Career] ⇒ **Advance Cost** -1` + +### Character Creation Effects +``` +@Character creation ⇒ Effect +``` +Examples: +- `@Character creation ⇒ Roll **Dooming Table**: [Location | Enemy | Circumstance]` +- `@Death ⇒ Replacement **Advances**: 0/1/4/1/2/3/4 (per match)` + +--- + +## Writing Guidelines + +### Capitalization Rules + +**Always Capitalize:** +- Major game terms: Character, Party, Dungeon, Encounter, Expedition, Settlement, Round, Turn, Phase, Activation +- Model types: Adventurer, Adversary, Minion, Elite, Champion, Nemesis, Caster, Pet, Companion, NPC +- Resources: Momentum, Threat, Fate Points, Luck Points, Stress, Fatigue, Corruption, Wounds, Magic Pool +- Game mechanics: Attacks, Movement, Magic, Initiative, Difficulty, Severity, Disposition, Obedience, Morale, Reload, Miscast Number, Casting Number, Marks +- Locations: Dungeon Level, Board Section, Wilderness, Region, Zone, Danger Zone, DZ +- Important terms: Instigator, Target, Critical Hit, Memory Limit, Advance Cost, Career Characteristic, Encumbrance, Dooming Table +- Specific tables/systems: Dooming Table + +**Never Capitalize:** +- General actions: attack, move, roll, cast +- Conditions (use italics): *engaged*, *prone*, *stunned*, *hidden*, *frenzied*, *bleeding*, *blinded*, *broken* +- Skills (use italics): *melee*, *perception*, *cool*, *charm*, *athletics*, *defense*, *education*, *intuition* +- Check types (use italics): *Basic Check*, *Complex Check*, *Extended Check* +- Manoeuvres (use italics): *Disengage*, *Advance*, *Prepare*, *Assist*, *Dispel*, *Parry* + +### Dice Notation + +**Standard Format:** `XdY+Z` or `DX` +- X = number of dice +- Y = die type (always 6 for AWQ) +- Z = modifier (optional) + +**Examples:** +- `1d6` (single die) +- `2d6` (two dice) +- `1d6+2` (single die plus two) +- `3d6-1` (three dice minus one) +- `D3` (single d3) +- `D6` (single d6) + +### Consistency Requirements + +1. Use established symbols consistently throughout documentation +2. Always provide text alternative after symbol on first use in section +3. Maintain consistent terminology for same concepts +4. Link to definitions on first mention in document +5. Use same notation patterns for similar mechanical structures +6. Bold major game mechanics and resources +7. Italicize skills, conditions, and manoeuvres +8. Use code formatting for dice notation and specific values + +### Accessibility Standards + +1. Symbols enhance but do not replace clear writing +2. Provide text alternatives when needed for clarity +3. Use descriptive language alongside notation +4. Maintain reading flow - notation should clarify, not obscure +5. Consider screen reader compatibility + +--- + +## Notation Examples in Context + +### Simple Action +``` +◇ *Advance*: ▷Model moves up to [Movement] +``` + +### Opposed Check +``` +⬡ **Melee Attack:** ▷Attacker: *Melee* ⇌ ◁Defender: *Defense* +[Success] ⇒ Roll Damage vs ◁Defender's **Toughness** +``` + +### Conditional Effect +``` +**Frenzied** (Ongoing): +- **Attacks** ×2 +- [Nearest enemy in range] ⇒ Must attack that enemy +- @Removal: Gain ✱[X] +``` + +### Extended Process +``` +**Arcane Casting:** +1. ▷Caster: Extended Check using **Magic Pool** ([Mag] dice) +2. @Each roll: Count 1s = **Miscast Number** +3. [**Miscast Number** ≥ Mag×2] ⇒ Catastrophic Miscast +4. [Total **Marks** ≥ **Casting Number**] ⇒ Spell succeeds +``` + +### Resource Expenditure +``` +**Momentum Spending:** +- 1 ✠ → Reduce Check **Difficulty** by 2 +- 2 ✠ → Automatic Disengage +- 4 ✠ → **Attacks** +1 for next action +``` + +### Complex Talent +``` +**Longbeard:** +[Psychological] **Conditions** (▷Self | Adjacent allies): +- **Persistent**: -1 Stack (min 1) +- **Ongoing**: ⇑ removal +``` + +### Reaction Trigger +``` +**Intercept:** +@Ally charged (in Zone) ⇒ ▽: ◁Attacker: ⇓ on attack +``` + +### Multi-Effect Talent +``` +**Holy Hatred:** +vs [*Hatred*] enemies: +- Offensive [Blessing]: +[Rank] DMG +- Friendly [Blessing]: +1 Round duration +``` + +### Characteristic Bonus +``` +**Resolute:** +**Willpower**: +1 Max, Career Characteristic || [Already Career] ⇒ **Advance Cost** -1 +``` + +### Complex Condition Talent +``` +**Unyielding:** +[*Stunned*] incoming ⇒ *Endurance* check: [Success] ⇒ [*Staggered*] instead +``` + +### Free Attack Trigger +``` +**Resolute:** +@Enemy forces movement [Push | Drag | Knock back] ⇒ Free *Melee* vs ◁Enemy (before moving) +``` + +--- + +## Version History + +**v1.1 (2025-10-18)** +- Added Skill Ranks notation (Trained/Expertise/Mastery) +- Added Persistent Condition Stacks concept +- Expanded talent notation patterns significantly +- Added examples for: free actions, permanent effects, immunity, substitution +- Added double pipe (||) for logical OR +- Clarified bold formatting for major game mechanics and resources +- Added comprehensive trigger event patterns (@) +- Added examples for cost reduction, duration extension, and limit exemptions +- Refined model role notation with more examples +- Added patterns for multiple targets and conditional replacements +- Added advance/XP cost modification patterns +- Added character creation effect patterns + +**v1.0 (2025-10-14)** +- Initial style guide creation +- Added conditional notation (⇒, @, →) +- Added model role notation (◁, ▷) +- Established symbol reference tables +- Defined formatting standards + +--- + +*This style guide is a living document and will be updated as notation conventions evolve.* \ No newline at end of file diff --git a/content/awq/articles/styleguide.mdoc b/content/awq/articles/styleguide.mdoc new file mode 100644 index 0000000..1467ccf --- /dev/null +++ b/content/awq/articles/styleguide.mdoc @@ -0,0 +1,17 @@ +--- +title: The Styleguide +cover: + src: /images/covers/awq/articles/styleguide/cover/src.jpg + alt: Black and White Geometric Logo + showInHeader: true +meta: + publicationDate: 2025-10-18T21:21:00.000Z + status: draft + isFeatured: false + tags: + - how-and-what + author: dave-damage +seo: + noIndex: false +--- +Maybe some day, I will write a proper styleguide but today is not the day diff --git a/content/taxonomy/tags/crunch.json b/content/taxonomy/tags/crunch.json new file mode 100644 index 0000000..b0ff0b4 --- /dev/null +++ b/content/taxonomy/tags/crunch.json @@ -0,0 +1,7 @@ +{ + "name": "Crunch", + "icon": { + "discriminant": "glyph", + "value": "§" + } +} diff --git a/public/images/covers/awq/articles/styleguide/cover/src.jpg b/public/images/covers/awq/articles/styleguide/cover/src.jpg new file mode 100644 index 0000000..c7296db Binary files /dev/null and b/public/images/covers/awq/articles/styleguide/cover/src.jpg differ diff --git a/src/app/(site)/awq/[...slug]/page.tsx b/src/app/(site)/awq/[...slug]/page.tsx new file mode 100644 index 0000000..2cd1273 --- /dev/null +++ b/src/app/(site)/awq/[...slug]/page.tsx @@ -0,0 +1,62 @@ +import { Metadata } from 'next'; +import { notFound } from 'next/navigation'; + +import Article from '@/components/Article'; +import { + collectAWQContent, + getAWQContentByPath, +} from '@/lib/readers/awq/collector'; +import generatePageMetaData from '@/lib/next/generatePageMetaData'; +import { getAuthorBySlug } from '@/lib/readers/taxonomy/authors'; +import { getTagBySlug } from '@/lib/readers/taxonomy/tags'; + +export async function generateMetaData({ + params, +}: { + params: Promise<{ slug: string[] }>; +}): Promise { + const { slug } = await params; + console.log(slug); + const article = await getAWQContentByPath(slug.join('/')); + + if (!article) return { title: 'Not Found' }; + + return generatePageMetaData(article); +} + +export async function generateStaticParams() { + const allContent = await collectAWQContent(); + + return allContent.map((item) => ({ + slug: item.fullPath.split('/'), + })); +} + +export default async function AWQPage({ + params, +}: { + params: Promise<{ slug: string[] }>; +}) { + const { slug } = await params; + const breadcrumbs = ['awq', ...slug]; + const path = slug.join('/'); + const article = await getAWQContentByPath(path); + + const author = await getAuthorBySlug(article?.meta.author); + const tags = await Promise.all( + (article?.meta.tags || []).map((slug: string) => getTagBySlug(slug)) + ); + + if (!article) { + notFound(); + } + + return ( +
+ ); +} diff --git a/src/components/Content/Callout/index.tsx b/src/components/Content/Callout/index.tsx index 8196459..258d976 100644 --- a/src/components/Content/Callout/index.tsx +++ b/src/components/Content/Callout/index.tsx @@ -3,7 +3,14 @@ import React from 'react'; import styles from './Callout.module.css'; interface CalloutProps { - type: 'default' | 'example' | 'info' | 'warning' | 'tip' | 'spoiler'; + type: + | 'default' + | 'option' + | 'example' + | 'info' + | 'warning' + | 'tip' + | 'spoiler'; title?: string; children: React.ReactNode; } diff --git a/src/keystatic/components/general/callout.ts b/src/keystatic/components/general/callout.ts index 01533cf..4af5238 100644 --- a/src/keystatic/components/general/callout.ts +++ b/src/keystatic/components/general/callout.ts @@ -15,6 +15,10 @@ const calloutComponent = { label: 'Default', value: 'default', }, + { + label: 'Option', + value: 'option', + }, { label: 'Example', value: 'example', diff --git a/src/lib/readers/awq/collector.ts b/src/lib/readers/awq/collector.ts new file mode 100644 index 0000000..48a004b --- /dev/null +++ b/src/lib/readers/awq/collector.ts @@ -0,0 +1,37 @@ +import { cache } from 'react'; + +import { AWQContent } from '@/lib/types/awq'; +import { getAWQPosts } from '@/lib/readers/awq/posts'; + +type MappedAWQContent = AWQContent & { + slug: string; + type: 'post'; + fullPath: string; +}; + +export const collectAWQContent = cache( + async (): Promise => { + const [posts] = await Promise.all([getAWQPosts()]); + + return [ + ...posts.map((item) => ({ + ...item.entry, + slug: item.slug, + type: 'post' as const, + fullPath: + item.slug === 'index' + ? item.entry.path + : item.entry.path + ? `${item.entry.path}/${item.slug}` + : item.slug, + })), + ]; + } +); + +export const getAWQContentByPath = cache( + async (path: string): Promise => { + const allContent = await collectAWQContent(); + return allContent.find((item) => item.fullPath === path); + } +); diff --git a/src/lib/readers/awq/posts.ts b/src/lib/readers/awq/posts.ts new file mode 100644 index 0000000..39e74fd --- /dev/null +++ b/src/lib/readers/awq/posts.ts @@ -0,0 +1,9 @@ +import { cache, reader } from '@/lib/readers/base'; + +export const getAWQPosts = cache(async () => + reader.collections['awq_posts'].all() +); + +export const getAWQPostsBySlug = cache(async (slug: string) => + reader.collections['awq_posts'].read(slug) +); diff --git a/src/lib/types/awq.ts b/src/lib/types/awq.ts new file mode 100644 index 0000000..bbaa2d8 --- /dev/null +++ b/src/lib/types/awq.ts @@ -0,0 +1,6 @@ +import { Entry } from '@keystatic/core/reader'; +import keystaticConfig from '~/keystatic.config'; + +export type AWQPost = Entry<(typeof keystaticConfig.collections)['awq_posts']>; + +export type AWQContent = AWQPost; diff --git a/src/styles/globals/content.css b/src/styles/globals/content.css index 7391488..cf8b837 100644 --- a/src/styles/globals/content.css +++ b/src/styles/globals/content.css @@ -19,15 +19,15 @@ & + ul, & + ol, & + blockquote { - margin-block: - calc(1em * var(--typo-leading-normal) * var(--vspace-tight)) - calc(1em * var(--typo-leading-normal) * var(--vspace-snug)); + margin-block: calc( + 1em * var(--typo-leading-normal) * var(--vspace-tight) + ) + calc(1em * var(--typo-leading-normal) * var(--vspace-snug)); } & + h2 { - margin-block: - calc(1em * var(--el-h1-line-height) * var(--vspace-snug)) - calc(1em * var(--el-h1-line-height) * var(--vspace-normal)); + margin-block: calc(1em * var(--el-h1-line-height) * var(--vspace-snug)) + calc(1em * var(--el-h1-line-height) * var(--vspace-normal)); } } @@ -48,15 +48,17 @@ & + ul, & + ol, & + blockquote { - margin-block: - calc(1em * var(--typo-leading-normal) * var(--vspace-tight)) - calc(1em * var(--typo-leading-normal) * var(--vspace-snug)); + margin-block: calc( + 1em * var(--typo-leading-normal) * var(--vspace-tight) + ) + calc(1em * var(--typo-leading-normal) * var(--vspace-snug)); } & + h3 { - margin-block: - calc(1em * var(--el-h1-line-height) * var(--vspace-compressed)) - calc(1em * var(--el-h1-line-height) * var(--vspace-snug)); + margin-block: calc( + 1em * var(--el-h1-line-height) * var(--vspace-compressed) + ) + calc(1em * var(--el-h1-line-height) * var(--vspace-snug)); } } @@ -78,8 +80,8 @@ & h4 { margin-block: var(--el-h4-vspace-top) var(--el-h4-vspace-bottom); padding: var(--spacing-tight) var(--spacing-snug); - border-top: var(--size-3 ) solid var(--el-h4-color); - border-bottom: var(--size-3 ) solid var(--el-h4-color); + border-top: var(--size-3) solid var(--el-h4-color); + border-bottom: var(--size-3) solid var(--el-h4-color); font-family: var(--el-h4-font-family), serif; font-size: var(--el-h4-font-size); @@ -103,17 +105,17 @@ &::before, &::after { - content: ""; + content: ''; padding-right: var(--spacing-tight); line-height: 1; } &::before { - content: "❭"; + content: '❭'; } &::after { - content: ""; + content: ''; } } @@ -137,9 +139,10 @@ & + ul, & + ol, & + blockquote { - margin-block: - calc(1em * var(--typo-leading-normal) * var(--vspace-compressed)) - calc(1em * var(--typo-leading-normal) * var(--vspace-snug)); + margin-block: calc( + 1em * var(--typo-leading-normal) * var(--vspace-compressed) + ) + calc(1em * var(--typo-leading-normal) * var(--vspace-snug)); } } @@ -156,7 +159,8 @@ & blockquote { margin-block: var(--el-p-vspace-top) var(--el-p-vspace-bottom); - padding: var(--spacing-snug) 0 var(--spacing-snug) var(--spacing-comfortable); + padding: var(--spacing-snug) 0 var(--spacing-snug) + var(--spacing-comfortable); border-left: var(--size-4) solid var(--color-text-tertiary); font-family: var(--el-blockquote-font-family), serif; @@ -188,7 +192,8 @@ & ul, & ol { - margin-block: var(--el-list-nested-vspace-top) var(--el-list-nested-vspace-bottom); + margin-block: var(--el-list-nested-vspace-top) + var(--el-list-nested-vspace-bottom); } & li { @@ -196,7 +201,8 @@ list-style-position: outside; & li { - margin-block: var(--el-li-nested-vspace-top) var(--el-li-nested-vspace-bottom); + margin-block: var(--el-li-nested-vspace-top) + var(--el-li-nested-vspace-bottom); } } } @@ -257,7 +263,8 @@ padding-left: var(--el-ol-item-padding); &::marker { - content: var(--el-ol-prefix-l1) counter(ol-l1, var(--el-ol-style-l1)) var(--el-ol-suffix-l1); + content: var(--el-ol-prefix-l1) counter(ol-l1, var(--el-ol-style-l1)) + var(--el-ol-suffix-l1); color: var(--el-ol-marker-color-l1); } @@ -270,7 +277,8 @@ margin-left: var(--el-ol-item-indent-l2); &::marker { - content: var(--el-ol-prefix-l2) counter(ol-l2, var(--el-ol-style-l2)) var(--el-ol-suffix-l2); + content: var(--el-ol-prefix-l2) + counter(ol-l2, var(--el-ol-style-l2)) var(--el-ol-suffix-l2); color: var(--el-ol-marker-color-l2); } @@ -283,7 +291,8 @@ counter-increment: ol-l3; &::marker { - content: var(--el-ol-prefix-l3) counter(ol-l3, var(--el-ol-style-l3)) var(--el-ol-suffix-l3); + content: var(--el-ol-prefix-l3) + counter(ol-l3, var(--el-ol-style-l3)) var(--el-ol-suffix-l3); color: var(--el-ol-marker-color-l3); } @@ -296,7 +305,9 @@ counter-increment: ol-l4; &::marker { - content: var(--el-ol-prefix-l4) counter(ol-l4, var(--el-ol-style-l4)) var(--el-ol-suffix-l4); + content: var(--el-ol-prefix-l4) + counter(ol-l4, var(--el-ol-style-l4)) + var(--el-ol-suffix-l4); color: var(--el-ol-marker-color-l4); } } @@ -357,7 +368,7 @@ } } - & hr{ + & hr { position: relative; overflow: visible; @@ -390,8 +401,8 @@ & i { padding: 0.1em 0.2em; font-style: normal; - color: var(--color-text-inverse); - background: var(--color-surface-inverse); + color: var(--color-text-secondary); + background: var(--color-surface-elevated-2); } & strong, @@ -499,11 +510,11 @@ font-style: normal; &::before { - content: "»"; + content: '»'; } &::after { - content: "«"; + content: '«'; } } @@ -513,4 +524,4 @@ color: var(--color-text-secondary); } } -} \ No newline at end of file +} diff --git a/src/styles/globals/elements.css b/src/styles/globals/elements.css index 49babea..1ad5295 100644 --- a/src/styles/globals/elements.css +++ b/src/styles/globals/elements.css @@ -17,7 +17,7 @@ --el-h2-font-family: var(--font-header); --el-h2-font-size: var(--typo-size-5xl); --el-h2-font-weight: var(--typo-weight-black); - --el-h2-letter-spacing: -0.0096em;; + --el-h2-letter-spacing: -0.0096em; --el-h2-line-height: 1.1765; --el-h2-text-transform: uppercase; --el-h2-vspace-base: calc(1em * var(--el-h2-line-height)); @@ -106,8 +106,8 @@ --el-pre-vspace-bottom: calc(var(--el-pre-vspace-base) * var(--vspace-normal)); /* === CODE VARIABLES === */ - --el-code-color: var(--color-text-inverse); - --el-code-background: var(--color-surface-inverse); + --el-code-color: var(--color-surface-elevated-1); + --el-code-background: var(--color-text-primary); --el-code-font-family: var(--font-mono); --el-code-font-size: var(--typo-size-sm); @@ -247,7 +247,7 @@ --hr-height: var(--size-3); --hr-margin: var(--spacing-relaxed) 0; --hr-color: var(--color-text-tertiary); - --hr-symbol-content: "▼"; + --hr-symbol-content: '▼'; --hr-symbol-size: var(--typo-size-4xl); --hr-symbol-space: 0 0.25em; --hr-symbol-line-height: var(--typo-leading-compressed); @@ -262,8 +262,8 @@ --el-summary-font-weight: var(--typo-weight-black); --el-summary-text-transform: uppercase; --el-summary-line-height: var(--typo-leading-normal); - --el-summary-marker-symbol-closed: "▾"; - --el-summary-marker-symbol-open: "▴"; + --el-summary-marker-symbol-closed: '▾'; + --el-summary-marker-symbol-open: '▴'; --el-summary-marker-symbol-transition-open: none; /* === DETAILS === */ @@ -274,13 +274,10 @@ --el-details-padding: var(--spacing-snug); --el-details-border: var(--size-1) solid var(--color-text-secondary); - /* === Header === */; + /* === Header === */ --el-header-font-size: var(--typo-size-responsive); --el-header-line-height: var(--typo-leading-snug); --el-header-paddingY: var(--spacing-snug); - --el-header-height: calc( - (var(--typo-size-responsive) * var(--el-header-line-height)) + - (var(--el-header-paddingY) * 2) - ); + --el-header-height: calc((var(--typo-size-responsive) * var(--el-header-line-height)) + (var(--el-header-paddingY) * 2)); } -} \ No newline at end of file +}