MT1.3b87.04 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
lmarkus001
Great Wyrm
Posts: 1862
Joined: Sat Mar 29, 2008 12:30 am
Location: Layfayette Hill, PA

MT1.3b87.04 Pathfinder + D&D3.5 Framework

Post by lmarkus001 »

Released!
MT1.3.87.04_DnD35_Pathfinder.cmpgn

I recommend a stack size of 3MB for this version.

1.3b87_04
=========

  • NEW! Frame based Attack window - A floating frame that can be left up (I recommend stack docking with the character sheet). HALLELUJAH!
  • Attack Change - Undid my dumb merging of Cover and Fire into Melee, they are separate things!

  • Healing Change - Now the new mod-sets Staggered, Disabled, Prone and Unconscious are integrated into the healing macros. So when you get healed back up, you use the Active Mods dialog to remove Prone when you stand up (it is no longer just a state icon).
  • New Mod-Sets: Prone, Unconscious, Disabled, Staggered
  • New State Icons: Disabled, Staggered, Prone, Unconscious

  • Tons of changes and tweaks all over the place!

  • Extreme cleanup of summoned monsters Pathfinder level 1-4.
  • Resolute & Entropic templates
  • Summoned Critters can be timer tokens too!

  • Character Sheet - corrected an issue with the cache so now the Main sheet skill links will work even post campaign reload. Little tweaks here and there on the sheet.
  • Fixed issue with Active-mods and worn items (which are mods in their own right). There was an issue with active-mods if you had no items created for the token.
  • Setup Blank - Changed Notes to Languages and moved so is more prominent.
  • Property changes - default weapons now include: improvised club, unarmed attack, touch, ranged touch. Moved all of these to the last 4 weapon-set slots.
  • Mod-Set Tweaks: Many tweaks and corrections to include: Fatigued, Combat Expertise


    OTHER's TOOLS
  • Upgraded to Wolf42 Bag of Tricks 23 -- CUSTOMIZED to support my UDF Wiki: setSize() and to support the automatic movement of the "shadow" invisible token. These customizations are implemented via Event macros on lib:EventMacros. Preliminary token movement restriction code, choose Limit Movement = non-zero integer (1 works well) to activate.
  • Plothos Spell Manager with Aliasmask tweaks (which in turn require his lib:players). Please report any system latency/lag issues and I fear adding the lib:players + Bag of Tricks might be too much overhead for the return.

Specific Areas Modified
Campaign Properties: Pathfinder & DnD35: Weapon16-19, State icons
Lib:libDnD35Pathfinder
Campaign Macros
Table - Conditions, SysVars, SysSetup


Image

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

Re: MT1.3b87.04 Campaign Framework (NEW... Latest Version!)

Post by aliasmask »

Very Cool, can't wait. Here is a newer version of ConditionReport. This takes care of a couple of bugs with bad data like tokens from other campaigns with missing states and missing mods. There was also a bug with ActiveMods having a blank entry in the array which caused some havoc as well (but you saw the general fix for that).

[spoiler=... ConditionReport ...]

Code: Select all

@@ @ConditionReport
@[email protected] fontColor=black ; autoExecute=true ; fontSize=11pt ; sortBy=41 ; color=yellow ; playerEditable=true ; applyToSelected=true ; group=Utility Mods ; tooltip= ; minWidth=94 ;
<!-- Purpose of this function is to list all active mods on token as well as state condition information. -->

<!-- get Mod and Item sets and lists -->
[H: modDB = getLibProperty("TempModToggleSets","Lib:GlobalsSRDPF")]
[H: tokenModValues = json.get(PrivateJSON,"CustomModSetValues")]
[H: tokenItemDB = getProperty("BonusTypedItems")]
[H: modList = json.fields(modDB,"json")]
[H: itemList = json.fields(tokenItemDB,"json")]
[H: statesList = getTokenStates("json")]
[H: activeItemList = json.get( PrivateJSON,"ActiveItems")]
[H: activeModList = json.get( PrivateJSON,"ActiveTempModSets")]

