Savesrolls + HP

This commit is contained in:
2022-08-03 09:34:33 +02:00
parent 13646814ba
commit cb3f555a4e
29 changed files with 109 additions and 140 deletions

View File

@@ -50,7 +50,7 @@ export class CrucibleActorSheet extends ActorSheet {
race: duplicate(this.actor.getRace()),
moneys: duplicate(this.actor.getMoneys()),
encCapacity: this.actor.getEncumbranceCapacity(),
saveRoll: this.actor.getSaveRoll(),
saveRolls: this.actor.getSaveRoll(),
containersTree: this.actor.containersTree,
encCurrent: this.actor.encCurrent,
options: this.options,
@@ -94,17 +94,6 @@ export class CrucibleActorSheet extends ActorSheet {
this.actor.createEmbeddedDocuments('Item', [{ name: "NewItem", type: dataType }], { renderSheet: true })
})
html.find('.spec-group-activate').click(ev => {
const li = $(ev.currentTarget).parents(".item");
let itemId = li.data("item-id");
this.actor.specPowerActivate( itemId)
});
html.find('.spec-group-deactivate').click(ev => {
const li = $(ev.currentTarget).parents(".item");
let itemId = li.data("item-id");
this.actor.specPowerDeactivate( itemId)
});
html.find('.equip-activate').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
@@ -116,37 +105,6 @@ export class CrucibleActorSheet extends ActorSheet {
this.actor.equipDeactivate( itemId)
});
html.find('.effect-used').click(ev => {
const li = $(ev.currentTarget).parents(".item");
let itemId = li.data("item-id");
this.actor.perkEffectUsed( itemId)
});
html.find('.perk-status').change(ev => {
const li = $(ev.currentTarget).parents(".item");
let itemId = li.data("item-id");
this.actor.updatePerkStatus( itemId, ev.currentTarget.value)
});
html.find('.power-cost-spent').change(ev => {
const li = $(ev.currentTarget).parents(".item");
let itemId = li.data("item-id");
this.actor.updatePowerSpentCost( itemId, ev.currentTarget.value)
});
html.find('.power-dmg-roll').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
this.actor.powerDmgRoll( itemId )
})
html.find('.perk-used').change(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
let index = Number($(ev.currentTarget).data("use-index") )
this.actor.updatePerkUsed( itemId, index, ev.currentTarget.checked )
});
html.find('.subactor-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item");
let actorId = li.data("actor-id");
@@ -177,46 +135,6 @@ export class CrucibleActorSheet extends ActorSheet {
const li = $(event.currentTarget).parents(".item")
this.actor.incDecAmmo( li.data("item-id"), +1 )
} );
html.find('.stun-minus').click(event => {
this.actor.modifyStun( -1 )
} )
html.find('.stun-plus').click(event => {
this.actor.modifyStun( 1 )
} )
html.find('.momentum-minus').click(event => {
this.actor.modifyMomentum( -1 )
} )
html.find('.momentum-plus').click(event => {
this.actor.modifyMomentum( 1 )
} )
html.find('.unarmed-attack').click((event) => {
this.actor.rollUnarmedAttack();
});
html.find('.generic-pool-roll').click((event) => {
this.openGenericRoll()
} );
html.find('.attack-melee').click((event) => {
this.actor.rollPool( 'com', false, "melee-atk");
});
html.find('.attack-ranged').click((event) => {
this.actor.rollPool( 'agi', false, "ranged-atk");
});
html.find('.defense-roll').click((event) => {
this.actor.rollPool( 'def', true);
});
html.find('.damage-melee').click((event) => {
this.actor.rollPool( 'str', false, "melee-dmg");
});
html.find('.damage-ranged').click((event) => {
this.actor.rollPool( 'per', false, "ranged-dmg");
});
html.find('.damage-resistance').click((event) => {
this.actor.rollPool( 'phy', false, "dmg-res");
});
html.find('.roll-ability').click((event) => {
const abilityKey = $(event.currentTarget).data("ability-key");
@@ -232,28 +150,11 @@ export class CrucibleActorSheet extends ActorSheet {
const skillId = li.data("item-id")
this.actor.rollWeapon(skillId)
});
html.find('.weapon-roll').click((event) => {
const li = $(event.currentTarget).parents(".item");
const weaponId = li.data("item-id");
this.actor.rollWeapon(weaponId);
});
html.find('.armor-roll').click((event) => {
const li = $(event.currentTarget).parents(".item");
const armorId = li.data("item-id");
this.actor.rollArmor(armorId);
html.find('.roll-save').click((event) => {
const saveKey = $(event.currentTarget).data("save-key")
this.actor.rollSave(saveKey)
});
html.find('.weapon-damage-roll').click((event) => {
const li = $(event.currentTarget).parents(".item");
const weaponId = li.data("item-id");
this.actor.rollWeapon(weaponId, true);
});
html.find('.weapon-damage').click((event) => {
const li = $(event.currentTarget).parents(".item");
const weapon = this.actor.getOwnedItem(li.data("item-id"));
this.actor.rollDamage(weapon, 'damage');
});
html.find('.lock-unlock-sheet').click((event) => {
this.options.editScore = !this.options.editScore;
@@ -269,35 +170,12 @@ export class CrucibleActorSheet extends ActorSheet {
this.actor.equipItem( li.data("item-id") );
this.render(true);
});
html.find('.power-activate').click(ev => {
const li = $(ev.currentTarget).parents(".item");
this.actor.activatePower( li.data("item-id") );
this.render(true);
});
html.find('.vice-virtue-activate').click(ev => {
const li = $(ev.currentTarget).parents(".item")
this.actor.activateViceOrVirtue( li.data("item-id") )
this.render(true);
})
html.find('.change-worstfear').change(ev => {
this.actor.manageWorstFear( ev.currentTarget.checked )
});
html.find('.change-desires').change(ev => {
this.actor.manageDesires( ev.currentTarget.checked )
});
html.find('.update-field').change(ev => {
const fieldName = $(ev.currentTarget).data("field-name");
let value = Number(ev.currentTarget.value);
this.actor.update( { [`${fieldName}`]: value } );
});
html.find('.perk-active').click(ev => {
const li = $(ev.currentTarget).parents(".item");
this.actor.activatePerk( li.data("item-id") );
this.render(true);
});
}
/* -------------------------------------------- */

View File

@@ -61,12 +61,35 @@ export class CrucibleActor extends Actor {
super.prepareData();
}
/* -------------------------------------------- */
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) {
hp.max = max
hp.value = max // Init case
this.update({ 'data.secondary.hp': hp})
}
}
/* -------------------------------------------- */
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) {
effort.max = max
effort.value = max // Init case
this.update({ 'data.secondary.effort': effort})
}
}
/* -------------------------------------------- */
prepareDerivedData() {
if (this.type == 'character') {
if (this.type == 'character' || game.user.isGM) {
this.data.data.encCapacity = this.getEncumbranceCapacity()
this.buildContainerTree()
this.computeHitPoints()
this.computeEffortPoints()
}
super.prepareDerivedData();
@@ -515,7 +538,21 @@ export class CrucibleActor extends Actor {
}
}
}
/* -------------------------------------------- */
rollSave( saveKey) {
let saves = this.getSaveRoll()
let save = saves[saveKey]
if (save) {
save = duplicate(save)
let rollData = this.getCommonRollData()
rollData.mode = "save"
rollData.save = save
//rollData.img = skill.img
this.startRoll(rollData)
}
}
/* -------------------------------------------- */
async startRoll(rollData) {
this.syncRoll(rollData)

View File

@@ -271,15 +271,23 @@ export class CrucibleUtility {
let actor = game.actors.get(rollData.actorId)
// stat => 0
let diceFormula = String(rollData.ability.value) + "d6cs>=5"
// ability/save => 0
let diceFormula
let startFormula = "0d6cs>=5"
if ( rollData.ability) {
startFormula = String(rollData.ability.value) + "d6cs>=5"
}
if ( rollData.save) {
startFormula = String(rollData.save.value) + "d6cs>=5"
}
diceFormula = startFormula
// skill => 2
// feat => 4
// bonus => 6
if (rollData.skill) {
let level = rollData.skill.data.level
if (level == 0 && rollData.skill.data.isfeatdie ) {
if (rollData.skill.data.issl2 ) {
rollData.hasSLBonus = true
level += 2
if (level > 7) { level = 7}
@@ -292,7 +300,7 @@ export class CrucibleUtility {
rollData.rollAdvantage = "roll-disadvantage"
}
if (rollData.skill.data.level > 0 && rollData.skill.data.isfeatdie) {
if (rollData.skill.data.isfeatdie) {
rollData.hasFeatDie = true
diceFormula += "+ 1d10cs>=5"
} else {
@@ -341,6 +349,7 @@ export class CrucibleUtility {
}
// Performs roll
console.log("Roll formula", diceFormula)
let myRoll = rollData.roll
if (!myRoll) { // New rolls only of no rerolls
myRoll = new Roll(diceFormula).roll({ async: false })