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:
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user