forked from public/bol
Compare commits
9 Commits
bol-v11.0.
...
fix-creatu
Author | SHA1 | Date | |
---|---|---|---|
b44250e728 | |||
63c3e24296 | |||
ade88fb54b | |||
f1a3f2df36 | |||
a357c6ddfc | |||
26a6c7fc28 | |||
6fcac36580 | |||
34924b07c0 | |||
66bf299ea4 |
@ -13,7 +13,7 @@ jobs:
|
||||
#- uses: actions/checkout@v3
|
||||
- uses: RouxAntoine/checkout@v3.5.4
|
||||
with:
|
||||
ref: 'master'
|
||||
ref: 'v10'
|
||||
|
||||
# get part of the tag after the `v`
|
||||
- name: Extract tag version number
|
||||
@ -29,7 +29,7 @@ jobs:
|
||||
env:
|
||||
version: ${{steps.get_version.outputs.version-without-v}}
|
||||
url: https://www.uberwald.me/gitea/public/bol
|
||||
manifest: https://www.uberwald.me/gitea/public/bol/releases/latest/module.json
|
||||
manifest: https://www.uberwald.me/gitea/public/bol/releases/latest/system.json
|
||||
download: https://www.uberwald.me/gitea/public/bol/releases/download/${{github.event.release.tag_name}}/bol.zip
|
||||
|
||||
# Create a zip file with all files required by the module to add to the release
|
||||
@ -37,7 +37,7 @@ jobs:
|
||||
apt update -y
|
||||
apt install -y zip
|
||||
|
||||
- run: zip -r ./fvtt-ecryme.zip system.json template.json README.md LICENSE.txt fonts/ images/ lang/ modules/ packs/ styles/ templates/ translated/
|
||||
- run: zip -r ./bol.zip system.json template.json README.md LICENSE assets/ css/ fonts/ images/ lang/ module/ packs/ styles/ templates/ ui/
|
||||
|
||||
- name: setup go
|
||||
uses: https://github.com/actions/setup-go@v4
|
||||
@ -49,6 +49,6 @@ jobs:
|
||||
uses: https://gitea.com/actions/release-action@main
|
||||
with:
|
||||
files: |-
|
||||
./fvtt-ecryme.zip
|
||||
./bol.zip
|
||||
system.json
|
||||
api_key: '${{secrets.RELEASE_TOKEN_UBERWALD}}'
|
||||
|
@ -1,3 +1,7 @@
|
||||
# v11.0.8
|
||||
|
||||
- Correction sur les malus de bouclier (blocage)
|
||||
- Corrrection sur le malus d'init des boucliers qui était mal affiché dans la fiche d'item
|
||||
# v10.4.0
|
||||
|
||||
- Ajout de la gestion d'effets
|
||||
|
@ -61,7 +61,7 @@ export class BoLActor extends Actor {
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getInitiativeMalus() {
|
||||
if ( this.type === 'encounter' && (this.chartype == "adversary" || this.chartype == "tough")) {
|
||||
if (this.type === 'encounter' && (this.chartype == "adversary" || this.chartype == "tough")) {
|
||||
return this.system.aptitudes.init.value
|
||||
}
|
||||
return 0
|
||||
@ -103,12 +103,12 @@ export class BoLActor extends Actor {
|
||||
let newVitality = 10 + this.system.attributes.vigor.value + this.system.resources.hp.bonus
|
||||
if (this.system.resources.hp.max != newVitality) {
|
||||
let actor = this
|
||||
setTimeout( function() { actor.update({ 'system.resources.hp.max': newVitality }) }, 800 )
|
||||
setTimeout(function () { actor.update({ 'system.resources.hp.max': newVitality }) }, 800)
|
||||
}
|
||||
let newPower = 10 + this.system.attributes.mind.value + this.system.resources.power.bonus
|
||||
if (this.system.resources.power.max != newPower) {
|
||||
let actor = this
|
||||
setTimeout( function() { actor.update({ 'system.resources.power.max': newPower }) }, 800 )
|
||||
setTimeout(function () { actor.update({ 'system.resources.power.max': newPower }) }, 800)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -121,7 +121,7 @@ export class BoLActor extends Actor {
|
||||
super.prepareDerivedData()
|
||||
if (this.id) {
|
||||
this.updateResourcesData()
|
||||
this.manageHealthState()
|
||||
this.manageHealthState()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -130,16 +130,16 @@ export class BoLActor extends Actor {
|
||||
get details() {
|
||||
return this.system.details
|
||||
}
|
||||
addEffectModifiers( myList, dataPath) {
|
||||
addEffectModifiers(myList, dataPath) {
|
||||
for (let attr of myList) {
|
||||
attr.numModifier = 0
|
||||
attr.diceModifier = ""
|
||||
let effects = this.items.filter( i => i.type === "feature" && i.system.subtype === "boleffect" && i.system.properties.identifier == dataPath+attr.key)
|
||||
let effects = this.items.filter(i => i.type === "feature" && i.system.subtype === "boleffect" && i.system.properties.identifier == dataPath + attr.key)
|
||||
for (let effect of effects) {
|
||||
if ( Number(effect.system.properties.modifier)) {
|
||||
if (Number(effect.system.properties.modifier)) {
|
||||
attr.numModifier += Number(effect.system.properties.modifier)
|
||||
} else {
|
||||
attr.diceModifier += "+"+effect.system.properties.modifier
|
||||
attr.diceModifier += "+" + effect.system.properties.modifier
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -523,16 +523,16 @@ export class BoLActor extends Actor {
|
||||
}
|
||||
if (rollData.horoscopeType == "major") {
|
||||
let actorHoroscope = this
|
||||
if(rollData.targetId) {
|
||||
if (rollData.targetId) {
|
||||
let token = game.scenes.current.tokens.get(rollData.targetId)
|
||||
actorHoroscope = token.actor
|
||||
actorHoroscope = token.actor
|
||||
}
|
||||
if (rollData.isSuccess) {
|
||||
actorHoroscope.addHeroPoints(1)
|
||||
} else {
|
||||
actorHoroscope.subHeroPoints(1)
|
||||
}
|
||||
rollData.horoscopeName = actorHoroscope.name
|
||||
rollData.horoscopeName = actorHoroscope.name
|
||||
}
|
||||
if (rollData.horoscopeType == "majorgroup") {
|
||||
let rID = randomID(16)
|
||||
@ -607,16 +607,18 @@ export class BoLActor extends Actor {
|
||||
|
||||
/*-------------------------------------------- */
|
||||
heroReroll() {
|
||||
if (this.type == 'character') {
|
||||
if (this.type == 'character' || this.system.villainy == 'adversary') {
|
||||
return this.system.resources.hero.value > 0;
|
||||
} else {
|
||||
if (this.system.villainy == 'adversary') {
|
||||
return this.system.resources.hero.value > 0;
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/*-------------------------------------------- */
|
||||
getHeroPoints() {
|
||||
if (this.type == 'character' || this.system.villainy == 'adversary') {
|
||||
return this.system.resources.hero.value
|
||||
}
|
||||
return 0
|
||||
}
|
||||
/*-------------------------------------------- */
|
||||
getResourcesFromType() {
|
||||
let resources = {};
|
||||
@ -842,7 +844,7 @@ export class BoLActor extends Actor {
|
||||
let msg = await ChatMessage.create({
|
||||
alias: this.name,
|
||||
whisper: BoLUtility.getWhisperRecipientsAndGMs(this.name),
|
||||
content: game.i18n.format( "BOL.chat.inforecup", {name: this.name, recupHP: recupHP} )
|
||||
content: game.i18n.format("BOL.chat.inforecup", { name: this.name, recupHP: recupHP })
|
||||
})
|
||||
}
|
||||
|
||||
@ -860,12 +862,12 @@ export class BoLActor extends Actor {
|
||||
}
|
||||
/*-------------------------------------------- */
|
||||
checkNumeric(myObject) {
|
||||
if ( myObject) {
|
||||
if (myObject) {
|
||||
for (let key in myObject) {
|
||||
if ( myObject[key].value === null ) {
|
||||
if (myObject[key].value === null) {
|
||||
myObject[key].value = 0
|
||||
}
|
||||
if ( myObject[key].value === NaN ) {
|
||||
if (myObject[key].value === NaN) {
|
||||
myObject[key].value = 0
|
||||
}
|
||||
}
|
||||
@ -893,7 +895,7 @@ export class BoLActor extends Actor {
|
||||
fvttInit = 5
|
||||
if (!rollData) {
|
||||
if (isCombat) {
|
||||
if (game.user.isGM ) {
|
||||
if (game.user.isGM) {
|
||||
if (this.hasPlayerOwner) {
|
||||
game.socket.emit("system.bol", { name: "msg_request_init_roll", data: { actorId: this.id, combatData } })
|
||||
} else {
|
||||
@ -949,7 +951,7 @@ export class BoLActor extends Actor {
|
||||
/*-------------------------------------------- */
|
||||
incDecResources(target, value) {
|
||||
let newValue = this.system.resources[target].value + value
|
||||
this.update({ [`system.resources.${target}.value`]: newValue })
|
||||
this.update({ [`system.resources.${target}.value`]: newValue })
|
||||
}
|
||||
/*-------------------------------------------- */
|
||||
async sufferDamage(damage) {
|
||||
|
@ -491,6 +491,7 @@ export class BoLRoll {
|
||||
if (defender) { // If target is selected
|
||||
rollData.defence = defender.defenseValue
|
||||
rollData.armorMalus = defender.armorMalusValue
|
||||
rollData.defenderHeroPoints = defender.getHeroPoints()
|
||||
rollData.shieldBlock = 'none'
|
||||
let shields = defender.shields
|
||||
//console.log("Defender stats", defender)
|
||||
@ -578,7 +579,7 @@ export class BoLRoll {
|
||||
const isMalus = (rollData.bmDice < 0)
|
||||
|
||||
let rollbase = rollData.attrValue + rollData.aptValue
|
||||
if (rollData.weapon && rollData.weapon.system.properties.onlymodifier) {
|
||||
if (rollData.weapon?.system.properties.onlymodifier) {
|
||||
rollbase = 0
|
||||
}
|
||||
let diceData = BoLUtility.getDiceData()
|
||||
|
@ -611,6 +611,7 @@ export class BoLUtility {
|
||||
attackId: rollData.id,
|
||||
attacker: rollData.attacker,
|
||||
defender: defender,
|
||||
defenderHeroPoints:defender.getHeroPoints(),
|
||||
defenderWeapons: defenderWeapons,
|
||||
damageTotal: rollData.damageTotal,
|
||||
damagesIgnoresArmor: rollData.damagesIgnoresArmor,
|
||||
|
File diff suppressed because one or more lines are too long
@ -14,10 +14,10 @@
|
||||
],
|
||||
"url": "https://www.uberwald.me/gitea/public/bol",
|
||||
"license": "LICENSE.txt",
|
||||
"version": "11.0.7",
|
||||
"version": "11.0.14",
|
||||
"compatibility": {
|
||||
"minimum": "10",
|
||||
"maximum": "11"
|
||||
"verified": "11"
|
||||
},
|
||||
"esmodules": [
|
||||
"module/bol.js"
|
||||
@ -202,7 +202,7 @@
|
||||
],
|
||||
"socket": true,
|
||||
"manifest": "https://www.uberwald.me/gitea/public/bol/raw/v10/system.json",
|
||||
"download": "https://www.uberwald.me/gitea/public/bol/archive/bol-v11.0.7.zip",
|
||||
"download": "https://www.uberwald.me/gitea/public/bol/archive/bol-v11.0.14.zip",
|
||||
"background": "systems/bol/ui/page_accueil.webp",
|
||||
"gridDistance": 1.5,
|
||||
"gridUnits": "m",
|
||||
|
@ -8,14 +8,12 @@
|
||||
<button class="damage-handling" data-defense-mode="damage-with-armor" data-attack-id="{{attackId}}">{{localize "BOL.chat.witharmor"}}</button>
|
||||
<button class="damage-handling" data-defense-mode="damage-without-armor" data-attack--id="{{attackId}}">{{localize "BOL.chat.withoutarmor"}}</button>
|
||||
|
||||
{{#if isHeroAdversary}}
|
||||
{{#if (gt defender.system.resources.hero.value 0)}}
|
||||
<button class="damage-handling" data-defense-mode="hero-reduce-damage" data-attack-id="{{attackId}}">{{localize "BOL.chat.shakeoff"}}</button>
|
||||
{{#if (gt defenderHeroPoints 0)}}
|
||||
<button class="damage-handling" data-defense-mode="hero-reduce-damage" data-attack-id="{{attackId}}">{{localize "BOL.chat.shakeoff"}}</button>
|
||||
|
||||
{{#each defenderWeapons as |weapon idx|}}
|
||||
<button class="damage-handling" data-defense-mode="hero-in-extremis" data-attack-id="{{@root.attackId}}" data-weapon-id="{{weapon._id}}">{{localize "BOL.chat.splinteredshield" name=weapon.name}}</button>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
{{#each defenderWeapons as |weapon idx|}}
|
||||
<button class="damage-handling" data-defense-mode="hero-in-extremis" data-attack-id="{{@root.attackId}}" data-weapon-id="{{weapon._id}}">{{localize "BOL.chat.splinteredshield" name=weapon.name}}</button>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
|
||||
<button class="damage-handling" data-defense-mode="damage-not-applied" data-attack-id="{{attackId}}">{{localize "BOL.chat.nodamage"}}</button>
|
||||
|
Reference in New Issue
Block a user