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

Need help with setting negative values to 0

Hello, I'm trying my hand at editing the character sheet for Trudvagn Chronicles (Shortened to TC from here on) to add skills that was in the swedish version. However, I'm a novice at code with no experience with HTML and I'm stuck on a problem I don't quite know how to solve. TC uses skills that goes from 0 to 5 but in the skill in the swedish version only have levels 3, 4 and 5. The skill gives +10 vitner (mana) for each level. The first idea I had was just taking the level minus 2 times 10 but that gives negative values which I don't want. I've also tried using an oninput="validity.valid||(value='');" But I only get it to freeze the value at -20. I don't know if it's possible to use "If, else" inside the value and how to really set it up. What I want is for it to display 0 when the level is below 3 and 10 times the level for 3 and above. If you have an idea on how to make this happen I would be super thankful. Below is the code I've currently have for the skill. The first line is for the level and the other is the bonus you get. <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel14" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv14" class="sheet-stats-half" value="((@{vitnercraftlevel14}-2)*10)"></div>
1651431159

Edited 1651431203
GiGs
Pro
Sheet Author
API Scripter
The best approach would be to use a Sheet Worker.      on ( "change:vitnercraftlevel14 sheet:opened" , function () {             getAttrs ([ "vitnercraftlevel14" ], function ( v ) {                 const level = parseInt ( v . vitnercraftlevel14 ) || 0 ;                 const vitnercraftsv14 = Math . max ( level - 2 , 0 ) * 10 ;                 setAttrs ({                     vitnercraftsv14                 });             });         }); For this to work, replace disabled="true" with readonly in your input. As usual with sheet workers, you add this to your HTML page, inside the script block. If there is no script block, add these lines to the end of your HTML, and copy the above worker inside those lines: <script type="text/worker"> </script> The 14 at the end of that name makes me wonder if there are more calculations like this? If so, describe them and their names and I'll tell you how to make a version of the above that applies to them all.
1651509323

