Files
macros_foundry/Taverne Ecarlate/roll_moves.js
2026-05-12 18:43:59 +02:00

44 lines
1.4 KiB
JavaScript

%{
const indexRow = +${sameRowIndex()}$
localVars.statToSelect = ${sameRow('movesAttribute')}$
localVars.mod = +${?{Modificateur|0}}$
localVars.roll = ${[1d100]}$
localVars.moveName = entity.system.props.movesTable[indexRow].nameMoves
if(!localVars.statToSelect || localVars.statToSelect === 0) {
localVars.stat = +entity.system.props.physique;
}
if(localVars.statToSelect === 1) {
localVars.stat = +entity.system.props.social;
}
if(localVars.statToSelect === 2) {
localVars.stat = +entity.system.props.mental;
}
const clamp = (value) => Math.min(85, Math.max(15, value));
localVars.partialSuccessThreshold = clamp(localVars.stat + localVars.mod);
localVars.fullSuccessThreshold = clamp(localVars.partialSuccessThreshold - 30);
localVars.isFullSuccess = localVars.roll <= localVars.fullSuccessThreshold;
localVars.isPartialSuccess = localVars.roll <= localVars.partialSuccessThreshold;
localVars.isFailure = localVars.roll > localVars.partialSuccessThreshold;
let resultType = ""
if (localVars.isFullSuccess) resultType = "FullSuccess"
else if (localVars.isPartialSuccess) resultType = "PartialSuccess"
else if (localVars.isFailure) resultType = "Failure"
await game.macros.getName("sendMessageMoves").execute({
name: localVars.moveName,
resultType: resultType,
roll: localVars.roll,
threshold: localVars.fullSuccessThreshold
})
}%