Nope, sorry I didn't. I must admit I did assume at the time changing the text wasnt too ruleset dependant
Printable View
Ok here it is for PFRPG2
Better save descriptions for PFRPG2
(It seems to work but Im not as experienced with FG code as Damned is)
Dax anything that also wants to modify manager_action_save.lua is going to conflict with this extension and vice versa. Youre gonna have to choose which ones do more for you (unlikely this one).
You can try replacing the function applySave(rSource, rOrigin, rAction, sUser) in the other extensions with this one....
Code:function applySave(rSource, rOrigin, rAction, sUser)
local msgShort = {font = "msgfont"};
local msgLong = {font = "msgfont"};
msgShort.text = "Save";
msgLong.text = "Save [" .. rAction.nTotal .. "]";
if rAction.nTarget > 0 then
msgLong.text = msgLong.text .. "[vs. DC " .. rAction.nTarget .. "]";
end
msgShort.text = msgShort.text .. " ->";
msgLong.text = msgLong.text .. " ->";
if rSource then
msgShort.text = msgShort.text .. " [for " .. ActorManager.getDisplayName(rSource) .. "]";
msgLong.text = msgLong.text .. " [for " .. ActorManager.getDisplayName(rSource) .. "]";
end
if rOrigin then
msgShort.text = msgShort.text .. " [vs " .. ActorManager.getDisplayName(rOrigin) .. "]";
msgLong.text = msgLong.text .. " [vs " .. ActorManager.getDisplayName(rOrigin) .. "]";
end
msgShort.icon = "roll_cast";
local sAttack = "";
local bHalfMatch = false;
if rAction.sSaveDesc then
sAttack = rAction.sSaveDesc:match("%[SAVE VS[^]]*%] ([^[]+)") or "";
bHalfMatch = (rAction.sSaveDesc:match("%[HALF ON SAVE%]") ~= nil);
end
rAction.sResult = "";
if rAction.nTarget > 0 then
if rAction.nTotal >= rAction.nTarget then
nSaveDesc = math.random(1, 10);
if nSaveDesc == 1 then
sSaveDesc = " avoids the magic! Successful Save!]"
elseif nSaveDesc == 2 then
sSaveDesc = " dodges the magic! Successful Save!]"
elseif nSaveDesc == 3 then
sSaveDesc = " resists the magic! Successful Save!]"
elseif nSaveDesc == 4 then
sSaveDesc = " seems immune to the magic! Successful Save!]"
elseif nSaveDesc == 5 then
sSaveDesc = " forges through! Successful Save!]"
elseif nSaveDesc == 6 then
sSaveDesc = " defies the magic! Successful Save!]"
elseif nSaveDesc == 7 then
sSaveDesc = " repels the magic! Successful Save!]"
elseif nSaveDesc == 8 then
sSaveDesc = " thwarts the magic! Successful Save!]"
elseif nSaveDesc == 9 then
sSaveDesc = " contends with the magic! Successful Save!]"
elseif nSaveDesc == 10 then
sSaveDesc = " holds out against the magic! Successful Save!]"
end
msgLong.text = msgLong.text .. " [" .. ActorManager.getDisplayName(rSource) .. sSaveDesc;
if rSource then
local bHalfDamage = bHalfMatch;
local bAvoidDamage = false;
if bHalfDamage then
if EffectManager5E.hasEffectCondition(rSource, "Avoidance") then
bAvoidDamage = true;
msgLong.text = msgLong.text .. " [AVOIDANCE]";
elseif EffectManager5E.hasEffectCondition(rSource, "Evasion") then
local sSave = rAction.sDesc:match("%[SAVE%] (%w+)");
if sSave then
sSave = sSave:lower();
end
if sSave == "dexterity" then
bAvoidDamage = true;
msgLong.text = msgLong.text .. " [EVASION]";
end
end
end
if bAvoidDamage then
rAction.sResult = "none";
rAction.bRemoveOnMiss = false;
elseif bHalfDamage then
rAction.sResult = "half_success";
rAction.bRemoveOnMiss = false;
end
if rOrigin and rAction.bRemoveOnMiss then
TargetingManager.removeTarget(ActorManager.getCTNodeName(rOrigin), ActorManager.getCTNodeName(rSource));
end
end
else
nFailDesc = math.random(1, 5);
if nFailDesc == 1 then
sFailDesc = " succumbs! Fails Saving Throw!]"
elseif nFailDesc == 2 then
sFailDesc = " is affected! Fails Saving Throw!]"
elseif nFailDesc == 3 then
sFailDesc = " is struck! Fails Saving Throw!]"
elseif nFailDesc == 4 then
sFailDesc = " fails to resist! Fails Saving Throw!]"
elseif nFailDesc == 5 then
sFailDesc = " wilts! Fails Saving Throw!]"
end
msgLong.text = msgLong.text .. " [" .. ActorManager.getDisplayName(rSource) .. sFailDesc; " Fails Saving Throw!]";
if rSource then
local bHalfDamage = false;
if bHalfMatch then
if EffectManager5E.hasEffectCondition(rSource, "Avoidance") then
bHalfDamage = true;
msgLong.text = msgLong.text .. " [AVOIDANCE]";
elseif EffectManager5E.hasEffectCondition(rSource, "Evasion") then
local sSave = rAction.sDesc:match("%[SAVE%] (%w+)");
if sSave then
sSave = sSave:lower();
end
if sSave == "dexterity" then
bHalfDamage = true;
msgLong.text = msgLong.text .. " [EVASION]";
end
end
end
if bHalfDamage then
rAction.sResult = "half_failure";
end
end
end
end
ActionsManager.outputResult(rAction.bSecret, rSource, rOrigin, msgLong, msgShort);
if rSource and rOrigin then
ActionDamage.setDamageState(rOrigin, rSource, StringManager.trim(sAttack), rAction.sResult);
end
end
Ill create a new thread with 5E and PF2 versions and new descriptors shortly.
In the AD&D ruleset's case I made sure to use a variable that can be easily overridden by an extension if someone wants to tweak it.
I was mostly getting concerned at the already-long string of text... particularly since the name of the target is already noted. Tho that could just be in the 2E ruleset. I'm not familiar with the 5E/PF rulesets extensively.
Fail:
https://i.imgur.com/BDuFTtI.png
Success:
https://i.imgur.com/zAr8rmr.png
The only thing with that Mike is that its still ambiguous whether the tick means good or tick means bad.
But I love the tick and exclamation!
.
this is a great topic, and a overdue needed solution X-D
i think the best solution so far is in the image @celstian post -- minus the exclamation and tick marks (see mockup up below).
i need this for pf1 plz! X-D
Attachment 32760
(btw @celestian, how does one post an image and have it display in post like that, as opposed to a link?)
the extra symbols are just more noise and i think would still not resolve the issue.
usability-wise, the symbols draw too much attention to themselves,
and user would still not quickly determine whether target failed/saved or vice versa without reading text next to it.
personally, i've been trained to look at the last line; and that simple addition of the word "target" is simply genius.
The images are more visual versions than the color of the result text (you'll note failure is purple and success is green text as well). If that is a problem then you'd want to remove that color indicator as well... which for me I'm not willing to do at this time. It and the images I find are quick methods to visually know what happened without having to read the text (which in some cases will be a wall of text if you're forcing a room full of orcs to save).
If someone wants to make an extension to tweak it then it would be in manager_action_save.lua in function applySave(rSource, rOrigin, rAction, sUser).
I can help someone with that if they have issues sorting it out but it's pretty simple.
To do inline images....
https://i.imgur.com/SZoQUrO.gif