Various fixes

This commit is contained in:
LeRatierBretonnien 2023-02-18 23:19:10 +01:00
parent fc9a878f3a
commit 46b129cf81
16 changed files with 88 additions and 79 deletions

View File

@ -44,6 +44,9 @@
"WH.ui.Strength": "Strength",
"WH.ui.Instinct": "Instinct",
"WH.ui.Dexterity": "Dexterity",
"WH.ui.savestr": "Str Save",
"WH.ui.savedex": "Dex Save",
"WH.ui.savemin": "Mind Save",
"WH.ui.Mind": "Mind",
"WH.ui.Type": "Type",
"WH.ui.HitPoints": "Hit Points",
@ -113,6 +116,8 @@
"WH.ui.quantity": "Quantity",
"WH.ui.cost": "Cost",
"WH.ui.details": "Details",
"WH.ui.magicschool": "Magic School",
"WH.ui.providedslot": "Provided slot",
"WH.chat.save": "Save",
"WH.chat.mweaponmalus": "Multiple weapons malus ",

View File

@ -99,7 +99,8 @@ export class WarheroActorSheet extends ActorSheet {
})
html.find('.item-add').click(ev => {
let dataType = $(ev.currentTarget).data("type")
this.actor.createEmbeddedDocuments('Item', [{ name: "NewItem", type: dataType }], { renderSheet: true })
let slotKey = $(ev.currentTarget).data("slot")
this.actor.createEmbeddedDocuments('Item', [{ name: "NewItem", type: dataType, system: { slotlocation: slotKey} }], { renderSheet: true })
})
html.find('.equip-activate').click(ev => {

View File

@ -135,7 +135,7 @@ export class WarheroActor extends Actor {
}
sortPowers() {
let schools = {}
for(let power of this.items) {
for (let power of this.items) {
if (power.type == "power") {
power = duplicate(power)
let school = schools[power.system.magicschool] || []
@ -176,14 +176,16 @@ export class WarheroActor extends Actor {
/* -------------------------------------------- */
buildEquipmentsSlot() {
let containers = {}
for(let slotName in game.system.warhero.config.slotNames) {
for (let slotName in game.system.warhero.config.slotNames) {
let slotDef = game.system.warhero.config.slotNames[slotName]
containers[slotName] = duplicate(slotDef)
containers[slotName].content = this.items.filter(it => (it.type == 'weapon' || it.type == 'armor' || it.type == 'shield'||it.type == 'equipment')
&& it.system.slotlocation == slotName )
containers[slotName].content = this.items.filter(it => (it.type == 'weapon' || it.type == 'armor' || it.type == 'shield' || it.type == 'equipment')
&& it.system.slotlocation == slotName)
let slotUsed = 0
for(let item of containers[slotName].content) {
slotUsed += item.system.slotused * ((item.system.quantity) ? item.system.quantity : 1)
for (let item of containers[slotName].content) {
let q = (item.system.quantity) ? item.system.quantity : 1
containers[slotName].nbslots += (item.system.providedslot?? 0) * q
slotUsed += item.system.slotused * q
}
slotUsed = Math.ceil(slotUsed)
containers[slotName].slotUsed = slotUsed
@ -203,11 +205,11 @@ export class WarheroActor extends Actor {
formula += "+" + this.system.statistics.str.value
}
if (weapon.system.weapontype == "twohanded") {
formula += "+" + Math.floor(this.system.statistics.str.value*1.5)
formula += "+" + Math.floor(this.system.statistics.str.value * 1.5)
}
if (weapon.system.weapontype == "polearm") {
formula += "+" + Math.floor(this.system.statistics.str.value*1)
weapon.damageFormula2Hands = weapon.system.damage2hands + "+" + Math.floor(this.system.statistics.str.value*1.5)
formula += "+" + Math.floor(this.system.statistics.str.value * 1)
weapon.damageFormula2Hands = weapon.system.damage2hands + "+" + Math.floor(this.system.statistics.str.value * 1.5)
}
weapon.damageFormula = formula
}
@ -382,7 +384,7 @@ export class WarheroActor extends Actor {
/* -------------------------------------------- */
async incDecHP(formula) {
let dmgRoll = new Roll(formula+"[warhero-orange]").roll({ async: false })
let dmgRoll = new Roll(formula + "[warhero-orange]").roll({ async: false })
await WarheroUtility.showDiceSoNice(dmgRoll, game.settings.get("core", "rollMode"))
let hp = duplicate(this.system.secondary.hp)
hp.value = Number(hp.value) + Number(dmgRoll.total)
@ -391,7 +393,7 @@ export class WarheroActor extends Actor {
}
/* -------------------------------------------- */
updateCompetency(competency, obj, labelTab) {
for(let key in obj) {
for (let key in obj) {
if (obj[key]) {
//console.log("Parsing", key) //game.system.warhero.config.weaponTypes[key].label)
competency[key] = { enabled: true, label: labelTab[key].label }
@ -401,11 +403,13 @@ export class WarheroActor extends Actor {
getCompetency() {
let myRace = this.getRace()
let myClass = this.getClass()
let competency = { weapons: {}, armors: {}, shields: {}}
if ( myRace.system && myClass.system) {
let competency = { weapons: {}, armors: {}, shields: {} }
if (myRace.system) {
this.updateCompetency(competency.weapons, myRace.system.weapons, game.system.warhero.config.weaponTypes)
this.updateCompetency(competency.armors, myRace.system.armors, game.system.warhero.config.armorTypes)
this.updateCompetency(competency.shields, myRace.system.shields, game.system.warhero.config.shieldTypes)
}
if (myClass.system) {
this.updateCompetency(competency.weapons, myClass.system.weapons, game.system.warhero.config.weaponTypes)
this.updateCompetency(competency.armors, myClass.system.armors, game.system.warhero.config.armorTypes)
this.updateCompetency(competency.shields, myClass.system.shields, game.system.warhero.config.shieldTypes)
@ -596,7 +600,7 @@ export class WarheroActor extends Actor {
/* -------------------------------------------- */
setLevel() {
let xp = this.system.secondary.xp.value
this.system.secondary.xp.level = 1 + Math.floor(xp/10)
this.system.secondary.xp.level = 1 + Math.floor(xp / 10)
}
/* -------------------------------------------- */
computeDRTotal() {
@ -605,7 +609,7 @@ export class WarheroActor extends Actor {
for (let armor of armors) {
dr += armor.system.damagereduction
}
this.system.secondary.drbonustotal.value = this.system.secondary.drbonus.value + dr
this.system.secondary.drbonustotal.value = this.system.secondary.drbonus.value + dr
}
/* -------------------------------------------- */
computeParryBonusTotal() {
@ -614,21 +618,21 @@ export class WarheroActor extends Actor {
for (let shield of shields) {
parry += shield.system.parrybonus
}
this.system.secondary.parrybonustotal.value = this.system.secondary.parrybonus.value + parry
this.system.secondary.parrybonustotal.value = this.system.secondary.parrybonus.value + parry
}
/* -------------------------------------------- */
computeBonusLanguages() {
this.system.secondary.nblanguage.value = Math.floor(this.system.statistics.min.value / 2)
}
/* -------------------------------------------- */
spentMana( mana) {
if ( Number(mana) > this.system.attributes.mana.value) {
spentMana(mana) {
if (Number(mana) > this.system.attributes.mana.value) {
ui.notifications.warn("Not enough Mana points !")
return false
}
this.update({'system.attributes.mana.value': this.system.attributes.mana.value-mana})
this.update({ 'system.attributes.mana.value': this.system.attributes.mana.value - mana })
return true
}
}
/* -------------------------------------------- */
getCommonRollData() {
let rollData = WarheroUtility.getBasicRollData()
@ -647,7 +651,7 @@ export class WarheroActor extends Actor {
let rollData = this.getCommonRollData()
rollData.mode = rollType
rollData.stat = stat
if ( rollKey == "parrybonustotal") {
if (rollKey == "parrybonustotal") {
WarheroUtility.rollParry(rollData)
return
}
@ -661,7 +665,7 @@ export class WarheroActor extends Actor {
rollData.stat = stat
this.startRoll(rollData)
}
/* -------------------------------------------- */
rollWeapon(weaponId) {
let weapon = this.items.get(weaponId)
@ -669,13 +673,13 @@ export class WarheroActor extends Actor {
weapon = duplicate(weapon)
let rollData = this.getCommonRollData()
rollData.mode = "weapon"
if (weapon.system.weapontype ==="shooting" || weapon.system.weapontype ==="throwing") {
if (weapon.system.weapontype === "shooting" || weapon.system.weapontype === "throwing") {
rollData.stat = duplicate(this.system.attributes.txcr)
} else {
rollData.stat = duplicate(this.system.attributes.txcm)
}
rollData.usemWeaponMalus =
rollData.mWeaponMalus = this.system.secondary.malusmultiweapon.value
rollData.mWeaponMalus = this.system.secondary.malusmultiweapon.value
rollData.weapon = weapon
rollData.img = weapon.img
this.startRoll(rollData)
@ -709,7 +713,7 @@ export class WarheroActor extends Actor {
this.startRoll(rollData)
}
}
/* -------------------------------------------- */
async startRoll(rollData) {
this.syncRoll(rollData)

View File

@ -69,12 +69,6 @@ export class WarheroItemSheet extends ItemSheet {
owner: this.document.isOwner,
isGM: game.user.isGM
}
if ( this.object.type == "power") {
formData.level1 = await TextEditor.enrichHTML(this.object.system.level1, {async: true})
formData.level2 = await TextEditor.enrichHTML(this.object.system.level2, {async: true})
formData.level3 = await TextEditor.enrichHTML(this.object.system.level3, {async: true})
formData.level4 = await TextEditor.enrichHTML(this.object.system.level4, {async: true})
}
this.options.editable = !(this.object.origin == "embeddedItem");
console.log("ITEM DATA", formData, this);
return formData;
@ -130,11 +124,6 @@ export class WarheroItemSheet extends ItemSheet {
const item = this.object.options.actor.getOwnedItem(li.data("item-id"));
item.sheet.render(true);
});
html.find('.delete-spec').click(ev => {
this.object.update({ "data.specialisation": [{ name: 'None' }] });
});
html.find('.delete-subitem').click(ev => {
this.deleteSubitem(ev);
});
@ -145,15 +134,6 @@ export class WarheroItemSheet extends ItemSheet {
let itemId = li.data("item-id");
let itemType = li.data("item-type");
});
html.find('.view-subitem').click(ev => {
this.viewSubitem(ev);
});
html.find('.view-spec').click(ev => {
this.manageSpec();
});
}

View File

@ -11,6 +11,7 @@ export const defaultItemImg = {
money: "systems/fvtt-warhero/images/icons/two-coins.svg",
power: "systems/fvtt-warhero/images/icons/magia.webp",
condition: "systems/fvtt-warhero/images/icons/stordenti.webp",
language: "systems/fvtt-warhero/images/icons/linguaggi.webp"
}
/**

View File

@ -73,12 +73,12 @@ Hooks.once("init", async function () {
/* -------------------------------------------- */
function welcomeMessage() {
ChatMessage.create({
/*ChatMessage.create({
user: game.user.id,
whisper: [game.user.id],
content: `<div id="welcome-message-crucible"><span class="rdd-roll-part">
<strong>Welcome to the Warhero RPG.</strong>
` });
` });*/
}
/* -------------------------------------------- */

View File

@ -19,7 +19,16 @@ export class WarheroUtility {
this.defenderStore = {}
WarheroCommands.init();
Handlebars.registerHelper('concat', function () {
var outStr = '';
for (var arg in arguments) {
if (typeof arguments[arg] != 'object') {
outStr += arguments[arg];
}
}
return outStr;
});
Handlebars.registerHelper('count', function (list) {
return list.length;
})
@ -575,7 +584,7 @@ export class WarheroUtility {
}
let diceFormula
if (rollData.weapon.system.weapontype == "special") {
if (rollData.weapon && rollData.weapon.system.weapontype == "special") {
diceFormula = rollData.weapon.system.rollformula
} else {
// ability/save/size => 0

View File

@ -1550,4 +1550,8 @@ form .notes {
}
a.content-link, a.inline-roll {
color: #222;
}
.journal-page-header,
.journal-page-content {
color: #222;
}

View File

@ -107,7 +107,7 @@
"styles": [
"styles/simple.css"
],
"version": "10.0.27",
"version": "10.0.29",
"compatibility": {
"minimum": "10",
"verified": "10",
@ -115,7 +115,7 @@
},
"title": "Warhero RPG",
"manifest": "https://www.uberwald.me/gitea/public/fvtt-warhero/raw/branch/master/system.json",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-warhero/archive/fvtt-warhero-10.0.27.zip",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-warhero/archive/fvtt-warhero-10.0.29.zip",
"url": "https://www.uberwald.me/gitea/public/fvtt-warhero",
"background": "images/ui/warhero_welcome_page.webp",
"id": "fvtt-warhero"

View File

@ -10,7 +10,7 @@
"biodata": {
"class": "",
"age": 0,
"size": 0,
"size": 3,
"weight": "",
"height": "",
"hair": "",
@ -332,6 +332,7 @@
"equipped": false,
"slotused": 1,
"slotlocation": "backpack",
"providedslot": 0,
"description": ""
},
"power": {

View File

@ -103,17 +103,17 @@
</li>
{{/if}}
{{/each}}
{{#each competency.shields as |flag key|}}
{{#if flag}}
{{#each competency.shields as |cdata key|}}
{{#if cdata}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<span class="item-name-label-long">{{localize "WH.ui.shields"}} {{key}}</span>
<span class="item-name-label-long">{{localize "WH.ui.shields"}} {{localize cdata.label}}</span>
</li>
{{/if}}
{{/each}}
{{#each competency.armors as |flag key|}}
{{#if flag}}
{{#each competency.armors as |cdata key|}}
{{#if cdata}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{language._id}}">
<span class="item-name-label-long">{{localize "WH.ui.armors"}} {{key}}</span>
<span class="item-name-label-long">{{localize "WH.ui.armors"}} {{localize cdata.label}}</span>
</li>
{{/if}}
{{/each}}
@ -446,7 +446,7 @@
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="{{itemtype}}" title="Create Item"><i class="fas fa-plus"></i></a>
<a class="item-control item-add" data-type="{{itemtype}}" data-slot="{{slotKey}}" title="Create Item"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each slot.content as |item itemKey|}}
@ -486,20 +486,20 @@
<ul class="item-list alternate-list">
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.origin"}}</label>
<input type="text" class="" name="system.biodata.origin" value="{{data.biodata.origin}}"
<input type="text" class="" name="system.biodata.origin" value="{{system.biodata.origin}}"
data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.age"}}</label>
<input type="text" class="" name="system.biodata.age" value="{{data.biodata.age}}" data-dtype="String" />
<input type="text" class="" name="system.biodata.age" value="{{system.biodata.age}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.height"}}</label>
<input type="text" class="" name="system.biodata.height" value="{{data.biodata.height}}" data-dtype="String" />
<input type="text" class="" name="system.biodata.height" value="{{system.biodata.height}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">{{localize "WH.ui.preferredhand"}}</label>
<input type="text" class="" name="system.biodata.preferredhand" value="{{data.biodata.preferredhand}}"
<input type="text" class="" name="system.biodata.preferredhand" value="{{system.biodata.preferredhand}}"
data-dtype="String" />
</li>
</ul>
@ -508,8 +508,8 @@
<ul>
<li class="flexrow item">
<label class="generic-label">{{localize "WH.ui.size"}}</label>
<select class="competence-base flexrow" type="text" name="system.biodata.size" value="{{data.biodata.size}}" data-dtype="Number">
{{#select data.biodata.size}}
<select class="competence-base flexrow" type="text" name="system.biodata.size" value="{{system.biodata.size}}" data-dtype="Number">
{{#select system.biodata.size}}
<option value="1">Tiny</option>
<option value="2">Small</option>
<option value="3">Medium</option>
@ -521,15 +521,15 @@
</li>
<li class="flexrow item">
<label class="generic-label">{{localize "WH.ui.gender"}}</label>
<input type="text" class="" name="system.biodata.sex" value="{{data.biodata.sex}}" data-dtype="String" />
<input type="text" class="" name="system.biodata.sex" value="{{system.biodata.sex}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.eyes"}}</label>
<input type="text" class="" name="system.biodata.eyes" value="{{data.biodata.eyes}}" data-dtype="String" />
<input type="text" class="" name="system.biodata.eyes" value="{{system.biodata.eyes}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">{{localize "WH.ui.hair"}}</label>
<input type="text" class="" name="system.biodata.hair" value="{{data.biodata.hair}}" data-dtype="String" />
<input type="text" class="" name="system.biodata.hair" value="{{system.biodata.hair}}" data-dtype="String" />
</li>
</ul>
</div>

View File

@ -22,7 +22,7 @@
<ul>
{{#each system.weapons as |weaponflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.weapons"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.weapons"}} {{localize (concat "WH.conf." key)}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.weapons.{{key}}" {{checked weaponflag}}/>
@ -30,7 +30,7 @@
{{/each}}
{{#each system.armors as |armorflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.armors"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.armors"}} {{localize (concat "WH.conf." key "armor")}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.armors.{{key}}" {{checked armorflag}}/>
@ -38,7 +38,7 @@
{{/each}}
{{#each system.shields as |shieldflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.shields"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.shields"}} {{localize (concat "WH.conf." key "shield")}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.shields.{{key}}" {{checked shieldflag}}/>

View File

@ -16,6 +16,10 @@
<div class="tab details" data-group="primary" data-tab="details">
<ul>
<li class="flexrow"><label class="item-field-label-medium ">{{localize "WH.ui.providedslot"}}</label>
<input type="text" class="item-field-label-medium " name="system.providedslot" value="{{system.providedslot}}" data-dtype="Number"/>
</li>
{{> systems/fvtt-warhero/templates/partial-item-common-equipment.html}}
</ul>

View File

@ -64,7 +64,7 @@
</li>
{{#each system.weapons as |weaponflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.weapons"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.weapons"}} {{localize (concat "WH.conf." key)}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.weapons.{{key}}" {{checked weaponflag}}/>
@ -72,7 +72,7 @@
{{/each}}
{{#each system.armors as |armorflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.armors"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.armors"}} {{localize (concat "WH.conf." key "armor")}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.armors.{{key}}" {{checked armorflag}}/>
@ -80,7 +80,7 @@
{{/each}}
{{#each system.shields as |shieldflag key|}}
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.shields"}} {{key}}</label>
<li class="flexrow"><label class="item-field-label-long ">{{localize "WH.ui.shields"}} {{localize (concat "WH.conf." key "shield")}}</label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.shields.{{key}}" {{checked shieldflag}}/>

View File

@ -34,11 +34,11 @@
{{/if}}
{{#if hassave}}
<span class="item-field-label-short" name="{{key}}">
<h4 class="item-field-label-short">
<span class="item-field-label-medium" name="{{key}}">
<h4 class="item-field-label-medium">
<i class="fa-solid fa-dice-d20"></i>
<a class="roll-save stat-margin" data-type="{{path}}" data-key="{{key}}">
{{localize "WH.ui.save"}}
{{localize (concat "WH.ui.save" key)}}
</a>
</h4>
</span>

View File

@ -54,7 +54,7 @@
{{#if stat.istxc}}
<div class="flexrow">
<span class="item-field-label-vlong">{{localize "WH.chat.mweaponmalus}}" ({{mWeaponMalus}})? </span>
<span class="item-field-label-vlong">{{localize "WH.chat.mweaponmalus"}} ({{mWeaponMalus}})? </span>
<span class="item-field-label-medium"><input type="checkbox" id="usemWeaponMalus" name="usemWeaponMalus" {{checked usemWeaponMalus}}/></span>
{{/if}}
</div>