|
|
|
|
@@ -162,12 +162,18 @@ export default class ChatRollResult {
|
|
|
|
|
return undefined
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getActiveActor(roll) {
|
|
|
|
|
return roll.active?.actor ?? (roll.ids?.actorId ? game.actors.get(roll.ids.actorId) : undefined)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async saveChatMessageRoll(chatMessage, savedRoll) {
|
|
|
|
|
await ChatUtility.setMessageData(chatMessage, 'rollData', savedRoll)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
loadChatMessageRoll(chatMessage) {
|
|
|
|
|
return ChatUtility.getMessageData(chatMessage, 'rollData')
|
|
|
|
|
const savedRoll = ChatUtility.getMessageData(chatMessage, 'rollData')
|
|
|
|
|
RollBasicParts.restore(savedRoll)
|
|
|
|
|
return savedRoll
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async updateChatMessage(chatMessage, savedRoll) {
|
|
|
|
|
@@ -184,7 +190,7 @@ export default class ChatRollResult {
|
|
|
|
|
event.preventDefault()
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
const actor = game.actors.get(savedRoll.ids.actorId)
|
|
|
|
|
const actor = this.getActiveActor(savedRoll)
|
|
|
|
|
Misc.doIfOwner(actor, it => it.rollAppelChance(
|
|
|
|
|
() => this.onAppelChanceSuccess(savedRoll, chatMessage),
|
|
|
|
|
() => this.onAppelChanceEchec(savedRoll, chatMessage))
|
|
|
|
|
@@ -193,7 +199,6 @@ export default class ChatRollResult {
|
|
|
|
|
|
|
|
|
|
async onAppelChanceSuccess(savedRoll, chatMessage) {
|
|
|
|
|
const reRoll = foundry.utils.duplicate(savedRoll)
|
|
|
|
|
console.log('onAppelChanceSuccess savedRoll', savedRoll)
|
|
|
|
|
reRoll.type.retry = true
|
|
|
|
|
await this.updateChatMessage(chatMessage, reRoll)
|
|
|
|
|
const callbacks = [ChatUtility.remover(chatMessage)]
|
|
|
|
|
@@ -222,7 +227,7 @@ export default class ChatRollResult {
|
|
|
|
|
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
const actor = game.actors.get(savedRoll.ids.actorId)
|
|
|
|
|
const actor = this.getActiveActor(savedRoll)
|
|
|
|
|
|
|
|
|
|
Misc.doIfOwner(actor, it => it.appelDestinee(async () => {
|
|
|
|
|
const reRoll = foundry.utils.duplicate(savedRoll)
|
|
|
|
|
@@ -235,36 +240,41 @@ export default class ChatRollResult {
|
|
|
|
|
async onClickDefense(event) {
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
RollBasicParts.restore(savedRoll)
|
|
|
|
|
const attackerRoll = savedRoll.attackerRoll
|
|
|
|
|
RollDialog.loadRollData(attackerRoll)
|
|
|
|
|
this.getCombat(attackerRoll)?.defenseV2(attackerRoll,
|
|
|
|
|
[ChatUtility.remover(chatMessage)]
|
|
|
|
|
)
|
|
|
|
|
const actor = this.getActiveActor(savedRoll)
|
|
|
|
|
Misc.doIfOwner(actor, it => {
|
|
|
|
|
const attackerRoll = savedRoll.attackerRoll
|
|
|
|
|
RollDialog.loadRollData(attackerRoll)
|
|
|
|
|
this.getCombat(attackerRoll)?.defenseV2(attackerRoll,
|
|
|
|
|
[ChatUtility.remover(chatMessage)]
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async onClickDefensePossession(event) {
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
await RdDPossessionV2.rollDefensePossession(savedRoll, chatMessage)
|
|
|
|
|
const actor = this.getActiveActor(savedRoll)
|
|
|
|
|
Misc.doIfOwner(actor, it => RdDPossessionV2.rollDefensePossession(savedRoll, chatMessage))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async onClickMarquerPointPossession(event) {
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
RollBasicParts.restore(savedRoll)
|
|
|
|
|
await RdDPossessionV2.onMarquerPointPossession(savedRoll)
|
|
|
|
|
ChatUtility.remover(chatMessage)()
|
|
|
|
|
const actor = this.getActiveActor(savedRoll)
|
|
|
|
|
Misc.doIfOwner(actor, async it => {
|
|
|
|
|
await RdDPossessionV2.onMarquerPointPossession(savedRoll)
|
|
|
|
|
ChatUtility.remover(chatMessage)()
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async onClickEncaissement(event) {
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const isMessageDemande = ChatUtility.getMessageData(chatMessage, 'demande-defense')
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
const attaque = savedRoll.attackerRoll
|
|
|
|
|
const defenderToken = savedRoll.ids.actorTokenId ? canvas.tokens.get(savedRoll.ids.actorTokenId) : undefined
|
|
|
|
|
const defender = defenderToken?.actor ?? game.actors.get(savedRoll.ids.actorId)
|
|
|
|
|
Misc.doIfOwner(defender, async defender => {
|
|
|
|
|
const actor = this.getActiveActor(savedRoll)
|
|
|
|
|
Misc.doIfOwner(actor, async defender => {
|
|
|
|
|
const defenderToken = savedRoll.active.token
|
|
|
|
|
const attaque = savedRoll.attackerRoll
|
|
|
|
|
const attackerToken = savedRoll.ids.opponentTokenId ? canvas.tokens.get(savedRoll.ids.opponentTokenId) : undefined
|
|
|
|
|
const attacker = attackerToken?.actor ?? game.actors.get(savedRoll.ids.opponentId)
|
|
|
|
|
switch (attaque.dmg.mortalite) {
|
|
|
|
|
@@ -290,9 +300,8 @@ export default class ChatRollResult {
|
|
|
|
|
async onClickRecul(event) {
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
// TODO: gestion sur token non liés?
|
|
|
|
|
const defender = game.actors.get(savedRoll.ids.actorId)
|
|
|
|
|
Misc.doIfOwner(defender, async defender => {
|
|
|
|
|
const actor = this.getActiveActor(savedRoll)
|
|
|
|
|
Misc.doIfOwner(actor, async defender => {
|
|
|
|
|
const attacker = game.actors.get(savedRoll.ids.opponentId)
|
|
|
|
|
savedRoll.done.recul = await defender.encaisserRecul(attacker.getForce(), savedRoll.attackerRoll.dmg.dmgArme)
|
|
|
|
|
await this.updateChatMessage(chatMessage, savedRoll)
|
|
|
|
|
@@ -303,42 +312,54 @@ export default class ChatRollResult {
|
|
|
|
|
const choix = event.currentTarget.attributes['data-particuliere'].value
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
savedRoll.particuliere = choix
|
|
|
|
|
savedRoll.particulieres = [RDD_CONFIG.particuliere[choix]]
|
|
|
|
|
await this.updateChatMessage(chatMessage, savedRoll)
|
|
|
|
|
await this.getCombat(savedRoll)?.onAttaqueV2(savedRoll)
|
|
|
|
|
const actor = this.getActiveActor(savedRoll)
|
|
|
|
|
Misc.doIfOwner(actor, async it => {
|
|
|
|
|
savedRoll.particuliere = choix
|
|
|
|
|
savedRoll.particulieres = [RDD_CONFIG.particuliere[choix]]
|
|
|
|
|
await this.updateChatMessage(chatMessage, savedRoll)
|
|
|
|
|
await this.getCombat(savedRoll)?.onAttaqueV2(savedRoll)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async onClickFaireGouter(event) {
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
if (!savedRoll.type.retry) {
|
|
|
|
|
savedRoll.type.retry = true
|
|
|
|
|
await this.updateChatMessage(chatMessage, savedRoll)
|
|
|
|
|
}
|
|
|
|
|
await new RollTypeCuisine().onFaireGouter(savedRoll)
|
|
|
|
|
const actor = this.getActiveActor(savedRoll)
|
|
|
|
|
Misc.doIfOwner(actor, async it => {
|
|
|
|
|
if (!savedRoll.type.retry) {
|
|
|
|
|
savedRoll.type.retry = true
|
|
|
|
|
await this.updateChatMessage(chatMessage, savedRoll)
|
|
|
|
|
}
|
|
|
|
|
await new RollTypeCuisine().onFaireGouter(savedRoll)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
async onClickApprecier(event) {
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
await Apprecier.onClickApprecier(savedRoll)
|
|
|
|
|
Apprecier.onClickApprecier(savedRoll)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async onClickMonteeTMR(event, mode) {
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
if (await new RollTypeMeditation().onMonteeTMR(savedRoll, mode)) {
|
|
|
|
|
savedRoll.done.meditation = true
|
|
|
|
|
await this.updateChatMessage(chatMessage, savedRoll)
|
|
|
|
|
}
|
|
|
|
|
const actor = this.getActiveActor(savedRoll)
|
|
|
|
|
Misc.doIfOwner(actor, async it => {
|
|
|
|
|
if (await new RollTypeMeditation().onMonteeTMR(savedRoll, mode)) {
|
|
|
|
|
savedRoll.done.meditation = true
|
|
|
|
|
await this.updateChatMessage(chatMessage, savedRoll)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async onClickTirerMaladresse(event) {
|
|
|
|
|
const chatMessage = ChatUtility.getChatMessage(event)
|
|
|
|
|
const typeMaladresse = event.currentTarget.attributes['data-maladresse'].value
|
|
|
|
|
const savedRoll = this.loadChatMessageRoll(chatMessage)
|
|
|
|
|
savedRoll.maladresse = await RdDRollTables.getMaladresse({ arme: typeMaladresse == 'avec-arme', toChat: false })
|
|
|
|
|
savedRoll.type.retry = true
|
|
|
|
|
await this.updateChatMessage(chatMessage, savedRoll)
|
|
|
|
|
const actor = this.getActiveActor(savedRoll)
|
|
|
|
|
Misc.doIfOwner(actor, async it => {
|
|
|
|
|
savedRoll.maladresse = await RdDRollTables.getMaladresse({ arme: typeMaladresse == 'avec-arme', toChat: false })
|
|
|
|
|
savedRoll.type.retry = true
|
|
|
|
|
await this.updateChatMessage(chatMessage, savedRoll)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|