mirror of
https://github.com/raeleus/Hashtag-DnD.git
synced 2025-07-13 00:41:51 -04:00
Added #initiative.
This commit is contained in:
parent
f5433ec6f8
commit
cdf33edde7
3 changed files with 52 additions and 0 deletions
16
Input.js
16
Input.js
|
@ -205,6 +205,7 @@ const modifier = (text) => {
|
|||
if (text == null) text = processCommandSynonyms(command, commandName, removeEnemySynonyms, doRemoveEnemy)
|
||||
if (text == null) text = processCommandSynonyms(command, commandName, clearEnemiesSynonyms, doClearEnemies)
|
||||
if (text == null) text = processCommandSynonyms(command, commandName, addEnemySynonyms, doAddEnemy)
|
||||
if (text == null) text = processCommandSynonyms(command, commandName, initiativeSynonyms, doInitiative)
|
||||
if (text == null) text = processCommandSynonyms(command, commandName, helpSynonyms, doHelp)
|
||||
if (text == null) {
|
||||
var character = getCharacter()
|
||||
|
@ -581,6 +582,7 @@ function init() {
|
|||
if (state.defaultDifficulty == null) state.defaultDifficulty = 10
|
||||
if (state.day == null) state.day = 0
|
||||
if (state.enemies == null) state.enemies = []
|
||||
if (state.initiativeOrder == null) state.initiativeOrder = []
|
||||
state.show = null
|
||||
state.prefix = null
|
||||
state.critical = null
|
||||
|
@ -1705,6 +1707,19 @@ function doAddEnemy(command) {
|
|||
return `[Enemy ${enemy.name} has been created]`
|
||||
}
|
||||
|
||||
function doInitiative(command) {
|
||||
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)
|
||||
}
|
||||
|
||||
createInitiativeOrder()
|
||||
|
||||
state.show = "initiative"
|
||||
return "\nBattle has commenced!\n"
|
||||
}
|
||||
|
||||
function doTake(command) {
|
||||
var arg0 = getArgument(command, 0)
|
||||
if (arg0 == null) {
|
||||
|
@ -2349,6 +2364,7 @@ function doReset(command) {
|
|||
state.locations = []
|
||||
state.location = null
|
||||
state.enemies = null
|
||||
state.initiativeOrder = []
|
||||
state.x = null
|
||||
state.y = null
|
||||
state.defaultDifficulty = null
|
||||
|
|
16
Library.js
16
Library.js
|
@ -881,6 +881,22 @@ function createEnemy(name, health, ac, damage, initiative, ...spells) {
|
|||
return enemy
|
||||
}
|
||||
|
||||
function createInitiativeOrder() {
|
||||
state.initiativeOrder = []
|
||||
|
||||
for (var character of state.characters) {
|
||||
state.initiativeOrder.push(character)
|
||||
}
|
||||
|
||||
for (var enemy of state.enemies) {
|
||||
state.initiativeOrder.push(enemy)
|
||||
}
|
||||
|
||||
state.initiativeOrder.sort(function(a, b) {
|
||||
return b.initiative - a.initiative;
|
||||
});
|
||||
}
|
||||
|
||||
const levelSplits = [0, 300, 900, 2700, 6500, 14000, 23000, 34000, 48000, 64000, 85000, 100000, 120000, 140000, 165000, 195000, 225000, 265000, 305000, 355000]
|
||||
|
||||
function getLevel(experience) {
|
||||
|
|
20
Output.js
20
Output.js
|
@ -231,6 +231,26 @@ const modifier = (text) => {
|
|||
|
||||
text += "******************\n\n"
|
||||
break
|
||||
case "initiative":
|
||||
text += "*** INITIATIVE ORDER ***\n"
|
||||
|
||||
if (state.initiativeOrder.length == 0) {
|
||||
text += "There is no one in the battle. This makes no sense!"
|
||||
} else {
|
||||
var index = 0
|
||||
for (var character of state.initiativeOrder) {
|
||||
text += `${++index}. ${character.name} (Initiative: ${character.initiative})\n`
|
||||
}
|
||||
}
|
||||
|
||||
text += "******************\n\n"
|
||||
|
||||
if (state.initiativeOrder.length > 0) {
|
||||
var possesiveName = getPossessiveName(state.initiativeOrder[0].name)
|
||||
if (possesiveName == "Your") possesiveName = "your"
|
||||
text += `It is ${possessiveName} turn`
|
||||
}
|
||||
break
|
||||
case "reset":
|
||||
text += "[All settings have been reset]\n"
|
||||
break
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue