diff --git a/Input.js b/Input.js index 70a624b..2e4ee8a 100644 --- a/Input.js +++ b/Input.js @@ -90,7 +90,6 @@ const modifier = (text) => { } if (state.setupEnemyStep != null) { - log(`setupEnemyStep:${state.setupEnemyStep}`) state.setupEnemyStep text = handleSetupEnemyStep(text) if (state.setupEnemyStep != null) return { text } @@ -612,7 +611,6 @@ function handleSetupEnemyStep(text) { return text case 6: if (text.toLowerCase() == "s") { - log(`case6: ${state.setupEnemyStep}`) state.setupEnemyStep = 500 } else if (text.length > 0) { @@ -623,7 +621,6 @@ function handleSetupEnemyStep(text) { case 7: if (text.toLowerCase() == "s") { state.setupEnemyStep = 500 - log(`case7: ${state.setupEnemyStep}`) } else if (text.length > 0) { state.tempEnemy.spells.push(text) @@ -632,83 +629,82 @@ function handleSetupEnemyStep(text) { case 100: if (!isNaN(text)) { state.setupEnemyStep = 500 - log(`case100: ${state.setupEnemyStep}`) switch (parseInt(text)) { case 1: - state.tempEnemy = createEnemy("Animated Armor", calculateRoll("6d8+6"), 18, "1d6+2", calculateRoll("d20")) + state.tempEnemy = createEnemy("Animated Armor", calculateRoll("6d8+6"), 18, "1d6+2", "d20") break case 2: - state.tempEnemy = createEnemy("Awakened Shrub", calculateRoll("2d+6"), 9, "1d4-1", calculateRoll("d20-1")) + state.tempEnemy = createEnemy("Awakened Shrub", calculateRoll("2d+6"), 9, "1d4-1", "d20-1") break case 3: - state.tempEnemy = createEnemy("Brigand", calculateRoll("5d8+10"), 11, "1d6+2", calculateRoll("d20")) + state.tempEnemy = createEnemy("Brigand", calculateRoll("5d8+10"), 11, "1d6+2", "d20") break case 4: - state.tempEnemy = createEnemy("Black Bear", calculateRoll("3d8+6"), 11, "2d4+2", calculateRoll("d20")) + state.tempEnemy = createEnemy("Black Bear", calculateRoll("3d8+6"), 11, "2d4+2", "d20") break case 5: - state.tempEnemy = createEnemy("Boar", calculateRoll("2d8+2"), 11, "1d6+1", calculateRoll("d20")) + state.tempEnemy = createEnemy("Boar", calculateRoll("2d8+2"), 11, "1d6+1", "d20") break case 6: - state.tempEnemy = createEnemy("Cockatrice", calculateRoll("6d6+6"), 11, "1d4+1", calculateRoll("d20+1"), "Petrifying Bite1d4+1") + state.tempEnemy = createEnemy("Cockatrice", calculateRoll("6d6+6"), 11, "1d4+1", "d20+1", "Petrifying Bite1d4+1") break case 7: - state.tempEnemy = createEnemy("Snake", calculateRoll("2d10+2"), 12, "1d8+2", calculateRoll("d20+2"), "Poison Bite2d4+1") + state.tempEnemy = createEnemy("Snake", calculateRoll("2d10+2"), 12, "1d8+2", "d20+2", "Poison Bite2d4+1") break case 8: - state.tempEnemy = createEnemy("Dire Wolf", calculateRoll("5d10+10"), 14, "2d6+3", calculateRoll("d20+2")) + state.tempEnemy = createEnemy("Dire Wolf", calculateRoll("5d10+10"), 14, "2d6+3", "d20+2") break case 9: - state.tempEnemy = createEnemy("Ghoul", calculateRoll("5d8"), 12, "2d6+2", calculateRoll("d20+2")) + state.tempEnemy = createEnemy("Ghoul", calculateRoll("5d8"), 12, "2d6+2", "d20+2") break case 10: - state.tempEnemy = createEnemy("Giant Centipede", calculateRoll("1d6+1"), 13, "1d4+2", calculateRoll("d20+2")) + state.tempEnemy = createEnemy("Giant Centipede", calculateRoll("1d6+1"), 13, "1d4+2", "d20+2") break case 11: - state.tempEnemy = createEnemy("Giant Rat", calculateRoll("2d6"), 12, "1d4+2", calculateRoll("d20+2")) + state.tempEnemy = createEnemy("Giant Rat", calculateRoll("2d6"), 12, "1d4+2", "d20+2") break case 12: - state.tempEnemy = createEnemy("Giant Wolf Spider", calculateRoll("2d8+2"), 13, "1d6+1", calculateRoll("d20+3"), "Poison Bite1d6+8") + state.tempEnemy = createEnemy("Giant Wolf Spider", calculateRoll("2d8+2"), 13, "1d6+1", "d20+3", "Poison Bite1d6+8") break case 13: - state.tempEnemy = createEnemy("Gnoll", calculateRoll("5d8"), 15, "1d8+2", calculateRoll("d20+1")) + state.tempEnemy = createEnemy("Gnoll", calculateRoll("5d8"), 15, "1d8+2", "d20+1") break case 14: - state.tempEnemy = createEnemy("Goblin", calculateRoll("2d6"), 15, "1d6+2", calculateRoll("d20+2")) + state.tempEnemy = createEnemy("Goblin", calculateRoll("2d6"), 15, "1d6+2", "d20+2") break case 15: - state.tempEnemy = createEnemy("Harpy", calculateRoll("7d8+7"), 11, "2d4+1", calculateRoll("d20+1"), "Luring Song") + state.tempEnemy = createEnemy("Harpy", calculateRoll("7d8+7"), 11, "2d4+1", "d20+1", "Luring Song") break case 16: - state.tempEnemy = createEnemy("Hobgoblin", calculateRoll("2d8+2"), 18, "1d8+1", calculateRoll("d20+1")) + state.tempEnemy = createEnemy("Hobgoblin", calculateRoll("2d8+2"), 18, "1d8+1", "d20+1") break case 17: - state.tempEnemy = createEnemy("Kobold", calculateRoll("2d6-2"), 12, "1d4+2", calculateRoll("d20+2")) + state.tempEnemy = createEnemy("Kobold", calculateRoll("2d6-2"), 12, "1d4+2", "d20+2") break case 18: - state.tempEnemy = createEnemy("Orc", calculateRoll("2d8+6"), 13, "1d12+3", calculateRoll("d20+1")) + state.tempEnemy = createEnemy("Orc", calculateRoll("2d8+6"), 13, "1d12+3", "d20+1") break case 19: - state.tempEnemy = createEnemy("Satyr", calculateRoll("5d8"), 15, "1d8+2", calculateRoll("d20+3")) + state.tempEnemy = createEnemy("Satyr", calculateRoll("5d8"), 15, "1d8+2", "d20+3") break case 20: - state.tempEnemy = createEnemy("Skeleton", calculateRoll("2d8+4"), 13, "1d6+2", calculateRoll("d20+2")) + state.tempEnemy = createEnemy("Skeleton", calculateRoll("2d8+4"), 13, "1d6+2", "d20+2") break case 21: - state.tempEnemy = createEnemy("Strige", calculateRoll("1d4"), 14, "1d4+3", calculateRoll("d20+1"), "Blood Drain2d4+6") + state.tempEnemy = createEnemy("Strige", calculateRoll("1d4"), 14, "1d4+3", "d20+1", "Blood Drain2d4+6") break case 22: - state.tempEnemy = createEnemy("Warhorse", calculateRoll("3d10+3"), 11, "2d6+4", calculateRoll("d20+1"), "Charge") + state.tempEnemy = createEnemy("Warhorse", calculateRoll("3d10+3"), 11, "2d6+4", "d20+1", "Charge") break case 23: - state.tempEnemy = createEnemy("Wolf", calculateRoll("2d+2"), 13, "2d4+2", calculateRoll("d20+2")) + state.tempEnemy = createEnemy("Wolf", calculateRoll("2d+2"), 13, "2d4+2", "d20+2") break case 24: - state.tempEnemy = createEnemy("Worg", calculateRoll("4d10+4"), 13, "2d6+3", calculateRoll("d20+1")) + state.tempEnemy = createEnemy("Worg", calculateRoll("4d10+4"), 13, "2d6+3", "d20+1") break case 25: - state.tempEnemy = createEnemy("Zombie", calculateRoll("3d8+9"), 8, "1d6+1", calculateRoll("d20+-2")) + state.tempEnemy = createEnemy("Zombie", calculateRoll("3d8+9"), 8, "1d6+1", "d20+-2") break } } @@ -2004,12 +2000,15 @@ function doAddEnemy(command) { } function doInitiative(command) { - var battleHasStarted = state.initiativeOrder.length != 0 - - if (!battleHasStarted) for (character of state.characters) { + for (character of state.characters) { var stat = character.stats.find(element => element.name.toLowerCase() == "dexterity") - if (stat == null) character.initiative = calculateRoll("d20") - else character.initiative = calculateRoll("d20") + getModifier(stat.value) + if (stat == null) character.calculatedInitiative = calculateRoll("d20") + else character.calculatedInitiative = calculateRoll("d20") + getModifier(stat.value) + } + + for (enemy of state.enemies) { + if (isNaN(enemy.initiative)) enemy.calculatedInitiative = calculateRoll(enemy.initiative) + else enemy.calculatedInitiative = enemy.initiative } if (state.enemies.length == 0) { @@ -2025,7 +2024,7 @@ function doInitiative(command) { } state.show = "initiative" - return battleHasStarted ? " " : "\nBattle has commenced!\n" + return "\nBattle has commenced!\n" } function doFlee(command) { @@ -2105,7 +2104,7 @@ function doTurn(command) { if (activeCharacter.className != null) { state.show = "none" - return `\nIt is ${possessiveName} turn\n` + return `\n[It is ${possessiveName} turn]\n` } else { var characters = state.characters.filter(x => x.health > 0) var target = characters[getRandomInteger(0, characters.length - 1)] @@ -2117,7 +2116,7 @@ function doTurn(command) { var damage = isNaN(activeCharacter.damage) ? calculateRoll(activeCharacter.damage) : activeCharacter.damage target.health = Math.max(target.health - damage, 0) - text += `${activeCharacterName} attacks ${target.name} for ${damage} damage! \n` + text += `${activeCharacterName} attacks ${targetNameAdjustedCase} for ${damage} damage! \n` if (target.health == 0) text += `${target.name} ${areWord} unconscious!\n` else text += `${target.name} ${areWord} at ${target.health} health.\n` } else { diff --git a/Library.js b/Library.js index 4dc0bb8..135d46e 100644 --- a/Library.js +++ b/Library.js @@ -495,244 +495,244 @@ function createEncounter(listName) { case 51: encounter.text = "A team of mal-intended turkeys approach!" encounter.enemies = [ - createEnemy("Turkey Prime", calculateRoll("5d10+10"), 14, "2d6+3", calculateRoll("d20+2")), - createEnemy("Turkey Lackey A", calculateRoll("5d10+10"), 14, "2d6+3", calculateRoll("d20+2")), - createEnemy("Turkey Lackey B", calculateRoll("5d10+10"), 14, "2d6+3", calculateRoll("d20+2")), + createEnemy("Turkey Prime", calculateRoll("5d10+10"), 14, "2d6+3", "d20+2"), + createEnemy("Turkey Lackey A", calculateRoll("5d10+10"), 14, "2d6+3", "d20+2"), + createEnemy("Turkey Lackey B", calculateRoll("5d10+10"), 14, "2d6+3", "d20+2"), ] break case 52: encounter.text = "A calculator is someone who calculates. One such person is here and they mean no good." encounter.enemies = [ - createEnemy("The Calculator", calculateRoll("5d8"), 13, "2d4+2", calculateRoll("d20-1"), "Calculate Demise1d20") + createEnemy("The Calculator", calculateRoll("5d8"), 13, "2d4+2", "d20-1", "Calculate Demise1d20") ] break case 53: encounter.text = "An ensorcelled fountain pen is on its way to write you out of existence!" encounter.enemies = [ - createEnemy("Fountain Pen", calculateRoll("6d10+6"), 13, "1d10+2", calculateRoll("d20+3"), "Ink Blot2d4+6") + createEnemy("Fountain Pen", calculateRoll("6d10+6"), 13, "1d10+2", "d20+3", "Ink Blot2d4+6") ] break case 54: encounter.text = "Oh no! Your childhood bully has come back and he's joined by a gang of bad dudes." encounter.enemies = [ - createEnemy("Bully", calculateRoll("5d10+10"), 12, "1d8", calculateRoll("d20-5")), - createEnemy("Lackey A", calculateRoll("2d8+2"), 12, "1d8", calculateRoll("d20+1")), - createEnemy("Lackey B", calculateRoll("2d8+2"), 12, "1d8", calculateRoll("d20+1")), - createEnemy("Lackey C", calculateRoll("2d8+2"), 12, "1d8", calculateRoll("d20+1")), + createEnemy("Bully", calculateRoll("5d10+10"), 12, "1d8", "d20-5"), + createEnemy("Lackey A", calculateRoll("2d8+2"), 12, "1d8", "d20+1"), + createEnemy("Lackey B", calculateRoll("2d8+2"), 12, "1d8", "d20+1"), + createEnemy("Lackey C", calculateRoll("2d8+2"), 12, "1d8", "d20+1"), ] break case 55: encounter.text = "It's a giant, living pimple and it's ready to burst at you." encounter.enemies = [ - createEnemy("Pimple", calculateRoll("4d8+4"), 14, "1d8+2", calculateRoll("d20+1"), "Burst Fire3d6") + createEnemy("Pimple", calculateRoll("4d8+4"), 14, "1d8+2", "d20+1", "Burst Fire3d6") ] break case 56: encounter.text = "An evil breath fills the room. You must defeat it before you can't breathe anymore." encounter.enemies = [ - createEnemy("Evil Breath", calculateRoll("4d10+4"), 14, "2d6+3", calculateRoll("d20+1"), "Stank2d10+5") + createEnemy("Evil Breath", calculateRoll("4d10+4"), 14, "2d6+3", "d20+1", "Stank2d10+5") ] break case 57: encounter.text = "A racoon suddenly appears and slaps you in the face. It's clear that it is challenging you to a duel." encounter.enemies = [ - createEnemy("Racoon", calculateRoll("3d10+3"), 13, "1d8+2", calculateRoll("d20+1"), "Slap1d5+2") + createEnemy("Racoon", calculateRoll("3d10+3"), 13, "1d8+2", "d20+1", "Slap1d5+2") ] break case 58: encounter.text = "A water bottle sprouts legs. Its unnatural gait betrays it's perverse intentions." encounter.enemies = [ - createEnemy("Water Bottle", calculateRoll("2d10+4"), 12, "1d4", calculateRoll("d20-1"), "Drench5d3"), + createEnemy("Water Bottle", calculateRoll("2d10+4"), 12, "1d4", "d20-1", "Drench5d3"), ] break case 59: encounter.text = "A sleeping guard is here. He is alerted once you start farting uncontrollably." encounter.enemies = [ - createEnemy("Guard", calculateRoll("3d10+3"), 14, "1d8+2", calculateRoll("d20+2"), "Yawn") + createEnemy("Guard", calculateRoll("3d10+3"), 14, "1d8+2", "d20+2", "Yawn") ] break case 60: encounter.text = "Your best friend from way back has come around. Sadly you have nothing in common with each other and now you're at odds." encounter.enemies = [ - createEnemy("Best Friend", calculateRoll("3d10+3"), 14, "2d4+4", calculateRoll("d20+4")), - createEnemy("Your Replacement", calculateRoll("5d6"), 14, "1d8+1", calculateRoll("d20+2")), - createEnemy("The New Bestie", calculateRoll("5d6"), 14, "1d8+1", calculateRoll("d20+2")), + createEnemy("Best Friend", calculateRoll("3d10+3"), 14, "2d4+4", "d20+4"), + createEnemy("Your Replacement", calculateRoll("5d6"), 14, "1d8+1", "d20+2"), + createEnemy("The New Bestie", calculateRoll("5d6"), 14, "1d8+1", "d20+2"), ] break case 61: encounter.text = "Your shadow has become jealous of all that moving around freely thing you do. It attacks!" encounter.enemies = [ - createEnemy("Shadow", calculateRoll("4d10"), 14, "1d6+2", calculateRoll("d20+3")) + createEnemy("Shadow", calculateRoll("4d10"), 14, "1d6+2", "d20+3") ] break case 62: encounter.text = "You encounter an accident prone ninja! It clumsily brandishes its weapon but sends it clattering onto the floor before it. The ninja apologizes profusely as it scrambles back into attack position." encounter.enemies = [ - createEnemy("Ninja", calculateRoll("6d10+12"), 14, "2d6+3", calculateRoll("d20+2"), "Shuriken3d6+3") + createEnemy("Ninja", calculateRoll("6d10+12"), 14, "2d6+3", "d20+2", "Shuriken3d6+3") ] break case 63: encounter.text = "The AI Dungeon has become sentient and sends its minions forth to destroy you!" encounter.enemies = [ - createEnemy("Mixtral", calculateRoll("3d10+3"), 12, "2d6+1", calculateRoll("d20+2")), - createEnemy("MythoMax", calculateRoll("2d6"), 12, "1d4+2", calculateRoll("d20+2")), - createEnemy("Wizard", calculateRoll("2d6"), 12, "1d4+2", calculateRoll("d20+2")), - createEnemy("Pegasus", calculateRoll("2d6"), 12, "1d4+2", calculateRoll("d20+2")) + createEnemy("Mixtral", calculateRoll("3d10+3"), 12, "2d6+1", "d20+2"), + createEnemy("MythoMax", calculateRoll("2d6"), 12, "1d4+2", "d20+2"), + createEnemy("Wizard", calculateRoll("2d6"), 12, "1d4+2", "d20+2"), + createEnemy("Pegasus", calculateRoll("2d6"), 12, "1d4+2", "d20+2") ] break case 64: encounter.text = "The evil wizard has conjured enemies to slay you. He did not send his best." encounter.enemies = [ - createEnemy("Enthusiastic Intern", calculateRoll("6d10+6"), 10, "1d10+2", calculateRoll("d20+1")), - createEnemy("Retirement Aged Fighter", calculateRoll("6d10+6"), 10, "1d10+2", calculateRoll("d20+1")), - createEnemy("A Common Fool", calculateRoll("6d10+6"), 10, "1d10+2", calculateRoll("d20+1"), "Contagious Laughter") + createEnemy("Enthusiastic Intern", calculateRoll("6d10+6"), 10, "1d10+2", "d20+1"), + createEnemy("Retirement Aged Fighter", calculateRoll("6d10+6"), 10, "1d10+2", "d20+1"), + createEnemy("A Common Fool", calculateRoll("6d10+6"), 10, "1d10+2", "d20+1", "Contagious Laughter") ] break case 65: encounter.text = "The Grammar Nazis attck in fool force!" encounter.enemies = [ - createEnemy("Grammar Nazi A", calculateRoll("2d8"), 13, "1d4+3", calculateRoll("d20+3"), "Correct Grammar"), - createEnemy("Grammar Nazi B", calculateRoll("2d8"), 13, "1d4+3", calculateRoll("d20+3"), "Correct Grammar"), - createEnemy("Grammar Nazi C", calculateRoll("2d8"), 13, "1d4+3", calculateRoll("d20+3"), "Correct Grammar") + createEnemy("Grammar Nazi A", calculateRoll("2d8"), 13, "1d4+3", "d20+3", "Correct Grammar"), + createEnemy("Grammar Nazi B", calculateRoll("2d8"), 13, "1d4+3", "d20+3", "Correct Grammar"), + createEnemy("Grammar Nazi C", calculateRoll("2d8"), 13, "1d4+3", "d20+3", "Correct Grammar") ] break case 66: encounter.text = "The mini-people have contracted their deadliest assassin to assault you. The twelve-inch pianist is on the move!" encounter.enemies = [ - createEnemy("Pianist", calculateRoll("5d10+10"), 12, "2d6+3", calculateRoll("d20+2"), "Deadly Tune5d4") + createEnemy("Pianist", calculateRoll("5d10+10"), 12, "2d6+3", "d20+2", "Deadly Tune5d4") ] break case 67: encounter.text = "Take it easy this time. A rude tortoise is slowly coming this way and it has foul plans for the party." encounter.enemies = [ - createEnemy("Rude Tortoise", calculateRoll("5d10+10"), 11, "2d6+3", calculateRoll("d20+2"), "Shell Up") + createEnemy("Rude Tortoise", calculateRoll("5d10+10"), 11, "2d6+3", "d20+2", "Shell Up") ] break case 68: encounter.text = "The ninja-mime attacks! Why won't he say anything?" encounter.enemies = [ - createEnemy("Ninja Mime", calculateRoll("2d6"), 15, "1d6+2", calculateRoll("d20+2"), "Pantomime3d6") + createEnemy("Ninja Mime", calculateRoll("2d6"), 15, "1d6+2", "d20+2", "Pantomime3d6") ] break case 69: encounter.text = "A disgusting fashion faux pas presents itself in front of the party. Defend yourself." encounter.enemies = [ - createEnemy("Ill Fitting Clothes", calculateRoll("3d8+9"), 8, "1d6+1", calculateRoll("d20-2")), - createEnemy("Color Clash", calculateRoll("3d8+9"), 8, "1d6+1", calculateRoll("d20-2")), - createEnemy("Pleated Pants", calculateRoll("3d8+9"), 8, "1d6+1", calculateRoll("d20-2")), - createEnemy("Black and White Stripes", calculateRoll("3d8+9"), 8, "1d6+1", calculateRoll("d20-2")) + createEnemy("Ill Fitting Clothes", calculateRoll("3d8+9"), 8, "1d6+1", "d20-2"), + createEnemy("Color Clash", calculateRoll("3d8+9"), 8, "1d6+1", "d20-2"), + createEnemy("Pleated Pants", calculateRoll("3d8+9"), 8, "1d6+1", "d20-2"), + createEnemy("Black and White Stripes", calculateRoll("3d8+9"), 8, "1d6+1", "d20-2") ] break case 70: encounter.text = "A miserable plate of unfinished food reveals itself. \"Waste not, want not,\" it says menacingly." encounter.enemies = [ - createEnemy("Food Plate", calculateRoll("2d8+2"), 12, "1d6+1", calculateRoll("d20+1"), "Glutton") + createEnemy("Food Plate", calculateRoll("2d8+2"), 12, "1d6+1", "d20+1", "Glutton") ] break case 71: encounter.text = "A spork is a multifunctional utensil. It turns its malicious gaze towards you." encounter.enemies = [ - createEnemy("Spork", calculateRoll("2d8+2"), 16, "1d8+1", calculateRoll("d20+1"), "Transform into Fork", "Transform into Spoon") + createEnemy("Spork", calculateRoll("2d8+2"), 16, "1d8+1", "d20+1", "Transform into Fork", "Transform into Spoon") ] break case 72: encounter.text = "An angry mother-in-law nags into your general area." encounter.enemies = [ - createEnemy("Mother-In-Law", calculateRoll("6d10+18"), 13, "2d10+4", calculateRoll("d20+1"), "Nag", "Verbal Assault3d10") + createEnemy("Mother-In-Law", calculateRoll("6d10+18"), 13, "2d10+4", "d20+1", "Nag", "Verbal Assault3d10") ] break case 73: encounter.text = "A squad of trick motorcyclists wheel into your area! They're doing dastardly maneuvers in front of your face." encounter.enemies = [ - createEnemy("Motorcyclist A", calculateRoll("6d10+12"), 12, "2d6+4", calculateRoll("d20+2"), "Trick"), - createEnemy("Motorcyclist B", calculateRoll("6d10+12"), 12, "2d6+4", calculateRoll("d20+2"), "Trick"), - createEnemy("Motorcyclist C", calculateRoll("6d10+12"), 12, "2d6+4", calculateRoll("d20+2"), "Trick"), + createEnemy("Motorcyclist A", calculateRoll("6d10+12"), 12, "2d6+4", "d20+2", "Trick"), + createEnemy("Motorcyclist B", calculateRoll("6d10+12"), 12, "2d6+4", "d20+2", "Trick"), + createEnemy("Motorcyclist C", calculateRoll("6d10+12"), 12, "2d6+4", "d20+2", "Trick"), createEnemy("Ring Leader", calculateRoll("7d8+21"), 15, "1d6+2", calculateRoll("d20"), "Command") ] break case 74: encounter.text = "Some stressed out people are here and they misinterpret your casual greeting as a taunt. Emotions are on high." encounter.enemies = [ - createEnemy("Angry Guy", calculateRoll("8d12+8"), 12, "2d8+4", calculateRoll("d20+2")), - createEnemy("Stressed Pal", calculateRoll("8d12+8"), 12, "2d8+4", calculateRoll("d20+2")), + createEnemy("Angry Guy", calculateRoll("8d12+8"), 12, "2d8+4", "d20+2"), + createEnemy("Stressed Pal", calculateRoll("8d12+8"), 12, "2d8+4", "d20+2"), createEnemy("The Instigator", calculateRoll("8d12+8"), 12, "2d8+4", calculateRoll("d20+10"), "Instigate"), ] break case 75: encounter.text = "An ominous stop sign is placed here at odds with your sensibility. It directs you to cease moving at once." encounter.enemies = [ - createEnemy("Stop Sign", calculateRoll("6d8"), 14, "2d6+2", calculateRoll("d20+2"), "Red Light", "Green Light") + createEnemy("Stop Sign", calculateRoll("6d8"), 14, "2d6+2", "d20+2", "Red Light", "Green Light") ] break case 76: encounter.text = "Elliot Carver, the villain from Tomorrow Never Dies, ridicules your martial ability. You will not let this stand." encounter.enemies = [ - createEnemy("Elliot Carver", calculateRoll("6d10+12"), 12, "2d8+4", calculateRoll("d20+1"), "Berate3d10"), - createEnemy("Goon A", calculateRoll("3d10+3"), 11, "3d10+5", calculateRoll("d20-1")), - createEnemy("Goon B", calculateRoll("3d10+3"), 11, "3d10+5", calculateRoll("d20-1")), + createEnemy("Elliot Carver", calculateRoll("6d10+12"), 12, "2d8+4", "d20+1", "Berate3d10"), + createEnemy("Goon A", calculateRoll("3d10+3"), 11, "3d10+5", "d20-1"), + createEnemy("Goon B", calculateRoll("3d10+3"), 11, "3d10+5", "d20-1"), ] break case 77: encounter.text = "So, you accidentally punched yourself while carrying a load and picking up something off the ground at the same time. Pissed off, you decide to fight yourself." encounter.enemies = [ - createEnemy("Yourself", calculateRoll("6d8+18"), 15, "1d6+3", calculateRoll("d20+3")) + createEnemy("Yourself", calculateRoll("6d8+18"), 15, "1d6+3", "d20+3") ] break case 78: encounter.text = "A suspension of bad feelings waddles toward you. You have no choice but to take to arms." encounter.enemies = [ - createEnemy("Sad", calculateRoll("6d10+12"), 8, "2d6+2", calculateRoll("d20-2")), - createEnemy("Mad", calculateRoll("6d10+12"), 8, "2d6+3", calculateRoll("d20-2")), - createEnemy("Depressed", calculateRoll("6d10+12"), 8, "2d6+3", calculateRoll("d20-2")), - createEnemy("Upset", calculateRoll("6d10+12"), 8, "2d6+3", calculateRoll("d20-2")) + createEnemy("Sad", calculateRoll("6d10+12"), 8, "2d6+2", "d20-2"), + createEnemy("Mad", calculateRoll("6d10+12"), 8, "2d6+3", "d20-2"), + createEnemy("Depressed", calculateRoll("6d10+12"), 8, "2d6+3", "d20-2"), + createEnemy("Upset", calculateRoll("6d10+12"), 8, "2d6+3", "d20-2") ] break case 79: encounter.text = "A gambler is here. Feeling cheated, he directs his misfortune at you." encounter.enemies = [ - createEnemy("A gambler", calculateRoll("7d10+21"), 13, "2d8+5", calculateRoll("d20+1"), "Even the Odds") + createEnemy("A gambler", calculateRoll("7d10+21"), 13, "2d8+5", "d20+1", "Even the Odds") ] break case 80: encounter.text = "You know how they say, \"You miss 100% of the shots you don't take?\" Well here's that shot you didn't take." encounter.enemies = [ - createEnemy("The Shot", calculateRoll("5d10+5"), 13, "1d10+2", calculateRoll("d20+2")) + createEnemy("The Shot", calculateRoll("5d10+5"), 13, "1d10+2", "d20+2") ] break case 81: encounter.text = "You know how they say, \"The path to hell is paved with good intentions?\" Here are those good intentions." encounter.enemies = [ - createEnemy("Good Intention A", calculateRoll("6d8+12"), 14, "1d6-1", calculateRoll("d20+2")), - createEnemy("Good Intention B", calculateRoll("6d8+12"), 14, "1d6-1", calculateRoll("d20+2")), - createEnemy("Good Intention C", calculateRoll("6d8+12"), 14, "1d6-1", calculateRoll("d20+2")) + createEnemy("Good Intention A", calculateRoll("6d8+12"), 14, "1d6-1", "d20+2"), + createEnemy("Good Intention B", calculateRoll("6d8+12"), 14, "1d6-1", "d20+2"), + createEnemy("Good Intention C", calculateRoll("6d8+12"), 14, "1d6-1", "d20+2") ] break case 82: encounter.text = "It's the AI from AI Dungeon! Man your battle stations." encounter.enemies = [ - createEnemy("AI", calculateRoll("5d10+10"), 12, "2d4+2", calculateRoll("d20+1"), "Hallucinate") + createEnemy("AI", calculateRoll("5d10+10"), 12, "2d4+2", "d20+1", "Hallucinate") ] break case 83: encounter.text = "You shouldn't have kicked that puppy when you were a kid because it's all grown up and it remembers." encounter.enemies = [ - createEnemy("Vengeance Dog", calculateRoll("6d8+18"), 14, "1d8+2", calculateRoll("d20+2"), "Intimidating Growl") + createEnemy("Vengeance Dog", calculateRoll("6d8+18"), 14, "1d8+2", "d20+2", "Intimidating Growl") ] break case 84: encounter.text = "Hah! You're screwed now! Your worst fear is actualized in front of you. It's a thing!" encounter.enemies = [ - createEnemy("Thing You Fear Most", calculateRoll("10d10+20"), 13, "2d6+4", calculateRoll("d20+1"), "Morph") + createEnemy("Thing You Fear Most", calculateRoll("10d10+20"), 13, "2d6+4", "d20+1", "Morph") ] break case 85: encounter.text = "Well, if it isn't the consequences of your actions." encounter.enemies = [ - createEnemy("Consequence A", calculateRoll("3d8+9"), 8, "1d6+1", calculateRoll("d20-2")), - createEnemy("Consequence B", calculateRoll("3d8+9"), 8, "1d6+1", calculateRoll("d20-2")), - createEnemy("Consequence C", calculateRoll("3d8+9"), 8, "1d6+1", calculateRoll("d20-2")), - createEnemy("Consequence D", calculateRoll("3d8+9"), 8, "1d6+1", calculateRoll("d20-2")), - createEnemy("Consequence E", calculateRoll("3d8+9"), 8, "1d6+1", calculateRoll("d20-2")) + createEnemy("Consequence A", calculateRoll("3d8+9"), 8, "1d6+1", "d20-2"), + createEnemy("Consequence B", calculateRoll("3d8+9"), 8, "1d6+1", "d20-2"), + createEnemy("Consequence C", calculateRoll("3d8+9"), 8, "1d6+1", "d20-2"), + createEnemy("Consequence D", calculateRoll("3d8+9"), 8, "1d6+1", "d20-2"), + createEnemy("Consequence E", calculateRoll("3d8+9"), 8, "1d6+1", "d20-2") ] break case 86: @@ -746,37 +746,37 @@ function createEncounter(listName) { case 87: encounter.text = "The embodiment of really poor decisions and a hangover approaches you in a disturbing pattern." encounter.enemies = [ - createEnemy("Hangover", calculateRoll("8d8+16"), 15, "2d6+3", calculateRoll("d20-1"), "Head Pain3d6"), - createEnemy("Poor Decision A", calculateRoll("8d8+16"), 15, "2d6+3", calculateRoll("d20-1")), - createEnemy("Poor Decision B", calculateRoll("8d8+16"), 15, "2d6+3", calculateRoll("d20-1")) + createEnemy("Hangover", calculateRoll("8d8+16"), 15, "2d6+3", "d20-1", "Head Pain3d6"), + createEnemy("Poor Decision A", calculateRoll("8d8+16"), 15, "2d6+3", "d20-1"), + createEnemy("Poor Decision B", calculateRoll("8d8+16"), 15, "2d6+3", "d20-1") ] break case 88: encounter.text = "An annoying sales-person is using hard-sale tactics at you. Resist!" encounter.enemies = [ - createEnemy("Sales-Person", calculateRoll("8d8+16"), 14, "1d6+4", calculateRoll("d20+4"), "Big Sale") + createEnemy("Sales-Person", calculateRoll("8d8+16"), 14, "1d6+4", "d20+4", "Big Sale") ] break case 89: encounter.text = "A group of Reddit mods are here. This is not a good sign." encounter.enemies = [ - createEnemy("Reddit Mod A", calculateRoll("2d6"), 12, "1d4+2", calculateRoll("d20+2")), - createEnemy("Reddit Mod B", calculateRoll("2d6"), 12, "1d4+2", calculateRoll("d20+2")), - createEnemy("Reddit Mod C", calculateRoll("2d6"), 12, "1d4+2", calculateRoll("d20+2")), - createEnemy("Reddit Mod D", calculateRoll("2d6"), 12, "1d4+2", calculateRoll("d20+2")), - createEnemy("Grand Reddit Mod", calculateRoll("7d10+14"), 15, "1d10+2", calculateRoll("d20+1")) + createEnemy("Reddit Mod A", calculateRoll("2d6"), 12, "1d4+2", "d20+2"), + createEnemy("Reddit Mod B", calculateRoll("2d6"), 12, "1d4+2", "d20+2"), + createEnemy("Reddit Mod C", calculateRoll("2d6"), 12, "1d4+2", "d20+2"), + createEnemy("Reddit Mod D", calculateRoll("2d6"), 12, "1d4+2", "d20+2"), + createEnemy("Grand Reddit Mod", calculateRoll("7d10+14"), 15, "1d10+2", "d20+1") ] break case 90: encounter.text = "An expert in bulshiddo beckoms toward you. You have no other choice but to engage." encounter.enemies = [ - createEnemy("Bulshiddo Expert", calculateRoll("7d10+14"), 15, "1d10+2", calculateRoll("d20+1"), "Focus Chit") + createEnemy("Bulshiddo Expert", calculateRoll("7d10+14"), 15, "1d10+2", "d20+1", "Focus Chit") ] break case 91: encounter.text = "You know how they say \"Hope springs eternal?\" Well, Hope is springing her way to your direction." encounter.enemies = [ - createEnemy("Hope", calculateRoll("7d8+14"), 15, "1d8+3", calculateRoll("d20+1"), "Spring Eternal5d4") + createEnemy("Hope", calculateRoll("7d8+14"), 15, "1d8+3", "d20+1", "Spring Eternal5d4") ] break case 92: @@ -788,56 +788,56 @@ function createEncounter(listName) { case 93: encounter.text = "A touring squad of basketball players send a stray rebound right to your head. It's on now!" encounter.enemies = [ - createEnemy("Scottie P", calculateRoll("6d10+12"), 8, "2d6+2", calculateRoll("d20-2")), - createEnemy("M Jordan", calculateRoll("6d10+12"), 8, "2d6+2", calculateRoll("d20-2")), - createEnemy("L Bird", calculateRoll("6d10+12"), 8, "2d6+2", calculateRoll("d20-2")), - createEnemy("Magic J", calculateRoll("6d10+12"), 8, "2d6+2", calculateRoll("d20-2")), - createEnemy("C Barkley", calculateRoll("6d10+12"), 8, "2d6+2", calculateRoll("d20-2")), + createEnemy("Scottie P", calculateRoll("6d10+12"), 8, "2d6+2", "d20-2"), + createEnemy("M Jordan", calculateRoll("6d10+12"), 8, "2d6+2", "d20-2"), + createEnemy("L Bird", calculateRoll("6d10+12"), 8, "2d6+2", "d20-2"), + createEnemy("Magic J", calculateRoll("6d10+12"), 8, "2d6+2", "d20-2"), + createEnemy("C Barkley", calculateRoll("6d10+12"), 8, "2d6+2", "d20-2"), ] break case 94: encounter.text = "What happens if you fight the void? Let's see." encounter.enemies = [ - createEnemy("The Void", calculateRoll("5d10+5"), 13, "1d10+2", calculateRoll("d20+2"), "Darkness") + createEnemy("The Void", calculateRoll("5d10+5"), 13, "1d10+2", "d20+2", "Darkness") ] break case 95: encounter.text = "Oh god, I've written so many encounters at this point. Just use your imagination." encounter.enemies = [ - createEnemy("Your Imagination", calculateRoll("6d8+12"), 14, "1d6-1", calculateRoll("d20+2"), "Detect Thoughts") + createEnemy("Your Imagination", calculateRoll("6d8+12"), 14, "1d6-1", "d20+2", "Detect Thoughts") ] break case 96: encounter.text = "A tachometer is revving up!" encounter.enemies = [ - createEnemy("Tachometer", calculateRoll("5d10+10"), 14, "2d6+3", calculateRoll("d20+2"), "Accelerate") + createEnemy("Tachometer", calculateRoll("5d10+10"), 14, "2d6+3", "d20+2", "Accelerate") ] break case 97: encounter.text = "Taco Tuesdays are back and with a serious vengeance." encounter.enemies = [ - createEnemy("Taco Tuesday A", calculateRoll("9d8+18"), 11, "1d6+2", calculateRoll("d20+1"), "Diarrhea3d10"), - createEnemy("Taco Tuesday B", calculateRoll("9d8+18"), 11, "1d6+2", calculateRoll("d20+1"), "Diarrhea3d10") + createEnemy("Taco Tuesday A", calculateRoll("9d8+18"), 11, "1d6+2", "d20+1", "Diarrhea3d10"), + createEnemy("Taco Tuesday B", calculateRoll("9d8+18"), 11, "1d6+2", "d20+1", "Diarrhea3d10") ] break case 98: encounter.text = "There's like one dude screaming here. It's not clear who he's yelling at or why. Can you please shut him up?" encounter.enemies = [ - createEnemy("Screaming Dude", calculateRoll("5d10+10"), 14, "2d6+3", calculateRoll("d20+2"), "Scream") + createEnemy("Screaming Dude", calculateRoll("5d10+10"), 14, "2d6+3", "d20+2", "Scream") ] break case 99: encounter.text = "Magneto has somehow entered your world. He blames you for this injustice." encounter.enemies = [ - createEnemy("Magneto", calculateRoll("6d8+18"), 14, "1d8+2", calculateRoll("d20+2"), "Manipulate Metal", "Shield"), - createEnemy("The Juggernaut", calculateRoll("6d8+18"), 14, "1d8+2", calculateRoll("d20+2"), "Charge3d10"), - createEnemy("Sabretooth", calculateRoll("6d8+18"), 14, "1d8+2", calculateRoll("d20+2")), + createEnemy("Magneto", calculateRoll("6d8+18"), 14, "1d8+2", "d20+2", "Manipulate Metal", "Shield"), + createEnemy("The Juggernaut", calculateRoll("6d8+18"), 14, "1d8+2", "d20+2", "Charge3d10"), + createEnemy("Sabretooth", calculateRoll("6d8+18"), 14, "1d8+2", "d20+2"), ] break case 100: encounter.text = "A banker has come to collect on your debts." encounter.enemies = [ - createEnemy("The Banker", calculateRoll("10d10+20"), 13, "2d6+4", calculateRoll("d20+1"), "Prisoner's Dilemma", "PMT Function3d6", "Tax Break") + createEnemy("The Banker", calculateRoll("10d10+20"), 13, "2d6+4", "d20+1", "Prisoner's Dilemma", "PMT Function3d6", "Tax Break") ] break } @@ -900,7 +900,7 @@ function createInitiativeOrder() { } state.initiativeOrder.sort(function(a, b) { - return b.initiative - a.initiative; + return b.calculatedInitiative - a.calculatedInitiative; }); } diff --git a/Output.js b/Output.js index 3fe2012..3ad04ba 100644 --- a/Output.js +++ b/Output.js @@ -281,7 +281,7 @@ const modifier = (text) => { } else { var index = 0 for (var character of state.initiativeOrder) { - text += `${++index}. ${character.name} (Initiative: ${character.initiative})\n` + text += `${++index}. ${character.name} (Initiative: ${character.calculatedInitiative})\n` } }