Sortierbare Items

Changes:
 + Items sind jetzt sortierbar
 + Items können jetzt auf andere Actor übertragen werden
 + Löschen button für Mods
This commit is contained in:
2024-02-24 23:11:32 +01:00
parent 8ce84bad19
commit 7072c3c151
9 changed files with 290 additions and 320 deletions
+47 -25
View File
@@ -1,5 +1,18 @@
import { M5Item } from "../items/M5Item";
import { M5Attribute, M5CharacterCalculatedData, M5ItemMod, M5ItemType, M5ModOperation, M5ModResult, M5ModType, M5RollData, M5Skill, M5SkillCalculated, M5SkillLearned, M5SkillType } from "../M5Base";
import {
M5Attribute,
M5CharacterCalculatedData,
M5ItemMod,
M5ItemType,
M5ModOperation,
M5ModResult,
M5ModType,
M5RollData,
M5Skill,
M5SkillCalculated,
M5SkillLearned,
M5SkillType,
} from "../M5Base";
import M5ModAggregate from "./M5ModAggregate";
export class M5Character extends Actor {
// constructor(
@@ -226,6 +239,7 @@ export class M5Character extends Actor {
if (!skip?.containers) {
context.items
?.filter((item) => item.type === "container")
.sort((a, b) => a?.sort - b?.sort)
.forEach((item) => {
item.prepareDerivedData();
@@ -263,6 +277,7 @@ export class M5Character extends Actor {
if (!skip?.items) {
context.items
?.filter((item) => item.type === "item")
.sort((a, b) => a?.sort - b?.sort)
.forEach((item) => {
item.prepareDerivedData();
@@ -280,10 +295,10 @@ export class M5Character extends Actor {
if (!!item.system.containerId) {
ret.gear.containers[item.system.containerId].weight += parseFloat((item.system.weight * item.system.quantity).toPrecision(4));
if (ret.gear.containers[item.system.containerId].equipped) {
ret.stats.encumbrance += (item.system.weight * item.system.quantity);
ret.stats.encumbrance += item.system.weight * item.system.quantity;
}
} else if (item.system.equipped) {
ret.stats.encumbrance += (item.system.weight * item.system.quantity);
ret.stats.encumbrance += item.system.weight * item.system.quantity;
}
let icon = item.img;
@@ -316,6 +331,7 @@ export class M5Character extends Actor {
context.items
?.filter((item) => item.type === "weapon")
.sort((a, b) => a?.sort - b?.sort)
.forEach((item) => {
item.prepareDerivedData();
@@ -364,6 +380,7 @@ export class M5Character extends Actor {
context.items
?.filter((item) => item.type === "defensiveWeapon")
.sort((a, b) => a?.sort - b?.sort)
.forEach((item) => {
item.prepareDerivedData();
@@ -404,6 +421,7 @@ export class M5Character extends Actor {
context.items
?.filter((item) => item.type === "armor")
.sort((a, b) => a?.sort - b?.sort)
.forEach((item) => {
item.prepareDerivedData();
@@ -470,28 +488,28 @@ export class M5Character extends Actor {
if (!skip?.encumbrance) {
const item = context.items.filter((x) => x.name === "Höchstlast");
if (ret.stats.encumbrance > ret.stats.loadMax) {
if (item.length === 0) {
let messageContent = `Höchstlast wurde überschritten: 1 AP Schaden durch Belastung alle 10 Minuten abziehen!`;
let chatData = {
speaker: ChatMessage.getSpeaker({actor: Actor.name}),
content: messageContent,
};
ChatMessage.create(chatData, {});
ui.notifications.warn(messageContent);
this.createEffect("Höchstlast", [{ id: "ap", operation: M5ModOperation.SUBTRACT, type: M5ModType.STAT, value: 1 }]);
} else if (item.length === 2) {
item[1]?.delete();
} else if (item.length === 1) {
item[0].update({
data: {
equipped: true,
},
});
}
} else if (ret.stats.encumbrance < ret.stats.loadMax) {
if (item.length === 1) {
item[0]?.delete();
if (ret.stats.encumbrance > ret.stats.loadMax) {
if (item.length === 0) {
let messageContent = `Höchstlast wurde überschritten: 1 AP Schaden durch Belastung alle 10 Minuten abziehen!`;
let chatData = {
speaker: ChatMessage.getSpeaker({ actor: Actor.name }),
content: messageContent,
};
ChatMessage.create(chatData, {});
ui.notifications.warn(messageContent);
this.createEffect("Höchstlast", [{ id: "ap", operation: M5ModOperation.SUBTRACT, type: M5ModType.STAT, value: 1 }]);
} else if (item.length === 2) {
item[1]?.delete();
} else if (item.length === 1) {
item[0].update({
data: {
equipped: true,
},
});
}
} else if (ret.stats.encumbrance < ret.stats.loadMax) {
if (item.length === 1) {
item[0]?.delete();
}
}
}
@@ -500,6 +518,7 @@ export class M5Character extends Actor {
if (!skip?.effects) {
context.items
?.filter((item) => item.type === "effect")
.sort((a, b) => a?.sort - b?.sort)
.forEach((item) => {
item.prepareDerivedData();
@@ -521,6 +540,7 @@ export class M5Character extends Actor {
if (!skip?.skills) {
context.items
?.filter((item) => item.type === "skill")
.sort((a, b) => a?.sort - b?.sort)
.forEach((item) => {
item.prepareDerivedData();
const skillMap = ret.skills[item.system.type];
@@ -537,6 +557,7 @@ export class M5Character extends Actor {
if (!skip?.spells) {
context.items
?.filter((item) => item.type === "spell")
.sort((a, b) => a?.sort - b?.sort)
.forEach((item) => {
item.prepareDerivedData();
@@ -551,6 +572,7 @@ export class M5Character extends Actor {
if (!skip?.kampfkuenste) {
context.items
?.filter((item) => item.type === "kampfkunst")
.sort((a, b) => a?.sort - b?.sort)
.forEach((item) => {
item.prepareDerivedData();