<!-- Check to see if all active mods are in framework -->
[H, if(json.equals(activeModList,'[""]')), code: {
   <!-- fix common bug -->
   [H: activeModList = "[]"]
   [H: PrivateJSON = json.set(PrivateJSON,"ActiveTempModSets",activeModList)]
};{}]
[H, if(json.isEmpty(tokenModValues)): tokenModValues = "{}"]

[H: hasValidMods = if(json.isSubset(modList,activeModList) && json.isSubset(itemList,activeItemList),1,0)]
[H, if(! hasValidMods), code: {
   [H: abort(input("tip|<html>Active Mods or Items don't match existing Mods. <b>Resetting Token Mods</b> (Cancel to Abort)</html>||label|SPAN=TRUE"))]

   <!-- clear and reset all mod related variables -->
   [H: PrivateJSON = json.set( PrivateJSON, "ActiveTempModSets", "[]", "ActiveItems", "[]" )]
   [H: resetProperty( "ArmorClass" ) ]
   [H: resetProperty( "SpeedMod" ) ]
   [H: resetProperty( "StatCheckMod" ) ]
   [H: resetProperty( "DRERMod" ) ]

   [H: MiscATK = 0 ]
   [H: MiscDMG = 0 ]
   [H: InitMod = 0 ]
   [H: StrMod = 0 ]
   [H: DexMod = 0 ]
   [H: ConMod = 0 ]
   [H: IntMod = 0 ]
   [H: WisMod = 0 ]
   [H: ChaMod = 0 ]
   [H: FortBonus = 0 ]
   [H: ReflexBonus = 0 ]
   [H: WillBonus = 0 ]
   [H: CMBMod = 0 ]
   [H: CMDMod = 0 ]

   <!-- clear all states -->
   [H: setAllStates(0) ]

   <!-- recalc token values -->
   [H: tToken = currentToken() ]
   [H, MACRO("[email protected]"): "Token=" + tToken]
   [H, MACRO("[email protected]"): "Token=" + tToken]
   [H, MACRO("[email protected]"): "Token=" + tToken]
   [H, MACRO("[email protected]"): json.set( "{}", "Token", tToken ) ]

   <!-- Notify player that token mods have been cleared -->
   [H: output = "<b>" + token.name + strformat("</b>:  All temporary mods have been cleared, items unequipped, and state icons cleared.<br><br><b>Mods:</b> %{activeModList}<br><b>Items:</b> %{activeItemList}") ]
   [H: outputTo("gm-self", output)]
   
   <!-- Since this isnt a UDF, going to abort output of HTML comments -->
   [H: abort(0)]
};{}]

<!-- Build Output of active mods -->
[H: output.mods = "[]"]

[H, foreach(mod,activeModList), code: {
   [H: '<!-- get mod data -->']
   [H: defaultModData = json.get(modDB,mod)]
   [H: modCat = json.get(defaultModData,"cat")]
   [H: modState = json.get(defaultModData,"state")]
   [H: modData = json.get(tokenModValues,mod)]
   [H, if(json.isEmpty(modData)): modTip = json.get(defaultModData,"tip"); modTip = json.get(modData,"tip")]
   [H: '<!-- validate data -->']
   [H, if(json.contains(statesList,modState)), code: {
      [H: setState(modState,1)]
      [H: stateImage = strformat("<img src='%s' width=50 height=50>",getStateImage(modState))]
   };{
      [H: stateImage = "&nbsp;"]
   }]
   [H, if(json.isEmpty(modCat)): modCat = "Active Mod"]
   [H: modTip = replace(modTip,'"',"&quot;")]
   
   [H: '<!-- create output -->']
   [H: modLineOutput = strformat('<span title="<html><table><tr valign=top><td>%{stateImage}</td><td>%{modTip}</td></tr></table></html>">%{mod}</span>')]
   
   [H: '<!-- add to final output json and include id for sorting purposes -->']
   [H: output.mods = json.append(output.mods,strformat('<tr id="%s"><td style="padding: 0px 2px 0px 5px;text-align:right" NOWRAP><b>%{modCat}:</b></td><td style="padding-right: 5px">%{modLineOutput}</td></tr>',
      replace(lower(modCat+mod),"[^a-z0-9._]","")))]
}]

