mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-07-25 20:09:55 +02:00
Compare commits
No commits in common. "cdf6e7fdd0db9edf357ac165c2904d92368b89cb" and "1af86d87bb5a522308981e9cbb883434ef546c4d" have entirely different histories.
cdf6e7fdd0
...
1af86d87bb
17 changed files with 265 additions and 356 deletions
|
|
@ -113,8 +113,7 @@
|
||||||
"area": {
|
"area": {
|
||||||
"sectionTitle": "Areas",
|
"sectionTitle": "Areas",
|
||||||
"shape": "Shape",
|
"shape": "Shape",
|
||||||
"size": "Size",
|
"size": "Size"
|
||||||
"hasHole": "Area Hole"
|
|
||||||
},
|
},
|
||||||
"displayInChat": "Display in chat",
|
"displayInChat": "Display in chat",
|
||||||
"deleteTriggerTitle": "Delete Trigger",
|
"deleteTriggerTitle": "Delete Trigger",
|
||||||
|
|
@ -871,10 +870,6 @@
|
||||||
"bruiser": "for each Bruiser adversary.",
|
"bruiser": "for each Bruiser adversary.",
|
||||||
"solo": "for each Solo adversary."
|
"solo": "for each Solo adversary."
|
||||||
},
|
},
|
||||||
"AreaTypes": {
|
|
||||||
"attached": { "label": "Attached To Token" },
|
|
||||||
"placed": { "label": "Placed In Scene" }
|
|
||||||
},
|
|
||||||
"ArmorInteraction": {
|
"ArmorInteraction": {
|
||||||
"none": { "label": "Ignores Armor" },
|
"none": { "label": "Ignores Armor" },
|
||||||
"active": { "label": "Active w/ Armor" },
|
"active": { "label": "Active w/ Armor" },
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ export default class AdversarySheet extends DHBaseActorSheet {
|
||||||
/** @inheritDoc */
|
/** @inheritDoc */
|
||||||
static DEFAULT_OPTIONS = {
|
static DEFAULT_OPTIONS = {
|
||||||
classes: ['adversary'],
|
classes: ['adversary'],
|
||||||
position: { width: 645, height: 760 },
|
position: { width: 660, height: 766 },
|
||||||
window: { resizable: true },
|
window: { resizable: true },
|
||||||
actions: {
|
actions: {
|
||||||
toggleHitPoints: AdversarySheet.#toggleHitPoints,
|
toggleHitPoints: AdversarySheet.#toggleHitPoints,
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ export default class DhRegionLayer extends foundry.canvas.layers.RegionLayer {
|
||||||
return inBounds.length === 1 ? inBounds[0] : null;
|
return inBounds.length === 1 ? inBounds[0] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getTemplateShape({ shapeType, angle, range, direction, hasHole } = {}) {
|
static getTemplateShape({ type, angle, range, direction } = {}) {
|
||||||
const { line, rectangle, inFront, cone, circle, emanation } = CONFIG.DH.GENERAL.templateTypes;
|
const { line, rectangle, inFront, cone, circle, emanation } = CONFIG.DH.GENERAL.templateTypes;
|
||||||
|
|
||||||
/* Length calculation */
|
/* Length calculation */
|
||||||
|
|
@ -112,11 +112,11 @@ export default class DhRegionLayer extends foundry.canvas.layers.RegionLayer {
|
||||||
|
|
||||||
const shapeData = {
|
const shapeData = {
|
||||||
...canvas.mousePosition,
|
...canvas.mousePosition,
|
||||||
type: shapeType,
|
type: type,
|
||||||
direction: direction ?? 0
|
direction: direction ?? 0
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (shapeType) {
|
switch (type) {
|
||||||
case rectangle.id:
|
case rectangle.id:
|
||||||
shapeData.width = length;
|
shapeData.width = length;
|
||||||
shapeData.height = length;
|
shapeData.height = length;
|
||||||
|
|
@ -145,8 +145,7 @@ export default class DhRegionLayer extends foundry.canvas.layers.RegionLayer {
|
||||||
y: 0,
|
y: 0,
|
||||||
width: 1,
|
width: 1,
|
||||||
height: 1,
|
height: 1,
|
||||||
shape: game.canvas.grid.isHexagonal ? CONST.TOKEN_SHAPES.ELLIPSE_1 : CONST.TOKEN_SHAPES.RECTANGLE_1,
|
shape: game.canvas.grid.isHexagonal ? CONST.TOKEN_SHAPES.ELLIPSE_1 : CONST.TOKEN_SHAPES.RECTANGLE_1
|
||||||
hole: hasHole
|
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,10 +119,6 @@ export const advantageState = {
|
||||||
export const areaTypes = {
|
export const areaTypes = {
|
||||||
placed: {
|
placed: {
|
||||||
id: 'placed',
|
id: 'placed',
|
||||||
label: 'DAGGERHEART.CONFIG.AreaTypes.placed.label'
|
label: 'Placed Area'
|
||||||
},
|
|
||||||
attached: {
|
|
||||||
id: 'attached',
|
|
||||||
label: 'DAGGERHEART.CONFIG.AreaTypes.attached.label'
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -33,10 +33,6 @@ export default class AreasField extends fields.ArrayField {
|
||||||
initial: CONFIG.DH.GENERAL.range.veryClose.id,
|
initial: CONFIG.DH.GENERAL.range.veryClose.id,
|
||||||
label: 'DAGGERHEART.ACTIONS.Config.area.size'
|
label: 'DAGGERHEART.ACTIONS.Config.area.size'
|
||||||
}),
|
}),
|
||||||
hasHole: new fields.BooleanField({
|
|
||||||
initial: false,
|
|
||||||
label: 'DAGGERHEART.ACTIONS.Config.area.hasHole'
|
|
||||||
}),
|
|
||||||
effects: new fields.ArrayField(new fields.DocumentIdField())
|
effects: new fields.ArrayField(new fields.DocumentIdField())
|
||||||
});
|
});
|
||||||
super(element, options, context);
|
super(element, options, context);
|
||||||
|
|
|
||||||
|
|
@ -276,12 +276,8 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage {
|
||||||
async onCreateAreas(event) {
|
async onCreateAreas(event) {
|
||||||
const createArea = async selectedArea => {
|
const createArea = async selectedArea => {
|
||||||
const effects = selectedArea.effects.map(effect => this.system.action.item.effects.get(effect).uuid);
|
const effects = selectedArea.effects.map(effect => this.system.action.item.effects.get(effect).uuid);
|
||||||
const { shape: shapeType, size: range, hasHole } = selectedArea;
|
const { shape: type, size: range } = selectedArea;
|
||||||
const shapeData = CONFIG.Canvas.layers.regions.layerClass.getTemplateShape({
|
const shapeData = CONFIG.Canvas.layers.regions.layerClass.getTemplateShape({ type, range });
|
||||||
shapeType,
|
|
||||||
range,
|
|
||||||
hasHole
|
|
||||||
});
|
|
||||||
|
|
||||||
const scene = game.scenes.get(game.user.viewedScene);
|
const scene = game.scenes.get(game.user.viewedScene);
|
||||||
const level = scene.levels.find(x => x.isView);
|
const level = scene.levels.find(x => x.isView);
|
||||||
|
|
@ -309,10 +305,7 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage {
|
||||||
visibility: CONST.REGION_VISIBILITY.ALWAYS
|
visibility: CONST.REGION_VISIBILITY.ALWAYS
|
||||||
};
|
};
|
||||||
const placeRegion = data => {
|
const placeRegion = data => {
|
||||||
canvas.regions.placeRegion(data, {
|
canvas.regions.placeRegion(data, { create: true });
|
||||||
create: true,
|
|
||||||
attachToToken: selectedArea.type === CONFIG.DH.ACTIONS.areaTypes.attached.id
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Regions with effects must be placed by the GM
|
// Regions with effects must be placed by the GM
|
||||||
|
|
|
||||||
|
|
@ -58,11 +58,10 @@ export const renderMeasuredTemplate = async event => {
|
||||||
if (!type || !range || !game.canvas.scene) return;
|
if (!type || !range || !game.canvas.scene) return;
|
||||||
|
|
||||||
const shapeData = CONFIG.Canvas.layers.regions.layerClass.getTemplateShape({
|
const shapeData = CONFIG.Canvas.layers.regions.layerClass.getTemplateShape({
|
||||||
shapetype: type,
|
type,
|
||||||
angle,
|
angle,
|
||||||
range,
|
range,
|
||||||
direction,
|
direction
|
||||||
hasHole: false
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await canvas.regions.placeRegion(
|
await canvas.regions.placeRegion(
|
||||||
|
|
|
||||||
|
|
@ -893,12 +893,13 @@ export function shouldUseHopeFearAutomation(options = { gmAsPlayer: true }) {
|
||||||
|
|
||||||
export async function getWorldActor(baseActor) {
|
export async function getWorldActor(baseActor) {
|
||||||
if (baseActor.inCompendium) {
|
if (baseActor.inCompendium) {
|
||||||
const worldActorCandidates = game.actors.filter(x =>
|
const worldActorCopy = game.actors.find(x =>
|
||||||
x._stats.compendiumSource === baseActor.uuid &&
|
x._stats.compendiumSource === baseActor.uuid &&
|
||||||
x.prototypeToken.actorLink === baseActor.prototypeToken.actorLink
|
(!x.prototypeToken.actorLink || x.name === baseActor.name)
|
||||||
);
|
);
|
||||||
const worldActorCopy = worldActorCandidates.find(a => a.name === baseActor.name) ?? worldActorCandidates[0];
|
|
||||||
if (worldActorCopy) return worldActorCopy;
|
if (worldActorCopy)
|
||||||
|
return worldActorCopy;
|
||||||
|
|
||||||
const baseActorData = baseActor;
|
const baseActorData = baseActor;
|
||||||
return await game.system.api.documents.DhpActor.create({
|
return await game.system.api.documents.DhpActor.create({
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"target": {
|
"target": {
|
||||||
"type": "",
|
"type": "hostile",
|
||||||
"amount": 1
|
"amount": 1
|
||||||
},
|
},
|
||||||
"effects": [
|
"effects": [
|
||||||
|
|
@ -63,23 +63,13 @@
|
||||||
],
|
],
|
||||||
"name": "Fire",
|
"name": "Fire",
|
||||||
"img": "icons/magic/fire/barrier-wall-explosion-orange.webp",
|
"img": "icons/magic/fire/barrier-wall-explosion-orange.webp",
|
||||||
"range": "",
|
"range": "close"
|
||||||
"areas": [
|
|
||||||
{
|
|
||||||
"name": "Elemental Aura: Fire",
|
|
||||||
"type": "attached",
|
|
||||||
"shape": "emanation",
|
|
||||||
"size": "close",
|
|
||||||
"hasHole": false,
|
|
||||||
"effects": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"xDBLH5TWidvrYF7z": {
|
"xDBLH5TWidvrYF7z": {
|
||||||
"type": "effect",
|
"type": "effect",
|
||||||
"_id": "xDBLH5TWidvrYF7z",
|
"_id": "xDBLH5TWidvrYF7z",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
"description": "<p>Your allies gain a +1 bonus to Strength.</p>",
|
"description": "<p>When an adversary marks 1 or more Hit Points, they must also mark a Stress.</p>",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
|
|
@ -88,26 +78,19 @@
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null
|
||||||
},
|
},
|
||||||
"effects": [],
|
"effects": [
|
||||||
|
{
|
||||||
|
"_id": "WRuijfHxmUscAa69",
|
||||||
|
"onSave": false
|
||||||
|
}
|
||||||
|
],
|
||||||
"target": {
|
"target": {
|
||||||
"type": "",
|
"type": "friendly",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
"name": "Earth",
|
"name": "Earth",
|
||||||
"img": "icons/magic/control/buff-strength-muscle-damage-red.webp",
|
"img": "icons/magic/control/buff-strength-muscle-damage-red.webp",
|
||||||
"range": "",
|
"range": "close"
|
||||||
"areas": [
|
|
||||||
{
|
|
||||||
"name": "Elemental Aura: Earth",
|
|
||||||
"type": "attached",
|
|
||||||
"shape": "emanation",
|
|
||||||
"size": "close",
|
|
||||||
"hasHole": true,
|
|
||||||
"effects": [
|
|
||||||
"yvpWNCNobg0LLjey"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"S4t5HlgxWlHwaBDw": {
|
"S4t5HlgxWlHwaBDw": {
|
||||||
"type": "effect",
|
"type": "effect",
|
||||||
|
|
@ -129,22 +112,12 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "hostile",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
"name": "Water",
|
"name": "Water",
|
||||||
"img": "icons/magic/water/vortex-water-whirlpool.webp",
|
"img": "icons/magic/water/vortex-water-whirlpool.webp",
|
||||||
"range": "self",
|
"range": "close"
|
||||||
"areas": [
|
|
||||||
{
|
|
||||||
"name": "Elemental Aura: Water",
|
|
||||||
"type": "attached",
|
|
||||||
"shape": "emanation",
|
|
||||||
"size": "close",
|
|
||||||
"hasHole": false,
|
|
||||||
"effects": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"hAsKFFewtTqd1gg9": {
|
"hAsKFFewtTqd1gg9": {
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
|
|
@ -165,10 +138,15 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
"effects": [],
|
"effects": [
|
||||||
|
{
|
||||||
|
"_id": "mJBA2QTyM9SM5NVS",
|
||||||
|
"onSave": false
|
||||||
|
}
|
||||||
|
],
|
||||||
"roll": {
|
"roll": {
|
||||||
"type": "diceSet",
|
"type": "diceSet",
|
||||||
"trait": null,
|
"trait": null,
|
||||||
|
|
@ -191,19 +169,7 @@
|
||||||
},
|
},
|
||||||
"name": "Air",
|
"name": "Air",
|
||||||
"img": "icons/magic/air/air-burst-spiral-blue-gray.webp",
|
"img": "icons/magic/air/air-burst-spiral-blue-gray.webp",
|
||||||
"range": "self",
|
"range": ""
|
||||||
"areas": [
|
|
||||||
{
|
|
||||||
"name": "Elemental Aura: Air",
|
|
||||||
"type": "attached",
|
|
||||||
"shape": "emanation",
|
|
||||||
"size": "close",
|
|
||||||
"hasHole": false,
|
|
||||||
"effects": [
|
|
||||||
"vnKV5hsO4DVjURAl"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"originItemType": null,
|
"originItemType": null,
|
||||||
|
|
@ -215,6 +181,49 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"effects": [
|
"effects": [
|
||||||
|
{
|
||||||
|
"name": "Elemental Aura (Earth)",
|
||||||
|
"img": "icons/magic/control/buff-strength-muscle-damage-orange.webp",
|
||||||
|
"origin": "Compendium.daggerheart.subclasses.Item.2JH9NaOh69yN80Gw",
|
||||||
|
"transfer": false,
|
||||||
|
"_id": "WRuijfHxmUscAa69",
|
||||||
|
"type": "base",
|
||||||
|
"system": {
|
||||||
|
"rangeDependence": {
|
||||||
|
"enabled": false,
|
||||||
|
"type": "withinRange",
|
||||||
|
"target": "hostile",
|
||||||
|
"range": "melee"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"key": "system.traits.strength.value",
|
||||||
|
"mode": 2,
|
||||||
|
"value": "1",
|
||||||
|
"priority": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"disabled": false,
|
||||||
|
"duration": {
|
||||||
|
"startTime": null,
|
||||||
|
"combat": null,
|
||||||
|
"seconds": null,
|
||||||
|
"rounds": null,
|
||||||
|
"turns": null,
|
||||||
|
"startRound": null,
|
||||||
|
"startTurn": null
|
||||||
|
},
|
||||||
|
"description": "",
|
||||||
|
"tint": "#ffffff",
|
||||||
|
"statuses": [],
|
||||||
|
"sort": 0,
|
||||||
|
"flags": {},
|
||||||
|
"_stats": {
|
||||||
|
"compendiumSource": null
|
||||||
|
},
|
||||||
|
"_key": "!items.effects!2JH9NaOh69yN80Gw.WRuijfHxmUscAa69"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Elemental Aura (Water)",
|
"name": "Elemental Aura (Water)",
|
||||||
"img": "icons/magic/water/vortex-water-whirlpool.webp",
|
"img": "icons/magic/water/vortex-water-whirlpool.webp",
|
||||||
|
|
@ -228,15 +237,18 @@
|
||||||
"type": "withinRange",
|
"type": "withinRange",
|
||||||
"target": "hostile",
|
"target": "hostile",
|
||||||
"range": "melee"
|
"range": "melee"
|
||||||
},
|
}
|
||||||
"changes": []
|
|
||||||
},
|
},
|
||||||
|
"changes": [],
|
||||||
"disabled": false,
|
"disabled": false,
|
||||||
"duration": {
|
"duration": {
|
||||||
"value": null,
|
"startTime": null,
|
||||||
"units": "seconds",
|
"combat": null,
|
||||||
"expiry": null,
|
"seconds": null,
|
||||||
"expired": false
|
"rounds": null,
|
||||||
|
"turns": null,
|
||||||
|
"startRound": null,
|
||||||
|
"startTurn": null
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
|
|
@ -246,9 +258,6 @@
|
||||||
"_stats": {
|
"_stats": {
|
||||||
"compendiumSource": null
|
"compendiumSource": null
|
||||||
},
|
},
|
||||||
"start": null,
|
|
||||||
"showIcon": 1,
|
|
||||||
"folder": null,
|
|
||||||
"_key": "!items.effects!2JH9NaOh69yN80Gw.H7W52ps5d3UGmaFr"
|
"_key": "!items.effects!2JH9NaOh69yN80Gw.H7W52ps5d3UGmaFr"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -264,15 +273,18 @@
|
||||||
"type": "withinRange",
|
"type": "withinRange",
|
||||||
"target": "hostile",
|
"target": "hostile",
|
||||||
"range": "melee"
|
"range": "melee"
|
||||||
},
|
}
|
||||||
"changes": []
|
|
||||||
},
|
},
|
||||||
|
"changes": [],
|
||||||
"disabled": false,
|
"disabled": false,
|
||||||
"duration": {
|
"duration": {
|
||||||
"value": null,
|
"startTime": null,
|
||||||
"units": "seconds",
|
"combat": null,
|
||||||
"expiry": null,
|
"seconds": null,
|
||||||
"expired": false
|
"rounds": null,
|
||||||
|
"turns": null,
|
||||||
|
"startRound": null,
|
||||||
|
"startTurn": null
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
|
|
@ -282,120 +294,43 @@
|
||||||
"_stats": {
|
"_stats": {
|
||||||
"compendiumSource": null
|
"compendiumSource": null
|
||||||
},
|
},
|
||||||
"start": null,
|
|
||||||
"showIcon": 1,
|
|
||||||
"folder": null,
|
|
||||||
"_key": "!items.effects!2JH9NaOh69yN80Gw.WX5AMEpmUAutB9Hm"
|
"_key": "!items.effects!2JH9NaOh69yN80Gw.WX5AMEpmUAutB9Hm"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Elemental Aura: Earth",
|
"name": "Elemental Aura (Air)",
|
||||||
"disabled": false,
|
|
||||||
"img": "icons/magic/control/buff-strength-muscle-damage-red.webp",
|
|
||||||
"description": "<p>Your allies gain a +1 bonus to Strength.</p>",
|
|
||||||
"transfer": false,
|
|
||||||
"statuses": [],
|
|
||||||
"system": {
|
|
||||||
"rangeDependence": {
|
|
||||||
"enabled": false,
|
|
||||||
"type": "withinRange",
|
|
||||||
"target": "hostile",
|
|
||||||
"range": "melee"
|
|
||||||
},
|
|
||||||
"changes": [
|
|
||||||
{
|
|
||||||
"key": "system.traits.strength.value",
|
|
||||||
"type": "add",
|
|
||||||
"value": 1,
|
|
||||||
"priority": null,
|
|
||||||
"phase": "initial"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"duration": {
|
|
||||||
"description": "",
|
|
||||||
"type": ""
|
|
||||||
},
|
|
||||||
"stacking": null,
|
|
||||||
"targetDispositions": [
|
|
||||||
1
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"_id": "yvpWNCNobg0LLjey",
|
|
||||||
"type": "base",
|
|
||||||
"start": {
|
|
||||||
"time": 0,
|
|
||||||
"combat": null,
|
|
||||||
"combatant": null,
|
|
||||||
"initiative": null,
|
|
||||||
"round": null,
|
|
||||||
"turn": null
|
|
||||||
},
|
|
||||||
"duration": {
|
|
||||||
"value": null,
|
|
||||||
"units": "seconds",
|
|
||||||
"expiry": null,
|
|
||||||
"expired": false
|
|
||||||
},
|
|
||||||
"origin": null,
|
|
||||||
"tint": "#ffffff",
|
|
||||||
"showIcon": 1,
|
|
||||||
"folder": null,
|
|
||||||
"sort": 0,
|
|
||||||
"flags": {},
|
|
||||||
"_stats": {
|
|
||||||
"compendiumSource": null
|
|
||||||
},
|
|
||||||
"_key": "!items.effects!2JH9NaOh69yN80Gw.yvpWNCNobg0LLjey"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Elemental Aura: Air",
|
|
||||||
"disabled": false,
|
|
||||||
"img": "icons/magic/air/air-burst-spiral-blue-gray.webp",
|
"img": "icons/magic/air/air-burst-spiral-blue-gray.webp",
|
||||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.753);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">When you or an ally takes damage from an attack beyond Melee range, reduce the damage by 1d8.</span></p>",
|
"origin": "Compendium.daggerheart.subclasses.Item.2JH9NaOh69yN80Gw",
|
||||||
"transfer": false,
|
"transfer": false,
|
||||||
"statuses": [],
|
"_id": "mJBA2QTyM9SM5NVS",
|
||||||
|
"type": "base",
|
||||||
"system": {
|
"system": {
|
||||||
"rangeDependence": {
|
"rangeDependence": {
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"type": "withinRange",
|
"type": "withinRange",
|
||||||
"target": "hostile",
|
"target": "hostile",
|
||||||
"range": "melee"
|
"range": "melee"
|
||||||
},
|
}
|
||||||
"changes": [],
|
|
||||||
"duration": {
|
|
||||||
"description": "",
|
|
||||||
"type": ""
|
|
||||||
},
|
|
||||||
"stacking": null,
|
|
||||||
"targetDispositions": [
|
|
||||||
1
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"_id": "vnKV5hsO4DVjURAl",
|
|
||||||
"type": "base",
|
|
||||||
"start": {
|
|
||||||
"time": 0,
|
|
||||||
"combat": null,
|
|
||||||
"combatant": null,
|
|
||||||
"initiative": null,
|
|
||||||
"round": null,
|
|
||||||
"turn": null
|
|
||||||
},
|
},
|
||||||
|
"changes": [],
|
||||||
|
"disabled": false,
|
||||||
"duration": {
|
"duration": {
|
||||||
"value": null,
|
"startTime": null,
|
||||||
"units": "seconds",
|
"combat": null,
|
||||||
"expiry": null,
|
"seconds": null,
|
||||||
"expired": false
|
"rounds": null,
|
||||||
|
"turns": null,
|
||||||
|
"startRound": null,
|
||||||
|
"startTurn": null
|
||||||
},
|
},
|
||||||
"origin": null,
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"showIcon": 1,
|
"statuses": [],
|
||||||
"folder": null,
|
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"_stats": {
|
"_stats": {
|
||||||
"compendiumSource": null
|
"compendiumSource": null
|
||||||
},
|
},
|
||||||
"_key": "!items.effects!2JH9NaOh69yN80Gw.vnKV5hsO4DVjURAl"
|
"_key": "!items.effects!2JH9NaOh69yN80Gw.mJBA2QTyM9SM5NVS"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"sort": 100000,
|
"sort": 100000,
|
||||||
|
|
|
||||||
|
|
@ -384,10 +384,6 @@
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
label {
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
}
|
}
|
||||||
|
|
@ -403,13 +399,6 @@
|
||||||
> .checkbox {
|
> .checkbox {
|
||||||
align-self: end;
|
align-self: end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.auto-sized {
|
|
||||||
width: auto;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-group {
|
.form-group {
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@
|
||||||
.slot-value {
|
.slot-value {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
padding: 0 5px;
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
@import './sheet.less';
|
|
||||||
@import './features.less';
|
@import './features.less';
|
||||||
@import './header.less';
|
@import './header.less';
|
||||||
|
@import './sheet.less';
|
||||||
@import './sidebar.less';
|
@import './sidebar.less';
|
||||||
@import './effects.less';
|
@import './effects.less';
|
||||||
@import './notes.less';
|
@import './notes.less';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,37 +2,35 @@
|
||||||
@import '../../../utils/fonts.less';
|
@import '../../../utils/fonts.less';
|
||||||
|
|
||||||
.application.sheet.daggerheart.actor.dh-style.adversary {
|
.application.sheet.daggerheart.actor.dh-style.adversary {
|
||||||
--sidebar-width: 260px;
|
|
||||||
|
|
||||||
.window-content {
|
.window-content {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: var(--sidebar-width) 1fr;
|
grid-template-columns: 275px 1fr;
|
||||||
grid-template-rows: auto 1fr;
|
grid-template-rows: auto 1fr;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
}
|
|
||||||
|
|
||||||
.adversary-sidebar-sheet {
|
.adversary-sidebar-sheet {
|
||||||
grid-row: 1 / span 2;
|
grid-row: 1 / span 2;
|
||||||
grid-column: 1;
|
grid-column: 1;
|
||||||
overflow: hidden;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.adversary-header-sheet {
|
|
||||||
grid-row: 1;
|
|
||||||
grid-column: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab {
|
|
||||||
grid-row: 2;
|
|
||||||
grid-column: 2;
|
|
||||||
&.active {
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.adversary-header-sheet {
|
||||||
|
grid-row: 1;
|
||||||
|
grid-column: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab {
|
||||||
|
grid-row: 2;
|
||||||
|
grid-column: 2;
|
||||||
|
&.active {
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -22,8 +22,8 @@
|
||||||
|
|
||||||
.application.sheet.daggerheart.actor.dh-style.adversary {
|
.application.sheet.daggerheart.actor.dh-style.adversary {
|
||||||
.adversary-sidebar-sheet {
|
.adversary-sidebar-sheet {
|
||||||
width: var(--sidebar-width);
|
width: 275px;
|
||||||
min-width: var(--sidebar-width);
|
min-width: 275px;
|
||||||
border-right: 1px solid light-dark(@dark-blue, @golden);
|
border-right: 1px solid light-dark(@dark-blue, @golden);
|
||||||
|
|
||||||
.portrait {
|
.portrait {
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
height: var(--sidebar-width);
|
height: 275px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.death-roll-btn {
|
.death-roll-btn {
|
||||||
|
|
@ -63,7 +63,7 @@
|
||||||
.threshold-section {
|
.threshold-section {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 7px;
|
gap: 10px;
|
||||||
background-color: light-dark(transparent, @dark-blue);
|
background-color: light-dark(transparent, @dark-blue);
|
||||||
color: @color-text-emphatic;
|
color: @color-text-emphatic;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
|
|
@ -107,7 +107,7 @@
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
top: -20px;
|
top: -20px;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
margin-bottom: -16px;
|
margin-bottom: -10px;
|
||||||
|
|
||||||
&.pip-display {
|
&.pip-display {
|
||||||
top: -15px;
|
top: -15px;
|
||||||
|
|
@ -185,8 +185,8 @@
|
||||||
|
|
||||||
.shortcut-items-section {
|
.shortcut-items-section {
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
padding: 10px 0;
|
padding-top: 10px;
|
||||||
flex: 1;
|
padding-bottom: 20px;
|
||||||
scrollbar-gutter: stable;
|
scrollbar-gutter: stable;
|
||||||
.with-scroll-shadows();
|
.with-scroll-shadows();
|
||||||
|
|
||||||
|
|
@ -214,6 +214,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.experience-section {
|
.experience-section {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 15px;
|
gap: 15px;
|
||||||
|
|
@ -230,21 +232,21 @@
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
align-items: stretch;
|
align-items: center;
|
||||||
padding: 0 4px 0 12px;
|
|
||||||
|
|
||||||
.experience-row {
|
.experience-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
|
width: 250px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.experience-name {
|
.experience-name {
|
||||||
|
width: 180px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
text-align: start;
|
text-align: start;
|
||||||
font-size: var(--font-size-14);
|
font-size: var(--font-size-14);
|
||||||
flex: 1;
|
|
||||||
color: light-dark(@dark, @beige);
|
color: light-dark(@dark, @beige);
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
}
|
}
|
||||||
|
|
@ -269,7 +271,9 @@
|
||||||
|
|
||||||
.reaction-section {
|
.reaction-section {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin: 10px;
|
padding: 0 10px;
|
||||||
|
margin-top: 20px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
button {
|
button {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,9 @@
|
||||||
<a class="btn" data-tooltip="{{localize "CONTROLS.CommonDelete"}}" data-action="removeElement" data-index="{{index}}"><i class="fas fa-trash"></i></a>
|
<a class="btn" data-tooltip="{{localize "CONTROLS.CommonDelete"}}" data-action="removeElement" data-index="{{index}}"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="nest-inputs">
|
<div class="nest-inputs">
|
||||||
{{formField ../fields.type value=area.type name=(concat "areas." index ".type") localize=true blank=false}}
|
{{formField ../fields.type value=area.type name=(concat "areas." index ".type") localize=true}}
|
||||||
{{formField ../fields.shape value=area.shape name=(concat "areas." index ".shape") localize=true blank=false}}
|
{{formField ../fields.shape value=area.shape name=(concat "areas." index ".shape") localize=true}}
|
||||||
{{formField ../fields.size value=area.size name=(concat "areas." index ".size") localize=true blank=false}}
|
{{formField ../fields.size value=area.size name=(concat "areas." index ".size") localize=true}}
|
||||||
{{formField ../fields.hasHole value=area.hasHole name=(concat "areas." index ".hasHole") localize=true classes="auto-sized" }}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="sub-section-header">
|
<div class="sub-section-header">
|
||||||
|
|
|
||||||
|
|
@ -92,11 +92,9 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<line-div></line-div>
|
||||||
<div class="reaction-section">
|
<div class="reaction-section">
|
||||||
<button type="button" data-action="reactionRoll">
|
<button type="button" data-action="reactionRoll">{{localize "DAGGERHEART.GENERAL.Roll.reaction"}}</button>
|
||||||
<i class="fa-solid fa-dice"></i>
|
</div>
|
||||||
{{localize "DAGGERHEART.GENERAL.Roll.reaction"}}
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
@ -6,13 +6,18 @@
|
||||||
<div class="message-sub-header-container">
|
<div class="message-sub-header-container">
|
||||||
{{#if message.title}}
|
{{#if message.title}}
|
||||||
<h4>{{message.title}}</h4>
|
<h4>{{message.title}}</h4>
|
||||||
<div>{{alias}} {{#if author.isGM}}(GM){{/if}}</div>
|
<div>{{actor.name}} {{#if author.isGM}}(GM){{/if}}</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#unless actor.name}}
|
{{#unless actor.name}}
|
||||||
<h4>{{author.name}}</h4>
|
<h4>{{author.name}}</h4>
|
||||||
{{else}}
|
{{else}}
|
||||||
<h4>{{alias}}</h4>
|
{{#if (eq message.type 'base')}}
|
||||||
<div>{{author.name}}</div>
|
<h4>{{actor.name}}</h4>
|
||||||
|
<div>{{author.name}}</div>
|
||||||
|
{{else}}
|
||||||
|
<h4>{{alias}}</h4>
|
||||||
|
<div>{{actor.name}} {{#if author.isGM}}(GM){{/if}}</div>
|
||||||
|
{{/if}}
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue