Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

[GURPS] Known Issues

1401386007

Edited 1403366685
Devindra P.
Sheet Author
Here are several known issues, and a few TODOs, if you find any others this is a good place to post them. Attributes are NaN, when points spent is -1. This is caused by a division by 0 in the formula, unfortunately this is currently the only way to make negative numbers calculate properly. If the devs add the fix() function, I can solve this issue. But in the meantime, it's a relatively minor issue. Several fields for the point summary, and equipment totals don't tally automatically, you have to type in the numbers yourself. Currently there is no way to sum up the points column of the Advantages/Skills/Languages/Cultural Familiarity columns. Basically it's because there could be any arbitrary number of fields in those tables, so I need to have a way to add them up without actually knowing how many there are. Basically this means that I'm hoping Roll20 will add a function. On another note, there are a couple features I'd like to add Auto calculation for encumbrance level, shouldn't be too hard if the Weight tally issue is fixed. Automatically reduce Dodge, DX, ST, etc when you are at low HP or FP (as per the rules).
I've already responded to that bug report and said we are not adding logic operators to the dice engine. We've been very consistent about saying that for the last 2 years now. I implemented the abs() function as originally requested but since it seems like additional functionality beyond that might be needed, you may just have to have a basic sheet that can be filled in but doesn't do much auto-calculating, and then Mentors can use the API to handle the rest from there (similar to what's being done for Edge of the Empire). Unfortunately some systems just use rules that can't be easily expressed without the use of custom logic, and that's not something that we want the dice engine handling. That's what the API is for. Can you give me an example of the formula that you need to use a fix()-like function for?
1401390310

