player requested rolls work now with sockets
This commit is contained in:
parent
fcab44f59d
commit
546800f672
@ -94,35 +94,13 @@ export function helpersRenderChatMessage(message, html, data) {
|
|||||||
)?.id;
|
)?.id;
|
||||||
}
|
}
|
||||||
const result = await actor[rollFunc](rollId, options);
|
const result = await actor[rollFunc](rollId, options);
|
||||||
tokenData.resolved = true;
|
moduleHelpers.socket.executeAsGM(
|
||||||
tokenData.total = result.total;
|
updateRequestRollChat,
|
||||||
if (result.successes == -1) {
|
message._id,
|
||||||
tokenData.icon = '⛝';
|
tokenUuid,
|
||||||
tokenData.resolveClass = 'critFail';
|
result.total,
|
||||||
tokenData.value = 'Critical Failure!';
|
result.successes,
|
||||||
} else if (result.successes == 0) {
|
);
|
||||||
tokenData.icon = '⛒';
|
|
||||||
tokenData.value = 'Failure';
|
|
||||||
tokenData.resolveClass = 'failure';
|
|
||||||
} else if (result.successes == 1) {
|
|
||||||
tokenData.icon = '✓';
|
|
||||||
tokenData.value = 'Success';
|
|
||||||
tokenData.resolveClass = 'success';
|
|
||||||
} else if (result.successes == 2) {
|
|
||||||
tokenData.icon = '✓✓';
|
|
||||||
tokenData.value = `Success and a raise!`;
|
|
||||||
tokenData.resolveClass = 'raise';
|
|
||||||
} else {
|
|
||||||
tokenData.icon = '✓✓';
|
|
||||||
tokenData.value = `Success and ${result.successes - 1} raises!`;
|
|
||||||
tokenData.resolveClass = 'raise';
|
|
||||||
}
|
|
||||||
await message.setFlag('swade-mb-helpers', `rollRequest.tokens.${tokenId}`, tokenData);
|
|
||||||
log('result', result);
|
|
||||||
const newData = message.getFlag('swade-mb-helpers', 'rollRequest');
|
|
||||||
const template = templates['rollRequest/chatcard.html'];
|
|
||||||
const newContent = await foundry.applications.handlebars.renderTemplate(template, newData);
|
|
||||||
await message.update({ content: newContent });
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
buttonSpan.remove();
|
buttonSpan.remove();
|
||||||
@ -131,8 +109,49 @@ export function helpersRenderChatMessage(message, html, data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function helpersRenderChatLog(app, html, data) {
|
export async function updateRequestRollChat(messageId, tokenUuid, total, successes) {
|
||||||
// log('RENDER CHAT LOG', app, html, data);
|
log('Update chat', messageId, tokenUuid, total, successes);
|
||||||
|
const message = game.messages.get(messageId);
|
||||||
|
if (!message) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const token = foundry.utils.fromUuidSync(tokenUuid);
|
||||||
|
const tokenData = {
|
||||||
|
resolved: true,
|
||||||
|
total,
|
||||||
|
};
|
||||||
|
switch (successes) {
|
||||||
|
case -1:
|
||||||
|
tokenData.icon = '⛝';
|
||||||
|
tokenData.resolveClass = 'critFail';
|
||||||
|
tokenData.value = 'Critical Failure!';
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
tokenData.icon = '⛒';
|
||||||
|
tokenData.value = 'Failure';
|
||||||
|
tokenData.resolveClass = 'failure';
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
tokenData.icon = '✓';
|
||||||
|
tokenData.value = 'Success';
|
||||||
|
tokenData.resolveClass = 'success';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
tokenData.icon = '✓✓';
|
||||||
|
tokenData.value = `Success & raise!`;
|
||||||
|
tokenData.resolveClass = 'raise';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
tokenData.icon = '✓✓';
|
||||||
|
tokenData.value = `Success & ${successes - 1} raises!`;
|
||||||
|
tokenData.resolveClass = 'raise';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
await message.setFlag('swade-mb-helpers', `rollRequest.tokens.${token._id}`, tokenData);
|
||||||
|
const newData = message.getFlag('swade-mb-helpers', 'rollRequest');
|
||||||
|
const template = templates['rollRequest/chatcard.html'];
|
||||||
|
const newContent = await foundry.applications.handlebars.renderTemplate(template, newData);
|
||||||
|
await message.update({ content: newContent });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function requestRollFromTokens(tokens, rollType, rollDesc, options = {}) {
|
export async function requestRollFromTokens(tokens, rollType, rollDesc, options = {}) {
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import {
|
|||||||
SwadeVAEbuttons,
|
SwadeVAEbuttons,
|
||||||
updateOwnedToken,
|
updateOwnedToken,
|
||||||
helpersRenderChatMessage,
|
helpersRenderChatMessage,
|
||||||
helpersRenderChatLog,
|
updateRequestRollChat,
|
||||||
} from './helpers.js';
|
} from './helpers.js';
|
||||||
import { preAttackRollModifiers, preDamageRollModifiers, preTraitRollModifiers } from './rollHelpers.js';
|
import { preAttackRollModifiers, preDamageRollModifiers, preTraitRollModifiers } from './rollHelpers.js';
|
||||||
import { log, moduleHelpers } from './globals.js';
|
import { log, moduleHelpers } from './globals.js';
|
||||||
@ -54,7 +54,6 @@ function _checkModule(name) {
|
|||||||
|
|
||||||
Hooks.on('preCreateItem', embeddedHelperHook);
|
Hooks.on('preCreateItem', embeddedHelperHook);
|
||||||
Hooks.on('renderChatMessageHTML', helpersRenderChatMessage);
|
Hooks.on('renderChatMessageHTML', helpersRenderChatMessage);
|
||||||
Hooks.on('renderChatLogHTML', helpersRenderChatLog);
|
|
||||||
Hooks.on('swadePreRollAttribute', preTraitRollModifiers);
|
Hooks.on('swadePreRollAttribute', preTraitRollModifiers);
|
||||||
Hooks.on('swadePreRollSkill', preTraitRollModifiers);
|
Hooks.on('swadePreRollSkill', preTraitRollModifiers);
|
||||||
Hooks.on('swadeCalculateDefaultAttackMods', preAttackRollModifiers);
|
Hooks.on('swadeCalculateDefaultAttackMods', preAttackRollModifiers);
|
||||||
@ -66,6 +65,7 @@ Hooks.on('visual-active-effects.createEffectButtons', SwadeVAEbuttons);
|
|||||||
|
|
||||||
Hooks.once('socketlib.ready', () => {
|
Hooks.once('socketlib.ready', () => {
|
||||||
const _socket = socketlib.registerModule('swade-mb-helpers');
|
const _socket = socketlib.registerModule('swade-mb-helpers');
|
||||||
|
_socket.register('updateRequestRollChat', updateRequestRollChat);
|
||||||
_socket.register('requestTokenRoll', requestTokenRoll);
|
_socket.register('requestTokenRoll', requestTokenRoll);
|
||||||
_socket.register('updateOwnedToken', updateOwnedToken);
|
_socket.register('updateOwnedToken', updateOwnedToken);
|
||||||
_socket.register('deleteToken', deleteToken);
|
_socket.register('deleteToken', deleteToken);
|
||||||
|
|||||||
@ -7,24 +7,28 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Token</th>
|
<th>Token</th>
|
||||||
<th>Result</th>
|
<th colspan="2">Result</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{#each tokens}}
|
{{#each tokens}}
|
||||||
<tr data-token-uuid="{{uuid}}" class="mb-roll-{{resolveClass}}">
|
<tr data-token-uuid="{{uuid}}" class="mb-roll-{{resolveClass}}">
|
||||||
<td>{{name}}</td>
|
<td>{{name}}</td>
|
||||||
<td>
|
{{#unless resolved}}
|
||||||
{{#unless resolved}}
|
<td colspan="2">
|
||||||
<button class="mb-roll-button">Roll</button>
|
<button class="mb-roll-button">Roll</button>
|
||||||
<span class="mb-roll-waiting">Waiting...</span>
|
<span class="mb-roll-waiting">Waiting...</span>
|
||||||
{{/unless}}
|
</td>
|
||||||
{{#if resolved}}
|
{{/unless}}
|
||||||
|
{{#if resolved}}
|
||||||
|
<td>
|
||||||
<span class="mb-roll-total">{{total}}</span>
|
<span class="mb-roll-total">{{total}}</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
<span class="mb-roll-result-icon">{{icon}}</span>
|
<span class="mb-roll-result-icon">{{icon}}</span>
|
||||||
<span class="mb-roll-result">{{value}}</span>
|
<span class="mb-roll-result">{{value}}</span>
|
||||||
{{/if}}
|
|
||||||
</td>
|
</td>
|
||||||
|
{{/if}}
|
||||||
</tr>
|
</tr>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user