Don't allow duplicate names with #setupenemy

This commit is contained in:
raeleus 2024-10-09 23:19:26 -07:00
parent 125001bec3
commit 31a469c5ae
2 changed files with 24 additions and 1 deletions

View file

@ -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
}

View file

@ -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 = []