Add shield skills
This commit is contained in:
@@ -45,6 +45,8 @@ export class CrucibleActorSheet extends ActorSheet {
|
||||
spells: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getLore())),
|
||||
equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsOnly()) ),
|
||||
equippedWeapons: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquippedWeapons()) ),
|
||||
equippedArmor: this.actor.getEquippedArmor(),
|
||||
equippedShield: this.actor.getEquippedShield(),
|
||||
feats: duplicate(this.actor.getFeats()),
|
||||
subActors: duplicate(this.actor.getSubActors()),
|
||||
race: duplicate(this.actor.getRace()),
|
||||
@@ -150,6 +152,15 @@ export class CrucibleActorSheet extends ActorSheet {
|
||||
const skillId = li.data("item-id")
|
||||
this.actor.rollWeapon(skillId)
|
||||
});
|
||||
html.find('.roll-armor-die').click((event) => {
|
||||
//TODO
|
||||
ui.notifications.warn("Not implemented")
|
||||
});
|
||||
html.find('.roll-shield-die').click((event) => {
|
||||
//TODO
|
||||
ui.notifications.warn("Not implemented")
|
||||
});
|
||||
|
||||
html.find('.roll-save').click((event) => {
|
||||
const saveKey = $(event.currentTarget).data("save-key")
|
||||
this.actor.rollSave(saveKey)
|
||||
|
||||
@@ -62,23 +62,23 @@ export class CrucibleActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
computeHitPoints( ) {
|
||||
computeHitPoints() {
|
||||
let hp = duplicate(this.data.data.secondary.hp)
|
||||
let max = (this.data.data.abilities.str.value + this.data.data.abilities.con.value) * 6
|
||||
if ( max != hp.max || hp.value > max) {
|
||||
if (max != hp.max || hp.value > max) {
|
||||
hp.max = max
|
||||
hp.value = max // Init case
|
||||
this.update({ 'data.secondary.hp': hp})
|
||||
this.update({ 'data.secondary.hp': hp })
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
computeEffortPoints( ) {
|
||||
computeEffortPoints() {
|
||||
let effort = duplicate(this.data.data.secondary.effort)
|
||||
let max = (this.data.data.abilities.con.value + this.data.data.abilities.int.value) * 6
|
||||
if ( max != effort.max || effort.value > max) {
|
||||
if (max != effort.max || effort.value > max) {
|
||||
effort.max = max
|
||||
effort.value = max // Init case
|
||||
this.update({ 'data.secondary.effort': effort})
|
||||
this.update({ 'data.secondary.effort': effort })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,12 +146,27 @@ export class CrucibleActor extends Actor {
|
||||
CrucibleUtility.sortArrayObjectsByName(comp)
|
||||
return comp;
|
||||
}
|
||||
getEquippedArmor() {
|
||||
let comp = this.data.items.find(item => item.type == 'armor' && item.data.data.equipped)
|
||||
if (comp) {
|
||||
return duplicate(comp)
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getShields() {
|
||||
let comp = duplicate(this.data.items.filter(item => item.type == 'shield') || []);
|
||||
CrucibleUtility.sortArrayObjectsByName(comp)
|
||||
return comp;
|
||||
}
|
||||
getEquippedShield() {
|
||||
let comp = this.data.items.find(item => item.type == 'shield' && item.data.data.equipped)
|
||||
if (comp) {
|
||||
return duplicate(comp)
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getRace() {
|
||||
let race = this.data.items.filter(item => item.type == 'race')
|
||||
return race[0] ?? [];
|
||||
@@ -205,8 +220,22 @@ export class CrucibleActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async equipItem(itemId) {
|
||||
let item = this.data.items.find(item => item.id == itemId);
|
||||
let item = this.data.items.find(item => item.id == itemId)
|
||||
if (item && item.data.data) {
|
||||
if (item.type == "armor") {
|
||||
let armor = this.data.items.find(item => item.id != itemId && item.type == "armor" && item.data.data.equipped)
|
||||
if (armor) {
|
||||
ui.notifications.warn("You already have an armor equipped!")
|
||||
return
|
||||
}
|
||||
}
|
||||
if (item.type == "shield") {
|
||||
let shield = this.data.items.find(item => item.id != itemId && item.type == "shield" && item.data.data.equipped)
|
||||
if (shield) {
|
||||
ui.notifications.warn("You already have a shield equipped!")
|
||||
return
|
||||
}
|
||||
}
|
||||
let update = { _id: item.id, "data.equipped": !item.data.data.equipped };
|
||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||
}
|
||||
@@ -236,15 +265,18 @@ export class CrucibleActor extends Actor {
|
||||
getSaveRoll() {
|
||||
return {
|
||||
reflex: {
|
||||
"label": "Reflex",
|
||||
"label": "Reflex Save",
|
||||
"img": "systems/fvtt-crucible-rpg/images/icons/saves/reflex_save.webp",
|
||||
"value": this.data.data.abilities.agi.value + this.data.data.abilities.wit.value
|
||||
},
|
||||
fortitude: {
|
||||
"label": "Fortitude",
|
||||
"label": "Fortitude Save",
|
||||
"img": "systems/fvtt-crucible-rpg/images/icons/saves/fortitude_save.webp",
|
||||
"value": this.data.data.abilities.str.value + this.data.data.abilities.con.value
|
||||
},
|
||||
willpower: {
|
||||
"label": "Willpower",
|
||||
"label": "Willpower Save",
|
||||
"img": "systems/fvtt-crucible-rpg/images/icons/saves/will_save.webp",
|
||||
"value": this.data.data.abilities.int.value + this.data.data.abilities.cha.value
|
||||
}
|
||||
}
|
||||
@@ -521,7 +553,7 @@ export class CrucibleActor extends Actor {
|
||||
let weapon = this.data.items.get(weaponId)
|
||||
if (weapon) {
|
||||
weapon = duplicate(weapon)
|
||||
let skill = this.data.items.find( item => item.name.toLowerCase() == weapon.data.skill.toLowerCase())
|
||||
let skill = this.data.items.find(item => item.name.toLowerCase() == weapon.data.skill.toLowerCase())
|
||||
if (skill) {
|
||||
skill = duplicate(skill)
|
||||
CrucibleUtility.updateSkill(skill)
|
||||
@@ -539,7 +571,7 @@ export class CrucibleActor extends Actor {
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
rollSave( saveKey) {
|
||||
rollSave(saveKey) {
|
||||
let saves = this.getSaveRoll()
|
||||
let save = saves[saveKey]
|
||||
if (save) {
|
||||
|
||||
@@ -64,6 +64,7 @@ export class CrucibleItemSheet extends ItemSheet {
|
||||
editable: this.isEditable,
|
||||
cssClass: this.isEditable ? "editable" : "locked",
|
||||
weaponSkills: CrucibleUtility.getWeaponSkills(),
|
||||
shieldSkills: CrucibleUtility.getShieldSkills(),
|
||||
data: itemData,
|
||||
limited: this.object.limited,
|
||||
options: this.options,
|
||||
|
||||
@@ -55,12 +55,17 @@ export class CrucibleUtility {
|
||||
static getWeaponSkills() {
|
||||
return duplicate(this.weaponSkills)
|
||||
}
|
||||
|
||||
/*-------------------------------------------- */
|
||||
static getShieldSkills() {
|
||||
return duplicate(this.shieldSkills)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async ready() {
|
||||
const skills = await CrucibleUtility.loadCompendium("fvtt-crucible-rpg.skills")
|
||||
this.skills = skills.map(i => i.toObject())
|
||||
this.weaponSkills = duplicate( this.skills.filter( item => item.data.isweaponskill))
|
||||
this.shieldSkills = duplicate( this.skills.filter( item => item.data.isshieldskill))
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
Reference in New Issue
Block a user