Edited 1401390450
Devindra P.
Sheet Author
Sorry, I'm aware you've said that you aren't going to add logic operators. I suggested a simpler alternative on the issue but you hadn't posted a response to that yet, so I remained hopeful. Perhaps you could close the issue, or clarify what remains to be resolved (with regards to the github issue). Here is the current formula that results in a division by 0. 10 + floor(abs(@{strength_points}) / 10) * @{strength_points}/abs(@{strength_points} If we had the fix() function, I would change it to 10 + fix(@{strength_points} / 10) I explained why in more detail in the github issues, and I'll do so again if you like, but the crux of the problem is that this formula needs to both handle both negative and positive point values, it can be done with abs() but that results in a division by 0 if the point value is 0. The fix() function would resolve the Attribute issue. The cond() function was intended for the Skill issue (but could also solve the Attribute issue).
Devindra P. I just wanted to say thanks for even beginning to build a GURPS character sheet.
I agree - Thank you Devindra P. for all the effort to build the GURPS character sheet. I also would really like to see the support for the Roll Comparisons script included. Without the possibility to roll directly from the sheet the new feature is much less useful. Even better would be if Roll20 would finally support the roll x dice against target number mechanic. Is there any chance for that happening?
1401473778

Edited 1401484221
I manipulated the formula in this way to work around for now: 10 + floor(abs(@{strength_points}) * 0.1) * (@{strength_points}+1)/(abs(@{strength_points}+1) I think this just moves the invalid number for attributes to -1 (which usually isn't a useful value). It's a crummy fix, but it makes attributes work. Though the lift calculations are all jacked up. Can we work from that? I'm really not that good with this stuff.
1401474482

Edited 1401474570
Devindra P.
Sheet Author
Yeah that moves the invalid number to -1, but it's a good suggestion, probably better than defaulting those point values to 1. For Basic Lift, I haven't tried to debug it or anything, but I have no idea whats could be wrong. The formula I used is: '@{strength} * @{strength} / 5' My first thought is, maybe there is some trouble for auto-calc because I referenced the @{strength} attribute twice? I wonder if auto-calc supports '^' for powers. If anyone can come up with some sort of magical tricksy math way to compute Skill levels, that would be brilliant. We need some formula that conforms to this table of values: x 0 1 2 4 8 12 +4 y 0 1 2 3 4 5 +1 I was trying to figure out if we could do it using modulo or complicated rounding, but I fear that no such thing exists. I wonder if auto-calc supports any other operators.
1401483292

Edited 1401483823
Not sure there is going to be an algorithm for skills. Here is the closest I've can take it X =( (Y - 2)*4 ) * A + Y * B Where A is 1 when Y is greater than 2, and 0 when it is less than 3. Where B is 0 when Y is greater than 2, and 1 when it is less than 3. I don't know beyond that how A and B can be mathed out. (maybe using floor and having the values worked around 1.0 and ... I don't even) So with that in mind, we'll just need a sheet where we can document how many points we've spent, and what the effective bonus is from those points is, manually.
If I forget about allowing people to put in 0 points (probably a good idea anyways, since defaults work differently), then this might work. Where p is the number of points you put in. 1 + (floor(p/2) / floor(p/2)) + floor(p/4) p = 1: 1 + floor(1/2)/floor(1/2) + floor(1/4) = 1 + 0/0 + 0 = NaN (or 1) p = 2: 1 + floor(2/2)/floor(2/2) + floor(2/4) = 1 + 1 + 0 = 2 p = 3: 1 + floor(3/2)/floor(3/2) + floor(3/4) = 1 + 1 + 0 = 2 p = 4: 1 + floor(4/2)/floor(4/2) + floor(4/4) = 1 + 1 + 1 = 3 p = 6: 1 + floor(6/2)/floor(6/2) + floor(6/4) = 1 + 1 + 1 = 3 p = 8: 1 + floor(3/2)/floor(3/2) + floor(8/4) = 1 + 1 + 2 = 4 p = 12: 1 + floor(3/2)/floor(3/2) + floor(12/4) = 1 + 1 + 3 = 5 Except for the fact, that it results in a division by 0 if you only put in 1 point. :(
Actually one of my players just came up with the solution for A and B in mine, and the math works in my python simulation. A = lambda Y :math.ceil(((Y-2)+abs(Y-2))/256.0) B = lambda y:abs(A(Y)-1) X = lambda Y: ((Y-2)*4)*A(Y)+Y*B(Y) works for all values of Y up to like 130. if you can translate that from python math to math that works in here. I think it is: X = ( ( Y - 2 ) * 4 ) * ceil( ( ( Y - 2 ) + abs(Y - 2) ) / 256 ) + Y * abs( ceil( ( ( Y - 2 ) + abs(Y - 2) ) / 256 ) - 1 )
1401488568

Edited 1401488637
Devindra P.
Sheet Author
Oooh nice. Only problem with is that it needs to be expressed in terms of Y. Since X is the variable. I mean we could switch which one is the variable, but that would be rather problematic for GMs (such as myself) who prefer their players to spend points as they get them, as opposed to spending only when you want to raise a level.
1401491214

Edited 1401500434
got it A = lambda X :math.ceil(((X-2)+abs(X-2))/256.0) B = lambda X:abs(A(X)-1) Y = lambda X: math.floor(X * 0.25 + 2) * A(X) + X * B(X) Y = floor( X * 0.25 + 2) * ceil( ( ( X - 2 ) + abs( X - 2) ) / 256 ) + X * abs( ceil( ( ( X - 2 ) + abs( X - 2) ) / 256 ) - 1 ) give that a whirl
1401496442

Edited 1401496595
also: got basic lift working like this value='((@{strength}) * (@{strength}) )/5' As for tallies, go ahead and tally each category as a 'attribute tally' etc etc, for skill we can just add them up ourselves. I don't see them adding some kind of mechanic like that in.
Awesome, thanks a ton Brandon, this is really shaping up properly now. I'm having a bit of trouble getting the skill formula to work. Do you have a working html snippet? This is what I'm using at the moment; (floor(@{points} * 0.25 + 2) * ceil(((@{points} - 2) + abs(@{points} - 2)) / 256) + @{points} * ceil(((@{points} - 2) + abs(@{points} - 2)) / 256)) and what I'm getting is this; where x is @{points} x 0 1 2 3 4 5 y 0 0 0 5 7 8 If not I'll look into it in more detail in the future.
1401501917

Edited 1401504706
Try this: (floor((@{points} * 0.25) + 2) * ceil( ( ( @{points} - 2 ) + abs( @{points} - 2) ) / 256 ) + @{points} * abs( ceil( ( ( @{points} - 2 ) + abs( @{points} - 2) ) / 256 ) - 1 )) I edited my post where I posted the bit originally, that was likely throwing you off. edit: in python I have to make all the 256s 256.0 for typcasting reasons, could that be an issue here too? >>> G = lambda X: math.floor((X * 0.25) + 2) * math.ceil( ( ( X - 2 ) + abs( X - 2) ) / 256.0 ) + X * abs( math.ceil( ( ( X - 2 ) + abs( X - 2) ) / 256.0 ) - 1 ) >>> G(1) 1.0 >>> G(2) 2.0 >>> G(3) 2.0 >>> G(4) 3.0 >>> G(7) 3.0 >>> G(8) 4.0 >>> G(11) 4.0 >>> G(12) 5.0 >>>
Works great! Just to let you know what's happening. I've overhauled the way that layout is coded (got rid of those pesky tables, and did the css manually), and added a bunch of additional roll buttons. I just need to add a section for techniques, and then try to get calculations working for low HP/FP and encumbrance level, and then I'll send in a pull request I've also added support for Roll Comparisons, but the script doesn't seem to be working for me. I'll take a look at it later and update it if needed.
Should be live now, tell me if you notice and bugs or spelling errors. There were a couple of rogue "Replace All" commands.
First off I want to say that this is looking awesome! All the back end stuff you guys got working really takes this sheet to the next level and the layout of information is also great. I love having a techniques section separate from skills. A couple little glitches I've run into... Carry on back is getting some double layered writing. I think the "over" from "Running shove and knock over" is moving down a line. You can probably give it more space since that area has unused real estate Occasionally when adding skills the line item deletes itself upon tabbing or clicking, closing and reopening the sheet fixes this. IQ appears to calculating at 10pts/level One big glitch... When you add a skill, it creates a blank line in the techniques section. When you delete that blank line it deletes the corresponding skill. I think this is what I mentioned happening to me in the message I sent you that I thought was fixed. I could leave the blank lines but I doubt I'm the only person who's going to accidentally delete all the skills they just added....whoops! And a little bit of opinion... Since the values don't autocalculate for value and weight, perhaps you could put the field at the end (Where w+ is now). The field for value, weight, and quantity is a little crunched now and by only having 1 entry for value and weight at the end each of them could have a little more real estate on the sheet. I still think split DR on the sheet would be super great. One GURPS macro blog I was reading suggested using the max field in the attribute. So you'd have DR 4/2, and you could call on the different values in macro's by using the max operator. I'd probably visually put them on the sheet in the same way. With your new layout there is plenty of space in the DR area to split the field into 2. If the rolls from the sheet could be inline that would be great. I think that's how most people prefer to run their rolls since it's otherwise a really awkward message that eats all the chatbox. Something like: /em Rolls @skillname [[3d6]] vs [[@skillvalue]] with or without the emote I suppose (I know you don't have to make skill value inline but having both numbers highlighted improves readability) It's a damn shame they block /emas from players since that would mean that any sheet that a player or GM rolled off of could be in character. This sheet has me even more excited now! There are so many good ideas on it, having the dmg per str table in a tooltip is PERFECT for temporary str changes (or just easy reference, it always seemed to come up at the table for us). So stoked on this. I wish I was better at math so I could help in a more direct way.
1401718441
G.
Sheet Author
Interesting and good someone gave it a good go :) One thing though, why bother with all the CPs counts at all? I mean, once the PC is created, it's not like CPs are important during play or anything.
1401720317

Edited 1401720639
Devindra P.
Sheet Author
If the rolls from the sheet could be inline that would be great. I think that's how most people prefer to run their rolls since it's otherwise a really awkwardmessage that eats all the chatbox. Something like: /em Rolls @skillname [[3d6]] vs [[@skillvalue]] with or without the emote I suppose (I know you don't have to make skill value inline but having both numbers highlighted improves readability) I didn't realize this was so popular, you're the second person to ask. I guess the alternative argument is that people would like to be able to see the rolls, for sort of verification. But that sounds like a good idea, so I'll change it. If people object, I can probably make a checkbox like with Roll Comparisons. I still think split DR on the sheet would be super great. One GURPS macro blog I was reading suggested using the max field in the attribute. So you'd have DR 4/2, and you could call on the different values in macro's by using the max operator. I'd probably visually put them on the sheet in the same way. With your new layout there is plenty of space in the DR area to split the field into 2. All the space limitations are by consideration of how it looks when the character sheet window is small. But yeah there might be. Since the values don't autocalculate for value and weight, perhaps you could put the field at the end (Where w+ is now). Not sure exactly what you're suggesting. The w+ field will multiply your weight with the count, and the "ON" field. It currently works. The field for value, weight, and quantity is a little crunched now and by only having 1 entry for value and weight at the end each of them could have a little more real estate on the sheet. Fixed that, coming up. A couple little glitches I've run into... Carry on back is getting some double layered writing. I think the "over" from "Running shove and knock over" is moving down a line. You can probably give it more space since that area has unused real estate Yeah, the layout looks a little different on other browsers/computers. I'll give it a little more space, but there isn't actually a lot of space, the sheet is designed to look good even when you've made the character sheet window relatively small. One big glitch... When you add a skill, it creates a blank line in the techniques section. When you delete that blank line it deletes the corresponding skill. I think this is what I mentioned happening to me in the message I sent you that I thought was fixed. I could leave the blank lines but I doubt I'm the only person who's going to accidentally delete all the skills they just added....whoops! I accidentally gave techniques and skills the same id. I've fixed it, but haven't pushed to Roll20 yet. Same with the IQ, noticed while trying to set up a character sheet myself. I'll try to push tonight. In the meantime, don't use the technique section.
1401720568

Edited 1401720712
Devindra P.
Sheet Author
I'm posting in two replies, because the editor is annoying. Occasionally when adding skills the line item deletes itself upon tabbing or clicking, closing and reopening the sheet fixes this. I believe this is a bug with Roll20. Look at the stickied posts. @G. One thing though, why bother with all the CPs counts at all? I mean, once the PC is created, it's not like CPs are important during play or anything. That's a good point. But I guess why not have it. It's useful during character creation, and also idk about other GMs, but I usually keep track of how many points I give each session, and some players are troublesome about spending their points, so then that total is useful to verify what point level they should be at. That being said, you do make a good point, if we need the space for some reason it could be removed.
I also wondered about using CP. My group uses GCA to make characters so we use that to keep track of total costs. It would be nice to just plug in stat values and also access them for macro use (can that be done now?). One other suggestion: It would be nice to have Active defenses on the sheet to roll against. Again, thank you for all this work!
Never mind my w+ comment. I didn't realize it multiplied out the values since my test character is a NPC with barebones basics/only one of each item. What I was commenting on was that the values in cost and weight only display a couple of characters which isn't a big deal at all. One of the nice things about inline rolls is you can mouse over the number to confirm the individual dice rolls. If you haven't tried it in your games you should check it out, it's very nice. You can create very nicely formatted roll emotes while still seeing "the guts."
Joseph M. said: It would be nice to just plug in stat values and also access them for macro use (can that be done now?). Yes, all of the fields can be used in macros. For the field sets (skills, advantages, attacks), you'll get stuff like @{repeating_skills_0_level}, and for attributes it's always the attribute fully spelled out name such as @{strength}, @{perception}, @{dodge} (note that doing @{dodge} will not account for your encumbrance level, I'd love to make it so that it does, but I'm not sure if I can) You can access literally every field on there down to things like @{gender} or @{dexterity_points}, because thats just how Roll20 character sheets work. Most fields that are something you could roll on actually already have a roll button though. One other suggestion: It would be nice to have Active defenses on the sheet to roll against. Are you thinking like, have a separate table where people can just list all their possible active defences? Currently Dodge is under Attributes, and has a Roll button. Parry and Block are listed for each Melee attack, but I haven't added Roll buttons for them, though I was considering doing so. values in cost and weight only display a couple of characters which isn't a big deal at all. Yep, that'll be improved in the next push. I was also having trouble with that when trying to give a player 8000 currency. --- You guys are more than welcome for the work on the sheet. It makes me happy to see that people are using and enjoying the stuff I've put together. :) --- I've been working on automating things for encumbrance and low HP/FP, but I'm having a little trouble with the formula (it might not even be possible). If any of you guys have ideas, that would be awesome. Basically what I'm trying to get is a formula such that if x > z, then y = 1, else y = 0 And we can only use the function: + - / * ceil floor round So far I got that I can do floor(z/x) , which will give me 0 if x > z z=1 x=10 y = floor(1/10) = floor(0.1) = 0 z=10 x=10 y = floor(10/10) = floor(1) = 1 z=10 x=1 y = floor(10/1) = floor(10) = 10 Which will maybe allow me to at least highlight your current encumbrance using fancy CSS, but this is far from ideal.
1401784946

Edited 1401785750
It appears the skills are no longer calculating the level with the attributes. In fact, on further examination it's pulling all the level references solely from the first lines point values (IE 3 skills and all which match the values for line one no matter what you put in for points). Diggin the layout updates though. Also, trying to add HP to the character bars and I see: Health Health_Points Hit_Point_Points But no hit points. Does it have another name perhaps? If all the points values could be called Points_{attribute} then they would all shuffle themselves nicely out of the way on the drop down menus. I'm going to go ahead and assume it's too late in the game for that since it sounds like a monumental amount of work that could introduce bugs. Just food for thought on future projects.
Tinker said: If all the points values could be called Points_{attribute} then they would all shuffle themselves nicely out of the way on the drop down menus. I'm going to go ahead and assume it's too late in the game for that since it sounds like a monumental amount of work that could introduce bugs. Just food for thought on future projects. That's a good idea. I'll keep it in mind, and maybe change that if I have time. The hit points field has the name "hit_points_max", maybe that causes issues because there is a max field and no normal field? I'll look into it. Not sure what's causing the skill issue, I'll look into it later.
Just went and double checked. There is no "hit_points_max" for me to attach to the tokens bar. That's fine for minor NPCs but unique NPC's and players will need their health checked across maps. The problem with the skills is no longer occuring. No idea if you fixed it on your end or what but they appear to be calculating fine now.
1401822981

Edited 1401822994
Devindra P.
Sheet Author
Whaaa? I've been at work the whole time, changed nothing. Maybe it was a Roll20 bug.. As for the hit_points max. I want to change it so that there is actually a current HP field in the character sheet (so that I can hopefully reduce stats for low HP/FP). Maybe that would fix this problem as well. If not I'll fiddle around and try to find another solution.
1401838024

Edited 1401839039
Joseph M.
Sheet Author
I set up several monsters last night and thought that there was a hit_point field (I don't recall an _max, but it was late). I set them all back to NONE after pulling in the HP data (so that they don't share damage across all tokens), So they are still set up that way today, but sure enough there is no hit_point fields other than hit_point_points. Edit: Is there a way to fill in the field| max values? this way you can have current and max in one field?
hit_points_max should fill in the the hit_points|max field, that's why I'm using it. There was a hit_points field before, I changed it to hit_points_max in the update that occurred last night.
For less than 1/3 current hp calculations on move and dodge We'll need to multiply the values of move and dodge by either 1 or 0.5 depending on the cur hp value I don't have tme right this second to play with it, but it will be modifying this equation to detect values above and below a number f = lambda x,y:abs( math.ceil( ( ( x - y) +abs( x - y) ) / 256.0 ) - 1 ) Sorry for all the python, it's just easy to test math out first. --- A similar trick for encumbrance, but because it's not just one equation or another it gets a little more complex. --- And as for api support, I use those gurps scripts from the wiki, and they don't play well with autocalc'd values for attributes. I think that IS something that the devs are planning on working around (autocalc'd stuff getting attributes). Then again, maybe it works as is and I don't know how to articualte it right.
1402096702

Edited 1402117775
would just like to say that I have got this working with the roll comparisons support option. add a line to each attribute that auto-calculates that equals that attribute, and name it its short name, then modify your sheet-module-on-roll output to match that attribute. or you can switch it around, but I prefer it with the short-name as the hidden option, as it allows me to pull the stat for any macro without breaking it using less typing. (@{ST} is a lot quicker to type out, and intuitive to the sheet) for example: <div> < input type =" text " name =" attr_strength " value =" 10 + floor(abs(@{strength_points}) / 10) * (@{strength_points}+1)/abs(@{strength_points}+1)" disabled="disabled " /> < input type =" text " name =" attr_st " value = "10" /> </div> <div> < input type =" number " name =" attr_strength_points " value =" 0 " /> </div> <div> < button class =" sheet-module-off-roll " type =" roll " value ="/ em rolls [[3d6]] vs [[ST @{strength}]] " name =" roll_vsST " /> < button class =" sheet-module-on=roll " type =" roll " value ="/ em rolls a strength check for @{character_name}\n/gr 3d6 |<=| @{st}+?{modifiers?|0} " name =" roll_cmpST " /> </div> this works. Promise. I made the roll a GM roll because I have modified the comparisons script to only output the characters name and the roll being performed, and the success/failure message, letting players play together without revealing their stats to each other. the only thing it really needs is fixed so it looks good, I'm no good at layout, and currently has to be a manual input though having the number calculate automatically is great for everything else, just not rolls.
1402098397

Edited 1402120701
just for the record, its the abs rounding bits that the script can't handle. don't know why, but once that is removed, via the second attribute, it works fine. it works if you use auto calc without all the little fussy bits that make it work for this sheet(the abs() bits) its just the script that can't handle the rest of it. haven't figured out a work around yet.
Awesome Brandon. I think with this I can make the low HP stuff work. I dunno how you come up with these formulas, it's amazing. Michael, nice work, but adding a field like that might be a bit tedious for the sake of the sheet. I'm going to try an modify the script later to work better with the sheet. Using /gmroll and having the script print the relevant info is a good idea, I'll definitely add that.
A nice solid update just went live a little while ago. Big thing is tabs. I still haven't fixed roll comparisons though or added automation for encumberance/low HP/low FP. For now the Roll Comparisons checkbox is commented out. If you're a mentor though and can't wait, you can copy the code from github and rig up Michael's solution.
This sheet is really becoming something else! I love the tabs. I'm torn on the hidden notes section but I think overall that it's a great decision for keeping the sheet looking clean. All the additional features will be nice but at this point I'd say the sheet is complete and functional. I haven't run into anything behaving poorly or strangely in the last couple weeks and these tabs really sell the sheet as an organizational tool. No more scrolling to find things! As usual I have feedback but it's just nitpicks. Things that could swing either way and be correct so view these as opinion only. Nitpick 1 Perhaps now that the tabs have freed up some space the disadvantages could have their own "section" underneath the advantages. It's a small things but as a GM looking for how to torment my players for their free points it would make it much quicker to look up (And I don't have to worry about my players mixing their advantages and disadvantages willy nilly in one box). Nitpick 2 I noticed that damage rolls are still not [[inline]] rolls and I think there may be a missed opportunity there, especially on the combat tab. If you created a field for damage type the roll could output something like "/em hits with a {weapon_name} for [[{weapon_damage}]] {damage_type} damage." "Targin hits with a pick for [[8]] impaling damage." Since damage type is such a big deal in gurps. After my players roll damage I'm going to be taking their damage roll and plugging it into ANOTHER damage macro that accounts for DR and location and outputs the final damage into chat. Having it list what their damage type is, how much damage, all while taking less chat space would definitely be a plus. If you need to read the roll for whatever reason you can always mouse over it.
1402533766

Edited 1402533950
Devindra P.
Sheet Author
as a GM looking for how to torment my players for their free points it would make it much quicker to look up. Makes sense. I noticed that damage rolls are still not [[inline]] rolls and I think there may be a missed opportunity there, especially on the combat tab. If you created a field for damage type the roll could output something like Oops, I over looked those. Having a dropdown for damage type is probably a good idea too. (my original intention was that you'd just write it in the same box, like gurps does).
Writing in the same box would work too just with less pizzazz. ^_^ I'm introducing my friend who's been afraid of Roll20 for a while now on Monday and I'll let you know what a total noob thinks of everything and how they get along with it from a usability perspective.
1402921016

Edited 1402921140
There's a new update out now. It includes Tinker's suggestions. Also a checkbox at the top of the sheet called "Modifier Prompt". If you have that box checked, whenever you make a roll (except damage rolls), you'll be prompted for a modifier to the task, which will be included in the roll. I've also created a script that will handle gurps rolls. If you're a mentor you can find the script here. <a href="https://raw.githubusercontent.com/Ardnived/Roll20-" rel="nofollow">https://raw.githubusercontent.com/Ardnived/Roll20-</a>... The script will tell you by how much a roll succeeds or fails. It'll also point out critical successes or failures, as per the GURPS rules. If you want to use it yourself, you will have to send an /em that also includes the phrases "rolls" and "vs." (I didn't want it to accidentally trigger on other emotes). It also has to have at least 2 inline rolls. In the future I'll probably add a !roll api command. The modifiers feature was requested by someone, but also it's useful for using with the above script, so that you get accurate criticals. (Since GURPS changes what rolls are considered a critical based on your skill level).
Holy cow! Just in time for my first GURPS gathering with a new player. I'm about to go to bed so I haven't had a chance to look at this but the modifier prompt almost negates the need for most of my macros. The only reason I have to keep them around now is my ?{} macros that remind me and my players to consider shock and other variable aggressively (we always forget at the table because gurps has so much to track). Can't wait to try these bad boys out....just might be up late tonight! ^_^
Oh that's a good idea. I could change the modifiers prompt to ask for things like Shock, Reeling, and Staggered (with a default of 0 so you can just skip it). Seems like a nice reminder. What other general modifiers like that are there?
Mine are VERY messy in presentation. I use a ranged attack macro that asks for the speed/distance mod and has the number built right in. The presentation is garbage but it has like the first 150 yards of penalties listed. I also have a damage macro seperate from weapon damage to calculate dr, loc, and weapon type. On location it lists all the locations and the multiplier to that location and same for weapon type so you don't have to reference or memorize charts. I didn't think about reeling and staggered but I should add notes to my prompt for those. I wish there was a way to format the prompt to look nice.
Hi there, First of all I'd like to congratulate you for the work you've done on this sheet, it's amazing. I was wondering which one of G.'s and yours I was going to use for my campaign, the last update helped me make my choice and I think I'll go with yours. That being said, here is some feedback. The fact that you've added tabs is a very good feature but it can be a bit tedious when in a fight you have to switch between combat tab and skill tab. It would be great if you could add a roll on the combat tab for each attack. We wouldn't have to go back to the skill tab, look for the relevant skill and check for all modifiers each time (for techniques, familiarities etc). About the hidden note section for skills : it's useful, but I found myself most of the time confused about which skill I'm about to roll because of it. Maybe you could just put this section next to the skill/trait name. Another useful modification would be to slightly change the background color every other line, it would really help us know where we are looking at on the list. I think that's it. Thank you for your work, and for the script too. Have a nice day.
1403312471

Edited 1403321232
Devindra P.
Sheet Author
The fact that you've added tabs is a very good feature but it can be a bit tedious when in a fight you have to switch between combat tab and skill tab. It would be great if you could add a roll on the combat tab for each attack. We wouldn't have to go back to the skill tab, look for the relevant skill and check for all modifiers each time (for techniques, familiarities etc). Sure, I'll add a skill roll to the Attacks list, but you'll have to manually copy your skill level over from the Skills page, which means if you raise your skill you have to make sure you update your attacks. About the hidden note section for skills : it's useful, but I found myself most of the time confused about which skill I'm about to roll because of it. Maybe you could just put this section next to the skill/trait name. Another useful modification would be to slightly change the background color every other line, it would really help us know where we are looking at on the list. There isn't enough space to put the Notes section next to the Skill/Trait name. The main reason for this is that I want to allow people to make the char sheet window smaller so they can look at multiple sheets/handouts at the same time (or look at the tabletop). I'll add differing coloration for alternating lines, thats really something I should have done a long time ago. Perhaps that will help with the Notes section as well? Or maybe I'll make the Notes line have a grey background or some such to make it fade behind the normal rows. EDIT: These changes as well as the modifier prompts have been pushed to Roll20. They'll be live when Riley accepts this pull request: <a href="https://github.com/Roll20/roll20-character-sheets/pull/346" rel="nofollow">https://github.com/Roll20/roll20-character-sheets/pull/346</a>
1403363580

Edited 1403363947
this might seem a little nitpicky, but I find that this makes for a cleaner check result, without giving away levels of skill in chat for everyone to see (some players like to keep a hidden ace up their figurative sleeve, and as a DM I know I prefer to not let the players know the skill level of my npcs), which would change all your roll button values to match the example below: &lt;button type="roll" value="/em rolls for @{character_name}'s dodge check\n/w gm [[3d6]] vs. [[@{dodge} + @{modifier}]]" name="roll_vsDodge" /&gt; which looks like this in practice: (yes I know, that's two separate skills I've used in the same example, three, if you include the snippet above with the example code for a roll output but it would still look the same, honest) This way players do not see that actual numbers rolled, only the GM does, (as well as the player whispering the content to him) and everyone else only gets to know the relative success level of the roll. It also adds a nice little extra so that you know WHICH character is performing the skill or stat check, which I personally find useful. This method also allows a further addition to let the GM roll hidden checks, and still benefit from the script. With only a few minor changes, ( as detailed in bold below) the output for a secret roll is more like this, for total secrecy, with a macro as follows: (I have one for each stat on my hotbar, it makes for a much easier game experience if you can just click and point for a few secret checks.) /w gm rolls a ST check for @{target|character_name} /w gm [[3d6]] vs. [[@{target|ST}+?{modifier?|0}]] --w This is done by using the tag "--w" (yes, completely stolen formatting from powercards, another very useful and awesome script for gurps) which means the script will output its results as a whisper. Changes to script to work as above: var ENABLE_ROLL_PARSER = true; var COMMANDS = true; //["roll", "r"]; var rollCompWhisper = true; if (ENABLE_ROLL_PARSER) { on("chat:message", function(message) { if (message.content.indexOf("vs.") == -1) { // The GURPS will include the keyword "vs." in all rolls that should use roll comparison. // If the message doesn't include that word, we aren't interested. return; } if (message.inlinerolls.length &lt; 2) { // We need at least two numbers to make a comparison. return; } if (message.content.indexOf("--w") == -1) { rollCompWhisper = false } // We'll take the first number to be the user's roll. var roll = message.inlinerolls[0].results.total; // We'll take the second number to be the target value. var target = message.inlinerolls[1].results.total; roll_comparison(roll, target) }); } if (COMMANDS && COMMANDS.length &gt; 0) { on("chat:message", function(message) { if (message.type != "api") { // This function is only interested in API calls. return; }; log("ROLLCOMP/ Received "+message); var command; for (var i in COMMANDS) { if (message.content.indexOf("!"+COMMANDS[i]) == 0) { command = COMMANDS[i]; break; }; } if (command == undefined) { // No recognized command was found. return; } var content = message.content.substring(command.length+1); content = content.trim(); log(content); //var test = eval("3d6"); // We'll take the first number to be the user's roll. var roll = 2;//eval("3d6").results.total; // We'll take the second number to be the target value. var target = 5;//eval(content).results.total; roll_comparison(roll, target); }); } function roll_comparison(roll, target) { log("ROLLCOMP/ Compare "+roll+" vs "+target); // Calculate the difference between the rolls. var difference = target - roll; var result; if (roll == 3 || roll == 4 || (roll == 5 && target &gt;= 15) || (roll == 6 && target &gt;= 16)) { // CRITICAL SUCCESS! // 3 and 4 are always critical success. // 5 is a critical success if your effective skill is 15 or higher. // 6 is a critical success if your effective skill is 16 or higher. result = "Critical Success!"; } else if (roll == 18 || (target &lt; 16 && roll == 17) || difference &lt;= -10) { // CRITICAL FAILURE // 18 is always a critical failure. // 17 is a critical failure when your skill is 15 or less. // A roll of 10 over your effective skill is a critical failure. result = "Critical Failure!"; } else if (roll == 17 || difference &lt; 0) { // FAILURE // 17 is always a failure. // A roll that exceeds your skill is a failure. result = "Failure by "+Math.abs(difference); } else if (difference &gt;= 0) { // A roll that is equal to or lower than your skill is a success. result = "Success by "+difference; } log("ROLLCOMP/ "+result); if (rollCompWhisper) { sendChat("System", "/direct "+result); } else { sendChat("System", "/w GM "+result); rollCompWhisper = true } }
1403416884

Edited 1403416926
Devindra P.
Sheet Author
I've updated the script, and the upcoming update now also includes some new changes to the sheet. <a href="https://raw.githubusercontent.com/Ardnived/Roll20-" rel="nofollow">https://raw.githubusercontent.com/Ardnived/Roll20-</a>... Basically here's the gist of it. You can now type "!roll #" (or !r, !roll vs, !r vs) to roll vs a number #. You can now type "!gmroll #" (or !gmr, !gmroll vs, !gmr vs) to roll vs a number #. The results of both the roll and the comparison are sent to the GM only. The script will now accept a slightly different format. Any whisper or emote containing the string "vs:" and at least 2 inline rolls will perform a roll comparison. If you whisper your roll to any player, both you and that player will see the roll and the comparison. If you include the string "--l" in a whisper, the results of the roll comparison will be announced (along with who is rolling). Here's a sampling of the outputs for different commands. The character sheet now has 3 options at the bottom (or will when Riley accepts the changes), Public Rolls , rolls are made with "/em" Private Skill Levels , rolls are made with "/w gm --l" Private Rolls , rolls are made with "/w gm" The reason I didn't include the character's name in the roll in the first place is because I imagined that either players would be emoting as their characters, or the GM would have just asked the player for the roll so it would be obvious why/for whom they rolled. Just be unnecessary clutter.
1403419014

Edited 1403430605
the problem with that is that I, and many DM's out there I am sure, do not want to switch their name just to keep their records straight. I never switch from GM when I am running a game, and as such I cannot keep track of anything that does not reference the character making the roll. also, when I as a GM make an attack roll for an NPC, i want the players to know who is shooting at them, and even simply to clarify what is happening with each character in a simple way to follow. Please, do not omit using character names in macros, or at the very least put in an option much like your modifier tick box that lets a GM or player decide that he wants to include this information in his macros. I appreciate your assumptions about needing the name, but there is a valid and specific request for it to be included and I would hope you include it as at least an option for those who would like it, as this is a sheet that is publicly available and an officially sanctioned sheet for this system. There are going to be a great many people who want the character names included, if only for their own preference, or perhaps for streaming purposes, or for many other equally legitimate reasons to use it instead of a collection of numbers and success/fail outputs that fail to put any perspective to a copy of a chat history.
all that said, thanks :) I just hope I can, with the help (I hope) of others in the community who would like to partition for names to be included in the standard character sheet roll buttons have that included, so I do not have to continually be an edition behind the absolutely beautiful and well thought out sheet you produce because of the time it takes to edit it myself each time to include what are really only minor quality of life additions please, don't take any of this as negative, I am psyked that you're still continuing to produce quality work and improving this sheet with every 'patch'
1403453420

Edited 1403453589
Devindra P.
Sheet Author
Okay, I've updated it so that the character name is now also included in each roll. I initially had a bit of trouble with the --l flag. But I've changed it so that what it announces is whatever you whispered but with all inline rolls stripped (and a couple other tweaks to the message). Here's what you see now. I'm open to further tweaks to this output, but I'm trying to keep this code clean and well structured, which can make things a little tricky sometimes with the --l flag, and we need to keep in mind that this sheet is also used by non-mentors without the script. Also on another note, the script doesn't have a ton of error checking at the moment, if you format things incorrectly and it crashes, report the error so that I can add handling for it.