Compare commits
6 Commits
fvtt-cruci
...
fvtt-cruci
Author | SHA1 | Date | |
---|---|---|---|
ea06648a67 | |||
49c3560771 | |||
dfadc5e1ca | |||
cb3f555a4e | |||
13646814ba | |||
38e27061ad |
0
images/icons/feats/.directory
Normal file → Executable file
0
images/icons/feats/Blessing Lore.webp
Normal file → Executable file
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
0
images/icons/feats/Miracle Lore.webp
Normal file → Executable file
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
BIN
images/icons/iconic_characters/Jenette.webp
Executable file
After Width: | Height: | Size: 20 KiB |
BIN
images/icons/iconic_characters/Jonah.webp
Executable file
After Width: | Height: | Size: 11 KiB |
BIN
images/icons/iconic_characters/Nadgar.webp
Executable file
After Width: | Height: | Size: 12 KiB |
BIN
images/icons/iconic_characters/Nigel.webp
Executable file
After Width: | Height: | Size: 8.5 KiB |
BIN
images/icons/saves/fortitude_save.webp
Normal file
After Width: | Height: | Size: 6.9 KiB |
BIN
images/icons/saves/reflex_save.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
images/icons/saves/will_save.webp
Normal file
After Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 5.9 KiB |
0
images/icons/skills/Athletics.webp
Normal file → Executable file
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
0
images/icons/skills/Brawn.webp
Normal file → Executable file
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.1 KiB |
0
images/icons/skills/Charm.webp
Normal file → Executable file
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 3.1 KiB |
0
images/icons/skills/Haggle.webp
Normal file → Executable file
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
0
images/icons/skills/Intuition.webp
Normal file → Executable file
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 8.1 KiB |
BIN
images/icons/skills/Ride Mount.webp
Normal file → Executable file
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.7 KiB |
BIN
images/ui/crucible_pause_logo.jpg
Normal file
After Width: | Height: | Size: 22 KiB |
@ -45,12 +45,14 @@ export class CrucibleActorSheet extends ActorSheet {
|
|||||||
spells: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getLore())),
|
spells: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getLore())),
|
||||||
equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsOnly()) ),
|
equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsOnly()) ),
|
||||||
equippedWeapons: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquippedWeapons()) ),
|
equippedWeapons: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquippedWeapons()) ),
|
||||||
|
equippedArmor: this.actor.getEquippedArmor(),
|
||||||
|
equippedShield: this.actor.getEquippedShield(),
|
||||||
feats: duplicate(this.actor.getFeats()),
|
feats: duplicate(this.actor.getFeats()),
|
||||||
subActors: duplicate(this.actor.getSubActors()),
|
subActors: duplicate(this.actor.getSubActors()),
|
||||||
race: duplicate(this.actor.getRace()),
|
race: duplicate(this.actor.getRace()),
|
||||||
moneys: duplicate(this.actor.getMoneys()),
|
moneys: duplicate(this.actor.getMoneys()),
|
||||||
encCapacity: this.actor.getEncumbranceCapacity(),
|
encCapacity: this.actor.getEncumbranceCapacity(),
|
||||||
saveRoll: this.actor.getSaveRoll(),
|
saveRolls: this.actor.getSaveRoll(),
|
||||||
containersTree: this.actor.containersTree,
|
containersTree: this.actor.containersTree,
|
||||||
encCurrent: this.actor.encCurrent,
|
encCurrent: this.actor.encCurrent,
|
||||||
options: this.options,
|
options: this.options,
|
||||||
@ -94,17 +96,6 @@ export class CrucibleActorSheet extends ActorSheet {
|
|||||||
this.actor.createEmbeddedDocuments('Item', [{ name: "NewItem", type: dataType }], { renderSheet: true })
|
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 => {
|
html.find('.equip-activate').click(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".item")
|
const li = $(ev.currentTarget).parents(".item")
|
||||||
let itemId = li.data("item-id")
|
let itemId = li.data("item-id")
|
||||||
@ -116,37 +107,6 @@ export class CrucibleActorSheet extends ActorSheet {
|
|||||||
this.actor.equipDeactivate( itemId)
|
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 => {
|
html.find('.subactor-edit').click(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".item");
|
const li = $(ev.currentTarget).parents(".item");
|
||||||
let actorId = li.data("actor-id");
|
let actorId = li.data("actor-id");
|
||||||
@ -177,46 +137,6 @@ export class CrucibleActorSheet extends ActorSheet {
|
|||||||
const li = $(event.currentTarget).parents(".item")
|
const li = $(event.currentTarget).parents(".item")
|
||||||
this.actor.incDecAmmo( li.data("item-id"), +1 )
|
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) => {
|
html.find('.roll-ability').click((event) => {
|
||||||
const abilityKey = $(event.currentTarget).data("ability-key");
|
const abilityKey = $(event.currentTarget).data("ability-key");
|
||||||
@ -232,28 +152,20 @@ export class CrucibleActorSheet extends ActorSheet {
|
|||||||
const skillId = li.data("item-id")
|
const skillId = li.data("item-id")
|
||||||
this.actor.rollWeapon(skillId)
|
this.actor.rollWeapon(skillId)
|
||||||
});
|
});
|
||||||
html.find('.weapon-roll').click((event) => {
|
html.find('.roll-armor-die').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item");
|
//TODO
|
||||||
const weaponId = li.data("item-id");
|
ui.notifications.warn("Not implemented")
|
||||||
this.actor.rollWeapon(weaponId);
|
|
||||||
});
|
});
|
||||||
html.find('.armor-roll').click((event) => {
|
html.find('.roll-shield-die').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item");
|
//TODO
|
||||||
const armorId = li.data("item-id");
|
ui.notifications.warn("Not implemented")
|
||||||
this.actor.rollArmor(armorId);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
html.find('.weapon-damage-roll').click((event) => {
|
html.find('.roll-save').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item");
|
const saveKey = $(event.currentTarget).data("save-key")
|
||||||
const weaponId = li.data("item-id");
|
this.actor.rollSave(saveKey)
|
||||||
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) => {
|
html.find('.lock-unlock-sheet').click((event) => {
|
||||||
this.options.editScore = !this.options.editScore;
|
this.options.editScore = !this.options.editScore;
|
||||||
@ -269,35 +181,12 @@ export class CrucibleActorSheet extends ActorSheet {
|
|||||||
this.actor.equipItem( li.data("item-id") );
|
this.actor.equipItem( li.data("item-id") );
|
||||||
this.render(true);
|
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 => {
|
html.find('.update-field').change(ev => {
|
||||||
const fieldName = $(ev.currentTarget).data("field-name");
|
const fieldName = $(ev.currentTarget).data("field-name");
|
||||||
let value = Number(ev.currentTarget.value);
|
let value = Number(ev.currentTarget.value);
|
||||||
this.actor.update( { [`${fieldName}`]: 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);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -61,12 +61,35 @@ export class CrucibleActor extends Actor {
|
|||||||
super.prepareData();
|
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() {
|
prepareDerivedData() {
|
||||||
|
|
||||||
if (this.type == 'character') {
|
if (this.type == 'character' || game.user.isGM) {
|
||||||
this.data.data.encCapacity = this.getEncumbranceCapacity()
|
this.data.data.encCapacity = this.getEncumbranceCapacity()
|
||||||
this.buildContainerTree()
|
this.buildContainerTree()
|
||||||
|
this.computeHitPoints()
|
||||||
|
this.computeEffortPoints()
|
||||||
}
|
}
|
||||||
|
|
||||||
super.prepareDerivedData();
|
super.prepareDerivedData();
|
||||||
@ -123,12 +146,27 @@ export class CrucibleActor extends Actor {
|
|||||||
CrucibleUtility.sortArrayObjectsByName(comp)
|
CrucibleUtility.sortArrayObjectsByName(comp)
|
||||||
return 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() {
|
getShields() {
|
||||||
let comp = duplicate(this.data.items.filter(item => item.type == 'shield') || []);
|
let comp = duplicate(this.data.items.filter(item => item.type == 'shield') || []);
|
||||||
CrucibleUtility.sortArrayObjectsByName(comp)
|
CrucibleUtility.sortArrayObjectsByName(comp)
|
||||||
return 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() {
|
getRace() {
|
||||||
let race = this.data.items.filter(item => item.type == 'race')
|
let race = this.data.items.filter(item => item.type == 'race')
|
||||||
return race[0] ?? [];
|
return race[0] ?? [];
|
||||||
@ -182,8 +220,22 @@ export class CrucibleActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async equipItem(itemId) {
|
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 && 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 };
|
let update = { _id: item.id, "data.equipped": !item.data.data.equipped };
|
||||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||||
}
|
}
|
||||||
@ -213,15 +265,18 @@ export class CrucibleActor extends Actor {
|
|||||||
getSaveRoll() {
|
getSaveRoll() {
|
||||||
return {
|
return {
|
||||||
reflex: {
|
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
|
"value": this.data.data.abilities.agi.value + this.data.data.abilities.wit.value
|
||||||
},
|
},
|
||||||
fortitude: {
|
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
|
"value": this.data.data.abilities.str.value + this.data.data.abilities.con.value
|
||||||
},
|
},
|
||||||
willpower: {
|
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
|
"value": this.data.data.abilities.int.value + this.data.data.abilities.cha.value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -498,7 +553,7 @@ export class CrucibleActor extends Actor {
|
|||||||
let weapon = this.data.items.get(weaponId)
|
let weapon = this.data.items.get(weaponId)
|
||||||
if (weapon) {
|
if (weapon) {
|
||||||
weapon = duplicate(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) {
|
if (skill) {
|
||||||
skill = duplicate(skill)
|
skill = duplicate(skill)
|
||||||
CrucibleUtility.updateSkill(skill)
|
CrucibleUtility.updateSkill(skill)
|
||||||
@ -515,7 +570,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) {
|
async startRoll(rollData) {
|
||||||
this.syncRoll(rollData)
|
this.syncRoll(rollData)
|
||||||
|
@ -64,6 +64,7 @@ export class CrucibleItemSheet extends ItemSheet {
|
|||||||
editable: this.isEditable,
|
editable: this.isEditable,
|
||||||
cssClass: this.isEditable ? "editable" : "locked",
|
cssClass: this.isEditable ? "editable" : "locked",
|
||||||
weaponSkills: CrucibleUtility.getWeaponSkills(),
|
weaponSkills: CrucibleUtility.getWeaponSkills(),
|
||||||
|
shieldSkills: CrucibleUtility.getShieldSkills(),
|
||||||
data: itemData,
|
data: itemData,
|
||||||
limited: this.object.limited,
|
limited: this.object.limited,
|
||||||
options: this.options,
|
options: this.options,
|
||||||
|
@ -55,12 +55,17 @@ export class CrucibleUtility {
|
|||||||
static getWeaponSkills() {
|
static getWeaponSkills() {
|
||||||
return duplicate(this.weaponSkills)
|
return duplicate(this.weaponSkills)
|
||||||
}
|
}
|
||||||
|
/*-------------------------------------------- */
|
||||||
|
static getShieldSkills() {
|
||||||
|
return duplicate(this.shieldSkills)
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async ready() {
|
static async ready() {
|
||||||
const skills = await CrucibleUtility.loadCompendium("fvtt-crucible-rpg.skills")
|
const skills = await CrucibleUtility.loadCompendium("fvtt-crucible-rpg.skills")
|
||||||
this.skills = skills.map(i => i.toObject())
|
this.skills = skills.map(i => i.toObject())
|
||||||
this.weaponSkills = duplicate( this.skills.filter( item => item.data.isweaponskill))
|
this.weaponSkills = duplicate( this.skills.filter( item => item.data.isweaponskill))
|
||||||
|
this.shieldSkills = duplicate( this.skills.filter( item => item.data.isshieldskill))
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -271,15 +276,23 @@ export class CrucibleUtility {
|
|||||||
|
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = game.actors.get(rollData.actorId)
|
||||||
|
|
||||||
// stat => 0
|
// ability/save => 0
|
||||||
let diceFormula = String(rollData.ability.value) + "d6cs>=5"
|
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
|
// skill => 2
|
||||||
// feat => 4
|
// feat => 4
|
||||||
// bonus => 6
|
// bonus => 6
|
||||||
if (rollData.skill) {
|
if (rollData.skill) {
|
||||||
let level = rollData.skill.data.level
|
let level = rollData.skill.data.level
|
||||||
if (level == 0 && rollData.skill.data.isfeatdie ) {
|
if (rollData.skill.data.issl2 ) {
|
||||||
rollData.hasSLBonus = true
|
rollData.hasSLBonus = true
|
||||||
level += 2
|
level += 2
|
||||||
if (level > 7) { level = 7}
|
if (level > 7) { level = 7}
|
||||||
@ -292,7 +305,7 @@ export class CrucibleUtility {
|
|||||||
rollData.rollAdvantage = "roll-disadvantage"
|
rollData.rollAdvantage = "roll-disadvantage"
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rollData.skill.data.level > 0 && rollData.skill.data.isfeatdie) {
|
if (rollData.skill.data.isfeatdie) {
|
||||||
rollData.hasFeatDie = true
|
rollData.hasFeatDie = true
|
||||||
diceFormula += "+ 1d10cs>=5"
|
diceFormula += "+ 1d10cs>=5"
|
||||||
} else {
|
} else {
|
||||||
@ -341,6 +354,7 @@ export class CrucibleUtility {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Performs roll
|
// Performs roll
|
||||||
|
console.log("Roll formula", diceFormula)
|
||||||
let myRoll = rollData.roll
|
let myRoll = rollData.roll
|
||||||
if (!myRoll) { // New rolls only of no rerolls
|
if (!myRoll) { // New rolls only of no rerolls
|
||||||
myRoll = new Roll(diceFormula).roll({ async: false })
|
myRoll = new Roll(diceFormula).roll({ async: false })
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
{"_id":"5PsVeLb1GGwQKoeW","name":"Shield 1","type":"shield","img":"systems/fvtt-crucible-rpg/images/icons/armors/Shield%201.webp","data":{"shielddie":"d8","equipped":false,"cost":0,"description":"<p><strong>Shield Skill Level 1 : d8 Shield Die</strong></p>\n<p> </p>\n<p>You may use your Shield <span style=\"text-decoration: underline;\">once per Action Round</span> to add a d8 to a single Defense Roll (melee defense) or Target Roll (ranged defense).</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"5PsVeLb1GGwQKoeW","name":"Shield 1","type":"shield","img":"systems/fvtt-crucible-rpg/images/icons/armors/Shield%201.webp","data":{"shielddie":"d8","equipped":false,"cost":0,"description":"<p><strong>Shield Skill Level 1 : d8 Shield Die</strong></p>\n<p> </p>\n<p>You may use your Shield <span style=\"text-decoration: underline;\">once per Action Round</span> to add a d8 to a single Defense Roll (melee defense) or Target Roll (ranged defense).</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"FHnHgwJxWD60i6Jp","name":"Shield 0","type":"shield","img":"systems/fvtt-crucible-rpg/images/icons/armors/Shield%200.webp","data":{"shielddie":"d6","equipped":false,"cost":0,"description":"<p><strong>Shield Skill Level 0 : d6 Shield Die</strong></p>\n<p> </p>\n<p>You may use your Shield <span style=\"text-decoration: underline;\">once per Action Round</span> to add a d6 to a single Defense Roll (melee defense) or Target Roll (ranged defense).</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"FHnHgwJxWD60i6Jp","name":"Shield 0","type":"shield","img":"systems/fvtt-crucible-rpg/images/icons/armors/Shield%200.webp","data":{"shielddie":"d6","equipped":false,"cost":0,"description":"<p><strong>Shield Skill Level 0 : d6 Shield Die</strong></p>\n<p> </p>\n<p>You may use your Shield <span style=\"text-decoration: underline;\">once per Action Round</span> to add a d6 to a single Defense Roll (melee defense) or Target Roll (ranged defense).</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"jyOPd1XJGOck5DpR","name":"Shield 2","type":"shield","img":"systems/fvtt-crucible-rpg/images/icons/armors/Shield%202.webp","data":{"shielddie":"d8","equipped":false,"cost":0,"description":"<p><strong>Shield Skill Level 2 : d10 Shield Die</strong></p>\n<p> </p>\n<p>You may use your Shield <span style=\"text-decoration: underline;\">once per Action Round</span> to add a d10 to a single Defense Roll (melee defense) or Target Roll (ranged defense).</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"jyOPd1XJGOck5DpR","name":"Shield 2","type":"shield","img":"systems/fvtt-crucible-rpg/images/icons/armors/Shield%202.webp","data":{"shielddie":"d10","equipped":false,"cost":0,"description":"<p><strong>Shield Skill Level 2 : d10 Shield Die</strong></p>\n<p> </p>\n<p>You may use your Shield <span style=\"text-decoration: underline;\">once per Action Round</span> to add a d10 to a single Defense Roll (melee defense) or Target Roll (ranged defense).</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
{"_id":"8o812uFRJbtKrbvc","name":"Blessings Lore","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Blessing%20Lore.png","data":{"ability":"cha","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Chaplain Class Only</p>\n<p> </p>\n<p>You can use the Chaplain Blessings Class Power</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"8o812uFRJbtKrbvc","name":"Blessings Lore","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Blessing%20Lore.png","data":{"ability":"cha","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Chaplain Class Only</p>\n<p> </p>\n<p>You can use the Chaplain Blessings Class Power</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"BKRHCd3kMfmQ7tcI","name":"Water Lore","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Water%20Lore.webp","data":{"ability":"int","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>You can cast Water Lore spells.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"BKRHCd3kMfmQ7tcI","name":"Water Lore","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Water%20Lore.webp","data":{"ability":"int","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>You can cast Water Lore spells.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"KR9JDNO8QkeNPa8W","name":"Haggle","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Haggle.png","data":{"ability":"wit","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>I'll give you half of your asking price and make you like it.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"KR9JDNO8QkeNPa8W","name":"Haggle","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Haggle.png","data":{"ability":"wit","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>I'll give you half of your asking price and make you like it.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"name":"Axe","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/icon_skill.webp","data":{"ability":"agi","armorpenalty":false,"isproficient":true,"isweaponskill":true,"isinnate":false,"bonusdice":"none","level":2,"background":0,"basic":0,"class":0,"exp":0,"description":""},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{"core":{"sourceId":"Item.49wlzRnFpAaOx3A6"}},"_id":"LQD7mPqaM6RizBdu"}
|
|
||||||
{"_id":"SyaqDmAk6PEG2wZI","name":"Air Lore","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Air%20Lore.webp","data":{"ability":"int","armorpenalty":true,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>You can cast Air Lore Spells.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"SyaqDmAk6PEG2wZI","name":"Air Lore","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Air%20Lore.webp","data":{"ability":"int","armorpenalty":true,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>You can cast Air Lore Spells.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"T4YzMBGXyDrzEaBA","name":"Earth Lore","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Earth%20Lore.webp","data":{"ability":"int","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>You can cast Earth Lore spells.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"T4YzMBGXyDrzEaBA","name":"Earth Lore","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Earth%20Lore.webp","data":{"ability":"int","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>You can cast Earth Lore spells.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"XenGlvxetLv0A92F","name":"Acrobatics","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Acrobatics.webp","data":{"ability":"agi","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Handy for swinging from Chandaliers, sliding down stair rails, rolling between the legs of a Giant, and other feats of astonishing balance and agility.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"XenGlvxetLv0A92F","name":"Acrobatics","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Acrobatics.webp","data":{"ability":"agi","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Handy for swinging from Chandaliers, sliding down stair rails, rolling between the legs of a Giant, and other feats of astonishing balance and agility.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
@ -14,7 +13,7 @@
|
|||||||
{"_id":"Y4o571K5DQseDaGT","name":"Swim","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Swim.webp","data":{"ability":"str","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Kick you feet and don't forget to breathe!</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"Y4o571K5DQseDaGT","name":"Swim","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Swim.webp","data":{"ability":"str","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Kick you feet and don't forget to breathe!</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"ZfIwXZwaBKaVoYbG","name":"Athletics","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Athletics.png","data":{"ability":"agi","armorpenalty":true,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Your ability to run, jump, and climb; a measure of your physical coordination.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"ZfIwXZwaBKaVoYbG","name":"Athletics","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Athletics.png","data":{"ability":"agi","armorpenalty":true,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Your ability to run, jump, and climb; a measure of your physical coordination.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"cc74gHSQK4hRR8Vj","name":"Brawn","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Brawn.png","data":{"ability":"str","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>A combination of your Size and Strength.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"cc74gHSQK4hRR8Vj","name":"Brawn","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Brawn.png","data":{"ability":"str","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>A combination of your Size and Strength.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"name":"Axe (Copy)","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/icon_skill.webp","data":{"ability":"agi","armorpenalty":false,"isproficient":true,"isweaponskill":true,"isfeatdie":false,"islore":false,"skilltype":"complex","isinnate":false,"bonusdice":"none","background":0,"basic":0,"class":0,"exp":0,"explevel":0,"description":"","level":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{"core":{"sourceId":"Item.Cnw8keaxD1SI3vun"}},"_id":"fJjXMpUILcN983XV"}
|
{"_id":"fJjXMpUILcN983XV","name":"Axe","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/icon_skill.webp","data":{"ability":"agi","armorpenalty":false,"isproficient":true,"isweaponskill":true,"isshiedskill":false,"isfeatdie":false,"issl2":false,"islore":false,"skilltype":"complex","isinnate":false,"bonusdice":"none","background":0,"basic":0,"class":0,"exp":0,"explevel":0,"description":"","level":2,"isshieldskill":true},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{"core":{"sourceId":"Item.Cnw8keaxD1SI3vun"}}}
|
||||||
{"_id":"fegRI4Vsyr0Us1Ga","name":"Research","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Research.webp","data":{"ability":"int","armorpenalty":false,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Give me a moment to look that up....</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"fegRI4Vsyr0Us1Ga","name":"Research","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Research.webp","data":{"ability":"int","armorpenalty":false,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Give me a moment to look that up....</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"i8eeE2I9vv2kHwdJ","name":"Shadow Lore","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Shadow%20Lore.webp","data":{"ability":"int","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>You can cast Shadow Lore spells.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"i8eeE2I9vv2kHwdJ","name":"Shadow Lore","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Shadow%20Lore.webp","data":{"ability":"int","armorpenalty":true,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>You can cast Shadow Lore spells.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"lfB80K2lFSzQH442","name":"Intuition","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Intuition.png","data":{"ability":"wit","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>I see what you did there. I think you're up to something....</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"lfB80K2lFSzQH442","name":"Intuition","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Intuition.png","data":{"ability":"wit","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>I see what you did there. I think you're up to something....</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
@ -24,3 +23,5 @@
|
|||||||
{"_id":"s2AAQviLttcHul3X","name":"Charm","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Charm.png","data":{"ability":"cha","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Getting someone to do what you want because they want to do it.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"s2AAQviLttcHul3X","name":"Charm","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Charm.png","data":{"ability":"cha","armorpenalty":false,"bonusdice":"none","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Getting someone to do what you want because they want to do it.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"xlYUHAUSfQrsjQoi","name":"Survival","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Survival.webp","data":{"ability":"wit","armorpenalty":false,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Help me set this snare and we'll eat like kings in the morning.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"xlYUHAUSfQrsjQoi","name":"Survival","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Survival.webp","data":{"ability":"wit","armorpenalty":false,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Help me set this snare and we'll eat like kings in the morning.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"yAhtkgqf7pKyjJTA","name":"Poison Use","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Poison%20Use.webp","data":{"ability":"dex","armorpenalty":false,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Let me apply this to my blade.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"yAhtkgqf7pKyjJTA","name":"Poison Use","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/skills/Poison%20Use.webp","data":{"ability":"dex","armorpenalty":false,"bonusdice":"","level":0,"background":0,"basic":0,"class":0,"exp":0,"description":"<p>Let me apply this to my blade.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
|
{"_id":"fJjXMpUILcN983XV","name":"Axe","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/icon_skill.webp","data":{"ability":"agi","armorpenalty":false,"isproficient":true,"isweaponskill":true,"isshieldskill":false,"isfeatdie":false,"issl2":false,"islore":false,"skilltype":"complex","isinnate":false,"bonusdice":"none","background":0,"basic":0,"class":0,"exp":0,"explevel":0,"description":"","isshiedskill":false,"level":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{"core":{"sourceId":"Item.Cnw8keaxD1SI3vun"}}}
|
||||||
|
{"_id":"fJjXMpUILcN983XV","name":"Axe","type":"skill","img":"systems/fvtt-crucible-rpg/images/icons/icon_skill.webp","data":{"ability":"agi","armorpenalty":false,"isproficient":true,"isweaponskill":true,"isshieldskill":true,"isfeatdie":false,"issl2":false,"islore":false,"skilltype":"complex","isinnate":false,"bonusdice":"none","background":0,"basic":0,"class":0,"exp":0,"explevel":0,"description":"","isshiedskill":false,"level":2},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{"core":{"sourceId":"Item.Cnw8keaxD1SI3vun"}}}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
{"_id":"Sm3Pze2LY6BnoTBq","name":"Mace","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Mace.webp","data":{"ability":"str","isproficient":false,"qualities":"","flaws":"","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"<p>Mace</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"Sm3Pze2LY6BnoTBq","name":"Mace","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Mace.webp","data":{"ability":"str","isproficient":false,"qualities":"","flaws":"","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"<p>Mace</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"VOg1kpjhJ7h3XsSk","name":"Club","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Club.webp","data":{"ability":"str","isproficient":false,"qualities":"","flaws":"Light","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"<p>Club</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"VOg1kpjhJ7h3XsSk","name":"Club","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Club.webp","data":{"ability":"str","isproficient":false,"qualities":"","flaws":"Light","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"<p>Club</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"WvqALDHVEVt6TskF","name":"Javelin","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Javelin.webp","data":{"ability":"agi","isproficient":false,"qualities":"Penetrating","flaws":"","damage":"Piercing","range":"2 Zones","maxrange":"4 Zones","minstr":0,"cost":0,"equipped":false,"description":"<p>Javelin</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"WvqALDHVEVt6TskF","name":"Javelin","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Javelin.webp","data":{"ability":"agi","isproficient":false,"qualities":"Penetrating","flaws":"","damage":"Piercing","range":"2 Zones","maxrange":"4 Zones","minstr":0,"cost":0,"equipped":false,"description":"<p>Javelin</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"XTfw2cefPXucQgMG","name":"Crossbow","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Crossbow.webp","data":{"ability":"dex","isproficient":false,"qualities":"Penetrating","flaws":"Reload","damage":"Piercing","range":"3 Zones","maxrange":"5 Zones","minstr":0,"cost":0,"equipped":false,"description":"<p>Crossbow</p>\n<p>Requires 1 Action to reload after shooting - So you can only shoot every other Action Round.</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"XTfw2cefPXucQgMG","name":"Crossbow","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Crossbow.webp","data":{"isproficient":false,"skill":"Axe","qualities":"Penetrating","flaws":"Reload","damage":"Piercing","range":"3 Zones","maxrange":"5 Zones","minstr":0,"cost":0,"equipped":false,"description":"<p>Crossbow</p>\n<p>Requires 1 Action to reload after shooting - So you can only shoot every other Action Round.</p>","ability":"dex"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"XUAMSiOmPHi1LEHs","name":"2-H Hammer","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Hammer.webp","data":{"ability":"str","isproficient":false,"qualities":"Heavy","flaws":"","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"<p>2-H Hammer</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"XUAMSiOmPHi1LEHs","name":"2-H Hammer","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/2-H%20Hammer.webp","data":{"ability":"str","isproficient":false,"qualities":"Heavy","flaws":"","damage":"Bludgeoning","range":"Melee","maxrange":"","minstr":2,"cost":0,"equipped":false,"description":"<p>2-H Hammer</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"ZfBqMaYjg5z8Kh97","name":"Hand Axe (Melee)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Hand%20Axe.webp","data":{"ability":"str","isproficient":false,"qualities":"Hack","flaws":"Light","damage":"Slashing","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"<p>Hand Axe</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"ZfBqMaYjg5z8Kh97","name":"Hand Axe (Melee)","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Hand%20Axe.webp","data":{"ability":"str","isproficient":false,"qualities":"Hack","flaws":"Light","damage":"Slashing","range":"Melee","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"<p>Hand Axe</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
{"_id":"ZoooviRlvZIQR6d2","name":"Sting","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Sting.webp","data":{"ability":"agi","isproficient":false,"qualities":"","flaws":"","damage":"Piercing","range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"<p>Sting - natural weapon</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
{"_id":"ZoooviRlvZIQR6d2","name":"Sting","type":"weapon","img":"systems/fvtt-crucible-rpg/images/icons/weapons/Sting.webp","data":{"ability":"agi","isproficient":false,"qualities":"","flaws":"","damage":"Piercing","range":"Close","maxrange":"","minstr":0,"cost":0,"equipped":false,"description":"<p>Sting - natural weapon</p>"},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"Up3b6rNa3VKAFQC3":3},"flags":{}}
|
||||||
|
@ -581,7 +581,9 @@ ul, li {
|
|||||||
|
|
||||||
.sheet-competence-img {
|
.sheet-competence-img {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
|
max-width: 24px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
|
max-height: 24px;
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
}
|
}
|
||||||
@ -1238,9 +1240,9 @@ ul, li {
|
|||||||
color: #CCC
|
color: #CCC
|
||||||
}
|
}
|
||||||
#pause > img {
|
#pause > img {
|
||||||
content: url(../images/ui/crucible_game_logo.png);
|
content: url(../images/ui/crucible_pause_logo.jpg);
|
||||||
height: 160px;
|
height: 160px;
|
||||||
width: 256px;
|
width: 160px;
|
||||||
top: -80px;
|
top: -80px;
|
||||||
left: calc(50% - 132px);
|
left: calc(50% - 132px);
|
||||||
}
|
}
|
||||||
|
@ -208,11 +208,11 @@
|
|||||||
"styles": [
|
"styles": [
|
||||||
"styles/simple.css"
|
"styles/simple.css"
|
||||||
],
|
],
|
||||||
"templateVersion": 11,
|
"templateVersion": 14,
|
||||||
"title": "Crucible RPG",
|
"title": "Crucible RPG",
|
||||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg/raw/master/system.json",
|
"manifest": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg/raw/master/system.json",
|
||||||
"download": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg/archive/fvtt-crucible-rpg-v0.1.18.zip",
|
"download": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg/archive/fvtt-crucible-rpg-v0.1.22.zip",
|
||||||
"url": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg",
|
"url": "https://www.uberwald.me/gitea/public/fvtt-crucible-rpg",
|
||||||
"version": "0.1.18",
|
"version": "0.1.22",
|
||||||
"background" : "./images/ui/crucible_welcome_page.webp"
|
"background" : "./images/ui/crucible_welcome_page.webp"
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
"templates": {
|
"templates": {
|
||||||
"biodata": {
|
"biodata": {
|
||||||
"biodata": {
|
"biodata": {
|
||||||
|
"class": "",
|
||||||
"age": 0,
|
"age": 0,
|
||||||
"size": "",
|
"size": "",
|
||||||
"weight": "",
|
"weight": "",
|
||||||
@ -66,13 +67,13 @@
|
|||||||
"hp": {
|
"hp": {
|
||||||
"label": "Hitpoint",
|
"label": "Hitpoint",
|
||||||
"abbrev": "hb",
|
"abbrev": "hb",
|
||||||
"value": 0,
|
"value": -1,
|
||||||
"max": 0
|
"max": 0
|
||||||
},
|
},
|
||||||
"effort": {
|
"effort": {
|
||||||
"label": "Effort",
|
"label": "Effort",
|
||||||
"abbrev": "eff",
|
"abbrev": "eff",
|
||||||
"value": 0,
|
"value": -1,
|
||||||
"max": 0
|
"max": 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -121,7 +122,9 @@
|
|||||||
"armorpenalty": false,
|
"armorpenalty": false,
|
||||||
"isproficient": false,
|
"isproficient": false,
|
||||||
"isweaponskill": false,
|
"isweaponskill": false,
|
||||||
|
"isshieldskill": false,
|
||||||
"isfeatdie": false,
|
"isfeatdie": false,
|
||||||
|
"issl2": false,
|
||||||
"islore": false,
|
"islore": false,
|
||||||
"skilltype": "",
|
"skilltype": "",
|
||||||
"isinnate": false,
|
"isinnate": false,
|
||||||
@ -146,6 +149,7 @@
|
|||||||
},
|
},
|
||||||
"shield": {
|
"shield": {
|
||||||
"shielddie": "",
|
"shielddie": "",
|
||||||
|
"skill": "",
|
||||||
"equipped": false,
|
"equipped": false,
|
||||||
"cost": 0,
|
"cost": 0,
|
||||||
"description":""
|
"description":""
|
||||||
|
@ -17,6 +17,22 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<li class="item flexrow list-item" data-attr-key="class">
|
||||||
|
<span class="ability-label " name="class">
|
||||||
|
<h4 class="ability-text-white ability-margin">Class</h4>
|
||||||
|
</span>
|
||||||
|
<select class="competence-base flexrow" type="text" name="data.biodata.class" value="{{data.biodata.class}}" data-dtype="String">
|
||||||
|
{{#select data.biodata.class}}
|
||||||
|
<option value="chaplain">Chaplain</option>
|
||||||
|
<option value="magus">Magus</option>
|
||||||
|
<option value="martial">Martial</option>
|
||||||
|
<option value="skalawag">Skalawag</option>
|
||||||
|
<option value="warden">Warden</option>
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
</li>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="ability-item">
|
<div class="ability-item">
|
||||||
@ -26,6 +42,24 @@
|
|||||||
{{> systems/fvtt-crucible-rpg/templates/partial-actor-ability-block.html ability=ability key=key}}
|
{{> systems/fvtt-crucible-rpg/templates/partial-actor-ability-block.html ability=ability key=key}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
||||||
|
{{#if equippedArmor}}
|
||||||
|
<li class="item flexrow list-item" data-attr-key="class">
|
||||||
|
<img class="sheet-competence-img" src="{{equippedArmor.img}}" />
|
||||||
|
<span class="ability-label " name="class">
|
||||||
|
<h4 class="ability-text-white ability-margin"><a class="roll-armor-die ability-margin">{{equippedArmor.name}}</a></h4>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
||||||
|
{{#if equippedShield}}
|
||||||
|
<li class="item flexrow list-item" data-attr-key="class">
|
||||||
|
<img class="sheet-competence-img" src="{{equippedShield.img}}" />
|
||||||
|
<span class="ability-label " name="equippedShield">
|
||||||
|
<h4 class="ability-text-white ability-margin"><a class="roll-shield-die ability-margin">{{ability-margin.name}}</a></h4>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -18,6 +18,14 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
|
{{#if save}}
|
||||||
|
<li>Save : {{save.label}} - {{save.value}}d6
|
||||||
|
({{#each roll.terms.0.results as |die idx|}}
|
||||||
|
{{die.result}}
|
||||||
|
{{/each}})
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if ability}}
|
{{#if ability}}
|
||||||
<li>Ability : {{ability.label}} - {{ability.value}}d6
|
<li>Ability : {{ability.label}} - {{ability.value}}d6
|
||||||
({{#each roll.terms.0.results as |die idx|}}
|
({{#each roll.terms.0.results as |die idx|}}
|
||||||
@ -25,6 +33,7 @@
|
|||||||
{{/each}})
|
{{/each}})
|
||||||
</li>
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if skill}}
|
{{#if skill}}
|
||||||
<li>Skill : {{skill.name}} - {{skill.data.level}}d8
|
<li>Skill : {{skill.name}} - {{skill.data.level}}d8
|
||||||
{{#if featSL}}
|
{{#if featSL}}
|
||||||
@ -50,14 +59,14 @@
|
|||||||
{{/each}})
|
{{/each}})
|
||||||
</li>
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if (eq advantage "disadvantage1")}}
|
{{#if (eq disadvantage "disadvantage1")}}
|
||||||
<li>1 Disadvantage Die !
|
<li>1 Disadvantage Die !
|
||||||
({{#each roll.terms.10.results as |die idx|}}
|
({{#each roll.terms.10.results as |die idx|}}
|
||||||
{{die.result}}
|
{{die.result}}
|
||||||
{{/each}})
|
{{/each}})
|
||||||
</li>
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if (eq advantage "disadvantage2")}}
|
{{#if (eq disadvantage "disadvantage2")}}
|
||||||
<li>2 Disadvantage Dice !
|
<li>2 Disadvantage Dice !
|
||||||
({{#each roll.terms.10.results as |die idx|}}
|
({{#each roll.terms.10.results as |die idx|}}
|
||||||
{{die.result}}
|
{{die.result}}
|
||||||
@ -91,8 +100,8 @@
|
|||||||
<li>Roll with Disadvantage because of Complex Skill at SL 0 !</li>
|
<li>Roll with Disadvantage because of Complex Skill at SL 0 !</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if (ne featDieName "none")}}
|
{{#if hasFeatDie}}
|
||||||
<li>Feature Die : d10 ({{featDieName}})
|
<li>Feat Die : d10
|
||||||
({{#each roll.terms.4.results as |die idx|}}
|
({{#each roll.terms.4.results as |die idx|}}
|
||||||
{{die.result}}
|
{{die.result}}
|
||||||
{{/each}})
|
{{/each}})
|
||||||
|
@ -28,6 +28,17 @@
|
|||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li class="flexrow"><label class="generic-label">Associated skill</label>
|
||||||
|
<select class="competence-base flexrow" type="text" name="data.skill" value="{{data.skill}}" data-dtype="String">
|
||||||
|
{{#select data.skill}}
|
||||||
|
{{#each shieldSkills as |skill idx|}}
|
||||||
|
<option value="{{skill.name}}">{{skill.name}}</option>
|
||||||
|
{{/each}}
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li class="flexrow"><label class="generic-label">Equipped ?</label>
|
<li class="flexrow"><label class="generic-label">Equipped ?</label>
|
||||||
<label class="attribute-value checkbox"><input type="checkbox" name="data.equipped" {{checked data.equipped}}/></label>
|
<label class="attribute-value checkbox"><input type="checkbox" name="data.equipped" {{checked data.equipped}}/></label>
|
||||||
</li>
|
</li>
|
||||||
|
@ -23,9 +23,12 @@
|
|||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flexrow"><label class="generic-label">Is Feat Die (or SL +2) ?</label>
|
<li class="flexrow"><label class="generic-label">Is Feat Die ?</label>
|
||||||
<label class="attribute-value checkbox"><input type="checkbox" name="data.isfeatdie" {{checked data.isfeatdie}}/></label>
|
<label class="attribute-value checkbox"><input type="checkbox" name="data.isfeatdie" {{checked data.isfeatdie}}/></label>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="flexrow"><label class="generic-label">Is SL +2 ?</label>
|
||||||
|
<label class="attribute-value checkbox"><input type="checkbox" name="data.issl2" {{checked data.issl2}}/></label>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li class="flexrow"><label class="generic-label">Subject to Armor Penalty ?</label>
|
<li class="flexrow"><label class="generic-label">Subject to Armor Penalty ?</label>
|
||||||
<label class="attribute-value checkbox"><input type="checkbox" name="data.armorpenalty" {{checked data.armorpenalty}}/></label>
|
<label class="attribute-value checkbox"><input type="checkbox" name="data.armorpenalty" {{checked data.armorpenalty}}/></label>
|
||||||
@ -56,6 +59,10 @@
|
|||||||
<label class="attribute-value checkbox"><input type="checkbox" name="data.isweaponskill" {{checked data.isweaponskill}}/></label>
|
<label class="attribute-value checkbox"><input type="checkbox" name="data.isweaponskill" {{checked data.isweaponskill}}/></label>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li class="flexrow"><label class="generic-label">Is Shield Skill ?</label>
|
||||||
|
<label class="attribute-value checkbox"><input type="checkbox" name="data.isshieldskill" {{checked data.isshieldskill}}/></label>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li class="flexrow"><label class="generic-label">Bonus dice</label>
|
<li class="flexrow"><label class="generic-label">Bonus dice</label>
|
||||||
<select class="competence-base flexrow" type="text" name="data.bonusdice" value="{{data.bonusdice}}" data-dtype="String">
|
<select class="competence-base flexrow" type="text" name="data.bonusdice" value="{{data.bonusdice}}" data-dtype="String">
|
||||||
{{#select data.bonusdice}}
|
{{#select data.bonusdice}}
|
||||||
|
@ -1,4 +1,29 @@
|
|||||||
<ul class="status-block">
|
<ul class="status-block">
|
||||||
|
<li class="item flexrow list-item" data-attr-key="hp">
|
||||||
|
<span class="ability-label " name="hp">
|
||||||
|
<h4 class="ability-text-white ability-margin">HP</h4>
|
||||||
|
</span>
|
||||||
|
<span class="ability-label ability-margin"><input class="input-numeric-short" name="data.secondary.hp.value" value="{{data.secondary.hp.value}}"></span>
|
||||||
|
<span class="ability-label ability-margin"> / {{data.secondary.hp.max}}</span>
|
||||||
|
</li>
|
||||||
|
<li class="item flexrow list-item" data-attr-key="hp">
|
||||||
|
<span class="ability-label " name="hp">
|
||||||
|
<h4 class="ability-text-white ability-margin">Effort</h4>
|
||||||
|
</span>
|
||||||
|
<span class="ability-label ability-margin"><input class="input-numeric-short" name="data.secondary.effort.value" value="{{data.secondary.effort.value}}"></span>
|
||||||
|
<span class="ability-label ability-margin"> / {{data.secondary.effort.max}}</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
</ul>
|
<li> </li>
|
||||||
|
|
||||||
|
{{#each saveRolls as |save key|}}
|
||||||
|
<li class="item flexrow list-item" data-attr-key="{{key}}">
|
||||||
|
<img class="sheet-competence-img" src="{{save.img}}" />
|
||||||
|
<span class="ability-label" name="{{key}}">
|
||||||
|
<h4 class="ability-text-white ability-margin">
|
||||||
|
<a class="roll-save ability-margin" data-save-key="{{key}}">{{save.label}} {{save.value}}</a></h4>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
@ -8,10 +8,19 @@
|
|||||||
|
|
||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
|
|
||||||
|
{{#if save}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<span class="roll-dialog-label">{{save.label}} : </span>
|
||||||
|
<span class="roll-dialog-label">{{save.value}}d6</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if ability}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">Ability : </span>
|
<span class="roll-dialog-label">Ability : </span>
|
||||||
<span class="roll-dialog-label">{{ability.value}}d6</span>
|
<span class="roll-dialog-label">{{ability.value}}d6</span>
|
||||||
</div>
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if weapon}}
|
{{#if weapon}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
|