Thread: Hiding die rolls
-
March 21st, 2020, 22:15 #1
Hiding die rolls
Ok, I think I'm losing my mind.
I knocked out a quick extension for my home game to hide initiaitive and insight rolls from the players.
I'm sure it was working, but as of last week it's not hiding the rolls, they are visible to all.
I basically added the following to the initiative function
rRoll.bSecret = true;The script is posted below, what have I done wrong ?
rRoll.bTower = true
Code:function onInit() ActionsManager.registerModHandler("skill", modRoll); ActionsManager.registerModHandler("init", HideInit); end function modRoll(rSource, rTarget, rRoll) local aAddDesc = {}; local aAddDice = {}; local nAddMod = 0; local bADV = false; local bDIS = false; if rRoll.sDesc:match(" %[ADV%]") then bADV = true; rRoll.sDesc = rRoll.sDesc:gsub(" %[ADV%]", ""); end if rRoll.sDesc:match(" %[DIS%]") then bDIS = true; rRoll.sDesc = rRoll.sDesc:gsub(" %[DIS%]", ""); end if rSource then local bEffects = false; -- Get ability used local sActionStat = nil; local sAbility = string.match(rRoll.sDesc, "%[CHECK%] (%w+)"); local sSkill = StringManager.trim(string.match(rRoll.sDesc, "%[SKILL%] ([^[]+)")); if not sAbility and sSkill then sAbility = string.match(rRoll.sDesc, "%[MOD:(%w+)%]"); if sAbility then sAbility = DataCommon.ability_stol[sAbility]; else local sSkillLower = sSkill:lower(); if sSkillLower=="insight" then rRoll.bSecret = true; rRoll.bTower = true end for k, v in pairs(DataCommon.skilldata) do if k:lower() == sSkillLower then sAbility = v.stat; end end end end if sAbility then sAbility = string.lower(sAbility); end -- Build filters local aCheckFilter = {}; if sAbility then table.insert(aCheckFilter, sAbility); end local aSkillFilter = {}; if sSkill then table.insert(aSkillFilter, sSkill:lower()); end -- Get roll effect modifiers local nEffectCount; aAddDice, nAddMod, nEffectCount = EffectManager5E.getEffectsBonus(rSource, {"CHECK"}, false, aCheckFilter); if (nEffectCount > 0) then bEffects = true; end local aSkillAddDice, nSkillAddMod, nSkillEffectCount = EffectManager5E.getEffectsBonus(rSource, {"SKILL"}, false, aSkillFilter); if (nSkillEffectCount > 0) then bEffects = true; for _,v in ipairs(aSkillAddDice) do table.insert(aAddDice, v); end nAddMod = nAddMod + nSkillAddMod; end -- Get condition modifiers if EffectManager5E.hasEffectCondition(rSource, "ADVSKILL") then bADV = true; bEffects = true; elseif #(EffectManager5E.getEffectsByType(rSource, "ADVSKILL", aSkillFilter)) > 0 then bADV = true; bEffects = true; elseif EffectManager5E.hasEffectCondition(rSource, "ADVCHK") then bADV = true; bEffects = true; elseif #(EffectManager5E.getEffectsByType(rSource, "ADVCHK", aCheckFilter)) > 0 then bADV = true; bEffects = true; end if EffectManager5E.hasEffectCondition(rSource, "DISSKILL") then bDIS = true; bEffects = true; elseif #(EffectManager5E.getEffectsByType(rSource, "DISSKILL", aSkillFilter)) > 0 then bDIS = true; bEffects = true; elseif EffectManager5E.hasEffectCondition(rSource, "DISCHK") then bDIS = true; bEffects = true; elseif #(EffectManager5E.getEffectsByType(rSource, "DISCHK", aCheckFilter)) > 0 then bDIS = true; bEffects = true; end if EffectManager5E.hasEffectCondition(rSource, "Frightened") then bDIS = true; bEffects = true; end if EffectManager5E.hasEffectCondition(rSource, "Intoxicated") then bDIS = true; bEffects = true; end if EffectManager5E.hasEffectCondition(rSource, "Poisoned") then bDIS = true; bEffects = true; end if StringManager.contains({ "strength", "dexterity", "constitution" }, sAbility) then if EffectManager5E.hasEffectCondition(rSource, "Encumbered") then bEffects = true; bDIS = true; end end -- Get ability modifiers local nBonusStat, nBonusEffects = ActorManager2.getAbilityEffectsBonus(rSource, sAbility); if nBonusEffects > 0 then bEffects = true; nAddMod = nAddMod + nBonusStat; end -- Get exhaustion modifiers local nExhaustMod, nExhaustCount = EffectManager5E.getEffectsBonus(rSource, {"EXHAUSTION"}, true); if nExhaustCount > 0 then bEffects = true; if nExhaustMod >= 1 then bDIS = true; end end -- If effects happened, then add note if bEffects then local sEffects = ""; local sMod = StringManager.convertDiceToString(aAddDice, nAddMod, true); if sMod ~= "" then sEffects = "[" .. Interface.getString("effects_tag") .. " " .. sMod .. "]"; else sEffects = "[" .. Interface.getString("effects_tag") .. "]"; end table.insert(aAddDesc, sEffects); end end if #aAddDesc > 0 then rRoll.sDesc = rRoll.sDesc .. " " .. table.concat(aAddDesc, " "); end ActionsManager2.encodeDesktopMods(rRoll); for _,vDie in ipairs(aAddDice) do if vDie:sub(1,1) == "-" then table.insert(rRoll.aDice, "-p" .. vDie:sub(3)); else table.insert(rRoll.aDice, "p" .. vDie:sub(2)); end end rRoll.nMod = rRoll.nMod + nAddMod; ActionsManager2.encodeAdvantage(rRoll, bADV, bDIS); end function HideInit (rSource, rTarget, rRoll) Debug.console("rRoll",rRoll) local bADV = false; local bDIS = false; if rRoll.sDesc:match(" %[ADV%]") then bADV = true; rRoll.sDesc = rRoll.sDesc:gsub(" %[ADV%]", ""); end if rRoll.sDesc:match(" %[DIS%]") then bDIS = true; rRoll.sDesc = rRoll.sDesc:gsub(" %[DIS%]", ""); end if rSource then local bEffects, aEffectDice, nEffectMod, bEffectADV, bEffectDIS = ActionInit.getEffectAdjustments(rSource); if bEffects then for _,vDie in ipairs(aEffectDice) do if vDie:sub(1,1) == "-" then table.insert(rRoll.aDice, "-p" .. vDie:sub(3)); else table.insert(rRoll.aDice, "p" .. vDie:sub(2)); end end rRoll.nMod = rRoll.nMod + nEffectMod; if bEffectADV then bADV = true; end if bEffectDIS then bDIS = true; end local sEffects = ""; local sMod = StringManager.convertDiceToString(aEffectDice, nEffectMod, true); if sMod ~= "" then sEffects = "[" .. Interface.getString("effects_tag") .. " " .. sMod .. "]"; else sEffects = "[" .. Interface.getString("effects_tag") .. "]"; end rRoll.sDesc = rRoll.sDesc .. " " .. sEffects; end end rRoll.bSecret = true; rRoll.bTower = true ActionsManager2.encodeDesktopMods(rRoll); ActionsManager2.encodeAdvantage(rRoll, bADV, bDIS); end
*Edit* I'm pretty confident the above code was working up until the latest update to Fantasy Grounds, maybe something got changed in the way the dice tower operates?Last edited by Stv; March 22nd, 2020 at 12:35.
-
March 26th, 2020, 19:46 #2
Just double checked with my DM, and he confirmed that the above was working previously
Any chance a dev can take a look and see if anything has been changed recently regarding tower rolls?
Cheers, Steve.
-
March 26th, 2020, 19:54 #3
Supreme Deity
- Join Date
- Mar 2007
- Posts
- 20,416
We are currently swamped with getting FGU stabilized right now; so hopefully one of the community devs can help, or you'll have to hit me up in a few weeks when I have time to look at things like this again.
Regards,
JPG
-
March 26th, 2020, 19:56 #4
No worries Moon, thanks for the reply.
Keep bashing on getting FGU ready, we all want that ready as soon as possible
Cheers, Steve.
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks