.dungeon/module/documents/Actor/Player.mjs

70 lines
1.7 KiB
JavaScript

import { DotDungeonActor } from "./GenericActor.mjs";
import { DotDungeonItem } from "../Item/GenericItem.mjs";
export class Player extends DotDungeonActor {
async createCustomPet() {
const body = new URLSearchParams({
number: 1,
animal: `Cat`,
"X-Requested-With": "fetch"
});
const r = await fetch(
`https://randommer.io/pet-names`,
{
method: "POST",
body
}
);
await this.createEmbeddedItem([{
type: `pet`,
name: (await r.json())[0] ?? game.i18n.localize(`dotdungeon.defaults.pet.name`),
}]);
};
get atAspectLimit() {
let limit = game.settings.get(`dotdungeon`, `aspectLimit`);
return this.itemTypes.aspect.length >= limit;
};
async preAspectEmbed(item) {
if (this.atAspectLimit) {
ui.notifications.error(
game.i18n.format(
`dotdungeon.notification.error.aspect-limit-reached`,
{ limit: game.settings.get(`dotdungeon`, `aspectLimit`) }
),
{ console: false }
);
return false;
};
};
/**
* TODO: Make this quantity increase work for all item types
* TODO: Find item based of the source's ID, not name
* @param {DotDungeonItem} item
*/
// async preUntypedEmbed(item) {
// let inventoryItem = this.itemTypes.untyped.find(i => i.name === item.name);
// if (inventoryItem) {
// inventoryItem.update({"system.quantity": inventoryItem.system.quantity + 1});
// ui.notifications.info(
// game.i18n.format(
// `dotdungeon.notification.info.increased-item-quantity`,
// { name: inventoryItem.name }
// ),
// { console: false }
// );
// return false;
// };
// };
getRollData() {
const data = {
initiative: this.system.stats.hands ?? 0,
stats: this.system.stats,
};
return data;
};
};