Giter Site home page Giter Site logo

melek / simple5e Goto Github PK

View Code? Open in Web Editor NEW
13.0 13.0 2.0 36.01 MB

A relatively simple and straightforward first framework for playing 5th edition Dungeons and Dragons in MapTool. Tinker friendly, this framework includes built-in help features and is designed to be a foundation for your game.

Roff 100.00%

simple5e's People

Contributors

melek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

allcustoms mal-w

simple5e's Issues

Create a "Standard NPC" token or macro converter that only shows output to owners.

Is your feature request related to a problem? Please describe.
The Standard Token shows all rolls to everybody when rolling; In other words, players always roll 'in the open'. However, if the GM wants to make an NPC based on the Standard Token they may not want to roll In the Open.

Describe the solution you'd like
Create a copy of the Standard Token which replaces or adds /say with /self in all tokens. This creates additional update overhead if tokens are ever changed, however, and won't work with created attack macros without some heavy modification.

An alternative: create a GM macro which converts all a token's macros to/from /say and /self. This option may be a bit better, but is going to be more complex and may require redesign of some macros which us broadcast (though broadcast should be avoided generally for trust issues). It also would necessitate a new checkbox on Create Action or some logic to decide whether the /self a new action macro.

'Dead' state too distracting

The 'Dead' state is very clear, but is distracting once other tokens are on top and around dead NPC tokens.

Some ideas to consider:

  • Lowering the opacity of dead NPCs
  • Having a different 'Dead' state just for NPCs that isn't as visually distracting
  • Darken the whole 'Dead' state image so it has less contrast and 'fades' to the background better.

Macrolinks from the Character Sheet don't work for players

Describe the bug
Players trying to use the character sheet get the following error:
You do not have permission to call the "broadcast" function.

This of course is bad, because it makes the character sheet click-functions which use broadcast (skills, saves, ability checks) useless to players.

This occurs in both versions I tested, 1.5.14 and 1.7.0.

To Reproduce
Steps to reproduce the behavior:

  1. Have a connected client open the 'Sheet' macro on an owned token.
  2. Click any skill.
  3. See error.

Expected behavior
Players should be able to actually use these buttons.

Allow Bonus to Skill Checks

It would be nice if there were a way to provide a permanent bonus or penalty to skill checks to skills such as stealth or perception.

In many cases in D&D It's appropriate for characters to earn small permanent bonuses to skill abilities: For instance in my campaign joining a faction (such as Emerald Enclave or Harpers) provides bonuses after training to some skills checks. There are also magical items and effects that do the same.

It would be a nice to have if I could tell the system that there was a bonus for Character Token X's Perception skill or Token Y's Animal Handling and Nature checks.

NOTE: I am not saying this is a good idea. :) This might not fit the framework in any way. Given the "simplistic" intent of Simple5e it might be the CORRECT thing to do to say "add those bonuses manually to the skills / checks you wish by modifying the macros on the character sheets for those who have them". However since Attack and Damage macros do have the concept/ability of adding special bonuses (I assume for magical weapons and such) it's worth at least considering what the implications of doing that "add random bonus" for skill checks (along with potentially saves) means.

Players see remaining HP of NPCs when using Damage NPC macro

Describe the bug
Players see the remaining and total HP of NPCs when using the Damage NPC macro. This info should be only be available to the GM.

To Reproduce
Steps to reproduce the behavior:

  1. As a player, use the Damage NPC macro on a NPC
  2. The output you get gives a lot of info: Dragon's updated HP: 8/10 (took 1)

Add-on configuration options

Is your feature request related to a problem? Please describe.
Some add-ons such as Merudo's Spell Library and Bobifle's 5e Monster Tokens may expose data that some GMs would prefer to keep secret.

Describe the solution you'd like
It would be useful if there was a GM macro which loads a central options panel to configure detected library tokens compatible with Simple5e.

The two main features I personally want:

  • Hide ACs, bonuses, and DCs from monsters in Merudo's Spell Library.
  • Hide or limit attack output from Bobifle's tokens, possibly even heavily modify to roll damage with a click instead of automatically.

'Jack of All Trades' misses passive skills