<!-- Build Output of active items -->
[H: output.items = "[]"]

[H, foreach(mod,activeItemList), code: {
   [H: '<!-- get mod data -->']
   [H: defaultModData = json.get(tokenItemDB,mod)]
   [H: modCat = json.get(defaultModData,"cat")]
   [H: modState = json.get(defaultModData,"state")]
   [H: modData = json.get(tokenModValues,mod)]
   [H, if(json.isEmpty(modData)): modTip = json.get(defaultModData,"tip"); modTip = json.get(modData,"tip")]
   
   
   [H: '<!-- validate data -->']
   [H, if(json.contains(statesList,modState)), code: {
      [H: setState(modState,1)]
      [H: stateImage = strformat("<img src='%s' width=50 height=50>",getStateImage(modState))]
   };{
      [H: stateImage = "&nbsp;"]
   }]
   [H, if(json.isEmpty(modCat)): modCat = "Active Item"]
   [H: modTip = replace(modTip,'"',"&quot;")]
   
   [H: '<!-- create output -->']
   [H: modLineOutput = strformat('<span title="<html><table><tr valign=top><td>%{stateImage}</td><td>%{modTip}</td></tr></table></html>">%{mod}</span>')]
   
   [H: '<!-- add to final output json and include id for sorting purposes -->']
   [H: output.items = json.append(output.items,strformat('<tr id="%s" padding=0px><td style="padding: 0px 2px 0px 5px;text-align:right" NOWRAP><b>%{modCat}:</b></td><td style="padding-right: 5px">%{modLineOutput}</td></tr>',
      replace(lower(modCat+mod),"[^a-z0-9._]","")))]
}]

<!-- if a state is active on token that matches a condition, print the condition info of state -->
[H: output.states = "[]"]

[H: numConditions = tbl("Conditions",0)]
[H, for(i,0,numConditions), code: {
   [H: conditionStr = tbl("Conditions",i + 1)]
   [H: curState = listGet(conditionStr,0,";")]
   [H, if(getState(curState)), code: {
      [H: conditionText = replace(listGet(conditionStr,1,";"),'"',"&quot;")]
      [H: stateImage = strformat("<img src='%s' width=50 height=50>",getStateImage(curState))]
      [H: stateLineOutput = strformat('<span title="<html><table padding=0px><tr valign=top><td>%{stateImage}</td><td><font color=green>%{conditionText}</font></td></tr></table></html>"><font color=blue>%{curState}</font></span>')]
      [H: output.states = json.append(output.states,strformat('<tr id="state%s"><td style="padding: 0px 2px 0px 5px;text-align:right" NOWRAP><b>State Info:</b></td><td style="padding-right: 5px">%{stateLineOutput}</td></tr>',
         lower(curState)))]
   };{}]
}]

[H: output = json.append("",'<table style="background-color:white;border-style:solid;border-width:1pt;padding:0px;border-spacing:0;"><tr><th colspan=2 style="color:blue;text-align:center">Mod Report</th></tr>')]
[H, if(! json.isEmpty(output.states)): output.states = json.sort(output.states,"a")]
[H, if(json.isEmpty(output.mods) && json.isEmpty(output.items)): output.mods = json.merge(json.append("","--- No Active Framework mods ---"),output.states);
   output.mods = json.merge(json.sort(json.merge(output.mods,output.items),"a"),output.states)]

[H: output = json.merge(output,output.mods,json.append("","</table>"))]
[H: output = json.toList(output,"")]

[H: am.play.output.basic(output,"self",currentToken())]

<!-- Since this isn't a UDF, going to abort output of HTML comments -->
[H: abort(0)]

!!
[/spoiler]

I was getting some weird output using your outputTo with java 7 (java 6 didn't do it) so I switched to my version of output which uses broadcast. So, to make this compatible with your FW, you'll need to change the am.play.output.basic line.

I also have some update to the lib:spells3 token that makes the auto rolls for concentration and other checks in the Plothos Spell Manager that is similar to the Wrathgon (a fav feature). But I have some custom integration with my lib:players token, so I'll wait for your new release to integrate with your framework better. But if you want to look at I'll post token.

PS - You'll need a token called image:unknown for the lib:players token. you can read more about libplayers in link.
Attachments
Players MT b89 4-20-13.rptok
(254.63 KiB) Downloaded 158 times
Lib-spells3.rptok
(446.12 KiB) Downloaded 169 times

User avatar
lmarkus001
Great Wyrm
Posts: 1862
Joined: Sat Mar 29, 2008 12:30 am
Location: Layfayette Hill, PA

Re: MT1.3b87.04 Campaign Framework (NEW... Latest Version!)

Post by lmarkus001 »

aliasmask wrote:Very Cool, can't wait. Here is a newer version of ConditionReport. ...


Nice!

I just tried this version of ConditionReport on a token with Deafened on it and it burped. Note that Deafened was set as an Active-mod and has an entry in the Conditions table ( I will be removing it from the Conditions table now that it is a mod, but the code should not burp none the less).

Code: Select all

java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = error executing expression output.mods = json.append(output.mods,strformat('
%{modCat}:
%{modLineOutput}
', replace(lower(modCat+mod),"[^a-z0-9._]",""))).

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

Re: MT1.3b87.04 Campaign Framework (NEW... Latest Version!)

Post by aliasmask »

Can you post token and I'll test. That is a weird place for it to error. My best guess is that is doesn't like the "modCat+mod" and it's giving a type mismatch which doesn't happen if both are strings. Maybe there is a funky character in there somewhere? Anyway, I was trying to make it user proof and didn't quite do it.

User avatar
lmarkus001
Great Wyrm
Posts: 1862
Joined: Sat Mar 29, 2008 12:30 am
Location: Layfayette Hill, PA

Re: MT1.3b87.04 Campaign Framework (NEW... Latest Version!)

Post by lmarkus001 »

aliasmask wrote:Can you post token and I'll test. That is a weird place for it to error. My best guess is that is doesn't like the "modCat+mod" and it's giving a type mismatch which doesn't happen if both are strings. Maybe there is a funky character in there somewhere? Anyway, I was trying to make it user proof and didn't quite do it.


Sent you a PM with the not-ready-for-prime-time campaign file linked.

User avatar
rgwynnjr
Cave Troll
Posts: 59
Joined: Wed Oct 05, 2011 11:03 am
Location: Warminster, PA

Re: MT1.3b87.04 Campaign Framework (NEW... Latest Version!)

Post by rgwynnjr »

Ditto on the cool and can't wait. I GM in a group with aliasmask using your current FW. With your changes and incorporating aliasmask's updates, should be one hell of a FW. I have beeen updating the data within Plothos 3 spell manager for all the Pathfinder spellcaster classes along with all current spells and abilities. If you want, can give you a copy of the lib:spells3 token that includes the changes aliasmask was talking about when I am done.
Yeah... I'm a Druid. No... I don't hung trees, I kick a**.

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

Re: MT1.3b87.04 Campaign Framework (NEW... Latest Version!)

Post by aliasmask »

Yeah, it didn't like the % in the tip. Personally, I think it's an MT bug. For example:

Code: Select all

[H: tip = "200%"]
<!-- works fine -->
[R: strformat("%{tip}")]

<!-- breaks -->
[R: strformat("%s %{tip}","2x100% = ")]


When using %s with strformat, any %'s in variables or in text need to be overloaded with %%, but if it doesn't have %s it just prints both %%. I solved problem by getting rid of %s and added another variable outside of strformat.

[spoiler=... ConditionReport ...]

Code: Select all

@@ @ConditionReport
@[email protected] fontColor=black ; autoExecute=true ; fontSize=11pt ; sortBy=41 ; color=yellow ; playerEditable=true ; applyToSelected=true ; group=Utility Mods ; tooltip= ; minWidth=94 ;
<!-- Purpose of this function is to list all active mods on token as well as state condition information. -->

<!-- get Mod and Item sets and lists -->
[H: modDB = getLibProperty("TempModToggleSets","Lib:GlobalsSRDPF")]
[H: tokenModValues = json.get(PrivateJSON,"CustomModSetValues")]
[H: tokenItemDB = getProperty("BonusTypedItems")]
[H: modList = json.fields(modDB,"json")]
[H: itemList = json.fields(tokenItemDB,"json")]
[H: statesList = getTokenStates("json")]
[H: activeItemList = json.get( PrivateJSON,"ActiveItems")]
[H, if(json.isEmpty(activeItemList)): activeItemList = "[]"]
[H: activeModList = json.get( PrivateJSON,"ActiveTempModSets")]

<!-- Check to see if all active mods are in framework -->
[H, if(json.equals(activeModList,'[""]') || json.isEmpty(activeModList)), code: {
   <!-- fix common bug -->
   [H: activeModList = "[]"]
   [H: PrivateJSON = json.set(PrivateJSON,"ActiveTempModSets",activeModList)]
};{}]

[H, if(json.isEmpty(tokenModValues)): tokenModValues = "{}"]
[H: hasValidMods = if(json.isSubset(modList,activeModList) && json.isSubset(itemList,activeItemList),1,0)]

[H, if(! hasValidMods), code: {
   [H: abort(input("tip|<html>Active Mods or Items don't match existing Mods. <b>Resetting Token Mods</b> (Cancel to Abort)</html>||label|SPAN=TRUE"))]

   <!-- clear and reset all mod related variables -->
   [H: PrivateJSON = json.set( PrivateJSON, "ActiveTempModSets", "[]", "ActiveItems", "[]" )]
   [H: resetProperty( "ArmorClass" ) ]
   [H: resetProperty( "SpeedMod" ) ]
   [H: resetProperty( "StatCheckMod" ) ]
   [H: resetProperty( "DRERMod" ) ]

   [H: MiscATK = 0 ]
   [H: MiscDMG = 0 ]
   [H: InitMod = 0 ]
   [H: StrMod = 0 ]
   [H: DexMod = 0 ]
   [H: ConMod = 0 ]
   [H: IntMod = 0 ]
   [H: WisMod = 0 ]
   [H: ChaMod = 0 ]
   [H: FortBonus = 0 ]
   [H: ReflexBonus = 0 ]
   [H: WillBonus = 0 ]
   [H: CMBMod = 0 ]
   [H: CMDMod = 0 ]

   <!-- clear all states -->
   [H: setAllStates(0) ]

   <!-- recalc token values -->
   [H: tToken = currentToken() ]
   [H, MACRO("[email protected]"): "Token=" + tToken]
   [H, MACRO("[email protected]"): "Token=" + tToken]
   [H, MACRO("[email protected]"): "Token=" + tToken]
   [H, MACRO("[email protected]"): json.set( "{}", "Token", tToken ) ]

   <!-- Notify player that token mods have been cleared -->
   [H: output = "<b>" + token.name + strformat("</b>:  All temporary mods have been cleared, items unequipped, and state icons cleared.<br><br><b>Mods:</b> %{activeModList}<br><b>Items:</b> %{activeItemList}") ]
   [H: outputTo("gm-self", output)]
   
   <!-- Since this isnt a UDF, going to abort output of HTML comments -->
   [H: abort(0)]
};{}]

<!-- Build Output of active mods -->
[H: output.mods = "[]"]

[H, foreach(mod,activeModList), code: {
   [H: '<!-- get mod data -->']
   [H: defaultModData = json.get(modDB,mod)]
   [H: modCat = json.get(defaultModData,"cat")]
   [H: modState = json.get(defaultModData,"state")]
   [H: modData = json.get(tokenModValues,mod)]
   [H, if(json.isEmpty(modData)): modTip = json.get(defaultModData,"tip"); modTip = json.get(modData,"tip")]
   [H: '<!-- validate data -->']
   [H, if(json.contains(statesList,modState)), code: {
      [H: setState(modState,1)]
      [H: stateImage = strformat("<img src='%s' width=50 height=50>",getStateImage(modState))]
   };{
      [H: stateImage = "&nbsp;"]
   }]
   [H, if(json.isEmpty(modCat)): modCat = "Active Mod"]
   [H: modTip = replace(modTip,'"',"&quot;")]
   
   [H: '<!-- create output -->']
   [H: modLineOutput = strformat('<span title="<html><table><tr valign=top><td>%{stateImage}</td><td>%{modTip}</td></tr></table></html>">%{mod}</span>')]
   
   [H: '<!-- add to final output json and include id for sorting purposes -->']
   [H: sortId = replace(lower(modCat+mod),"[^a-z0-9._]","")]
   [H: output.mods = json.append(output.mods,strformat('<tr id="%{sortId}"><td style="padding: 0px 2px 0px 5px;text-align:right" NOWRAP><b>%{modCat}:</b></td><td style="padding-right: 5px">%{modLineOutput}</td></tr>'))]
}]

<!-- Build Output of active items -->
[H: output.items = "[]"]

[H, foreach(mod,activeItemList), code: {
   [H: '<!-- get mod data -->']
   [H: defaultModData = json.get(tokenItemDB,mod)]
   [H: modCat = json.get(defaultModData,"cat")]
   [H: modState = json.get(defaultModData,"state")]
   [H: modData = json.get(tokenModValues,mod)]
   [H, if(json.isEmpty(modData)): modTip = json.get(defaultModData,"tip"); modTip = json.get(modData,"tip")]
   
   
   [H: '<!-- validate data -->']
   [H, if(json.contains(statesList,modState)), code: {
      [H: setState(modState,1)]
      [H: stateImage = strformat("<img src='%s' width=50 height=50>",getStateImage(modState))]
   };{
      [H: stateImage = "&nbsp;"]
   }]
   [H, if(json.isEmpty(modCat)): modCat = "Active Item"]
   [H: modTip = replace(modTip,'"',"&quot;")]
   
   [H: '<!-- create output -->']
   [H: modLineOutput = strformat('<span title="<html><table><tr valign=top><td>%{stateImage}</td><td>%{modTip}</td></tr></table></html>">%{mod}</span>')]
   
   [H: '<!-- add to final output json and include id for sorting purposes -->']
   [H: sortId = replace(lower(modCat+mod),"[^a-z0-9._]","")]
   [H: output.items = json.append(output.items,strformat('<tr id="%{sortId}" padding=0px><td style="padding: 0px 2px 0px 5px;text-align:right" NOWRAP><b>%{modCat}:</b></td><td style="padding-right: 5px">%{modLineOutput}</td></tr>'))]
}]

<!-- if a state is active on token that matches a condition, print the condition info of state -->
[H: output.states = "[]"]

[H: numConditions = tbl("Conditions",0)]
[H, for(i,0,numConditions), code: {
   [H: conditionStr = tbl("Conditions",i + 1)]
   [H: curState = listGet(conditionStr,0,";")]
   [H, if(getState(curState)), code: {
      [H: conditionText = replace(listGet(conditionStr,1,";"),'"',"&quot;")]
      [H: stateImage = strformat("<img src='%s' width=50 height=50>",getStateImage(curState))]
      [H: stateLineOutput = strformat('<span title="<html><table padding=0px><tr valign=top><td>%{stateImage}</td><td><font color=green>%{conditionText}</font></td></tr></table></html>"><font color=blue>%{curState}</font></span>')]
      [H: sortId = lower(curState)]
      [H: output.states = json.append(output.states,strformat('<tr id="state%{sortId}"><td style="padding: 0px 2px 0px 5px;text-align:right" NOWRAP><b>State Info:</b></td><td style="padding-right: 5px">%{stateLineOutput}</td></tr>'))]
   };{}]
}]

[H: output = json.append("",'<table style="background-color:white;border-style:solid;border-width:1pt;padding:0px;border-spacing:0;"><tr><th colspan=2 style="color:blue;text-align:center">Mod Report</th></tr>')]
[H, if(! json.isEmpty(output.states)): output.states = json.sort(output.states,"a")]
[H, if(json.isEmpty(output.mods) && json.isEmpty(output.items)): output.mods = json.merge(json.append("","--- No Active Framework mods ---"),output.states);
   output.mods = json.merge(json.sort(json.merge(output.mods,output.items),"a"),output.states)]

[H: output = json.merge(output,output.mods,json.append("","</table>"))]
[H: output = json.toList(output,"")]

[H: am.play.output.basic(output,"self",currentToken())]

<!-- Since this isn't a UDF, going to abort output of HTML comments -->
[H: abort(0)]

!!
[/spoiler]

edit: updated code. I accidentally made mods to older code so some of the fixes were missing.

edit: Another update to include fix for sortId when posting info on state conditions. Same strformat bug.

edit: Fixed another minor bug when activeModList or activeItemList has never been initialized.

keyword: amsave

Glock-9mm
Giant
Posts: 178
Joined: Fri Jan 05, 2007 7:53 pm
Location: Wgtn, New Zealand

Re: MT1.3b87.04 PF+3.5 Framework (RELEASED... Latest Version

Post by Glock-9mm »

Hhey Team

Just trying this out now (I use the older version of this framwork for a local and international game so Im keen to upgrade ASAP)

MT Version: 1.3.87
Framework: MT1.3.87.02_DnD35_Pathfinder.cmpgn
Java Version: 1.6

Problem 1 (Could be PEBCAK) - When I use "PF Statblock2Token [2.2] I get the following error:

Code: Select all

Illegal argument type java.lang.String, expecting java.math.BigDecimal


Things to note
I have added nothing to the campaign other than a grass lands map and a blank token
I am imitating the token (This works for Versions 1.6/8/9 of this Macro)
The normal pop up box doesn't appear for the statblock drop
after the error the Token now has base line stats

Image

Problem 2 the "Full HP" Macro works but gives the following error

Code: Select all

Unknown macro "[email protected]:libDnD35Pathfinder"


That's all I have found so far, I have a request as well but i need to put it together so it makes sense.

Hope this helps

Glock-9mm (NZ)
---
Glock-9mm (Wgtn, NZ)
Shooting from the hip... Never the lip!

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

Re: MT1.3b87.04 PF+3.5 Framework (RELEASED... Latest Version

Post by aliasmask »

You may want to consider something similar to the changes I made to the stat sheet. I'll be applying these to my campaign. The one feature the players really like is the Distance tool and the compact-ness of the stat sheet.

viewtopic.php?f=53&t=23414

I'll need to update it because of at least one extra line in new FW. The current statstat is a bit unruly, imo.

Glock-9mm
Giant
Posts: 178
Joined: Fri Jan 05, 2007 7:53 pm
Location: Wgtn, New Zealand

Re: MT1.3b87.04 PF+3.5 Framework (RELEASED... Latest Version

Post by Glock-9mm »

aliasmask wrote:You may want to consider something similar to the changes I made to the stat sheet. I'll be applying these to my campaign. The one feature the players really like is the Distance tool and the compact-ness of the stat sheet.

viewtopic.php?f=53&t=23414

I'll need to update it because of at least one extra line in new FW. The current statstat is a bit unruly, imo.


Agreed, I normally have a trimmed down version anyway as a of it is not required for ours games style, and only the GM gets to see all the NPC/Monster stat sheets anyway.
---
Glock-9mm (Wgtn, NZ)
Shooting from the hip... Never the lip!

Glock-9mm
Giant
Posts: 178
Joined: Fri Jan 05, 2007 7:53 pm
Location: Wgtn, New Zealand

Re: MT1.3b87.04 PF+3.5 Framework (RELEASED... Latest Version

Post by Glock-9mm »

Request

ok, I know this may be too hard so if it cant be done I full understand as i know its going to require some some serious thought. (Or maybe just more talent than I have.. not hard really! :) ) Im not sure if others would like this but I would... Anyway...

The Attack Panel thats now in this FW is good because it adds Sneak Attack, but the issue I come up against is no FW can yet handle the situation when a player or bad guy has a few things going on when it comes to damage output. What Id love to see is the "edit weapons panel" be able to handle most of this. Here is an example of the situation I am trying to describe

A player has a Fighter who has a Longsword +1, Flaming & Frosting Weapon. While we could simply add the +2D6 to apply the damage it becomes quite in a pain in the neck though if he is fighting something with say DR5 Fire because the dice rolled together and the player/GM has to then split it out to apply the DR. Below is a suggested layout for the weapons page but I no have idea how to do either of the 2 suggestion or even if its possible.

Image

The next part I guess is how that translates into chat, is it possible to make all the results add up and then tool tip the break down of how stuff was rolled, Or maybe something like this?

Image

Anyway I understand that this might not make sense or be achievable but if you don't ask you cant be told no.. lol.

Thanks for taking the time to read.

Regards
Glock-9mm (NZ)
---
Glock-9mm (Wgtn, NZ)
Shooting from the hip... Never the lip!

User avatar
lmarkus001
Great Wyrm
Posts: 1862
Joined: Sat Mar 29, 2008 12:30 am
Location: Layfayette Hill, PA

Re: MT1.3b87.04 PF+3.5 Framework (RELEASED... Latest Version

Post by lmarkus001 »

OMG just kill whoever has Flame & Frost on the same weapon already! 'nuff said. I mean really, the darn thing heated up and shattered sending freezing and burning splinters through his/her body irrevocably slaying them.

Yeah what you are asking for is for the ever-future combat structure. In that future, there would be a weapon structure, a mod-set array for the weapon, an equip structure, an attack structure, a mod-set array for the attack structure. That way you could easily create many wild donkey variants and have them work.

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

Re: MT1.3b87.04 PF+3.5 Framework (RELEASED... Latest Version

Post by aliasmask »

I was thinking for a simple solution, you can make the damage and description both lists. Then you can do something like this:

Extra Damage: 1d6;1d6
Extra Damage Description: Fire;Acid

Elorebaen
Dragon
Posts: 364
Joined: Sat Dec 22, 2007 5:37 pm

Re: MT1.3b87.04 PF+3.5 Framework (RELEASED... Latest Version

Post by Elorebaen »

Awesome LM!

User avatar
JamzTheMan
Great Wyrm
Posts: 1872
Joined: Mon May 10, 2010 12:59 pm
Location: Chicagoland
Contact:

Re: MT1.3b87.04 PF+3.5 Framework (RELEASED... Latest Version

Post by JamzTheMan »

Regarding pfstatblock importer 2.2, I think that was pulled from my campaign and if so, I don't use the pop up input, you have to paste it to GMText. I do this because I prefer to keep line returns (easier to read and better regexp searching for some expressions)

And just an FYI regarding fire frost weapons, per RAW it is actually illegal, you can't put frost on a flame weapon. Although the issue remains for a flame acid weapon out other combos.

Re Am's statblock, my players love the range start, absolutely brilliant!
-Jamz
____________________
Custom MapTool 1.4.x.x Fork: maptool.nerps.net
Custom TokenTool 2.0 Fork: tokentool.nerps.net
More information here: MapTool Nerps! Fork

Post Reply

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