diff --git a/src/main.mjs b/src/main.mjs
index fa265965..59bf17dd 100644
--- a/src/main.mjs
+++ b/src/main.mjs
@@ -54,6 +54,63 @@ async function preloadHandlebarsTemplates() {
Hooks.once("init", () => {
+ const displayCurrency = (data) => {
+
+
+ // schema for Mittelreich: 1 Ducat = 10 Silver = 100 Kreutzer = 1000 Heller
+ // internally the price is always given in Silver
+ // so we need to inflate the value of price by 100 to be able to divide beginning from Heller
+
+ const baseValue = data * 100
+
+ // then we can regex over it
+
+ const currencyRegexp = /(.*)(.)(.)(.)/g
+ const withDucats = currencyRegexp.exec(baseValue)
+ let _ = undefined
+ let ducats = 0
+ let silver = 0
+ let kreutzer = 0
+ let heller = 0
+
+ if (withDucats) {
+ [_, ducats, silver, kreutzer, heller] = withDucats
+ } else {
+ const currencyRegexp = /(.)(.)(.)/g
+ const withSilver = currencyRegexp.exec(baseValue)
+ if (withSilver) {
+ [_, silver, kreutzer, heller] = withSilver
+ } else {
+ const currencyRegexp = /(.)(.)/g
+ const withKreutzer = currencyRegexp.exec(baseValue)
+
+ if (withKreutzer) {
+ [_, kreutzer, heller] = withKreutzer
+
+ } else {
+ heller = baseValue
+ }
+ }
+ }
+
+ let str = ``
+ if (ducats > 0) {
+ str += ducats + ""
+ }
+ if (silver > 0) {
+ str += silver + ""
+ }
+ if (kreutzer > 0) {
+ str += kreutzer + ""
+ }
+ if (heller > 0) {
+ str += heller + ""
+ }
+ str = str + ""
+
+ return new Handlebars.SafeString(str)
+ }
+
game.DSA41 = {
rollItemMacro,
Zonenruestung,
@@ -62,7 +119,8 @@ Hooks.once("init", () => {
Wunde,
RestingDialog,
BattleDialog,
- Talent
+ Talent,
+ displayCurrency
}
// Configure custom Document implementations.
@@ -331,62 +389,7 @@ Hooks.once("init", () => {
return new Handlebars.SafeString(tooltip)
})
- Handlebars.registerHelper("currency", (data) => {
-
-
- // schema for Mittelreich: 1 Ducat = 10 Silver = 100 Kreutzer = 1000 Heller
- // internally the price is always given in Silver
- // so we need to inflate the value of price by 100 to be able to divide beginning from Heller
-
- const baseValue = data * 100
-
- // then we can regex over it
-
- const currencyRegexp = /(.*)(.)(.)(.)/g
- const withDucats = currencyRegexp.exec(baseValue)
- let _ = undefined
- let ducats = 0
- let silver = 0
- let kreutzer = 0
- let heller = 0
-
- if (withDucats) {
- [_, ducats, silver, kreutzer, heller] = withDucats
- } else {
- const currencyRegexp = /(.)(.)(.)/g
- const withSilver = currencyRegexp.exec(baseValue)
- if (withSilver) {
- [_, silver, kreutzer, heller] = withSilver
- } else {
- const currencyRegexp = /(.)(.)/g
- const withKreutzer = currencyRegexp.exec(baseValue)
-
- if (withKreutzer) {
- [_, kreutzer, heller] = withKreutzer
-
- } else {
- heller = baseValue
- }
- }
- }
-
- let str = ``
- if (ducats > 0) {
- str += ducats + ""
- }
- if (silver > 0) {
- str += silver + ""
- }
- if (kreutzer > 0) {
- str += kreutzer + ""
- }
- if (heller > 0) {
- str += heller + ""
- }
- str = str + ""
-
- return new Handlebars.SafeString(str)
- })
+ Handlebars.registerHelper("currency", game.DSA41.displayCurrency)
return preloadHandlebarsTemplates();
})
diff --git a/src/module/documents/character.mjs b/src/module/documents/character.mjs
index 85499c7f..ed225f78 100644
--- a/src/module/documents/character.mjs
+++ b/src/module/documents/character.mjs
@@ -310,6 +310,11 @@ export class Character extends Actor {
return updateObject;
}
+ reduceWealth(by) {
+ console.log('Reichtum reduziert um ', by)
+ return true
+ }
+
isWorn(itemId) {
diff --git a/src/module/sheets/merchantSheet.mjs b/src/module/sheets/merchantSheet.mjs
index 87d0b104..7c147f94 100644
--- a/src/module/sheets/merchantSheet.mjs
+++ b/src/module/sheets/merchantSheet.mjs
@@ -20,6 +20,7 @@ export class MerchantSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
resizable: true,
},
actions: {
+ buy: MerchantSheet.#buyWare,
editImage: DocumentSheetV2.DEFAULT_OPTIONS.actions.editImage,
editServiceImage: MerchantSheet.#editServiceImage,
editNewServiceImage: MerchantSheet.#editNewServiceImage,
@@ -81,6 +82,50 @@ export class MerchantSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
await this.document.update(formData.object) // Note: formData.object
}
+ static async #buyWare(event, target) {
+
+ const {itemId} = target.dataset
+ const item = this.document.items.get(itemId)
+
+ let selections = ''
+ game.actors.filter(p => p.isOwner).forEach(actor => {
+ selections += ``
+ })
+
+ const actorId = await foundry.applications.api.DialogV2.prompt({
+ window: {title: `${item.name} kaufen mit wem?`},
+ content: ``,
+ ok: {
+ label: `Kaufen`,
+ callback: (event, button, dialog) => button.form.elements.actor.value
+ }
+ });
+
+ const actor = game.actors.get(actorId)
+
+
+ let wealth = 0
+
+ actor.itemTypes["Equipment"].forEach(coin => {
+ if (coin.system.category.indexOf("Währung") !== -1) {
+ wealth += (coin.system.quantity * coin.system.currencyDenominator)
+ }
+ })
+
+ if (wealth >= item.system.price) {
+
+ actor.reduceWealth(item.system.price)
+ actor.createEmbeddedDocuments('Item', [item])
+ this.document.deleteEmbeddedDocuments('Item', [item._id])
+
+ } else {
+ ui.notifications.error(item.name + " ist zu teuer für " + actor.name)
+ }
+
+ console.log(actorId)
+
+ }
+
static async #removeService(event, target) {
const {rowId} = target.dataset;
diff --git a/src/templates/actor/merchant/tab-goods.hbs b/src/templates/actor/merchant/tab-goods.hbs
index 9a271dec..445bd6a2 100644
--- a/src/templates/actor/merchant/tab-goods.hbs
+++ b/src/templates/actor/merchant/tab-goods.hbs
@@ -8,7 +8,7 @@
{{this.name}}
{{currency this.system.price}}
-
+
{{/each}}