Describe the bug
The new Jack of All Trades macro simply doesn't update the passive skills.

Expected behavior
These should be updated with other skills during the process.

'roll0' typo in Create Action macro

Describe the bug
When creating an action with 'Create Action' and unchecking the 'Check if the character adds their proficiency bonus'. The final macro expression will say ([t: roll0 + StrMod + ...]). instead of the expected "([t: roll + StrMod + ...])"

To Reproduce

  1. Create Action
  2. Don't add proficiency bonus to the attack roll
  3. Run macro
  4. Be greeted with 'Enter a value for roll0'

Expected behavior
Macro runs flawlessly

Desktop (please complete the following information):

  • OS & Version: [I use arch btw]
  • MapTool Version: [e.g. 1.8.0 Beta 2]

Create Action Button Generates Incorrect Code for Managing Custom Counters

Describe the bug
As per our Discord Conversation, the "Create Action" button, when generating code for managing custom counters, has a bug in it with regards to subtracting counters. In several cases you will end up getting (-) numbers in your counter and usually you end up subtracting more than you should and thus have less uses for your abilities based on that counter than you should. Repro steps below.

To Reproduce
Steps to reproduce the behavior:

  • Create a Custom Counter, Give it 3 Uses.
  • Create an ability that subtracts from that custom counter, give it 1 Cost.
  • Run the ability 3 times and note that as you hit 1 use left in the counter and then run it's last use the counter number jumps from 1 to -1 instead of to 0.

Observed
Using counters close to their final uses causes counters to roll over into the negative numbers.

Expected behavior
Counters properly count down by their use cost to 0 and do not go negative.

Desktop (please complete the following information):

  • OS & Version: Windows 10 (all OS's)
  • MapTool Version: 1.6.1
  • MapTool Install type: Fresh 1.6.1
  • Framework: Simple5e

Additional context
In the generated code, we find the following:

[h: "<!-- If the token has the counter resources, roll the attack. -->"]
uses {PronounPossessive} Necrotic Shroud (Lasts 1 Minute).
[h: "<!-- Alter the counter and reload Character Sheet if present. -->"]
[h: vCounterMax = json.get(vCounter, "max")]
[h, if(isNumber(vCounterMax)), code: {
		[vNewCounterValue = vCounterValue + vCounterCost]
		[if(vCounterMax > vNewCounterValue): vCounterCost = vCounterMax - vCounterValue]
};{}]
[h: vCounter = json.set(vCounter, "value", vCounterValue - vCounterCost)]
[h: CustomCounters = json.set(CustomCounters, vCounterIndex, vCounter)]

Take the following case:

  • Max Uses: 3
  • Current Uses Left: 1 (so 1/3 showing on the character sheet)
  • Ability Cost: 1

Line 5: vCounterMax = 3
Line 6: Passes the if Check
Line 7: vCounterValue = 1, vCounterCost = 1, so vNewCounterValue = 2.
Line 8: (This is where the problem occurs). vCounterMax = 3, vNewCounterValue = 2, so vCounterMax > vNewCounterValue. This means vCounterCost = vCounterMax(3) - vCounterValue(1), so vCounterCost = 2...we've just changed the cost of the ability.
Line 9: Closes the If.
Line 10: Resets the vCounter JSON string setting the new "value" to vCounterValue(1) - vCounterCost(2) = -1. Remember that vCounterCost just got updated from 1 to 2 in Line 8.

This skips your counter from 1 to -1, producing the bug.

** Know Fix **
As you noted in Discord, the PROPER code looks like the following:

[h, if(isNumber(vCounterMax)), code: {
     [vNewCounterValue = vCounterValue - vCounterCost]
     [if(vNewCounterValue > vCounterMax): vCounterCost = vCounterMax - vCounterValue]
};{}]

To fix this for generation:

  • Open GM Window
  • Right Click on "Create Action" button in the GM Panel
  • In the code popup, find line 352 (will be a boatload of HTML String Characters)
  • Replace line 352 with the following:

"%0A%09%5Bh%3A+%22%3C%21--+Alter+the+counter+and+reload+Character+Sheet+if+present.+--%3E%22%5D%0A%09%5Bh%3A+vCounterMax+%3D+json.get%28vCounter%2C+%22max%22%29%5D%0A%09%5Bh%2C+if%28isNumber%28vCounterMax%29%29%2C+code%3A+%7B%0A%09%09%5BvNewCounterValue+%3D+vCounterValue+-+vCounterCost%5D%0A%09%09%5Bif%28vNewCounterValue+%3E+vCounterMax%29%3A+vCounterCost+%3D+vCounterMax+-+vCounterValue%5D%0A%09%7D%26semi%3B%7B%7D%5D%0A%09%5Bh%3A+vCounter+%3D+json.set%28vCounter%2C+%22value%22%2C+vCounterValue+-+vCounterCost%29%5D%0A%09%5Bh%3A+CustomCounters+%3D+json.set%28CustomCounters%2C+vCounterIndex%2C+vCounter%29%5D%0A%09%5Bh%2C+if%28isFrameVisible%28token.name+%2B+%22+-+Character+Sheet%22%29+%26%26+hasMacro%28%22Sheet%22%29%29%2C+code%3A+%7B%0A%09%09%5Bmacro%28%22Sheet%40TOKEN%22%29%3A%22%22%5D%0A%09%7D%26semi%3B%7B%7D%5D%0A%7D%5D"]

