moo-man / WFRP4e-FoundryVTT

The premiere system for running grim and perilous games of Warhammer Fantasy Role-play in the Foundry VTT environment.
Apache License 2.0
87 stars 51 forks source link

Talent Tests Dialog script, only active when option is selected #2083

Open GregorHak opened 2 months ago

GregorHak commented 2 months ago

Describe the bug Talents: Argumentative, Attractive, Supportive when talent is used always displays in chat massage that "Used unit dice as SL" even when not, because the normal result was better.

obraz

I don't know why, but Talents: Cardsharp, Diceman should work on the same principle, instead when talent is used and only when the number rolled on your units die is greater than rolled SL, you got in chat massage "Cardsharp: X SL" which suggest You, that You can choose to either use your rolled SL, or the number rolled on your units die. obraz

I think that Argumentative, Attractive, Supportive should work like Cardsharp, Diceman, because "you can choose to either use...", so You may not always want to use SL based of the number rolled on your units die. obraz But in most case you wanna use higther result so maybe instead these talents should all work like Argumentative, Attractive, Supportive, but replace this "Used unit dice as SL" message to something like this: "Attractive is appiled, X SL was replace" — where X = your rolled SL. Of course, this messages should only display if Attractive is applied, if not (because your rolled higher SL than the number rolled on your units die) then do not display this message.

Now Argumentative, Attractive, Supportive talent always displays a message, which may leads to confusion, while Cardsharp, Diceman do not automatically replace SL, instead show you info about SL obtained by number rolled on your units die.

Version Numbers Foundry: 11.315 wfrp4e: 7.2.0

GregorHak commented 2 months ago

for context:

Cardsharp

obraz

if (args.test.options.cardsharp && args.test.succeeded)
{

let SL = Math.floor(args.test.target / 10) - Math.floor(args.test.result.roll / 10)
let ones = Number(args.test.result.roll.toString().split("").pop())

if (ones > SL)
   args.test.result.other.push(`<span class="hide-option"><b>${this.effect.name}</b>: ${ones + args.test.successBonus + args.test.slBonus} SL</span>`)
}

Argumentative

obraz

if (args.test.options.useOnesArgumentative && (args.test.result.roll <= game.settings.get("wfrp4e", "automaticSuccess") || args.test.result.roll <= args.test.target))
{

let SL = Math.floor(args.test.target / 10) - Math.floor(args.test.result.roll / 10)
let ones = Number(args.test.result.roll.toString().split("").pop())

if (ones > SL)
    args.test.data.result.SL = "+" + (ones + args.test.successBonus + args.test.slBonus)
   args.test.result.other.push(`<b>${this.effect.name}</b>: Used unit dice as SL`)
}