mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-17 23:49:02 +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];
|
||||
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;
|
||||
|
||||
const { DocumentSheetConfig } = foundry.applications.apps;
|
||||
|
|
|
|||
|
|
@ -2197,6 +2197,9 @@
|
|||
"deathMove": {
|
||||
"title": "Death Move"
|
||||
},
|
||||
"dicePool": {
|
||||
"title": "Dice Pool"
|
||||
},
|
||||
"domainCard": {
|
||||
"title": "Domain Card"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -33,6 +33,9 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
|||
html.querySelectorAll('.duality-action-effect').forEach(element =>
|
||||
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 => {
|
||||
element.addEventListener('mouseenter', this.hoverTarget);
|
||||
element.addEventListener('mouseleave', this.unhoverTarget);
|
||||
|
|
@ -211,7 +214,6 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
|||
async onDamage(event, message) {
|
||||
event.stopPropagation();
|
||||
const { isHit, targets } = this.getTargetList(event, message);
|
||||
console.log(message, isHit, targets)
|
||||
|
||||
if (message.system.onSave && isHit) {
|
||||
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.
|
||||
* @param {MouseEvent} event
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@ export default class DHDamageAction extends DHBaseAction {
|
|||
}
|
||||
|
||||
async rollDamage(event, data) {
|
||||
// console.log(data)
|
||||
const systemData = data.system ?? data;
|
||||
|
||||
let formulas = this.damage.parts.map(p => ({
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ export default class DamageRoll extends DHRoll {
|
|||
static DefaultDialog = DamageDialog;
|
||||
|
||||
static async buildEvaluate(roll, config = {}, message = {}) {
|
||||
console.log(roll,config)
|
||||
if (config.evaluate !== false)
|
||||
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) {
|
||||
const unified = {};
|
||||
rolls.forEach(r => {
|
||||
|
|
|
|||
|
|
@ -64,24 +64,8 @@ export default class DHRoll extends Roll {
|
|||
}
|
||||
|
||||
// Create Chat Message
|
||||
// if (roll instanceof CONFIG.Dice.daggerheart.DamageRoll && Object.values(config.roll)?.length) {
|
||||
// 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)
|
||||
if (!config.source?.message)
|
||||
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 = {}) {
|
||||
|
|
|
|||
|
|
@ -541,12 +541,12 @@ export default class DhpActor extends Actor {
|
|||
}
|
||||
|
||||
canResist(type, resistance) {
|
||||
if (!type) return 0;
|
||||
if (!type?.length) return false;
|
||||
return type.every(t => this.system.resistance[t]?.[resistance] === true);
|
||||
}
|
||||
|
||||
getDamageTypeReduction(type) {
|
||||
if (!type) return 0;
|
||||
if (!type?.length) return 0;
|
||||
const reduction = Object.entries(this.system.resistance).reduce(
|
||||
(a, [index, value]) => (type.includes(index) ? Math.min(value.reduction, a) : a),
|
||||
Infinity
|
||||
|
|
|
|||
|
|
@ -93,9 +93,8 @@ export const enrichedDualityRoll = async (
|
|||
advantage,
|
||||
type: reaction ? 'reaction' : null
|
||||
},
|
||||
chatMessage: {
|
||||
template: 'systems/daggerheart/templates/ui/chat/duality-roll.hbs'
|
||||
}
|
||||
type: 'trait',
|
||||
hasRoll: true
|
||||
};
|
||||
|
||||
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 {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
|
|
@ -336,7 +336,7 @@
|
|||
&:not(.expanded) .dice-tooltip {
|
||||
grid-template-rows: 0fr;
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
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/downtime.less';
|
||||
@import './chat/sheet.less';
|
||||
@import './chat/theme-colorful.less';
|
||||
|
||||
@import './combat-sidebar/combat-sidebar.less';
|
||||
@import './combat-sidebar/combatant-controls.less';
|
||||
|
|
@ -19,5 +18,3 @@
|
|||
@import './resources/resources.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>
|
||||
{{/unless}}
|
||||
{{/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>
|
||||
|
|
@ -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-extra on-reduced">
|
||||
<div class="wrapper">
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<div class="roll-part target-section dice-roll" data-action="expandRoll">
|
||||
<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="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 is-miss">{{targetShort.miss}} {{#if (gt targetShort.miss 1)}}{{localize "DAGGERHEART.GENERAL.miss.single"}}{{else}}{{localize "DAGGERHEART.GENERAL.miss.plural"}}{{/if}}</div>
|
||||
{{/if}}
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
<div class="roll-target" data-token="{{id}}">
|
||||
<img class="target-img" src="{{img}}">
|
||||
<div class="target-data">
|
||||
<div class="target-name">{{name}}</div>
|
||||
<div class="target-name" data-perm-id="{{actorId}}">{{name}}</div>
|
||||
{{#if (and ../targetSelection ../hasRoll)}}
|
||||
<div class="target-hit-status {{#if hit}}is-hit{{else}}is-miss{{/if}}">
|
||||
{{#if hit}}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue