91.08 Pathfinder + D&D3.5 Framework

Discussion concerning lmarkus' campaign framework for D&D3.x and Pathfinder.

Moderators: Azhrei, dorpond, trevor, giliath, Gamerdude, jay, Mr.Ice, lmarkus001

Forum rules
Discussion regarding lmarkus001's framework only. Other posts deleted without notice! :)
User avatar
aliasmask
Deity
Posts: 8579
Joined: Tue Nov 10, 2009 6:11 pm
Location: Bay Area

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by aliasmask »

This is the most current by Lindsay. Another user made a collection of macros here as well more recently: viewtopic.php?f=33&t=27969

User avatar
karpana
Kobold
Posts: 4
Joined: Sat Aug 04, 2018 1:38 pm

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by karpana »

Thanks AliasMask.
I'm super impressed with what I see in Lindsay's Framework; it's way more than I need right now, but seems to be very feature rich!
I'll take a peek at what AdventureMagic123 has assembled.

jkthomsen9
Cave Troll
Posts: 25
Joined: Fri May 10, 2019 4:53 pm

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by jkthomsen9 »

Having an interesting issue with BOT ShadowPads. I originally posted this to the Bag of Tricks forum but after Wolf42 looked at it he said the problem is in the 3.5/pathfinder campaign. Under BOT settings there is a toggle for invisible with four options below it(invisibility state, see invisibility state, purge invisibility state, and annul invisibility state), all of which default to 0. I get two different errors depending if invisible box is selected or not.

IF IT IS NOT SELECTED ShadowPads sorta work, but every time I move a token I get a dialog box asking for a tok value, and the following error in chat.

Invalid condition in IF(isNPC(tok) && getState("Invisible",tok)) roll option. Statement options (if any): H, IF(isNPC(tok) && getState("Invisible",tok)), CODE Statement Body : { [H, MACRO("[email protected]:libDnD35Pathfinder"): tok ] }; {}

IF IT IS SELECTED ShadowPads DO NOT work at all, I DO NOT get a diolog box, but do get this error in chat.

Invalid condition in IF(getState(invisState, meTok)) roll option. Statement options (if any): h,if(getState(invisState, meTok)), CODE Statement Body (first 200 characters): { [seeingToks = getTokenNames("json", json.set("{}","setStates", json.append("", seeInvisState)))] [purgingToks = getTokenNames(

My eight year old knows more coding than I do so any help would be appreciated.

User avatar
aliasmask
Deity
Posts: 8579
Joined: Tue Nov 10, 2009 6:11 pm
Location: Bay Area

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by aliasmask »

I don't usually mess around with the BoT, but as I understand it you're having a problem with a BoT feature because of the 3.5/PF framework? I'll see what I can do to sort it out. It would be really helpful if you can send me your campaign with an example of how you get the error.

Dougal
Cave Troll
Posts: 58
Joined: Sat Sep 08, 2012 11:05 am

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by Dougal »

Not even sure if the bot is being updated or supported anymore. BUT I'm wanting to do an update for it for Bag of tricks 4.0 to 4.4 but I tried the "update steps" on bag of tricks and now I get a lot of errors

User avatar
aliasmask
Deity
Posts: 8579
Joined: Tue Nov 10, 2009 6:11 pm
Location: Bay Area

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by aliasmask »

The latest info on BoT can be found here: viewtopic.php?f=46&t=28409

Yes, wolph42 is still very active and just made a recent update. You can direct your problems to that thread in case others have the same issues. He also has a channel on the MapTool Discord channel: https://discord.gg/nsnKM9

User avatar
wolph42
Deity
Posts: 9706
Joined: Fri Mar 20, 2009 5:40 am
Location: Netherlands
Contact:

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by wolph42 »

aliasmask wrote:
Thu Oct 31, 2019 6:56 am
The latest info on BoT can be found here: viewtopic.php?f=46&t=28409

Yes, wolph42 is still very active and just made a recent update. You can direct your problems to that thread in case others have the same issues. He also has a channel on the MapTool Discord channel: https://discord.gg/nsnKM9
(...and sometimes lurks in other topics...., but Yeah, what AM said!)

User avatar
wolph42
Deity
Posts: 9706
Joined: Fri Mar 20, 2009 5:40 am
Location: Netherlands
Contact:

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by wolph42 »

ok I had a quick look, downloaded the latest version of this framework, replaced the lib:ontokenmove --> got a invisibility pop up everytime i tried to do something, ran the BoT settings and no more errors (as expected). So whats the problem on your side?

Dougal
Cave Troll
Posts: 58
Joined: Sat Sep 08, 2012 11:05 am

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by Dougal »

yeah it was me being stupid. I remoted into the server and tried to do it instead of using the remote computer to access the campaign directly. Got it working now


User avatar
aliasmask
Deity
Posts: 8579
Joined: Tue Nov 10, 2009 6:11 pm
Location: Bay Area

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by aliasmask »

With the recent update to setBarVisible bad syntax in subUpdateHPStatesBarsLGM now gives an error. Basically, change the "off" to 0 to fix. Here is the updated macro.
subUpdateHPStatesBarsLGM

Code: Select all

<!-- Updates most states and health bars.  Does not update StableHP. Does HP based updates to state Unconscious, can not update based on healing. -->
[H: gTok = "Lib:GlobalsSRDPF"]
[H: tToken = getStrProp(macro.args, "Token")]

[H: gTokenUncImgChange = getLibProperty("TokenUncImgChange", gTok)]

[H: switchToken(tToken)]

[H: token.shape = getTokenShape(tToken)]

[H, IF(gTokenUncImgChange), CODE: {
    [ startedDown = if( state.Dead || state.Dying || state.StableHP, 1, 0 ) ]
    [ tImageID = getTokenImage() ]
    [ tImageHID = getTokenHandout() ]
    [ tIAID = getStrProp(Private, "TokenImageAssetID")]
    [IF( tImageHID != tImageID || tIAID == "" ), CODE: {
       [ Private = setStrProp(Private, "TokenImageAssetID", tImageID) ]
       [ tIAID = tImageID]
    };{}]
};{}]

[H: deathpoint = eval( string( getLibProperty( "DeathPoint", gTok ) ) )]

[H: tType = json.get( Race, "type" )]
[H: tSubtype = json.get( Race, "subtype" )]
[H: variantRDP = table( "SysVars", json.get( table( "SysVars", 0 ), "variantRaceDeathPoint" ) ) ]
[H, FOREACH( dp, variantRDP ), CODE: {
   [H: tDP = json.get( dp, "deathPoint" )]
   [H: typeArray = json.get( dp, "typeArray" )]
   [H: subtypeArray = json.get( dp, "subtypeArray" )]
   [H, FOREACH( t, typeArray ): deathpoint = if( t == tType, tDP, deathpoint )]
   [H, FOREACH( t, subtypeArray ): deathpoint = if( json.contains( tSubtype, t ), tDP, deathpoint )]
}]

[H: tDieHard = getStrProp(Feats, "DieHard")]
[H: tDieHard = if(tDieHard == "", 0, tDieHard)]
[H: disabledPoint = if( tDieHard, deathpoint, 0)]

[H, IF((HP + HPtemp) == 0), CODE:{
    [MACRO( "[email protected]:libDnD35Pathfinder" ): json.set( "{}", "tokenID", currentToken(), "setID", "Disabled", "setType", 0, "isHPChange", 1  ) ]
};{
    [MACRO( "[email protected]:libDnD35Pathfinder" ): json.set( "{}", "tokenID", currentToken(), "setID", "Disabled", "setType", 0, "isHPChange", 1  ) ]
}]
[H: tStaggered = if(HPNonLethalDMG == (HP + HPtemp) && HP > 0, 1, 0)]
[H, IF(tStaggered), CODE:{
    [MACRO( "[email protected]:libDnD35Pathfinder" ): json.set( "{}", "tokenID", currentToken(), "setID", "Staggered", "setType", 0, "isHPChange", 1  ) ]
};{
    [MACRO( "[email protected]:libDnD35Pathfinder" ): json.set( "{}", "tokenID", currentToken(), "setID", "Staggered", "setType", 0, "isHPChange", 1  ) ]
}]

[H: active = if( ((HP + HPtemp) >= HPNonLethalDMG) && ((HP + HPtemp) >= 0), 1, if( tDieHard, 1, 0) )]
[H, IF( active ): setLayer("token")]
[H: state.Dead = if((HP + HPtemp) <= deathpoint, 1, 0)]

[H: tUnconscious = if( ( ( (HP + HPtemp) < 0 ) || ( HPNonLethalDMG > (HP + HPtemp) ) ) && !tDieHard, 1, 0)]
[H, IF(tUnconscious && !state.Dead), CODE:{
    [MACRO( "[email protected]:libDnD35Pathfinder" ): json.set( "{}", "tokenID", currentToken(), "setID", "Unconscious", "setType", 0, "isHPChange", 1  ) ]
};{
    
}]

[H: tProne = if( active && (state.Prone < 1), 0, 1)]
[H, IF(tProne  && !state.Dead), CODE:{
    [MACRO( "[email protected]:libDnD35Pathfinder" ): json.set( "{}", "tokenID", currentToken(), "setID", "Prone", "setType", 0, "isHPChange", 1  ) ]
};{
    
}]
[H: state.Dying = if(((HP + HPtemp) > deathpoint) && ((HP + HPtemp) < 0), 1, 0)]
[H, IF( isNPC() && !tDieHard ): eval(if(state.Dying, 'setLayer("object")', '0'))]
[H: state.StableHP = if(((HP + HPtemp) >= 0), 0, state.StableHP)]

[H, IF(state.Dead), CODE: {
  [H: if(isNPC(), setLayer("object"), '0')]
  [H: state.Dying = 0]
  [H: state.StableHP = 0]
}]
[H: eval(if(state.Dead, 'removeFromInitiative()', '0'))]

[H: setBarVisible("HPdamage",0)]
[H: setBarVisible("EmptyHP",0)]
[H: setBarVisible("NLD_HP",0) ]
[H: setBarVisible("TempHP",0) ]

[H: setBarVisible("HP",0)]
[H: setBarVisible("HPM",0)]
[H: setBarVisible("HPNonLethalDMG",0)]
[H: setBarVisible("HPMNonLethalDMG",0)]
[H: hpbar = if(isPC(), "bar.HP = (HP + HPtemp)/(HPmax + HPtemp)", "bar.HPM = (HP + HPtemp)/(HPmax + HPtemp)")]
[H: eval(hpbar)]
[H: hpnldbar = if(isPC(), "bar.HPNonLethalDMG = HPNonLethalDMG/(HPmax + HPtemp)", "bar.HPMNonLethalDMG = HPNonLethalDMG/(HPmax + HPtemp)")]
[H: eval(hpnldbar)]

[H, IF(gTokenUncImgChange), CODE: {
    [H: tImageID= if( ( state.Dead || state.Dying || state.StableHP ), getTokenHandout(), if(startedDown, tIAID, tImageID) ) ]
    [H, IF(tImageID != ""): setTokenImage(tImageID)]
};{}]

[H: '<!-- bug fix workaround: changing layers can alter the token shape -->']
[H, if(token.shape != getTokenShape(tToken)): setTokenShape(token.shape, tToken)]

ZevenDevilz
Kobold
Posts: 6
Joined: Tue Mar 03, 2020 12:55 pm

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by ZevenDevilz »

hello everyone i have a question about the dicebox in MT1.3.91.08.01_DnD35_Pathfinder.cmpgn where can i find the macros for NDB to edit the line to change from a button to text input? when i click the button i get stacking 1's so repeated clicking gives me 1,11,111,1111,11111, ect. instead of the expected 1,2,3,4 dice count.

User avatar
aliasmask
Deity
Posts: 8579
Joined: Tue Nov 10, 2009 6:11 pm
Location: Bay Area

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by aliasmask »

That seems to be a new bug created with json.get. It shouldn't be returning it as a string. I thought this was fixed though.

If you replace NDBUpdate with this, it should work.

Code: Select all

[h:dbArgs = macro.args]
[h,if(json.contains(dbArgs,"Clear")),CODE:
{
   [h:dbArgs = json.set("{}", "mod", 0, "tn", 0, "d4s", 0, "d6s", 0, "d8s", 0, "d10s", 0, "d12s", 0, "d20s", 0, "d100s", 0, "showTo", "all", "breakdown", "totalRoll")]
   [macro("[email protected]"): dbArgs]
}]
[h,if(json.contains(dbArgs,"Roll")),CODE:
{
    [macro("[email protected]"):dbArgs] 
    [abort(0)]
};
{
[if(json.contains(dbArgs,"d4btn")): dbArgs = json.set(dbArgs, "d4s", number(json.get(dbArgs, "d4s"))+1)]
[if(json.contains(dbArgs,"d6btn")): dbArgs = json.set(dbArgs, "d6s", number(json.get(dbArgs, "d6s"))+1)]
[if(json.contains(dbArgs,"d8btn")): dbArgs = json.set(dbArgs, "d8s", number(json.get(dbArgs, "d8s"))+1)]
[if(json.contains(dbArgs,"d10btn")): dbArgs = json.set(dbArgs, "d10s", number(json.get(dbArgs, "d10s"))+1)]
[if(json.contains(dbArgs,"d12btn")): dbArgs = json.set(dbArgs, "d12s", number(json.get(dbArgs, "d12s"))+1)]
[if(json.contains(dbArgs,"d20btn")): dbArgs = json.set(dbArgs, "d20s", number(json.get(dbArgs, "d20s"))+1)]
[if(json.contains(dbArgs,"d100btn")): dbArgs = json.set(dbArgs, "d100s", number(json.get(dbArgs, "d100s"))+1)]
[macro("[email protected]"):dbArgs]
}]
Edit: Looking at is closer, it's not related to json.get. The dbArgs numbers were converted to strings at some point. json.get was updated to correctly get a string that looks like a number as a string and that's what is happening here. It's adding a number to a string. I'll try to track down how/why dbArgs is converting the number to a string. It may be related to passing json through a form. Actually, just remember that was an issue.

User avatar
aliasmask
Deity
Posts: 8579
Joined: Tue Nov 10, 2009 6:11 pm
Location: Bay Area

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by aliasmask »

Yep, it's the form submit, but it doesn't pass the whole json, but macro.args does convert a number to a string.

User avatar
aliasmask
Deity
Posts: 8579
Joined: Tue Nov 10, 2009 6:11 pm
Location: Bay Area

Re: 91.08 Pathfinder + D&D3.5 Framework

Post by aliasmask »

I updated the issue on github here: https://github.com/RPTools/maptool/issues/650

Post Reply

Return to “[D&D3.5 + Pathfinder] Campaign Macros”