diff --git a/src/factions/sylvaneth/artifacts.ts b/src/factions/sylvaneth/artifacts.ts index e4e5de880..2d47617d9 100644 --- a/src/factions/sylvaneth/artifacts.ts +++ b/src/factions/sylvaneth/artifacts.ts @@ -1,5 +1,11 @@ import { tagAs } from 'factions/metatagger' -import { HERO_PHASE, START_OF_COMBAT_PHASE, START_OF_HERO_PHASE, WOUND_ALLOCATION_PHASE } from 'types/phases' +import { + HERO_PHASE, + START_OF_COMBAT_PHASE, + START_OF_HERO_PHASE, + START_OF_ROUND, + WOUND_ALLOCATION_PHASE, +} from 'types/phases' const Artifacts = { 'Greenwood Gladius': { @@ -56,6 +62,16 @@ const Artifacts = { }, ], }, + // Evergreen Hunt + 'Heartwood Hunting Horn': { + effects: [ + { + name: `Heartwood Hunting Horn`, + desc: `Once per battle, at the start of any battle round, the bearer can say that they will blow their Heartwood Hunting Horn. If they do so, you receive 1 additional Hunting Harmony chord for that battle round.`, + when: [START_OF_ROUND], + }, + ], + }, } export default tagAs(Artifacts, 'artifact') diff --git a/src/factions/sylvaneth/battle_traits.ts b/src/factions/sylvaneth/battle_traits.ts index 099e38caf..a91e70730 100644 --- a/src/factions/sylvaneth/battle_traits.ts +++ b/src/factions/sylvaneth/battle_traits.ts @@ -4,9 +4,12 @@ import { COMBAT_PHASE, DURING_GAME, DURING_SETUP, + END_OF_CHARGE_PHASE, END_OF_MOVEMENT_PHASE, + END_OF_SETUP, HERO_PHASE, START_OF_HERO_PHASE, + START_OF_ROUND, WARDS_PHASE, } from 'types/phases' import rule_sources from './rule_sources' @@ -84,6 +87,80 @@ const BattleTraits = { ], }, + 'The Evergreen Hunt': { + effects: [ + { + name: `To Honour Kurnouth`, + desc: `Friendly EVERGREEN HUNT units that do not have the HERO keyword have the Battleline battlefield role.`, + when: [DURING_GAME], + }, + { + name: `Rhythm of the Chase`, + desc: `After deployment, before the players have determined who will take the first turn, you can pick 1 enemy unit on the battlefield to be the quarry. If the quarry is destroyed, at the start of your next hero phase, you can pick 1 enemy unit on the battlefield to be the new quarry.`, + when: [END_OF_SETUP], + }, + { + name: `Harmonies of the Hunt`, + desc: `At the start of each battle round, after the priority roll has been made, each player commanding an Evergreen Hunt army must determine their Hunting Harmony for that battle round, starting with the player taking the first turn. A Hunting Harmony is made up of a number of chords. You start with 0 chords and receive 1 chord for the following: + + - If a friendly BELTHANOS is on the battlefield. + - For each friendly EVERGREEN HUNT unit wholly ewithin the same large quarter of the battlefield as the quarry. + - For each quarry destroyed during the battle. + + Add up the number of chords you received and consult the Hunting Harmony Table to see which effects will apply to your army for that battle round. These effects are cumulative: if you have 6 chords, all of the effects in the table will apply. Hunting Harmony chords are lost at the end of each battle round. + + 0: Discordant: No effect. + 1: Simple: Add 1 to run rolls and charge rolls for friendly units wholly within the same large quarter of the battlefield as the quarry. + 2: Tuneful: Add 1 to hit rolls and wound rolls for attacks made with melee weapons that target an enemy unit wholly within the same large quarter of the battlefield as the quarry. + 3-5: Melodic: Add 1 to the Attacks characteristic of melee weapons used by friendly units while they are within 3" of the quarry. + 6+: Mellifluous: While a friendly unit is wholly within the same large quarter of the battlefield as the quarry, it is eligible to fight in the combat phase if it is within 6" of the quarry instead of 3", and it can move an extra 3" when it piles in. `, + when: [START_OF_ROUND], + }, + { + name: `Adundant Growth`, + desc: `After territories are determined, before faction terrain features are set up, you can pick up to 3 terrain features on the battlefield that are wholly outside enemy territory. These terrain features are considered by you to be overgrown terrain features. + + At the start of your hero phase, you can heal 1 wound allocated to each friendly EVERGREEN HUNT unit that is wholly within 9" of an overgrown terrain feature.`, + when: [END_OF_SETUP], + }, + { + name: `Adundant Growth`, + desc: `At the start of your hero phase, you can heal 1 wound allocated to each friendly EVERGREEN HUNT unit that is wholly within 9" of an overgrown terrain feature.`, + when: [START_OF_HERO_PHASE], + }, + { + name: `Heroic Action: A Prize Quarry is Sighted`, + desc: `Pick 1 friendly EVERGREEN HUNT HERO and 1 enemy unit within 9" of that HERO. That enemy unit becomes the quarry instead of the enemy unit that was picked to be the quarry.`, + when: [START_OF_HERO_PHASE], + }, + { + name: `Monstrous Rampage: Merciful Strike`, + desc: `If the quarry has any wounds allocated to it and is within 3" of this unit, roll a dice and add the number of wounds allocated to the quarry to the roll. If the result is greater than the quarry's Wounds characteristic, 1 model in that unit is slain.`, + when: [END_OF_CHARGE_PHASE], + }, + ], + }, + + 'The Evergreen Hunt Battle Tactics': { + effects: [ + { + name: 'Trophy Kill', + desc: `You complete this tactic if the quarry was destroyed by an attack made with a melee weapon in this turn.`, + when: [START_OF_HERO_PHASE], + }, + { + name: 'Encircled', + desc: `You complete this tactic if, at the end of this turn, all friendly units are in the same large quarter of the battlefield as the quarry.`, + when: [START_OF_HERO_PHASE], + }, + { + name: 'Spring the Trap', + desc: `You complete this tactic if 4 or more friendly units made a charge move in this turn and 1 or more of those units made an attack with a melee weapon that targeted the quarry in this turn.`, + when: [START_OF_HERO_PHASE], + }, + ], + }, + 'Battle Tactics': { effects: [ { diff --git a/src/factions/sylvaneth/command_traits.ts b/src/factions/sylvaneth/command_traits.ts index 5054279e8..6661936d3 100644 --- a/src/factions/sylvaneth/command_traits.ts +++ b/src/factions/sylvaneth/command_traits.ts @@ -1,5 +1,5 @@ import { tagAs } from 'factions/metatagger' -import { COMBAT_PHASE, HERO_PHASE, MOVEMENT_PHASE, SAVES_PHASE } from 'types/phases' +import { COMBAT_PHASE, HERO_PHASE, MOVEMENT_PHASE, SAVES_PHASE, START_OF_HERO_PHASE } from 'types/phases' import rule_sources from './rule_sources' const CommandTraits = { @@ -58,6 +58,16 @@ const CommandTraits = { }, ], }, + // Evergreen Hunt + 'Sapwood Leader': { + effects: [ + { + name: `Sapwood Leader`, + desc: `When you use the Abundant Growth battle trait to heal this general, you can heal up to D3 wounds allocated to this general instead of 1.`, + when: [START_OF_HERO_PHASE], + }, + ], + }, } export default tagAs(CommandTraits, 'command_trait') diff --git a/src/factions/sylvaneth/grand_strategies.ts b/src/factions/sylvaneth/grand_strategies.ts index d0b6c62f4..5f855217f 100644 --- a/src/factions/sylvaneth/grand_strategies.ts +++ b/src/factions/sylvaneth/grand_strategies.ts @@ -29,6 +29,16 @@ const GrandStrategies = { }, ], }, + // Evergreen Hunt + 'The Grand Hunt': { + effects: [ + { + name: `The Grand Hunt`, + desc: `When the battle ends, you complete this grand strategy if you have destroyed 4 or more quarries.`, + when: [END_OF_GAME], + }, + ], + }, } export default tagAs(GrandStrategies, 'grand_strategy') diff --git a/src/factions/sylvaneth/index.ts b/src/factions/sylvaneth/index.ts index 9b67631e0..81c4f41ee 100644 --- a/src/factions/sylvaneth/index.ts +++ b/src/factions/sylvaneth/index.ts @@ -1,8 +1,6 @@ import { Faction } from 'factions/factionClass' -import { pickEffects } from 'factions/metatagger' import { ORDER } from 'meta/alliances' import { SYLVANETH } from 'meta/factions' -import BattleTraits from './battle_traits' import rule_sources from './rule_sources' import SubFactions from './subfactions' @@ -11,6 +9,5 @@ export const SylvanethFaction = new Faction( ORDER, SubFactions, 'Glades', - rule_sources.BATTLETOME_SYLVANETH, - pickEffects(BattleTraits, [SYLVANETH, 'Battle Tactics']) + rule_sources.BATTLETOME_SYLVANETH ) diff --git a/src/factions/sylvaneth/subfactions.ts b/src/factions/sylvaneth/subfactions.ts index b6f09d293..ac1df62b0 100644 --- a/src/factions/sylvaneth/subfactions.ts +++ b/src/factions/sylvaneth/subfactions.ts @@ -1,5 +1,5 @@ import { IItemDescription } from 'factions/factionTypes' -import { keyPicker, pickEffects } from 'factions/metatagger' +import { keyOmitter, keyPicker, pickEffects } from 'factions/metatagger' import Artifacts from './artifacts' import Battalions from './battalions' import BattleTraits from './battle_traits' @@ -11,19 +11,20 @@ import GrandStrategies from './grand_strategies' import Scenery from './scenery' import Spells from './spells' import Units from './units' +import { SYLVANETH } from 'meta/factions' const baseSubFaction: IItemDescription = { mandatory: { spells: [keyPicker(Spells, ['Verdant Blessing'])], }, available: { - artifacts: [Artifacts], + artifacts: [keyOmitter(Artifacts, ['Heartwood Hunting Horn'])], battalions: [Battalions], command_abilities: [CommandAbilities], - command_traits: [CommandTraits], + command_traits: [keyOmitter(CommandTraits, ['Sapwood Leader'])], endless_spells: [EndlessSpells], flavors: [Flavors], - grand_strategies: [GrandStrategies], + grand_strategies: [keyOmitter(GrandStrategies, ['The Grand Hunt'])], scenery: [Scenery], spells: [Spells], units: [Units], @@ -34,19 +35,30 @@ const baseSubFaction: IItemDescription = { const subFactions = { 'The Burgeoning': { ...baseSubFaction, - effects: pickEffects(BattleTraits, ['The Burgeoning']), + effects: pickEffects(BattleTraits, ['The Burgeoning', SYLVANETH, 'Battle Tactics']), }, 'The Reaping': { ...baseSubFaction, - effects: pickEffects(BattleTraits, ['The Reaping']), + effects: pickEffects(BattleTraits, ['The Reaping', SYLVANETH, 'Battle Tactics']), }, 'The Dwindling': { ...baseSubFaction, - effects: pickEffects(BattleTraits, ['The Dwindling']), + effects: pickEffects(BattleTraits, ['The Dwindling', SYLVANETH, 'Battle Tactics']), }, Everdusk: { ...baseSubFaction, - effects: pickEffects(BattleTraits, ['Everdusk']), + effects: pickEffects(BattleTraits, ['Everdusk', SYLVANETH, 'Battle Tactics']), + }, + 'The Evergreen Hunt': { + ...baseSubFaction, + available: { + ...baseSubFaction.available, + flavors: [], + artifacts: [Artifacts], + command_traits: [CommandTraits], + grand_strategies: [GrandStrategies], + }, + effects: pickEffects(BattleTraits, ['The Evergreen Hunt', 'The Evergreen Hunt Battle Tactics']), }, }