From 0a70f028d0f352989862c86b39376170ae883733 Mon Sep 17 00:00:00 2001 From: Davis Ford Date: Tue, 28 Nov 2023 09:07:08 -0700 Subject: [PATCH] Add Trugg's Troggherd --- src/factions/gloomspite_gitz/artifacts.ts | 31 +++++++++++++ src/factions/gloomspite_gitz/battle_traits.ts | 45 ++++++++++++++++++- .../gloomspite_gitz/command_traits.ts | 36 +++++++++++++++ .../gloomspite_gitz/grand_strategies.ts | 9 ++++ src/factions/gloomspite_gitz/subfactions.ts | 39 ++++++++++------ 5 files changed, 145 insertions(+), 15 deletions(-) diff --git a/src/factions/gloomspite_gitz/artifacts.ts b/src/factions/gloomspite_gitz/artifacts.ts index 7bf7e6d97..5eb9e2e0c 100644 --- a/src/factions/gloomspite_gitz/artifacts.ts +++ b/src/factions/gloomspite_gitz/artifacts.ts @@ -2,8 +2,10 @@ import { tagAs } from 'factions/metatagger' import { COMBAT_PHASE, DURING_GAME, + END_OF_CHARGE_PHASE, END_OF_COMBAT_PHASE, HERO_PHASE, + MOVEMENT_PHASE, SAVES_PHASE, SHOOTING_PHASE, START_OF_COMBAT_PHASE, @@ -129,6 +131,35 @@ const Artifacts = { }, ], }, + + // Trugg's Troggherd + 'Thwackwheezer Club': { + effects: [ + { + name: `Thwackwheezer Club`, + desc: `Subtract 1 from hit rolls and wound rolls for attacks that target the bearer if they have been picked to fight in the same phase.`, + when: [COMBAT_PHASE, SHOOTING_PHASE], + }, + ], + }, + 'Crunchy Shinies': { + effects: [ + { + name: `Crunchy Shinies`, + desc: `The bearer has a Move characteristic of D6+5"`, + when: [MOVEMENT_PHASE], + }, + ], + }, + 'Loonstone Teef': { + effects: [ + { + name: `Loonstone Teef`, + desc: `The bearer gains the MONSTER keyword. If the bearer already has the MONSTER keyword, you can carry out 2 different monstrous rampages with it in the same phase instead of 1.`, + when: [END_OF_CHARGE_PHASE], + }, + ], + }, } export default tagAs(Artifacts, 'artifact') diff --git a/src/factions/gloomspite_gitz/battle_traits.ts b/src/factions/gloomspite_gitz/battle_traits.ts index b119fe89f..155269883 100644 --- a/src/factions/gloomspite_gitz/battle_traits.ts +++ b/src/factions/gloomspite_gitz/battle_traits.ts @@ -4,6 +4,7 @@ import { BATTLESHOCK_PHASE, CHARGE_PHASE, COMBAT_PHASE, + DURING_GAME, END_OF_CHARGE_PHASE, SAVES_PHASE, START_OF_HERO_PHASE, @@ -12,7 +13,7 @@ import { } from 'types/phases' const BattleTraits = { - [GLOOMSPITE_GITZ]: { + 'The Bad Moon': { effects: [ { name: `The Bad Moon Setup`, @@ -28,6 +29,11 @@ const BattleTraits = { 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], }, + ], + }, + + [GLOOMSPITE_GITZ]: { + effects: [ { 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.`, @@ -106,6 +112,43 @@ const BattleTraits = { }, ], }, + + "Trugg's Troggherd": { + effects: [ + { + name: `Moonlit Hide`, + desc: `Add 1 to save rolls for attacks that target friendly TRUGG'S TROGGHERD units while they are affected by the Light of the Bad Moon.`, + when: [SAVES_PHASE], + }, + { + name: `Aura of Haywire Magic`, + desc: `At the start of your hero phase, if you use a friendly TRUGG'S Malfunctioning Leystone ability, the effect you pick applies to all other friendly TRUGG'S TROGGHERD units until the start of your next hero phase.`, + when: [START_OF_HERO_PHASE], + }, + { + name: `The King's Wreckerz`, + desc: `Friendly TRUGG'S TROGGHERD units that do not have the HERO keyword gain the Battleline battlefield role.`, + when: [DURING_GAME], + }, + + // Battle Tactics + { + name: `Battle Tactic - Don't Like Dat One!`, + desc: `Pick 1 enemy HERO. You complete this battle tactic if that HERO was destroyed during this turn by an attack made by a friendly TRUGG.`, + when: [START_OF_HERO_PHASE], + }, + { + name: `Battle Tactic - Feels Funny`, + desc: `You complete this battle tactic if a friendly TRUGG'S TROGGHERD unit destroyed an enemy unit during this turn while it was affected by the Aura of Haywire Magic battle trait (pg 76).`, + when: [START_OF_HERO_PHASE], + }, + { + name: `Battle Tactic - Wot's Dat Glowy Fing?`, + desc: `Pick 1 objective you do not control. You complete this battle tactic if you control that objective at the end of this turn and 2 or more friendly TRUGG'S TROGGHERD units that are affected by the Light of the Bad Moon are contesting that objective.`, + when: [START_OF_HERO_PHASE], + }, + ], + }, } export default tagAs(BattleTraits, 'battle_trait') diff --git a/src/factions/gloomspite_gitz/command_traits.ts b/src/factions/gloomspite_gitz/command_traits.ts index 178f393cf..b9acf76cd 100644 --- a/src/factions/gloomspite_gitz/command_traits.ts +++ b/src/factions/gloomspite_gitz/command_traits.ts @@ -2,9 +2,12 @@ import { tagAs } from 'factions/metatagger' import { COMBAT_PHASE, DURING_GAME, + DURING_SETUP, END_OF_TURN, HERO_PHASE, + START_OF_HERO_PHASE, START_OF_SETUP, + TURN_ONE_END_OF_MOVEMENT_PHASE, WOUND_ALLOCATION_PHASE, } from 'types/phases' @@ -86,6 +89,39 @@ const CommandTraits = { }, ], }, + // Trugg's Troggherd + 'Ceaseless Growth': { + effects: [ + { + name: `Ceaseless Growth`, + desc: `When you roll the dice that determines the number of wounds you can heal with a friendly TRUGG'S TROGGHERD unit's Regeneration or Greater Regeneration ability, add 1 to the number.`, + when: [START_OF_HERO_PHASE], + }, + ], + }, + 'Prized Trogglet': { + effects: [ + { + name: `Prized Trogglet`, + desc: `Roll a dice each time an enemy model within 12" of this general issues a command. On a 5+, that command is not received (it still counts as having been used) and the command point that was spent to issue that command is lost.`, + when: [DURING_GAME], + }, + ], + }, + 'Living Landmark': { + effects: [ + { + name: `Living Landmark`, + desc: `During deployment, instead of setting up this general on the battlefield, you can place them to one side and say that they are set up in ambush as a reserve unit. At the end of your first movement phase, you can set them up on the battlefield, within 3" ofa terrain feature and more than 9" from all enemy units.`, + when: [DURING_SETUP], + }, + { + name: `Living Landmark`, + desc: `If you set this unit up as a reserve unit, at the end of your first movement phase, you can set them up on the battlefield, within 3" ofa terrain feature and more than 9" from all enemy units.`, + when: [TURN_ONE_END_OF_MOVEMENT_PHASE], + }, + ], + }, } export default tagAs(CommandTraits, 'command_trait') diff --git a/src/factions/gloomspite_gitz/grand_strategies.ts b/src/factions/gloomspite_gitz/grand_strategies.ts index 508a5c086..873b69929 100644 --- a/src/factions/gloomspite_gitz/grand_strategies.ts +++ b/src/factions/gloomspite_gitz/grand_strategies.ts @@ -38,6 +38,15 @@ const GrandStrategies = { }, ], }, + 'Leave Me Alone!': { + effects: [ + { + name: `Leave Me Alone!`, + desc: `When the battle ends, you complete this grand strategy if a friendly TRUGG is on the battlefield and no enemy HEROES are on the battlefield.`, + when: [END_OF_GAME], + }, + ], + }, } export default tagAs(GrandStrategies, 'grand_strategy') diff --git a/src/factions/gloomspite_gitz/subfactions.ts b/src/factions/gloomspite_gitz/subfactions.ts index 0e3fb48af..9ac270360 100644 --- a/src/factions/gloomspite_gitz/subfactions.ts +++ b/src/factions/gloomspite_gitz/subfactions.ts @@ -11,23 +11,34 @@ import GrandStrategies from './grand_strategies' import Scenery from './scenery' import Spells from './spells' import Units from './units' +import { IItemDescription } from 'factions/factionTypes' + +const baseSubfaction: IItemDescription = { + effects: [], + + 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], + }, +} const subFactions = { - [GLOOMSPITE_GITZ]: { - effects: pickEffects(BattleTraits, [GLOOMSPITE_GITZ]), + 'Gloomspite Gitz': { + ...baseSubfaction, + effects: pickEffects(BattleTraits, [GLOOMSPITE_GITZ, 'The Bad Moon']), + }, - 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], - }, + "Trugg's Troggherd": { + ...baseSubfaction, + effects: pickEffects(BattleTraits, ["Trugg's Troggherd", 'The Bad Moon']), }, }