From 31a469c5aee3aef70ebc52ad5da8e48835db43c7 Mon Sep 17 00:00:00 2001 From: raeleus Date: Wed, 9 Oct 2024 23:19:26 -0700 Subject: [PATCH] Don't allow duplicate names with #setupenemy --- Input.js | 11 ++++++++++- Library.js | 14 ++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Input.js b/Input.js index 0c51d85..b37ff5a 100644 --- a/Input.js +++ b/Input.js @@ -712,10 +712,19 @@ function handleSetupEnemyStep(text) { case 500: state.show = null state.setupEnemyStep = null - log(`case500: ${state.setupEnemyStep}`) var enemy = createEnemy(state.tempEnemy.name, state.tempEnemy.health, state.tempEnemy.ac, state.tempEnemy.damage, state.tempEnemy.initiative) enemy.spells = [...state.tempEnemy.spells] + + var enemyMatches = state.enemies.filter(x => x.name.toLowerCase() == enemy.name.toLowerCase() || x.name.toLowerCase() == `${enemy.name.toLowerCase()} a`) + if (enemyMatches.length > 0) { + enemy.name = getUniqueName(enemy.name) + if (enemy.name.endsWith("A")) { + enemyMatches[0].name = enemy.name + enemy.name = enemy.name.substring(0, enemy.name.length - 1) + "B" + } + } + state.enemies.push(enemy) break } diff --git a/Library.js b/Library.js index 7b189a1..6f9ce3d 100644 --- a/Library.js +++ b/Library.js @@ -886,6 +886,20 @@ function createEnemy(name, health, ac, damage, initiative, ...spells) { return enemy } +function getUniqueName(name) { + const letters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] + var letterIndex = 0 + + var newName + var enemyMatches + do { + newName = `${name} ${letters[letterIndex++]}` + enemyMatches = state.enemies.filter(x => x.name.toLowerCase() == newName.toLowerCase()) + } while (enemyMatches.length > 0 && letterIndex < letters.length) + + return newName +} + function createInitiativeOrder() { state.initiativeOrder = []