Joshua Stream Pre
  1. #1

    Join Date
    Sep 2017
    Location
    France (Gard)
    Posts
    44

    Custom action - using the modifier stack to adjust difficulty?

    Hello,
    I created in ext to CoreRPG Vermine RPG

    I want add difficulty to modifier in the Box Modifier

    exp : Add +1 in box modifier add +1 to difficulty (base Difficulty 5 +1 = 6) wiew image

    Image1.jpg

    Manager_action_ability
    --
    -- Please see the license.html file included with this distribution for
    -- attribution and copyright information.
    --

    function onInit()
    CustomDiceManager.add_roll_type("vermine", performAction, onLanded, true, "all");
    end

    function getDieMax(sType)
    Debug.console("getDieMax: ", sType);
    local sDie = string.match(sType, "d(%d+)");
    if tonumber(sDie) > 1000 then
    tempmax = tonumber(sDie);
    while tempmax > 20 do
    tempmax = tempmax - 1000;
    end
    else tempmax = tonumber(sDie);
    end
    max = tempmax;
    return max;
    end

    function performRoll(draginfo, rActor, nSkillLev, sAbilityStat, bSecretRoll)
    local rRoll = { };
    rRoll.sType = "vermine";
    rRoll.aDice = { };
    rRoll.nMod = 0;
    rRoll.nSkillLev = nSkillLev;
    rRoll.sDesc = "";
    rRoll.sDesc = rRoll.sDesc .. " " .. StringManager.capitalize(sAbilityStat);
    local count = nSkillLev;
    Debug.console("count:", count);

    while count > 0 do
    table.insert(rRoll.aDice, "d10");
    count = count - 1;

    end
    rRoll.bSecret = bSecretRoll;
    ActionsManager.performAction(draginfo, rActor, rRoll);
    end

    function initLastDice(aDice)
    aSavedDice = {};
    for i , v in ipairs (aDice) do
    aSavedDice[i] = { type=v.type, result=0, exploded=true };
    end
    return aSavedDice;
    end

    function onLanded(rSource, rTarget, rRoll, nSkillLev)
    Debug.console("onLanded: ", rSource, rTarget, rRoll);

    if not nSuccesses then nSuccesses = 0;
    end
    if not nFails then nFails = 0;
    end

    local nSuccessLevel = 5;
    rRoll.nSuccessLevel = nSuccessLevel;

    for i , v in ipairs (rRoll.aDice) do
    if rRoll.aDice[i].result == 10 then
    nSuccesses = nSuccesses + 1;
    elseif rRoll.aDice[i].result >= nSuccessLevel then
    nSuccesses = nSuccesses + 1;
    elseif rRoll.aDice[i].result < nSuccessLevel then
    nFails = nFails + 1;
    end
    end


    rRoll.nFails = nFails;
    rRoll.nSuccesses = nSuccesses;
    Debug.console("nSuccesses1: ", nSuccesses, " nFails1: ", nFails, "nSuccessLevel1:", nSuccessLevel);

    local rMessage = ActionsManager.createActionMessage(rSource, rRoll);

    rMessage = createChatMessage(rSource, rRoll, sDesc1);
    rMessage.type = "dice";
    rMessage.text = rMessage.text .. "\nDiff = ".. rRoll.nSuccessLevel;
    rMessage.text = rMessage.text .. "\nSucces: " .. rRoll.nSuccesses;
    if nSuccesses == 0 then
    rMessage.text = rMessage.text .. "\n[Echec]";
    end
    Comm.deliverChatMessage(rMessage);

    nSuccesses = nil;
    nFails = nil;
    end

    function createChatMessage(rSource, rRoll)
    local rMessage = ActionsManager.createActionMessage(rSource, rRoll);
    rMessage.dicedisplay = 0;


    return rMessage;
    end

    Attribute
    exp
    <number_charabilityscore name="vigueur" source="stats.vigueur.core">
    <anchored to="vig" position="insidetopleft" offset="9,6" height="20" width="20" />
    <script>
    function action(draginfo)
    local nodeWin = window.getDatabaseNode();
    if nodeWin then
    local rActor = ActorManager.getActor("pc", nodeWin.getChild("..."));
    local nAttribLev = getValue();
    nAttribLev = nAttribLev + (DB.getValue(nodeWin, "stats." .. self.target[1] .. ".mod", 0));
    ActionAbility.performRoll(draginfo, rActor, nAttribLev, self.target[1]);
    end
    end

    function onDragStart(button, x, y, draginfo)
    return action(draginfo);
    end

    function onDoubleClick(x,y)
    return action();
    end
    </script>
    <target>vigueur</target>
    </number_charabilityscore>
    Last edited by meguido; March 31st, 2020 at 10:31.

  2. #2
    Trenloe's Avatar
    Join Date
    May 2011
    Location
    Newcastle, UK (for a bit)
    Posts
    26,084
    I've moved this to a new thread.

    Essentially you need to change the nSuccessLevel in the onLanded function to be adjusted by the value of the modifier stack.

    The function ModifierStack.getSum() will return the current total in the modifier stack. So you can use this to adjust the nSuccessLevel value.

    There are other functions available in the ModifierStack script package - such as Reset() which can be used to clear the modifier stack after making a roll. See the various functions available in desktop\scripts\modifierstack.lua
    FG Con 16 Fantasy Grounds Online RPG Convention - Postponed New date To Be Confirmed.
    Register at www.fg-con.com for all the latest info.

    Private Messages: My inbox is forever filling up with PMs. Please don't send me PMs unless they are actually private/personal messages. General FG questions should be asked in the forums - don't be afraid, the FG community don't bite and you're giving everyone the chance to respond and learn!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Starfinder Playlist

Log in

Log in