{{!log "chat-message" this}} {{!log "rollTarget" rollTarget}} {{!log "rollData" rollData}}
{{actingCharName}}
{{upperFirst rollName}}
{{#if (match rollType "attack")}}
Attack Roll
{{/if}} {{#if badResult}}
{{localize "PRISMRPG.Label.otherResult"}}: {{badResult}}
{{/if}}
{{#if rollTarget.weapon}}
{{rollTarget.weapon.name}} {{#if rollTarget.weapon.system.isImplement}} Implement {{/if}} {{#if rollData.attackAttribute}} ({{#if (eq rollData.attackAttribute "str")}}Strength{{else}}Dexterity{{/if}}) {{/if}}
{{#if rollTarget.weapon.system.weaponGroup}}
{{rollTarget.weapon.system.weaponGroup}}
{{/if}} {{#if rollTarget.weapon.system.apc}}
{{rollTarget.weapon.system.apc}} APC
{{/if}} {{#if rollTarget.weapon.system.damage}}
{{rollTarget.weapon.system.damage}}
{{/if}} {{#if rollTarget.weapon.system.damageType}}
{{#if rollTarget.weapon.system.damageType.piercing}}P{{/if}}{{#if rollTarget.weapon.system.damageType.bludgeoning}}{{#if rollTarget.weapon.system.damageType.piercing}}/{{/if}}B{{/if}}{{#if rollTarget.weapon.system.damageType.slashing}}{{#if (or rollTarget.weapon.system.damageType.piercing rollTarget.weapon.system.damageType.bludgeoning)}}/{{/if}}S{{/if}}
{{/if}} {{#if (or (gt rollTarget.weapon.system.shortRange 0) (gt rollTarget.weapon.system.longRange 0))}}
{{#if (gt rollTarget.weapon.system.shortRange 0)}}{{rollTarget.weapon.system.shortRange}}{{/if}}{{#if (and (gt rollTarget.weapon.system.shortRange 0) (gt rollTarget.weapon.system.longRange 0))}}/{{/if}}{{#if (gt rollTarget.weapon.system.longRange 0)}}{{rollTarget.weapon.system.longRange}}{{/if}}ft
{{/if}} {{#if (gt rollTarget.weapon.system.reloadAPC 0)}}
Reload {{rollTarget.weapon.system.reloadAPC}}
{{/if}}
{{/if}} {{#if (eq rollType "spell-cast")}}
Spell Cast {{#if (gt rollData.upcastLevel 0)}} +{{rollData.upcastLevel}} Levels {{/if}}
{{#if rollData.mentalCharacteristic}}
{{rollData.mentalCharacteristic}} ({{rollData.mentalCharValue}})
{{/if}}
{{rollData.totalManaCost}} Mana
{{rollData.totalAPC}} APC
{{#if (gt rollData.manaUpkeep 0)}}
{{rollData.manaUpkeep}}/round
{{/if}}
{{/if}} {{#if rollData.letItFly}}
Let It Fly!
{{/if}} {{#if rollData.pointBlank}}
Point Blank
{{/if}} {{#if rollData.beyondSkill}}
Beyond Skill Range
{{/if}} {{#if (and rollData.attackerAim (ne rollData.attackerAim "0"))}}
Aiming: {{rollData.attackerAim}}
{{/if}}
{{titleFormula}}
{{#if (eq rollType "save")}} {{#if rollTarget.abilityModifier}}
Ability Mod: {{#if (gt rollTarget.abilityModifier 0)}}+{{/if}}{{rollTarget.abilityModifier}} Save Bonus: {{#if (gt rollTarget.saveProficiency 0)}}+{{/if}}{{rollTarget.saveProficiency}}
{{/if}} {{/if}} {{#each diceResults as |result|}}
{{result.dice}}: {{result.value}}
{{/each}} {{#if (eq rollType "weapon-attack")}} {{/if}}
{{#unless isPrivate}}
Result {{total}}
{{#if D30result}}
D30: {{D30result}}
{{/if}}
{{/unless}} {{#if isSave}}
{{#if isPrivate}} ? {{else}} {{#if (eq resultType "success")}} {{localize "PRISMRPG.Roll.success"}} {{else}} {{localize "PRISMRPG.Roll.failure"}} {{/if}} {{/if}}
{{/if}} {{#if isResource}}
{{#if isPrivate}} ? {{else}} {{#if (eq resultType "success")}} {{localize "PRISMRPG.Roll.success"}} {{else}} {{localize "PRISMRPG.Roll.failure"}}{{#if isFailure}} ({{localize "PRISMRPG.Roll.resourceLost"}}){{/if}} {{/if}} {{/if}}
{{/if}} {{#if isDamage}} {{#if (and isGM hasTarget)}}
{{{localize "PRISMRPG.Roll.displayArmor" targetName=targetName targetArmor=targetArmor realDamage=realDamage}}}
{{/if}} {{/if}}