It and the surrounding lines should look like the following:
(Lines 348 - 356, with line 352 replaced as above)

[h, if(vActionHasCounterCost), code: {
	[if(vInfo): log.info("Calculating Custom Counter adustment...")]
	[vEncodedCounterCmdA = "%0A%5Bh%3A+%22%3C%21--+Counter+Options+--%3E%22%5D%0A%5Bh%3A+vCounterName+%3D+%22COUNTERNAME%22%5D%0A%5Bh%3A+vCounterCost+%3D+COUNTERCOST%5D%0A%0A%5Bh%3A+%22%3C%21--+Grab+Counter+Info+--%3E%22%5D%0A%5Bh%3A+vCounter+%3D+json.get%28json.path.read%28CustomCounters%2C+%27.%5B%3F%28%40.name+%3D%3D+%22%27+%2B+vCounterName+%2B+%27%22%29%5D%27%29%2C+0%29%5D%0A%5Bh%3A+vCounterIndex+%3D+json.indexOf%28CustomCounters%2C+vCounter%29%5D%0A%5Bh%3A+vCounterValue+%3D+json.get%28vCounter%2C+%22value%22%29%5D%0A%0A%5Br%2C+if%28vCounterValue+%3C+vCounterCost%29%2C+code%3A+%7B%0A%09%5Bh%3A+%22%3C%21--+If+the+token+lacks+the+counter+resource%2C+warn+and+stop.+--%3E%22%5D%0A%09%5Bh%3A+vCounterCategory+%3D+json.get%28vCounter%2C+%22category%22%29%5D%0A%09%5Bh%3A+vCounterMax+%3D+json.get%28vCounter%2C+%22max%22%29%5D%0A%09%5Bh%2C+if%28vCounterMax+%21%3D+%22%22%29%3A+vCounterMax+%3D+%22%2F%22+%2B+vCounterMax%5D%0A%09can%26%2339%26semi%3Bt+do+that%21+%28%5Br%3A+vCounterValue%5D%5Br%3AvCounterMax%5D+%5Br%3AvCounterName%5D+left%2C+need+%5Br%3A+vCounterCost%5D%29.%0A%7D%26semi%3B%7B%0A%09%5Bh%3A+%22%3C%21--+If+the+token+has+the+counter+resources%2C+roll+the+attack.+--%3E%22%5D%0A"]
	[vEncodedCounterCmdB = 
"%0A%09%5Bh%3A+%22%3C%21--+Alter+the+counter+and+reload+Character+Sheet+if+present.+--%3E%22%5D%0A%09%5Bh%3A+vCounterMax+%3D+json.get%28vCounter%2C+%22max%22%29%5D%0A%09%5Bh%2C+if%28isNumber%28vCounterMax%29%29%2C+code%3A+%7B%0A%09%09%5BvNewCounterValue+%3D+vCounterValue+-+vCounterCost%5D%0A%09%09%5Bif%28vNewCounterValue+%3E+vCounterMax%29%3A+vCounterCost+%3D+vCounterMax+-+vCounterValue%5D%0A%09%7D%26semi%3B%7B%7D%5D%0A%09%5Bh%3A+vCounter+%3D+json.set%28vCounter%2C+%22value%22%2C+vCounterValue+-+vCounterCost%29%5D%0A%09%5Bh%3A+CustomCounters+%3D+json.set%28CustomCounters%2C+vCounterIndex%2C+vCounter%29%5D%0A%09%5Bh%2C+if%28isFrameVisible%28token.name+%2B+%22+-+Character+Sheet%22%29+%26%26+hasMacro%28%22Sheet%22%29%29%2C+code%3A+%7B%0A%09%09%5Bmacro%28%22Sheet%40TOKEN%22%29%3A%22%22%5D%0A%09%7D%26semi%3B%7B%7D%5D%0A%7D%5D"]
	[vEncodedCounterCmdA = replace(vEncodedCounterCmdA, "COUNTERNAME", vCounterSelected)]
	[vEncodedCounterCmdA = replace(vEncodedCounterCmdA, "COUNTERCOST", vCounterCost)]
	[vToolTips = listAppend(vToolTips, "[r: 'Adjusts Counter: " + vCounterSelected + "']")]
};{

Convert 5e Monster Token should allow you to change the monster's name.

Is your feature request related to a problem? Please describe.
A common pattern in D&D is to have a template (such as 'Commoner') with a different name. However, Bobifle's tokens hardcode the name throughout the macros as well as storing it in the mName property and the token name.

Since players usually convert tokens they intend to use as NPCs, this would be a valuable additional feature. A prompt when converting a monster token would be a great addition to the framework.

Invisibility state doesn't reset properly when Remove All is used.

Describe the bug
Invisibility state doesn't reset properly when Remove All is used.

To Reproduce
Steps to reproduce the behavior:

  1. Select an NPC token
  2. In the Campaign Macros window, set Invisibility using the macro button
  3. In the Campaign Macros window, remove Invisibility by using the Remove All macro button
  4. In the Campaign Macros window, set Invisibility using the macro button
  5. In the Chat window, the phrase "NPC appears" is emitted.
  6. On the NPC, no state icon appears.

Expected behavior
At step 5 we should see the Invisibility state described in the Chat.
At step 6 we should see the Invisibility state icon appear on the NPC.

Desktop (please complete the following information):
==== MapTool Information ====
MapTool Version: 1.6.1
MapTool Home...: /home/rogue/.maptool-rptools
Max mem avail..: 3 GB
Max mem used...: 314 MB
Custom Property: -DMAPTOOL_DATADIR=.maptool-rptools

==== Java Information ====
Java Vendor.: Oracle Corporation
Java Home...: /opt/MapTool/runtime
Java Version: 10.0.2

==== OS Information ====
OS Name........: Linux
OS Version.....: 5.6.8-1-MANJARO
OS Architecture: amd64
PATH...........: /home/rogue/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
Number of Procs: 4

==== Locale Information ====
Country.: United States
Language:
Locale..: United States
Variant.:

==== Encoding Information ====
Default Locale: _US
Default Charset: UTF-8
file.encoding: UTF-8
sun.jnu.encoding: UTF-8
Default Encoding: UTF8

Additional context
Fairly fresh install as I experiment and build my default campaign file.

Roll Initiative campaign macro exposes Initiative and has bad tooltip

The 'Roll Initiative' Campaign macro needs to prevent players from seeing the initiative bonus when it is rolled by mousing over the roll tooltip.

Additionally, the macro tooltip (not the roll tooltip!) says the same thing as the Token version of the macro: 'Rolls your initiative.'

Add 'libAuthor' as a basic token property

Is your feature request related to a problem? Please describe.
I want to see some basic data about library tokens. A libAuthor property is a good place to store the author of a library. This encourages the field to be used by library authors who are working from Simple5e, and since the framework encourages tinkering and sharing this is a natural feature addition.

Describe the solution you'd like
Add libAuthor as a Basic token property so it is easy to view and edit in this framework.

Describe alternatives you've considered
Set with a macro. Not viewable or user friendly.

Hide health bar to players

Unable to change health bar visibility for players. I want in Edit > Campaign Properties > Bars tab. I remove the checkbox, I press refresh. The state is not saved.
What to do?

Some tooltips too large

When large tooltips are displayed, they can easily obscure other buttons.

I want to reconsider informative tooltips that are more than 2-3 lines long, especially for macros near the bottom of a panel (such as the 'Create Action' and 'Custom Counters' macros).

Not sure what the best solution is yet since those tooltips are helpful for new users.

Wiki links in the manual points to the old wiki

Describe the bug
Wiki links are outdated. E.g. http://lmwcs.com/rptools/wiki/Introduction_to_Tokens
should be https://wiki.rptools.info/index.php/Introduction_to_Tokens

To Reproduce
Steps to reproduce the behavior:

  1. Open the Simple 5e manual
  2. Scroll to bottom
  3. Click on link "Campaign Frameworks"
  4. Observe some kind of "This domain is for sale" page

Expected behavior
The links should be correct.

Desktop (please complete the following information):

  • OS & Version: Windows 10
  • MapTool Version: 1.11.5
  • MapTool Install type: Fresh

Provide Advantage/Disadvantage Rolls on Attack and Critical Damage

It would be exceptionally useful if attack/damage macros would roll not only base but Advantage/Disadvantage for attacks and Base Damage and Critical Damage for hits.

Currently in Simple5e the only way to provide "Advantage" or "Disadvantage" is to click the attack roll twice which isn't so bad but could be simplified by having the generated macro roll 1d20 2 times, determine which is lower/higher, set Base, Adv, Dis and then add bonuses such as you'd see:

Such and Such attacked with her BattleAxe! (16) (Adv: 18, Dis: 16)

WORSE, rolling critical damage cannot be done within the 5e Framework without "outside" dice rolls. Because critical damage is rolled BEFORE applying bonuses, you can't simply click the "Damage" macro twice. Instead, you must click the damage macro to get the first roll + bonus and then go to an outside die roll for the critical damage.

Having the damage macro roll both Base and Critical Damage would be exceptionally helpful such as:

Such and Such deals 7 slashing damage with her BattleAxe! (Crit: 15)

(NOTE: Critical gets a bit weird since there are a bunch of supported ways of handling criticals. For imcMonsterCreator I opted to go for a route that allowed the end user to modify a property with a formula for calculating critical hits: So if the property says "%{dice1}+%{dice2}+%{add}" then it's damage dice + damage dice + bonus, vs a property that reads "2*%{dice1} + %{add}" which would be 2x the first damage dice rolled + bonus damage.

Conversely, for Simple5e I think it would be appropriate just to implement the base critical formula (dice + dice + bonus) and let the end-user modify that as needed within the generated macros...)

Again, given the concept of Simple5e it's possible that the answer here is "double rolling attacks is the intent for advantage/disadvantage and for critical, just mouse over the output number, and do what you will with it since it shows the formula and dice rolls..."

Issue with button overflow in Maptool 1.12.0, 1.12.1

Describe the bug
This was originally posted in Discord

Hi @melek, I was just noticing in the 1.12.X (I'm specifically running 1.12.1), the campaign buttons for the campaign buttons render a little funny. In my first screenshot you can see how the 1dX all wrap, and the Concentrat. button wraps as well.

I'm not sure if this is the root issue, but the Min Width is set to 10px. (see second screenshot)

Removing that value seems to fix it since it auto shrinks to fit the contents (third screenshot, specifically the d4 button is fixed)...

If the goal was to make them all consistently sized then this might not be a perfect solution since auto-sizing would make all the buttons different sizes.. I would have suggested setting the Min Width using units of em... so like 4em would make sure there is no overflow for all die rolls and the buttons would be the same size... However setting Min Width using units of em doesn't do anything.

I can help maybe? I don't mind going through the 2.2.1 version of your campaign framework and updating this stuff to remove the Min Width setting, if that's what you think is best.. For the em stuff not working in the Min Width setting I'm not so sure what the right thing to do is.. maybe open an issue or mention it in #general_support ?

To Reproduce
Steps to reproduce the behavior:

  1. Open Version 2.2.1/Meleks Simple 5e v2.2.1.cmpgn in Maptool version 1.12.0 or 1.12.1.

Expected behavior

  1. For sure there shouldn't be wrapping on buttons.
  2. Optionally (maybe very important depending on your point of view) the buttons of the same type should be the same size.

Screenshots
image
image
image

Desktop (please complete the following information):

  • OS & Version: Ubuntu 20.04
  • MapTool Version: 1.12.1
  • MapTool Install type: Source install of 1.12.1 (i.e. running it using gradle run).

Additional context
Used to edit the macros:
https://discord.com/channels/296230822262865920/951780566653632532/1014776545321156648 bulk edit macro props

Tweak Token overwrites formulas

Describe the bug
Tweak Token fails to display formulas, instead overwriting them with their result.

To Reproduce
Steps to reproduce the behavior:

  1. Use the new (2.2+) Jack of All Trades macro on a token
  2. Double click the token and review the 'InitiativeBonus' property. It should be [r: floor(Proficiency/2)]. Close the window.
  3. Select the token and click 'Tweak Token'. Note that 'InitiativeBonus' is an integer value. Hit 'Ok',
  4. Double click the token and review the 'InitiativeBonus' property again. It is now the integer value, instead of the formula.

Expected behavior
Formulas need to be preserved and editable when Tweaking a token.

Feature Request: Add a healing die roll to Custom Action options

Is your feature request related to a problem? Please describe.
I made a Healing Light (Celestial Warlock Class Feature) Custom Counter and a matching Custom Action. I was hoping to add a die roll (1d6) for each counter used but I could only choose to damage.

Describe the solution you'd like
A healing option alongside the damage option.

Describe alternatives you've considered
I took a look at the damage one to see if I could use it, but... :)

Additional context
This might be useful for other abilities, like the Paladin's Lay on Hands or for Goodberry

Well, maybe not Goodberry, but Magic Initiate would have a counter of 1 and could have either Cure Wounds or Healing Word. Maybe a Healer's Kit on a character with the Healer feat.

I can think of one magic item, too: a Staff of Healing has 10 charges and can cast Cure Wounds and Mass Cure Wounds.

Late edit: And now that I think of it, if you have a Custom Counter for your spell slots, a Custom Action to cast Cure Wounds or any other healing spell could link to that counter. (Man, you've made a clever, flexible thing!)

'Macro Search and Replace' stumbles on RegEx meaningful characters that pass 'encode()'

Describe the bug
'Macro Search and Replace' stumbles on RegEx meaningful characters that remain after running 'encode()'. This mainly affects asterisks (*), but might affect other characters as well.

Additional context
The 'Macro Search and Replace' utility uses a goofy double encode() pattern to try and overcome regex characters, but this isn't necessary. "\\Q" + vSearchString + "\\E" is a regex native way to preserve strings that may have problematic formatting much more simply and reliably than the double-encode method.

Tweaking Values not loading when configuring new PC tokens

When creating a new PC token and clicking "Configure Token" in the GM Token Management macro group, the Tweaking Values popup does not load. The following error is printed to chat instead.

Invalid condition in IF(getSightType() == "Normal") roll option.       
Statement options (if any): if(getSightType() == "Normal")       
Statement Body : vSightTypeIndex = 0; vSightTypeIndex = if(getSightType() == "Darkvision", 1, 2)

Players are able to access this page through their respective sheet, and using "Configure Token" on an otherwise configured token does not reproduce the issue.

Edit: formatting

'Create Action' macro not working for players

Describe the bug
A group was unable to have players create custom actions with the 'Create Action' macro in the Campaign panel.

There is a workaround in https://github.com/melek/Simple5e/wiki/Simple-5e-2.0-Repair-instructions, but needs testing/fixing.

To Reproduce
Steps to reproduce the behavior:

  1. Log in as player to a server.
  2. Have a token assigned by the GM.
  3. Attempt to make a macro with 'Create Action'.
  4. See error - NPE instead of a new macro.

Expected behavior
Macro should be created.

Desktop (please complete the following information):

  • MapTool Version: 1.6.1

Additional context
GM Panels are not retaining 'Trusted' context for players correctly in MapTool (RPTools/maptool#1812)

Convert 5e Monster Token should load default macros.

Is your feature request related to a problem? Please describe.
Converting 5e macro tokens enables the standard Simple5e macros, but leaves it up to the GM to actually import these macros - which is annoying.

Describe the solution you'd like
Instead, macros should be optionally loaded onto the token. They can be loaded from the Standard Token, or from any Standard NPC type token/solution from #33 to conserve GM secrecy for rolling.

Additional 'Other States' for generic buff/debuff, Raging, Hex, Marked, and other basic effects

Is your feature request related to a problem? Please describe.
The current states don't cover some essential abilities, and for a range of other abilities a generic pair of 'buff/debuff' states would help DMs and players keep track without a specific state for every possible effect.

Describe the solution you'd like
I want states for Raging, Hexed, Hunter's Mark, Faerie Fire, Bardic Inspiration, and other common states needed at level 1. I don't want so many that it greatly increases complexity, but more are certainly needed.

In addition/alternatively, two generic 'Buff' and 'Debuff' buttons would be useful to remember infrequent effects without having to trigger a different state.

Describe alternatives you've considered
Reusing other states and ignoring the text. Using the right-click menu or token editor to add buff/debuff states without chat text triggering. Reusing states in new macros. Creating new states.

All these are fine, but for new players the very basic states level 1 characters may use are a huge convenience.

Additional context
One player has been working to try to make basic Rage mechanics work, and its been more onerous than it should be just to play that first session.

Identify Critical Fails along with Critical Hits

In attack macros, there is already a detection for critical hits, however there is no corresponding detection for critical failures. With + to hits, especially on higher CR creatures, it can be difficult (without mousing over every roll) to determine that an 18 is ACTUALLY a critical fail.

It would be nice (along side the text that says "Such and such CRITICALLY HITS with attack" if it also said "Such and such CRITICALLY FAILS with attack" as well.

Add TempHP to NPC Damage/Healing calculations

Damage and Heal NPC macros don't consider TempHP. While this was intentionally left out, they should totally consider TempHP for consistency, at very least so they can be used on Player tokens without breaking anything.

Current plan is to make these nearly identical to the token versions, except that they will use the 'Approximate' health bar - unless the regular health bar is already active.

Cannot add custom counter: You do not have permission to call the "log.info" function

Describe the bug
Attempting to add a custom counter gives: You do not have permission to call the "log.info" function., without opening the window.

To Reproduce

  1. On fresh Simple5e 2.1 campaign (also verified with 2.0), click on Standard Token> GM > Custom Counters
  2. Click Add New Counter
  3. No window pops up, and You do not have permission to call the "log.info" function. shows in chat.

Expected behavior
Custom Counter creation window should show.

Screenshots
image

Desktop (please complete the following information):

  • OS & Version: Windows 10 (Version 10.0.18363.836)
  • MapTool Version: 1.7.0
  • MapTool Install type: Ran installer to upgrade from beta2 => stable

Additional context
Bug was not present with MapTool 1.7.0 betas, just tried downgrading to beta2 and the bug was not present.

Provide pre-made macros for SRD weapons

Is your feature request related to a problem? Please describe.

Currently, DMs and players need to manually create macros for each of their weapon. This is tedious and error prone.

Describe the solution you'd like
The SRD includes information about most non-magical weapons. It would be great to have pre-built macros for those weapons.

These macros could be accessible by pressing the "Create Action" button and selecting the desired weapon in a drop-down menu.

Jack of all trades

Is your feature request related to a problem? Please describe.
Jack of All Trades is a popular feature and would be nice to implement in the framework.

Describe the solution you'd like
A single button toggle for Jack of All Trades in the character sheet setup

Describe alternatives you've considered
None

Invisibility macro hard to understand and shows rules to players when GM clicks it

Describe the bug
This Invisibility macro is from Paulstrait's original framework, and has some issues.

  • Arbitrary limitations (can only invis 1 token at a time)
  • Coded in a roundabout way that is a little hard to read
  • The Invisibility macro has the following comment, but doesn't actually do what the comment says:
    <!-- send Disappear/Appear message to everyone only if we are a player. GM toggles should be silent. -->

Expected behavior
I want the invisibility macro to work on all selected tokens, be easier to understand, and work like the comment describes; it would be useful for GMs to hide tokens without alerting players.

  • Add to Campaign File
  • Add to Wiki
  • Add to Patch Token

Concentration

When setting concentration, leaving "Immediately roll saving throw" unchecked, user is prompted for "vAutoFail" and "vMsg"

/me
[h: "<!-- If not concentrating, let player set concentration. -->"]
[h, if(state.Concentrating == 0), code: {
	[vInput = input( "header | <html><h2 style='width:150px;text-align:center;'>You're not<br>concentrating.</h2><br><hr> | | LABEL | SPAN=TRUE",
	"header | Enter what to concentrate on: || LABEL | SPAN=TRUE",
	"Concentration | " + if(length(Concentration) > 0, Concentration, PronounPossessive + " spell") + 
		" || TEXT | SPAN=TRUE WIDTH=24", 
	"vDoRoll | 1 | Immediately roll saving throw | CHECK |")]
	[abort(vInput)]
	[state.Concentrating = 1]
};{ 
	[vDoRoll = 1] 
}]

[h, if(vDoRoll), code: {
	[abort(input("vDamage|0|Enter damage to save against|TEXT|WIDTH=4", "vAutoFail | 0 | Check to stop concentrating | CHECK"))]
	[if(vAutoFail), code:{
		[vGrammarHelper = " on "]
		[if(Concentration == ""): vGrammarHelper = ""]
		[vMsg = "stops concentrating" + vGrammarHelper + Concentration + "."]
		[state.Concentrating = 0]
		[resetProperty("Concentration")]
	};{}]
};{}]

[h, if(vDoRoll && !vAutoFail), code: {
	[h, if(vDamage < 0): vDamage = 0]
	[vSaveDC = floor(vDamage / 2)]
	[if(vSaveDC < 11): vSaveDC = 10]
	[vSaveRoll = 1d20]
	[vSaveTotal = vSaveRoll + ConMod + (ConSave * Proficiency)]
	[vSaveToolTip = "(<span style='background-color:#efefef' " + 
		"title='1d20 + ConMod + (ConSave * Proficiency) = " +
		vSaveRoll + " + " + ConMod + " + " + ConSave + " * " + Proficiency + " = " +
		vSaveTotal + "'>" + vSaveTotal + " vs DC " + vSaveDC + "</span>)"]
	[vGrammarHelper = " on "]
	[if(Concentration == ""): vGrammarHelper = ""]
	[if(vSaveTotal >= vSaveDC), code: {
		[vMsg = " <b>maintains concentration</b>" + 
			vGrammarHelper + Concentration + ". " + vSaveToolTip]
	};{
		[vMsg = "<b style='color:red;'>" + " loses concentration</b>" + 
		vGrammarHelper + Concentration + "! " + 
			vSaveToolTip]
		[state.Concentrating = 0]
		[resetProperty("Concentration")]
	}]
};{}]

[r: vMsg]

Simple 5e does not comform to dark themes

Describe the bug
The framework does conform to the colors of dark themes.
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Switch to a dark theme, e.g. GitHub Dark (Material)
  2. Load the Simple5e campaign

Screenshots
image

Desktop (please complete the following information):

  • OS & Version: Windows 11
  • MapTool Version: e.g. 1.13.2]
  • MapTool Install type: Fresh

Additional context
Updating the framework to use frame5() instead of frame() solves some of the issue but other things break.
image

Player Quickstart internal link hidden behind manual window

The Player Quickstart link on the 'Setting Up MapTool' article opens a second frame to display the Quickstart guide without moving off the current guidebook page.

The new frame opens in the same default position as the manual, but only shows up behind the manual frame - and is impossible to notice until you move the guidebook page, causing confusion for new users.

The Quickstart frame should show up above the calling frame, and ideally in a different position or size so it is intuitive for users.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.