Edited 1651509790
Hi. Thanks for the reply. As for the 14 at the end it is as you guessed. There's 14 different skills in the skill group. I don't exactly know what you mean by describing them, but I can dump the code for all the vitner skills. Also, all the other skills are currently working as intended, so am I required to add additional code for those too? Edit: I tried the code you posted and it works just as I wanted it to. Thanks a bunch! <div class="sheet-5colrow" style="padding-bottom:10px"> <div class="sheet-col"> <div class="sheet-row"><label for="attr_vitnercraftname" data-i18n="name" >Name</label></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname1" class="sheet-main-skill" value="Vitner Craft" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname2" class="sheet-discipline" value="Call of Vitner" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname3" class="sheet-specialty" placeholder="[Hwitalja/Darkhwitalja/Vaagritalja]"></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname4" class="sheet-specialty" value="Vitner Habit" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname5" class="sheet-discipline" value="Vitner Focus" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname6" class="sheet-specialty" value="Potency" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname7" class="sheet-specialty" value="Safeweaving" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname8" class="sheet-specialty" value="Strenuous" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname9" class="sheet-discipline" value="Vitner Shaping" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname10" class="sheet-specialty" value="Galding" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname11" class="sheet-specialty" value="Sejding" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname12" class="sheet-specialty" value="Vitner Runes" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname13" class="sheet-specialty" value="Vyrding" readonly></div> <div class="sheet-row"><input type="text" name="attr_vitnercraftname14" class="sheet-specialty" value="Ghandman" readonly></div> </div> <div class="sheet-col"> <div class="sheet-row sheet-stats-label"><label for="attr_vitnercraftlevel" data-i18n="level" >Level</label></div> <div class="sheet-row"><input type="number" min="1" max="10" name="attr_vitnercraftlevel1" value="1" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel2" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel3" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel4" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel5" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel6" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel7" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel8" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel9" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel10" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel11" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel12" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel13" value="0" class="sheet-stats-half"></div> <div class="sheet-row"><input type="number" min="0" max="5" name="attr_vitnercraftlevel14" value="0" class="sheet-stats-half"></div> </div> <div class="sheet-col"> <div class="sheet-row sheet-stats-label"><label for="attr_vitnercraftsv">SV</label></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv1" class="sheet-stats-half" value="@{vitnercraftlevel1}"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv2" class="sheet-stats-half" value="(@{vitnercraftlevel2}*5)"></div> <div class="sheet-row"><input type="number" min="0" name="attr_vitnercraftsv3" class="sheet-stats-half" value="0"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv4" class="sheet-stats-half" value="(@{vitnercraftlevel4}*10)"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv5" class="sheet-stats-half" value="(@{vitnercraftlevel1}+@{vitnercraftlevel5})"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv6" class="sheet-stats-half" value="(@{vitnercraftlevel6}*2)"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv7" class="sheet-stats-half" value="(@{vitnercraftlevel1}+@{vitnercraftlevel5}+(@{vitnercraftlevel7}*2))"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv8" class="sheet-stats-half" value="(@{vitnercraftlevel8})"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv9" class="sheet-stats-half" value="(@{vitnercraftlevel1}+@{vitnercraftlevel9})"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv10" class="sheet-stats-half" value="(@{vitnercraftlevel1}+@{vitnercraftlevel9}+(@{vitnercraftlevel10}*2))"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv11" class="sheet-stats-half" value="(@{vitnercraftlevel1}+@{vitnercraftlevel9}+(@{vitnercraftlevel11}*2))"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv12" class="sheet-stats-half" value="(@{vitnercraftlevel1}+@{vitnercraftlevel9}+(@{vitnercraftlevel12}))"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv13" class="sheet-stats-half" value="(@{vitnercraftlevel1}+@{vitnercraftlevel9}+(@{vitnercraftlevel13}*2))"></div> <div class="sheet-row"><input type="number" min="0" disabled="true" name="attr_vitnercraftsv14" class="sheet-stats-half" value="((@{vitnercraftlevel14}-2)*10)"></div> </div> <div class="sheet-col"> <div class="sheet-row sheet-stats-label"><label for="attr_vitnercraftroll" data-i18n="roll" >Roll</label></div> <div class="sheet-row sheet-skill-roll"><button type="roll" name="roll_vitnercraft1" value="&{template:default} {{name=@{vitnercraftname1}}} {{Roll:= [[1d20]] vs [[@{vitnercraftsv1}+?{Modifiers|0}]]}}" ></button></div> <div class="sheet-row sheet-skill-no-roll" > </div> <div class="sheet-row sheet-skill-no-roll" > </div> <div class="sheet-row sheet-skill-no-roll" > </div> <div class="sheet-row sheet-skill-roll"><button type="roll" name="roll_vitnercraft5" value="&{template:default} {{name=@{vitnercraftname5}}} {{Roll:= [[1d20]] vs [[@{vitnercraftsv5}+?{Modifiers|0}]]}}" ></button></div> <div class="sheet-row sheet-skill-no-roll" > </div> <div class="sheet-row sheet-skill-roll"><button type="roll" name="roll_vitnercraft7" value="&{template:default} {{name=@{vitnercraftname7}}} {{Roll:= [[1d20]] vs [[@{vitnercraftsv7}+?{Modifiers|0}]]}}" ></button></div> <div class="sheet-row sheet-skill-no-roll" > </div> <div class="sheet-row sheet-skill-roll"><button type="roll" name="roll_vitnercraft9" value="&{template:default} {{name=@{vitnercraftname9}}} {{Roll:= [[1d20]] vs [[@{vitnercraftsv9}+?{Modifiers|0}]]}}" ></button></div> <div class="sheet-row sheet-skill-roll"><button type="roll" name="roll_vitnercraft10" value="&{template:default} {{name=@{vitnercraftname10}}} {{Roll:= [[1d20]] vs [[@{vitnercraftsv10}+?{Modifiers|0}]]}}" ></button></div> <div class="sheet-row sheet-skill-roll"><button type="roll" name="roll_vitnercraft11" value="&{template:default} {{name=@{vitnercraftname11}}} {{Roll:= [[1d20]] vs [[@{vitnercraftsv11}+?{Modifiers|0}]]}}" ></button></div> <div class="sheet-row sheet-skill-roll"><button type="roll" name="roll_vitnercraft12" value="&{template:default} {{name=@{vitnercraftname12}}} {{Roll:= [[1d20]] vs [[@{vitnercraftsv12}+?{Modifiers|0}]]}}" ></button></div> <div class="sheet-row sheet-skill-roll"><button type="roll" name="roll_vitnercraft13" value="&{template:default} {{name=@{vitnercraftname13}}} {{Roll:= [[1d20]] vs [[@{vitnercraftsv13}+?{Modifiers|0}]]}}" ></button></div> <div class="sheet-row sheet-skill-no-roll" > </div> </div>
1651562577
GiGs
Pro
Sheet Author
API Scripter
I was asking in case you needed to do the same operation on those 14 attributes, but it sounds like they are working fine.