Finished up for version 0.0.6
This commit is contained in:
@@ -90,7 +90,7 @@ export default class KHDiceRoller {
|
||||
});
|
||||
}
|
||||
|
||||
async rollSkillInChat(skillName, skillValue, showValue, speaker, openclosed) {
|
||||
async rollSkillInChat(skillName, skillValue, showValue, speaker, openclosed, opposite) {
|
||||
const roll = new Roll(`1d100`);
|
||||
|
||||
let res = roll.roll();
|
||||
@@ -105,9 +105,23 @@ export default class KHDiceRoller {
|
||||
openclosed = 0
|
||||
}
|
||||
|
||||
if(opposite === undefined) {
|
||||
opposite = []
|
||||
}
|
||||
|
||||
let oppositeValue = ""
|
||||
|
||||
opposite.forEach(function(skill) {
|
||||
if(oppositeValue !== "") {
|
||||
oppositeValue = oppositeValue + " " + game.i18n.localize("ROLL.OR") + " "
|
||||
}
|
||||
oppositeValue = oppositeValue + skill
|
||||
})
|
||||
|
||||
let rollData = {
|
||||
name: computedName,
|
||||
res: res
|
||||
res: res,
|
||||
opposite: oppositeValue
|
||||
};
|
||||
|
||||
if(skillValue > 0) {
|
||||
@@ -155,7 +169,7 @@ export default class KHDiceRoller {
|
||||
});
|
||||
}
|
||||
|
||||
async rollSkillDialogInChat(skillName, skillValue, showValue, speaker, startopen) {
|
||||
async rollSkillDialogInChat(skillName, skillValue, showValue, speaker, startopen, opposite) {
|
||||
const id = randomID();
|
||||
|
||||
if(startopen === undefined) {
|
||||
@@ -180,6 +194,9 @@ export default class KHDiceRoller {
|
||||
const container = document.getElementById(id);
|
||||
let openclosed = container.querySelector('[name="openclosed"]').value
|
||||
|
||||
await this.rollSkillInChat(skillName, skillValue, showValue, speaker, openclosed, opposite)
|
||||
|
||||
/*
|
||||
const roll = new Roll(`1d100`);
|
||||
|
||||
let res = roll.roll();
|
||||
@@ -239,6 +256,7 @@ export default class KHDiceRoller {
|
||||
alias: speaker.name,
|
||||
},
|
||||
});
|
||||
*/
|
||||
},
|
||||
},
|
||||
two: {
|
||||
@@ -251,4 +269,208 @@ export default class KHDiceRoller {
|
||||
classes: ["dialog", "kopparhavet"],
|
||||
}).render(true);
|
||||
}
|
||||
|
||||
async rollSkillRitualInChat(ritualName, skills, showValue, speaker, openclosed) {
|
||||
let rollData = {
|
||||
name: ritualName,
|
||||
res: []
|
||||
};
|
||||
|
||||
if(openclosed === undefined) {
|
||||
openclosed = 0
|
||||
}
|
||||
|
||||
if(openclosed < 0) {
|
||||
rollData.closed = Math.abs(openclosed)
|
||||
}
|
||||
|
||||
if(openclosed > 0) {
|
||||
rollData.opened = Math.abs(openclosed)
|
||||
}
|
||||
|
||||
let successes = 0
|
||||
let totalrolls = 0
|
||||
|
||||
for (const skill of skills) {
|
||||
totalrolls++
|
||||
const roll = new Roll(`1d100`);
|
||||
|
||||
let res = roll.roll();
|
||||
|
||||
let skillName = skill.name
|
||||
let success = false
|
||||
let failure = false
|
||||
|
||||
if(showValue) {
|
||||
skillName = skillName + " (" + skill.value + ")"
|
||||
}
|
||||
|
||||
let rollData2 = {
|
||||
name: skillName,
|
||||
res: res,
|
||||
};
|
||||
|
||||
if(openclosed < 0) {
|
||||
rollData2.closed = Math.abs(openclosed)
|
||||
}
|
||||
|
||||
if(openclosed > 0) {
|
||||
rollData2.opened = Math.abs(openclosed)
|
||||
}
|
||||
|
||||
if(skill.value > 0) {
|
||||
let oneRes = Math.floor((res.total / 1) % 10);
|
||||
//let tenRes = Math.floor((res.total / 10) % 10);
|
||||
|
||||
if(openclosed < 0 && oneRes !== 0 && Math.abs(openclosed) >= oneRes) {
|
||||
// roll is closed
|
||||
failure = true
|
||||
} else if(openclosed > 0 && oneRes !== 0 && Math.abs(openclosed) >= oneRes){
|
||||
// roll is opened
|
||||
success = true
|
||||
successes++
|
||||
} else {
|
||||
if (res.total <= skill.value) {
|
||||
success = true
|
||||
successes++
|
||||
} else {
|
||||
failure = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rollData.res.push({
|
||||
name: skillName,
|
||||
failure: failure,
|
||||
success: success,
|
||||
result: res,
|
||||
})
|
||||
|
||||
rollData2.success = success
|
||||
rollData2.failure = failure
|
||||
|
||||
const html = await renderTemplate("systems/kopparhavet/templates/dice/roll.html", rollData2);
|
||||
|
||||
await roll.toMessage({
|
||||
create: true,
|
||||
content: html,
|
||||
user: game.user._id,
|
||||
speaker: {
|
||||
actor: speaker._id,
|
||||
token: speaker.token,
|
||||
alias: speaker.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
switch (totalrolls) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
if(successes === 0) {
|
||||
rollData.result = "0"
|
||||
} else if(successes === 1) {
|
||||
rollData.result = "2"
|
||||
} else if(successes === 2) {
|
||||
rollData.result = "3"
|
||||
} else if(successes === 3) {
|
||||
rollData.result = "4"
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if(successes === 0) {
|
||||
rollData.result = "0"
|
||||
} else if(successes === 1) {
|
||||
rollData.result = "1"
|
||||
} else if(successes === 2) {
|
||||
rollData.result = "2"
|
||||
} else if(successes === 3) {
|
||||
rollData.result = "3"
|
||||
} else if(successes === 4) {
|
||||
rollData.result = "4"
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if(successes === 0) {
|
||||
rollData.result = "0"
|
||||
} else if(successes === 1) {
|
||||
rollData.result = "1"
|
||||
} else if(successes === 2) {
|
||||
rollData.result = "1"
|
||||
} else if(successes === 3) {
|
||||
rollData.result = "2"
|
||||
} else if(successes === 4) {
|
||||
rollData.result = "3"
|
||||
} else if(successes === 5) {
|
||||
rollData.result = "4"
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
const html = await renderTemplate("systems/kopparhavet/templates/dice/ritual-roll.html", rollData);
|
||||
|
||||
/*
|
||||
await roll.toMessage({
|
||||
create: true,
|
||||
content: html,
|
||||
user: game.user._id,
|
||||
speaker: {
|
||||
actor: speaker._id,
|
||||
token: speaker.token,
|
||||
alias: speaker.name,
|
||||
},
|
||||
});
|
||||
*/
|
||||
|
||||
await ChatMessage.create({
|
||||
create: true,
|
||||
content: html,
|
||||
user: game.user._id,
|
||||
speaker: {
|
||||
actor: speaker._id,
|
||||
token: speaker.token,
|
||||
alias: speaker.name,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async rollSkillChallangeDialogInChat(name, skills, showValue, speaker, startopen) {
|
||||
const id = randomID();
|
||||
|
||||
if(startopen === undefined) {
|
||||
startopen = 0
|
||||
}
|
||||
|
||||
const content = await renderTemplate("systems/kopparhavet/templates/roll-dialog.html", {
|
||||
id,
|
||||
startopen,
|
||||
name,
|
||||
});
|
||||
|
||||
await new Dialog({
|
||||
title: game.i18n.localize("ROLL.TITLE"),
|
||||
content,
|
||||
buttons: {
|
||||
one: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: game.i18n.localize("BUTTON.ROLL"),
|
||||
callback: async () => {
|
||||
const container = document.getElementById(id);
|
||||
let openclosed = container.querySelector('[name="openclosed"]').value
|
||||
|
||||
await this.rollSkillRitualInChat(name, skills, showValue, speaker, openclosed)
|
||||
},
|
||||
},
|
||||
two: {
|
||||
icon: '<i class="fas fa-times"></i>',
|
||||
label: game.i18n.localize("BUTTON.CANCEL"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
classes: ["dialog", "kopparhavet"],
|
||||
}).render(true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user