mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-18 07:59:03 +01:00
Deleting old templates
This commit is contained in:
parent
9b3632be2f
commit
aff5998a45
21 changed files with 447 additions and 1015 deletions
|
|
@ -56,6 +56,8 @@ Hooks.once('init', () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
CONFIG.Dice.rolls = [...CONFIG.Dice.rolls, DHRoll, DualityRoll, D20Roll, DamageRoll];
|
CONFIG.Dice.rolls = [...CONFIG.Dice.rolls, DHRoll, DualityRoll, D20Roll, DamageRoll];
|
||||||
|
Roll.CHAT_TEMPLATE = "systems/daggerheart/templates/ui/chat/foundryRoll.hbs";
|
||||||
|
Roll.TOOLTIP_TEMPLATE = "systems/daggerheart/templates/ui/chat/foundryRollTooltip.hbs";
|
||||||
CONFIG.MeasuredTemplate.objectClass = placeables.DhMeasuredTemplate;
|
CONFIG.MeasuredTemplate.objectClass = placeables.DhMeasuredTemplate;
|
||||||
|
|
||||||
const { DocumentSheetConfig } = foundry.applications.apps;
|
const { DocumentSheetConfig } = foundry.applications.apps;
|
||||||
|
|
|
||||||
|
|
@ -2197,6 +2197,9 @@
|
||||||
"deathMove": {
|
"deathMove": {
|
||||||
"title": "Death Move"
|
"title": "Death Move"
|
||||||
},
|
},
|
||||||
|
"dicePool": {
|
||||||
|
"title": "Dice Pool"
|
||||||
|
},
|
||||||
"domainCard": {
|
"domainCard": {
|
||||||
"title": "Domain Card"
|
"title": "Domain Card"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,9 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
||||||
html.querySelectorAll('.duality-action-effect').forEach(element =>
|
html.querySelectorAll('.duality-action-effect').forEach(element =>
|
||||||
element.addEventListener('click', event => this.onApplyEffect(event, data.message))
|
element.addEventListener('click', event => this.onApplyEffect(event, data.message))
|
||||||
);
|
);
|
||||||
|
html.querySelectorAll('.simple-roll-button').forEach(element =>
|
||||||
|
element.addEventListener('click', event => this.onRollSimple(event, data.message))
|
||||||
|
);
|
||||||
html.querySelectorAll('.target-container').forEach(element => {
|
html.querySelectorAll('.target-container').forEach(element => {
|
||||||
element.addEventListener('mouseenter', this.hoverTarget);
|
element.addEventListener('mouseenter', this.hoverTarget);
|
||||||
element.addEventListener('mouseleave', this.unhoverTarget);
|
element.addEventListener('mouseleave', this.unhoverTarget);
|
||||||
|
|
@ -211,7 +214,6 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
||||||
async onDamage(event, message) {
|
async onDamage(event, message) {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
const { isHit, targets } = this.getTargetList(event, message);
|
const { isHit, targets } = this.getTargetList(event, message);
|
||||||
console.log(message, isHit, targets)
|
|
||||||
|
|
||||||
if (message.system.onSave && isHit) {
|
if (message.system.onSave && isHit) {
|
||||||
const pendingingSaves = message.system.targets.filter(
|
const pendingingSaves = message.system.targets.filter(
|
||||||
|
|
@ -251,6 +253,33 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async onRollSimple(event, message) {
|
||||||
|
const buttonType = event.target.dataset.type ?? 'damage',
|
||||||
|
total = message.rolls.reduce((a,c) => a + Roll.fromJSON(c).total, 0),
|
||||||
|
damages = {
|
||||||
|
'hitPoints': {
|
||||||
|
parts: [
|
||||||
|
{
|
||||||
|
applyTo: 'hitPoints',
|
||||||
|
damageTypes: [],
|
||||||
|
total
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
targets = Array.from(game.user.targets);
|
||||||
|
|
||||||
|
if (targets.length === 0)
|
||||||
|
return ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noTargetsSelected'));
|
||||||
|
|
||||||
|
targets.forEach(target => {
|
||||||
|
if(buttonType === 'healing')
|
||||||
|
target.actor.takeHealing(damages);
|
||||||
|
else
|
||||||
|
target.actor.takeDamage(damages);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Toggle visibility of target containers.
|
* Toggle visibility of target containers.
|
||||||
* @param {MouseEvent} event
|
* @param {MouseEvent} event
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ export default class DHDamageAction extends DHBaseAction {
|
||||||
}
|
}
|
||||||
|
|
||||||
async rollDamage(event, data) {
|
async rollDamage(event, data) {
|
||||||
// console.log(data)
|
|
||||||
const systemData = data.system ?? data;
|
const systemData = data.system ?? data;
|
||||||
|
|
||||||
let formulas = this.damage.parts.map(p => ({
|
let formulas = this.damage.parts.map(p => ({
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ export default class DamageRoll extends DHRoll {
|
||||||
static DefaultDialog = DamageDialog;
|
static DefaultDialog = DamageDialog;
|
||||||
|
|
||||||
static async buildEvaluate(roll, config = {}, message = {}) {
|
static async buildEvaluate(roll, config = {}, message = {}) {
|
||||||
console.log(roll,config)
|
|
||||||
if (config.evaluate !== false)
|
if (config.evaluate !== false)
|
||||||
for (const roll of config.roll) await roll.roll.evaluate();
|
for (const roll of config.roll) await roll.roll.evaluate();
|
||||||
|
|
||||||
|
|
@ -33,6 +32,21 @@ export default class DamageRoll extends DHRoll {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async buildPost(roll, config, message) {
|
||||||
|
if (game.modules.get('dice-so-nice')?.active) {
|
||||||
|
const pool = foundry.dice.terms.PoolTerm.fromRolls(
|
||||||
|
Object.values(config.damage).flatMap(r => r.parts.map(p => p.roll))
|
||||||
|
),
|
||||||
|
diceRoll = Roll.fromTerms([pool]);
|
||||||
|
await game.dice3d.showForRoll(diceRoll, game.user, true);
|
||||||
|
}
|
||||||
|
await super.buildPost(roll, config, message);
|
||||||
|
if (config.source?.message) {
|
||||||
|
const chatMessage = ui.chat.collection.get(config.source.message);
|
||||||
|
chatMessage.update({ 'system.damage': config.damage });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static unifyDamageRoll(rolls) {
|
static unifyDamageRoll(rolls) {
|
||||||
const unified = {};
|
const unified = {};
|
||||||
rolls.forEach(r => {
|
rolls.forEach(r => {
|
||||||
|
|
|
||||||
|
|
@ -64,24 +64,8 @@ export default class DHRoll extends Roll {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create Chat Message
|
// Create Chat Message
|
||||||
// if (roll instanceof CONFIG.Dice.daggerheart.DamageRoll && Object.values(config.roll)?.length) {
|
if (!config.source?.message)
|
||||||
// const pool = foundry.dice.terms.PoolTerm.fromRolls(
|
|
||||||
// Object.values(config.roll).flatMap(r => r.parts.map(p => p.roll))
|
|
||||||
// );
|
|
||||||
// roll = Roll.fromTerms([pool]);
|
|
||||||
// }
|
|
||||||
if (config.source?.message) {
|
|
||||||
if (game.modules.get('dice-so-nice')?.active) await game.dice3d.showForRoll(roll, game.user, true);
|
|
||||||
const chatMessage = ui.chat.collection.get(config.source.message);
|
|
||||||
chatMessage.update({ 'system.damage': config.damage });
|
|
||||||
} else {
|
|
||||||
console.log(roll, config)
|
|
||||||
config.message = await this.toMessage(roll, config);
|
config.message = await this.toMessage(roll, config);
|
||||||
// if(roll._evaluated) {
|
|
||||||
// const cls = getDocumentClass('ChatMessage');
|
|
||||||
// await cls.create(config.message, { rollMode: config.selectedRollMode });
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static postEvaluate(roll, config = {}) {
|
static postEvaluate(roll, config = {}) {
|
||||||
|
|
|
||||||
|
|
@ -541,12 +541,12 @@ export default class DhpActor extends Actor {
|
||||||
}
|
}
|
||||||
|
|
||||||
canResist(type, resistance) {
|
canResist(type, resistance) {
|
||||||
if (!type) return 0;
|
if (!type?.length) return false;
|
||||||
return type.every(t => this.system.resistance[t]?.[resistance] === true);
|
return type.every(t => this.system.resistance[t]?.[resistance] === true);
|
||||||
}
|
}
|
||||||
|
|
||||||
getDamageTypeReduction(type) {
|
getDamageTypeReduction(type) {
|
||||||
if (!type) return 0;
|
if (!type?.length) return 0;
|
||||||
const reduction = Object.entries(this.system.resistance).reduce(
|
const reduction = Object.entries(this.system.resistance).reduce(
|
||||||
(a, [index, value]) => (type.includes(index) ? Math.min(value.reduction, a) : a),
|
(a, [index, value]) => (type.includes(index) ? Math.min(value.reduction, a) : a),
|
||||||
Infinity
|
Infinity
|
||||||
|
|
|
||||||
|
|
@ -93,9 +93,8 @@ export const enrichedDualityRoll = async (
|
||||||
advantage,
|
advantage,
|
||||||
type: reaction ? 'reaction' : null
|
type: reaction ? 'reaction' : null
|
||||||
},
|
},
|
||||||
chatMessage: {
|
type: 'trait',
|
||||||
template: 'systems/daggerheart/templates/ui/chat/duality-roll.hbs'
|
hasRoll: true
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (target) {
|
if (target) {
|
||||||
|
|
|
||||||
|
|
@ -1,341 +0,0 @@
|
||||||
@import '../../utils/colors.less';
|
|
||||||
|
|
||||||
.chat-message {
|
|
||||||
--text-color: light-dark(@dark-blue, @golden);
|
|
||||||
--bg-color: light-dark(@dark-blue-40, @golden-40);
|
|
||||||
|
|
||||||
&.duality {
|
|
||||||
&.hope {
|
|
||||||
--text-color: @golden;
|
|
||||||
--bg-color: @golden-40;
|
|
||||||
.message-header, .message-content {
|
|
||||||
background-color: @golden-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.fear {
|
|
||||||
--text-color: @chat-blue;
|
|
||||||
--bg-color: @chat-blue-40;
|
|
||||||
.message-header, .message-content {
|
|
||||||
background-color: @chat-blue-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.critical {
|
|
||||||
--text-color: @chat-purple;
|
|
||||||
--bg-color: @chat-purple-40;
|
|
||||||
.message-header, .message-content {
|
|
||||||
background-color: @chat-purple-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.chat-roll {
|
|
||||||
font-size: var(--font-size-12);
|
|
||||||
padding: 0 20px;
|
|
||||||
|
|
||||||
> .roll-part-header {
|
|
||||||
font-size: var(--font-size-14);
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-part-header {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr auto 1fr;
|
|
||||||
align-items: center;
|
|
||||||
color: light-dark(@dark, @beige);
|
|
||||||
margin: 5px 0;
|
|
||||||
|
|
||||||
span {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 5px;
|
|
||||||
text-transform: capitalize;
|
|
||||||
padding: 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:before, &:after {
|
|
||||||
content: ' ';
|
|
||||||
height: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:before {
|
|
||||||
background: linear-gradient(90deg,rgba(0, 0, 0, 0) 0%, var(--text-color) 100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
background: linear-gradient(90deg,var(--text-color) 0%, rgba(0, 0, 0, 0) 100%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-part-extra {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
margin-top: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-part-content {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
gap: 5px;
|
|
||||||
padding: 5px 0;
|
|
||||||
|
|
||||||
.dice-tooltip {
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
.wrapper {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 10px;
|
|
||||||
|
|
||||||
> :first-child:not(.target-selector) {
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
> :last-child {
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-result-container {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
gap: 10px;
|
|
||||||
color: var(--text-color);
|
|
||||||
font-weight: 700;
|
|
||||||
font-family: 'Cinzel', sans-serif;
|
|
||||||
|
|
||||||
.roll-result-value {
|
|
||||||
font-size: var(--font-size-24);
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-result-desc {
|
|
||||||
font-size: var(--font-size-16);
|
|
||||||
margin-top: 2px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-difficulty {
|
|
||||||
margin-top: -5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-dice {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
gap: 5px;
|
|
||||||
font-weight: 700;
|
|
||||||
font-family: 'Cinzel', sans-serif;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
|
|
||||||
.roll-die {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 3px;
|
|
||||||
|
|
||||||
label {
|
|
||||||
text-align: center;
|
|
||||||
height: var(--font-size-12);
|
|
||||||
}
|
|
||||||
|
|
||||||
> div {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
gap: 5px;
|
|
||||||
// font-size: var(--font-size-20);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 10px;
|
|
||||||
border-color: var(--text-color);
|
|
||||||
border-radius: 5px;
|
|
||||||
|
|
||||||
legend {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
padding: 0 5px;
|
|
||||||
color: var(--text-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.target-selector {
|
|
||||||
+ .roll-part-extra {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.target-choice {
|
|
||||||
display: flex;
|
|
||||||
font-size: var(--font-size-14);
|
|
||||||
color: var(--text-color);
|
|
||||||
padding: 5px 0;
|
|
||||||
|
|
||||||
.button-target-selection {
|
|
||||||
flex: 1;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-target-selection:hover, .target-selected {
|
|
||||||
font-weight: bold;
|
|
||||||
text-shadow: 0px 0px 8px var(--text-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
i {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-target {
|
|
||||||
display: flex;
|
|
||||||
width: 100%;
|
|
||||||
gap: 10px;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.target-img {
|
|
||||||
border-radius: 50%;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
object-fit: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
.target-data {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.target-save {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
width: 22px;
|
|
||||||
height: 22px;
|
|
||||||
&:hover > i {
|
|
||||||
scale: 1.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
i {
|
|
||||||
&.fa-check {
|
|
||||||
color: @green;
|
|
||||||
}
|
|
||||||
&.fa-xmark {
|
|
||||||
color: @medium-red;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-formula {
|
|
||||||
background-color: var(--bg-color);
|
|
||||||
color: var(--text-color);
|
|
||||||
border-radius: 4px;
|
|
||||||
padding: 3px 5px;
|
|
||||||
width: fit-content;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-difficulty, .target-hit-status {
|
|
||||||
color: @green;
|
|
||||||
background-color: @green-10;
|
|
||||||
border: 1px solid currentColor;
|
|
||||||
border-radius: 4px;
|
|
||||||
padding: 3px 5px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
font-weight: 600;
|
|
||||||
|
|
||||||
&.is-miss {
|
|
||||||
color: @medium-red;
|
|
||||||
background-color: @medium-red-10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.target-hit-status {
|
|
||||||
width: fit-content;
|
|
||||||
margin-top: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div[data-action="expandRoll"] {
|
|
||||||
.roll-part-header > div > span {
|
|
||||||
&:before, &:after {
|
|
||||||
content: '\f078';
|
|
||||||
font-family: var(--font-awesome);
|
|
||||||
color: var(--text-color);
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.on-reduced {
|
|
||||||
display: grid;
|
|
||||||
overflow: hidden;
|
|
||||||
grid-template-rows: 1fr;
|
|
||||||
transition: grid-template-rows 250ms ease;
|
|
||||||
|
|
||||||
.wrapper {
|
|
||||||
display: flex;
|
|
||||||
gap: 10px;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.expanded {
|
|
||||||
.roll-part-header > div > span {
|
|
||||||
&:before, &:after {
|
|
||||||
transform: rotate(180deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.on-reduced {
|
|
||||||
grid-template-rows: 0fr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-part + .roll-part {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.target-section {
|
|
||||||
.roll-part-content {
|
|
||||||
gap: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-part-extra {
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
.target-pending-saves {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
height: 25px;
|
|
||||||
width: 25px;
|
|
||||||
&.is-absolute {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.roll-buttons {
|
|
||||||
display: flex;
|
|
||||||
gap: 5px;
|
|
||||||
margin-top: 8px;
|
|
||||||
button {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-20 {
|
|
||||||
font-size: var(--font-size-20);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.roll {
|
/* &.roll {
|
||||||
.dice-flavor {
|
.dice-flavor {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
|
@ -336,7 +336,7 @@
|
||||||
&:not(.expanded) .dice-tooltip {
|
&:not(.expanded) .dice-tooltip {
|
||||||
grid-template-rows: 0fr;
|
grid-template-rows: 0fr;
|
||||||
}
|
}
|
||||||
}
|
} */
|
||||||
|
|
||||||
button {
|
button {
|
||||||
&.inner-button {
|
&.inner-button {
|
||||||
|
|
@ -363,3 +363,354 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.daggerheart {
|
||||||
|
.chat-message {
|
||||||
|
--text-color: light-dark(@dark-blue, @golden);
|
||||||
|
--bg-color: light-dark(@dark-blue-40, @golden-40);
|
||||||
|
|
||||||
|
&.duality {
|
||||||
|
&.hope {
|
||||||
|
--text-color: @golden;
|
||||||
|
--bg-color: @golden-40;
|
||||||
|
.message-header, .message-content {
|
||||||
|
background-color: @golden-bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.fear {
|
||||||
|
--text-color: @chat-blue;
|
||||||
|
--bg-color: @chat-blue-40;
|
||||||
|
.message-header, .message-content {
|
||||||
|
background-color: @chat-blue-bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.critical {
|
||||||
|
--text-color: @chat-purple;
|
||||||
|
--bg-color: @chat-purple-40;
|
||||||
|
.message-header, .message-content {
|
||||||
|
background-color: @chat-purple-bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-roll {
|
||||||
|
font-size: var(--font-size-12);
|
||||||
|
padding: 0 20px;
|
||||||
|
|
||||||
|
> .roll-part-header {
|
||||||
|
font-size: var(--font-size-14);
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-part-header {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr auto 1fr;
|
||||||
|
align-items: center;
|
||||||
|
color: light-dark(@dark, @beige);
|
||||||
|
margin: 5px 0;
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 5px;
|
||||||
|
text-transform: capitalize;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:before, &:after {
|
||||||
|
content: ' ';
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
background: linear-gradient(90deg,rgba(0, 0, 0, 0) 0%, var(--text-color) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
background: linear-gradient(90deg,var(--text-color) 0%, rgba(0, 0, 0, 0) 100%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-part-extra {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-part-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 5px;
|
||||||
|
padding: 5px 0;
|
||||||
|
|
||||||
|
.dice-tooltip {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 10px;
|
||||||
|
|
||||||
|
> :first-child:not(.target-selector) {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
> :last-child {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-result-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 10px;
|
||||||
|
color: var(--text-color);
|
||||||
|
font-weight: 700;
|
||||||
|
font-family: 'Cinzel', sans-serif;
|
||||||
|
|
||||||
|
.roll-result-value {
|
||||||
|
font-size: var(--font-size-24);
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-result-desc {
|
||||||
|
font-size: var(--font-size-16);
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-difficulty {
|
||||||
|
margin-top: -5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-dice {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 5px;
|
||||||
|
font-weight: 700;
|
||||||
|
font-family: 'Cinzel', sans-serif;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
.roll-die {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 3px;
|
||||||
|
|
||||||
|
label {
|
||||||
|
text-align: center;
|
||||||
|
height: var(--font-size-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
> div {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 5px;
|
||||||
|
// font-size: var(--font-size-20);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
// gap: 10px;
|
||||||
|
border-color: var(--text-color);
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
legend {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
padding: 0 5px;
|
||||||
|
color: var(--text-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.target-selector {
|
||||||
|
+ .roll-part-extra {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.target-choice {
|
||||||
|
display: flex;
|
||||||
|
font-size: var(--font-size-14);
|
||||||
|
color: var(--text-color);
|
||||||
|
padding: 5px 0;
|
||||||
|
|
||||||
|
.button-target-selection {
|
||||||
|
flex: 1;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-target-selection:hover, .target-selected {
|
||||||
|
font-weight: bold;
|
||||||
|
text-shadow: 0px 0px 8px var(--text-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
i {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-target {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
gap: 10px;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.target-img {
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.target-data {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.target-save {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
&:hover > i {
|
||||||
|
scale: 1.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
i {
|
||||||
|
&.fa-check {
|
||||||
|
color: @green;
|
||||||
|
}
|
||||||
|
&.fa-xmark {
|
||||||
|
color: @medium-red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
|
||||||
|
.roll-formula {
|
||||||
|
background-color: var(--bg-color);
|
||||||
|
color: var(--text-color);
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 3px 5px;
|
||||||
|
width: fit-content;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-difficulty, .target-hit-status {
|
||||||
|
color: @green;
|
||||||
|
background-color: @green-10;
|
||||||
|
border: 1px solid currentColor;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 3px 5px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: 600;
|
||||||
|
|
||||||
|
&.is-miss {
|
||||||
|
color: @medium-red;
|
||||||
|
background-color: @medium-red-10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.target-hit-status {
|
||||||
|
width: fit-content;
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[data-action="expandRoll"] {
|
||||||
|
.roll-part-header > div > span {
|
||||||
|
&:before, &:after {
|
||||||
|
content: '\f078';
|
||||||
|
font-family: var(--font-awesome);
|
||||||
|
color: var(--text-color);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.on-reduced {
|
||||||
|
display: grid;
|
||||||
|
overflow: hidden;
|
||||||
|
grid-template-rows: 1fr;
|
||||||
|
transition: grid-template-rows 250ms ease;
|
||||||
|
|
||||||
|
.wrapper {
|
||||||
|
display: flex;
|
||||||
|
gap: 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.expanded {
|
||||||
|
.roll-part-header > div > span {
|
||||||
|
&:before, &:after {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.on-reduced {
|
||||||
|
grid-template-rows: 0fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-part + .roll-part {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
|
||||||
|
.target-section {
|
||||||
|
.roll-part-content {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-part-extra {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.target-pending-saves {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 25px;
|
||||||
|
width: 25px;
|
||||||
|
&.is-absolute {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll-buttons {
|
||||||
|
display: flex;
|
||||||
|
gap: 5px;
|
||||||
|
margin-top: 8px;
|
||||||
|
button {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.font-20 {
|
||||||
|
font-size: var(--font-size-20);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dice-roll .dice-tooltip fieldset {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
.roll-dice {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,195 +0,0 @@
|
||||||
@import '../../utils/colors.less';
|
|
||||||
@import '../../utils/spacing.less';
|
|
||||||
|
|
||||||
// .theme-colorful {
|
|
||||||
// .chat-message.duality {
|
|
||||||
// border-color: black;
|
|
||||||
// padding: 8px 0 0 0;
|
|
||||||
// fieldset.daggerheart.chat {
|
|
||||||
// border-top-width: 0;
|
|
||||||
// display: contents;
|
|
||||||
// legend {
|
|
||||||
// &:before,
|
|
||||||
// &:after {
|
|
||||||
// display: none;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .message-header {
|
|
||||||
// color: var(--color-light-3);
|
|
||||||
// padding: 0 8px;
|
|
||||||
// }
|
|
||||||
// &.hope {
|
|
||||||
// background: linear-gradient(0, rgba(165, 42, 42, 0.6) 40px, rgba(0, 0, 0, 0.6));
|
|
||||||
// }
|
|
||||||
// &.fear {
|
|
||||||
// background: linear-gradient(0, @fearBackgroundEnd, @fearBackgroundStart);
|
|
||||||
// }
|
|
||||||
// &.critical {
|
|
||||||
// background: linear-gradient(0, @criticalBackgroundEnd, @criticalBackgroundStart);
|
|
||||||
// }
|
|
||||||
// .chat-message header {
|
|
||||||
// color: var(--color-light-3);
|
|
||||||
// }
|
|
||||||
// > * {
|
|
||||||
// padding: 0 8px;
|
|
||||||
// }
|
|
||||||
// .message-content {
|
|
||||||
// .duality-modifiers,
|
|
||||||
// .duality-result,
|
|
||||||
// .dice-title {
|
|
||||||
// display: flex;
|
|
||||||
// }
|
|
||||||
// .duality-modifiers {
|
|
||||||
// display: flex;
|
|
||||||
// gap: 2px;
|
|
||||||
// margin-bottom: 4px;
|
|
||||||
// flex-wrap: wrap;
|
|
||||||
// .duality-modifier {
|
|
||||||
// padding: 2px;
|
|
||||||
// border-radius: 6px;
|
|
||||||
// border: 1px solid;
|
|
||||||
// background: var(--color-dark-6);
|
|
||||||
// font-size: 12px;
|
|
||||||
// white-space: nowrap;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .dice-flavor {
|
|
||||||
// color: var(--color-light-1);
|
|
||||||
// text-shadow: 0 0 1px black;
|
|
||||||
// border-bottom: 1px solid;
|
|
||||||
// display: flex;
|
|
||||||
// align-items: end;
|
|
||||||
// justify-content: space-between;
|
|
||||||
// padding: 0 8px;
|
|
||||||
// margin: 0 -8px 2px;
|
|
||||||
// font-weight: unset;
|
|
||||||
// }
|
|
||||||
// .dice-result {
|
|
||||||
// .duality-modifiers {
|
|
||||||
// display: flex; // Default => display: none;
|
|
||||||
// gap: 2px;
|
|
||||||
// margin-bottom: 4px;
|
|
||||||
// .duality-modifier {
|
|
||||||
// padding: 2px;
|
|
||||||
// border-radius: 6px;
|
|
||||||
// border: 1px solid;
|
|
||||||
// background: var(--color-dark-6);
|
|
||||||
// font-size: 12px;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .dice-formula,
|
|
||||||
// > .dice-total,
|
|
||||||
// .part-header {
|
|
||||||
// display: none;
|
|
||||||
// }
|
|
||||||
// .dice-tooltip {
|
|
||||||
// grid-template-rows: 1fr;
|
|
||||||
// .wrapper {
|
|
||||||
// .tooltip-part {
|
|
||||||
// display: flex;
|
|
||||||
// align-items: end;
|
|
||||||
// gap: 0.25rem;
|
|
||||||
// .dice {
|
|
||||||
// .dice-rolls {
|
|
||||||
// margin-bottom: 0;
|
|
||||||
// &.duality {
|
|
||||||
// li {
|
|
||||||
// display: flex;
|
|
||||||
// align-items: center;
|
|
||||||
// justify-content: center;
|
|
||||||
// position: relative;
|
|
||||||
// background: unset;
|
|
||||||
// line-height: unset;
|
|
||||||
// font-weight: unset;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .duality-modifier {
|
|
||||||
// display: flex;
|
|
||||||
// margin-bottom: 6px;
|
|
||||||
// color: var(--color-light-1);
|
|
||||||
// text-shadow: 0 0 1px black;
|
|
||||||
// font-size: var(--font-size-16);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .target-selection {
|
|
||||||
// label {
|
|
||||||
// color: var(--color-light-1);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .target-section {
|
|
||||||
// margin: 4px 0;
|
|
||||||
// border: 2px solid;
|
|
||||||
// margin-top: 5px;
|
|
||||||
// .dice-total {
|
|
||||||
// box-shadow: unset;
|
|
||||||
// border: unset;
|
|
||||||
// border-radius: unset;
|
|
||||||
// font-size: var(--font-size-18);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .dice-actions {
|
|
||||||
// justify-content: space-between;
|
|
||||||
// &.duality-alone {
|
|
||||||
// justify-content: end;
|
|
||||||
// margin-top: -20px;
|
|
||||||
// }
|
|
||||||
// > * {
|
|
||||||
// display: flex;
|
|
||||||
// color: var(--color-light-1);
|
|
||||||
// text-shadow: 0 0 1px black;
|
|
||||||
// font-weight: bold;
|
|
||||||
// background: var(--color-dark-1);
|
|
||||||
// padding: 4px;
|
|
||||||
// border-color: black;
|
|
||||||
// min-height: unset;
|
|
||||||
// height: 26px;
|
|
||||||
// flex: unset;
|
|
||||||
// margin: 0;
|
|
||||||
// }
|
|
||||||
// .duality-action {
|
|
||||||
// border-radius: 0 6px 0 0;
|
|
||||||
// margin-left: -8px;
|
|
||||||
// &.duality-action-effect {
|
|
||||||
// border-top-left-radius: 6px;
|
|
||||||
// margin-left: initial;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .duality-result {
|
|
||||||
// border-radius: 6px 0 0 0;
|
|
||||||
// margin-right: -8px;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .duality-result {
|
|
||||||
// display: flex;
|
|
||||||
// color: var(--color-light-1);
|
|
||||||
// text-shadow: 0 0 1px black;
|
|
||||||
// font-weight: bold;
|
|
||||||
// background: var(--color-dark-1);
|
|
||||||
// padding: 4px;
|
|
||||||
// border-color: black;
|
|
||||||
// min-height: unset;
|
|
||||||
// height: 26px;
|
|
||||||
// flex: unset;
|
|
||||||
// margin: 0;
|
|
||||||
// margin-left: auto;
|
|
||||||
// align-self: center;
|
|
||||||
// border-radius: 6px;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// button {
|
|
||||||
// &.inner-button {
|
|
||||||
// color: var(--color-light-1);
|
|
||||||
// text-shadow: 0 0 1px black;
|
|
||||||
// font-weight: bold;
|
|
||||||
// background: var(--color-dark-1);
|
|
||||||
// border-color: black;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
@import './chat/chat.less';
|
@import './chat/chat.less';
|
||||||
@import './chat/downtime.less';
|
@import './chat/downtime.less';
|
||||||
@import './chat/sheet.less';
|
@import './chat/sheet.less';
|
||||||
@import './chat/theme-colorful.less';
|
|
||||||
|
|
||||||
@import './combat-sidebar/combat-sidebar.less';
|
@import './combat-sidebar/combat-sidebar.less';
|
||||||
@import './combat-sidebar/combatant-controls.less';
|
@import './combat-sidebar/combatant-controls.less';
|
||||||
|
|
@ -19,5 +18,3 @@
|
||||||
@import './resources/resources.less';
|
@import './resources/resources.less';
|
||||||
|
|
||||||
@import './settings/settings.less';
|
@import './settings/settings.less';
|
||||||
|
|
||||||
@import './chat/chat-temp.less';
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
{{!-- TO DO DELETE ? --}}
|
|
||||||
{{> 'systems/daggerheart/templates/ui/chat/parts/damage-chat.hbs' damage=this}}
|
|
||||||
{{> 'systems/daggerheart/templates/ui/chat/parts/target-chat.hbs'}}
|
|
||||||
<div class="dice-roll daggerheart chat roll">
|
|
||||||
<div class="dice-result">
|
|
||||||
<div class="dice-actions">
|
|
||||||
<button class="damage-button" data-target-hit="true" {{#if (eq targets.length 0)}}disabled{{/if}}>{{localize "DAGGERHEART.UI.Chat.damageRoll.dealDamageToTargets"}}</button>
|
|
||||||
<button class="damage-button">{{localize "DAGGERHEART.UI.Chat.damageRoll.dealDamage"}}</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
@ -1,176 +0,0 @@
|
||||||
<div class="chat-roll">
|
|
||||||
{{!-- Roll Start --}}
|
|
||||||
<div class="roll-part roll-section">
|
|
||||||
<div class="roll-part-header"><span>Finesse Check</span></div>
|
|
||||||
<div class="roll-part-content">
|
|
||||||
<div class="roll-result-container">
|
|
||||||
<span class="roll-result-value">18</span>
|
|
||||||
<span class="roll-result-desc">with hope</span>
|
|
||||||
</div>
|
|
||||||
<span class="roll-difficulty">difficulty 15</span>
|
|
||||||
</div>
|
|
||||||
<div class="dice-roll" data-action="expandRoll">
|
|
||||||
<div class="roll-part-header"><div><span>Formula</span></div></div>
|
|
||||||
<div class="roll-part-content dice-result">
|
|
||||||
<div class="dice-tooltip">
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="roll-dice">
|
|
||||||
<div class="roll-die">
|
|
||||||
<label>Hope</label>
|
|
||||||
<div>12 <img class="dice-icon" src="systems/daggerheart/assets/icons/dice/hope/d20.svg" alt=""></div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-die">
|
|
||||||
<label></label>
|
|
||||||
<div>+</div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-die">
|
|
||||||
<label>Fear</label>
|
|
||||||
<div>6 <img class="dice-icon" src="systems/daggerheart/assets/icons/dice/fear/d12.svg" alt=""></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-formula">
|
|
||||||
1d12 + 1d12 + 0
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{!-- Roll End --}}
|
|
||||||
{{!-- Damage Start --}}
|
|
||||||
<div class="roll-part damage-section dice-roll" data-action="expandRoll">
|
|
||||||
<div class="roll-part-header"><div><span>Damage</span></div></div>
|
|
||||||
<div class="roll-part-extra on-reduced">
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="roll-formula">Hit Points: 10</div>
|
|
||||||
<div class="roll-formula">Stress: 10</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-part-content dice-result">
|
|
||||||
<div class="dice-tooltip">
|
|
||||||
<div class="wrapper">
|
|
||||||
<fieldset>
|
|
||||||
<legend>
|
|
||||||
Hit Points <div class="roll-formula">Total: 10</div>
|
|
||||||
</legend>
|
|
||||||
<label class="roll-part-header"><span>Physical <div class="roll-formula">10</div></span></label>
|
|
||||||
<div class="roll-dice">
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>4 <img class="dice-icon" src="systems/daggerheart/assets/icons/dice/default/d20.svg" alt=""></div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>+</div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>6</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<label class="roll-part-header"><span>Magical <div class="roll-formula">10</div></span></label>
|
|
||||||
<div class="roll-dice">
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>4 <img class="dice-icon" src="systems/daggerheart/assets/icons/dice/default/d20.svg" alt=""></div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>+</div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>6</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<label class="roll-part-header"><span>Phy/Mag <div class="roll-formula">10</div></span></label>
|
|
||||||
<div class="roll-dice">
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>4 <img class="dice-icon" src="systems/daggerheart/assets/icons/dice/default/d20.svg" alt=""></div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>+</div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>6</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
<fieldset>
|
|
||||||
<legend>
|
|
||||||
Stress <div class="roll-formula">Total: 10</div>
|
|
||||||
</legend>
|
|
||||||
<div class="roll-dice">
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>4 <img class="dice-icon" src="systems/daggerheart/assets/icons/dice/default/d20.svg" alt=""></div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>+</div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-die">
|
|
||||||
<div>6</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{!-- Damage End --}}
|
|
||||||
{{!-- Target Start --}}
|
|
||||||
<div class="roll-part target-section dice-roll" data-action="expandRoll">
|
|
||||||
<div class="roll-part-header"><div><span>Target</span></div></div>
|
|
||||||
<div class="roll-part-extra on-reduced">
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="target-hit-status">2 Hits</div>
|
|
||||||
<div class="target-hit-status is-miss">2 Miss</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-part-content dice-result">
|
|
||||||
<div class="dice-tooltip">
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="target-selector">
|
|
||||||
<div class="roll-part-header"><div></div></div>
|
|
||||||
<div class="target-choice"><div class="target-selected">Hit</div><div>Current</div></div>
|
|
||||||
<div class="roll-part-header"><div></div></div>
|
|
||||||
</div>
|
|
||||||
<div class="roll-part-extra">Reaction Roll All Targets<i class="fa-solid fa-shield fa-lg"></i></div>
|
|
||||||
<div class="roll-target">
|
|
||||||
<img class="target-img" src="images/goliath_ranger.jpg">
|
|
||||||
<div class="target-data">
|
|
||||||
<div class="target-name">Archer Squadron</div>
|
|
||||||
<div class="target-hit-status is-hit">Hit</div>
|
|
||||||
</div>
|
|
||||||
<i class="fa-solid fa-shield fa-lg"></i>
|
|
||||||
</div>
|
|
||||||
<div class="roll-target">
|
|
||||||
<img class="target-img" src="images/goliath_ranger.jpg">
|
|
||||||
<div class="target-data">
|
|
||||||
<div class="target-name">Conscript</div>
|
|
||||||
<div class="target-hit-status is-miss">Miss</div>
|
|
||||||
</div>
|
|
||||||
<i class="fa-solid fa-shield fa-lg"></i>
|
|
||||||
</div>
|
|
||||||
<div class="roll-target">
|
|
||||||
<img class="target-img" src="images/goliath_ranger.jpg">
|
|
||||||
<div class="target-data">
|
|
||||||
<div class="target-name">Elite Soldier</div>
|
|
||||||
<div class="target-hit-status is-hit">Hit</div>
|
|
||||||
</div>
|
|
||||||
<i class="fa-solid fa-shield fa-lg"></i>
|
|
||||||
</div>
|
|
||||||
<div class="roll-target">
|
|
||||||
<img class="target-img" src="images/goliath_ranger.jpg">
|
|
||||||
<div class="target-data">
|
|
||||||
<div class="target-name">Knight of the Realm</div>
|
|
||||||
<div class="target-hit-status is-miss">Miss</div>
|
|
||||||
</div>
|
|
||||||
<i class="fa-solid fa-shield fa-lg"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{!-- Target End --}}
|
|
||||||
<div class="roll-part-header"><div></div></div>
|
|
||||||
</div>
|
|
||||||
{{!-- Button Start --}}
|
|
||||||
<div class="roll-buttons">
|
|
||||||
<button>Deal Damage</button>
|
|
||||||
<button>Apply Effects</button>
|
|
||||||
</div>
|
|
||||||
{{!-- Button End --}}
|
|
||||||
|
|
@ -1,223 +0,0 @@
|
||||||
<div class="dice-roll daggerheart chat roll" data-action="expandRoll">
|
|
||||||
<div class="dice-flavor" data-action="expandRoll">{{title}}</div>
|
|
||||||
<div class="duality-modifiers" data-action="expandRoll">
|
|
||||||
{{#each roll.modifiers}}
|
|
||||||
<div class="duality-modifier">
|
|
||||||
{{localize label}} {{#if (gte value 0)}}+{{/if}}{{value}}
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
{{#if (eq roll.advantage.type 1)}}
|
|
||||||
<div class="duality-modifier">
|
|
||||||
{{localize "DAGGERHEART.GENERAL.Advantage.full"}}
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
{{#if (eq roll.advantage.type -1)}}
|
|
||||||
<div class="duality-modifier">
|
|
||||||
{{localize "DAGGERHEART.GENERAL.Disadvantage.full"}}
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
{{#if roll.rally.dice}}
|
|
||||||
<div class="duality-modifier">
|
|
||||||
{{localize "DAGGERHEART.CLASS.Feature.rallyDice"}} {{roll.rally.dice}}
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
<div class="dice-result">
|
|
||||||
<div class="dice-formula" data-action="expandRoll">{{roll.formula}}</div>
|
|
||||||
<div class="dice-tooltip">
|
|
||||||
<div class="wrapper">
|
|
||||||
<section class="tooltip-part">
|
|
||||||
<div class="dice" data-action="expandRoll">
|
|
||||||
<header class="part-header flexrow">
|
|
||||||
<span class="part-formula">
|
|
||||||
<span>1{{roll.hope.dice}}</span>
|
|
||||||
|
|
|
||||||
<span>1{{roll.fear.dice}}</span>
|
|
||||||
</span>
|
|
||||||
<span class="part-total">{{roll.result.total}}</span>
|
|
||||||
</header>
|
|
||||||
<div class="flexrow">
|
|
||||||
<ol class="dice-rolls duality">
|
|
||||||
<li class="roll die {{roll.hope.dice}}">
|
|
||||||
<div class="dice-container">
|
|
||||||
<div class="dice-title">{{localize "DAGGERHEART.GENERAL.hope"}}</div>
|
|
||||||
{{#if roll.hope.rerolled.any}}<i class="fa-solid fa-dice dice-rerolled" title="{{localize "DAGGERHEART.UI.Tooltip.diceIsRerolled" times=roll.hope.rerolled.rerolls.length}}"></i>{{/if}}
|
|
||||||
<div class="dice-inner-container hope" data-tooltip="{{localize "DAGGERHEART.GENERAL.rerollThing" thing=(localize "DAGGERHEART.GENERAL.hope")}}">
|
|
||||||
<button type="checkbox" class="reroll-button" data-die-index="0" data-type="hope">
|
|
||||||
<div class="dice-wrapper">
|
|
||||||
<img class="dice" src="../icons/svg/{{roll.hope.dice}}-grey.svg"/>
|
|
||||||
</div>
|
|
||||||
<div class="dice-value">{{roll.hope.value}}</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="roll die {{roll.fear.dice}}">
|
|
||||||
<div class="dice-container">
|
|
||||||
<div class="dice-title">{{localize "DAGGERHEART.GENERAL.fear"}}</div>
|
|
||||||
{{#if roll.fear.rerolled.any}}<i class="fa-solid fa-dice dice-rerolled" title="{{localize "DAGGERHEART.UI.Tooltip.diceIsRerolled" times=roll.fear.rerolled.rerolls.length}}"></i>{{/if}}
|
|
||||||
<div class="dice-inner-container fear" data-tooltip="{{localize "DAGGERHEART.GENERAL.rerollThing" thing=(localize "DAGGERHEART.GENERAL.fear")}}">
|
|
||||||
<button type="checkbox" class="reroll-button" data-die-index="2" data-type="fear">
|
|
||||||
<div class="dice-wrapper">
|
|
||||||
<img class="dice" src="../icons/svg/{{roll.fear.dice}}-grey.svg"/>
|
|
||||||
</div>
|
|
||||||
<div class="dice-value">{{roll.fear.value}}</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{#if roll.advantage.type}}
|
|
||||||
<div class="dice" data-action="expandRoll">
|
|
||||||
<header class="part-header flexrow">
|
|
||||||
<span class="part-formula">
|
|
||||||
<span>1{{roll.advantage.dice}}</span>
|
|
||||||
</span>
|
|
||||||
<span class="part-total">{{roll.advantage.value}}</span>
|
|
||||||
</header>
|
|
||||||
<div class="flexrow">
|
|
||||||
<ol class="dice-rolls">
|
|
||||||
<li class="roll die {{roll.advantage.dice}}">
|
|
||||||
<div class="dice-container">
|
|
||||||
<div class="dice-inner-container {{#if (eq roll.advantage.type 1)}}advantage{{else}}disadvantage{{/if}}">
|
|
||||||
<div class="dice-wrapper">
|
|
||||||
<img class="dice" src="../icons/svg/{{roll.advantage.dice}}-grey.svg"/>
|
|
||||||
</div>
|
|
||||||
<div class="dice-value">{{roll.advantage.value}}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
{{#if roll.rally.dice}}
|
|
||||||
<div class="dice">
|
|
||||||
<header class="part-header flexrow">
|
|
||||||
<span class="part-formula">
|
|
||||||
<span>1{{roll.rally.dice}}</span>
|
|
||||||
</span>
|
|
||||||
<span class="part-total">{{roll.rally.value}}</span>
|
|
||||||
</header>
|
|
||||||
<div class="flexrow">
|
|
||||||
<ol class="dice-rolls">
|
|
||||||
<li class="roll die {{roll.rally.dice}}">
|
|
||||||
<div class="dice-container">
|
|
||||||
<div class="dice-inner-container">
|
|
||||||
<div class="dice-wrapper">
|
|
||||||
<img class="dice" src="../icons/svg/{{roll.rally.dice}}-grey.svg"/>
|
|
||||||
</div>
|
|
||||||
<div class="dice-value">{{roll.rally.value}}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
{{#each roll.extra as | extra | }}
|
|
||||||
<div class="dice" data-action="expandRoll">
|
|
||||||
<header class="part-header flexrow">
|
|
||||||
<span class="part-formula">
|
|
||||||
<span>1{{extra.dice}}</span>
|
|
||||||
</span>
|
|
||||||
<span class="part-total">{{extra.value}}</span>
|
|
||||||
</header>
|
|
||||||
<div class="flexrow">
|
|
||||||
<ol class="dice-rolls">
|
|
||||||
<li class="roll die {{extra.dice}}">
|
|
||||||
<div class="dice-container">
|
|
||||||
<div class="dice-inner-container">
|
|
||||||
<div class="dice-wrapper">
|
|
||||||
<img class="dice" src="../icons/svg/{{extra.dice}}-grey.svg"/>
|
|
||||||
</div>
|
|
||||||
<div class="dice-value">{{extra.value}}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
{{#if roll.modifierTotal}}<div class="duality-modifier">{{#if (gt roll.modifierTotal 0)}}+{{/if}}{{roll.modifierTotal}}</div>{{/if}}
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="dice-total duality {{#if (eq roll.result.duality 1)}}hope{{else}}{{#if (eq roll.result.duality -1)}}fear{{else}}critical{{/if}}{{/if}}">
|
|
||||||
<div class="dice-total-label">
|
|
||||||
{{#unless (eq _source.roll.success undefined)}}
|
|
||||||
{{#if _source.roll.success}}
|
|
||||||
{{localize "DAGGERHEART.GENERAL.success"}} {{localize "DAGGERHEART.GENERAL.withThing" thing=roll.result.label}}
|
|
||||||
{{else}}
|
|
||||||
{{localize "DAGGERHEART.GENERAL.failure"}} {{localize "DAGGERHEART.GENERAL.withThing" thing=roll.result.label}}
|
|
||||||
{{/if}}
|
|
||||||
{{else}}
|
|
||||||
{{roll.result.label}}
|
|
||||||
{{/unless}}
|
|
||||||
</div>
|
|
||||||
<div class="dice-total-value">
|
|
||||||
{{roll.total}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<fieldset class="dice-roll daggerheart chat roll expanded{{#unless damage.roll}} hidden{{/unless}}" data-action="expandRoll">
|
|
||||||
<legend class="dice-flavor">
|
|
||||||
{{#if hasHealing}}
|
|
||||||
{{localize "DAGGERHEART.GENERAL.healing"}}
|
|
||||||
{{else}}
|
|
||||||
{{localize "DAGGERHEART.GENERAL.damage"}}
|
|
||||||
{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="dice-result">
|
|
||||||
<div class="dice-tooltip">
|
|
||||||
<div class="wrapper">
|
|
||||||
{{> 'systems/daggerheart/templates/ui/chat/parts/damage-chat.hbs' damage=damage noTitle=true}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
{{> 'systems/daggerheart/templates/ui/chat/parts/target-chat.hbs'}}
|
|
||||||
<div class="dice-roll daggerheart chat roll">
|
|
||||||
<div class="dice-result">
|
|
||||||
<div class="dice-actions{{#unless (or hasDamage hasHealing)}} duality-alone{{/unless}}">
|
|
||||||
{{#if (or hasDamage hasHealing)}}
|
|
||||||
{{#if damage.roll}}
|
|
||||||
<button class="duality-action damage-button" data-target-hit="true" data-value="{{roll.total}}"><span>
|
|
||||||
{{#if hasHealing}}
|
|
||||||
{{localize "DAGGERHEART.UI.Chat.healingRoll.applyHealing"}}
|
|
||||||
{{else}}
|
|
||||||
{{localize "DAGGERHEART.UI.Chat.damageRoll.dealDamage"}}
|
|
||||||
{{/if}}
|
|
||||||
</span></button>
|
|
||||||
{{else}}
|
|
||||||
<button class="duality-action duality-action-damage" data-value="{{roll.total}}"><span>
|
|
||||||
{{#if hasHealing}}
|
|
||||||
{{localize "DAGGERHEART.UI.Chat.attackRoll.rollHealing"}}
|
|
||||||
{{else}}
|
|
||||||
{{localize "DAGGERHEART.UI.Chat.attackRoll.rollDamage"}}
|
|
||||||
{{/if}}
|
|
||||||
</span></button>
|
|
||||||
{{/if}}
|
|
||||||
{{/if}}
|
|
||||||
{{#if hasEffect}}
|
|
||||||
<button class="duality-action-effect" data-value="{{roll.total}}"><span>{{localize "DAGGERHEART.UI.Chat.attackRoll.applyEffect"}}</span></button>
|
|
||||||
{{/if}}
|
|
||||||
<div class="duality-result">
|
|
||||||
<div>{{roll.total}}
|
|
||||||
{{#if (eq roll.result.duality 1)}}
|
|
||||||
{{localize "DAGGERHEART.GENERAL.withThing" thing=(localize "DAGGERHEART.GENERAL.hope")}}
|
|
||||||
{{else}}
|
|
||||||
{{#if (eq roll.result.duality -1)}}
|
|
||||||
{{localize "DAGGERHEART.GENERAL.withThing" thing=(localize "DAGGERHEART.GENERAL.fear")}}
|
|
||||||
{{else}}
|
|
||||||
{{localize "DAGGERHEART.GENERAL.criticalSuccess"}}
|
|
||||||
{{/if}}
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
14
templates/ui/chat/foundryRoll.hbs
Normal file
14
templates/ui/chat/foundryRoll.hbs
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
<div class="dice-roll" data-action="expandRoll">
|
||||||
|
{{#if flavor}}
|
||||||
|
<div class="dice-flavor">{{flavor}}</div>
|
||||||
|
{{/if}}
|
||||||
|
<div class="dice-result">
|
||||||
|
<div class="dice-formula">{{formula}}</div>
|
||||||
|
{{{tooltip}}}
|
||||||
|
<h4 class="dice-total">{{total}}</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="roll-buttons">
|
||||||
|
<button class="simple-roll-button">{{localize "DAGGERHEART.UI.Chat.damageRoll.dealDamage"}}</button>
|
||||||
|
<button class="simple-roll-button" data-type="healing">{{localize "DAGGERHEART.UI.Chat.healingRoll.applyHealing"}}</button>
|
||||||
|
</div>
|
||||||
19
templates/ui/chat/foundryRollTooltip.hbs
Normal file
19
templates/ui/chat/foundryRollTooltip.hbs
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
{{#if parts.length}}
|
||||||
|
<div class="dice-tooltip">
|
||||||
|
<div class="wrapper">
|
||||||
|
<fieldset>
|
||||||
|
<legend>
|
||||||
|
{{localize "DAGGERHEART.UI.Chat.dicePool.title"}}
|
||||||
|
</legend>
|
||||||
|
<div class="roll-dice">
|
||||||
|
{{#each parts}}
|
||||||
|
{{#each rolls}}
|
||||||
|
<div class="roll-die">
|
||||||
|
<div class="dice {{classes}}">{{result}}</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
<div class="dice-roll daggerheart chat roll" data-action="expandRoll">
|
|
||||||
<div class="dice-flavor">{{title}}</div>
|
|
||||||
<div class="dice-result">
|
|
||||||
{{#each roll as | resource index | }}
|
|
||||||
<div class="dice-formula">{{resource.formula}}</div>
|
|
||||||
<div class="dice-tooltip">
|
|
||||||
<div class="wrapper">
|
|
||||||
{{#each resource.parts}}
|
|
||||||
<section class="tooltip-part">
|
|
||||||
<div class="dice">
|
|
||||||
<header class="part-header flexrow">
|
|
||||||
<span class="part-formula">{{formula}}</span>
|
|
||||||
<span class="part-total">{{total}}</span>
|
|
||||||
</header>
|
|
||||||
<ol class="dice-rolls">
|
|
||||||
{{#each dice}}
|
|
||||||
{{#each results}}
|
|
||||||
<li class="roll die {{../dice}} min">{{result}}</li>
|
|
||||||
{{/each}}
|
|
||||||
{{/each}}
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="dice-total">{{resource.total}}</div>
|
|
||||||
{{/each}}
|
|
||||||
<div class="flexrow">
|
|
||||||
<button class="healing-button"><span>{{localize "DAGGERHEART.UI.Chat.healingRoll.heal"}}</span></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
@ -13,5 +13,5 @@
|
||||||
<button class="duality-action duality-action-damage">{{localize "DAGGERHEART.UI.Chat.attackRoll.rollHealing"}}</button>
|
<button class="duality-action duality-action-damage">{{localize "DAGGERHEART.UI.Chat.attackRoll.rollHealing"}}</button>
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if hasEffect}}<button>{{localize "DAGGERHEART.UI.Chat.attackRoll.applyEffect"}}</button>{{/if}}
|
{{#if hasEffect}}<button class="duality-action-effect">{{localize "DAGGERHEART.UI.Chat.attackRoll.applyEffect"}}</button>{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<div class="roll-part damage-section dice-roll" data-action="expandRoll">{{log this}}
|
<div class="roll-part damage-section dice-roll" data-action="expandRoll">
|
||||||
<div class="roll-part-header"><div><span>Damage</span></div></div>
|
<div class="roll-part-header"><div><span>Damage</span></div></div>
|
||||||
<div class="roll-part-extra on-reduced">
|
<div class="roll-part-extra on-reduced">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
<div class="roll-part target-section dice-roll" data-action="expandRoll">
|
<div class="roll-part target-section dice-roll" data-action="expandRoll">
|
||||||
<div class="roll-part-header"><div><span>Target</span></div></div>
|
<div class="roll-part-header"><div><span>Target</span></div></div>
|
||||||
{{#if (and targets.length (or hasRoll (and hasSave pendingSaves)))}}{{log this}}
|
{{#if (and targets.length (or (or (gt targetShort.hit 0) (gt targetShort.miss 0)) (and hasSave pendingSaves)))}}
|
||||||
<div class="roll-part-extra on-reduced">
|
<div class="roll-part-extra on-reduced">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
{{#if hasRoll}}
|
{{#if (or (gt targetShort.hit 0) (gt targetShort.miss 0))}}
|
||||||
<div class="target-hit-status">{{targetShort.hit}} {{#if (gt targetShort.hit 1)}}{{localize "DAGGERHEART.GENERAL.hit.single"}}{{else}}{{localize "DAGGERHEART.GENERAL.hit.plural"}}{{/if}}</div>
|
<div class="target-hit-status">{{targetShort.hit}} {{#if (gt targetShort.hit 1)}}{{localize "DAGGERHEART.GENERAL.hit.single"}}{{else}}{{localize "DAGGERHEART.GENERAL.hit.plural"}}{{/if}}</div>
|
||||||
<div class="target-hit-status is-miss">{{targetShort.miss}} {{#if (gt targetShort.miss 1)}}{{localize "DAGGERHEART.GENERAL.miss.single"}}{{else}}{{localize "DAGGERHEART.GENERAL.miss.plural"}}{{/if}}</div>
|
<div class="target-hit-status is-miss">{{targetShort.miss}} {{#if (gt targetShort.miss 1)}}{{localize "DAGGERHEART.GENERAL.miss.single"}}{{else}}{{localize "DAGGERHEART.GENERAL.miss.plural"}}{{/if}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
<div class="roll-target" data-token="{{id}}">
|
<div class="roll-target" data-token="{{id}}">
|
||||||
<img class="target-img" src="{{img}}">
|
<img class="target-img" src="{{img}}">
|
||||||
<div class="target-data">
|
<div class="target-data">
|
||||||
<div class="target-name">{{name}}</div>
|
<div class="target-name" data-perm-id="{{actorId}}">{{name}}</div>
|
||||||
{{#if (and ../targetSelection ../hasRoll)}}
|
{{#if (and ../targetSelection ../hasRoll)}}
|
||||||
<div class="target-hit-status {{#if hit}}is-hit{{else}}is-miss{{/if}}">
|
<div class="target-hit-status {{#if hit}}is-hit{{else}}is-miss{{/if}}">
|
||||||
{{#if hit}}
|
{{#if hit}}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue