Gestion des progression

This commit is contained in:
2022-10-21 11:14:20 +02:00
parent a100da7cd9
commit 634feabb75
4 changed files with 76 additions and 13 deletions

View File

@@ -124,10 +124,21 @@ export class Imperium5Actor extends Actor {
}
/* -------------------------------------------- */
incDecKarma( value ) {
transferToSource( nbSuccess) {
let karma = duplicate(this.system.karma)
karma.value += value
karma.source += Number(nbSuccess)
let nbKarma = Math.floor(karma.source / 3)
karma.value += nbKarma
karma.source -= nbKarma*3
this.update( { 'system.karma': karma})
}
/* -------------------------------------------- */
decOneKarma( ) {
let karma = duplicate(this.system.karma)
karma.value--
karma.value = Math.max(karma.value, 0)
karma.xp++
this.update( { 'system.karma': karma})
}

View File

@@ -48,6 +48,18 @@ export class Imperium5Utility {
Handlebars.registerHelper('exists', function (val) {
return val != null && val != undefined;
})
Handlebars.registerHelper('for', function (from, to, incr, block) {
var accum = '';
for (var i = from; i < to; i += incr)
accum += block.fn(i);
return accum;
})
Handlebars.registerHelper('times', function(n, block) {
var accum = '';
for(var i = 1; i <= n; ++i)
accum += block.fn(i);
return accum;
})
}
/* -------------------------------------------- */
@@ -123,6 +135,14 @@ export class Imperium5Utility {
rollData.previousMessageId = Imperium5Utility.findChatMessageId(event.currentTarget)
this.applySingularite(rollData, resultIndex)
})
html.on("change", '.transfer-success', event => {
let nbSuccess = event.currentTarget.value
let rollData = this.getRollDataFromMessage(event)
rollData.previousMessageId = Imperium5Utility.findChatMessageId(event.currentTarget)
this.applySuccessTransfer(rollData, nbSuccess)
})
}
/* -------------------------------------------- */
@@ -341,11 +361,11 @@ export class Imperium5Utility {
let actor = game.actors.get(rollData.actorId)
rollData.nbKarma = 0
if (rollData.useKarma) {
actor.incDecKarma(-1)
actor.decOneKarma()
rollData.nbKarma++
}
if (rollData.usedCapacite != "none") {
actor.incDecKarma(-1)
actor.decOneKarma()
rollData.nbKarma++
}
@@ -365,6 +385,7 @@ export class Imperium5Utility {
rollData.resultsPC = duplicate(myRoll.terms[0].results)
// Calcul réussites
this.computeReussites(rollData)
rollData.realSuccessPC = rollData.successPC // To manage source transfer
let msg = await this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData)
@@ -401,6 +422,21 @@ export class Imperium5Utility {
content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData)
})
msg.setFlag("world", "imperium5-roll-data", rollData)
this.removeChatMessageId(rollData.previousMessageId)
}
/* ------------------------- ------------------- */
static async applySuccessTransfer(rollData, nbSuccess) {
let actor = game.actors.get(rollData.actorId)
actor.transferToSource( nbSuccess)
rollData.realSuccessPC -= nbSuccess
rollData.sourceTransfer = nbSuccess
rollData.nbUnitesNarration = Math.max(rollData.realSuccessPC - 1, 0)
let msg = await this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData)
})
msg.setFlag("world", "imperium5-roll-data", rollData)
this.removeChatMessageId(rollData.previousMessageId)
}
/* ------------------------- ------------------- */
@@ -530,6 +566,7 @@ export class Imperium5Utility {
useKarma: false,
usedCapacite: "none",
seuil: 2,
nbSuccessSource: 0,
useSingularites: game.settings.get("fvtt-imperium5", "use-singularite"),
useEntropieReussite: game.settings.get("fvtt-imperium5", "use-entropie-reussite")
}