mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-06-05 20:34:15 +02:00
Compare commits
2 commits
58824d5bbf
...
e529dd0f88
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e529dd0f88 | ||
|
|
0e8c3dc74a |
12 changed files with 195 additions and 134 deletions
|
|
@ -175,14 +175,14 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
|
|||
this.disadvantage = advantage === -1;
|
||||
|
||||
this.config.roll.advantage = this.config.roll.advantage === advantage ? 0 : advantage;
|
||||
if (this.config.roll.advantage === 0) return this.render();
|
||||
|
||||
if (this.config.roll.advantage === 1 && this.config.data.rules.roll.defaultAdvantageDice) {
|
||||
const faces = Number.parseInt(this.config.data.rules.roll.defaultAdvantageDice);
|
||||
this.roll.advantageFaces = Number.isNaN(faces) ? this.roll.advantageFaces : faces;
|
||||
} else if (this.config.roll.advantage === -1 && this.config.data.rules.roll.defaultDisadvantageDice) {
|
||||
const faces = Number.parseInt(this.config.data.rules.roll.defaultDisadvantageDice);
|
||||
this.roll.advantageFaces = Number.isNaN(faces) ? this.roll.advantageFaces : faces;
|
||||
}
|
||||
const defaultFaces =
|
||||
this.config.roll.advantage === 1
|
||||
? this.config.data.rules.roll.defaultAdvantageDice
|
||||
: this.config.data.rules.roll.defaultDisadvantageDice;
|
||||
const faces = Number.parseInt(defaultFaces);
|
||||
this.roll.advantageFaces = Number.isNaN(faces) ? this.roll.advantageFaces : faces;
|
||||
|
||||
this.render();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -148,14 +148,22 @@ export default class DualityRoll extends D20Roll {
|
|||
}
|
||||
|
||||
applyAdvantage() {
|
||||
if (this.hasAdvantage || this.hasDisadvantage) {
|
||||
const dieFaces = this.advantageFaces,
|
||||
advDie = new foundry.dice.terms.Die({ faces: dieFaces, number: this.advantageNumber });
|
||||
if (this.advantageNumber > 1) advDie.modifiers = ['kh'];
|
||||
this.terms.push(
|
||||
new foundry.dice.terms.OperatorTerm({ operator: this.hasDisadvantage ? '-' : '+' }),
|
||||
advDie
|
||||
);
|
||||
const advDieClass = this.hasAdvantage
|
||||
? game.system.api.dice.diceTypes.AdvantageDie
|
||||
: this.hasDisadvantage
|
||||
? game.system.api.dice.diceTypes.DisadvantageDie
|
||||
: null;
|
||||
if (advDieClass) {
|
||||
const advDie = new advDieClass({ faces: this.advantageFaces, number: this.advantageNumber });
|
||||
if (this.terms.length < 4) {
|
||||
if (this.advantageNumber > 1) advDie.modifiers = ['kh'];
|
||||
this.terms.push(
|
||||
new foundry.dice.terms.OperatorTerm({ operator: this.hasDisadvantage ? '-' : '+' }),
|
||||
advDie
|
||||
);
|
||||
} else {
|
||||
this.terms[4] = advDie;
|
||||
}
|
||||
}
|
||||
if (this.rallyFaces)
|
||||
this.terms.push(
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
@import '../../utils/mixin.less';
|
||||
|
||||
.theme-light .daggerheart.dialog.dh-style.views.tag-team-dialog {
|
||||
.initialization-container .members-container .member-container {
|
||||
.member-name {
|
||||
|
|
@ -62,17 +64,7 @@
|
|||
|
||||
color: var(--color-text-primary);
|
||||
text-shadow: 1px 1px 2px var(--shadow-color), 0 0 10px var(--shadow-color);
|
||||
|
||||
// Basic "scrim" gradient
|
||||
background-image: linear-gradient(
|
||||
to top,
|
||||
var(--shadow-color),
|
||||
rgba(from var(--shadow-color) r g b / 0.834) 10.6%,
|
||||
rgba(from var(--shadow-color) r g b / 0.541) 34%,
|
||||
rgba(from var(--shadow-color) r g b / 0.382) 47%,
|
||||
rgba(from var(--shadow-color) r g b / 0.194) 65%,
|
||||
transparent 100%
|
||||
);
|
||||
.smooth-gradient-ease-in-out(background-image, to bottom, var(--shadow-color), 100%);
|
||||
}
|
||||
|
||||
img {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
.attribution-header-label {
|
||||
font-style: italic;
|
||||
font-family: @font-body;
|
||||
color: light-dark(@chat-blue-bg, @beige-50);
|
||||
color: @color-text-subtle;
|
||||
}
|
||||
|
||||
.tab.inventory {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
.profile {
|
||||
height: 235px;
|
||||
cursor: pointer;
|
||||
mask-image: linear-gradient(0deg, transparent 0%, black 10%);
|
||||
.smooth-gradient-ease-in-out(mask-image, to top, black, 2.25rem);
|
||||
}
|
||||
|
||||
.actor-name {
|
||||
|
|
@ -24,11 +24,16 @@
|
|||
margin-bottom: -30px;
|
||||
|
||||
input[type='text'] {
|
||||
backdrop-filter: none;
|
||||
border: none;
|
||||
font-family: @font-title;
|
||||
font-size: var(--font-size-24);
|
||||
height: 32px;
|
||||
text-align: center;
|
||||
border: 1px solid transparent;
|
||||
outline: 2px solid transparent;
|
||||
box-shadow: unset;
|
||||
text-shadow: 0 0 4px light-dark(white, @dark-80), 0 0 8px light-dark(white, @dark-80), 0 0 14px light-dark(white, @dark-80);
|
||||
|
||||
height: 2rem;
|
||||
text-align: center;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
|
|
@ -243,7 +248,7 @@
|
|||
.companion-navigation {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
align-items: baseline;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
@import '../../../utils/colors.less';
|
||||
@import '../../../utils/fonts.less';
|
||||
@import '../../../utils/mixin.less';
|
||||
|
||||
.application.sheet.daggerheart.actor.dh-style.environment {
|
||||
.environment-header-sheet {
|
||||
|
|
@ -10,60 +11,83 @@
|
|||
|
||||
.profile {
|
||||
height: 235px;
|
||||
mask-image: linear-gradient(0deg, transparent 0%, black 10%);
|
||||
cursor: pointer;
|
||||
.smooth-gradient-ease-in-out(mask-image, to top, black, 3.5rem);
|
||||
}
|
||||
|
||||
.item-container {
|
||||
display: flex;
|
||||
display: grid;
|
||||
grid-auto-flow: row;
|
||||
grid-template-columns: 1fr min-content;
|
||||
|
||||
align-items: center;
|
||||
position: relative;
|
||||
top: -45px;
|
||||
gap: 20px;
|
||||
top: -36px;
|
||||
gap: 0 var(--spacer-12);
|
||||
padding: 0 20px;
|
||||
margin-bottom: -30px;
|
||||
margin-bottom: -26px;
|
||||
|
||||
.item-info {
|
||||
.item-name input[type='text'] {
|
||||
backdrop-filter: none;
|
||||
border: none;
|
||||
font-family: @font-title;
|
||||
font-size: var(--font-size-32);
|
||||
text-align: start;
|
||||
transition: all 0.3s ease;
|
||||
outline: 2px solid transparent;
|
||||
box-shadow: none;
|
||||
text-shadow: 0 0 4px light-dark(white, @dark-80), 0 0 8px light-dark(white, @dark-80), 0 0 14px light-dark(white, @dark-80);
|
||||
|
||||
padding-left: 0;
|
||||
height: 2.625rem;
|
||||
|
||||
&:hover[type='text'],
|
||||
&:focus[type='text'] {
|
||||
box-shadow: none;
|
||||
outline: 2px solid light-dark(@dark-blue, @golden);
|
||||
}
|
||||
}
|
||||
|
||||
.flexrow {
|
||||
align-items: baseline;
|
||||
grid-column: span 2;
|
||||
}
|
||||
|
||||
.tags {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
gap: 10px;
|
||||
padding-bottom: 0;
|
||||
flex: 0;
|
||||
|
||||
.tags {
|
||||
.tag {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
padding-bottom: 0;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 3px 5px;
|
||||
font-size: var(--font-size-12);
|
||||
font: @font-body;
|
||||
white-space: nowrap;
|
||||
|
||||
.tag {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 3px 5px;
|
||||
font-size: var(--font-size-12);
|
||||
font: @font-body;
|
||||
|
||||
background: light-dark(@dark-15, @beige-15);
|
||||
border: 1px solid light-dark(@dark, @beige);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.label {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: var(--font-size-12);
|
||||
}
|
||||
background: light-dark(@dark-15, @beige-15);
|
||||
border: 1px solid light-dark(@dark, @beige);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.attribution-header-label {
|
||||
text-align: left;
|
||||
position: relative;
|
||||
top: 4px;
|
||||
margin-bottom: -6px;
|
||||
.label {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: var(--font-size-12);
|
||||
}
|
||||
}
|
||||
|
||||
.attribution-header-label {
|
||||
text-align: right;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.status-number {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -81,7 +105,7 @@
|
|||
font-size: 1.2rem;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: light-dark(transparent, @dark-blue);
|
||||
background: light-dark(#e8e6e3, @dark-blue);
|
||||
z-index: 2;
|
||||
|
||||
&.armor-slots {
|
||||
|
|
@ -93,7 +117,7 @@
|
|||
.status-label {
|
||||
padding: 2px 10px;
|
||||
width: 100%;
|
||||
border-radius: 3px;
|
||||
border-radius: 0 0 3px 3px;
|
||||
background: light-dark(@dark-blue, @golden);
|
||||
|
||||
h4 {
|
||||
|
|
@ -105,37 +129,23 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.item-name {
|
||||
input[type='text'] {
|
||||
font-size: var(--font-size-32);
|
||||
height: 42px;
|
||||
text-align: start;
|
||||
transition: all 0.3s ease;
|
||||
outline: 2px solid transparent;
|
||||
border: 1px solid transparent;
|
||||
|
||||
&:hover[type='text'],
|
||||
&:focus[type='text'] {
|
||||
box-shadow: none;
|
||||
outline: 2px solid light-dark(@dark-blue, @golden);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.environment-info {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
gap: var(--spacer-8);
|
||||
padding: 10px 20px;
|
||||
}
|
||||
|
||||
.environment-navigation {
|
||||
display: flex;
|
||||
gap: 20px;
|
||||
align-items: center;
|
||||
align-items: baseline;
|
||||
padding: 0 20px;
|
||||
.tab-navigation {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,10 +5,6 @@
|
|||
.appTheme({
|
||||
&.environment {
|
||||
background-image: url('../assets/parchments/dh-parchment-dark.png');
|
||||
|
||||
.attribution-header-label {
|
||||
background-image: url('../assets/parchments/dh-parchment-dark.png');
|
||||
}
|
||||
}
|
||||
}, {
|
||||
&.environment {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
@import '../../../utils/colors.less';
|
||||
@import '../../../utils/fonts.less';
|
||||
@import '../../../utils/mixin.less';
|
||||
|
||||
.party-header-sheet {
|
||||
display: flex;
|
||||
|
|
@ -9,26 +10,30 @@
|
|||
|
||||
.profile {
|
||||
height: 235px;
|
||||
mask-image: linear-gradient(0deg, transparent 0%, black 10%);
|
||||
cursor: pointer;
|
||||
.smooth-gradient-ease-in-out(mask-image, to top, black, 3.5rem);
|
||||
}
|
||||
|
||||
.item-container {
|
||||
.item-name {
|
||||
padding: 0 20px;
|
||||
input[type='text'] {
|
||||
font-size: 32px;
|
||||
height: 42px;
|
||||
text-align: center;
|
||||
transition: all 0.3s ease;
|
||||
outline: 2px solid transparent;
|
||||
border: 1px solid transparent;
|
||||
margin-top: -2rem;
|
||||
z-index: 1;
|
||||
input.item-name[type='text'] {
|
||||
backdrop-filter: none;
|
||||
border: none;
|
||||
font-family: @font-title;
|
||||
font-size: var(--font-size-32);
|
||||
outline: 2px solid transparent;
|
||||
box-shadow: unset;
|
||||
text-shadow: 0 0 4px light-dark(white, @dark-80), 0 0 8px light-dark(white, @dark-80), 0 0 14px light-dark(white, @dark-80);
|
||||
|
||||
&:hover[type='text'],
|
||||
&:focus[type='text'] {
|
||||
box-shadow: none;
|
||||
outline: 2px solid light-dark(@dark-blue, @golden);
|
||||
}
|
||||
text-align: center;
|
||||
transition: all 0.3s ease;
|
||||
width: calc(100% - 40px);
|
||||
height: 2.625rem;
|
||||
|
||||
&:hover[type='text'],
|
||||
&:focus[type='text'] {
|
||||
outline: 2px solid light-dark(@dark-blue, @golden);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -83,6 +83,8 @@
|
|||
--gradient-stress: linear-gradient(15deg, rgb(130, 59, 1) 0%, rgb(252, 142, 69) 65%, rgb(190, 0, 0) 100%);
|
||||
|
||||
--primary-color-fear: rgba(9, 71, 179, 0.75);
|
||||
|
||||
--dh-color-text-subtle: light-dark(#555, #a29086);
|
||||
}
|
||||
|
||||
@primary-blue: var(--primary-blue, #1488cc);
|
||||
|
|
@ -190,3 +192,5 @@
|
|||
box-shadow: 0 0 2px 2px @dark-blue;
|
||||
}
|
||||
}
|
||||
|
||||
@color-text-subtle: var(--dh-color-text-subtle);
|
||||
|
|
@ -114,3 +114,48 @@
|
|||
font-family: @font-body;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// A simple ease-out mask
|
||||
.smooth-gradient-ease-out(@param, @to, @destination, @length) {
|
||||
@{param}+: linear-gradient(
|
||||
@to,
|
||||
transparent 0%,
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.013)") calc(0.008 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.049)") calc(0.029 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.104)") calc(0.064 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.259)") calc(0.166 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.45)") calc(0.304 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.741)") calc(0.554 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.825)") calc(0.644 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.896)") calc(0.735 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.951)") calc(0.825 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.987)") calc(0.914 * @length),
|
||||
@destination @length
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* A simple ease in and out mask.
|
||||
* @param - the parameter to add to
|
||||
* @param - direction, such as "to top"
|
||||
* @destination - the color at the destination. The origin is always transparent
|
||||
* @length - the value at the destination
|
||||
*/
|
||||
.smooth-gradient-ease-in-out(@param, @to, @destination, @length: 100%) {
|
||||
@{param}+: linear-gradient(
|
||||
@to,
|
||||
transparent 0%,
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.013)") calc(0.081 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.049)") calc(0.155 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.104)") calc(0.225 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.259)") calc(0.353 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.45)") calc(0.471 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.741)") calc(0.647 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.825)") calc(0.71 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.896)") calc(0.775 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.951)") calc(0.845 * @length),
|
||||
rgb(from @destination r g b / ~"calc(alpha * 0.987)") calc(0.914 * @length),
|
||||
@destination @length
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,28 +1,7 @@
|
|||
<header class='environment-header-sheet'>
|
||||
<img class='profile' src='{{source.img}}' data-action='editImage' data-edit='img' />
|
||||
<div class='item-container'>
|
||||
<div class="item-info">
|
||||
<h1 class='item-name'><input type='text' name='name' value='{{source.name}}' /></h1>
|
||||
<div class="flexcol">
|
||||
<div class="tags">
|
||||
<div class="tag">
|
||||
<span>
|
||||
{{localize (concat 'DAGGERHEART.GENERAL.Tiers.' source.system.tier)}}
|
||||
</span>
|
||||
</div>
|
||||
{{#if source.system.type}}
|
||||
<div class="tag">
|
||||
<span>
|
||||
{{localize (concat 'DAGGERHEART.CONFIG.EnvironmentType.' source.system.type '.label')}}
|
||||
</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{#if (and showAttribution document.system.attributionLabel)}}
|
||||
<label class="attribution-header-label">{{document.system.attributionLabel}}</label>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<h1 class='item-name'><input type='text' name='name' value='{{source.name}}' /></h1>
|
||||
<div class="status-number">
|
||||
<div class='status-value armor-slots'>
|
||||
{{#if source.system.difficulty}}
|
||||
|
|
@ -35,6 +14,25 @@
|
|||
<h4>{{localize "DAGGERHEART.GENERAL.difficulty"}}</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<div class="tags">
|
||||
<div class="tag">
|
||||
<span>
|
||||
{{localize (concat 'DAGGERHEART.GENERAL.Tiers.' source.system.tier)}}
|
||||
</span>
|
||||
</div>
|
||||
{{#if source.system.type}}
|
||||
<div class="tag">
|
||||
<span>
|
||||
{{localize (concat 'DAGGERHEART.CONFIG.EnvironmentType.' source.system.type '.label')}}
|
||||
</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{#if (and showAttribution document.system.attributionLabel)}}
|
||||
<label class="attribution-header-label">{{document.system.attributionLabel}}</label>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<line-div></line-div>
|
||||
<div class="environment-info">
|
||||
|
|
|
|||
|
|
@ -2,9 +2,7 @@
|
|||
<img class='profile' src='{{source.img}}' data-action='editImage' data-edit='img' />
|
||||
<div class='item-container'>
|
||||
<div class="item-info">
|
||||
<h1 class='item-name'>
|
||||
<input type='text' name='name' value='{{source.name}}' autocomplete="off" spellcheck="false"/>
|
||||
</h1>
|
||||
<input class="item-name" type='text' name='name' value='{{source.name}}' autocomplete="off" spellcheck="false"/>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
Loading…
Add table
Add a link
Reference in a new issue