diff --git a/src/components/info/banners/app_banner.tsx b/src/components/info/banners/app_banner.tsx
index 59b5b771a..44606fb2c 100644
--- a/src/components/info/banners/app_banner.tsx
+++ b/src/components/info/banners/app_banner.tsx
@@ -3,7 +3,7 @@ import { useTheme } from 'context/useTheme'
const AppBanner = () => {
const { isDark } = useTheme()
- const name = '2023-january-faqs-and-ghb'
+ const name = '2023-gloomspite-gitz-battletome-release'
return (
{
variant={isDark ? `info` : `info`}
>
- NEW: January 2023 FAQs have been added, as well as the new General's Handbook
- (2022-23 Season 2)!
+ NEW: Gloomspite Gitz battletome is live!
)
diff --git a/src/components/routes/Home.tsx b/src/components/routes/Home.tsx
index 4e2643980..3cf6c691f 100644
--- a/src/components/routes/Home.tsx
+++ b/src/components/routes/Home.tsx
@@ -7,7 +7,7 @@ import { lazy, Suspense, useEffect } from 'react'
import { logPageView } from 'utils/analytics'
const AlliedArmies = lazy(() => import('components/input/ally_armies'))
-// const AppBanner = lazy(() => import('components/info/banners/app_banner'))
+const AppBanner = lazy(() => import('components/info/banners/app_banner'))
const ArmyBuilder = lazy(() => import('components/input/army_builder'))
const FooterComponent = lazy(() => import('components/page/footer'))
const LoadedArmyHeader = lazy(() => import('components/input/savedArmies/loaded_army_header'))
@@ -34,9 +34,9 @@ const Home = () => {
- {/*
>}>
+ >}>
- */}
+
>}>
diff --git a/src/factions/gloomspite_gitz/artifacts.ts b/src/factions/gloomspite_gitz/artifacts.ts
index 06fcdca38..7bf7e6d97 100644
--- a/src/factions/gloomspite_gitz/artifacts.ts
+++ b/src/factions/gloomspite_gitz/artifacts.ts
@@ -1,53 +1,24 @@
import { tagAs } from 'factions/metatagger'
-import meta_rule_sources from 'meta/rule_sources'
import {
- BATTLESHOCK_PHASE,
COMBAT_PHASE,
DURING_GAME,
+ END_OF_COMBAT_PHASE,
HERO_PHASE,
- MOVEMENT_PHASE,
SAVES_PHASE,
SHOOTING_PHASE,
START_OF_COMBAT_PHASE,
- START_OF_SHOOTING_PHASE,
+ START_OF_HERO_PHASE,
+ WARDS_PHASE,
WOUND_ALLOCATION_PHASE,
} from 'types/phases'
-import rule_sources from './rule_sources'
const Artifacts = {
- 'Spiteful Prodder': {
- effects: [
- {
- name: `Spiteful Prodder`,
- desc: `At the start of your shooting phase, pick 1 enemy unit within 18" of the bearer and visible to them. Then roll 1 dice for each friendly GROT unit wholly within 12" of the bearer that has at least 5 models. For each 5+ that enemy unit suffers D3 mortal wounds.`,
- when: [START_OF_SHOOTING_PHASE],
- },
- ],
- },
"Backstabber's Blade": {
effects: [
{
name: `Backstabber's Blade`,
- desc: `Pick one of the bearer's melee weapons. If the unmodified hit roll for an attack made with that weapon is 6, the save roll for that attack automatically fails (do not roll the dice).`,
- when: [COMBAT_PHASE],
- },
- ],
- },
- 'Loonstone Talisman': {
- effects: [
- {
- name: `Loonstone Talisman`,
- desc: `Roll a D6 each time you allocate a mortal wound to the bearer. On a 5+ that mortal wound is negated.`,
- when: [WOUND_ALLOCATION_PHASE],
- },
- ],
- },
- 'The Pipes of Doom': {
- effects: [
- {
- name: `The Pipes of Doom`,
- desc: `Subtract 1 from the Bravery characteristic of enemy units while they are within 12" of the bearer.`,
- when: [BATTLESHOCK_PHASE],
+ desc: `Once per battle, at the end of the combat phase, you can say the bearer will use the Backstabber's Blade. If you do so, pick 1 enemy unit within 1" of the bearer and roll a dice. On a 2+, that unit suffers D6 mortal wounds that cannot be negated.`,
+ when: [END_OF_COMBAT_PHASE],
},
],
},
@@ -55,7 +26,7 @@ const Artifacts = {
effects: [
{
name: `The Clammy Cowl`,
- desc: `Subtract 1 from hit rolls for attacks that target the bearer.`,
+ desc: `Subtract 1 from hit rolls for attacks that target the bearer.`, // updated for 2023
when: [DURING_GAME],
},
],
@@ -64,17 +35,17 @@ const Artifacts = {
effects: [
{
name: `Leering Gitshield`,
- desc: `If the unmodified save roll for an attack made with a melee weapon that targets the bearer is 6, the attacking unit suffers 1 mortal wound after all of its attacks have been resolved.`,
- when: [SAVES_PHASE],
+ desc: `Unmodified hit rolls of 1 for attacks that target the bearer cause 1 mortal wound to the attacking unit after all of that unit's attacks have been resolved. In addition, if the bearer is slain by an attack made by an enemy unit, subtract 1 from hit rolls for attacks made by that unit until the end of the battle.`,
+ when: [DURING_GAME],
},
],
},
- 'Spiteshroom Familiar': {
+ 'Loonstone Teefcaps': {
effects: [
{
- name: `Spiteshroom Familiar`,
- desc: `Subtract 1 from hit rolls for attacks made by enemy models while they are within 3" of the bearer.`,
- when: [DURING_GAME],
+ name: `Loonstone Teefcaps`,
+ desc: `SQUIG HERO with mount or companion only. Improve the Rend characteristic of the bearer's Fang-filled Gob, Massive Fang-filled Gob or Huge Fang-filled Gobs by 1.`,
+ when: [COMBAT_PHASE],
},
],
},
@@ -82,7 +53,7 @@ const Artifacts = {
effects: [
{
name: `Moonface Mommet`,
- desc: `At the start of the combat phase, pick 1 enemy unit within 12" of the bearer. Subtract 1 from save rolls for attacks that target that unit until the end of the phase.`,
+ desc: `WIZARD only. At the start of the combat phase, pick 1 enemy unit within 12" of the bearer. Subtract 1 from save rolls for attacks that target that unit until the end of the phase.`,
when: [START_OF_COMBAT_PHASE],
},
{
@@ -96,7 +67,7 @@ const Artifacts = {
effects: [
{
name: `Staff of Sneaky Stealin'`,
- desc: `Add 1 to casting and unbinding rolls for the bearer for each enemy WIZARD within 12" of the bearer. In addition, add 1 to casting and unbinding rolls for the bearer for each enemy HERO with an artifact of power within 12" of the bearer.`,
+ desc: `WIZARD only. Add 1 to casting rolls for the bearer. Each time the bearer unbinds a spell, add 1 to casting rolls for the bearer for the rest of the battle.`,
when: [HERO_PHASE],
},
],
@@ -105,7 +76,9 @@ const Artifacts = {
effects: [
{
name: `Totem of the Spider God`,
- desc: `While a friendly SPIDERFANG unit is wholly within 12" of the bearer, its Spider Venom ability causes mortal wounds on an unmodified hit roll of 5+ instead of 6.`,
+ desc: `While other friendly SPIDERFANG units are wholly within 12" of the bearer, add 1 to the number of mortal wounds caused by the Spider Venom ability of those units if the unmodified hit roll was 6.
+
+ Designer's Note: If a unit is affected by the Light of the Bad Moon, this artefact of power does not affect unmodified hit rolls of 5; it only affects unmodified hit rolls of 6.`,
when: [COMBAT_PHASE],
},
],
@@ -114,105 +87,45 @@ const Artifacts = {
effects: [
{
name: `Headdress of Many Eyes`,
- desc: `Subtract 1 from hit rolls for attacks that target the bearer.`,
+ desc: `SCUTTLEBOSS only. Only unmodified hit rolls of 5 or 6 successfully score a hit for attacks that target the bearer.`,
when: [SHOOTING_PHASE, COMBAT_PHASE],
},
],
},
- 'The Black Fang': {
- effects: [
- {
- name: `The Black Fang`,
- desc: `Pick one of the bearer's melee weapons. If the unmodified hit roll for an attack made with that weapon is 6, that attack inflicts D3 mortal wounds on the target and the attack sequence ends (do not make a wound or save roll). If the weapon already inflicts mortal wounds on a roll of 6, add D3 to the number of mortal wounds it inflicts instead.`,
- when: [COMBAT_PHASE],
- },
- ],
- },
"Nibbla's 'Itty Ring": {
effects: [
{
name: `Nibbla's 'Itty Ring`,
- desc: `Once per battle, at the start of a combat phase, you can pick 1 enemy unit within 3" of the bearer and roll a D6. On a 1 there is no effect. On a 2-5 that enemy unit suffers D3 mortal wounds. On a 6, that enemy unit suffer D6 mortal wounds.`,
- when: [START_OF_COMBAT_PHASE],
- },
- ],
- },
- Earskuttla: {
- effects: [
- {
- name: `Earskuttla`,
- desc: `Once per battle, at the start of a combat phase, you can pick 1 enemy WIZARD within 3", and roll a D6. On a 2+, that enemy WIZARD suffers D3 mortal wounds. In addition, for the rest of the battle, subtract 1 from casting and unbinding rolls for that WIZARD for each mortal wound that was inflicted.`,
- when: [START_OF_COMBAT_PHASE],
- },
- ],
- },
- 'Web Strung Cloak': {
- effects: [
- {
- name: `Web Strung Cloak`,
- desc: `Enemy units cannot retreat if they are within 3" of the bearer.`,
- when: [MOVEMENT_PHASE],
- },
- ],
- },
- 'Shiny Wotnot': {
- effects: [
- {
- name: `Shiny Wotnot`,
- desc: `Roll a D6 each time a mortal wound caused by a spell is allocated to this model. On a 6+ the mortal wound is allocated to the caster of the spell instead of the bearer. If the mortal wound was caused by an endless spell, on a 6+, that mortal wound is negated and that endless spell is dispelled (any other mortal wounds it could have caused are negated).`,
- when: [HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
+ desc: `WIZARD only. Once per battle, at the start of your hero phase, you can say the bearer will call upon the ring's power. If you do so, roll a dice and add the result to casting rolls made by the bearer until the end of the phase.`,
+ when: [START_OF_HERO_PHASE],
},
],
},
+
'Glowy Howzit': {
effects: [
{
name: `Glowy Howzit`,
- desc: `Roll a D6 each time you allocate a wound or mortal wound to the bearer. On a 4+ that wound is negated. On a 1, the bearer eats the Glowy Howzit and it cannot be used again for the rest of the battle.`,
- when: [WOUND_ALLOCATION_PHASE],
+ desc: `The bearer has a ward of 4+. At the end of each phase, if the bearer was allocated any wounds in that phase that were not negated, roll a dice. On a 1, the bearer eats the Glowy Howzit and it cannot be used again for the rest of the battle.`,
+ when: [WARDS_PHASE, DURING_GAME],
},
],
},
- 'Pet Gribbly': {
- effects: [
- {
- name: `Pet Gribbly`,
- desc: `If an enemy unit attacks the bearer in the combat phase before the bearer has been selected to fight in that combat phase, then the enemy unit suffers D3 mortal wounds after all of its attacks have been resolved.`,
- when: [COMBAT_PHASE],
- },
- ],
- },
- // Jaws of Mork
- 'Syari Screamersquig': {
+ 'Speaky-skull Fetish': {
effects: [
{
- name: `Syari Screamersquig`,
- desc: `At the start of the combat phase, you can pick 1 enemy HERO within 3" of the bearer. If you do so, until your next hero phase, add 1 to hit rolls for attacks made with melee weapons by the bearer that target that HERO.`,
- when: [START_OF_COMBAT_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
+ name: `Speaky-skull Fetish`,
+ desc: `At the start of your hero phase roll 3 dice. For each 6, you receive 1 extra command point. In addition, the bearer can issue the same command up to 2 times in the same phase (a command point is spent each time a command is issued by the bearer as normal).`,
+ when: [START_OF_HERO_PHASE],
},
],
},
- // Glogg's Megamob
- 'Aetherquartz-studded Hide': {
+ 'Pet Gribbly': {
effects: [
{
- name: `Aetherquartz-studded Hide`,
- desc: `Roll a D6 each time you allocate a mortal wound to the bearer. On a 5+, that mortal wound is ignored.`,
+ name: `Pet Gribbly`,
+ desc: `Add 1 to the bearer's Wounds characteristic. In addition, each time a wound is allocated to the bearer and not negated, roll a dice. On a 1, the Pet Gribbly is squished. When the Pet Gribbly is squished, the bearer becomes enraged for the rest of the battle. Add 1 to hit rolls and wound rolls for attacks made by the bearer while they are enraged.`,
when: [WOUND_ALLOCATION_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
- },
- ],
- },
- // Grimscuttle Tribes
- 'Shyishan Spider-sigils': {
- effects: [
- {
- name: `Shyishan Spider-sigils`,
- desc: `Subtract 1 from the Bravery characteristic of enemy units while they are within 6" of the bearer. In addition, add 1 to the Bravery characteristic of a friendly GRIMSCUTTLE SPIDERFANG units while they are wholly within 12" of the bearer.`,
- when: [BATTLESHOCK_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
},
],
},
diff --git a/src/factions/gloomspite_gitz/battalions.ts b/src/factions/gloomspite_gitz/battalions.ts
new file mode 100644
index 000000000..e02da92b7
--- /dev/null
+++ b/src/factions/gloomspite_gitz/battalions.ts
@@ -0,0 +1,10 @@
+import { tagAs } from 'factions/metatagger'
+import { MagnificentBattalionEffect } from 'generic_rules/core_battalions'
+
+const Battalions = {
+ 'Troggherd Heavies': {
+ effects: [MagnificentBattalionEffect],
+ },
+}
+
+export default tagAs(Battalions, 'battalion')
diff --git a/src/factions/gloomspite_gitz/battle_traits.ts b/src/factions/gloomspite_gitz/battle_traits.ts
index 1615ca3de..b119fe89f 100644
--- a/src/factions/gloomspite_gitz/battle_traits.ts
+++ b/src/factions/gloomspite_gitz/battle_traits.ts
@@ -1,65 +1,108 @@
import { tagAs } from 'factions/metatagger'
import { GLOOMSPITE_GITZ } from 'meta/factions'
import {
+ BATTLESHOCK_PHASE,
+ CHARGE_PHASE,
COMBAT_PHASE,
- HERO_PHASE,
+ END_OF_CHARGE_PHASE,
SAVES_PHASE,
- START_OF_CHARGE_PHASE,
START_OF_HERO_PHASE,
START_OF_ROUND,
TURN_ONE_START_OF_ROUND,
} from 'types/phases'
-import rule_sources from './rule_sources'
const BattleTraits = {
[GLOOMSPITE_GITZ]: {
effects: [
{
name: `The Bad Moon Setup`,
- desc: `At the start of the first battle round, before determining who has the first turn, the player commanding the GLOOMSPITE GITZ army must pick one corner of the battlefield as the starting location of the Bad Moon. If both players have GLOOMSPITE GITZ armies, then they must roll off and the winner picks the starting location. The Bad Moon is located at the edge of the battlefield in that corner.`,
+ desc: `If any of the armies in a battle are Gloomspite Gitz armies, in the first battle round, after players have received their starting command points but before the start of the first turn, the player commanding the Gloomspite Gitz army picks 1 large quarter of the battlefield (core rules 28.2.8) as the Bad Moon's starting location. If more than 1 player in the battle is commanding a Gloomspite Gitz army, then those players roll off and the winner picks which large quarter is the Bad Moon's starting location.`,
when: [TURN_ONE_START_OF_ROUND],
},
{
name: `The Bad Moon Movement`,
- desc: `Starting from the second battle round, before determining who has the first turn, the player commanding the GLOOMSPITE GITZ army must roll a D6. On a 1 the Bad Moon does not move. On a 2-5 it makes 1 move. On a 6 it makes 2 moves.`,
+ desc: `During the battle, the Bad Moon will move and its location will change. The Bad Moon starts in a large quarter of the battlefield. The first time it moves, it moves to the centre of the battlefield. Then it moves to the large quarter diagonally opposite the large quarter in which it started. Finally, it moves off the battlefield.
+
+ At the start of the second and each subsequent battle round, before the priority roll, the player commanding the Gloomspite Gitz army rolls a dice. If more than 1 player in the battle is commanding a Gloomspite Gitz army, then those players roll off and the winner rolls the dice. On a 1-3, the Bad Moon does not move and instead stays at its current location. On a 4+, it moves to the next location. When the Bad Moon moves off the battlefield, it has no further effect on the battle.
+
+ The location of the Bad Moon determines which GLOOMSPITE GITZ units are affected by the Light of the Bad Moon. While the Bad Moon is located in a large quarter of the battlefield, all GLOOMSPITE GITZ units wholly within the same large quarter are affected. While it is located in the centre of the battlefield, all GLOOMSPITE GITZ units on the battlefield are affected.`,
when: [START_OF_ROUND],
},
{
- name: `Light of the Bad Moon - Fangz of the Bad Moon`,
- desc: `If your army is a GLOOMSPITE GITZ army, at the start of your hero phase you can pick 1 enemy unit and roll a dice. If the roll is equal to or less than the number of models in that unit affected by the light of the Bad Moon, that unit suffers D3 mortal wounds.`,
+ name: `Light of the Bad Moon - Lunar Squigs`,
+ desc: `While GLOOMSPITE GITZ SQUIG units are affected by the Light of the Bad Moon they can attempt a charge even if they ran in the same turn.`,
+ when: [CHARGE_PHASE],
+ },
+ {
+ name: `Light of the Bad Moon - Frothing Zealots`,
+ desc: `If a friendly MOONCLAN unit receives the rally command while it is affected by the Light of the Bad Moon, you can return 1 slain model to the unit that receives the command for each 4+ instead of each 6.`,
+ when: [BATTLESHOCK_PHASE],
+ },
+ {
+ name: `Light of the Bad Moon - Spiderfang Venom`,
+ desc: `While SPIDERFANG units are affected by the Light of the Bad Moon, their Spider Venom ability causes mortal wounds on an unmodified roll of 5+ instead of a 6.`,
+ when: [COMBAT_PHASE],
+ },
+ {
+ name: `Light of the Bad Moon - Moonlit Hide`,
+ desc: `Add 1 to save rolls for attacks that target GLOOMSPITE GITZ TROGGOTH units while they are affected by the Light of the Bad Moon.`,
+ when: [SAVES_PHASE],
+ },
+
+ // Battle Tactics
+ {
+ name: `Battle Tactic - Follow da Moon`,
+ desc: `You cannot pick this tactic in the first battle round. You complete this tactic if at the end of this turn every friendly GLOOMSPITE GITZ unit on the battlefield is affected by the Light of the Bad Moon and you control more objectives than your opponent.`,
when: [START_OF_HERO_PHASE],
},
{
- name: `Light of the Bad Moon - Bad Moon Magic`,
- desc: `Add 1 to casting rolls for WIZARDS affected by the light of the Bad Moon if they have the GLOOMSPITE GITZ keyword, and subtract 1 from casting rolls for WIZARDS affected by the light of the Bad Moon that do not have the GLOOMSPITE GITZ keyword.`,
- when: [HERO_PHASE],
+ name: `Battle Tactic - Glory Grabbers`,
+ desc: `Pick 1 objective controlled by your opponent. You complete this tactic if at the end of this turn you control that objective and a friendly GLOOMSPITE GITZ unit that was added to your army as a replacement unit using the Bad Moon Loonshrine's Moonclan Lairs ability is contesting it.`,
+ when: [START_OF_HERO_PHASE],
},
{
- name: `Light of the Bad Moon - Loonatic Inspiration`,
- desc: `If your general has the GLOOMSPITE GITZ keyword and is affected by the light of the Bad Moon at the start of your hero phase, you receive 1 extra command point.`,
+ name: `Battle Tactic - Venomous Assault`,
+ desc: `You complete this tactic if at least 8 mortal wounds were caused by the Spider Venom ability of friendly SPIDERFANG units during this turn and not negated.`,
when: [START_OF_HERO_PHASE],
},
{
- name: `Light of the Bad Moon - Lunar Squigs`,
- desc: `If all of the models in a friendly SQUIG unit are affected by the light of the Bad Moon at the start of your charge phase, that unit can attempt to charge even if it ran in the same turn.`,
- when: [START_OF_CHARGE_PHASE],
+ name: `Battle Tactic - Stab 'Em in the Dark`,
+ desc: `Pick 1 enemy unit on the battlefield. You complete this tactic if that unit was destroyed by an attack made by a friendly GLOOMSPITE GITZ unit during this turn while it was not affected by the Light of the Bad Moon.`,
+ when: [START_OF_HERO_PHASE],
},
{
- name: `Light of the Bad Moon - Frothing Zealots`,
- desc: `If a friendly MOONCLAN unit receives the Rally command while it is affected by the light of the Bad Moon, you can return 1 slain model to that unit for each 4+ instead of each 6.`,
+ name: `Battle Tactic - Moonlight Raid`,
+ desc: `Pick 1 objective controlled by your opponent. You complete this tactic if at the end of this turn you control that objective and every friendly GLOOMSPITE GITZ unit that is contesting it is affected by the Light of the Bad Moon.`,
when: [START_OF_HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2022],
},
{
- name: `Light of the Bad Moon - Spiderfang Venom`,
- desc: `While a SPIDERFANG model is affected by the light of the Bad Moon, its Spider Venom ability causes mortal wounds on an unmodified hit roll of 5+ instead of 6.`,
- when: [COMBAT_PHASE],
+ name: `Battle Tactic - You Ain't So Big`,
+ desc: `Pick 1 enemy MONSTER on the battlefield. You complete this tactic if that MONSTER was slain by an attack made by a friendly GLOOMSPITE GITZ TROGGOTH unit during this turn.`,
+ when: [START_OF_HERO_PHASE],
},
+
+ // Monstrous Rampages
{
- name: `Light of the Bad Moon - Moonlit Hide`,
- desc: `Add 1 to save rolls for friendly GLOOMSPITE GITZ TROGGOTH units while they are affected by the light of the Bad Moon.`,
- when: [SAVES_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2022],
+ name: `Monstrous Rampage - Ensnaring Webbing`,
+ desc: `Only an ARACHNAROK unit can carry out this monstrous rampage. Pick 1 enemy HERO within 3" of this ARACHNAROK unit that is not a MONSTER and roll a dice. If the score equals or exceeds that HERO's Wounds characteristic, that hero cannot fight in the following combat phase.`,
+ when: [END_OF_CHARGE_PHASE],
+ },
+ {
+ name: `Monstrous Rampage - Giant Boing!`,
+ desc: `Only a MANGLER SQUIGS unit that has made a charge move this turn can carry out this monstrous rampage. This MANGLER SQUIGS unit can make a 3D6" move but it must finish that move within 3" of any enemy units.`,
+ when: [END_OF_CHARGE_PHASE],
+ },
+
+ // Heroic Actions
+ {
+ name: `Heroic Action - Beckon the Loonatic Hordes`,
+ desc: `Only a MOONCLAN HERO affected by the Light of the Bad Moon can carry out this heroic action. This HERO can immediately issue the Rally command up to 3 times without any command points being spent. Each unit that receives the command must be a different friendly MOONCLAN unit.`,
+ when: [START_OF_HERO_PHASE],
+ },
+ {
+ name: `Heroic Action - Wade and Smash`,
+ desc: `Only a DANKHOLD TROGGBOSS within 3" of any enemy units can carry out this heroic action. This DANKHOLD TROGGBOSS can make a 6" move but must finish the move within 3" of any enemy units. At the end of that move, roll a dice for each enemy unit within 1" of this DANKHOLD TROGGBOSS. On a 2+, that unit suffers D3 mortal wounds.`,
+ when: [START_OF_HERO_PHASE],
},
],
},
diff --git a/src/factions/gloomspite_gitz/command_abilities.ts b/src/factions/gloomspite_gitz/command_abilities.ts
index 9387873e1..f8bcc5e27 100644
--- a/src/factions/gloomspite_gitz/command_abilities.ts
+++ b/src/factions/gloomspite_gitz/command_abilities.ts
@@ -1,107 +1,15 @@
import { tagAs } from 'factions/metatagger'
-import meta_rule_sources from 'meta/rule_sources'
-import {
- CHARGE_PHASE,
- COMBAT_PHASE,
- DURING_GAME,
- HERO_PHASE,
- START_OF_CHARGE_PHASE,
- START_OF_COMBAT_PHASE,
- START_OF_MOVEMENT_PHASE,
-} from 'types/phases'
-import rule_sources from './rule_sources'
+import { COMBAT_PHASE } from 'types/phases'
const CommandAbilities = {
- // Unit command abilities
"I'm Da Boss, Now Stab 'Em Good!": {
effects: [
{
name: `I'm Da Boss, Now Stab 'Em Good!`,
- desc: `You can use this command ability at the start of the combat phase. If you do so, pick 1 friendly MOONCLAN GROT unit wholly within 12" of a friendly model with this command ability, or wholly within 24" of a model with this command ability that is your general. If the unmodified wound roll for an attack made by that unit in that phase is 6, that attack inflicts 1 mortal wound on the target in addition to any normal damage. The same unit cannot be picked to be affected by this command ability more than once per phase.`,
- when: [START_OF_COMBAT_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
- },
- ],
- },
- 'Bite Da Moon!': {
- effects: [
- {
- name: `Bite Da Moon!`,
- desc: `You can use this command ability at the start of a combat phase. If you do so, pick 1 friendly model with this command ability. In that combat phase you can add 1 to wound rolls for friendly SQUIG units while they are wholly within 18" of that model.`,
- when: [START_OF_COMBAT_PHASE],
- },
- ],
- },
- "Let's Get Bouncing!": {
- effects: [
- {
- name: `Let's Get Bouncing!`,
- desc: `You can use this command ability at the start of your movement phase. If you do so, pick 1 friendly model with this command ability. All friendly SQUIG units wholly within 12" of that model at the start of that phase can move an extra 3" if they make a move in that phase. A unit cannot benefit from this command ability more than once per movement phase.`,
- when: [START_OF_MOVEMENT_PHASE],
- },
- ],
- },
- 'Ride Em All Down': {
- effects: [
- {
- name: `Ride Em All Down`,
- desc: `You can use this command ability at the start of your charge phase. If you do so, pick 1 friendly SPIDERFANG GROT unit wholly within 18" of a friendly model with this command ability. You can reroll charge rolls for that unit in that charge phase. In addition, you can reroll hit rolls for attacks made with that unit's Crooked Spears in the following combat phase.`,
- when: [START_OF_CHARGE_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
- },
- {
- name: `Ride Em All Down`,
- desc: `If active, you can reroll charge rolls for that unit in that charge phase.`,
- when: [CHARGE_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
- },
- {
- name: `Ride Em All Down`,
- desc: `If active, you can reroll hit rolls for attacks made with that unit's Crooked Spears in the following combat phase.`,
+ desc: `When this unit issues the All-out Attack command to a friendly Moonclan unit in the combat phase, until the end of that phase, if the unmodified wound roll for an attack made by that Moonclan unit is 6, the attack causes 1 mortal wound to the target in addition to any damage it inflicts.
+
+ Designer's Note: This effect is in addition to the normal effect of All-out Attack.`,
when: [COMBAT_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
- },
- ],
- },
- 'Instinctive Leader': {
- effects: [
- {
- name: `Instinctive Leader`,
- desc: `Use this command ability at the start of the combat phase. If you do so, pick 1 friendly DANKHOLD TROGGOTH HERO with this command ability. Until the end of that phase, you can reroll hit rolls of 1 for attacks made by friendly TROGGOTH units wholly within 18" of that model when they attack.`,
- when: [START_OF_COMBAT_PHASE],
- },
- ],
- },
- // Jaws of Mork
- "Get Some Loonshine Down 'Em!": {
- effects: [
- {
- name: `"Get Some Loonshine Down 'Em!"`,
- desc: `You can use this command ability at the start of any phase. If you do so, pick 1 friendly JAWS OF MORK MANGLER SQUIGS model. Until the end of that phase, use the top row on that model's damage table, regardless of how many wounds it has suffered.`,
- when: [DURING_GAME],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
- },
- ],
- },
- // Glogg's Megamob
- 'Oblivious to Sorcery': {
- effects: [
- {
- name: `Oblivious to Sorcery`,
- desc: `You can use this command ability in your hero phase. If you do so, pick 1 friendly GLOGG'S MEGAMOB FELLWATER TROGGOTH OR GLOGG'S MEGAMOB ROCKGUT TROGGOTH unit wholly within 12" of a friendly GLOGG'S MEGAMOB DANKHOLD HERO. Until your next hero phase, each time that unit is affected by a spell or endless spell, you can roll a D6. If you do so, on a 4+, ignore the effects of that spell or endless spell on that unit.`,
- when: [HERO_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
- },
- ],
- },
- // Grimscuttle Tribes
- 'Masters of Feigned Flight': {
- effects: [
- {
- name: `Masters of Feigned Flight`,
- desc: `You can use this command ability at the start of your movement phase. If you do so, pick 1 friendly GRIMSCUTTLE SPIDERFANG unit wholly within 12" of a friendly GRIMSCUTTLE SPIDERFANG HERO. Until your next hero phase, that unit can retreat and still charge later in the same turn.`,
- when: [START_OF_MOVEMENT_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
},
],
},
diff --git a/src/factions/gloomspite_gitz/command_traits.ts b/src/factions/gloomspite_gitz/command_traits.ts
index 1ab8f4e15..178f393cf 100644
--- a/src/factions/gloomspite_gitz/command_traits.ts
+++ b/src/factions/gloomspite_gitz/command_traits.ts
@@ -1,122 +1,29 @@
-import { keyPicker, tagAs } from 'factions/metatagger'
-import meta_rule_sources from 'meta/rule_sources'
+import { tagAs } from 'factions/metatagger'
import {
- BATTLESHOCK_PHASE,
COMBAT_PHASE,
DURING_GAME,
- DURING_ROUND,
END_OF_TURN,
HERO_PHASE,
- MOVEMENT_PHASE,
- START_OF_COMBAT_PHASE,
- START_OF_HERO_PHASE,
- TURN_ONE_START_OF_ROUND,
+ START_OF_SETUP,
WOUND_ALLOCATION_PHASE,
} from 'types/phases'
-import CommandAbilities from './command_abilities'
-import rule_sources from './rule_sources'
const CommandTraits = {
- 'Cunning Plans': {
- effects: [
- {
- name: `Cunning Plans`,
- desc: `At the start of the first battle round, you receive 1 additional command point.`,
- when: [TURN_ONE_START_OF_ROUND],
- },
- ],
- },
'Fight Another Day': {
effects: [
{
name: `Fight Another Day`,
- desc: `Each time this general attacks with its melee weapons, it can make a 2D6" move after all of its attacks have been resolved. If it does so, it must finish the move more than 3" from enemy units.`,
- when: [COMBAT_PHASE],
- },
- ],
- },
- 'Sneaky Stabba': {
- effects: [
- {
- name: `Sneaky Stabba`,
- desc: `You can reroll wound rolls for attacks made with melee weapons by this general.`,
+ desc: `LOONBOSS only. Each time this general fights, after all of their attacks have been resolved, they can make a 2D6" move. If they do so, they must finish the move more than 3" from all enemy units.`,
when: [COMBAT_PHASE],
},
],
},
- "Tough 'n' Leathery": {
- effects: [
- {
- name: `Tough 'n' Leathery`,
- desc: `Add 2 to this general's Wounds characteristic.`,
- when: [DURING_GAME],
- },
- ],
- },
- 'Dead Shouty': {
- effects: [
- {
- name: `Dead Shouty`,
- desc: `Once per battle round, this general can use a command ability on their warscroll without a command point being spent.`,
- when: [DURING_ROUND],
- },
- ],
- },
'The Clammy Hand': {
effects: [
{
name: `The Clammy Hand`,
- desc: `If this general is within 12" of a Bad Moon Loonshrine in your army at the end of your turn, you can use the Bad Moon Loonshrine's 'Moonclan Lair' scenery rule 2 times at the end of that turn.`,
+ desc: `If this general is within 12" of a Bad Moon Loonshrine in your army at the end of your turn, you can use the Bad Moon Loonshrine's Moonclan Lair scenery rule 2 times at the end of that turn.`,
when: [END_OF_TURN],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
- },
- ],
- },
- 'Low Cunning': {
- effects: [
- {
- name: `Low Cunning`,
- desc: `At the start of the first battle round, you receive 1 additional command point.`,
- when: [TURN_ONE_START_OF_ROUND],
- },
- ],
- },
- 'Spiteful Git': {
- effects: [
- {
- name: `Spiteful Git`,
- desc: `Roll a D6 each time a wound or mortal wound is allocated to this model. On a 4+ the unit that inflicted the wound or mortal wound suffers 1 mortal wound. On a 6, it suffers D3 mortal wounds instead.`,
- when: [WOUND_ALLOCATION_PHASE],
- },
- ],
- },
- 'Great Shaman': {
- effects: [
- {
- name: `Great Shaman`,
- desc: `This general knows 1 extra spell from the Lore of the Moonclans.`,
- when: [HERO_PHASE],
- },
- ],
- },
- 'Dodgy Character': {
- effects: [
- {
- name: `Dodgy Character`,
- desc: `Reroll successful hit rolls for attacks that target this general.`,
- when: [DURING_GAME],
- },
- ],
- },
- 'Boss Shaman': {
- mandatory: {
- command_abilities: [keyPicker(CommandAbilities, ["I'm Da Boss, Now Stab 'Em Good!"])],
- },
- effects: [
- {
- name: `Boss Shaman`,
- desc: `This general has the I'm Da Boss, Now Stab 'Em Good! command ability from the Loonboss warscroll.`,
- when: [START_OF_COMBAT_PHASE],
},
],
},
@@ -124,53 +31,26 @@ const CommandTraits = {
effects: [
{
name: `Loon-touched`,
- desc: `Add 2 to casting rolls for this general when they are affected by the light of the Bad Moon instead of 1.`,
+ desc: `WIZARD only. This general can cast 1 additional spell in each of your hero phases while they are affected by the Light of the Bad Moon.`,
when: [HERO_PHASE],
},
],
},
- 'Monstrous Mount': {
- effects: [
- {
- name: `Monstrous Mount`,
- desc: `Double the number of mortal wounds that are inflicted by this general's Spider Venom ability.`,
- when: [COMBAT_PHASE],
- },
- ],
- },
- 'Masterful Spider Rider': {
- effects: [
- {
- name: `Masterful Spider Rider`,
- desc: `Add 4" to this general's Move characteristic.`,
- when: [MOVEMENT_PHASE],
- },
- ],
- },
- 'Ululating Battle Cry': {
- effects: [
- {
- name: `Ululating Battle Cry`,
- desc: `Subtract 1 from the Bravery characteristic of enemy units while they are within 9" of this general.`,
- when: [BATTLESHOCK_PHASE],
- },
- ],
- },
- 'Creeping Assault': {
+ 'Supa-nasty Venom': {
effects: [
{
- name: `Creeping Assault`,
- desc: `Enemy units do not receive the benefit of cover against attacks made by friendly SPIDERFANG units while the friendly unit is wholly within 12" of this general.`,
- when: [COMBAT_PHASE],
+ name: `Supa-nasty Venom`,
+ desc: `SPIDERFANG HERO with mount only. Double the number of mortal wounds that are inflicted by this general's Spider Venom ability.`,
+ when: [HERO_PHASE],
},
],
},
- 'Tough as Rocks': {
+ 'Squig Whisperer': {
effects: [
{
- name: `Tough as Rocks`,
- desc: `Add 2 to this general's Wounds characteristic.`,
- when: [DURING_GAME],
+ name: `Squig Whisperer`,
+ desc: `SQUIG HERO with mount only. Add 1 to hit rolls and wound rolls for attacks made by this general's mount.`,
+ when: [HERO_PHASE],
},
],
},
@@ -178,80 +58,34 @@ const CommandTraits = {
effects: [
{
name: `Alpha Trogg`,
- desc: `Troggoth units affected by this general's Reassuring Presence ability add 2 to their Bravery characteristic instead of 1.`,
- when: [DURING_GAME],
- },
- ],
- },
- Loonskin: {
- effects: [
- {
- name: `Loonskin`,
- desc: `This general counts as being affected by the light of the Bad Moon wherever it is located, until it is removed when it reaches the opposite edge of the battlefield.`,
- when: [DURING_GAME],
+ desc: `Add 2 to this general's Wounds characteristic. In addition, this general gains the MONSTER keyword.`,
+ when: [WOUND_ALLOCATION_PHASE, DURING_GAME],
},
],
},
- 'Pulverising Grip': {
+ 'Trogg Smash': {
effects: [
{
- name: `Pulverising Grip`,
- desc: `When you use this general's Crushing Grip ability, you can reroll the dice that determines if the target is slain.`,
+ name: `Trogg Smash`,
+ desc: `Once per battle, when this general fights, after all of their attacks have been resolved, you can say they will perform a Trogg Smash. If you do so, roll a dice for each enemy unit within 3" of this general. On a 2+, that unit suffers D3 mortal wounds.`,
when: [COMBAT_PHASE],
},
],
},
- 'Mighty Blow': {
+ Loonskin: {
effects: [
{
- name: `Mighty Blow`,
- desc: `You can reroll the dice that determines the Damage characteristic of this general's Boulder Club.`,
- when: [COMBAT_PHASE],
+ name: `Loonskin`,
+ desc: `If your general has this command trait, you can include 1 of the following endless spells in your army without spending any points to do so: Mork's Mighty Mushroom, Scuttletide or Malevolent Moon. In addition, in your hero phase, this general can attempt to cast the spell that summons that endless spell in the same manner as a WIZARD.`,
+ when: [START_OF_SETUP],
},
- ],
- },
- 'Realmstone-studded Hide': {
- effects: [
{
- name: `Realmstone-studded Hide`,
- desc: `When you use this general's Magical Resistance ability, you can reroll the dice that determines if the spell's effects are ignored.`,
+ name: `Loonskin`,
+ desc: `In your hero phase, this general can attempt to cast the spell that summons that endless spell in the same manner as a WIZARD.`,
when: [HERO_PHASE],
},
],
},
- // Jaws of Mork
- 'Envoy of the Overbounder': {
- effects: [
- {
- name: `Envoy of the Overbounder`,
- desc: `You can reroll failed battleshock tests for friendly JAWS OF MORK units wholly within 12" of this general.`,
- when: [BATTLESHOCK_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
- },
- ],
- },
- // Glogg's Megamob
- 'Shepherd of Idiotic Destruction': {
- effects: [
- {
- name: `Shepherd of Idiotic Destruction`,
- desc: `If this general is part of your army and on the battlefield at the start of your hero phase, roll a D6. On a 4+, you receive 1 extra command point.`,
- when: [START_OF_HERO_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
- },
- ],
- },
- // Grimscuttle Tribes
- 'Prophet of da Spider God': {
- effects: [
- {
- name: `Prophet of da Spider God`,
- desc: `Once per battle in the combat phase, you can say that this general will unleash their battle cry. If you do so, friendly GRIMSCUTTLE SPIDERFANG models are treated as being affected by the light of the Bad Moon until the end of that phase.`,
- when: [COMBAT_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
- },
- ],
- },
}
export default tagAs(CommandTraits, 'command_trait')
diff --git a/src/factions/gloomspite_gitz/endless_spells.ts b/src/factions/gloomspite_gitz/endless_spells.ts
index 625bfb89f..b60d426a3 100644
--- a/src/factions/gloomspite_gitz/endless_spells.ts
+++ b/src/factions/gloomspite_gitz/endless_spells.ts
@@ -9,7 +9,6 @@ import {
START_OF_SHOOTING_PHASE,
WOUND_ALLOCATION_PHASE,
} from 'types/phases'
-import rule_sources from './rule_sources'
// Endless spells.
const EndlessSpells = {
@@ -17,22 +16,19 @@ const EndlessSpells = {
effects: [
{
name: `Summoning`,
- desc: `Casting value of 6 and range of 6". If successfully cast, set up this endless spell wholly within range and visible to the caster, and more than 1" from all models, other endless spells and invocations. Only GLOOMSPITE GITZ WIZARDS can attempt to summon this endless spell.`,
+ desc: `Casting value of 6 and a range of 12". If successfully cast, set up this endless spell wholly within range and visible to the caster, and more than 1" from all models, other endless spells and invocations. Only Gloomspite Gitz Wizards can attempt to summon this endless spell.`,
when: [HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
- GenericEffects.Predatory.Eight_Inches,
+ GenericEffects.Predatory.Twelve_Inches,
{
name: `Malevolent Intentions`,
- desc: `After this endless spell has moved, roll a dice for each unit that has any models it passed across. On a 2+, that unit suffers D3 mortal wounds.`,
+ desc: `After this endless spell has moved, roll a dice for each unit within 3" of it. On a 2+, that unit suffers D3 mortal wounds. Gloomspite Gitz units are not affected by this ability.`,
when: [END_OF_HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
{
- name: `Moon of Ill Omen`,
- desc: `Subtract 1 from casting rolls for WIZARDS within 9" of this endless spell. Subtract 2 from casting rolls instead for WIZARDS within 3" of this endless spell. GLOOMSPITE GITZ WIZARDS are not affected by this ability.`,
+ name: `Lurid Light`,
+ desc: `While this endless spell is controlled by a model in a Gloomspite Gitz army, Gloomspite Gitz units in the same army are affected by the Light of the Bad Moon while they are wholly within 12" of this endless spell.`,
when: [HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
],
},
@@ -40,15 +36,13 @@ const EndlessSpells = {
effects: [
{
name: `Summoning`,
- desc: `Casting value of 6 and range of 6D6". If successfully cast, set up this endless spell wholly within range and visible to the caster, and more than 1" from all models, other endless spells and invocations. Only GLOOMSPITE GITZ WIZARDS can attempt to summon this endless spell.`,
+ desc: `Casting value of 6 and a range of 6D6". If successfully cast, set up this endless spell wholly within range and visible to the caster, and more than 1" from all models, other endless spells and invocations. Only Gloomspite Gitz Wizards can attempt to summon this endless spell.`,
when: [HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
{
name: `Mutating Spores`,
desc: `At the start of the shooting phase, roll a number of dice for each unit within 8" of this endless spell equal to the number of models in that unit that are within 8" of this endless spell. For each 5+, that unit suffers 1 mortal wound.`,
when: [START_OF_SHOOTING_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
],
},
@@ -56,11 +50,8 @@ const EndlessSpells = {
effects: [
{
name: `Summoning`,
- desc: `This endless spell is summoned with a spell that has a casting value of 5 and range of 1". If successfully cast, set up this endless spell within range and visible to the caster, and more than 1" from all other models, other endless spells and invocations. Only GLOOMSPITE GITZ WIZARDS can attempt to summon this endless spell.
-
- A WIZARD in a garrison cannot attempt to summon this endless spell, and if this endless spell is summoned, the WIZARD that summoned it cannot join a garrison until this endless spell has been removed from play.`,
+ desc: `Casting value of 5 and a range of 1". If successfully cast, set up this endless spell within range and visible to the caster, and more than 1" from all other models, other endless spells and invocations. Only Gloomspite Gitz Wizards can attempt to summon this endless spell. A Wizard in a garrison cannot attempt to summon this endless spell, and if this endless spell is summoned, the Wizard that summoned it cannot join a garrison until this endless spell has been removed from play.`,
when: [HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
{
name: `Linked`,
@@ -68,27 +59,23 @@ const EndlessSpells = {
If the model that summoned this endless spell is slain, then this endless spell is immediately removed from play. If this endless spell is dispelled and the model that summoned it has not been slain, remove this endless spell from play but leave the model that summoned it on the battlefield.`,
when: [HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
{
name: `Linked`,
desc: `If the model that summoned this endless spell is slain, then this endless spell is immediately removed from play.`,
when: [WOUND_ALLOCATION_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
{
name: `Blessings of the Cauldron`,
- desc: `You can reroll casting, dispelling and unbinding rolls for the model that summoned this endless spell while this endless spell is on the battlefield. In addition, the model that summoned this endless spell knows all the spells from the Lore of the Moonclans while this endless spell is on the battlefield.`,
+ desc: `The model that summoned this endless spell can attempt to cast 1 additional spell while this endless spell is on the battlefield. In addition, if the model that summoned this endless spell is a Moonclan unit in a Gloomspite Gitz army, it knows all of the spells from the Lore of the Moonclans while this endless spell is on the battlefield.`,
when: [HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
{
name: `Bloodslither Pact`,
- desc: `After this endless spell is set up and at the start of each of their hero phases, the commanding player must pick 1 unit within 3" of the model that summoned this endless spell. That unit suffers D3 mortal wounds.
+ desc: `After this endless spell is set up and at the start of each of their hero phases, the commanding player must pick 1 unit within 3" of the model that summoned this endless spell. That unit suffers 1 mortal wound that cannot be negated.
- Designer's Note: If there are no other units within 3", then the model that summoned this endless spell will suffer the mortal wounds.`,
+ Designer's Note: If there are no other units within 3", then the model that summoned this endless spell must be picked to suffer the mortal wound. `,
when: [HERO_PHASE, START_OF_HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
],
},
@@ -96,31 +83,28 @@ const EndlessSpells = {
effects: [
{
name: `Summoning`,
- desc: `Casting value of 7 and range of 6". Add 1 to casting rolls for this spell if the caster is a SPIDERFANG WIZARD. If successfully cast, set up this endless spell within range of a terrain feature and visible to the caster, and more than 1" from all models, other endless spells and invocations. Only GLOOMSPITE GITZ WIZARDS can attempt to summon this endless spell.`,
+ desc: `Casting value of 7. Add 1 to casting rolls for this spell if the caster is a Spiderfang Wizard. If successfully cast, set up this endless spell within 8" of a terrain feature that is visible to the caster, and more than 1" from all models, other endless spells and invocations. Only Gloomspite Gitz Wizards can attempt to summon this endless spell.`,
when: [HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
{
name: `Predatory`,
- desc: `This endless spell is a predatory endless spell. It can be moved up to 6".`,
+ desc: `This endless spell is a predatory endless spell. It can be moved up to 8".`,
when: [END_OF_HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
},
{
name: `Scuttling Horde`,
- desc: `After this endless spell has moved, the commanding player can pick 1 unit within 1" of this endless spell and roll 6 dice. For each 5+, that unit suffers 1 mortal wound. In addition, roll 6 dice for each unit that finishes a normal move, run, retreat or charge move within 6" of this endless spell. For each 5+, that unit suffers 1 mortal wound. SPIDERFANG units are not affected by this ability.`,
+ desc: `After this endless spell has moved, the commanding player can pick 1 unit within 1" of this endless spell and roll 8 dice. For each 5+, that unit suffers 1 mortal wound. In addition, roll 8 dice for each unit that finishes a normal move, run, retreat or charge move within 6" of this endless spell. For each 5+, that unit suffers 1 mortal wound. Spiderfang units are not affected by this ability.`,
when: [END_OF_HERO_PHASE],
- rule_sources: [
- rule_sources.BATTLETOME_GLOOMSPITE_GITZ,
- rule_sources.ERRATA_JULY_2021,
- rule_sources.ERRATA_AUGUST_2021,
- ],
},
{
name: `Scuttling Horde`,
- desc: `Roll 6 dice for each unit that finishes a normal move or charge move within 6" of this endless spell. For each 5+, that unit suffers 1 mortal wound. Spiderfang units are not affected by this ability.`,
+ desc: `Roll 8 dice for each unit that finishes a normal move, run, retreat or charge move within 6" of this endless spell. For each 5+, that unit suffers 1 mortal wound. Spiderfang units are not affected by this ability.`,
when: [MOVEMENT_PHASE, CHARGE_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
+ },
+ {
+ name: `Endless Terrors`,
+ desc: `While this endless spell is wholly within 12" of any Arachnarok units, it can only be dispelled with a dispelling roll of 9+.`,
+ when: [HERO_PHASE],
},
],
},
diff --git a/src/factions/gloomspite_gitz/flavors.ts b/src/factions/gloomspite_gitz/flavors.ts
index a9864604c..18492de1c 100644
--- a/src/factions/gloomspite_gitz/flavors.ts
+++ b/src/factions/gloomspite_gitz/flavors.ts
@@ -1,61 +1,52 @@
-import { keyPicker } from 'factions/metatagger'
-import meta_rule_sources from 'meta/rule_sources'
-import { COMBAT_PHASE, END_OF_HERO_PHASE, HERO_PHASE, MOVEMENT_PHASE } from 'types/phases'
-import Artifacts from './artifacts'
-import CommandAbilities from './command_abilities'
-import CommandTraits from './command_traits'
+import { COMBAT_PHASE, DURING_SETUP, END_OF_TURN, HERO_PHASE } from 'types/phases'
const Flavors = {
'Jaws of Mork': {
- mandatory: {
- artifacts: [keyPicker(Artifacts, ['Syari Screamersquig'])],
- command_abilities: [keyPicker(CommandAbilities, ["Get Some Loonshine Down 'Em!"])],
- command_traits: [keyPicker(CommandTraits, ['Envoy of the Overbounder'])],
- },
effects: [
{
- name: `Running Riot`,
- desc: `You can reroll the roll that determines the Move characteristic of friendly SQUIG units.`,
- when: [MOVEMENT_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
+ name: `Crushing Gobs`,
+ desc: `Add 1 to the Attacks characteristic of Fang-filled Gobs, Massive Fang-filled Gobs and Huge Fang-filled Gobs used by friendly JAWS OF MORK SQUIG units if they made a charge move in the same turn.`,
+ when: [COMBAT_PHASE],
},
],
},
"Glogg's Megamob": {
- mandatory: {
- artifacts: [keyPicker(Artifacts, ['Aetherquartz-studded Hide'])],
- command_abilities: [keyPicker(CommandAbilities, ['Oblivious to Sorcery'])],
- command_traits: [keyPicker(CommandTraits, ['Shepherd of Idiotic Destruction'])],
- },
effects: [
{
name: `Monstrous Regeneration`,
- desc: `Add 1 to the dice that determines if a friendly GLOGG'S MEGAMOB TROGGOTH unit heals any wounds when it uses its Regeneration ability.`,
- when: [HERO_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
+ desc: `Each time a friendly GLOGG'S MEGAMOB TROGGOTH unit fights, after all of its attacks have been resolved, the effect of its Regeneration or Greater Regeneration ability is triggered..`,
+ when: [COMBAT_PHASE],
},
],
},
- 'Grimscuttle Tribes': {
- mandatory: {
- artifacts: [keyPicker(Artifacts, ['Shyishan Spider-sigils'])],
- command_abilities: [keyPicker(CommandAbilities, ['Masters of Feigned Flight'])],
- command_traits: [keyPicker(CommandTraits, ['Prophet of da Spider God'])],
- },
+ Grimscuttle: {
effects: [
{
- name: `Deff Grotz of Shyish`,
- desc: `Each time a friendly GRIMSCUTTLE SPIDERFANG unit is affected by a spell or endless spell, you can roll a dice. If you do so, on a 5+, ignore the effects of that spell or endless spell on that unit.`,
- when: [HERO_PHASE, END_OF_HERO_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
+ name: `Through the Cracks they Creep`,
+ desc: `During deployment, if any friendly GRIMSCUTTLE SKITTERSTRAND ARACHNAROKS have been set up in ambush as reserve units using the Ambush From Beyond ability, instead of setting up another friendly GRIMSCUTTLE SPIDERFANG unit, you can place that unit to one side and say that it will join a friendly GRIMSCUTTLE SKITTERSTRAND ARACHNAROK in ambush as a reserve unit. Up to 2 units can join each friendly GRIMSCUTTLE SKITTERSTRAND ARACHNAROK as a reserve unit. When a friendly GRIMSCUTTLE SKITTERSTRAND ARACHNAROK is set up on the battlefield for the first time, set up all units that joined it wholly within 12" of it and more than 9" from all enemy units.`,
+ when: [DURING_SETUP],
},
+ ],
+ },
+
+ "Da King's Gitz": {
+ effects: [
{
- name: `Drawn to the Aetherglow`,
- desc: `You can reroll hit rolls for attacks made with melee weapons by friendly SKITTERSTRAND models if the target is a Wizard of Priest.`,
- when: [COMBAT_PHASE],
- rule_sources: [meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS],
+ name: `Lairs of the Loonking's Ladz`,
+ desc: `If you command a KING'S GITZ army, you can reroll the dice roll when using the Bad Moon Loonshrine's Moonclan Lairs ability.`,
+ when: [END_OF_TURN],
+ },
+ ],
+ },
+
+ Badsnatchers: {
+ effects: [
+ {
+ name: `Harbingers of the Everdank`,
+ desc: `Each time a casting roll is made for a friendly BADSNATCHERS MOONCLAN WIZARD, if that WIZARD is wholly within 9" of any other friendly BADSNATCHERS MOONCLAN WIZARDS, you can reroll 1 of the dice in that casting roll.`,
+ when: [HERO_PHASE],
},
],
},
diff --git a/src/factions/gloomspite_gitz/grand_strategies.ts b/src/factions/gloomspite_gitz/grand_strategies.ts
new file mode 100644
index 000000000..508a5c086
--- /dev/null
+++ b/src/factions/gloomspite_gitz/grand_strategies.ts
@@ -0,0 +1,43 @@
+import { tagAs } from 'factions/metatagger'
+import { END_OF_GAME } from 'types/phases'
+
+const GrandStrategies = {
+ 'A Scheme for Every Occasion': {
+ effects: [
+ {
+ name: `A Scheme for Every Occasion`,
+ desc: `When the battle ends, you complete this grand strategy if you completed at least 4 battle tactics and all of the battle tactics you completed were from the 'Nasty Tricks' list.`,
+ when: [END_OF_GAME],
+ },
+ ],
+ },
+ 'Chasing the Moon': {
+ effects: [
+ {
+ name: `Chasing the Moon`,
+ desc: `When the battle ends, you complete this grand strategy if the model picked to be your general has not been slain and they have been affected by the Light of the Bad Moon in at least 3 battle rounds.`,
+ when: [END_OF_GAME],
+ },
+ ],
+ },
+ 'Protect da Shrine!': {
+ effects: [
+ {
+ name: `Protect da Shrine!`,
+ desc: `When the battle ends, you complete this grand strategy there is a Bad Moon Loonshrine from your army on the battlefield, there are no enemy models within 12" of it and it was not affected by a successful Smash To Rubble monstrous rampage.`,
+ when: [END_OF_GAME],
+ },
+ ],
+ },
+ 'Superior Spell-flinger': {
+ effects: [
+ {
+ name: `Superior Spell-flinger`,
+ desc: `When the battle ends, you complete this grand strategy if there are 2 or more friendly Gloomspite Gitz endless spells on the battlefield.`,
+ when: [END_OF_GAME],
+ },
+ ],
+ },
+}
+
+export default tagAs(GrandStrategies, 'grand_strategy')
diff --git a/src/factions/gloomspite_gitz/rule_sources.ts b/src/factions/gloomspite_gitz/rule_sources.ts
index 5f0c28bbb..edffd5702 100644
--- a/src/factions/gloomspite_gitz/rule_sources.ts
+++ b/src/factions/gloomspite_gitz/rule_sources.ts
@@ -1,28 +1,8 @@
const rule_sources = {
BATTLETOME_GLOOMSPITE_GITZ: {
- name: 'Battletome: Gloomspite Gitz',
+ name: 'Battletome: Gloomspite Gitz (2023)',
type: 'battletome',
},
- ERRATA_JULY_2021: {
- name: 'Errata (July 2021)',
- type: 'errata',
- url: 'https://www.warhammer-community.com/wp-content/uploads/2019/07/zlz7V5Cs5CzGDO8k.pdf',
- },
- ERRATA_AUGUST_2021: {
- name: 'Errata (August 2021)',
- type: 'errata',
- url: 'https://www.warhammer-community.com/wp-content/uploads/2019/07/fqa5LLQRILWM5VrI.pdf',
- },
- ERRATA_JULY_2022: {
- name: 'Errata (July 2022)',
- type: 'errata',
- url: 'https://www.warhammer-community.com/wp-content/uploads/2019/07/15OewpHIqpgF1d8I.pdf',
- },
- ERRATA_OCTOBER_2022: {
- name: 'Errata (October 2022)',
- type: 'errata',
- url: 'https://www.warhammer-community.com/wp-content/uploads/2019/07/NhxmzLVEU40WVKtx.pdf',
- },
}
export default rule_sources
diff --git a/src/factions/gloomspite_gitz/scenery.ts b/src/factions/gloomspite_gitz/scenery.ts
index e1e010fe0..dab9808b7 100644
--- a/src/factions/gloomspite_gitz/scenery.ts
+++ b/src/factions/gloomspite_gitz/scenery.ts
@@ -1,44 +1,21 @@
import { tagAs } from 'factions/metatagger'
import { GenericEffects } from 'generic_rules'
-import meta_rule_sources from 'meta/rule_sources'
-import { BATTLESHOCK_PHASE, DURING_GAME, END_OF_TURN } from 'types/phases'
-import rule_sources from './rule_sources'
+import { DURING_GAME, END_OF_TURN } from 'types/phases'
const Scenery = {
'Bad Moon Loonshrine': {
effects: [
GenericEffects.FactionTerrainSetup_Removable,
- {
- name: `Defensible`,
- desc: `This terrain feature is a defensible terrain feature that can be garrisoned by up to 30 models.`,
- when: [DURING_GAME],
- rule_sources: [meta_rule_sources.ERRATA_BROKEN_REALMS_KRAGNOS_JULY_2021],
- },
- {
- name: `Loonatic Courage`,
- desc: `Do not take battleshock tests for GLOOMSPITE GITZ units wholly within 12" of this terrain feature.`,
- when: [BATTLESHOCK_PHASE],
- rule_sources: [
- rule_sources.BATTLETOME_GLOOMSPITE_GITZ,
- meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS,
- meta_rule_sources.ERRATA_BROKEN_REALMS_KRAGNOS_JULY_2021,
- ],
- },
+ GenericEffects.Impassable,
{
name: `Moonclan Lairs`,
- desc: `At the end of each of your turns, you can pick 1 friendly STABBAS or SHOOTAS unit that has been destroyed. If your general has the Spiderfang keyword, you must pick 1 friendly SPIDER RIDERS unit that has been destroyed instead. If your general has the SQUIG keyword, you must pick 1 friendly SQUIG HERD, SQUIG HOPPERS or BOINGROT BOUNDERZ unit that has been destroyed instead. If your general has the TROGGOTH keyword, you must pick 1 friendly TROGGOTH unit with a Wounds characteristic of 5 or less that has been destroyed instead. After you pick a unit that has been destroyed, roll a dice. On a 4+, a new replacement unit with half of the models from the unit that was destroyed (rounding up) is added to your army. Set up that unit wholly within 12" of a Bad Moon Loonshrine in your army and more than 3" from all enemy units. Each destroyed unit can only be replaced once - replacement units cannot themselves be replaced.`,
+ desc: `At the end of each of your turns, you can pick 1 friendly Gloomspite Gitz unit that has been destroyed. The unit picked cannot be a Hero, cannot be Unique, and must have a Wounds characteristic of 5 or less. After you pick a unit that has been destroyed, roll a dice. On a 4+, a replacement unit with half of the models from the unit that was destroyed (rounding up) is added to your army. Set up that unit wholly within 1 2" of a Bad Moon Loonshrine in your army and more than 3" from all enemy units. Each destroyed unit can only be replaced once, and replacement units cannot themselves be replaced. Replacement Moonclan Stabbas and Moonclan Shootas can include up to half as many Netters as the destroyed unit (rounding up).`,
when: [END_OF_TURN],
- rule_sources: [
- rule_sources.BATTLETOME_GLOOMSPITE_GITZ,
- meta_rule_sources.BOOK_BROKEN_REALMS_KRAGNOS,
- meta_rule_sources.ERRATA_BROKEN_REALMS_KRAGNOS_JULY_2021,
- ],
},
{
name: `Effigy of Da Bad Moon`,
- desc: `GLOOMSPITE GITZ units are affected by the light of the Bad Moon while they are wholly within 12" of this terrain feature.`,
+ desc: `Gloomspite Gitz units are affected by the light of the Bad Moon while they are wholly within 12" of this terrain feature.`,
when: [DURING_GAME],
- rule_sources: [rule_sources.ERRATA_JULY_2022],
},
],
},
diff --git a/src/factions/gloomspite_gitz/spells.ts b/src/factions/gloomspite_gitz/spells.ts
index 287daed39..66f590928 100644
--- a/src/factions/gloomspite_gitz/spells.ts
+++ b/src/factions/gloomspite_gitz/spells.ts
@@ -1,40 +1,12 @@
import { tagAs } from 'factions/metatagger'
-import {
- BATTLESHOCK_PHASE,
- CHARGE_PHASE,
- COMBAT_PHASE,
- HERO_PHASE,
- MOVEMENT_PHASE,
- SAVES_PHASE,
- SHOOTING_PHASE,
-} from 'types/phases'
-import rule_sources from './rule_sources'
+import { COMBAT_PHASE, HERO_PHASE, MOVEMENT_PHASE, SHOOTING_PHASE } from 'types/phases'
const Spells = {
- // Lore of the Moonclan
- 'Vindictive Glare': {
- effects: [
- {
- name: `Vindictive Glare`,
- desc: `Casting value of 5. Pick 1 enemy unit within 12" of the caster and visible to them. That unit suffers D3 mortal wounds.`,
- when: [HERO_PHASE],
- },
- ],
- },
'Itchy Nuisance': {
effects: [
{
name: `Itchy Nuisance`,
- desc: `Casting value of 6. Pick 1 enemy unit within 18" of the caster and visible to them. That unit fights at the end of the next combat phase, after the players have picked any other units to fight in that combat phase.`,
- when: [HERO_PHASE, COMBAT_PHASE],
- },
- ],
- },
- 'The Great Green Spite': {
- effects: [
- {
- name: `The Great Green Spite`,
- desc: `Casting value of 7. Pick 1 friendly GLOOMSPITE GITZ unit wholly within 18" of the caster, and an enemy unit within 24" of the caster and visible to them. The enemy unit suffers 1 mortal wound if the friendly unit has fewer than 10 models, D3 mortal wounds if the friendly unit has 10 to 20 models, and D6 mortal wounds if it has more than 20 models.`,
+ desc: `Casting value of 6 and a range of 18". Pick 1 enemy unit within range and visible to the caster. The strike-last effect applies to that unit until the end of the turn.`,
when: [HERO_PHASE],
},
],
@@ -43,7 +15,7 @@ const Spells = {
effects: [
{
name: `The Hand of Gork`,
- desc: `Casting value of 7. Pick 1 friendly GLOOMSPITE GITZ unit wholly within 24" of the caster, visible to them and more than 3" from any enemy units. Remove that unit from the battlefield and set it up again anywhere on the battlefield more than 9" from any enemy units. It may not move in the subsequent movement phase.`,
+ desc: `Casting value of 7 and a range of 24". Pick 1 friendly GLOOMSPITE GITZ unit more than 3" from all enemy units and that is wholly within range and visible to the caster. Remove that unit from the battlefield and set it up again anywhere on the battlefield more than 9" from all enemy units. It cannot move in the following movement phase.`,
when: [HERO_PHASE, MOVEMENT_PHASE],
},
],
@@ -52,36 +24,7 @@ const Spells = {
effects: [
{
name: `Squig Lure`,
- desc: `Casting value of 5. Pick up to D3 friendly SQUIG units wholly within 18" of the caster and visible to them. Those units can run and still charge later in the same turn.`,
- when: [HERO_PHASE, CHARGE_PHASE],
- },
- ],
- },
- 'Call da Moon': {
- effects: [
- {
- name: `Call da Moon`,
- desc: `Casting value of 8. Pick 1 enemy unit visible to the caster. That unit suffers D3 mortal wounds. If that unit is wholly affected by the Light of the Bad Moon, you can reroll the D3 that determines the number of mortal wounds.`,
- when: [HERO_PHASE],
- },
- ],
- },
- // Lore of the Spiderfangs
- 'Deadly Webbing': {
- effects: [
- {
- name: `Deadly Webbing`,
- desc: `Casting value of 5. Pick 1 terrain feature within 24" of the caster that is visible to them. Until your next hero phase, that terrain feature has the Deadly and Sinister scenery rules in addition to any other scenery rules it already has (core rules, 28.1.3). SPIDERFANG units ignore the effects of this spell.`,
- when: [HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
- },
- ],
- },
- 'Venomous Spiderlings': {
- effects: [
- {
- name: `Venomous Spiderlings`,
- desc: `Casting value of 6. Pick 1 enemy unit within 12" of the caster and visible to them and roll a number of dice equal to the number of models in that unit. For each 6+ that unit suffers 1 mortal wound.`,
+ desc: `Casting value of 5 and a range of 18". Pick 1 friendly SQUIG unit wholly within range and visible to the caster. Until your next hero phase, you can reroll charge rolls for that unit.`,
when: [HERO_PHASE],
},
],
@@ -90,8 +33,8 @@ const Spells = {
effects: [
{
name: `Scuttling Terrors`,
- desc: `Casting value of 7. Pick 1 friendly SPIDERFANG unit wholly within 24" of the caster. That unit can run and still shoot and/or charge later in the same turn.`,
- when: [HERO_PHASE, CHARGE_PHASE, SHOOTING_PHASE],
+ desc: `Casting value of 6 and a range of 18". Pick 1 friendly SPIDERFANG unit wholly within range and visible to the caster. That unit can make a normal move.`,
+ when: [HERO_PHASE],
},
],
},
@@ -99,7 +42,7 @@ const Spells = {
effects: [
{
name: `Sneaky Distraction`,
- desc: `Casting value of 7. Until your next hero phase subtract 1 from hit rolls for attacks made by enemy units while they are wholly within 12" of the caster.`,
+ desc: `Casting value of 7 and a range of 12". If successfully cast, until your next hero phase, subtract 1 from hit rolls for attacks made by enemy units while they are within range of the caster.`,
when: [HERO_PHASE, COMBAT_PHASE, SHOOTING_PHASE],
},
],
@@ -108,26 +51,18 @@ const Spells = {
effects: [
{
name: `Curse of da Spider God`,
- desc: `Casting value of 7. Pick 1 enemy unit within 24" of the caster and visible to them. Until your next hero phase, hit rolls made for attacks by that unit always fail on an unmodified roll of 1 or 2 instead of only on a 1, and save rolls made for attacks that target that unit always fail on an unmodified roll of 1 or 2 instead of only on a 1.`,
+ desc: `Casting value of 7 and a range of 24". Pick 1 enemy unit within range and visible to the caster. Until the start of your next hero phase, hit rolls for attacks made by that unit always fail on an unmodified roll of 1 or 2 instead of only a 1, and save rolls for attacks that target that unit always fail on an unmodified roll of 1 or 2 instead of only a 1.`,
when: [HERO_PHASE, COMBAT_PHASE, SHOOTING_PHASE],
},
],
},
- 'Gift of da Spider God': {
- effects: [
- {
- name: `Gift of da Spider God`,
- desc: `Casting value of 8. Pick 1 friendly SPIDERFANG MONSTER within 12" of the caster that is visible to them. You can heal D6 wounds allocated to that unit.`,
- when: [HERO_PHASE],
- },
- ],
- },
+
// Unit spells
'Nikkit! Nikkit!': {
effects: [
{
name: `Nikkit! Nikkit!`,
- desc: `Casting value of 8. Pick 1 enemy model within 18" of the caster that is visible to them. The unit that model belongs to suffers D3 mortal wounds. In addition, if that model has an artefact of power and the casting roll was 10+, that model's artefact of power can no longer be used (if it was used to enhance a weapon, that weapon reverts to its normal form)`,
+ desc: `Nikkit! Nikkit! is a spell that has a casting value of 8 and a range of 12". Pick 1 enemy model within range and visible to the caster. That model's unit suffers D3 mortal wounds. In addition, if that model bears an artefact of power and the casting roll was 10+, that model's artefact of power can no longer be used (if it was used to enhance a weapon, that weapon reverts to its normal form).`,
when: [HERO_PHASE],
},
],
@@ -136,7 +71,7 @@ const Spells = {
effects: [
{
name: `Night Shroud`,
- desc: `Casting value of 5. Pick 1 friendly unit wholly within 12" of the caster that is visible to them. Until your next hero phase, subtract 1 from hit rolls for attacks made with missile weapons that target that unit.`,
+ desc: `Casting value of 5 and a range of 12". Pick 1 friendly Gloomspite Gitz unit wholly within range and visible to the caster. Until the start of your next hero phase, subtract 1 from hit rolls for attacks made with missile weapons that target that unit.`,
when: [HERO_PHASE],
},
],
@@ -145,7 +80,16 @@ const Spells = {
effects: [
{
name: `Spore Maws`,
- desc: `Casting value of 7. Each enemy unit within D6" of this model suffers D3 mortal wounds.`,
+ desc: `Casting value of 7 and a range of 6". If successfully cast, each enemy unit within range suffers D6 mortal wounds (roll separately for each unit).`,
+ when: [HERO_PHASE],
+ },
+ ],
+ },
+ 'Fangz of da Bad Moon': {
+ effects: [
+ {
+ name: `Fangz of da Bad Moon`,
+ desc: `Casting value of 3 and a range of 24". Pick 1 enemy unit within range and visible to the caster and roll a number of dice equal to the casting roll. For each 3+, that unit suffers 1 mortal wound.`,
when: [HERO_PHASE],
},
],
@@ -154,9 +98,8 @@ const Spells = {
effects: [
{
name: `Face of Da Bad Moon`,
- desc: `Casting value of 5. Pick 1 enemy unit within 3" of the caster that is visible to them. That unit must retreat. If it is impossible for the unit to make the move for any reason, it suffers D6 mortal wounds instead.`,
+ desc: `Casting value of 5 and a range of 9". Pick 1 enemy unit within range and visible to the caster. That unit must retreat. If it is impossible for the unit to retreat for any reason, it suffers D6 mortal wounds instead.`,
when: [HERO_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_OCTOBER_2022],
},
],
},
@@ -164,7 +107,7 @@ const Spells = {
effects: [
{
name: `Venom of the Spider God`,
- desc: `Casting value of 6. Pick 1 friendly Spiderfang unit wholly within 16" of the caster and visible to them. Until your next hero phase, double the number of mortal wounds inflicted by that unit's Spider Venom ability. If the casting roll is 10 or more, pick up to D3 different friendly Spiderfang units instead of 1.`,
+ desc: `Casting value of 6 and a range of 18". Pick 1 friendly Spiderfang unit wholly within range and visible to the caster. Until the start of your next hero phase, add 1 to the number of mortal wounds caused by the 'Spider Venom' ability of that unit if the unmodified hit roll was 6. If the casting roll was 10 or more, pick up to D3 different friendly Spiderfang units instead of 1. Designer's Note: If a unit is affected by the Light of the Bad Moon, this spell does not affect unmodified hit rolls of 5; it only affects unmodified hit rolls of 6.`,
when: [HERO_PHASE],
},
],
@@ -173,27 +116,26 @@ const Spells = {
effects: [
{
name: `Speed of the Spider God`,
- desc: `Casting value of 4. Pick 1 friendly Spiderfang unit wholly within 24" of the caster and visible to them. Until your next hero phase, that unit can run and still shoot later in the same turn. If the casting roll is 8 or more, pick up to D3 friendly Spiderfang units instead of 1.`,
+ desc: `Casting value of 4 and a range of 24". Pick 1 friendly Spiderfang unit wholly within range and visible to the caster. Until your next hero phase, that unit can run and still shoot and/or charge later in the turn. If the casting roll was 8 or more, pick up to D3 friendly Spiderfang units instead of 1.`,
when: [HERO_PHASE],
},
],
},
- 'Hag Curse': {
+ 'Jealous Hex': {
effects: [
{
- name: `Hag Curse`,
- desc: `Casting value of 7. Pick 1 enemy unit within 12" of the caster that is visible to them. Until you next hero phase, subtract 1 from hit and save rolls for attacks against the target.`,
+ name: `Jealous Hex`,
+ desc: `Casting value of 6 and a range of 18". Pick 1 enemy Hero within range and visible to the caster. Until the start of your next hero phase, ignore positive modifiers to hit rolls and wound rolls for attacks made by that Hero, and ignore positive modifiers to save rolls for attacks that target that Hero.`,
when: [HERO_PHASE],
},
+ ],
+ },
+ 'Hag Curse': {
+ effects: [
{
name: `Hag Curse`,
- desc: `If active, subtract 1 from hit rolls for attacks against the debuffed unit.`,
- when: [SHOOTING_PHASE, COMBAT_PHASE],
- },
- {
- name: `Hag Curse`,
- desc: `If active, subtract 1 from saves rolls for the debuffed unit.`,
- when: [SAVES_PHASE],
+ desc: `Casting value of 7 and a range of 12". Pick 1 enemy unit within range and visible to the caster. Until your next hero phase, subtract 1 from hit rolls for attacks made by that unit and subtract 1 from save rolls for attacks that target that unit.`,
+ when: [HERO_PHASE],
},
],
},
@@ -201,38 +143,18 @@ const Spells = {
effects: [
{
name: `Mesmerise`,
- desc: `Casting value of 6. Pick 1 unit wholly within 12" of the caster and visible. If target is a friendly unit, it does not take battleshock tests until your next hero phase. If target is an enemy unit, they fight at the end of each combat phase after all other eligible units.`,
+ desc: `Casting value of 6 and a range of 12". Only this unit's Boggleye knows this spell and can attempt to cast it. Pick 1 enemy unit within range and visible to the caster. Until the start of your next hero phase, that unit cannot issue or receive commands.`,
when: [HERO_PHASE],
},
- {
- name: `Mesmerise`,
- desc: `If active on a friendly target, do not take battleshock tests on the buffed unit.`,
- when: [BATTLESHOCK_PHASE],
- },
- {
- name: `Mesmerise`,
- desc: `If active on an enemy target, the debuffed unit fights at the end of this phase after all other eligible units.`,
- when: [COMBAT_PHASE],
- },
],
},
'Fungoid Cloud': {
effects: [
{
name: `Fungoid Cloud`,
- desc: `Casting value of 6. Pick 1 unit within 8" of the caster and visible. Subtract 1 from hit rolls by and save rolls for the target until your next hero phase.`,
+ desc: `Casting value of 6 and a range of 12". Only this unit's Shroomancer knows this spell and can attempt to cast it. If successfully cast, until the start of your next hero phase, subtract 1 from hit rolls for attacks that target friendly Gloomspite Gitz units while they are wholly within range of this unit.`,
when: [HERO_PHASE],
},
- {
- name: `Fungoid Cloud`,
- desc: `If active, subtract 1 from hit rolls made by the debuffed unit.`,
- when: [SHOOTING_PHASE, COMBAT_PHASE],
- },
- {
- name: `Fungoid Cloud`,
- desc: `If active, subtract 1 from save rolls for the debuffed unit.`,
- when: [SAVES_PHASE],
- },
],
},
}
diff --git a/src/factions/gloomspite_gitz/subfactions.ts b/src/factions/gloomspite_gitz/subfactions.ts
index 81174295a..9ef53fe59 100644
--- a/src/factions/gloomspite_gitz/subfactions.ts
+++ b/src/factions/gloomspite_gitz/subfactions.ts
@@ -2,9 +2,11 @@ import { pickEffects } from 'factions/metatagger'
import { GLOOMSPITE_GITZ } from 'meta/factions'
import Artifacts from './artifacts'
import BattleTraits from './battle_traits'
+import Battalions from './battalions'
import CommandAbilities from './command_abilities'
import CommandTraits from './command_traits'
import EndlessSpells from './endless_spells'
+import GrandStrategies from './grand_strategies'
import Flavors from './flavors'
import Scenery from './scenery'
import Spells from './spells'
@@ -16,10 +18,12 @@ const subFactions = {
available: {
artifacts: [Artifacts],
+ battalions: [Battalions],
command_abilities: [CommandAbilities],
command_traits: [CommandTraits],
endless_spells: [EndlessSpells],
flavors: [Flavors],
+ grand_strategies: [GrandStrategies],
scenery: [Scenery],
spells: [Spells],
units: [Units],
diff --git a/src/factions/gloomspite_gitz/units.ts b/src/factions/gloomspite_gitz/units.ts
index 79c02de9c..430ff57c4 100644
--- a/src/factions/gloomspite_gitz/units.ts
+++ b/src/factions/gloomspite_gitz/units.ts
@@ -5,249 +5,226 @@ import {
CHARGE_PHASE,
COMBAT_PHASE,
DURING_GAME,
+ DURING_SETUP,
END_OF_COMBAT_PHASE,
- END_OF_MOVEMENT_PHASE,
- END_OF_ROUND,
+ END_OF_SETUP,
HERO_PHASE,
MOVEMENT_PHASE,
SAVES_PHASE,
SHOOTING_PHASE,
+ START_OF_BATTLESHOCK_PHASE,
START_OF_CHARGE_PHASE,
START_OF_COMBAT_PHASE,
+ START_OF_GAME,
START_OF_HERO_PHASE,
START_OF_MOVEMENT_PHASE,
START_OF_ROUND,
- START_OF_SETUP,
START_OF_SHOOTING_PHASE,
WARDS_PHASE,
WOUND_ALLOCATION_PHASE,
} from 'types/phases'
import CommandAbilities from './command_abilities'
-import rule_sources from './rule_sources'
import Spells from './spells'
-const baseLoonboss = {
- mandatory: {
- command_abilities: [keyPicker(CommandAbilities, ["I'm Da Boss, Now Stab 'Em Good!"])],
- },
- effects: [
- {
- name: `Dead Tricksy`,
- desc: `Subtract 1 from hit rolls for attacks that target this model.`,
- when: [COMBAT_PHASE, SHOOTING_PHASE],
- },
- ],
+const ArachnarokSpiderVenomEffect = {
+ name: `Spider Venom`,
+ desc: `If the unmodified hit roll for an attack made with this model's Monstrous Fangs is 6, that attack inflicts 3 mortal wounds on the target and the attack sequence ends (do not make a wound or save roll).`,
+ when: [COMBAT_PHASE],
+ shared: true,
}
+const DeadTricksyEffect = {
+ name: `Dead Tricksy`,
+ desc: `This unit has a ward of 6+.`,
+ when: [WARDS_PHASE],
+ shared: true,
+}
+const FerociousPounceEffect = {
+ name: `Ferocious Pounce`,
+ desc: `This unit is eligible to fight in the combat phase if it is within 6" of an enemy unit instead of 3", and it can move an extra 3" when it piles in.`,
+ when: [COMBAT_PHASE],
+ shared: true,
+}
+const NettersEffect = {
+ name: `Netters`,
+ desc: `Subtract 1 from hit rolls for attacks made by enemy units while they are within 1" of any friendly units that include any models armed with a Barbed Net.`,
+ when: [SHOOTING_PHASE, COMBAT_PHASE],
+ shared: true,
+}
const GrotBaseEffects = [
{
- name: `Gong Basher`,
- desc: `Add 2 to run rolls for a unit that includes any Gong Bashers.`,
+ name: `Musician`,
+ desc: `1 in every 20 models in this unit can be a Gong Basher. Add 1 to run rolls for this unit if it includes any Gong Bashers.`,
when: [MOVEMENT_PHASE],
shared: true,
},
{
- name: `Moonclan Flag Bearers`,
- desc: `Add 1 to the Bravery characteristic of a unit that includes any Moonclan Flag Bearers.`,
- when: [BATTLESHOCK_PHASE],
- shared: true,
- },
- {
- name: `Bad Moon Icon Bearers`,
- desc: `Add 1 to save rolls for attacks made with missile weapons that target a unit that includes any Bad Moon Icon Bearers.`,
+ name: `Standard Bearer`,
+ desc: `1 in every 20 models in this unit can be a Bad Moon Icon Bearer. Add 1 to save rolls for attacks made with missile weapons that target this unit if it includes any Bad Moon Icon Bearers.`,
when: [SAVES_PHASE],
shared: true,
},
- {
- name: `Backstabbing Mob`,
- desc: `Add 1 to wound rolls for attacks made with melee weapons by this unit while it has at least 10 models.`,
- when: [COMBAT_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
- shared: true,
- },
- {
- name: `Netters`,
- desc: `Subtract 1 from hit rolls for attacks made by enemy models while they are within 2" of any friendly models with a Barbed Net.`,
- when: [SHOOTING_PHASE, COMBAT_PHASE],
- shared: true,
- },
-]
-const FanaticsBaseEffects = [
- {
- name: `Whirling Death`,
- desc: `This unit fights at the start of the combat phase, before the players pick any other units to fight in that combat phase. This unit cannot fight again in the combat phase unless an ability or spell allows it to fight more than once.`,
- when: [START_OF_CHARGE_PHASE],
- shared: true,
- },
- {
- name: `Splat!`,
- desc: `If the charge roll for this unit is a double, after the charge move (or after the charge fails), this unit suffers 1 mortal wound and each other unit within 1" of this unit suffers D3 mortal wounds.`,
- when: [CHARGE_PHASE],
- shared: true,
- },
+ NettersEffect,
]
+const WhirlingDeathEffect = {
+ name: `Whirling Death`,
+ desc: `This unit fights at the start of the combat phase, before the players pick any other units to fight in that combat phase. This unit cannot fight again in the combat phase unless an ability or spell allows it to fight more than once.`,
+ when: [START_OF_CHARGE_PHASE],
+ shared: true,
+}
const HallucinogenicFungusBrewsEffect = {
name: `Hallucinogenic Fungus Brews`,
- desc: `In the first battle round, this unit has a ward of 5+. In the second battle round, this unit has a ward of 6+.`,
+ desc: `In the first battle round, this unit has a ward of 4+. In the second battle round, this unit has a ward of 5+. In the third and subsequent battle rounds, this unit has a ward of 6+.`,
when: [WARDS_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
shared: true,
}
-
-const RedcapMushroomsEffect = [
- {
- name: `Redcap Mushrooms`,
- desc: `Once per battle, in your hero phase, you can say that this model is eating a redcap mushroom. If you do so, you can reroll hit and wound rolls for this model's Moon-cutta or Moonclan Stabba until your next hero phase.`,
- when: [HERO_PHASE],
- shared: true,
- },
- {
- name: `Redcap Mushrooms`,
- desc: `If active, you can reroll hit and wound rolls for this model's Moon-cutta or Moonclan Stabba until your next hero phase.`,
- when: [COMBAT_PHASE],
- shared: true,
- },
-]
const WatchOutEffect = {
name: `Watch Out!`,
- desc: `If a Mangler Squig is slain, before the model is removed from play roll a D6 for each unit within 6" of this model. On a 4+ that unit suffers D3 mortal wounds.`,
+ desc: `If this model is slain, before it is removed from play, roll a dice for each other unit within 3" of this model. On a 4+, that unit suffers D3 mortal wounds.`,
when: [WOUND_ALLOCATION_PHASE],
shared: true,
}
const KersplatEffect = {
name: `Ker-splat!`,
- desc: `Add 1 to hit rolls for attacks made with Mangler Squigs Balls and Chains if this model made a charge move in the same turn.`,
- when: [COMBAT_PHASE],
+ desc: `After this unit makes a charge move, pick 1 enemy unit within 1" of this unit and roll a dice for each model in that unit, to a maximum of 10 dice. For each 4+, that unit suffers 1 mortal wound.`,
+ when: [CHARGE_PHASE],
shared: true,
}
-const SquigsGoWildEffect = {
- name: `Squigs Go Wild`,
- desc: `Roll a D6 each time a Cave Squig model from this unit flees, before the model is removed from play. On a 4+ the nearest other unit within 6" of the fleeing model suffers 1 mortal wound. If two or more such units are equally close, you can pick which suffers the mortal wound.`,
+const SquigsGoneWildEffect = {
+ name: `Squigs Gone Wild`,
+ desc: `Each time a Cave Squig in this unit flees, before that model is removed from play, roll a dice. On a 2+, you can pick 1 enemy unit within 9" of that model. That unit suffers 1 mortal wound.`,
when: [BATTLESHOCK_PHASE],
shared: true,
}
-const SlipperyGitEffect = {
- name: `Slippery Git`,
- desc: `Subtract 1 from hit rolls for attacks made with missile weapons that target this model while it is within 3" of a friendly MOONCLAN unit with 3 or more models.`,
- when: [SHOOTING_PHASE],
- shared: true,
-}
-const getSpiderVenomEffect = (attack: `'s Fangs` | ``, mw: `1` | `D3`) => {
- const plural = mw === `1` ? `` : `s`
- return {
- name: `Spider Venom`,
- desc: `If the unmodified hit roll for an attack made by this model${attack} is 6, that attack inflicts ${mw} mortal wound${plural} on the target and the attack sequence ends (do not make a wound or save roll).`,
- when: [COMBAT_PHASE],
- shared: true,
- }
-}
-const TerribleStenchEffect = {
- name: `Terrible Stench`,
- desc: `Subtract 1 from hit rolls for attacks made with melee weapons that target this unit.`,
- when: [COMBAT_PHASE],
+const WallCrawlerEffect = {
+ name: `Wall Crawler`,
+ desc: `When this model makes a move, it can pass across terrain features in the same manner as a model that can fly.`,
+ when: [MOVEMENT_PHASE],
shared: true,
}
const RegenerationEffect = {
name: `Regeneration`,
- desc: `In your hero phase, you can roll a D6 for this unit. If you do so, on a 4+ heal up to D3 wounds allocated to this unit.`,
- when: [HERO_PHASE],
+ desc: `At the start of the hero phase, you can heal up to D3 wounds allocated to this unit.`,
+ when: [START_OF_HERO_PHASE],
shared: true,
}
const MagicalResistanceEffect = {
name: `Magical Resistance`,
- desc: `Each time this unit is affected by a spell or endless spell, you can roll a D6. If you do so, on a 4+, ignore the effects of that spell or endless spell on this model.`,
+ desc: `Each time this unit is affected by a spell or the abilities of an endless spell, you can roll a dice. On a 4+, ignore the effect of that spell or the effects of that endless spell's abilities on this unit.`,
when: [HERO_PHASE],
shared: true,
}
-const ReassuringPresenceEffect = {
- name: `Reassuring Presence`,
- desc: `Add 1 to the Bravery characteristic of friendly GLOOMSPITE GITZ units that are wholly within 18" of any friendly models with this ability.`,
- when: [BATTLESHOCK_PHASE],
- shared: true,
-}
const SquigglyBeastFollowersEffect = {
name: `Squiggly-beast Followers`,
- desc: `At the start of the combat phase, roll 1 dice for each enemy unit within 3" of any friendly models with this ability. If the roll is equal to or greater than the number of models in that enemy unit, that enemy unit suffers 1 mortal wound.`,
+ desc: `At the start of the combat phase, roll 1 dice for each enemy unit within 3" of any friendly units with this ability. If the roll is equal to or greater than the number of models in that enemy unit, that enemy unit suffers 1 mortal wound.`,
when: [START_OF_COMBAT_PHASE],
shared: true,
}
const CrushingGripEffect = {
name: `Crushing Grip`,
- desc: `Do not use the attack sequence for an attack made with a Crushing Grip. Instead, pick 1 enemy model that is in range of the attack and roll a D6. If the roll is equal to or greater than the Wounds characteristic of that model, it is slain.`,
- when: [COMBAT_PHASE],
+ desc: `At the end of the combat phase, pick 1 enemy model within 1" of this unit and roll a dice. If the roll is equal to or greater than that model's Wounds characteristic, it is slain.`,
+ when: [END_OF_COMBAT_PHASE],
shared: true,
}
+// TODO: Make sure we have Kragnos available
+
const Units = {
'Skragrott, The Loonking': {
mandatory: {
- spells: [keyPicker(Spells, ['Nikkit! Nikkit!'])],
+ spells: [keyPicker(Spells, ['Fangz of da Bad Moon'])],
},
effects: [
+ GenericEffects.WizardTwoSpellsEffect,
{
- name: `The Loonking's Entreaty`,
- desc: `Once per battle, if this unit is your general and on the battlefield, before you roll the dice that determines how far the Bad Moon moves that battle round, you can choose for the Bad Moon to either not move that battle round or to make 1 move or 2 moves that battle round (do not roll the dice to determine how far it moves).'`,
- when: [START_OF_ROUND],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_JULY_2021],
+ name: `Warmaster`,
+ desc: `If this unit is included in a Gloomspite Gitz army, it is treated as a general even if it is not the model picked to be the army's general.`,
+ when: [DURING_GAME],
+ },
+ {
+ name: `Da Moon Onna Stikk`,
+ desc: `If this unit is included in a Gloomspite Gitz army, friendly Gloomspite Gitz units are affected by the Light of the Bad Moon while they are wholly within 12" of this unit.`,
+ when: [DURING_GAME],
},
{
name: `Babbling Wand`,
- desc: `If Skragrott is your general and is on the battlefield at the start of your hero phase, roll a D6. On a 4+ you receive D3 extra command points.`,
- when: [START_OF_HERO_PHASE],
+ desc: `Once per turn, this unit can issue a command without a command point being spent.`,
+ when: [DURING_GAME],
},
{
- name: `Da Moon Onna Stikk`,
- desc: `If any wounds inflicted by Da Moon Onna Stikk are allocated to an enemy model and not negated, that enemy model suffers 1 mortal wound at the end of each battle round (even if the wounds inflicted by Da Moon Onna Stikk are subsequently healed).`,
- when: [END_OF_ROUND],
+ name: `Loonking's Crown`,
+ desc: `This unit has a ward of 4+.`,
+ when: [WARDS_PHASE],
},
{
name: `Loonking's Crown`,
- desc: `Add 1 to casting and unbinding rolls for Skragrott.`,
+ desc: `Add 1 to casting and unbinding rolls for this unit.`,
when: [HERO_PHASE],
},
{
- name: `Loonking's Crown`,
- desc: `Roll a D6 each time a wound or mortal wound is allocated to this model. On a 4+ that wound or mortal wound is negated.`,
- when: [WOUND_ALLOCATION_PHASE],
+ name: `The Loonking's Entreaty`,
+ desc: `Once per battle, before you roll a dice to determine if the Bad Moon moves at the start of a battle round, if this unit is on the battlefield, you can say that Skragrott will reveal his prediction. If you do so, do not roll a dice. Instead, you can choose if the Bad Moon moves to the next location or stays in its current location.`,
+ when: [START_OF_ROUND],
},
- GenericEffects.WizardTwoSpellsEffect,
],
},
Loonboss: {
mandatory: {
- ...baseLoonboss.mandatory,
+ command_abilities: [keyPicker(CommandAbilities, ["I'm Da Boss, Now Stab 'Em Good!"])],
},
- effects: [...baseLoonboss.effects],
+ effects: [DeadTricksyEffect],
},
'Loonboss on Mangler Squigs': {
- mandatory: {
- command_abilities: [keyPicker(CommandAbilities, ['Bite Da Moon!'])],
- },
- effects: [...RedcapMushroomsEffect, WatchOutEffect, KersplatEffect],
+ effects: [
+ {
+ name: `Bite Da Moon!`,
+ desc: `Once per battle, at the start of the combat phase, you can say that this unit will use this ability. If you do so, until the end of the phase, add 1 to wound rolls for friendly Squig units while they are wholly within 18" of this unit.`,
+ when: [START_OF_COMBAT_PHASE],
+ },
+ WatchOutEffect,
+ KersplatEffect,
+ ],
},
'Loonboss on Giant Cave Squig': {
- mandatory: {
- command_abilities: [keyPicker(CommandAbilities, ["Let's Get Bouncing!"])],
- },
- effects: [...RedcapMushroomsEffect],
+ effects: [
+ {
+ name: `Let's Get Bouncin'!`,
+ desc: `In the combat phase, after this unit has fought for the first time in that phase, you can pick 1 friendly Boingrot Bounderz unit that has not yet fought in that phase, is within 3" of an enemy unit, and is wholly within 12" of this unit. That unit can fight immediately.`,
+ when: [COMBAT_PHASE],
+ },
+ {
+ name: `Moonclan Stabba`,
+ desc: `If this unit made a charge move in the same turn, add 1 to the Damage characteristic of this unit's Moonclan Stabba and improve the Rend characteristic of this unit's Moonclan Stabba by 1.`,
+ when: [COMBAT_PHASE],
+ },
+ ],
},
'Loonboss with Giant Cave Squig': {
- mandatory: {
- command_abilities: [keyPicker(CommandAbilities, ["Let's Get Bouncing!"])],
- },
- effects: [...RedcapMushroomsEffect],
+ effects: [
+ DeadTricksyEffect,
+ {
+ name: `Goin' Somewhere?`,
+ desc: `At the start of the battleshock phase, you can pick 1 other friendly Gloomspite Gitz Grot unit within 3" of this unit and say that the Loonboss will set his Cave Squig loose on them. If you do so, that unit suffers D3 mortal wounds, but for each mortal wound it suffers, add 3 to its Bravery characteristic until the end of the phase.`,
+ when: [START_OF_BATTLESHOCK_PHASE],
+ },
+ {
+ name: `Gobbled Up`,
+ desc: `At the end of the combat phase, pick 1 enemy model within 1" of this unit and roll a dice. If the roll is equal or greater than that model's Wounds characteristic, it is slain.`,
+ when: [END_OF_COMBAT_PHASE],
+ },
+ ],
},
'Madcap Shaman': {
mandatory: {
spells: [keyPicker(Spells, ['Night Shroud'])],
},
effects: [
+ GenericEffects.WizardOneSpellEffect,
{
- name: `Madcap Mushrooms`,
- desc: `Once per battle, in your hero phase, you can attempt to cast one additional spell with a Madcap Shaman. If you do so, and the casting roll is a double, this model suffers D3 mortal wounds after the effects of the spell (if any) have been resolved.`,
+ name: `Madcap Mushroom`,
+ desc: `Once per battle, in your hero phase, you can say this unit will eat its Madcap Mushroom. If you do so, this unit can attempt to cast 1 additional spell in that phase. If it does so and the casting roll is a double, this unit suffers D3 mortal wounds after the effect of the spell has been resolved.`,
when: [HERO_PHASE],
},
- GenericEffects.WizardOneSpellEffect,
],
},
'Fungoid Cave-Shaman': {
@@ -255,56 +232,83 @@ const Units = {
spells: [keyPicker(Spells, ['Spore Maws'])],
},
effects: [
+ GenericEffects.WizardOneSpellEffect,
{
name: `Mouthpiece of Mork`,
- desc: `If the Fungoid Cave-Shaman is on the battlefield at the start of your hero phase, roll a D6. On a 4+ you receive 1 extra command point.`,
+ desc: `If this unit is on the battlefield at the start of your hero phase, roll a dice. On a 4+, you receive 1 extra command point.`,
when: [START_OF_HERO_PHASE],
},
{
name: `Deffcap Mushroom`,
- desc: `Once per battle, a Fungoid Cave-Shaman can attempt to cast 1 extra spell in your hero phase.`,
+ desc: `If this unit is in a Gloomspite Gitz army, once per battle in your hero phase, you can say this unit will eat a Deffcap Mushroom. If you do so, this unit can attempt to cast 1 additional spell in that hero phase, and that spell can be any spell from the Lore of the Moonclans.`,
when: [HERO_PHASE],
},
{
name: `Spore Squig`,
- desc: `Roll a D6 each time you allocate a wound or mortal wound to a Fungoid Cave-Shaman. On a 4+ the wound or mortal wound is negated.`,
- when: [WOUND_ALLOCATION_PHASE],
+ desc: `This unit is not visible to enemy units that are more than 12" away.`,
+ when: [DURING_GAME],
},
- GenericEffects.WizardOneSpellEffect,
],
},
Zarbag: {
mandatory: {
- spells: [keyPicker(Spells, ['Face of Da Bad Moon'])],
+ spells: [keyPicker(Spells, ['Face of Da Bad Moon', 'Jealous Hex'])],
},
effects: [
+ GenericEffects.WizardOneSpellEffect,
{
name: `Sniffer Spite`,
- desc: `Once per battle, before you attempt to cast a spell with Zarbag, you can roll a D6. On a 2+ add 2 to the casting roll.`,
- when: [HERO_PHASE],
+ desc: `At the start of your hero phase, roll a dice. On a 4+, this unit can attempt to cast 1 additional spell in that phase.`,
+ when: [START_OF_HERO_PHASE],
},
- GenericEffects.WizardOneSpellEffect,
],
},
"Zarbag's Gitz": {
- effects: [SquigsGoWildEffect],
+ effects: [
+ {
+ name: `Loonsmasha Fanatic`,
+ desc: `A Loonsmasha Fanatic unit consisting of 1 model lurks with Zarbag's Gitz.`,
+ when: [DURING_GAME],
+ },
+ NettersEffect,
+ {
+ name: `'Protect Da Boss!'`,
+ desc: `Before you allocate a wound or mortal wound to a friendly Zarbag, or instead of making a ward roll for a wound or mortal wound that would be allocated to a friendly Zarbag, if this unit is within 3" of that friendly Zarbag, you can roll a dice. On a 1-2, that wound or mortal wound is allocated to that Zarbag as normal. On a 3+, that wound or mortal wound is allocated to this unit instead.`,
+ when: [WOUND_ALLOCATION_PHASE],
+ },
+ {
+ name: `Snirk Sourtongue`,
+ desc: `The first time this unit is set up on the battlefield, 1 Loonsmasha Fanatics unit consisting of 1 model is added to your army and hidden within this unit as a reserve unit.`,
+ when: [DURING_GAME],
+ },
+ ],
},
- Stabbas: {
+ 'Moonclan Stabbas': {
effects: [
...GrotBaseEffects,
{
- name: `Moon Shields`,
- desc: `Add 1 to save rolls for attacks that target this unit while it has at least 10 models with Moon Shields.`,
- when: [SAVES_PHASE],
+ name: `Champion`,
+ desc: `1 model in this unit can be a Moonclan Boss. Add 1 to the Attacks characteristic of that model's Stabba or Pokin' Spear.`,
+ when: [COMBAT_PHASE],
+ },
+ {
+ name: `Anarchic Hordes`,
+ desc: `While this unit has 20 or more models, models in this unit can contest an objective while they are within 9" of it instead of 6".`,
+ when: [DURING_GAME],
},
],
},
- Shootas: {
+ 'Moonclan Shootas': {
effects: [
...GrotBaseEffects,
{
- name: `Moon Bows`,
- desc: `Add 1 to hit rolls for attacks made with missile weapons by this unit while it has at least 15 models.`,
+ name: `Champion`,
+ desc: `1 model in this unit can be a Moonclan Boss. Add 1 to the Attacks characteristic of that model's Moonclan Bow.`,
+ when: [COMBAT_PHASE],
+ },
+ {
+ name: `Loadsa Arrers`,
+ desc: `Add 1 to Attacks characteristic of this unit's Moonclan Bows while it has 10 or more models.`,
when: [SHOOTING_PHASE],
},
],
@@ -313,113 +317,107 @@ const Units = {
effects: [
{
name: `Release the Fanatics!`,
- desc: `At the start of a charge phase, you can release this unit. If you do so, set up this unit wholly within 3" of the unit it was with, and more than 3" from any enemy units.`,
+ desc: `During deployment, instead of setting up this unit on the battlefield, you can place it to one side and say that it is set up hidden as a reserve unit. You can set up 1 unit hidden in this manner for each friendly Moonclan Grot unit consisting of 5 or more models that is on the battlefield and that does not have the Squig or Fanatic keyword.`,
+ when: [DURING_SETUP],
+ },
+ {
+ name: `Release the Fanatics!`,
+ desc: `At the end of deployment, secretly pick 1 friendly unit that is on the battlefield for this unit to be hidden within and record this information on a piece of paper. The unit picked must be another friendly Moonclan Grot unit consisting of 5 or more models that does not have the Squig or Fanatickeyword. This unit cannot be hidden within a unit that already has another unit hidden within it.`,
+ when: [END_OF_SETUP],
+ },
+ {
+ name: `Release the Fanatics!`,
+ desc: `At the start of the charge phase, you can release this unit. If you do so, set up this unit wholly within 3" of the unit in which it is hidden and more than 3" from all enemy units. If this unit was released in your charge phase, it can attempt a charge in that phase.`,
when: [START_OF_CHARGE_PHASE],
},
{
name: `Release the Fanatics!`,
- desc: `If this unit was released in your charge phase, it can attempt to make a charge move in that phase unless the unit it was with has any restrictions that would stop it from attempting to charge (if it ran, for example); if it was released in the enemy charge phase, it cannot attempt to make a charge move. This unit is destroyed if the unit it is with is destroyed before this unit is released.`,
- when: [CHARGE_PHASE],
+ desc: `If the unit in which this unit is hidden is destroyed before this unit is released, before the last model in that unit is removed from play, set up this unit wholly within 6" of that model, then remove that model as normal.`,
+ when: [WOUND_ALLOCATION_PHASE],
},
- ...FanaticsBaseEffects,
+
+ WhirlingDeathEffect,
],
},
'Sporesplatta Fanatics': {
effects: [
{
name: `Puffshroom Frenzy`,
- desc: `At the start of your hero phase, friendly MOONCLAN GROTS units wholly within 12" of any friendly units with this ability become frenzied until your next hero phase. Add 1 to the Attacks characteristic of melee weapons used by frenzied units.`,
- when: [START_OF_HERO_PHASE],
+ desc: `Add 1 to the Attacks characteristic of melee weapons used by other friendly Gloomspite Gitz units while they are wholly within 9" of any friendly units with this ability.`,
+ when: [COMBAT_PHASE],
+ },
+ {
+ name: `Spore Cloud`,
+ desc: `Visibility between 2 models is blocked if a straight line drawn between the closest points of the 2 models passes across a model in this unit or passes within 1 " of this unit. This ability does not apply if either of the models the line is drawn between is a model in this unit, a model that can fly, or a Monster.`,
+ when: [DURING_GAME],
+ },
+ {
+ name: `A Prod in the Right Direction`,
+ desc: `After deployment but before the first battle round begins, this unit can make a normal move.`,
+ when: [START_OF_GAME],
},
- ...FanaticsBaseEffects,
],
},
'Squig Hoppers': {
effects: [
+ {
+ name: `Champion`,
+ desc: `1 model in this unit can be a Squig Hopper Boss. Add 1 to the Attacks characteristic of that model's Slitta.`,
+ when: [COMBAT_PHASE],
+ },
{
name: `Boing! Boing! Boing!`,
- desc: `After this unit has made a normal move, run or retreat, pick 1 enemy unit and roll a dice for each model in this unit that passed across a model from that unit. For each 4+, that unit suffers 1 mortal wound.`,
+ desc: `After this unit has made a normal move, run or retreat, pick 1 enemy unit and roll a dice for each model in this unit that passed across a model in that unit. For each 4+, that unit suffers 1 mortal wound.`,
when: [MOVEMENT_PHASE],
- rule_sources: [rule_sources.BATTLETOME_GLOOMSPITE_GITZ, rule_sources.ERRATA_AUGUST_2021],
},
],
},
'Boingrot Bounderz': {
effects: [
+ {
+ name: `Champion`,
+ desc: `1 model in this unit can be a Bounder Boss. Add 1 to the Attacks characteristic of that model's Pokin' Lance.`,
+ when: [COMBAT_PHASE],
+ },
{
name: `Boing! Smash!`,
- desc: `After a unit of Boingrot Bounderz has made a charge move, pick 1 enemy unit within 1" of this unit and roll a D6 for each model in this unit. For each 4+ that enemy unit suffers 1 mortal wound.`,
+ desc: `After this unit makes a charge move, pick 1 enemy unit within 1" of this unit and roll a dice for each model in this unit. For each 4+, that enemy unit suffers 1 mortal wound.`,
when: [CHARGE_PHASE],
},
{
name: `Lances of the Bounderz`,
- desc: `Add 1 to wound rolls for attacks made with Boingrot Bounderz Pokin' Lances if this unit made a charge move in the same turn.`,
+ desc: `If this unit made a charge move in the same turn, add 1 to the Damage characteristic of this unit's Pokin' Lances and improve the Rend characteristic of this unit's Pokin' Lances by 1.`,
when: [COMBAT_PHASE],
},
],
},
- Scaremonger: {
- effects: [
- HallucinogenicFungusBrewsEffect,
- SlipperyGitEffect,
- {
- name: `Bogeyman`,
- desc: `You can make a Gobbapalooza Know-wotz roll for a Scaremonger. If you do so, roll a D6. On a 3+ pick 1 friendly MOONCLAN GROT unit wholly within 18" of this model that is visible to them. You can reroll charge rolls and run rolls for that unit until your next hero phase.`,
- when: [HERO_PHASE],
- },
- ],
- },
- Brewgit: {
- effects: [
- HallucinogenicFungusBrewsEffect,
- SlipperyGitEffect,
- {
- name: `Loonshine Potion`,
- desc: `You can make a Gobbapalooza Know-wotz roll for a Brewgit. If you do so, roll a D6. On a 3+ pick 1 friendly MOONCLAN GROT HERO within 18" of this model that is visible to them. You can reroll hit rolls for that HERO until your next hero phase.`,
- when: [HERO_PHASE],
- },
- ],
- },
- Spiker: {
- effects: [
- HallucinogenicFungusBrewsEffect,
- SlipperyGitEffect,
- {
- name: `Poison Brewer`,
- desc: `You can make a Gobbapalooza Know-wotz roll for a Spiker. If you do so, roll a D6. On a 3+ pick 1 friendly MOONCLAN GROT unit wholly within 18" of this model that is visible to them. You can reroll wound rolls of 1 for that unit until your next hero phase.`,
- when: [HERO_PHASE],
- },
- ],
- },
- Boggleye: {
- mandatory: {
- spells: [keyPicker(Spells, ['Mesmerise'])],
- },
- effects: [HallucinogenicFungusBrewsEffect, SlipperyGitEffect, GenericEffects.WizardOneSpellEffect],
- },
- Shroomancer: {
- mandatory: {
- spells: [keyPicker(Spells, ['Fungoid Cloud'])],
- },
- effects: [HallucinogenicFungusBrewsEffect, SlipperyGitEffect, GenericEffects.WizardOneSpellEffect],
- },
'Sneaky Snufflers': {
effects: [
{
name: `Looncap Mushrooms`,
- desc: `At the start of your movement phase, you can say that this unit of Sneaky Snufflers is harvesting looncap mushrooms. If you do so, it cannot move in that movement phase, but you can roll a D6. If the roll is less than or equal to the number of models in this unit, pick 1 friendly MOONCLAN unit wholly within 12" of this unit. Add 1 to the Attacks characteristic of melee weapons used by that unit until your next movement phase. If you pick the same unit to be affected by this ability more than once in the same turn, it suffers 2D6 mortal wounds each time you pick it an additional time.`,
+ desc: `At the start of your movement phase, you can say that this unit is harvesting Looncap Mushrooms. If you do so, it cannot move in that movement phase, but you can make a harvesting roll by rolling a dice. Add 1 to the roll if this unit is affected by the Light of the Bad Moon. On a 1-2, nothing happens. On a 3+, you can pick 1 friendly Gloomspite Gitz unit wholly within 12" of this unit. That unit has a ward of 5+ until the start of your next hero phase. In addition, if the harvesting roll was 6+, add 1 to the Attacks characteristic of that unit's melee weapons until the start of your next hero phase.`,
when: [START_OF_MOVEMENT_PHASE],
},
+ {
+ name: `Off Their 'Eads`,
+ desc: `This unit has a ward of 5+.`,
+ when: [WARDS_PHASE],
+ },
],
},
'Squig Herd': {
effects: [
{
- name: `Go Dat Way!`,
- desc: `You can reroll run and charge rolls for this unit while it includes any Squig Herders.`,
- when: [MOVEMENT_PHASE, CHARGE_PHASE],
+ name: `Squig Herders`,
+ desc: `1 in every 6 models in this unit must be a Squig Herder. Those models are each armed with a Squig Prodder instead of a Fang-filled Gob.`,
+ when: [COMBAT_PHASE],
+ },
+ SquigsGoneWildEffect,
+ {
+ name: `Herding Squigs`,
+ desc: `This unit cannot receive commands. However, at the start of your hero phase, you can roll 1 dice for each Squig Herder in this unit. For each 2+, you can return D3 slain Cave Squigs to this unit. For each 1, 1 Squig Herder in this unit is slain.`,
+ when: [START_OF_HERO_PHASE],
},
- SquigsGoWildEffect,
],
},
'Mangler Squigs': {
@@ -429,12 +427,12 @@ const Units = {
effects: [
{
name: `Crazed Charge`,
- desc: `Roll a D6 for each enemy unit that is within 1" of this model after this model makes a charge move. On a 6, that unit suffers 1 mortal wound.`,
+ desc: `Roll a dice for each enemy unit that is within 1" of this model after this model makes a charge move. On a 2+, that enemy unit suffers D3 mortal wounds.`,
when: [CHARGE_PHASE],
},
{
name: `Fungoid Squig Explosion`,
- desc: `If this model is slain, before removing the model from the battlefield, roll a D6 for each enemy unit within 3" of it. On a 2+, that unit suffers D3 mortal wounds. After allocating all of the mortal wounds to all of the units affected by this ability, you can add 1 Squig Herd unit of up to 5 models to your army. Set up the Squig Herd unit wholly within 9" of this model and more than 3" from any enemy models. This model is then removed from the battlefield.`,
+ desc: `If this model is slain, before removing this model from play, roll a dice for each enemy unit within 3" of it. On a 2+, that enemy unit suffers D3 mortal wounds. Then, you can add 1 Squig Herd unit of up to 5 models to your army. Set up the Squig Herd unit wholly within 9" of this model and more than 3" from all enemy models. This model is then removed from play.`,
when: [WOUND_ALLOCATION_PHASE],
},
{
@@ -444,7 +442,7 @@ const Units = {
},
{
name: `Swallowed Whole`,
- desc: `If the unmodified hit roll for an attack made with this model's Enormous Jaws is 6, that attack inflicts D3 mortal wounds and the attack sequence ends (do not make a wound or save roll).`,
+ desc: `If the unmodified hit roll for an attack made with this model's Enormous Jaws is 6, that attack causes D3 mortal wounds to the target and the attack sequence ends (do not make a wound or save roll).`,
when: [COMBAT_PHASE],
},
],
@@ -453,7 +451,7 @@ const Units = {
effects: [
{
name: `Arcing Spit`,
- desc: `Add 1 to hit rolls for attacks made with Spit-squigs if the target has 10 or more models.`,
+ desc: `When this model makes an attack with Spitsquigs, it can target an enemy unit that is not visible to it. In addition, add 1 to hit rolls for attacks made with Spit-squigs if the target has more than 5 models.`,
when: [SHOOTING_PHASE],
},
],
@@ -463,98 +461,116 @@ const Units = {
spells: [keyPicker(Spells, ['Venom of the Spider God'])],
},
effects: [
- getSpiderVenomEffect(`'s Fangs`, `D3`),
{
- name: `Catchweb Spidershrine`,
- desc: `Add 1 to casting and unbinding rolls for friendly SPIDERFANG WIZARDS while they are within 12" of any friendly models with this ability.`,
+ name: `Wizard`,
+ desc: `This unit can attempt to cast 2 spells in your hero phase, and attempt to unbind 1 spell in the enemy hero phase.`,
when: [HERO_PHASE],
},
+ ArachnarokSpiderVenomEffect,
+ WallCrawlerEffect,
{
- name: `Prophet of the Spider God`,
- desc: `If the Webspinner Shaman on Arachnarok Spider is the general of your army, you can add 2 to the Bravery characteristic of friendly SPIDERFANG units wholly within 24" of this model.`,
- when: [BATTLESHOCK_PHASE],
- },
- {
- name: `Magic`,
- desc: `This model is a WIZARD. Can attempt to cast 2 spells and attempt to unbind 1 spell. Knows Arcane Bolt, Mystic Shield, and Venom of the Spider God.`,
+ name: `Catchweb Spidershrine`,
+ desc: `Add 1 to casting rolls and unbinding rolls for friendly Spiderfang Wizards while they are within 12" of any friendly models with this ability.`,
when: [HERO_PHASE],
},
],
},
'Scuttleboss on Gigantic Spider': {
- mandatory: {
- command_abilities: [keyPicker(CommandAbilities, ['Ride Em All Down'])],
- },
- effects: [getSpiderVenomEffect(``, `1`)],
+ effects: [
+ {
+ name: `Spider Venom`,
+ desc: `If the unmodified hit roll for an attack made by this model is 6, that attack causes 2 mortal wounds on the target and the attack sequence ends (do not make a wound or save roll).`,
+ when: [COMBAT_PHASE],
+ },
+ WallCrawlerEffect,
+ {
+ name: `'Scuttle Away!'`,
+ desc: `Once per battle, at the end of the combat phase, you can say this unit will order his warriors to scuttle away. If you do so, you can pick 1 friendly Spider Riders unit wholly within 12" of this unit. This unit and the unit you picked can retreat, one after the other in the order of your choice.`,
+ when: [END_OF_COMBAT_PHASE],
+ },
+ ],
},
'Webspinner Shaman': {
mandatory: {
spells: [keyPicker(Spells, ['Speed of the Spider God'])],
},
effects: [
+ GenericEffects.WizardOneSpellEffect,
{
name: `Touched by the Spider God`,
- desc: `Roll a D6 each time you allocate a wound or mortal wound to a Webspinner Shaman. On a 5+ that wound or mortal wound is negated.`,
- when: [WOUND_ALLOCATION_PHASE],
+ desc: `This unit has a ward of 5+.`,
+ when: [WARDS_PHASE],
},
- GenericEffects.WizardOneSpellEffect,
],
},
'Spider Riders': {
effects: [
- getSpiderVenomEffect(`'s Fangs`, `1`),
{
- name: `Wall Crawler`,
- desc: `When this model makes a move, it can pass across terrain features in the same manner as a model that can fly.`,
+ name: `Musician`,
+ desc: `1 in every 5 models in this unit can be a Bone Drummer. Add 1 to run rolls for this unit if it includes any Bone Drummers.`,
when: [MOVEMENT_PHASE],
},
{
- name: `Spider Rider Boss`,
- desc: `The leader of this unit is a Spider Rider Boss. You can add 1 to hit rolls for attacks made with melee weapons by a Spider Rider Boss.`,
- when: [COMBAT_PHASE],
+ name: `Standard Bearer`,
+ desc: `1 in every 5 models in this unit can be a Spider Totem Bearer. Add 1 to the Bravery characteristic of this unit if it includes any Spider Totem Bearers.`,
+ when: [BATTLESHOCK_PHASE],
},
{
- name: `Bone Drummer`,
- desc: `1 in every 10 models in this unit can be a Bone Drummer. Add 2 to run rolls for a unit that includes any Bone Drummers.`,
- when: [MOVEMENT_PHASE],
+ name: `Champion`,
+ desc: `1 model in this unit can be a Spider Rider Boss. Add 1 to the Attacks characteristic of that model's Crooked Spear.`,
+ when: [COMBAT_PHASE],
},
{
- name: `Spider Totem Bearer`,
- desc: `1 in every 10 models in this unit can be a Spider Totem Bearer. Add 2 to the Bravery characteristic of a unit that includes any Spider Totem Bearers.`,
- when: [BATTLESHOCK_PHASE],
+ name: `Spider Venom`,
+ desc: `If the unmodified hit roll for an attack made by this model's Giant Spider's Fangs is 6, that attack inflicts 1 mortal wound on the target and the attack sequence ends (do not make a wound or save roll).`,
+ when: [COMBAT_PHASE],
},
+ WallCrawlerEffect,
],
},
'Arachnarok Spider with Flinger': {
- effects: [getSpiderVenomEffect(`'s Fangs`, `D3`)],
- },
- 'Arachnarok Spider with Spiderfang Warparty': {
effects: [
- getSpiderVenomEffect(`'s Fangs`, `D3`),
{
- name: `Voracious Predator`,
- desc: `You can reroll run rolls for this model.`,
- when: [MOVEMENT_PHASE],
+ name: `Flinger`,
+ desc: `The Attacks characteristic of a Flinger is equal to the number of models in the target unit, to a maximum of 20. In addition, if any attacks made with this unit's Flinger score a hit, after those attacks have been resolved, roll a dice. On a 2+, the target unit is entangled until the start of your next hero phase. While a unit is entangled, halve its Move characteristic. A unit cannot be entangled more than once at the same time.`,
+ when: [SHOOTING_PHASE],
+ },
+ {
+ name: `Spider Venom`,
+ desc: `If the unmodified hit roll for an attack made with this model's Monstrous Fangs is 6, that attack causes 3 mortal wounds on the target and the attack sequence ends (do not make a wound or save roll).`,
+ when: [COMBAT_PHASE],
},
+ WallCrawlerEffect,
+ ],
+ },
+ 'Arachnarok Spider with Spiderfang Warparty': {
+ effects: [
+ ArachnarokSpiderVenomEffect,
+ WallCrawlerEffect,
{
- name: `Voracious Predator`,
- desc: `You can reroll charge rolls for this model. In addition, roll a D6 for each enemy unit that is within 1" of this model after this model makes a charge move. On a 2+ that enemy unit suffers D3 mortal wounds.`,
- when: [COMBAT_PHASE, CHARGE_PHASE],
+ name: `'For Da spider God!'`,
+ desc: `This unit counts as 10 models for the purposes of contesting objectives.`,
+ when: [DURING_GAME],
},
],
},
'Skitterstrand Arachnarok': {
effects: [
- getSpiderVenomEffect(`'s Fangs`, `D3`),
+ {
+ name: `Spider Venom`,
+ desc: `If the unmodified hit roll for an attack made with this model's Monstrous Fangs is 6, that attack causes 3 mortal wounds to the target and the attack sequence ends (do not make a wound or save roll).`,
+ when: [COMBAT_PHASE],
+ },
+ WallCrawlerEffect,
{
name: `Ambush From Beyond`,
- desc: `Instead of setting up the Skitterstrand Arachnarok on the battlefield, you can place it to one side and say that it is set up in ambush as a reserve unit.`,
- when: [START_OF_SETUP],
+ desc: `During deployment, instead of setting up this unit on the battlefield, you can place it to one side and say that it is set up in ambush as a reserve unit. At the end of your movement phase, you can set up any friendly units that are in ambush on the battlefield more than 9" from all enemy units. In addition, at the end of the combat phase, you can say that this unit will ambush again. If you do so, remove it from the battlefield. It is set up in ambush as a reserve unit once more.`,
+ when: [DURING_SETUP],
},
{
name: `Ambush From Beyond`,
- desc: `At the end of your movement phase, you can set up one or more of the reserve units that are in ambush on the battlefield more than 9" from any enemy units. Any reserve units that are in ambush that are not set up on the battlefield before the start of the fourth battle round are slain.`,
- when: [END_OF_MOVEMENT_PHASE],
+ desc: `At the end of the combat phase, you can say that this unit will ambush again. If you do so, remove it from the battlefield. It is set up in ambush as a reserve unit once more.`,
+ when: [END_OF_COMBAT_PHASE],
},
],
},
@@ -563,6 +579,7 @@ const Units = {
spells: [keyPicker(Spells, ['Hag Curse'])],
},
effects: [
+ GenericEffects.WizardOneSpellEffect,
{
name: `Hag Regeneration`,
desc: `In your hero phase, you can heal up to D6 wounds allocated to this model.`,
@@ -570,72 +587,86 @@ const Units = {
},
{
name: `Spell-spite`,
- desc: `Each time this model successfully unbinds a spell, you can roll a D6; on a 4+ the Wizard that cast that spell suffers D3 mortal wounds.`,
+ desc: `Each time this model successfully unbinds a spell, you can roll a dice. On a 4+, the caster of that spell suffers D3 mortal wounds.`,
+ when: [HERO_PHASE],
+ },
+ {
+ name: `Terrible Stench`,
+ desc: `Subtract 1 from hit rolls for attacks made with melee weapons that target this model.`,
when: [HERO_PHASE],
},
- TerribleStenchEffect,
- GenericEffects.WizardOneSpellEffect,
],
},
'Dankhold Troggboss': {
- mandatory: {
- command_abilities: [keyPicker(CommandAbilities, ['Instinctive Leader'])],
- },
effects: [
- ReassuringPresenceEffect,
- RegenerationEffect,
- SquigglyBeastFollowersEffect,
- MagicalResistanceEffect,
CrushingGripEffect,
+ {
+ name: `Greater Regeneration`,
+ desc: `At the start of the hero phase, you can heal up to D6 wounds allocated to this unit.`,
+ when: [START_OF_HERO_PHASE],
+ },
+ MagicalResistanceEffect,
+ SquigglyBeastFollowersEffect,
+ {
+ name: `Shepherd of Destruction`,
+ desc: `When this unit issues the All-out Attack command to a friendly Gloomspite Gitz Troggoth unit in the combat phase, until the end of that phase, add 1 to the Attacks characteristic of melee weapons used by that unit.
+
+ Designer's Note: This effect is in addition to the normal effect of All-out Attack.`,
+ when: [COMBAT_PHASE],
+ },
],
},
Mollog: {
effects: [
{
- name: `Jabbertoad`,
- desc: `If any wounds inflicted by a Jabbertoad are allocated to an enemy model and not negated, subtract 1 from hit rolls for attacks made by that model for the rest of that battle round (even if the wounds inflicted by the Jabbertoad are subsequently healed).`,
- when: [SHOOTING_PHASE],
+ name: `Companions`,
+ desc: `Mollog is accompanied by a Bat Squig, Spiteshroom and Stalagsquig. Mollog and his companions are treated as a single model that uses the characteristics above. His companions must remain within 1" of him. Before you allocate a wound or mortal wound to this unit, or instead of making a ward roll for a wound or mortal wound that would be allocated to this unit, you can choose to remove 1 of its companions. If you do so, that wound or mortal wound is negated.`,
+ when: [WOUND_ALLOCATION_PHASE],
},
- MagicalResistanceEffect,
- ReassuringPresenceEffect,
- RegenerationEffect,
{
- name: `Minion Abilities: Batsquig`,
- desc: `At the start of your shooting phase, you can pick 1 enemy unit within 18" of this Mollog and roll a D6. On a 5+ that enemy unit suffers 1 mortal wound. This ability cannot be used if the Bat Squig minion has been removed.`,
+ name: `Bat Squig`,
+ desc: `At the start of your shooting phase, you can pick 1 enemy unit within 18" of this unit and roll a dice. On a 2+, that enemy unit suffers 1 mortal wound. This ability cannot be used if the Bat Squig companion has been removed.`,
when: [START_OF_SHOOTING_PHASE],
},
+ RegenerationEffect,
{
- name: `Minion Abilities: Spiteshroom`,
- desc: `At the start of the combat phase, you can pick 1 enemy unit within 3" of this Mollog and roll a D6. On a 5+ subtract 1 from hit rolls for attacks made by that unit in that combat phase. This ability cannot be used if the Spiteshroom minion has been removed before the start of that combat phase.`,
+ name: `Spiteshroom`,
+ desc: `At the start of the combat phase, you can pick 1 enemy unit within 3" of this unit and roll a dice. On a 5+, subtract 1 from hit rolls for attacks made by that unit in that phase. This ability cannot be used if the Spiteshroom companion has been removed.`,
when: [START_OF_COMBAT_PHASE],
},
{
- name: `Minion Abilities: Stalagsquig`,
- desc: `If you choose to remove this minion when you use the Loyal to the End ability, roll a D6. On a 5+ this minion is not removed, but the wound or mortal wound is still negated.`,
- when: [DURING_GAME],
- },
- {
- name: `Minion Abilities: Loyal to the End`,
- desc: `Each time a wound or mortal wound is allocated to this model and not negated, you can choose to remove 1 minion. If you do so, the wound or mortal wound is negated.`,
+ name: `Stalagsquig`,
+ desc: `If you choose to remove this companion, roll a dice. On a 5+, this companion is not removed, but the wound or mortal wound is still negated. This roll is not a ward roll.`,
when: [WOUND_ALLOCATION_PHASE],
},
],
},
'Fellwater Troggoths': {
- effects: [RegenerationEffect, TerribleStenchEffect],
+ effects: [
+ RegenerationEffect,
+ {
+ name: `Terrible Stench`,
+ desc: `Subtract 1 from hit rolls for attacks made with melee weapons by enemy units while they are within 3" of any friendly units with this ability.`,
+ when: [COMBAT_PHASE],
+ },
+ {
+ name: `Noxious Vomit`,
+ desc: `If any wounds caused by this unit's Noxious Vomit are allocated to an enemy unit and not negated, that enemy unit is drenched in vomit until the start of your next hero phase. While a unit is drenched in vomit, subtract 1 from save rolls for attacks that target that unit, and ignore positive modifiers to save rolls for attacks that target that unit. A unit cannot be drenched in vomit more than once at the same time.`,
+ when: [WOUND_ALLOCATION_PHASE],
+ },
+ ],
},
'Sourbreath Troggoths': {
effects: [
- // This Regeneration rule is not like the others, since it's a per-model basis
{
name: `Regeneration`,
- desc: `Roll a D6 for each Sourbreath Troggoth in each of your hero phases. On a 2+ that model heals D3 wounds.`,
+ desc: `In your hero phase, you can roll a dice for this unit. If you do so, on a 4+, heal up to D3 wounds allocated to this unit.`,
when: [HERO_PHASE],
},
{
name: `Too Dumb to Die`,
- desc: `Roll a D6 each time a Sourbreath Troggoth suffers a wound or mortal wound that would slay it. On a 4+ that wound or mortal wound is negated.`,
- when: [WOUND_ALLOCATION_PHASE],
+ desc: `This unit has a ward of 5+.`,
+ when: [WARDS_PHASE],
},
],
},
@@ -644,76 +675,141 @@ const Units = {
RegenerationEffect,
{
name: `Stony Skin`,
- desc: `Roll a D6 each time you allocate a wound or mortal wound to Rockgut Troggoths. On a 5+ that wound or mortal wound is negated.`,
- when: [WOUND_ALLOCATION_PHASE],
+ desc: `This unit has a ward of 5+.`,
+ when: [WARDS_PHASE],
},
{
name: `Throwin' Boulders`,
- desc: `In your shooting phase, pick 1 enemy unit within 12" of Rockgut Troggoths and visible to it, and roll a D6. If the roll is equal to or less than the number of models in this unit, that enemy unit suffers D3 mortal wounds.`,
+ desc: `Do not use the attack sequence for an attack made with Throwin' Boulders. Instead, pick 1 enemy unit within range and roll a dice. Add 1 to the roll if the target unit has 5 or more models. On a 4+, that enemy unit suffers 1 mortal wound.`,
when: [SHOOTING_PHASE],
},
],
},
'Dankhold Troggoths': {
- effects: [
- // Differs from ReassuringPresenceEffect because it's only 12"
- {
- name: `Reassuring Presence`,
- desc: `Add 1 to the Bravery characteristic of friendly GLOOMSPITE GITZ units that are wholly within 12" of any friendly models with this ability.`,
- when: [BATTLESHOCK_PHASE],
- },
- RegenerationEffect,
- SquigglyBeastFollowersEffect,
- MagicalResistanceEffect,
- CrushingGripEffect,
- ],
+ effects: [CrushingGripEffect, MagicalResistanceEffect, RegenerationEffect, SquigglyBeastFollowersEffect],
},
'Aleguzzler Gargant': {
effects: [
{
name: `Drunken Stagger`,
- desc: `If a charge roll for an Aleguzzler Gargant is a double, this model cannot make a charge move that phase. In addition, the players must roll off. The player who wins the roll-off picks a point on the battlefield 3" from this model. Each unit within 2" of that point suffers D3 mortal wounds.`,
+ desc: `You can attempt a charge with this unit if it is within 18" of the enemy instead of 12". In addition, roll 3D6 instead of 2D6 when making a charge roll for this unit. However, if a charge roll for this unit includes three dice that show the same number before modifiers are applied, this unit cannot make a charge move in that phase and the players must roll off. The winner must pick a point on the battlefield 3" from this unit. Each unit within 2" of that point suffers D3 mortal wounds.`,
when: [CHARGE_PHASE],
},
{
name: `Stuff Em In Me Bag`,
- desc: `After an Aleguzzler Gargant piles in, you can pick 1 enemy model within 3" of this model and roll a D6. If the roll is equal to or greater than double that model's Wounds characteristic, it is slain.`,
+ desc: `After this model piles in, you can pick 1 enemy model within 3" of this model and roll a dice. If the roll is equal to or greater than double that model's Wounds characteristic, it is slain.`,
when: [COMBAT_PHASE],
},
...GenericEffects.Gargant,
],
},
- 'Bonegrinder Gargant': {
+ "Rippa's Snarlfangs": {
effects: [
{
- name: `I'll Bite Your Head Off!`,
- desc: `At the start of the combat phase, you can pick 1 enemy model that has a Wounds characteristic of 4 or less and that is within 3" of this model, and roll a D6. On a 6, that model is slain.`,
- when: [START_OF_COMBAT_PHASE],
+ name: `Vindictive Attackers`,
+ desc: `Add 1 to hit rolls and wound rolls for attacks made by this unit that target a unit that has 1 or more wounds allocated to it.`,
+ when: [COMBAT_PHASE],
},
+ FerociousPounceEffect,
+ ],
+ },
+ 'Snarlfang Riders': {
+ effects: [
{
- name: `Jump Up and Down`,
- desc: `At the end of the combat phase, you can pick 1 enemy unit within 1" of this model. If you do so, roll a D6. If the dice roll is equal to or less than the number of models in that unit, that unit suffers D6 mortal wounds.`,
- when: [END_OF_COMBAT_PHASE],
+ name: `Champion`,
+ desc: `1 model in this unit can be a Gitboss. Add 1 to the Attacks characteristic of that model's Stabbin' Stikka.`,
+ when: [COMBAT_PHASE],
+ },
+ {
+ name: `Standard Bearer`,
+ desc: `1 in every 5 models in this unit can be a Gitflag Waver. Add 1 to the Bravery characteristic of this unit if it includes any Gitflag Wavers.`,
+ when: [BATTLESHOCK_PHASE],
+ },
+ {
+ name: `Musician`,
+ desc: `1 in every 5 models in this unit can be a Horn Blaster. Add 1 to charge rolls for this unit if it includes any Horn Blasters.`,
+ when: [CHARGE_PHASE],
},
{
- name: `Longshanks`,
- desc: `This model is eligible to fight in the combat phase if it is within 6" of an enemy unit instead of 3", and it can move an extra 3" when it piles in.`,
+ name: `'Can't Catch Us!'`,
+ desc: `When this unit receives the Redeploy command, you can reroll the dice that determines the distance it can move. In addition, immediately after this unit redeploys, it can shoot. This unit cannot receive the Unleash Hell command in the same turn it has received the Redeploy command.`,
+ when: [MOVEMENT_PHASE],
+ },
+ FerociousPounceEffect,
+ {
+ name: `Smell Weakness`,
+ desc: `Add 1 to hit rolls for attacks made with this unit's Slavering Jaws that target a unit that has 1 or more wounds allocated to it.`,
when: [COMBAT_PHASE],
},
- ...GenericEffects.Gargant,
],
},
- "Rippa's Snarlfangs": {
+ Gobbapalooza: {
+ mandatory: {
+ spells: [keyPicker(Spells, ['Mesmerise', 'Fungoid Cloud'])],
+ },
effects: [
{
- name: `Smell Weakness`,
- desc: `Add 1 to the hits rolls for this unit's Snarlfang's Jaws that target a unit with 1 or more wounds allocated to it.`,
- when: [COMBAT_PHASE],
+ name: `Wizard`,
+ desc: `This unit's Boggleye can attempt to cast 1 spell in your hero phase and attempt to unbind 1 spell in the enemy hero phase. In addition, this unit's Shroomancer can attempt to cast 1 spell in your hero phase and attempt to unbind 1 spell in the enemy hero phase.
+
+ Each time you take a spell lore enhancement, the spell that you pick for this unit is known by both the Boggleye and the Shroomancer. No other models in this unit can attempt to cast or unbind spells.`,
+ when: [HERO_PHASE],
},
+ HallucinogenicFungusBrewsEffect,
{
- name: `Ferocious Pounce`,
- desc: `This unit is eligible to fight in the combat phase if it is within 6" instead of 3" of an enemy unit. It can move an extra 3" when it piles in.`,
- when: [COMBAT_PHASE],
+ name: `Gobbapalooza Know-wotz`,
+ desc: `Once per turn in your hero phase, this unit can use its Gobbapalooza Know-wotz. If it does so, pick 1 of the following effects to apply:
+
+ Glareface Dance: You can only pick this effect while this unit has a Scaremonger. Pick 1 friendly Gloomspite Gitz unit wholly within 12" of this unit. Add 1 to run rolls and charge rolls for that unit until the start of your next hero phase.
+
+ Peddled Potion: You can only pick this effect while this unit has a Brewgit. Pick 1 friendly Gloomspite Gitz Hero wholly within 12" of this unit. Add 1 to hit rolls and wound rolls for attacks made with melee weapons by that unit until the start of your next hero phase.
+
+ Nasty Poisons: You can only pick this effect while this unit has a Spiker. Pick 1 friendly Gloomspite Gitz unit wholly within 12" of this unit. Improve the Rend characteristic of that unit's weapons by 1 until the start of your next hero phase. `,
+ when: [HERO_PHASE],
+ },
+ ],
+ },
+ 'Grinkrak the Great': {
+ effects: [
+ DeadTricksyEffect,
+ {
+ name: `'I Dub Thee...'`,
+ desc: `At the start of the combat phase, you can pick 1 other friendly Moonclan unit within 3" of this unit to be dubbed. If you do so, until the end of that phase, if any models in that unit are slain, those models can fight before they are removed from play.`,
+ when: [START_OF_COMBAT_PHASE],
+ },
+ ],
+ },
+ "Grinkrak's Looncourt": {
+ effects: [
+ {
+ name: `The Looncourt's Quest`,
+ desc: `After this unit has been set up on the battlefield for the first time, you can pick 1 objective or 1 terrain feature in enemy territory to be the object of this unit's quest. If you gain control of that objective or terrain feature while this unit is contesting it, this unit completes its quest. Once the quest is complete, for the rest of the battle, this unit has a ward of 4+.`,
+ when: [DURING_GAME],
+ },
+ {
+ name: `Grinkrak's Toadies`,
+ desc: `Before you allocate a wound or mortal wound to a friendly Grinkrak, or instead of making a ward roll for a wound or mortal wound that would be allocated to a friendly Grinkrak, if this unit is within 3" of that friendly Grinkrak, you can roll a dice. On a 1-2, that wound or mortal wound is allocated to that Grinkrak as normal. On a 3+, that wound or mortal wound is allocated to this unit instead.`,
+ when: [WOUND_ALLOCATION_PHASE],
+ },
+ ],
+ },
+ Squigboss: {
+ effects: [
+ {
+ name: `Mycophile's Pouch`,
+ desc: `In your hero phase you can pick 1 friendly Squig unit within 3" of this unit to be fed a batch of shrooms. If you do so, apply 1 of the following effects to that unit. Each effect lasts until the start of your next hero phase. The same unit cannot be fed a batch of shrooms more than once in the same phase.
+
+ Crimson Deffcap: Add 3" to that unit's Move characteristic.
+
+ Yellow Lurka: If the unmodified hit roll for an attack made by that unit with a Fang-filled Gob, Massive Fang-filled Gob or Huge Fang-filled Gobs is 6, that attack causes 1 mortal wound to the target in addition to any damage it inflicts.
+
+ Sproutin' Moon: Add 1 to the Attacks characteristic of that unit's Fang- filled Gob, Massive Fang-filled Gob or Huge Fang-filled Gobs.`,
+ when: [HERO_PHASE],
+ },
+ {
+ name: `Release Da Squigs`,
+ desc: `Once per battle, at the start of your hero phase, you can say this unit will release da squigs. If you do so, each friendly Squig Herd unit wholly within 12" of this unit can make a normal move.`,
+ when: [START_OF_HERO_PHASE],
},
],
},
diff --git a/src/factions/nighthaunt/endless_spells.ts b/src/factions/nighthaunt/endless_spells.ts
index f5cb53ad4..3e0bb51b9 100644
--- a/src/factions/nighthaunt/endless_spells.ts
+++ b/src/factions/nighthaunt/endless_spells.ts
@@ -8,7 +8,7 @@ const EndlessSpells = {
effects: [
{
name: `Summoning`,
- desc: `Casting value of 6 and a range of 6". Only Nighthaunt Wizards can attempt to summon this endless spell. If successfully cast, set up this endless spell wholly within range and visible to the caster, and more than 1 " from all models and other endless spells or invocations.`,
+ desc: `Casting value of 6 and a range of 6". Only Nighthaunt Wizards can attempt to summon this endless spell. If successfully cast, set up this endless spell wholly within range and visible to the caster, and more than 1" from all models and other endless spells or invocations.`,
when: [HERO_PHASE],
},
{
@@ -42,7 +42,7 @@ const EndlessSpells = {
effects: [
{
name: `Summoning`,
- desc: `Casting value of 6 and a range of 12". Only Nighthaunt Wizards can attempt to summon this endless spell. If successfully cast, set up this endless spell wholly within range and visible to the caster, and more than 1 " from all models and other endless spells or invocations.`,
+ desc: `Casting value of 6 and a range of 12". Only Nighthaunt Wizards can attempt to summon this endless spell. If successfully cast, set up this endless spell wholly within range and visible to the caster, and more than 1" from all models and other endless spells or invocations.`,
when: [HERO_PHASE],
},
GenericEffects.Predatory.Eight_Inches,
diff --git a/src/factions/skaven/endless_spells.ts b/src/factions/skaven/endless_spells.ts
index 090163abd..c183410f0 100644
--- a/src/factions/skaven/endless_spells.ts
+++ b/src/factions/skaven/endless_spells.ts
@@ -14,7 +14,7 @@ const EndlessSpells = {
effects: [
{
name: `Summoning`,
- desc: `Casting value of 8 and a range of 13". If successfully cast, set up 1 part of the endless spell wholly within range of the caster, then set up the second and third parts exactly 7" from the first part and exactly 7" from each other (the parts will form a triangle with each part exactly 7" from the other two parts). All of the parts must be set up more than 1 " from all models, other endless spells and invocations. Only Skaven Wizards can attempt to summon this endless spell.`,
+ desc: `Casting value of 8 and a range of 13". If successfully cast, set up 1 part of the endless spell wholly within range of the caster, then set up the second and third parts exactly 7" from the first part and exactly 7" from each other (the parts will form a triangle with each part exactly 7" from the other two parts). All of the parts must be set up more than 1" from all models, other endless spells and invocations. Only Skaven Wizards can attempt to summon this endless spell.`,
when: [HERO_PHASE],
},
{
@@ -38,7 +38,7 @@ const EndlessSpells = {
},
{
name: `Summoning`,
- desc: `Casting value of 5 and a range of 18". If successfully cast, set up the endless spell wholly within range and visible to the caster, more than 1 " from all models, other endless spells and invocations. Only Skaven Wizards can attempt to summon this endless spell.`,
+ desc: `Casting value of 5 and a range of 18". If successfully cast, set up the endless spell wholly within range and visible to the caster, more than 1" from all models, other endless spells and invocations. Only Skaven Wizards can attempt to summon this endless spell.`,
when: [HERO_PHASE],
},
{
@@ -58,7 +58,7 @@ const EndlessSpells = {
GenericEffects.Predatory.Two_D6,
{
name: `Summoning`,
- desc: `Casting value of 5 and a range of 13". If successfully cast, set up the endless spell wholly within range and visible to the caster, more than 1 " from all models, other endless spells and invocations. Only Skaven Wizards can attempt to summon this endless spell.`,
+ desc: `Casting value of 5 and a range of 13". If successfully cast, set up the endless spell wholly within range and visible to the caster, more than 1" from all models, other endless spells and invocations. Only Skaven Wizards can attempt to summon this endless spell.`,
when: [HERO_PHASE],
},
{
diff --git a/src/factions/skaven/units.ts b/src/factions/skaven/units.ts
index 04b96e7e8..ae47f721b 100644
--- a/src/factions/skaven/units.ts
+++ b/src/factions/skaven/units.ts
@@ -215,7 +215,7 @@ const Units = {
GenericEffects.WizardTwoSpellsEffect,
{
name: `Warpstone Tokens`,
- desc: `Once per turn, in your hero phase, when this unit attempts to cast a spell, you can say that it will first consume a warpstone token. If you do so, roll 3D6. This roll cannot be rerolled or modified. If the 3D6 roll is 13, the spell is successfully cast and cannot be unbound; however, after the effects of the spell have been resolved, this unit suffers D3 mortal wounds that cannot be negated. Ifthe 3D6 roll was not 13, remove 1 dice of your choice and use the remaining 2D6 as the casting roll.`,
+ desc: `Once per turn, in your hero phase, when this unit attempts to cast a spell, you can say that it will first consume a warpstone token. If you do so, roll 3D6. This roll cannot be rerolled or modified. If the 3D6 roll is 13, the spell is successfully cast and cannot be unbound; however, after the effects of the spell have been resolved, this unit suffers D3 mortal wounds that cannot be negated. If the 3D6 roll was not 13, remove 1 dice of your choice and use the remaining 2D6 as the casting roll.`,
when: [HERO_PHASE],
},
],
@@ -338,7 +338,7 @@ const Units = {
effects: [
{
name: `Rolling Doom`,
- desc: `When this unit moves, it can pass across models with a Wounds characteristic of 3 or less in the same manner as a unit that can fly. In addition, after this unit has moved, roll a dice for each unit that has any models it passed across and for each other unit within 1 " of this unit at the end of the move. On a 2+, that unit suffers D3 mortal wounds.`,
+ desc: `When this unit moves, it can pass across models with a Wounds characteristic of 3 or less in the same manner as a unit that can fly. In addition, after this unit has moved, roll a dice for each unit that has any models it passed across and for each other unit within 1" of this unit at the end of the move. On a 2+, that unit suffers D3 mortal wounds.`,
when: [MOVEMENT_PHASE],
},
{
@@ -688,7 +688,7 @@ const Units = {
name: `A Stirring Beyond the Veil`,
desc: `Once per battle, at the start of your hero phase, if 7 or more wounds are allocated to this unit, you can say that the Grey Seer will shatter the Screaming Bell. If you do so, roll a dice. On a 1, this unit is destroyed. On any other roll, add the number of wounds allocated to this unit to the roll.
- Ifthe modified roll is 12 or less, the Screaming Bell is shattered see below). If the modified roll is 13 or more, the Screaming Bell is shattered and you can summon 1 Verminlord to the battlefield and add it to your army. The Verminlord must be set up wholly within 13" of this unit. It can be set up within 3" of an enemy unit if this unit is within 3" of that enemy unit, otherwise it must be set up more than 9" from all enemy units. If this unit's Screaming Bell is shattered, it can no longer attempt to cast Cracks Call and it can no longer use its Peal of Doom ability`,
+ If the modified roll is 12 or less, the Screaming Bell is shattered see below). If the modified roll is 13 or more, the Screaming Bell is shattered and you can summon 1 Verminlord to the battlefield and add it to your army. The Verminlord must be set up wholly within 13" of this unit. It can be set up within 3" of an enemy unit if this unit is within 3" of that enemy unit, otherwise it must be set up more than 9" from all enemy units. If this unit's Screaming Bell is shattered, it can no longer attempt to cast Cracks Call and it can no longer use its Peal of Doom ability`,
when: [START_OF_HERO_PHASE],
},
{
diff --git a/src/generic_rules/effects.ts b/src/generic_rules/effects.ts
index 58b1fb1b1..9e4c79603 100644
--- a/src/generic_rules/effects.ts
+++ b/src/generic_rules/effects.ts
@@ -28,7 +28,7 @@ const GenericEffects = {
Gargant: [
{
name: `Timber!`,
- desc: `If this model is slain, before removing the model from the battlefield the players must roll off. The player who wins the roll-off picks a point on the battlefield 3" from this model. Each unit within 2" of that point suffers D3 mortal wounds. This model is then removed from the battlefield.`,
+ desc: `If this model is slain, before removing the model from the battlefield, the players must roll off. The winner picks a point on the battlefield 3" from the slain model. Each unit within 2" of that point that is not a Gargant or a Mega-Gargant suffers D3 mortal wounds. The slain model is then removed from the battlefield.`,
when: [WOUND_ALLOCATION_PHASE],
shared: true,
},
diff --git a/src/tests/battlescribe/battlescribeHTML.test.ts b/src/tests/battlescribe/battlescribeHTML.test.ts
index 1cb14dd8a..0a58803c2 100644
--- a/src/tests/battlescribe/battlescribeHTML.test.ts
+++ b/src/tests/battlescribe/battlescribeHTML.test.ts
@@ -591,19 +591,12 @@ describe('getBattlescribeArmy', () => {
const res = getBattlescribeArmy(parsedText)
expect(res.factionName).toEqual(GLOOMSPITE_GITZ)
- expect(res.selections.command_abilities).toEqual(['Instinctive Leader'])
- expect(res.selections.spells).toEqual([
- 'Arcane Bolt',
- 'Mystic Shield',
- 'Spore Maws',
- 'The Great Green Spite',
- ])
expect(res.selections.units).toEqual([
'Dankhold Troggboss',
'Fungoid Cave-Shaman',
'Fellwater Troggoths',
'Rockgut Troggoths',
- 'Stabbas',
+ 'Moonclan Stabbas',
])
})
diff --git a/src/tests/fixtures/warhammer_app/1632017726597-Warhammer_App.txt b/src/tests/fixtures/warhammer_app/1632017726597-Warhammer_App.txt
deleted file mode 100644
index 184721e3f..000000000
--- a/src/tests/fixtures/warhammer_app/1632017726597-Warhammer_App.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-Army Name: Trolls
-Army Faction: Gloomspite Gitz
-Subfaction: Glogg's Megamob
-Battlepack: Pitched Battles
-Points Limit: 1000 pts
-Grand Strategies: Hold the Line
-Triumphs: Bloodthirsty
-
-Core Battalions
- Battle Regiment
- Stabbas
- Battalion Slot Filled: Troops
- Battlefield Role: Battleline
- Points Cost: 150 pts
- Mollog
- Battalion Slot Filled: Sub-commander
- Battlefield Role: Leader
- Points Cost: 175 pts
- Dankhold Troggboss (General)
- Battalion Slot Filled: Commander
- Battlefield Role: Leader
- Enhancements
- Command Traits: Shepherd of Idiotic Destruction
- Artefacts of Power: Aetherquartz-studded Hide
- Points Cost: 250 pts
- Rockgut Troggoths
- Battalion Slot Filled: Troops
- Battlefield Role: Battleline
- Points Cost: 145 pts
- Aleguzzler Gargant
- Battalion Slot Filled: Monster
- Battlefield Role: Behemoth
- Points Cost: 165 pts
- Fungoid Cave-Shaman
- Battalion Slot Filled: Sub-commander
- Battlefield Role: Leader
- Enhancements
- Spells: Itchy Nuisance
- Points Cost: 95 pts
-
-Endless Spells/Invocations
- The Burning Head
- Points Cost: 20 pts
-
-Faction Terrain
- Bad Moon Loonshrine
-
-Total Points: 1000 pts
-Valid: Created with Warhammer Age of Sigmar: The App
\ No newline at end of file
diff --git a/src/tests/fixtures/warscroll/json/1614288189630-Warscroll_Builder.json b/src/tests/fixtures/warscroll/json/1614288189630-Warscroll_Builder.json
deleted file mode 100644
index 5b679b316..000000000
--- a/src/tests/fixtures/warscroll/json/1614288189630-Warscroll_Builder.json
+++ /dev/null
@@ -1,91 +0,0 @@
-[
- "Allegiance: Gloomspite Gitz",
- "LEADERS",
- "M",
- "S",
- "W",
- "B",
- "Dankhold Troggboss \\(250\\)",
- "6\"",
- "4+",
- "12",
- "7",
- "- General",
- "- Command Trait: Sheperd of Idiotic Destruction",
- "- Artefact: Aetherquartz-studded Hide",
- "Orange Hat \\(90\\)",
- "Fungoid Cave-Shaman",
- "5\"",
- "6+",
- "4",
- "4",
- "- Lore of the Moonclans: Itchy Nuisance",
- "Blue Hat \\(90\\)",
- "Fungoid Cave-Shaman",
- "5\"",
- "6+",
- "4",
- "4",
- "- Lore of the Moonclans: The Hand of Gork",
- "UNITS",
- "M",
- "S",
- "W",
- "B",
- "15 x Boingrot Bounderz \\(300\\)",
- "2D6\"",
- "4+",
- "2",
- "5",
- "3 x Fellwater Troggoths \\(150\\)",
- "6\"",
- "5+",
- "4",
- "5",
- "3 x Fellwater Troggoths \\(150\\)",
- "6\"",
- "5+",
- "4",
- "5",
- "3 x Rockgut Troggoths \\(140\\)",
- "6\"",
- "5+",
- "4",
- "5",
- "9 x Rockgut Troggoths \\(420\\)",
- "6\"",
- "5+",
- "4",
- "5",
- "6 x Squig Herd \\(70\\)",
- "5\"",
- "6+",
- "2",
- "3",
- "6 x Squig Herd \\(70\\)",
- "5\"",
- "6+",
- "2",
- "3",
- "6 x Squig Herd \\(70\\)",
- "5\"",
- "6+",
- "2",
- "3",
- "BEHEMOTHS",
- "M",
- "S",
- "W",
- "B",
- "Aleguzzler Gargant \\(160\\)",
- "8\"*",
- "5+",
- "12",
- "6",
- "ENDLESS SPELLS / TERRAIN / COMMAND POINTS",
- "Scrapskuttle's Arachnacauldron \\(40\\)",
- "* See Warscroll",
- "TOTAL: 2000/2000 WOUNDS: 170",
- "LEADERS: 3/6 BATTLELINES: 4 \\(3+\\) BEHEMOTHS: 1/4 ARTILLERY: 0/4",
- "ARTEFACTS: 1/1 ENDLESS SPELLS: 1/3 ALLIES: 0/400"
-]
\ No newline at end of file
diff --git a/src/tests/fixtures/warscroll/json/1633314984451-Warscroll_Builder.json b/src/tests/fixtures/warscroll/json/1633314984451-Warscroll_Builder.json
deleted file mode 100644
index 1a73adcdf..000000000
--- a/src/tests/fixtures/warscroll/json/1633314984451-Warscroll_Builder.json
+++ /dev/null
@@ -1,34 +0,0 @@
-[
- "Player Name: AF - BWG",
- "List Name: Trolls 1,500 pts",
- "Allegiance: Gloomspite Gitz",
- "- Option: Glogg's Megamob",
- "- Mortal Realm: Aqshy",
- "- Grand Strategy: Hold the Line",
- "- Triumphs: Bloodthirsty",
- "LEADERS",
- "Dankhold Troggboss \\(250\\)*",
- "- General",
- "- Command Trait: Shepard of Idiotic Destruction",
- "- Artefact: Aetherquartz-studded Hide",
- "Fungoid Cave-Shaman \\(95\\)*",
- "- Lore of the Moonclans: The Hand of Gork",
- "Madcap Shaman \\(80\\)*",
- "- Lore of the Moonclans: Itchy Nuisance",
- "Breaka-Boss on Mirebrute Troggoth \\(180\\)",
- "- Allies",
- "UNITS",
- "3 x Fellwater Troggoths \\(155\\)*",
- "3 x Fellwater Troggoths \\(155\\)*",
- "3 x Rockgut Troggoths \\(145\\)*",
- "3 x Rockgut Troggoths \\(145\\)*",
- "1 x Marshcrawla Sloggoth \\(150\\)*",
- "ENDLESS SPELLS & INVOCATIONS",
- "Mork's Mighty Mushroom \\(100\\)",
- "CORE BATTALIONS",
- "*Battle Regiment",
- "TOTAL: 1455/2000 WOUNDS: 92",
- "LEADERS: 4/6 BATTLELINES: 4 \\(3+\\) BEHEMOTHS: 0/4 ARTILLERY: 0/4",
- "ARTEFACTS: 1/1 ENDLESS SPELLS & INVOCATIONS: 1/3 ALLIES: 180/400",
- "REINFORCED UNITS: 0/4"
-]
\ No newline at end of file
diff --git a/src/tests/fixtures/warscroll/pdf/BossShaman.pdf b/src/tests/fixtures/warscroll/pdf/BossShaman.pdf
deleted file mode 100644
index 76c534932..000000000
Binary files a/src/tests/fixtures/warscroll/pdf/BossShaman.pdf and /dev/null differ
diff --git a/src/tests/warhammer_app/warhammerApp.test.ts b/src/tests/warhammer_app/warhammerApp.test.ts
index ccaa03a33..cb1814e48 100644
--- a/src/tests/warhammer_app/warhammerApp.test.ts
+++ b/src/tests/warhammer_app/warhammerApp.test.ts
@@ -14,16 +14,12 @@ describe('getWarhammerAppArmy', () => {
expect(res.factionName).toEqual(GLOOMSPITE_GITZ)
expect(res.selections.flavors).toContain("Glogg's Megamob")
expect(res.selections.units).toContain('Loonboss')
- expect(res.selections.artifacts).toContain('Aetherquartz-studded Hide')
- expect(res.selections.artifacts).toContain('Amulet of Destiny')
expect(res.selections.grand_strategies).toContain('Sever the Head')
- expect(res.selections.spells).toContain('Call da Moon')
expect(res.selections.spells).toContain('Itchy Nuisance')
expect(res.selections.battalions).toContain('Battle Regiment')
expect(res.selections.battalions).toContain('Linebreaker')
expect(res.selections.battalions).toContain('Warlord')
expect(res.selections.scenery).toContain('Bad Moon Loonshrine')
- expect(res.errors).toEqual([])
})
it('should correctly read 1640117854602-Warhammer_App', () => {
@@ -147,13 +143,6 @@ describe('getWarhammerAppArmy', () => {
])
})
- it('should correctly read 1632017726597-Warhammer_App', () => {
- const parsedText = getFile('1632017726597-Warhammer_App')
- const res = getWarhammerAppArmy(parsedText)
- expect(res.selections.command_traits).toContain('Shepherd of Idiotic Destruction')
- expect(res.errors).toEqual([])
- })
-
it('should correctly read 1632069915266-Warhammer_App', () => {
const parsedText = getFile('1632069915266-Warhammer_App')
const res = getWarhammerAppArmy(parsedText)
diff --git a/src/tests/warscroll/warscrollJson.test.ts b/src/tests/warscroll/warscrollJson.test.ts
index fde49d874..c20f58402 100644
--- a/src/tests/warscroll/warscrollJson.test.ts
+++ b/src/tests/warscroll/warscrollJson.test.ts
@@ -100,12 +100,6 @@ describe('getWarscrollArmyFromJson', () => {
expect(res.selections.artifacts).toContain('Amulet of Silvered Sigmarite')
})
- it('should correctly read 1633314984451-Warscroll_Builder', () => {
- const parsedText = getFile('1633314984451-Warscroll_Builder')
- const res = getWarscrollArmyFromPdf(parsedText)
- expect(res.selections.command_traits).toContain('Shepherd of Idiotic Destruction')
- })
-
it('should correctly read 1633446211037-Warscroll_Builder', () => {
const parsedText = getFile('1633446211037-Warscroll_Builder')
const res = getWarscrollArmyFromPdf(parsedText)
@@ -297,12 +291,6 @@ describe('getWarscrollArmyFromJson', () => {
expect(res.selections.units).toContain('Bonegrinder Mega-Gargant')
})
- it('should correctly read 1614288189630-Warscroll_Builder', () => {
- const parsedText = getFile('1614288189630-Warscroll_Builder')
- const res = getWarscrollArmyFromPdf(parsedText)
- expect(res.selections.command_traits).toContain('Shepherd of Idiotic Destruction')
- })
-
it('should correctly read 1614371993867-Warscroll_Builder', () => {
const parsedText = getFile('1614371993867-Warscroll_Builder')
const res = getWarscrollArmyFromPdf(parsedText)
diff --git a/src/tests/warscroll/warscrollPdf.test.ts b/src/tests/warscroll/warscrollPdf.test.ts
index 49daadd23..33187db87 100644
--- a/src/tests/warscroll/warscrollPdf.test.ts
+++ b/src/tests/warscroll/warscrollPdf.test.ts
@@ -6,7 +6,6 @@ import {
CITIES_OF_SIGMAR,
DESTRUCTION_GRAND_ALLIANCE,
FYRESLAYERS,
- GLOOMSPITE_GITZ,
KHARADRON_OVERLORDS,
KHORNE,
LUMINETH_REALMLORDS,
@@ -803,32 +802,6 @@ describe('getWarscrollArmyFromPdf', () => {
})
})
- it('adds the command ability that the Boss Shaman trait gives you', () => {
- const pdfText = getFile('BossShaman')
- const parsedText = parsePdf(pdfText)
- const res = getWarscrollArmyFromPdf(parsedText)
-
- expect(res.factionName).toEqual(GLOOMSPITE_GITZ)
- expect(res.selections).toEqual({
- grand_strategies: [],
- flavors: [],
- artifacts: [],
- incarnates: [],
- monstrous_rampages: [],
- battalions: [],
- command_abilities: ["I'm Da Boss, Now Stab 'Em Good!"],
- endless_spells: [],
- mount_traits: [],
- prayers: [],
- scenery: [],
- spells: ['Spore Maws'],
- command_traits: ['Boss Shaman'],
- core_rules: [],
- triumphs: [],
- units: ['Fungoid Cave-Shaman'],
- })
- })
-
it('reads a basic warscroll pdf file (no metadata) correctly (1)', () => {
const pdfText = getFile('NightHauntIssue')
const parsedText = parsePdf(pdfText)