
I used raw data, CTRL+A, CTRL+C and pasted with CTRL+V.
I checked API server and no issue there nor crash.
After I try the !ct command, this is what comes up.
"handleInput"
"Msg:!ct"
"handleInput"
"Command:ct"
"Action:undefined"
"Condition:undefined"
Victor B. said:
and that's correct, the menu should display.
Yeah, but it doesn't display and the API screen show that command is unknown. Maybe I could have you in my game and you can see the issue.
Victor B. said:
@Kevin, can you post the changes you made and I'll quickly integrate them.
Sent you a pull request, seemed the easiest option. Look it over. May not be the best way to implement this but feel free to reject and just grab the bits you need.
if((getCurrentTurn()||{id:null}).id === obj.get('id')){
The Aaron posted that fix in the line on one of the pages here! Might be useful to add that fix for the next version :)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
I am getting the exact same error as Kilter. As soon as you stop the new combat tracker it will crash. Tried deleting tokens off of every other map,but it still happens.
Kilter said:
Hey, getting the following error
Your scripts are currently disabled due to an error that was detected. Please make appropriate changes to your scripts and click the "Save Script" button and we'll attempt to start running them again. More info...
For reference, the error message generated was:
TypeError: Cannot read property 'id' of undefined TypeError: Cannot read property 'id' of undefined at handleGraphicMovement (apiscript.js:11044:33) at eval (eval at <anonymous> (/home/node/d20-api-server/api.js:154:1), <anonymous>:65:16) at Object.publish (eval at <anonymous> (/home/node/d20-api-server/api.js:154:1), <anonymous>:70:8) at TrackedObj.set (/home/node/d20-api-server/api.js:1023:14) at updateLocalCache (/home/node/d20-api-server/api.js:1321:18) at /home/node/d20-api-server/api.js:1505:11 at /home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:93:560 at hc (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:39:147) at Kd (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:93:546) at Id.Mb (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:93:489) at Rd.Ld.Mb (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:94:425)
It seems to happen when every I use the Stop Combat command and have the PC tokens copied on more than one page. (i.e. PC tokens on Start/Landing Page and the same tokens on a battle map.) If I just clear the tracker without stopping the combat it doesn't happen, but doing this also doesn't reset the Round number.
All I have to say is thank you to those of you that are writing these scripts they by far make these games so much smoother and I know my players are thankful to have them in game!
@Newien, I will change that command
One problem is when you have stop on close to false. This means you close down the turnorder and combat tracker is still actively managing without a turnorder. The above command you listed might remove the error, but the better solution is to remove that command entirely from CT and always close down combat when either you stop combat via CT or close down the turnorder.
I'm don't believe the issue is related to copied tokens. I copy tokens all the time and have same tokens on start page and don't get this error. I'm not 100% confident on what I just wrote because TheAaron mentioned an issue in Roll20 related to copied tokens vs tokens dragged from the char sheets. However, I can't recreate this particular error.
I've created a new branch for this latest change after integration @nerwien and @kevins changes. For the display of statuses to players other than GM, I put in a control for it. The Player Toggle option must be set to TRUE under Status Setup menu. The new branch with 1.1.11 is here https://github.com/vicberg/Combattracker/blob/1.1.11/combattracker.js
Victor B. said:
I've created a new branch for this latest change after integration @nerwien and @kevins changes. For the display of statuses to players other than GM, I put in a control for it. The Player Toggle option must be set to TRUE under Status Setup menu. The new branch with 1.1.11 is here https://github.com/vicberg/Combattracker/blob/1.1.11/combattracker.js
Awesome. Looking forward to trying this out. Thanks for integrating those changes.
Everyone, remember you can't run the Status Info Script along side the new Combat Tracker. Status info is already incorporated into Combat Tracker. If you do run both, your session state will get messed up, because both script will be competing against each other and that will cause all sorts of issues.
Would it save some headache (or is it even possible) for Combat Tracker to somehow check for the presence of Status Info and throw up a warning?
1.1.11 Testing:
The !ct show command as a player is working as expected.
Doing a !ct doesn't send anything to the player, instead the ct menu is sent to the GM.
Victor B. said:
did you set the above options? what are you expecting?
Yes I did.
It would be good for the !ct menu to go to players as well. That way they can directly add conditions to their character from the menu instead of it having to be the GM doing it.
Ideal world, its a modified version of the menu essentially without the top banner, or with only the !ct show and next turn command icons on that top banner as players shouldn't have access to the others.
My primary goal is that players are able to manage the conditions on their own characters. From assigning conditions to the character, and removing them. The show command works great to allow removal, but currently it looks like only !ct add works for players, and that is much harder to use than giving them the nice menu.
Kevin here is the maco I use that should allow your player to be able to add/remove conditions to their token. It may need some edits to match your needs.
!ct ?{Action?|add|remove} ?{Condition?bardic-inspiration|bane|blessed|blinded|bloodied|charmed|deafened|disadvantage|dodging|dying|faerie-fire|fly|frightened|grappled|guidance|haste|heroism|hex|hunter's-mark|incapacitated|inspiration|invisibility|paralyzed|petrified|poisoned|prone|protection-good/evil|raging|ready|reckless|restrained|shield-of-fate|sanctuary|slowed|stunned|surprised|unconscious|unwavering-mark|vow-of-enmity} 0 0
Kilter said:
Kevin here is the maco I use that should allow your player to be able to add/remove conditions to their token. It may need some edits to match your needs.
!ct ?{Action?|add|remove} ?{Condition?bardic-inspiration|bane|blessed|blinded|bloodied|charmed|deafened|disadvantage|dodging|dying|faerie-fire|fly|frightened|grappled|guidance|haste|heroism|hex|hunter's-mark|incapacitated|inspiration|invisibility|paralyzed|petrified|poisoned|prone|protection-good/evil|raging|ready|reckless|restrained|shield-of-fate|sanctuary|slowed|stunned|surprised|unconscious|unwavering-mark|vow-of-enmity} 0 0
Yeah that works decently, its just nice to get the visual menu and be able to set the duration so easily. A nice to have feature for sure. Having !ct show working is definitely the more important one.
If you modify the end where the 0 0 are you can add
?{Duration in Round|0} and then ?{Rate of change(add + or -)|0}
I believe this well set it for each time it is added and not overwrite the saved information for the condition. Unless that is what you are asking for.
Victor B. said:
Messages were dropped in this initial version. I'm planning on adding them back in
Any news on the messages, Victor? :) I find myself going back to ancient releases just to have them ready and would really like to see them added in a more stable version.
A new version is found here: https://github.com/vicberg/Combattracker/blob/1.1.12/combattracker.js
This part of the Status Setup Menu is used to turn on or off player toggle.
It will now display a drop down containing the players, GM and an ALL command. The GM option may be set if desired but is optional because the GM will always get a menu displayed. If set to ALL, all players will see a menu when the GM opens CT. If set to a specific player (who may be the manager of conditions on tokens to save effort for the GM), then that player and GM will receive menus. So as a GM, you can set to yourself only, ALL or an individual player. There won't be a way to specify more than one individual player. I'm not going to add that.
At this point the full tracker menu will always be sent to the GM. A partial tracker menu will be sent to all players (with ALL) option or a specific player if you want one player to manage statuses on tokens. The partial tracker menu will only have the ADD/REMOVE icons displayed and these icons will only add or remove conditions from tokens. Players won't be able to define their own personal favorites because CT doesn't track session state by player and I'm not going to add that either. The GM will need to define a common list of favorites for all of the players and the GM will need to set the CT display to favorites if the GM wants a smaller list of conditions to display.
I removed senderID from Kevin's version. That version was sending ability for players to edit statuses, etc., which I don't want in CT and sending menus to specific players based on what they did. That concept may work for Kevin obviously, but I don't want that for CT as a whole. It was showing edit condition and favorites which affects the entire game. I put a bit less flexibility while supporting the concept of players using the menus. Some players simply aren't mature enough when present with something they can play around with. When the GM brings up the menu it will go to all players regardless if only one player needs it or not. Each time the tracker menu is displayed it will go to ALL players (or specific) and GM will always see the menu as is currently happening. This was the most direct forward way to implement this.
@ravenknight, not yet on messages. The parsing of commands in CT is very basic and problematic. I need to switch to TheAaron style of messaging which uses --command, --anothercommand, --athirdcommand. When I make this change I can add messages but everyone's macros will need to change. The current parsing mechanism can't support messages with the additions of other commands without potentially breaking everything else and I don't want have to retest every command in this version.
Is it possible to toggle an option for pulling player's screens on every turn? As the GM, I love the function, but players' screens get pulled into an area where some enemies might be out of sight.
@Gary I'm not understanding the question? Pulling? Are you talking about the centering on the token as you march through the turnorder?
I believe it refers to the PING pull behavior. If you have a token on the gm layer, because say its hidden then the ping pull would expose it to the players. an option to skip the ping on gm layer but not skip the turn might be nice.
Yikes, that's a tough one because now I'd have to check the layer of the token in order to move the marker. You can always go without markers but I tend to run LARGE combats with LOTS of tokens and it can be hard in a group to see who needs to go. Ugg. I see the issue. The resolution might be tricky. What do I do with the marker? Not move it and not center around the GM layer token? Just do nothing I'd guess and leave everything at the last place on the token layer. But then, the GM has to know where that GM layer token is because it's not going to auto-center in order to do something. Again, ugg.
I am not sure how it would look The Aaron might be the better one to ask, but if I understand the new ping pull behaviour, is move all, move player or move none. So I would assume you could have it check if a token is on a layer, and if its on the GM, ping pull would just move none but not skip the turn and move the token highlight if your version still uses that to the gm layer so you can see it but players can't. Don't quote me on this but you might look at turn marker , the last time I used that it did something similar.
Hi,
I suggest changing the READ ME in github as saying to install the one in the master folder and not the ones in the 0.3.0 folder.
I installed the ones in the 0.3.0 and thought I updated but still got the "Error: No attribute or sheet field found for character_id -LihzL_-V9KakPo3SL7x named character_sheet". Now that I have the good one (for anyone looking, it is this one https://github.com/vicberg/Combattracker/blob/master/combattracker.js), I do not have the error anymore and it works great with tokenmod, really well done Victor B.!!
- EDIT: had to reset CombatTracker with the chat menu and re-import again, first time status setup wouldn't open, second time worked -
Worked a little on my conditions, and wanted to share for anyone picking the better Victor B. version, here is my exported status setup :
{"conditions":{"blinded":{"name":"Blinded","description":"<p>A blinded creature can’t see and automatically fails any ability check that requires sight.</p> <p>Attack rolls against the creature have advantage, and the creature’s Attack rolls have disadvantage.</p>","icon":"bleeding-eye","number":0,"favorite":false,"duration":"0","direction":"0","override":false},"charmed":{"name":"Charmed","description":"<p>A charmed creature can’t Attack the charmer or target the charmer with harmful Abilities or magical effects.</p> <p>The charmer has advantage on any ability check to interact socially with the creature.</p>","icon":"broken-heart","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"deafened":{"name":"Deafened","description":"<p>A deafened creature can’t hear and automatically fails any ability check that requires hearing.</p>","icon":"edge-crack","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"frightened":{"name":"Frightened","description":"<p>A frightened creature has disadvantage on Ability Checks and Attack rolls while the source of its fear is within line of sight.</p> <p>The creature can’t willingly move closer to the source of its fear.</p>","icon":"screaming","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"grappled":{"name":"Grappled","description":"<p>A grappled creature’s speed becomes 0, and it can’t benefit from any bonus to its speed.</p> <p>The condition ends if the Grappler is <i>incapacitated</i>.</p> <p>The condition also ends if an effect removes the grappled creature from the reach of the Grappler or Grappling effect, such as when a creature is hurled away by the Thunderwave spell.</p>","icon":"grab","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"incapacitated":{"name":"Incapacitated","description":"<p>An incapacitated creature can’t take actions or reactions.</p>","icon":"interdiction","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"invisibility":{"name":"Invisibility","description":"<p>An invisible creature is impossible to see without the aid of magic or a Special sense. For the purpose of Hiding, the creature is heavily obscured. The creature’s location can be detected by any noise it makes or any tracks it leaves.</p> <p>Attack rolls against the creature have disadvantage, and the creature’s Attack rolls have advantage.</p>","icon":"ninja-mask","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"paralyzed":{"name":"Paralyzed","description":"<p>A paralyzed creature is <i>incapacitated</i> and can’t move or speak.</p> <p>The creature automatically fails Strength and Dexterity saving throws.</p> <p>Attack rolls against the creature have advantage.</p> <p>Any Attack that hits the creature is a critical hit if the attacker is within 5 feet of the creature.</p>","icon":"pummeled","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"petrified":{"name":"Petrified","description":"<p>A petrified creature is transformed, along with any nonmagical object it is wearing or carrying, into a solid inanimate substance (usually stone). Its weight increases by a factor of ten, and it ceases aging.</p> <p>The creature is <i>incapacitated</i>, can’t move or speak, and is unaware of its surroundings.</p> <p>Attack rolls against the creature have advantage.</p> <p>The creature automatically fails Strength and Dexterity saving throws.</p> <p>The creature has Resistance to all damage.</p> <p>The creature is immune to poison and disease, although a poison or disease already in its system is suspended, not neutralized.</p>","icon":"frozen-orb","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"poisoned":{"name":"Poisoned","description":"<p>A poisoned creature has disadvantage on Attack rolls and Ability Checks.</p>","icon":"chemical-bolt","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"prone":{"name":"Prone","description":"<p>A prone creature’s only Movement option is to crawl, unless it stands up and thereby ends the condition.</p> <p>The creature has disadvantage on Attack rolls.</p> <p>An Attack roll against the creature has advantage if the attacker is within 5 feet of the creature. Otherwise, the Attack roll has disadvantage.</p>","icon":"back-pain","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"restrained":{"name":"Restrained","description":"<p>A restrained creature’s speed becomes 0, and it can’t benefit from any bonus to its speed.</p> <p>Attack rolls against the creature have advantage, and the creature’s Attack rolls have disadvantage.</p> <p>The creature has disadvantage on Dexterity saving throws.</p>","icon":"fishing-net","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"stunned":{"name":"Stunned","description":"<p>A stunned creature is <i>incapacitated</i>, can’t move, and can speak only falteringly.</p> <p>The creature automatically fails Strength and Dexterity saving throws.</p> <p>Attack rolls against the creature have advantage.</p>","icon":"fist","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"unconscious":{"name":"Unconscious","description":"<p>An unconscious creature is <i>incapacitated</i>, can’t move or speak, and is unaware of its surroundings.</p> <p>The creature drops whatever it’s holding and falls prone.</p> <p>The creature automatically fails Strength and Dexterity saving throws.</p> <p>Attack rolls against the creature have advantage.</p> <p>Any Attack that hits the creature is a critical hit if the attacker is within 5 feet of the creature.</p>","icon":"sleepy","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"raging":{"name":"Raging","icon":"strong","description":"You are raging! The effect of your rage depends on your features.","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"blessorbane":{"name":"BlessOrBane","icon":"radioactive","description":"You are under a magic spell, substract or add the number of dice on the spell to your attacks or saving throws","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"concentrating":{"name":"Concentrating","icon":"stopwatch","description":"Whenever you take damage while you are concentrating on a spell, you must make a Constitution saving throw to maintain your Concentration. The DC equals 10 or half the damage you take, whichever number is higher. You lose Concentration on a spell if you are incapacitated or if you die.","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"marked":{"name":"Marked","icon":"archery-target","description":"You are marked!","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"readying":{"name":"Readying","icon":"sentry-gun","description":"You decide of an action happening as a reaction to a specific trigger, it can be one of the three actions: main action, movement or bonus action. When the trigger occurs, you can choose to ignore it and wait for another trigger. Readying a spell requires Concentrating and a casting time of 1 action. If your concentration is broken, the spell dissipates without taking effect. Remember that you have only one reaction per round.","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"dodging":{"name":"Dodging","icon":"half-haze","description":"Until the start of your next turn, any attack roll made against you has disadvantage if you can see the attacker, and you make Dexterity saving throws with advantage. You lose this benefit if you are incapacitated or if your speed drops to 0","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"boosted":{"name":"Boosted","icon":"all-for-one","description":"Your damages, AC or actions are boosted by an effect, spell or feature.","number":0,"duration":"0","direction":"0","override":false,"favorite":false},"debuffed":{"name":"Debuffed","icon":"broken-skull","description":"Your damages, AC or actions are debuffed by an effect, spell or feature.","duration":"0","direction":0,"override":false,"favorite":false}},"config":{"command":"condition","userAllowed":true,"userToggle":true,"sendOnlyToGM":false,"showDescOnStatusChange":true,"showIconInDescription":true,"showConditions":"All","clearConditions":false}}
And here is the tokenmod macro (must be installed for the macro to work) with it :
!token-mod ?{Status|Concentrating, --set statusmarkers#!stopwatch|Readying, --set statusmarkers#!sentry-gun|Dodging, --set statusmarkers#!half-haze|BlessOrBane, --set statusmarkers#!radioactive|Marked, --set statusmarkers#!archery-target|Raging, --set statusmarkers#!strong|Boosted, --set statusmarkers#!all-for-one|Debuffed, --set statusmarkers#!broken-skull|-,|Prone, --set statusmarkers#!back-pain|Grappled, --set statusmarkers#!grab|Paralyzed, --set statusmarkers#!pummeled|Restrained, --set statusmarkers#!fishing-net|Stunned, --set statusmarkers#!fist|Invisibility, --set statusmarkers#!ninja-mask|Poisonned, --set statusmarkers#!chemical-bolt|Incapacited, --set statusmarkers#!interdiction|Blinded, --set statusmarkers#!bleeding-eye|Charmed, --set statusmarkers#!broken-heart|Deafened, --set statusmarkers#!edge-crack|Frightened, --set statusmarkers#!screaming|Petrified, --set statusmarkers#!frozen-orb|Unconscious, --set statusmarkers#!sleepy|-,|Clear All, --set statusmarkers#-stopwatch#-sentry-gun#-half-haze#-radioactive#-archery-target#-strong#-all-for-one#-broken-skull#-back-pain#-grab#-pummeled#-fishing-net#-fist#-ninja-mask#-chemical-bolt#-interdiction#-bleeding-eye#-broken-heart#-edge-crack#-screaming#-frozen-orb#-sleepy|Clear Status, --set statusmarkers#-stopwatch#-sentry-gun#-half-haze#-radioactive#-archery-target#-strong#-all-for-one#-broken-skull|Clear Conditions, --set statusmarkers#-back-pain#-grab#-pummeled#-fishing-net#-fist#-ninja-mask#-chemical-bolt#-interdiction#-bleeding-eye#-broken-heart#-edge-crack#-screaming#-frozen-orb#-sleepy}
Wonderful script! I really appreciate the timer and the smaller turn announcement dialogue. However, I wasn't quite sure if this was already put on here or if I'm just missing the option, but is there a way to manually change the round counter or have it reset to 1 instead of 0? A minor gripe.
In Turnmarker, when I reset it, I had the macro reset the round count to 1 instead of 0 (it was like "!tm reset 1"), but I can't find if there's an option to do that here.
I fixed the Round Number so it starts at 1 instead of 0. There's no way to set the Round. It's automated. New version may be found here: https://github.com/vicberg/Combattracker/blob/1.1.12/combattracker.js
I'll be ready to start converting CT to the better way of commands.
Currently CT processes a command structured like this: !ct add prone 1 0 This came from baddie #1
Each command requires 1 space between it and CT parses the command looking for a space in between each command. When sending in messages, it requires special handling, since CT would normally look at a message like "This came from baddie #1" as 5 individual commands. After the combine of SI and CT, there may be situations where a description AND a message would be part of the command that will cause issues as CT will combine both description and message into a single value.
So, the correct way to do this is to change to a better way of formatting commands: --ct,add,prone,duration=1,direction=0,message=This came from baddie #1. If I put this in, everyone running this will need to change their macros. So the question is, who is really using the "message" functionality or does anyone else NOT using this functionality have issues changing their macros.
I've just started messing around with CT. I am fine changing my macros, but that may only be because I will only have to change them once since I am writing them on a macro mule character. Having similar syntax to TokenMod and others will just make any future macro writing easier, at least for me. I keep making mistakes going between the 2 styles.
Victor B. said:
I fixed the Round Number so it starts at 1 instead of 0. There's no way to set the Round. It's automated. New version may be found here: https://github.com/vicberg/Combattracker/blob/1.1.12/combattracker.js
Just wanted you to know, you absolutely rock! Thanks :D
And +1 for messages.
how do i add a new marker image? I put in a URL for a new image but then when i go to start the tracker it crashes my API. is there extra steps or something im missing??
Victor B. said:
I fixed the Round Number so it starts at 1 instead of 0.
Hey now, that is excellent! This script just keeps getting better and better.
I don't know if it's intentional, but do inline rolls in the status messages not work?
It seems like that's the case, because I tried making a bleed condition and it just changes the inline roll like this:
I haven't thought about putting inline rolls into this. The override feature enables you to set the number of blessings when you assign the condition to the token. I honestly don't know if in line rolls like that will work
Victor B. said:
Yikes, that's a tough one because now I'd have to check the layer of the token in order to move the marker. You can always go without markers but I tend to run LARGE combats with LOTS of tokens and it can be hard in a group to see who needs to go. Ugg. I see the issue. The resolution might be tricky. What do I do with the marker? Not move it and not center around the GM layer token? Just do nothing I'd guess and leave everything at the last place on the token layer. But then, the GM has to know where that GM layer token is because it's not going to auto-center in order to do something. Again, ugg.
Yeah, That's what I meant. I believe when Tracker Jacker was big, they accomplished it by moving the tracker icon to the GM layer, moving the tracker icon, pulling the screen, and then moving the icon back to object layer.
EDIT: This was how they worked around players being able to track the turn marker to enemies they maybe couldn't see. The main issue I was looking at maybe putting an option in was pulling players screens to a point centered on the marker. This seems like something that would be great for the dm's with a large number of monsters, but players should be keeping track of their one token.
Maybe that helps. I know Tracker Jacker is no longer supported, and yours has a cleaner interface IMO.
Victor B. said:
I haven't thought about putting inline rolls into this. The override feature enables you to set the number of blessings when you assign the condition to the token. I honestly don't know if in line rolls like that will work
Would be nice, since things like bleed and damage over time effects (like certain poisons) are decently common. Alternatively, maybe just having an option for a dedicated roll on the condition's menu? For games like 4e or 13th age where you make a flat d20 roll to end an effect, this can be useful too. Also, having support for a section like that would allow you to have it automatically roll things like a confusion effect (even better if it rollable tables work).
As a workaround, you can put api command buttons in the conditions. I made a rollable table for confusion, wrote a macro to call it in a roll template as an ability on a macro mule character, then put the api command button at the end of the confusion description: [Confusion Chart](~ApiMM|Confusion). It gives you the big pink button, and works just fine. Of course, your macro mule character may not be named ApiMM...