mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-14 20:51:07 +01:00
Fixed costs
This commit is contained in:
parent
0511d24921
commit
a3f079d111
5 changed files with 71 additions and 34 deletions
|
|
@ -550,7 +550,9 @@
|
||||||
"title": "Tag Team Roll",
|
"title": "Tag Team Roll",
|
||||||
"leaderTitle": "Initiating Character",
|
"leaderTitle": "Initiating Character",
|
||||||
"membersTitle": "Participants",
|
"membersTitle": "Participants",
|
||||||
|
"partyTeam": "Party Team",
|
||||||
"hopeCost": "Hope Cost",
|
"hopeCost": "Hope Cost",
|
||||||
|
"initiatingCharacter": "Initiating Character",
|
||||||
"linkMessageHint": "Make a roll from your character sheet to link it to the Tag Team Roll",
|
"linkMessageHint": "Make a roll from your character sheet to link it to the Tag Team Roll",
|
||||||
"damageNotRolled": "Damage not rolled in chat message yet",
|
"damageNotRolled": "Damage not rolled in chat message yet",
|
||||||
"insufficientHope": "The initiating character doesn't have enough hope",
|
"insufficientHope": "The initiating character doesn't have enough hope",
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { RefreshType, socketEvent } from '../../systemRegistration/socket.mjs';
|
import { GMUpdateEvent, RefreshType, socketEvent } from '../../systemRegistration/socket.mjs';
|
||||||
|
|
||||||
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
|
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
|
||||||
|
|
||||||
|
|
@ -122,15 +122,27 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
|
||||||
|
|
||||||
async updateSource(update) {
|
async updateSource(update) {
|
||||||
await this.data.updateSource(update);
|
await this.data.updateSource(update);
|
||||||
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, this.data.toObject());
|
|
||||||
|
|
||||||
Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll });
|
if (game.user.isGM) {
|
||||||
await game.socket.emit(`system.${CONFIG.DH.id}`, {
|
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, this.data.toObject());
|
||||||
action: socketEvent.Refresh,
|
Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll });
|
||||||
data: {
|
await game.socket.emit(`system.${CONFIG.DH.id}`, {
|
||||||
refreshType: RefreshType.TagTeamRoll
|
action: socketEvent.Refresh,
|
||||||
}
|
data: {
|
||||||
});
|
refreshType: RefreshType.TagTeamRoll
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
await game.socket.emit(`system.${CONFIG.DH.id}`, {
|
||||||
|
action: socketEvent.GMUpdate,
|
||||||
|
data: {
|
||||||
|
action: GMUpdateEvent.UpdateSetting,
|
||||||
|
uuid: CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll,
|
||||||
|
update: this.data.toObject(),
|
||||||
|
refresh: { refreshType: RefreshType.TagTeamRoll }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static async updateData(_event, _element, formData) {
|
static async updateData(_event, _element, formData) {
|
||||||
|
|
@ -228,7 +240,7 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
|
||||||
: 1;
|
: 1;
|
||||||
resourceUpdates.push({ key: 'hope', value: value, total: -value, enabled: true });
|
resourceUpdates.push({ key: 'hope', value: value, total: -value, enabled: true });
|
||||||
}
|
}
|
||||||
if (systemData.roll.isCritical) resourceUpdates.push({ key: 'stress', value: 1, total: -1, enabled: true });
|
if (systemData.roll.isCritical) resourceUpdates.push({ key: 'stress', value: -1, total: 1, enabled: true });
|
||||||
if (systemData.roll.result.duality === -1) {
|
if (systemData.roll.result.duality === -1) {
|
||||||
fearUpdate.value = fearUpdate.value === null ? 1 : fearUpdate.value + 1;
|
fearUpdate.value = fearUpdate.value === null ? 1 : fearUpdate.value + 1;
|
||||||
fearUpdate.total = fearUpdate.total === null ? -1 : fearUpdate.total - 1;
|
fearUpdate.total = fearUpdate.total === null ? -1 : fearUpdate.total - 1;
|
||||||
|
|
@ -242,17 +254,27 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Improve by fetching default from schema */
|
/* Improve by fetching default from schema */
|
||||||
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, {
|
const update = { members: [], initiator: { id: null, cost: 3 } };
|
||||||
members: [],
|
if (game.user.isGM) {
|
||||||
initiator: { id: null, cost: 3 }
|
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, update);
|
||||||
});
|
Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll });
|
||||||
Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll });
|
await game.socket.emit(`system.${CONFIG.DH.id}`, {
|
||||||
await game.socket.emit(`system.${CONFIG.DH.id}`, {
|
action: socketEvent.Refresh,
|
||||||
action: socketEvent.Refresh,
|
data: {
|
||||||
data: {
|
refreshType: RefreshType.TagTeamRoll
|
||||||
refreshType: RefreshType.TagTeamRoll
|
}
|
||||||
}
|
});
|
||||||
});
|
} else {
|
||||||
|
await game.socket.emit(`system.${CONFIG.DH.id}`, {
|
||||||
|
action: socketEvent.GMUpdate,
|
||||||
|
data: {
|
||||||
|
action: GMUpdateEvent.UpdateSetting,
|
||||||
|
uuid: CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll,
|
||||||
|
update: update,
|
||||||
|
refresh: { refreshType: RefreshType.TagTeamRoll }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static async assignRoll(char, message) {
|
static async assignRoll(char, message) {
|
||||||
|
|
@ -261,15 +283,27 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
|
||||||
if (!character) return;
|
if (!character) return;
|
||||||
|
|
||||||
await settings.updateSource({ [`members.${char.id}.messageId`]: message.id });
|
await settings.updateSource({ [`members.${char.id}.messageId`]: message.id });
|
||||||
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, settings);
|
|
||||||
|
|
||||||
Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll });
|
if (game.user.isGM) {
|
||||||
await game.socket.emit(`system.${CONFIG.DH.id}`, {
|
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, settings);
|
||||||
action: socketEvent.Refresh,
|
Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll });
|
||||||
data: {
|
await game.socket.emit(`system.${CONFIG.DH.id}`, {
|
||||||
refreshType: RefreshType.TagTeamRoll
|
action: socketEvent.Refresh,
|
||||||
}
|
data: {
|
||||||
});
|
refreshType: RefreshType.TagTeamRoll
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
await game.socket.emit(`system.${CONFIG.DH.id}`, {
|
||||||
|
action: socketEvent.GMUpdate,
|
||||||
|
data: {
|
||||||
|
action: GMUpdateEvent.UpdateSetting,
|
||||||
|
uuid: CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll,
|
||||||
|
update: settings,
|
||||||
|
refresh: { refreshType: RefreshType.TagTeamRoll }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async close(options = {}) {
|
async close(options = {}) {
|
||||||
|
|
|
||||||
|
|
@ -240,7 +240,6 @@ export const registerRollDiceHooks = () => {
|
||||||
config.tagTeamSelected
|
config.tagTeamSelected
|
||||||
)
|
)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const actor = await fromUuid(config.source.actor);
|
const actor = await fromUuid(config.source.actor);
|
||||||
let updates = [];
|
let updates = [];
|
||||||
if (!actor) return;
|
if (!actor) return;
|
||||||
|
|
|
||||||
|
|
@ -256,9 +256,11 @@ export default class DualityRoll extends D20Roll {
|
||||||
});
|
});
|
||||||
newRoll.extra = newRoll.extra.slice(2);
|
newRoll.extra = newRoll.extra.slice(2);
|
||||||
|
|
||||||
|
const tagTeamSettings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll);
|
||||||
Hooks.call(`${CONFIG.DH.id}.postRollDuality`, {
|
Hooks.call(`${CONFIG.DH.id}.postRollDuality`, {
|
||||||
source: { actor: message.system.source.actor ?? '' },
|
source: { actor: message.system.source.actor ?? '' },
|
||||||
targets: message.system.targets,
|
targets: message.system.targets,
|
||||||
|
tagTeamSelected: Object.values(tagTeamSettings.members).some(x => x.messageId === message._id),
|
||||||
roll: newRoll,
|
roll: newRoll,
|
||||||
rerolledRoll:
|
rerolledRoll:
|
||||||
newRoll.result.duality !== message.system.roll.result.duality ? message.system.roll : undefined
|
newRoll.result.duality !== message.system.roll.result.duality ? message.system.roll : undefined
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<div>
|
<div>
|
||||||
<div class="tag-team-container">
|
<div class="tag-team-container">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "Party Team"}}</legend>
|
<legend>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.partyTeam"}}</legend>
|
||||||
|
|
||||||
<div class="form-group flex-group">
|
<div class="form-group flex-group">
|
||||||
<label>{{localize "TYPES.Actor.character"}}</label>
|
<label>{{localize "TYPES.Actor.character"}}</label>
|
||||||
|
|
@ -76,20 +76,20 @@
|
||||||
|
|
||||||
<div class="roll-leader-container">
|
<div class="roll-leader-container">
|
||||||
<h4>
|
<h4>
|
||||||
<strong>{{localize "Initiating Character"}}</strong>
|
<strong>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.initiatingCharacter"}}</strong>
|
||||||
<select name="initiator.id">
|
<select name="initiator.id">
|
||||||
{{selectOptions selectedCharacterOptions selected=initiator.character.id labelAttr="name" valueAttr="id" blank=""}}
|
{{selectOptions selectedCharacterOptions selected=initiator.character.id labelAttr="name" valueAttr="id" blank=""}}
|
||||||
</select>
|
</select>
|
||||||
</h4>
|
</h4>
|
||||||
<h4>
|
<h4>
|
||||||
<strong>{{localize "Cost"}}</strong>
|
<strong>{{localize "DAGGERHEART.GENERAL.Cost.single"}}</strong>
|
||||||
<input type="text" data-dtype="Number" min="0" name="initiator.cost" value="{{initiator.cost}}" />
|
<input type="text" data-dtype="Number" min="0" name="initiator.cost" value="{{initiator.cost}}" />
|
||||||
</h4>
|
</h4>
|
||||||
</div>
|
</div>
|
||||||
{{#if showResult}}
|
{{#if showResult}}
|
||||||
{{#if selectedData.result}}
|
{{#if selectedData.result}}
|
||||||
<div class="result-container">
|
<div class="result-container">
|
||||||
<h4><strong>Tag Team Roll:</strong> {{selectedData.result}}</h4>
|
<h4><strong>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.title"}}:</strong> {{selectedData.result}}</h4>
|
||||||
{{#if usesDamage}}
|
{{#if usesDamage}}
|
||||||
<div class="result-damages-container">
|
<div class="result-damages-container">
|
||||||
<label><strong>{{localize "DAGGERHEART.GENERAL.damage"}}:</strong></label>
|
<label><strong>{{localize "DAGGERHEART.GENERAL.damage"}}:</strong></label>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue