mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
Merge branch 'main' into compendium-init
This commit is contained in:
commit
88ba9d2c71
11 changed files with 754 additions and 2794 deletions
33
README.md
Normal file
33
README.md
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# Daggerheart
|
||||
#### For Foundry VTT
|
||||
This is a repo for a Foundry VTT implementation of daggerheart. It is not associated with critical role
|
||||
or darrington press.
|
||||
|
||||
# Table Of Contents
|
||||
- [Overview](#overview)
|
||||
- [Developer Guide](#developer-guide)
|
||||
|
||||
# Overview
|
||||
|
||||
# Developer Guide
|
||||
#### Setup
|
||||
- Open a terminal in the directory with the repo `cd <path>/<to>/<repo>`
|
||||
- NOTE: The repo should be placed in the system files are or somewhere else and a link (if on linux) is placed in the system directory
|
||||
- NOTE: Linux link can be made using `ln -snf <path to development folder> daggerheart` inside the system folder
|
||||
|
||||
- Install npm `npm install`
|
||||
- Update package.json to match your profile
|
||||
```
|
||||
"start": "concurrently \"rollup -c --watch\" \"node C:/FoundryDev/resources/app/main.js --dataPath=C:/FoundryDevFiles --noupnp\" \"gulp\"",
|
||||
"start-test": "node C:/FoundryDev/resources/app/main.js --dataPath=C:/FoundryDevFiles && rollup -c --watch && gulp",
|
||||
|
||||
```
|
||||
- Replace `C:/FoundryDev/resources/app/main.js` with `<your>/<path>/<to>/<foundry>/<main.js>`
|
||||
- The main is likely in `<Foundry Install Location>/resouces/app/main.js`
|
||||
- Replace `--dataPath=C:/FoundryDevFiles` with `<your>/<path>/<to>/<foundry>/<data>`
|
||||
|
||||
Now you should be able to build the app using `npm start`
|
||||
[Foundry VTT Website][1]
|
||||
|
||||
|
||||
[1]: https://foundryvtt.com/
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
export default class DhpChatMesssage extends ChatMessage {
|
||||
async renderHTML() {
|
||||
if(this.type === 'dualityRoll' || this.type === 'adversaryRoll' || this.type === 'abilityUse'){
|
||||
this.content = await renderTemplate(this.content, this.system);
|
||||
this.content = await foundry.applications.handlebars.renderTemplate(this.content, this.system);
|
||||
}
|
||||
|
||||
return super.renderHTML();
|
||||
|
|
|
|||
|
|
@ -21,6 +21,10 @@ export default class DhpLevelup extends HandlebarsApplicationMixin(ApplicationV2
|
|||
id: "daggerheart-levelup",
|
||||
classes: ["daggerheart", "views", "levelup"],
|
||||
position: { width: 1200, height: 'auto' },
|
||||
window: {
|
||||
resizable: true,
|
||||
},
|
||||
|
||||
actions: {
|
||||
toggleBox: this.toggleBox,
|
||||
advanceLevel: this.advanceLevel,
|
||||
|
|
|
|||
|
|
@ -64,6 +64,17 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
|||
useAdvancementAbility: this.useAdvancementAbility,
|
||||
selectFeatureSet: this.selectFeatureSet,
|
||||
},
|
||||
window: {
|
||||
//frame: boolean;
|
||||
//positioned: boolean;
|
||||
//title: string;
|
||||
//icon: string | false;
|
||||
//controls: ApplicationHeaderControlsEntry[];
|
||||
minimizable: false,
|
||||
resizable: true
|
||||
//contentTag: string;
|
||||
//contentClasses: string[];
|
||||
},
|
||||
form: {
|
||||
handler: this.updateForm,
|
||||
submitOnChange: true,
|
||||
|
|
@ -320,11 +331,11 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
|||
this.render();
|
||||
}
|
||||
|
||||
static async rollAttribute(_, event){
|
||||
const { roll, hope, fear, advantage, disadvantage, modifiers } = await this.document.dualityRoll({ title: 'Attribute Bonus', value: event.currentTarget.dataset.value }, event.shiftKey);
|
||||
static async rollAttribute(event, target) {
|
||||
const { roll, hope, fear, advantage, disadvantage, modifiers } = await this.document.dualityRoll({ title: 'Attribute Bonus', value: event.target.dataset.value }, event.shiftKey);
|
||||
|
||||
const cls = getDocumentClass("ChatMessage");
|
||||
const msg = new cls({
|
||||
const msgData = {
|
||||
type: 'dualityRoll',
|
||||
system: {
|
||||
roll: roll._formula,
|
||||
|
|
@ -337,9 +348,9 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
|||
user: game.user.id,
|
||||
content: "systems/daggerheart/templates/chat/duality-roll.hbs",
|
||||
rolls: [roll]
|
||||
});
|
||||
};
|
||||
|
||||
await cls.create(msg.toObject());
|
||||
await cls.create(msgData);
|
||||
}
|
||||
|
||||
static async toggleMarks(_, button){
|
||||
|
|
@ -2026,4 +2037,4 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
|
|||
// const event = new DragEvent("drop", { altKey: game.keyboard.isModifierActive("Alt") });
|
||||
// return this._onDropItem(event, data);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ export default class DhpArmor extends foundry.abstract.TypeDataModel {
|
|||
const fields = foundry.data.fields;
|
||||
return {
|
||||
baseScore: new fields.NumberField({ initial: 1, integer: true }),
|
||||
feature: new fields.StringField({ choices: SYSTEM.ITEM.armorFeatures, integer: false }),
|
||||
feature: new fields.StringField({ choices: SYSTEM.ITEM.armorFeatures, integer: false, blank:true}),
|
||||
marks: new fields.SchemaField({
|
||||
max: new fields.NumberField({ initial: 6, integer: true }),
|
||||
value: new fields.NumberField({ initial: 0, integer: true }),
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ export default class DhpWeapon extends foundry.abstract.TypeDataModel {
|
|||
type: new fields.StringField({ choices: SYSTEM.GENERAL.damageTypes, integer: false }),
|
||||
}),
|
||||
burden: new fields.StringField({ choices: SYSTEM.GENERAL.burden, integer: false }),
|
||||
feature: new fields.StringField({ choices: SYSTEM.ITEM.weaponFeatures, integer: false }),
|
||||
feature: new fields.StringField({ choices: SYSTEM.ITEM.weaponFeatures, integer: false, blank:true }),
|
||||
quantity: new fields.NumberField({ initial: 1, integer: true }),
|
||||
description: new fields.HTMLField({}),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,9 +87,10 @@ export default class DhpActor extends Actor {
|
|||
|
||||
async dualityRoll(modifier, shiftKey, bonusDamage=[]){
|
||||
let hopeDice = 'd12', fearDice = 'd12', advantageDice = null, disadvantageDice = null, bonusDamageString = "";
|
||||
|
||||
const modifiers = [
|
||||
{
|
||||
value: Number.parseInt(modifier.value),
|
||||
value: modifier.value ? Number.parseInt(modifier.value) : 0,
|
||||
label: modifier.value >= 0 ? `+${modifier.value}` : `-${modifier.value}`,
|
||||
title: modifier.title,
|
||||
}
|
||||
|
|
@ -104,11 +105,11 @@ export default class DhpActor extends Actor {
|
|||
bonusDamageString = result.bonusDamage;
|
||||
|
||||
const automateHope = await game.settings.get(SYSTEM.id, SYSTEM.SETTINGS.gameSettings.Automation.Hope);
|
||||
|
||||
if(automateHope && result.hopeUsed){
|
||||
await this.update({ "system.resources.hope.value": this.system.resources.hope.value - result.hopeUsed });
|
||||
}
|
||||
}
|
||||
|
||||
const roll = new Roll(`1${hopeDice} + 1${fearDice}${advantageDice ? ` + 1${advantageDice}` : disadvantageDice ? ` - 1${disadvantageDice}` : ''} ${modifiers.map(x => `+ ${x.value}`).join(' ')}`);
|
||||
let rollResult = await roll.evaluate();
|
||||
rollResult.dice[0].options.appearance = {
|
||||
|
|
|
|||
3459
package-lock.json
generated
3459
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"@yaireo/tagify": "^4.17.9",
|
||||
"gulp": "^4.0.2",
|
||||
"gulp": "^5.0.0",
|
||||
"gulp-less": "^5.0.0",
|
||||
"rollup": "^4.40.0"
|
||||
},
|
||||
|
|
@ -15,8 +15,8 @@
|
|||
"@foundryvtt/foundryvtt-cli": "^1.0.2",
|
||||
"@rollup/plugin-commonjs": "^25.0.7",
|
||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||
"concurrently": "^8.2.2",
|
||||
"postcss": "^8.4.32",
|
||||
"rollup-plugin-postcss": "^4.0.2",
|
||||
"concurrently": "^8.2.2"
|
||||
"rollup-plugin-postcss": "^4.0.2"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,12 +55,12 @@
|
|||
{{#if (eq effect.valueType ../config.valueTypes.select.id)}}
|
||||
<div class="flexrow">
|
||||
<select name="system.effects.{{key}}.valueData.fromValue" value="{{effect.valueData.fromValue}}">
|
||||
{{selectOptions effect.options selected=effect.valueData.fromValue labelAttr="name" nameAttr="value" localize=true blank="" }}
|
||||
{{selectOptions effect.options selected=effect.valueData.fromValue labelAttr="name" valueAttr="value" localize=true blank="" }}
|
||||
</select>
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<select name="system.effects.{{key}}.valueData.value" value="{{effect.valueData.value}}">
|
||||
{{selectOptions effect.options selected=effect.valueData.value labelAttr="name" nameAttr="value" localize=true blank="" }}
|
||||
{{selectOptions effect.options selected=effect.valueData.value labelAttr="name" valueAttr="value" localize=true blank="" }}
|
||||
</select>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
<label>Advantage</label>
|
||||
<div class="form-fields">
|
||||
<select name="advantage" {{#if this.disadvantage}}disabled{{/if}}>
|
||||
{{selectOptions this.diceOptions selected=this.advantage nameAttr="value" labelAttr="name" localize=true blank=""}}
|
||||
{{selectOptions this.diceOptions selected=this.advantage valueAttr="value" labelAttr="name" localize=true blank=""}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
<label>Disadvantage</label>
|
||||
<div class="form-fields">
|
||||
<select name="disadvantage" {{#if this.advantage}}disabled{{/if}}>
|
||||
{{selectOptions this.diceOptions selected=this.disadvantage nameAttr="value" labelAttr="name" localize=true blank=""}}
|
||||
{{selectOptions this.diceOptions selected=this.disadvantage valueAttr="value" labelAttr="name" localize=true blank=""}}
|
||||
</select>
|
||||
</div>
|
||||
</div> --}}
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
<label>Hope</label>
|
||||
<div class="form-fields">
|
||||
<select name="hope">
|
||||
{{selectOptions this.diceOptions selected=this.hope nameAttr="value" labelAttr="name" localize=true}}
|
||||
{{selectOptions this.diceOptions selected=this.hope valueAttr="value" labelAttr="name" localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -44,7 +44,7 @@
|
|||
<label>Fear</label>
|
||||
<div class="form-fields">
|
||||
<select name="fear">
|
||||
{{selectOptions this.diceOptions selected=this.fear nameAttr="value" labelAttr="name" localize=true}}
|
||||
{{selectOptions this.diceOptions selected=this.fear valueAttr="value" labelAttr="name" localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue