diff --git a/data/fh/character/shards.json b/data/fh/character/shards.json index 8db6e089e..83feec152 100644 --- a/data/fh/character/shards.json +++ b/data/fh/character/shards.json @@ -14,6 +14,11 @@ ], "color": "#c0d7e9", "spoiler": true, + "specialActions": [ + { + "name": "resonance_tokens" + } + ], "stats": [ { "level": 1, diff --git a/data/fh/label-spoiler/en.json b/data/fh/label-spoiler/en.json index 71f564e77..22b990f47 100644 --- a/data/fh/label-spoiler/en.json +++ b/data/fh/label-spoiler/en.json @@ -25,7 +25,10 @@ "repair_mode": "%data.characterToken.prism.mode% Repair Drone Mode: %game.action.heal% 2" }, "shackles": "Pain Conduit", - "shards": "Shattersong", + "shards": { + ".": "Shattersong", + "resonance_tokens": "%data.characterToken.shards.resonance% Resonance Tokens" + }, "snowflake": { ".": "Snowdancer", "muddle-monster": "%game.condition.muddle% all newly revealed enemies" diff --git a/src/app/game/businesslogic/RoundManager.ts b/src/app/game/businesslogic/RoundManager.ts index f1695c1fa..4704e1760 100644 --- a/src/app/game/businesslogic/RoundManager.ts +++ b/src/app/game/businesslogic/RoundManager.ts @@ -463,6 +463,10 @@ export class RoundManager { gameManager.entityManager.applyCondition(figure, figure, ConditionName.heal, true); } + if (figure instanceof Character && figure.name == 'shards' && figure.tags.indexOf('resonance_tokens') != -1 && figure.tokenValues[0] < 5) { + figure.tokenValues[0] += 1; + } + if (figure instanceof Character) { if (settingsManager.settings.expireConditions) { gameManager.entityManager.expireConditions(figure, figure); @@ -587,6 +591,10 @@ export class RoundManager { figure.tokenValues[0] = 2; } + if (figure.tags.find((tag) => tag === 'resonance_tokens') && figure.primaryToken == 0) { + figure.tokenValues[0] = figure.progress.perks[10] == 1 ? 3 : 1; + } + figure.availableSummons.filter((summonData) => summonData.special).forEach((summonData) => gameManager.characterManager.createSpecialSummon(figure, summonData)); figure.attackModifierDeck = gameManager.attackModifierManager.buildCharacterAttackModifierDeck(figure); diff --git a/src/app/ui/figures/character/character.ts b/src/app/ui/figures/character/character.ts index 7664d1f59..a758ccad4 100644 --- a/src/app/ui/figures/character/character.ts +++ b/src/app/ui/figures/character/character.ts @@ -281,7 +281,7 @@ export class CharacterComponent implements OnInit, OnDestroy { this.token = - this.character.token; } else if (this.character.primaryToken >= 0 && this.character.tokenValues[this.character.primaryToken] + this.token < 0) { this.token = - this.character.tokenValues[this.character.primaryToken]; - } else if (this.character.tags.find((tag) => tag === 'time_tokens') && this.character.primaryToken == 0 && this.character.tokenValues[0] + this.token > 5) { + } else if (this.character.tags.find((tag) => ['time_tokens', 'resonance_token'].indexOf(tag) >= 0) && this.character.primaryToken == 0 && this.character.tokenValues[0] + this.token > 5) { this.token = 5 - this.character.tokenValues[this.character.primaryToken]; } } @@ -297,7 +297,7 @@ export class CharacterComponent implements OnInit, OnDestroy { gameManager.stateManager.before("setCharacterTokenValue", gameManager.characterManager.characterName(this.character), '%data.characterToken.' + this.character.name + '.' + this.character.tokens[this.character.primaryToken] + '%', (this.character.token + this.token)); this.character.tokenValues[this.character.primaryToken] += this.token; - if (this.character.tags.find((tag) => tag === 'time_tokens') && this.character.primaryToken == 0 && this.character.tokenValues[0] > 5) { + if (this.character.tags.find((tag) => ['time_tokens', 'resonance_token'].indexOf(tag) >= 0) && this.character.primaryToken == 0 && this.character.tokenValues[0] > 5) { this.character.tokenValues[0] = 5; } @@ -574,4 +574,4 @@ export class CharacterComponent implements OnInit, OnDestroy { gameManager.stateManager.after(); } -} \ No newline at end of file +}