#Custom System Builder
1 messages · Page 12 of 1
i have noticed if I don't put it as a formula
it just won't function at all
the issue is getting it to be accessed by the hidden attribute
well just to confirm what you want to achive:
- a hidden label
- modify this hidden label with an effect
- true/false
I basicly want a on off flag yes
(though I should update my foundry to version 11 didn't know I was still on an older version)
i guess you can also work with 0/1 for true/false right?
yes but currently the issue is getting the hidden attribute to recognize it
try this:
the active effect seems to at least be able to be pulled rom
basicly all you need to do is add/remove the effect. configure the effect with a basic operation like +1. set the key of the effect to your hidden label. set the hidden label to 0. then you can toggle the hidden label with the effect
so if I"m getting this strait the issue is it has be a lable? it can't just add to the attribute?
uhm
er well hidden attribute
i dont know what you want to know exactly
look at my screenshot
hiddenFlag is is hidden attribute
the label is just there to show that it works
hilariously it shows the opposite
the macrO i have to check it shows the attribute is unmodifed
only the lable
sooo you mean you get the value of something with a macro and it shows e.g. 0 but in the sheet it shows 1?
console.log(token.actor);
let hiddenActivated = token.actor.system.hidden[0].value;
console.log(hiddenActivated);
let phrase = new ComputablePhrase(hiddenActivated);
console.log(phrase);
await phrase.compute({});
let result = phrase.result;
console.log(result);```
love how I reset foundry and it seems to have broken, but I need to come back to this at a later point, have other obligations atm.
peh so i guess this is something for the devs 😅 maybe you can't do it this way
hmm might have figured something out
i just checked and yes it seems that hidden attributes don't get increased by the effect but if you use a label is works
but you can do it with a easy workaround.
instead of hidden attributes create a container (panel) at the bottom which is hidden and store your "hidden attributes" as labels there
Yes i'm seeing alteratives
tho weirdly it works not as an attribute
just not a hidden one
for some stupid reason
🤷♂️
yeah because it is actually displaying properly
it seems hidden attributes might just be broken when it comes to formulas?
oh well this I can tsill work with
So uh, today I learned that sameRow() works on non-dynamic tables >_>
is it possible to modify a number field with
${setPropertyInEntity()}$ from within an item modifier?
?
wanted to share, thanks for the help with custom checkboxes, specially @vagrant hollow
What ist your use Case? What do you want to achieve?
Its a wound That reduces the current Value of Endurance by -1.
OK and why would you handle this in an Item modifier?
- why do you need Setproperty for that?
can I know how you set the user image on the chat card?
iirc most modules does not work
doesnt display it
its a module, Chat Portrait
Because it created wounds and other long-term conditions as items. Why not? It tried setproperty because im a noob to this an need to fiigure things out.
I wouldn't recommend this way of doing it, this will reduce the property by 1 every time the character is reloaded
If you need to make it like that, you should create a label containing the current Endurance, keyed currentEndurance, with text ${Endurance}$ (assuming your initial text field is keyed Endurance, and use the currentEndurance key in the item modifier
any one have implemented a reroll button? for things like luck etc on chat window?\
thanks for your input. what will happen with the number field in the moment i update the new label with a different value? Endurance is one of two ressources i track with attribute bars on the hud, so the number fild (endurance_current) will constantly change.
the label will be recalculated with the number field input, and modifiers will then be reapplied
sounds doable 🙂 👍
Is it possible in CSB to have a roll message list all target names if you have multiple tokens targeted, or will it only reference the first target multiple times?
That's a good question, Vailyss, I'm not sure if there's anything in the documentation regarding AOE targeting.
I suspect it’s not possible but just wanted to double check. I didn’t see anything in the doc for it either
i am also looking for a good way to do that since it seems like its only single target
is there a way to get the data path to a specific number field within an actor sheet, so the value in it can be referenced 👀
When you say “data path “ what do you mean?
i assume you mean with scripts?
then it would be %{return entity.system.props.yourNumberField}% (assuming this label is on the actor sheet)
there are more examples in the scripts section of the documentation
@brittle moth any Suggestion?
I think it's because the Radio 'group' is part of the same group, and the value for them (when they're made) defines what every radio button in that column is going to be.
Yep, there is a bug there, I'll fix this 🙂
@brittle moth Any idea why this is bugging out?
It works fine for every other click.
hi, with the new updates, Can i extract values from item containers to make calcules with them?
Player can have 3 layers of armor and each armor have 7 tipes, blunt,edge, pierce, hot, cold, electricity, energy. Armors are objetcs in item container.
The final result for each type is take the higher and sum the half of others.
No idea, sorry. Maybe there's something in the dev console that can hint to the error
You can't directly get data from item containers, but you can use modifiers. I don't know how to do your calculations though, this seems complicated at first glance ^^"
I'm not sure. Because it'll work initially, then it'll error. And the error for it is "Cannot convert "Mode" to a number", yet, works perfectly fine after clicking it. Every second 'use' of the highlighted button causes that error :s
Even though "Mode" is literally from a Number Input. I have no idea why it's having such a moment trying to "convert" it from something, when it already is?? :s
Beyond confusing :s
I got the item container like that right now, the image item even scales a bit during hover for the player to see better. I'm quite happy how everything is panning out until now, thanks again to all Devs, but I would like to ask: is it possible to create a toggle/button that when pressed it would reveal / hide the description text? (I would like it to appear below the line of the item, opening like a accordion, repositioning the items to accomodate...
Uhm this Looks nice, is this all CSS Styling to get bigger Item Pictures?
Yeah, just removed the boxes and then added a scale effect in css. the code is like this:
a.content-link {
background: none;
border: none;
}
.custom-system-item-container-image {
object-fit: contain;
max-width: 35px;
max-height: 35px;
margin-right: 5px;
margin-bottom: 2px;
vertical-align: middle;
border: none;
transition: all .3s ease-in-out;
}
.custom-system-item-container-image:hover {
transform: scale(2);
margin-right: 20px;
}
I would like to make the images bigger, but for this to be practical i would need to hide the big description text block or make it appear in another line (probably possible with css translates and such)
thank you 🙂
@brittle moth @formal goblet
did template updating break again with the last update?
i'm not 100% sure if its the same issue as before but it kind of looks like this bug again:
https://gitlab.com/custom-system-builder/custom-system-builder/-/issues/275
I created a bug report since it seems to be another issue. Probably related to dropdowns doing strange things.
https://gitlab.com/custom-system-builder/custom-system-builder/-/issues/304
I have what I hope is a straight forward question:
In CSB, I have a Label Roll Message that calls a macro with the syntax %{return await game.macros.getName(STUFF HERE)}%
In the macro I create a ChatMessage that displays to chat inside the macro. Right now, I have a return null; at the end of the macro but that then creates another chat message in the in game chat that just says 'null'
Is there a way to return the ChatMessage content via the "return" statement or a way to return something (or catch it in the macro call) so that it doesn't kick off another chat output in the game?
This is my ChatMessage call inside the macro that displays to the in game chat...
```ChatMessage.create(chatData, {});```
have you tried without return in the label? does it change anything?
With this in the roll message:
%{await game.macros.getName('MEGSCombatCheckSkill').execute({args: ["skill", ""]})}%
and no return statement in the macro, I still get an additional chat message but now it says "undefined"
I get the same thing if I leaave in return null;
There is no way for a Label Roll to not trigger a chat message as of now. I'd advise you to return the contents of your chat message from the script, so that only it gets printed
I'm fine with that. What is the proper syntax to do that? Right now in the Macro I output the chat message via
ChatMessage.create(chatData, {});
Where chatData is my assembled content
I've tried return ChatMessage.create(chatData, {}); but it returns an 'object' to the chat window
Your chat-data contains your message, in the content property. So you need to return chatData.content;
@brittle moth Ah! I was trying chatData by itself, let me try with that
Hmm that throws a very wordy "Error" in the log and it displays ERROR on the chat window
The content displays correctly within the macro, so is it possible the chatData.content has things that can't be parsed if returned?
SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 202 of the JSON data
Hi, I had a question. I may be missing something.
I have a template character sheet which I'm trying to assign my health attribute to the resources bar of the prototype token, but the attribute bar only shows up for the children meaning I have to manually assign it for each child. The attribute bar is a simple attribute bar as complex ones don't let you change them from the token, and is defined as a number field with a maximum. Am I missing something?
@brittle moth thank you for the suggestion adding templateSystemUniqueVersion: 1 to the item macro - but sadly this didn't fix it
Weird... Can you try return '"' + chatData.content + '"'; ?
Dammit
I don't really know what's going on there, do you have a public access I could try ?
public access? you mean if my game is hosted somewhere?
For now, you must define the prototype token on every actor, it is not inherited from the template 🙂
Exactly ^^
Ok, good to know :3. Thank you
no - can only host privatly via port forwarding
but i guess that won't help?
i can send you my world file if this would help?
Mmh. I would just need a way to connect to your server, like one of your players
But if you can't, I could try loading your world on my side and see on my computer 🙂
will dm you
I tried that. I get the same error. This is what's showing in the console.log as the object's formula (chat data)
formula: `'"<h3>Accuracy (AP: 10)</h3><b><i>Combat Check</i></b></br>AV: 10 (+0 / +0 bonus)<br/>EV: 10 (+0 / +0 bonus)<br/>OV: 1 (0 shifts) SN: 4<br/>RV: 1 (0 shifts)<br/><br/>Roll: <span style="background-color:#dfd; padding: 1px 4px 1px 4px; border: 1px solid black;" data-tooltip="8 3"> <span class="fas fa-dice-d20"> </span> 11</span> (Hit! 1 shifts)</br></br><h3>RAPs: <strong>10</strong> (Full EV +0)</h3>Trained - Physical; Mystical*; </br><b>Knockback AP:</b> 1 - Target's Size AP"'`
maybe you need to stringify the content first?
How do I do that? I thought chatData.content was already a string?
or encodeURIComponent?
i pass some data and use the following combination
let attackDataJson = JSON.stringify(attackData);
data-attack-data="${encodeURIComponent(attackDataJson)}"
and then reverse that in another macro - without that i had errors
could be worth a try
got my DM on discord?
I'm very much a beginner at making macros and running them, so I'm not sure what to do with all you've mentioned.
I am calling a single macro from a label roll message, and trying to return the string of chatData.content back. I am not sure about using another macro to do something else
try in your macro
let chatDataJson = JSON.stringify(chatData.content);
let chatDataURI = encodeURIComponent(chatDataJson);
return chatDataURI;
then in your label you would need to
%{let chatDataURI = await game.macros.getName('MEGSCombatCheckSkill').execute({args: ["skill", ""]})
let chatDataContent= JSON.parse(decodeURIComponent(chatDataURI));
return chatDataContent}%
Ah okay I can give that a try!
Hi guys. So, I have this code:
${#acrobatics:=ref('acrobacia')}$
${#bonus_acrobatics:=ref('bonusacrobacia')}$
${#roll1:=[1d20]}$
<div class="mb-roll">
<h3>${!check_type}$</h3>
<p class="sum">${!string(roll1)}$ + ${!string(acrobatics)}$ + ${!string(bonus_acrobatics)}$</p>
<p class="result">${!string(roll1+acrobatics+bonus_acrobatics)}$</p>
</div>```
And i'm trying to add a check if roll1 = 20 it appears a message. But i'm unable to do so. Anyone can help me?
I reproduced your issue, thanks to your example. You need to escape the apostrophes in the message so that the string will not get cut abruptly, i.e. your need to return chatData.content.replaceAll("'", "\\'");
I tried this as written but I still get the same error. LinkedFluuush just suggested a problem about escaping a character, so going to try that
Worked perfectly! Thank you so much! Thank you also @scarlet skiff for trying to help!
Hmm one potential issue is that now, the chat message is being displayed as coming from the player and not the actor/character. I had used the chatMessage speaker within the macro. Is there a way to duplicate that when returning the content?
just do the same as you did in your macro
in script you can do everything you can do in macros
In the macro I created a chatMessage object with a speaker and content, can I do that within the label roll message with the returned value?
yes. use the returned content for content and get the speaker like you did in your macro.
you should be able to pretty much copy and paste it
Okay let me try!
You cannot do that, the message sending is handled by Custom System Builder at this point. You won't be able to change this, I believe
ah i guess you can create 2 messages with the label script then 🤔 one which gets styled and done like with a script macro and one which creates CSB from the label roll 🤔
okay so extrapolating what you suggested, I went back to returning the entire chatData object and then in my label roll message script I put this:
ChatMessage.create(myChatData, {})}%```
It's interesting, I get the properly formatted roll message as if the macro had output it, then I also get the other one with "undefined"
So something in the label roll message above is telling it to display twice, once correctly and once with 'undefined'
yeah what @brittle moth said. its a limitation of CSB. you always get a chat message with the label roll execution
Oh okay. So there's no 'fix' for this. I'll likely go back to having the macro output the message and live with an extra 'null' output
i think so - at the moment not possible i guess 🤷♂️
If there's no way for the CSB label roll message to 'speak' as the Actor instead of the player I may have to live with the extra 'null' message for every roll
Actuallyl what I did is have the macro return "Roll successful" or "Roll cancelled" for CSB to display
i am not sure if i am the only one but a lot of the dynamic tables on my sheet that used to work previously is now broken after the most recent update. once you delete an existing entry everything goes haywire with the roll.
it's not perfect but at least it's not ugly
do anyone else have this problem?
I have a stop gap solution at least
I don't understand your issue
I'll be honest though, I looked into this because I thought it worked at some point, and I was right, this is a bug, messages should be spoken by the characters, not the players.
So this will be fixed in the next version ^^
i closed the issue in gitlab
let me do a video recording
Sounds good!
It's just simple code
<p style="text-align:center;"><i class="fa-solid"><b>Skill Level:</b> ${!sameRow('level')}$</i></p>
<table class="pc_chat_card">
<tr>
<td>${!sameRow('description')}$</td>
</tr>
</table>```
@brittle moth this bug happens once an entry gets deleted on the dynamic table. its like the index didnt get reset or something; retaining some reference to it
it works on my older char sheet which i did not remove anything
happens after the recent update
i guess its good to mention these tables has been on the sheet for a very long time
not sure if that's helpful
in most cases i have to delete the table and remake it from scratch but that will mean i will be missing data on all my sheets ><
could you open the dev tools, and send me the result of game.actors.get('<yourActorId>').system ?
You can copy the actor id by clicking the compendium icon in the actor's header
sure thing!
interesting so it doesnt remove the entries huh but set it to false deleted. thats how you do the undo?? nvm this. just random musings lol.
Welp
Honestly, I don't know what to say
I really don't know what went wring with these tables, nothing looks bad in their definition...
You could try exporting and reimporting the actors, that could fix things
dang ok
let me try
yeah its also happening to new dynamic tables
i am not sure whats wrong
at logCompatibilityWarning (commons.js:1996:19)
at ChatMessage._logV10CompatibilityWarning (commons.js:8453:14)
at get data [as data] (commons.js:8341:24)
at isMessageVisible (tabbed-chatlog.js:73:27)
at tabbed-chatlog.js:530:88
at Array.filter (<anonymous>)
at yes (tabbed-chatlog.js:530:71)
at Dialog.callback (foundry.js:65067:35)
at Dialog.callback (foundry.js:65120:54)
at Dialog.submit (foundry.js:65005:46)
at Dialog._onClickButton (foundry.js:64933:10)
at HTMLButtonElement.dispatch (jquery.min.js:2:43184)
at y.handle (jquery.min.js:2:41168)```
not sure if this is related
That's from the tabbed-chatlog module
ok
hmm not related then
it seems like it is sheet template specific. if i move the table from the sheet to a brand new template the problem doesnt happen. but every new dynamic template on the sheet meanwhile is not working correctly.
ah scratch that also happen on new template
i am at wits end
It looks like your actor doesn't save/reload when you change a value, but it should
maybe that's the issue
this is a brand new template and i think really illustrate the problem well
Phew lol
But yeah the trigger seems to be the deletion
My half baked theory is that it probably retained the reference even after deletion....maybe
It's even dumber than that
the label's reference is mapped on the row it's rendered, not on the row it should reference in the data
So the label on the first row will always refer to the first row of data in your dynamic table, even if it was deleted a long time ago
Thank you for this, I did not see this and I will release a hotfix for this ^^
i have a weird issue (not sure if it happens for a player):
if i have selected a number or text field (to write something in it) and press enter, it starts running a macro.
i can run the macro from the sheet from a button.
i also tried to use another button and then press enter, still starting the macro. pressed other roll formulas starting a macro and then press enter again in a text fiel, still starts this specific macro.
if i am not in a text fiel and press enter, nothing happens
and just tested: after clicking on a checkbox, so it marked or unmarked, it will also start the macro when pressing enter
You´ve probably defined a Script in a Label instead of a Label Roll Message, haven`t you? If you did that, it will start it every time something gets updated in sheet.
nope, it is only on the label roll message, and only triggers, if i press enter. i can change the value or the text and click anywhere, the new value is safed and no macro run
**Version 2.4.1 is now generally available, with the following changes : **
Fixes
- Fixed speaker on Label rolls
- Fixed Dynamic Table roll issue on deletion
- Added 'linkedEntity' to script-execution as context
- [#302] Fixed some dialogs width
If you encounter any issue with this new version, please post an issue on Gitlab : https://gitlab.com/custom-system-builder/custom-system-builder/-/issues/new
literally same thing happens to me now, but I can't tell if it always happened though because I never hit enter key for any reason. I just did it accidentally today for the first time. But just tried a test checkbox and it doesn't trigger the macro for me, nm... i see what you mean. hitting enter after clicking a check box also does it lol.
You can use target.Health. The target-prefix is just undocumented for now, but it should work that way 😅
Could I have an example of what that would look like when applied? I just went and tried it but nothing good arose from it, health wasn't shown being damaged and the roll which did show up did show it being reduced but it even so, it wouldn't reduce beyond the amount in the initial "rolls" even if it seemingly did work as intended
setPropertyInEntitity('target', 'Health', "target.Health - ${Damage}$")
what am i doing wrong, here?
the keys seems to be working. but it doesn't like the IFTHEN statement i copied from the example template
When using text variables you need equalText() to compare them.
Think it is ${equalText(ancestry,'tough')?'test1':equalText(ancestry,'arcane')?'test2':'failure'}$
hm, i thought the dropdown list results were also keys
that did seem to do the trick though
I'm sorry, never remember if its the key or the label that goes in the formula but it's easy to check 😅
is there a way to split formula between separate lines to make it easier to read
getting an ERROR when i tried a <br>
Not that I know of.
You can if you finish the function and make the other half of the function
${function one}$ <br> ${function two}$
I'm attempting to load up my own custom CSS for the Custom System Builder, but no matter where I put that file, the loading tab in the settings just can't spot any CSS file at all!
EDIT: So, I had to pick a different file that the browser could actually see, and then I had to go back and change the file name... Crazy, right?
@cosmic karma really like what you're doing with CSS. Inspired me to do that next
i mean, just unterneath the filename there is this little hint, telling you, that the filebrowser cannot see .css files 😄
@robust wren did you ever figure out how to stop the sheet from rolling with enter key?
anyone have a good run down of how user input templates work? the wiki says that if i use the same names then fields should be filled by default from the item but i cant get it to work
you can't get the template to pop up? or can't get formulas to work?
template pops up
but test labels or fields in the template wont pull any values from the item in the item container
${#?#{ExtraAttacks}}$ does your formula look like that? and your user input template should be named exactly what you put in there. caps matter, spaces matter
oh
I'm not too sure a pop up can pull values, only give them. if that makes sense
hmm ok
like on my pop up i ask how many extra attacks. (for full auto weapons.) player inputs a number, (the field has the key <attackTally> and then this code is run in the roll message Like this
${#?#{ExtraAttacks}}$
${#setPropertyInEntity('item', 'currentAmmo', "item.currentAmmo - attackTally")}$
thanks for the info, sounds like i cant do exactly as i want but im pretty sure i can just make and duplicate user inputs to get the result i need, was just hoping not to have to haha
Yeah, have to get creative sometimes. lol
nope, but i havent tried. I first have to add a bit more funcionality and then more css 😄
btw. i have a question, not sure if its doable:
i want to to track the total weight of items and so on on the sheet. Is it possible to make it look like a bar or something?
Nope, there´s no bar-component in CSB
Not on the sheet. But you could do a bar over the token show the load of every charakter...
Guys, how can I make this expression in Custom System Builder?
I'm trying to break my head thinking about a palliative solution, but it's difficult
when using 2 number fields in a user input template can i have the 2nd number field have a maximum value of x - number field 1.... i have tried what i have previously used for this formula and it seems to just ignore the component key entirely... the user input template wont even just display information in a label from one of the number fields.. help please 🙃
${expression <= 10 ? 0 : expression <= 12 ? 1 : expression <= 16 ? 2 : 3}$
I tried to use this expression in several ways, but for some reason it didn't work. I'll focus on that expression then. Thank you very much!
Hi, I just updated everything to v11 and found a bug(?) where only some of the actors are no longer displaying their bars. Looking deeper, it seems like I can't even access the attribute bars at all.
Is there a way to prevent the character portrait from moving in the top left?
Did you create your components in the header instead of the body? 😅
Look at this magnificent sheet
it isnt a problem except for the fact that a couple of labels push it down just a tiny bit too much and causes it to shift
So if theres a way to vertically squish things in a panel
I'd be delighted to know
I can use my (very limited ability to use) css to move label text, but that doesn't actually solve the problem
I´m also no designer, so my CSS skills are... questionable. Even more without the Tailwind-Framework 😅
fair fair
ig my bandaid solution would be to just move one or two things over so it'll fit better
I'm just being dumb, I really want to have a tabbed panel in the header lol
there are 2 ways to do bars. either via sheet bar attribute button or by setting a maximum value in number fields
so check either of those 2 maybe?
Hello, is there a way to associate items (their json), directly to one of the item templates instead of the equippableItem? I'm trying a batch import using the Data Toolbox module and works like a charm. But after the import I have to manually enter each item on the newly created compedium, select my Trait template (there is other two for others types of items) , update and only then is ok...
before:
after:
there is a module to add custom CSS inline. It's easier than uploading CSS files imho, if the modifications are light
They were working perfectly fine in v10 and I haven't changed any settings before or after updating, but I'll check when I get back, thanks. It's possible something got borked somewhere.
good question had similar problem and i had to manually set the template after importing
hope there are better way to do it for easier onboarding
The template is based on a export item exported as a json and nowhere in the item json the template we are using is associated. there is only the "type" key with the value equippableItem...
Do you know the module name?
i actually have some modules not detecting the attribute bars but those are modules....so i am not sure if its compatibility problem.
I'll run ftc, forgot about that one.
argh, just found a way!
the template is associated, but not with his name. It uses the ID
Just add this info to the template file of Data Toolbox. When you import it the correct CSB template will be assigned to the items, but no information will be showing... yet. The trick is: just import all the compendium to the game (right click >> Import All over the compendium) and press the "Reload all Item Sheets" button on you CBS template. The info in all of your items will be updated
the finishing touch is: delete you compendium, create a new empty one with your preferential name, go to the recently updated items and export the folder to the newly created compendium, but now with everything filled up 🤘
ooh awesome :DDD
Heya, hoping someone can help with this.
I want to be able to set the maximum value of FIELDTWO using 4-FIELDONE inside the dialog box popup from the user input template. do user input dialog popups not work this way?
FIELDTWO doesnt seem to get limited by the forumla in the template
They do not support computation-updates atm, so it's not possible to use intermediate values.
dang, ok thanks for the heads up... thought i might have been missing something
not quite it? specifically, it's for Zhell's Heart Container module that references the number in the field of your choices hp.value works easily enough for dnd5e, but using a custom field from CSB doesn't seem to be working quite the same. or maybe I just don't understand. I'm fairly new at this 🙃
Try out system.props.hp or just hp (or however your key is named)
G'day everyone! I was thinking of counting both successes and failures of a dice pool, but my clunky brain could only come out with this: a macro with a while loop within which each die is rolled and checked for success/fail (using a simple if), accumulating the results in two variables to be formatted, along with the roll outcome, in a chat message.
Doable or just a feverish rambling?
Seems doable for me
oh gosh, I feel like a fool 
Cool! Thing is, I have no clue about how to format the message so that it looks like a normal roll 😅
question for the devs: Kind of a niche ask, but would there ever be the possibility in the future to add in the ability to place an item container within an item?
not sure, if you meant that, but u can set the max and min width of a panel with css. Ofc you can do that with hight, too.
oh could you give a quick run down as to how you can do that?
oh and, that is basically what I meant, thanks for the answer
.sidePanel {
width: 147px;
max-width: 147px;
min-width: 147px;
i am pretty sure, you dont need the row width: but it works that way 😄
for the height it is the same
.sidePanel {
height: 147px;
max-height: 147px;
min-height: 147px;
and if you need both, just write them both underneath 🙂
heya,
This is kind of working for me but not quite, i think im messing up the checking step?
The user input is for rolling against multiple targets and im trying to check that the amounts input dont fall below or exceed the attack value, if it doesnt match i want it to reprompt the user input and if it does match i want to be able to show the rolls like normal. anyone able to help?
There will. We blocked the possibility for now because you cannot attach Items to Items atm, but there will be a solution in the future.
Nice! Happy to say I found a workaround anyway, but that’s very exciting to hear all the same!
in the 4. row, FIELDCHECK = 0 ?
this should be FIELDCHECK == 0 ?
and i think you should safe the Multiple Targets Attack, otherwise he will ask in the Fieldcheck with another popout, i guess, not sure if it will work at all
yeah i mess with it a bit more, im not sure it will work the way i want, going to try something different. thanks for the help though 🙂
yeah i think i roughly know what you want to archieve, and tahts not working with the code youi have there atm. 😄
There are limitations you have to consider:
- Conditions do not work for User Input Dialogs and Rolls, they will be executed regardless of the condition.
- User Input Dialogs will only open for the source-actor (the one which executed the Label Roll Message)
TLDR: make the options in a dropdown change by select a option in another dropdown.
I'm having a hard time trying to use dynamic tables to set the values in a list. How should I do that? What I want: I have a List A with 5 categories (keys values). When I select one of these I want the List B to present me 4 options. For each category in A there will be 4 different options in B. I want to make B a hidden dynamic table, each column will contain my options for dropdown B. Is this even the correct way to approach this?
thanks for the info 🙂
So, I'm trying to do a thing. I want a dropdown on a character sheet (easy) that adds bonuses to certain die rolls, depending on the choice. Specific use case is Kids on Bikes. For example, a child would get +1 to Flight checks. So I have the button configured to this: ${[1d:flightval:] + ref('age')=='child' ? '1' : '0'}$. But that is very wrong.
I also tried adding checkboxes for players to check that just add +1 to the respective roll. But I haven't been able to get that to work either. I think I'm using the condition wrong here in general.
Use brackets from ref() to the end
Like this? ${[1d:flightval:] + [ref('age')=='child' ? '1' : '0']}$
That gets me: Uncaught (in promise) Error: Unresolved StringTerm 'age' requested for evaluation
Image is the dropdown config
The round ones 😅
Ah
That gets me Error: Cannot convert "child" to a number
I can make the keys numeric, I guess
You need equalText() instead of == if you want to compare strings
ah
A secret technique 😄
Can't get that to work. I'll just try a generic "bonus" field for now.
Show what you got now
${[1d:flightval:] + (equalText(ref('age'), 'child') ? '1' : '0')}$
Any suggestions of how a complete noob could go about changing the appearance of the sheet using css?
So far I've been able to get roll results, count succ/fail and show those in chat. But roll results are shown just as numbers. Any way to show them as dice, just like a standard roll?
This is what I have.
Oh awesome! Do I just stick these into the additional css section of a panel component?
Yes. But don't make two of them, put them into one 😄
And you have to adjust the values for your purpose 🙂
I mean, you know how the css in CSB works? You only put sidePanel into the additional css section and put the code into the css file 😅
Do tell! Mind sharing your workaround? I'd like to have tools (item) listed as part of a skill (also item). Right now I do it with a RTF component with UUID links to the tools
so, idk that my workaround will work for everyone. Specifically, I'm doing a monster catching game, and my idea was to make the monsters be an item template that you could attach to your character, and their moves would be another item template that you could put in the monster item.
Since that obviously isn't possible, what I did instead was make 8 tabs in a tabbed panel (the number of monsters a single character can equip at a time,) and in each tab I had an item container that was labeled MONSTER_spell_[1-8] then on the spell items I added a dropdown menu for MONSTER_[1-8] and added a filter to each item container saying that the spell would only show up in that container if the spell's dropdown had the correct monster number selected for the corresponding tab on the actor sheet
the singular limitation to this is that I have to have a tab somewhere on the actor sheet that players can access that just has every single monster's spells on it so they have somewhere they can select which monster each spell goes to when they first get it. Otherwise they'd put a spell on their sheet and it would disappear cause they couldn't assign it a monster until it was already on the sheet, and none of the appliccable containers would display it until a monster was assigned
it's a very "fine for now" solution. It works great for what it is, but I'm absolutely going to abandon it as soon as I can put item containers on an item sheet
Interesting! I did something similar using check boxes on the 'tool' item sheet, since some tools can be used for multiple skills. It's not great, since the PC/NPC technically isn't limited in how many skills they can have---just happens that most don't have more than 3 or 4, so I can just have 5 check boxes on the item sheet. I have a number field on the skill sheet [1..5] so players can assign the skill item to a skill "slot".
Then it's just a matter of dedicated panels on the actor sheet for each skill, with an item container for the skill itself and one for its tools. I like your tabbed panel idea....
I get worried about all the sheet calculations overhead
I also did an "active effects" section for assigning buff and debuff effects from spells. Those spells will have a checkbox labeled ACTIVE that when checked will display in a specific item container on the actor sheet.
Tbh, it'd be a touch silly, but you could do a tabbed panel within a tabbed panel and have each secondary TP have like 5 tabs for 10 skills or so, and each one of those skills have its own numbered item container for assigning tools to an associated skill, that would still look fairly clean for the most part and would cover probably the majority of builds you'd need, and if not you could always add a third base tab with 5 more sub tabs
a very "When in Rome" solution, but for now, we are indeed in Rome
if you decide to do that, I'd create sub-templates for the actual skill tab with the item container and all, that way you can just shove them into each tab instead of having to make them all by hand
True. Yeah, I'd definitely sub-template that since Ctrl dragging between tab panels isn't a thing
I say 'skill' but I'm creating for Risus, so the skills are 'clichés' like "nerdy videophile kid on a bike" or "skeezy mid-life crisis junk dealer" 😁
those are skills yeah, lol
what is going on here? i tried dragdropping an item onto the tabletop
Hello, guys!
I'm new to foundry and trying to build my world.
Can somebody help me please?
I'm trying to get the keys a value to use on another input.
It would be:
vitnivel5 = level * 5
vitnivel10 = level * 10
I need it to be numbers because I need to sum it later.
I tried this, but it doesn't work.
vitnivel --> ref(vitnivel)
OMG it worked! Thanks!
It was so simple.
Thank you so much
Can somebody help me on this too?
I want my LABEL from a dynamic table to roll on chat the info on that row when clicked, how can I do this?
Using the keys doesn't show me anything on chat.
This is what I'm trying to send on chat.
you should be using sameRow https://gitlab.com/custom-system-builder/custom-system-builder#424-samerow
Thank you!
You could use the Vibility conditions to set them up. Should be easy, depending on how 'in-depth' you want the lists to be?
Haha, I'll be honest, I have not really touched css yet! I'm pretty clueless,but learning is sorta just apart of the process, so if you've got anything else to share I'd love to hear!
I've tried but nothing works... What's the formula?
In dropdown B I've tried:
"dropList-a == option-1" and also "dropList-a equalText(option-1)"
and didn't work.
Where:
dropList-a: component key of the first list
option-1: key of the first option in List A
You could have a label with switchCase which gives you a value 1,2,3, etc. And use that value.
I don't think I know how to do that... 😦
So lets say you have a Dropdown list whose key is Food with 3 options. "Breakfast", "Lunch", "Dinner"
You then have a label which has ${switchCase(Food, Breakfast,1, Lunch,2, Dinner,3)}$ and a key of FoodList.
If you have another Dropdown menu with the key "FoodBreakfast", you can set its visibility options (within advanced configuration) to be FoodList==1 will display when you have chosen 'Breakfast' from the "Food" Dropdown list.
I hope that explaination helped :)
this was much effort but i think im getting the hang of it
I spent far too long on my weapon template haha.
it sucks that csb only lets you use labels in item containers, guess ill just have to make every weapon unique so i can still track durability and special ability usage
I won't lie, I struggle with so much of CSB. I've taken a break from it because I'm kinda dumb lmao
ive been searching discord a lot
its not exactly intuitive
think i have a small head start after working with roll20 html/css and google sheet formulas
like this? And the key for "${switch..." is FoodList, right? Didn't work, is anything wrong?
@formal goblet I'll take a look now, thanks
I'm just trying to make the label part, (there is no list yet) 🙂
Gimme a moment, I really suck at trying to explain technical stuff lmao
switchCase(1,2,3,4,5)
1 - Target Key
2 = Choice 1
3 = Output if Choice 1
4 = Choice 2
5 = Output if Choice 2
You can do 5,6) and 6 will act as an Output for any undefined choice.
right.
Just thought I'd misunderstand entirely what you'd say and re-explain how switchCase works lmao
No I think i got the gist of your idea. I can see the label on screen as "1" if nothing is selected. As soon as I select something in the Food dropdown the label disappears.
Can I get pictures of it? Just to better understand and try to troubleshoot?
This may be the reason, I tend to forget to do this for my own things.
If you make it ${switchCase('Food','Breakfast',1,'Lunch',2,'Dinner',3)}$ does it fix your issue?
it solves! thanks!
No worries. It's always the small things that end up making huge problems haha.
just to be sure: I can put the switchCase at the end of table, make it visible only for GM and thats it or there is another way to use this technique?
So if the visibility "formula" is set, it'll hide it for everyone, but changing it's visibility settings to GameMaster will prevent players, and others who shouldn't see it, being able to see it.
I would like to change the background of a Number Field when the Number in it reaches certain tresholds. Kind of an optical "Warning".
The key of this field is "LE_current". When the value is less than 20, then it should change to orange. Less than 10 change to red.
I know how to do it with a Label Field, but for a Number Field i think i need CSS? Anyone know how to do it?
You're welcome :) Sometimes the best solution is often the simpliest.
shit. i've run into math
i brute forced it. there's probably a smarter way of doing this
${carry > slots ? floor(4 + (carry - slots)) : carry == slots ? 4 : carry >= (slots * .75)? 3 : carry >= (slots * .5)? 2 : carry >= (slots * .25)? 1 : 0 }$
there is a way to change the state of a checkbox by comparing to a label?
If label X = 1, checkbox = true
?
setPropertyInEntity('self', 'checkboxKey', "labelKey == 1 ? true : false"). But I recommend to use icons instead of checkboxes, because if the value is derived, it should be readonly. You can use this Label instead of a checkbox: <i class="fas fa-${labelKey == 1 : 'crossed-check' : 'empty-check'}$"> (You have to lookup the Font-Awesome-Icons for yourself and replace crossed-check & empty-check): https://fontawesome.com/icons
Not sure I mostly use it to create stores and turn enemies into lootable instances I have not tried one off items on the map
Hi again.
I'm trying to create a message for a dice-pool roll, in which I'd like to show the dice pool and the total at the opposite ends of the same line. Tryed this, to no avail:
content: "<style>" + ".toleft {" + "float: left;" + "}" + ".toright {" + "float: right;" + "}" + ".clLeft {" + "clear: left;" + "}" + ".clRight {" + "clear: right;" + "}" + "</style>" + "<div style=\"font-size:15px;text-align:center;border-width:3px;border-style:ridge;border-color:black;padding:5px;margin:5px;border-radius:4px;\">" + "<p style=\"line-height:180%;text-align:center;border-width:3px;border-style:ridge;border-color:black;padding:1px;margin:5px;background-color:#AAAAAA;border-radius:4px;\">" + rstring + "<p>" + "<p style=\"width:100%;\"><span class=\"toleft\"><b>" + tot + "d6</b></span><span class=\"clRight toright\" style=\"border-width:3px;border-style:ridge;border-color:black;padding:1px;margin:5px;background-color:#AAAAAA;border-radius:4px;\"><b>" + summed + "</b></span><hr style=\"color:black;\"></p>" + "<p class=\"clRight clLeft\" style=\"font-size:15px;text-align:center;border-width:3px;border-style:ridge;border-color:black;padding:1px;margin:5px;color:green;background-color:#AAAAAA;border-radius:4px;\"><b>Successi: </b>" + good + "</p>" + "<p style=\"font-size:15px;text-align:center;border-width:3px;border-style:ridge;border-color:black;padding:1px;margin:5px;color:red;background-color:#AAAAAA;border-radius:4px;\"><b>Fallimenti: </b>" + bad + "</p></div>"
This is what I get.
Any idea?
Thanks in advance 🙂
SOLVED: with tables...😅
Hi all, I am looking to develop a RPG system to use within foundry.
I want to create a d6 system for the original star wars RPG.
Any guidance would be epic
I would like to change the background of a Number Field when the Number in it reaches certain tresholds. Kind of an optical "Warning".
The key of this field is "LE_current". When the value is less than 20, then it should change to orange. Less than 10 change to red.
I know how to do it with a Label Field, but for a Number Field i think i need CSS? Anyone know how to do it?
oh dang i was just thinking of implementing materia system for armor and weapons. shame to hear its not possible for now.
a question, is it possible to currently bundle the custom sheets as a module if other users are interested in using it?
I´ve never seen one trying, but you can add them to the sheet-library by sending the templates to us: https://gitlab.com/custom-system-builder/custom-system-builder/-/tree/develop/sheet-library
Is it somehow possible to change the filter of an item container via a dropdownlist or something else?
I tried several ways to set the filter value, but I don’t get any result or error message…
Devs might correct me, but the short answer is no. It has to be a value.
Depending on how many options you have and how many items, you can use multiple item containers, each one set to a different value derived from the drop box.
Then, set the visibility of each item container to match the relevant selected value of the dropbox.
This'll basically toggle one item container "on" and the others "off" depending on the dropbox value
So dropbox value equals "1", only item container with filter set to "1" is visible, etc
Ctrl + drag lets you duplicate the item container so you don't have to redo the container's labels manually
The filter is static, so not really. So you have to use Item-Data to utilize your filter-logic.
Do someone know if there's a way to copy/paste fields on CSB?
I have this section here with a dynamic table, and I must have the same fields on each tab. (Recruta, Cavaleiro, Arqueiro etc)
You can copy the components by dragging them while holding the CTRL-key.
Thanks! this is so nice!
Is there a way to hide an item container when it is empty?
Where you select who has visibility of a component you can put in a custom formula that tells the component when to display and when not to
The issue is that there's no formula for Item Containers, so that doesn't help. Either he needs a workaround with Item Modifiers or with Scripts to set an apropriate visibility formula.
Oooh I see my b
yeah im using that to control which containers show at the moment based on a equaltext on a dropdown.... is there a not equaltext option?
New Label in Actor, new Item Template Modifier, which modifies this Label. Then you only have to check the state of the Label
oh, so the item ends up determining whether the container is shown?
Yeah.
I've come across an interesting wrinkle today regarding the issue I had brought up a couple days ago. Upon deeper examination, it seems there's something up with how attribute bars are acting with active status effects.
Without effects, bars show correctly.(I've tried this both with Bar Brawl active and with it deactivated. The behavior persists both ways)
https://cdn.discordapp.com/attachments/362618732985712641/1144456658710450326/image.png
And when any effects are applied, the bars disappear and subsequently AttributeBar.xx goes away.
https://cdn.discordapp.com/attachments/362618732985712641/1144456658421031033/image.png
what's the key for the image box in an actor or item sheet if I wanted to send that image to chat?
how did you get quantities working?
Could someone tell me a way to adjust the size of panels/components like this? It's stuck taking up one third of the space (area in red, roughly), but I'd like to push it a little further to the left.
Anyone have an idea why this formula isnt working? Only the last part (yellow marking) works, when the value goes below 20 it just turns black.
i fixed this error, you need to enter character as the "actor class type". the Player in Javier's screenshot didn't work
Not sure (well I have an idea, but I can't give a good answer atm), but if you'd like a functioning example of what you're trying to acheive I have one, if you'd like to see.
why do you have '' in a concat without a comma
shouldnt it be something like concat('string',variable,'string') ?
sure, would like to see
${concat(switchCase(sameRow('Dmg_Type'), 1, 'DimGray', 2, 'DimGray', 3, 'DimGray', 4, '#EF250F', 5, '#B9EB8A', 6, '#F6E61C', 7, '#53E1BF', 8, '#B66F00', 9, '#4791DE', 10, '#FDDDAD', 11, '#EB5EA4', 12, '#639A25', 13, 'DarkMagenta', 14, 'White', 15, '#008B16', 16, '#889136', 17, 'DimGray', 'Black'))}$ it uses switchcase, just realized after looking but
I can try and fix yours
that would be great
there is no " inside the concat
im coming from google sheets so maybe this works a bit differently
${concat(LE_current < 20 ? '#fde026' : LE_current < 10 ? '#f0a90f' : LE_current < 6 ? '#ff0000' : '#fDF5E6')}$ this might work, imma test it real quick for you though cause why not
wait
lol
whats the code for substituting a '
@dense pine
<p Style="color: ${LE_current < 20 ? '#fde026' : LE_current < 10 ? '#f0a90f' : LE_current < 6 ? '#ff0000' : '#fDF5E6'}$; scale: 1.5; padding-right: 2px;" <i class="fa-duotone fa-skull"> </i> </p>
wait
no wait yeah this should work
well, not sure it's working as you intend, but it should display correctly
so troubleshooting things in terms of logic should be easy so long as you keep consistent with the rest
maybe concat(LE_current,' < 20 ? #fde026 : '' : ',LE_current,' < 10 ? #f0a90f : '' : ',LE_current,' < 6 ? #ff0000 : #fdf5e6')
Whats with the and signs
guessing, it's supposed to output a ' https://www.ascii-code.com/ maybe a \u0027 would work instead https://mathjs.org/docs/expressions/syntax.html
nothing works so far 😉
uh, what exactly is the issue again?
wait...
oh
@dense pine got it
<p
Style="color: ${LE_current < 6 ? '#ff0000' : LE_current < 10 ? '#f0a90f' : LE_current < 20 ? '#fde026' : '#fDF5E6'}$; scale: 1.5; padding-right: 2px;"
<i class="fa-duotone fa-skull">
</i>
</p>
This one doesn't make any sense
yea im realizing that afterwards, was just copying his screenshot. cause why would you want two empty results in the middle?
Logic is basically backwards, the subsequent statements will not be tested if the first is true. You have to down the list in order to test each if then.
Totally got confused by how you wrote it at first, it was mostly a logic issue ig
assuming the syntax worked, his screenshot reads something like
IF less than 20, THEN color A ELSE nothing
IF less than 10, THEN color B ELSE nothing
IF less than 6, THEN color C ELSE color D
so im guessing if the variable was more than 6, it ignored everything but color D
Ohh
Well regardless, that shouldn't work, you can't have nothing for the rest to work, it'll just break. At least in my experience with colors and icons lol
also Martin, since you're awake, does there happen to be a way to adjust the area panel can take up. Just to fine tune the spacing of everything and all that.
It's an empty string. And because these are multiple args in a concat, that shouldn't be an issue.
Ohh I see
Give it a width then in CSS
Could I ask how that can be done? In the additional css class section or something?
Yeah, you'd need your own CSS-file with your classes.
Hm, I have literally no idea how to do that. Suppose I can try figuring it out.
But pointers are welcome, I'm just kinda clueless, I mostly just flub around figuring out what I can.
its a field in advanced configuration
It should be simple to add one. There is a small description in the readme
I seeee, thank you
This one might also work: https://gitlab.com/custom-system-builder/custom-system-builder/-/issues/231#note_1284412353
Oh this is neat, I'll probably use it if I REALLY can't figure out how this css file stuff works, but I think I got it
Thank you
say i wanted to make a 'group' actor. how do I reference variables from a different actor in CSB? i can't seem to find this in the foundry knowledge base
in roll20 it would be @{actorname|variablename}
you mean like fetchFromActor?
hm, doesn't show up in the foundry site. is that CSB specific
it's csb specificc
this seems to be it. wonder why its not default behavior in foundry
okay wow, this is insanely helpful, thank you. More convnient than the alternative.
this should be 7.22. how do i chop off everything after the second decimal?
tried these, they have inconsistent results
A. ${fatigue + round((coin * .01),2) + round((supply * .25),2)}$
B. ${round((fatigue + (coin * .01) + (supply * .25)),2)}$
C. ${fatigue + round(((coin * .01) + (supply * .25)),2)}$
last one acts up the least often
whoops, it just deleted all the coins i was trading. got a NaN result
anyone have an issue where CSB stops saving attributes on a template?
its right there on the sheet, but it doesnt show up elsewhere
just absolutely refuses to update. gonna have to give up for now
Thanks for this idea. I will try it.
This is a known issue: https://gitlab.com/custom-system-builder/custom-system-builder/-/issues/306
There´s none
I suggest to take a look at the console and fix the part in the template, which is faulty.
Thank you
Question:
There is anything that can look into the the result of the dice rolls? Like, I roll the command I made for Attack. If the result in the dice is 1, display a message or so something else.
sorry if its unclear
but isnt that for the appearance of the rolls?
i wanted to do checks after the dice were rolled, depending on the result
It´s also in there. Here a minimal version:
${Roll:= [1d20]}$
${Roll > 10 ? 'Success' : 'Failure'}$
@formal goblet
Just a question, this isn't me asking for a feature. :p But, what's the reason we can't drag itens from a sheet to another?
It´s not implemented. It´s that simple 😅
FYI, there´s already a Feature Request for that: https://gitlab.com/custom-system-builder/custom-system-builder/-/issues/113
i think i get it now. I will give it a try
Is it intentional for the tab content to be displayed on the right side instead of below the tabbed panel?🙄
Noooo… 
Stupid question: is amacro not working in v11?
I had to duplicate the sheet in order to make this work properly. No idea what happened...🤔
We didn´t test that on V11, because you can use Scripts (which can execute macros) directly at this point.
Thanks, was reading that part of help file just now. Do now scripts can be put in label roll messages, right? With ${}$ as usual?
Just check the examples: https://gitlab.com/custom-system-builder/custom-system-builder#45-scripts
Great, ty! Keep up the good work 😉
Well...I'm trying to get actor data from inside a macro, but looks like I can't.
fetchFromActor() won't work, of course, and I cannot find a way...been looking through the thread with no success...any help?
Do you need the context of the actor, which executes the macro? You have access to the entity-object in Scripts, so you can pass that as an argument to your macro.
Before the implementation of scrips, I had a rich text field where every player could set their attack special effect video and within the label roll message, along the dice call, the macro was executed and the video played.
Now the roll message just prints the script from within the rich text field as chat message, without executing it.
Is there a way to set a script that the players can edit?
Well, you can inject CSB-Formulas into Scripts. Or you make the Script execute a macro, which the players can edit freely.
Thing is, using this code %{return await game.macros.getName('YourMacro').execute({name: '${name}$'})}% I do not seem capable of passing multiple arguments and then fetching them inside the macro code. So i tryed getting values directly from the macro.
Why shouldn´t it be capable of? Just pass an array or define more fields in the object -> .execute({name1: 'Name 1', name2: 'Name 2'});
Sorry, you did get me wrong. Every player has several own macros. I just searched for a way to execute this individual macros from within the roll message – like I did bevor.
I thought so, but then referring name1 inside the macro gives me undefined error 🤷🏻♂️
args[] seems not valid.
I can set the macro in the template, but than it is not individual any more.
How about you pass the name of the macro dynamically?
Erg...
Something like
%{return await game.macros.getName('${Macro1}$').execute()}%
?
It works in my environment. The Script: Entity Type: %{return await game.macros.getName('ShowVersion').execute({name: '${name}$'});}%. The Macro:
ui.notifications.info(name);
return game.actors.size;
Seems good
I'll try again 😁
Works again.
Thank you Martin.
My players will love you 😍
Keine Ursache 😅
From within a dynamic tabel it seams not to work...
%{return await game.macros.getName('${sameRow('weap_mac')}$').execute()}%
I have a feeling I know where this comes from...
Cologne ??? 🤣
Bestimmt 🤣
Open a bug-report, I´ll try to debug it later on
Is there a method to prevent the image on the sheet from shifting to the left and maintain its placement above?
Well, I was able to use multiple arguments but now I'm stuck with Uncaught (in promise) SyntaxError: '' string literal contains an unescaped line break and cannot find anything wrong ...
I know this is not CBS-related, but any hint would be greatly appreciated
Do you know what line-breaks are? (<br>, \n, \r)
Kind of...
Was thinking of removing them, but did not try. Could it be that?
Well, you have to (or have to escape them)
But I haven't used them intentionally, so don't know where they are...
Could it be this?
const myContent = "<h2>TIRO CARATTERISTICA</h2>" + "<p>Dadi base: " + input0 + "</p>" + "<p>Ferite: " + input1 + "</p>" + "<p>Danni: " + input2 + "</p>" + cond + "<p>Quanti dadi vuoi aggiungere al lancio?</p>" + "<input type=\"text\" id=\"vtext\" name=\"vtext\" />";
condcontains a value calculated prior to the code you see
Found the culprit: I missed a ' in an argument 🤦♂️
Problem is, now it rolls twice, one of which is undefined...and there is no reason for that...
The Label Roll Message will always create a Message. And then you probably have a Chat-Output in the Macro. So that´s 2
Hm, so how can I avoid that?
You can't, for now. At best you can hide what shows in chat, but it will still show a blank chat msg and play the dice roll sound. There is a feature request opened about fixing this. Maybe if it gets enough attention it will get picked sooner for future updates. https://gitlab.com/custom-system-builder/custom-system-builder/-/issues/280
Thanks for the heads-up, I'll be looking for news about it 😉
And thanks to @formal goblet too, so kind and helpful as usual 😉
@dense pine take a look, this is the code
Hello, I just want to say thanks again for everyone that helped with this build. You rock.
https://www.youtube.com/watch?v=rYcxuRd5Tro
Hello everyone. I just bought this book and fell in love with the artwork and the setting and wanted to play with my table in FoundryVTT.
This is my current taking for this awesome book from Two Little Mice, all done with the Custom System Builder module. Thanks to everyone who helped, you know who you are.
Two Little Mice: https://twolittlemic...
what are hidden attributes? not seeing this on the wiki
A hidden key-value-pair. The value can be a formula. You can access hidden attributes like any other components.
Hi Gus
This really looks wonderful! 🦋
I hope you make it available for other GMs.
There seems a lot to learn for me in your template and CSS.
Thanks for sharing the video.
will do, I'll try to make it available directly on foundry if possible
how exactly do I "upload a CSS file to the server?"
would be great if you could upload your template to the github
Hi guys, im currently working on an action tracker and need your help. I want to visualize the number of actions each combatant has left per combat turn and reset it after the turn ends. I want to adjust the number manually. Right now it looks like this:
But sometimes combatants have a bigger action pool than others. Is there a way to adjust the number of circles according to the number above (3 in the example)?
The buttons in the example are checkboxes with some CSS (Thanks Gus!!)
From my limited knowledge of html/css, I think you need to do one of two things: create the dialog with a number of circles depending on the action pool (if this can be determined at dialog creation) or add/remove circles 'on the fly'.
It depends on hiw the dialog is handled.
You can hide the additional radio buttons, depending on a the variable/key value using the Visibility Settings on the component :)
In my conditional statements, I often generate output text such as "SUCCESS," "FAILURE," and more. I'm curious about the possibility of incorporating special characters within these strings (eg. "Roll a [[/roll 1d6]] and add..."). My attempts with the backslash \ (as in javascript) before the character have resulted in an "unresolved string item" error. My ultimate goal is to include inline rolls within the chat messages I'm creating using custom system builder's conditions. It is possible?
This was a good idea.
now it looks like this:
But when i reduce the amount of actios visible it looks like this:
How do i make them centered in their panel?
Its a horizontal, centered panel.
Even though they're 'hidden' they still take up space :(
but why does the margin between the two get bigger then?
That's a good question :s
you can try using display: none;
css
that should remove the component completely
i think
it should i used it in one of the chat cards
i dont know where to put my suggestion (foudry or CSB) make portrait field be updated thru drag and drop mechanic? I like adding portraits to npcs and doing it in the foundry takes ages. So i had idea converting it to drag and drop field would be cool as F
I am not sure if I get your suggestion right…
Do you know the token-variant-art-module?
i speak of character sheets. i use them a lot even for npc. and i have module that shows character art upon token hover. So i need to be able to easier add character art without using current system. so if the character art on character sheet would work as drag and drop upload field it would be awesome
OK. Not drag and drop, but the variant art module let you quickly choose of several pictures you have on your server.
My players use it for showing clothes changes.
And they use it a lot. All girls 😉
im not interested doing it for tokens. but for character art
Is there a way to like
Have little stamps I can put in
Like for example
I have this imported char sheet
Is there a way to have a little thing I can use to cover up say the completed quests
OK, quick question. I have the following code in a label. I want to replace the 'Roll Damage' string with a call to code I have in another label for that item on the sheet. Alternately, I could probably convert the roll damage code to a macro, if I could figure out how to call it from the label.
Would appreciate a guiding hand or a suggestion on how else to do that workflow. Also, please disregard the kitchen sink approach to loading variables, I've been flailing for a few days on this one.
`${#roll:=[1d100]}$
${#skillName:=item.name}$
${#attribute:=item.item_attribute}$
${#attribMod:=item.attribute_mod}$
${#skill:=item.skill_score}$
${#impScore:=round((skill*(100-skill)*.01)/2)}$
${#attrImpBase:=skill-impScore}$
${#skillImpCap:=skill+impScore}$
${#damage:=item.damagedie}$
${#targetName:=fetchFromActor('target',"name")}$
${#targetArmor:=fetchFromActor('target',"armor")}$
${#targetHealth:=fetchFromActor('target', "health")}$
${#playerPtl:=fetchFromActor('selected',"ptl")}$
<h3>Attacking ${targetName}$ with your ${skillName}$ </h3>
<table>
<tbody>
<tr>
<td>You attacked and rolled a ${roll}$ against a target of ${skill + attribMod}$</td>
</tr>
<tr>
<td>Result: ${roll <= skill ? 'Roll Damage' : roll < skillImpCap ? concat('Missed, but you learned something new! ', string(setPropertyInEntity('self', 'ptl', playerPtl + 1))) : 'Missed'}$</td>
</tr>
</tbody>
</table>`
(the Roll Damage in question is in the Ternary statement towards the bottom)
tried replacing this after rereading https://mathjs.org/docs/expressions/syntax.html https://mathjs.org/docs/reference/functions/floor.html but it still gives long decimals sometimes. how do i get rid of these?
${fatigue + floor(((gp + sp + pp)%) + (supply / 4),2)}$
The modul works for both.
could anyone help me out with figuring out how to upload a CSS folder? I'm not sure how to upload it "to the server" like CSB is asking for
the css file just needs to be in your foundry, the file picker can't see it so you just have to type in the path string manually
Oh okay, just anywhere within the main FoundryVTT folder?
as long as you can path to it from root it should be fine, but directly in the data folder should be easiest
Okay bet
Does it have to be a specific file type for foundry to see it? I kind of just pasted it in as a .css and the file picker isn’t seeing it even though I was able to open the folder I’d placed it in
yeah foundry can't see css files. I have mine as css file, I assume other file types don't work?
You have yours as a css even though foundry can’t read css and it still worked? 😅 I’m confused
The file picker can't see the css file, so you have to type that part by hand
Yeah I think that worked but I really don’t know what I’m doing lol the css sheet isn’t functioning so either I’ve set the code wrong or I’m missing some kind of step in getting foundry to recognize it
I probably just need to actually take a day and research how all this goes
I think you need to refresh your foundry before it works? other than that I can't really help, I'm new to css as well
Gotcha gotcha, I appreciate the guidance you gave me all the same homie. I’ll try refreshing here in a bit and see if that gets me anywhere
After uploading/changing a CSS the gameword has to be reloaded/restartet to let it take effect.
Hello guys, just wondering, is item containers within items still a planned feature or has this become totally out of reach?
I'm trying to get a script to be called from a label roll message. I made a test YourMacro that is a console log message and return 1 . I can tell that the macro has been called from the console, but the return value shows up as undefined. game.system.version shows up as 2.4.1, as expected, but what do I need to do in order to get the macro return value read?
You have to use return
async function YourMacro() {
console.log("Yourmacro called");
return 1;
}```
The Script-expression aswell
this is the label roll message %{return game.system.version;}% ${%{return await game.macros.getName('YourMacro').execute()}%}$
I have tried it with and without the ${}$ on the second line
return await YourMacro();
...
Thank you very much.
🥲
Is planned
thx
Heyo!
So, I have an issue with dynamic tables. I'm using* a drop-down list in a dynamic table that refers to another dynamic table. It has the Option Label, and the Option Key, but whenever the value of the Option Key or name of the Option Lable is changed, it resets the drop-down option for anything that had that skill selected.
So if I had it pulling a skill level from a dynamic table, when I gain a level there, I have to go in the abilities and re-link ALL of the abilities that relied on that skill to the same skill.
Is it something I'm doing wrong, or a known issue?
If YourMacro() is expecting an argument called tokenName that is the name of the item that has the call in it's label, would you use
${%{return await YouMacro(tokenName: item.name)}%}$
or
${%{return await YouMacro(tokenName: ${item.name}$)}%}$ ?
Hey all
I'm having a bit of an issue with conditions where whenever I add one to a character, even a completely new one not tied to my main PC template, it removes the health bar.
Additionally, this error pops up in the console whenever I add an effect, but not when I remove one
It's a known issue
The later. You can also access context-information via the entity-object in Scripts (see examples in Readme)
darn
Is it possible to fetch the current initiative a combatant has?
If you can Access the API sure
this is a solution which might work (depending on the situation) but should give you an idea for an implementation with CSB-script:
%{let name = entity.entity.name;
let initiative = game.combat.combatants.find(c=>c.name===name).initiative;
console.log(initiative);
return initiative;}%
keep in mind this solution has no fail saves (e.g. it errors when there is no combat, when the actor is not a combatant, etc.)
Use find() instead of filter() if you only want to find something 😅
This way you won´t need the index-accessor
xD - well i'm used to filter 😛
but yeah you are right this is just a quick and dirty fix
changed it 😛
That´s what I´d do:
%{
let name = entity.entity.name;
let initiative = game.combat?.combatants?.find(combatant => combatant.name === name)?.initiative;
if (initiative === undefined) {
ui.notifications.error(`No combatant with the name ${name} found`);
}
return initiative;
}%
thx guys ! 👍
why did you decide it would be good to access entity one level above. so i mean why do we need to do entity.entity.xxx?
Primarily because of the template-system, which is the Parent-Entity of Actor and Item.
if i call this macro from within an actor sheet - that would be my use case - do i need to change "entity.entity.name" somehow?
Nope, the entity-context is provided to every Script. Same with linkedEntity in Item Container.
could you even make it shorter with using for example ${name}$?
so can you use return game.combat?.combatants?.find(combatant => combatant.name === ${name}$)?.initiative;
Yeah (with quotes around ${}$). Just be aware of name-collisions, if you have multiple actors with the same name.
That´s why I like to use the ID instead of the name if possible
yeah have to differentiat the quick fix and the macro with thought put into it 😛
what would be the best way to share the "system" created with CBS? I mean not only the json/templates, but as a system like all others? (public available from a git and such. On the same line, is there a way to do translations?
How can I keep the actor sheet portrait on top at all times? I'm using custom CSS, but I'm not sure which class corresponds to the portrait.🤔
I'm not sure if this is a CSB thing or not, but has something changed to make tiles no longer able to be draggable once they're created? They can still be moved around with WASD but drag-and-drop no longer seems to work.
test change this
Is it possible to preview an item on mouse-over with CSS maybe?
@drifting raft
oh finally found how to make use of a rectangular image instead of a square one
Firstly, I'm a bit of a noob with CSB & am trying to recall how to do some basic things since i've been away for some time. I am trying to create a character sheet for the Black Star RPG which has a 'different' die modification system than I have ever tried to code in a label roll: an ability roll is simply [2d6 + ability rank], which is of course simple for even me to implement as a label roll 🙂
However, a complication arises because you can have a number of 'advantage' and/or 'disadvantage' dice that can apply. If you have a net positive number of advantage dice (after subtracting the # of disadvantage die) you roll that many extra dice and take the 2 *highest * die as your total; if you have a net positive number of disadvantage dice (after subtracting the # of advantage die) you roll that many extra dice and take the 2 *lowest * die as your total. (So basically if you have 3 advantage dice and 1 disadvantage dice you would roll 4d6 [3-1 + the original 2 dice] and take the 2 highest dice as your total...)
My problem is how to handle this mechanism for a label roll. My idea is to simply ask for user to enter a *negative * number in a (ask for) modifier field if they have net # of disadvantage dice, or a *positive * number if they have net # of advantage dice. So for example if they have 1 advantage dice and 3 disadvantage die they would enter a "-2", which would roll 2 additional die (4 total) and use the 2 lowest for the die total.
The issue is that I have no idea what would this look like for the code for a label roll ?
How are conditionals supposed to interact with number fields? From the docs I assume it should return true when the field is set to a positive number and false otherwise, but mine still returns true when the field is a negative value or 0, is this behavior intentional or bugged?
${sign(advantage)+1?[(2+abs(:advantage:))d6kh2]+rank:[(2+abs(:advantage:))d6kl2]+rank}$ I think does what you want, even though the conditional is quite a bit more hacky than I would prefer
edit: ref is actually unecessary here
also how did you get normal-sized icons for your traits
for the checkboxes, with this css:
.sheet .hearts input[type="checkbox"] {
-webkit-appearance: initial;
appearance: initial;
background: url(artwork/Household/sheet/hearts.svg);
flex: 0 0 25px;
width: 25px;
height: 25px;
cursor: pointer;
}
.sheet .hearts input[type="checkbox"]:checked {
background: url(artwork/Household/sheet/hearts-filled.svg) !important;
-webkit-filter: none !important;
}
the artwork folder is inside the Data folder of Foundry
the checkboxes has a class heart
the icons I gave the Item Container the class equip-icn.
.equip-icn a.content-link{
background: none;
border: none;
}
.equip-icn .custom-system-item-container-image {
object-fit: contain;
max-width: 30px;
max-height: 30px;
margin-right: 5px;
margin-bottom: 2px;
vertical-align: middle;
border: none;
background-color: rgba(0,0,0,0.05);
transition: all .3s ease-in-out;
}
.sheet .equip-icn .custom-system-item-container-image:hover {
transform: scale(1.6);
margin-right: 20px;
}
Yeah, I like to remove the item boxes and also the input text boxes
its also unintuitive - to drag items you have to click-drag the tiny icon, the name won't do it. thought it was broken until i figured it out
tbh i'd be fine with just removing the name entirely
CSB seems to be ignoring this, is there something else it needs?
nvm, had to relaod
now to figure out how to remove the na,e
(New to CSB, lurker from Sandbox days.) I am going to feel really silly, but I see that you are able to display multiple items in your item tables... How did you add the damage? I can get the item to load into the table, but no info about said item (I am relatively new to the scripting scene, and only a couple hours deep on building a system)
who are you asking
Whomever is willing to answer, when they are able 🙂
${item.variablename}$ to get info from item
@blazing ibex I appreciate the help. The past half hour of 'Why won't you do what I expect you to do?!' comes down to 'item.' not 'ITEM.'... ugh. XD
yyyep
hm, this doesn't seem enough
.equip-icn a.content-link{
background: none;
border: none;
font-size: 0;
}
OK all, the system I'm developing uses an action economy based on the number of actions a player has taken each turn. I created a hidden attribute on the character template called "actionCounter" set to 0 by default. I made a macro to try to increment this but the update() doesn't seem to actually update the hidden field. Anyone have any idea what I'm doing wrong?
main()
async function main(){
// Get Selected
let selected = canvas.tokens.controlled;
if(selected.length > 1){
ui.notifications.error("Please select only one token")
return;
}
let selectedActor = selected[0].actor;
let actionCounter = {"system.hidden[9].value":Number(selectedActor.system.hidden[9].value + 1)}
console.log(actionCounter)
await selectedActor.update(actionCounter)
}
It's not an Input Field, so it cannot be changed. It's the same with Labels, they cannot be changed by the User, because the value is derived from other sources.
Just create a number field for this and hide it with the Display options
how did you get the portrait change working for just characters? (instead of everything?)
Till now there is no possibility for localisation the system and no easy way for sharing it.
For a complex system with the need of css, grafix and macros (linke yours) I would suggest zipping everything and sending to LinkedFluuuush, so he can upload it to the sheet library.
https://gitlab.com/custom-system-builder/custom-system-builder/-/tree/develop/sheet-library
Yeah that's it!!! Thank you very much!!!!
How do you get the sheet content to stay right of the image always? Mine moves below when I resize the sheet...
yep, that's what I tried! Thanks 🙂
Mine too. I just use a sensible sheet width on the start. But maybe a flex-shrink could explain what need to resize first...
Is it possible to preview an item on mouse-over with CSS maybe?
And can an item be deleted somehow if the delete button is hidden?
There is an example with Scripts in the Readme
Hi, trying to use a formula to roll 2d6kl if the value is zero; otherwise, roll as many dice as the value and keep high. This seems to work, but it rolls all the dice, even the ones in the other part of the conditional? For example, if value is 3, it rolls 5d6 (2 from the 2d6kl and 3 from the 3d6kh). The resulting roll it displays is correct though... just that it rolls too many dice. Or is this an issue with Dice So Nice instead? Thanks in advance!
${isZero(value)?([2d6kl]):([(:value:)d6kh])}$
Functions will be executed regardless of the conditionals, that's the issue. That's why you should construct the roll-formula before you call the Foundry-Roll-Expression.
Oooh. Gotcha. Thanks so much!
@formal goblet I know this functionality isn't in now, but could you allow formulas in the tooltip section?
done 🙂
Thanks again to @raven seal for helping me out with my Black Star label rolls...there is one final complication to rolls in the system, however - the player needs to know how many '5's or '6's they roll on the two dice. Below is my current code to roll an attack check for the game:
${attack01name}$ Adv${advantage:=?{advantage|0}}$ Mod${modifier:=?{Modifier|0}}$ ROLL: ${sign(advantage)+1?[(2+abs(:advantage:))d6kh2]+attack01rank+modifier:[(2+abs(:advantage:))d6kl2]+attack01rank+modifier}$
The game always sums the 2 lowest or highest dice, depending upon if you have a net advantage or net disadvantage. Any ideas on how to calculate the number of '5's and '6's rolled on the two dice that are used for the check?
just found out something interisting:
if you use css and give the css class the same name as a key, it will apply the css class to that field 😄
i am using git for this but its honestly quite difficult for users to track changes and updates
everytime i push an update i have to ping people in the group for now
would be nice if it can be bundled into a module of sorts though....
screwed with the template selector so it takes less space
there's probably a better way of doing it than this, stuff overlaps with some windows
.sheet header.sheet-header { align-items: start; }
.sheet header.sheet-header h1 {
margin-left: 10px;
max-width: 66%;
}
.custom-system-sheet-actions { margin-bottom: -25px; }
.custom-system-template-select label { display: none; }
.custom-system-template-select select { min-width: 0; }
.custom-system-template-select {
position: relative;
bottom: 45px;
}
Worth double checking, is there a way to add more levels of Visibility? We've got the default of None - Limited - Observer - Owner but I've been messing with setting up NPC sheets for use in an upcoming test game and I'm finding I kind've need one more level before 'editing access' for how I want to split up the actual sheet section unlocks for party allies, mostly because I have to use one of the switches to have the sheets accessible by the players at all.
I do know that I can set up visibility checks separately but want to avoid having to make an extra set of toggle checks in a different part of the sheet if able.
You´d have to look at the Foundry-API if the roles are extensible or not. That´s not the concern of CSB to be fair.
At the current state you cannot extract single dices from a pool in CSB. That´s why it´s not possible to count the dices for each number. You can only count the successes for 5s and 6s combined with cs in the Roll Expression https://foundryvtt.com/article/dice-modifiers/
The official website and community for Foundry Virtual Tabletop.
Hey Guys, i found this https://gitlab.com/custom-system-builder/custom-system-builder/-/tree/develop/sheet-library/Fabula Ultima
How do i use with the CSB?
I assume you just import the json in your own csb world?
Can I set the value of a component from a label roll? For example setting a Number field to 0 when clicking a rollable Label
Take a look at setPropertyInEntity https://gitlab.com/custom-system-builder/custom-system-builder#4211-setpropertyinentity
Hello, with sometimes updates being more frequent i loose my custom css. is there a way to have your custom css be update proof? especialy as i only update my own classes
Try the Custom CSS module.
Do I have to worry about my css being deleted?
I'd advise uploading the CSS file in the user data folder, and as usual, backing it up before any update 🙂
My CSS din't get lost via the last 6 updates.
After updating to v11, some of my macros seem to have broken. For example
(async () => {
function Setting_Tablename(){return "Combat Dice"};
const tokens = canvas.tokens.controlled;
if (tokens.length == 0) {
ui.notifications.error("Please select a token");
}
tokens.forEach(async (token) => {
let attackDiceCount = 2
let baseMessage = "";
let roll;
let baseTable=game.tables.getName(`${Setting_Tablename()}`);
for (let i = 0; i < attackDiceCount; i++)
{
roll = await baseTable.roll({async:true});
console.log(roll);
baseMessage += '<span style="position: relative; text-align: center; color: red; padding: 1px;"><img src="' + roll.results[0].img +'" ><div style="position: absolute; left: 50%; transform: translate(0%, -50%);">' + roll.results[0].text + '</div></span>';
}
let finalMessage = "<div>" + token.document._actor.name + " makes an attack</div><div>" + baseMessage + "</div>"
AudioHelper.play({src: "worlds/the-known-lands/assets/audio/dice-roll.wav", volume: 1.0, autoplay: true, loop: false}, true);
ChatMessage.create({ content: finalMessage });
});
})();
comes with an error of this. I can't make heads or tails of it, as I took the script from someone else, and it was working fine in v10.
i'm just on the phone so i'm not sure but i think token.document._actor.name is the issue.
try token.actor.name instead
I'll give it a try.
That fixed it. Thanks so much!
I got my CSS sheet to function ;-; so happy
now I just need a better grasp on how to actually manipulate different aspects of the visuals
Would like to restrict the table my item container is in from showing more than 3 lines of text per item. So i must set the rows to a specific height. Would like to cut text that is too long with some dots at the end, so that it looks like a sort of preview... How can i do that with CSS?
Hey folks, how do I call the name of an actor or the name of an item in a label?
Just ${name}$
Hello, im trying to figure out how to get an item to manipulate a label on a character sheet but I cannot figure it out
Hey folks, I'm having trouble understanding the functionality of '5.3. Item Template Modifiers' and '5.4. Sub templates.'
Does anyone have a video that illustrates examples of using these functions or some screenshots as examples? Anything that would help me grasp this better!
I think it would be very useful for me, but I'm still struggling to understand the functionality, especially '5.4. Sub templates.' I'm completely lost on that one!
5.3. : You have to understand Item Modifiers before you can understand Item Template Modifiers. In short: Use Item Template Modifiers if you don´t want to repeat Item Modifiers for every single Item of an Item Template.
5.4. : Well, Sub Templates are more or less useless in the current state. The Sub Template is just a Collection of Components. You can drag a Sub Template to a Character or Item Sheet to copy the collection over. It does nothing more.
I see
Personally I’ve gotten a lot of use out of sub templates as being places to hold formats of functions I want in my sheets that presently aren’t possible due to either bugs or features that are still on their way
I have a couple templates saved that I can just throw into a sheet and they’ll work immediately as soon as a feature I want is finished being added, instead of having to figure out how to put it in later
The FAQ you linked is somewhat helpful to my issue, but I want an item, when put into an item container to then change the label on the character sheet, not constantly... It for an armor class type label
@formal goblet
So that would be a simple Set-Operation, isn´t it?
Not sure, im not very familiar with coding sadly
im trying to learn haha
I basically want when the armor item is equipped for a certain number, equal to that of the armor equipped to be shown in this label
on the character sheet it is equipped on
if that makes sense
So it´s an item modifier with a set-operation. The rest is equal to that of the example in the FAQ
okay ill check it out, thanks
so with the set (=) as the operator, that would only go into effect when the item is present in the sheet?
That is true for ALL modifiers. They only work when the Item is present in the sheet.
ah okay cool
great
If i use the key of the item, like in the FAQ example, how can I get it to display a certain number?
like could I use the key of a label within the item? or?
@formal goblet
also how do I find the key of a particular item?
If you need data from an Actor to an Item, use fetchFromActor(). If you need data from an Item to an Actor, use Item Modifiers.
Item Modifiers work different to the normal formula system, where you reference a key to get the value. Item Modifiers actively manipulate already existing keys in the Actor and modify their values.
Does fetchFromActor() pulling values of label formulas in item sheets work now?
Okay, so in the formula should I just put a value I want it to be giving to the label in the actor, or does it nee to be sourcing from something on the item?
The Label in your actor-sheet doesn´t need a formula. Just a default-value (e.g. 0). Your item modifier would change the value from 0 to whatever you have defined in your Item Modifier as soon as it is present in the Actor.
do labels have default values? i thought only number fields and text feilds have that
Well, it should work atm 😅
sorry Im just confused
You can just enter 0 into the Label text.
when I am inputting the modifier in the item itself, and I am designating the formula from which it is scourcing the modification, with the $[]$ thing, what should I put in there
okay
ah nevermind I got it
I literally just put the number I want it to display on the actor, in the mod formula
Gotcha. I’d put in an issue about it before cause it wasn’t pulling the value correctly for label formulas in item sheets specifically but I’ve been afraid to update my foundry cause everyone keeps saying v11 is breaking their stuff 💀
I got everything working with V11
Omg that’s huge then
I can´t say it about modules, but that´s not CSBs concern to be fair
Yeah modules are whatevs I was just being overprotective of my templates lol
I’ll update tonight though that’s very exciting news
thanks for the help
I am on foundry 11.308 with CSB 2.4.1 and don't get any foundry related problems.
Just some of my module are not running smooth together.
makes sense makes sense
I'm curious which of my mods will break lmao
I live and die off of how well Ironmonk88's mods are updated lol
My label roll messege will not work fort some reason
what's the issue you're having specifically? Can you send screenshots?
I saw the previous stuff but like what's the failure look like
I added what I believe to be the correct formula: ${[1d20+virtue_body]}$ and I am clicking it and nothing is being output into the chat
I made it a button label
try putting : around virtue_body
poggers you bet
how do I make it roll directly from the sheet instead of it putting just a prompt to roll in the chat?
is your formula in the "label" text field or the "roll message" text field when you open the component?
I understand very well🧐
Enhanced journal is overwriting a part of my css – so at the moment I have to change the css of enhanced journal to make my template work…
I'm assuming the latter based off your formatting but I can't think of why it wouldn't just roll automatically with how you have it
label, is there a roll component type?
in the label component you're using, if you look below the label field there's a "roll message" field within the label component type
I've found this to be very helpful
https://gitlab.com/custom-system-builder/custom-system-builder/-/blob/release/2.4.2/README_BETA.md?ref_type=heads#46-add-rolls
Oh i see, it is just a roll, but it has an option next to it to roll again for some reason?
gotcha gotcha okay, so nothing's like broken it's just prioritizing some things strangely
okay thanks (:
yeah
would you mind sending a screenshot of what pops up in your chat when you make the roll?
its displaying a d20 logo with the ability to roll it again, and then the actual roll number next to it
whats the key bind on windows to take a screenshot again?
combo i mean
windows key+prnt scrn
Elevated vision is breaking the foundry light system for me at the moment – not sure why
Didn’ had time to research this
That´s not possible. Rolls will be always performed in the Chat
yeah I saw that I was wrong
yeah I was gonna say this looks like it's doing what it's supposed to
anecdotally, very cool CSS
it just gives the ability to roll it again in the dice messege which i got confused by
It doesn´t. Try clicking on it 😅
Ooh I see. im so silly, its the formla for the roll
oh my god
gotcha gotcha
well great its working
and im dumb
haha
nah I think it's an understandable mistake. It really looks like a roll button
while I have you here, I am having aUI issue where the panels within the tabs are placed off to the side instead of actually under them, not usre if I am missing something again or what
I cannot get the panels to move into a space under the tabs btw also
Depending on gamesystem and world – up to 118 active running of 224 installed
I am a bit messy and don’t give up modules I like when there not updated anymore
I am a self hoster
thank you thank you
I don´t know how you even managed to do that. Are you using CSS-Modules or other CSS-files?
Deactivate all modules and see if the issue still persists
idk if you saw it Martin but this is actually not the first instance of this issue someone has posted to chat. Someone posted a similar issue a week or so ago I think
#1037072885044477962 message I think you did actually see it but this is the message for reference
so I deactivated, and it reloaded it, then I activated them all again and it reloaded and its still the same... idk
not a big deal to me really, but just thought Id ask in case there is a way to fix it
Can you export the templat and send it to me?
tamplate for the character sheet?
Yeah
gotcha yep
I have to find the cause
same and same. This is reassuring to see lol I only have somewhere around 60
@boreal hull Holy moly, you´ll NEVER find this bug. If the Tab has the key tabs, it will behave weirdly. All other keys (even empty) are fine
ooh, I think some of my tabs have tab in the key
Imma have to check all'at when I get home
its only tab(s) specifically I think
ah gotcha okay
is it possible to apply this only to the actor template and not to item templates?
**Version 2.4.2 is now generally available, with the following changes : **
Fixes
- Fixed formula computation inside other formulas
- [#306] Fixed active effect computation
- Fixed issue in Formulas after using fetchFromActor
- [#308] Fixed issue causing button labels to be triggered when typing Enter
- Fixed issue with large sheet saving lags on bulk edition
- Fixed issue adding non assignable templates in item template choices
If you encounter any issue with this new version, please post an issue on Gitlab : https://gitlab.com/custom-system-builder/custom-system-builder/-/issues/new
Can I somehow get the icon of an item to show in a chat card? ${item.icon}$ or something like that?
Interesting challenge. I created a macro to run when the user clicks on the skill name in their character sheet. I have the following code in the Label roll message on the character sheet. The macro runs fine and does what it's supposed to, including creating a ChatMessage with the results.
My challenge is that when I run the macro by clicking on the Item's Name, I'm getting a chat box with "undefined" which I suspect is coming from the character sheet click as a result of the macro's "return". Any guidance on how to either
- suppress the undefined chat message
or - pass back contents to display from the Character Sheet's Label roll message box?
%{game.macros.getName('useSkill').execute({skillName: '${item.name}$', itemRating: '${item.skill_score}$', attribMod: '${item.attribute_mod}$', damageDie: '${item.damagedie}$'})}%
- not possible ATM
- just place it below your macro call
Can I build HTML in the macro and pass that back as the return?
And since we all love bugs :p
**Version 2.4.3 is now generally available, with the following changes : **
Fixes
- Fixed issue with delayed saving functionality on items
If you encounter any issue with this new version, please post an issue on Gitlab : https://gitlab.com/custom-system-builder/custom-system-builder/-/issues/new
ok. been at this for hours and can't seem to figure out how to get the return from a macro call to work right (or am not doing the right thing with it to display it. The macro is called fine and functions fine, but I'm unable to get anything other than "undefined" with the return value. Can someone with more experience take a gander and tell me what I'm missing with the return?
the macro returns a variable that is built higher up, and the console.log is displaying what I intend, just something with how I'm calling or handling the return isn't working.
end of the useSkill Macro, attempting to pass back a string
console.log (returnMessage)
return returnMessage;```
Label roll message
<p><td><tr> %{return await game.macros.getName('useSkill').execute({skillName: '${item.name}$', itemRating: '${item.skill_score}$', attribMod: '${item.attribute_mod}$', damageDie: '${item.damagedie}$'})}%</tr></td></p>```
so, whenever I add an item modifier that divides my actor sheet label formula by 2, that division formula overwrites the label formula's floor() function and makes the value a decimal no matter what. Is it supposed to do that?
Yeah. Because the order of execution is:
- Formulas
- Modifiers
Just updated CSB to 2.4.3 from 2.4.1 and now after logging into GM and user profiles I get stuck on a grey foundry default screen and no further loading. Is there a known issue with the update?
The loading time seems to be waaaaay longer than before. I encountered this issue just a few minutes ago. But yeah, this will need a fix ASAP.
TY for verifying. That appears to be my issue. Just good to know where the problem is sourced so I don't start tearing up my browsers
Confirming...CSB appears not to work since the update? I'm just sitting on an endless "downloading world data, please wait" screen.
I see. I’m still kind of confused though. I added the floor function to the modifier as well and it didn’t seem to make any difference
Hey folks, how's it going?
I wanted to ask for some help.
I'm trying to create a way to activate only one piece of armor. Let's say there are multiple pieces of armor in the inventory, and the player decides to equip the first one, then the second one, and so on, going through them one by one until they equip all of them. I'd like it so that when they equip, for example, the second one, the first one gets unequipped. In other words, I want to find a way to limit the player to equip only one piece of armor at a time. How can I do this in the system?
I suspect you’d need scripts for this tbh, if it’s possible at all.
The only way I can think to do something like this is to set a filter in an item container that looks for a specific value on the item dependent on how many items are in the container (I.e. making each item increase the value of a label formula on the actor sheet and having a label on the item that reads true if that value is less than or equal to “1”, then setting a filter on the container that only allows items that read true on that item label component.)
The problem with this method is once the value exceeds the condition for true, it would probably remove both items simultaneously instead of just the last one added
Hello,
Anyone know a way to create buttons in the chat message? Like in DnD or pf2e, so I can click on them to roll for damage? (Or anything I want to happen after the button click)
I was actually wanting to ask this as well and kept forgetting to
Misread at first. If you have a priority system in place it could at least use logic to apply the highest priority item (modeled as some number hidden on the piece). This would at least keep them from having the bonuses of multiple pieces at the same time
Alternatively, in the vein of what vaialyss suggested: You could set logic on the character sheet that cancels the benefits of any equipment in that slot if more than 1 piece is equipped. Some counter that is measured as false when it exceeds 1. This will at least push players to only keep one piece equipped at a time
I was trying to do it through a script, using the script to update all items of the same template on the character sheet. The script is in the "frequently asked questions." I managed to modify it to turn all the checkboxes in that template into false or true. If I could now get a script to turn only the checkbox of the item I clicked on to true, that would be great.
Oh, by the way, here's the modified script (if I didn't know how to put it here on Discord, I apologize, I don't know if there's a standard way to show it here in the chat):
%{
const itemTemplateId = game.items.getName('_Armas').id;
entity.items
.filter(item => item.system.template === itemTemplateId)
.forEach(async item => {
const currentEquipado = item.data.system.props.equipado; // Obtém o valor atual de 'equipado'
// Verifica o valor atual e inverte-o
const newEquipado = currentEquipado === true ? false : true;
// Atualiza a chave 'equipado' com o novo valor
await item.update({'system.props.equipado': newEquipado});
});
}%
Anther fix in the pipes !
**Version 2.4.4 is now generally available, with the following changes : **
Fixes
- Fixed slow world loading times
If you encounter any issue with this new version, please post an issue on Gitlab : https://gitlab.com/custom-system-builder/custom-system-builder/-/issues/new
Looks to me like a Dropdown is what you need. Way easier to do that if you're using a dynamic table, tbh.
Do you need to automate that? Or could you just throw a warning into the chat that the sneaky player has a count of more than one armor equipped?
Thank you! Noticed a slower load and sheet opening. You're so responsive!!
I really need to automate this, and the dropdown doesn't work with items. If the dropdown worked with items, it would serve my purpose. I'm almost able to automate it with the script I modified. Now I just need to figure out how to change the checkbox of the item on the line where I inserted the script. I'm trying to use "4.2.11. setPropertyInEntity," but for some reason, it's not working.
Right on. My skills definitely aren't up to helping you, bud 🫤
Just the fact that this wonderful community takes a little time to try and help others already makes me very happy. Thank you so much! ^^
Folks, I managed to solve the problem, here's my formula that fixed it:
%{
const itemTemplateId = game.items.getName('_Armas').id;
entity.items
.filter(item => item.system.template === itemTemplateId)
.forEach(async item => {
const currentEquipado = item.data.system.props.equipado; // Obtém o valor atual de 'equipado'
// Verifica o valor atual e inverte-o
const newEquipado = false
// Atualiza a chave 'equipado' com o novo valor
await item.update({'system.props.equipado': newEquipado});
});
}%
${setPropertyInEntity('item', 'equipado', "true")}$
Basically, this formula sets all the checkboxes of items with the key "equipped" to false, and then it sets only the checkbox with the key "equipped" of the selected item to true!
Thanks for sharing
Does anyone here use Dynamic Active Effects (DAE) Module with CSB? Would like to know which parts of it work with this system.
It is not yet. The CHANGELOG miss the 'Unreleased' tag on the 3.0.0, sorry 🙂
Edit : fixed ^^
is there any expected release date?
Not yet. This will not be a big release, so it should come soon 🙂
Any particular feature you're waiting ? ^^
just the v11 compatibilty
Hey, does the "4.2.11. setPropertyInEntity" function work with checkboxes normally?
I don't know why, but when I try to set it to "false," it doesn't seem to work very well! However, it works perfectly fine when setting it to "true"!
Could this be a bug or does it not work well with checkboxes? I'm asking because I know it doesn't work for strings (at least for me).
It´s highly likely that it will not work (like other modules, which tinker with status effects). The only module which can edit status effects and works with CSB is "Core Settings Expanded"
It is already V11-compatible 😅
Then good news ! The system is already v11 compatible 🙂
3.0.0 will only remove v10 compatibility 🙂
It's possible the value is set as a String, and always considered true afterwards, so it may only work to check checkboxes... I'll look into that 🙂
I'm asking because I know it doesn't work for strings (at least for me).
What do you mean ? It should work for Text Fields & Number Fields. It does not work for labels, since those are recalculated from their formulas.
Ah, I see. I'm trying to set a label, and this function only works with numbers. It's not working with strings, but that's because it's not meant for labels, right?
It should work if you try to set the contents of a text field, including with strings. There was an issue trying to set strings in value, indeed, this was fixed in 2.4.2, if I'm not mistaken 🙂
It own't work to set the contents of a Label
It doesn't work at all, I tried every way lol
Looks like a migration error. Can you open the developer console (F12) and send the error message in there ?
Definitely looks like a Foundry Migration error, this is not caused by Custom System builder :/
You should ask in #troubleshooting
Does it work if you create a new world with CSB ?
For example, the formula: ${setPropertyInEntity('item', 'maoprimaria', "false")}$ where the key 'maoprimaria' is a checkbox, it doesn't work when I try to set it to false, but it works for "true"!
yes
I just tried it. It was a little tricky to get the syntax right but it worked :
{setPropertyInEntity('self', 'textFieldKey', "'REPLACED'")}$
Just remember the last argument of setPropertyInEntity is a Formula, which in your case should be resolving to a String 🙂
veryyyyy niiiiice!
Yep, jsut as I thought, it stores the string 'false' as a value, which is 'true-ish' and checks the checkbox. I'll need to see if there's a better way to do this...
Setting it to empty string "" works.
Oh my god seriously?
Amazing, it worked!!!
im getting major slowdown ever since the foundry/csb updates, has anyone experienced the same thing?
What is your CSB version ? 2.4.3 had a slowdown issue, solved in 2.4.4 🙂
yup that's whats going on
Is it possible to copy/duplicate a component?
CTRL + Drag
ah sweet thank you
i never knew this lol
how to do you make it so players can create items in their inventory area on their sheet, so if they got a unique item they could just create one etc.
That's not possible
i thought maybe it was because in the ui of the dnd5e system module you can
could you make a template that is accesible to players that they can create from in the "items" area of the session?
and then drag onto their sheet
That shouldn't be the concern of a template to be fair.
The current issue is that players are allowed to create new Items (if set in the permissions-config of Foundry) but they cannot select and load the right Item Template (limited to GM only atm).
okay gotcha
Hey! So I'm having some trouble with formulas. I am trying to use 12 plus a character's regeneration to determine their max stamina so a player can have an attribute bar. I used the documentation from the API and it ended up looking somewhat like this: ${'12+RegenerationField'}$. The image is after attempting how a video did the same thing. I am incredibly new to the custom system builder and to javascript so I am not sure what I'm doing wrong, but it hasn't been cooperating. If anyone could give me a hand that would be awesome. Thanks!
Remove : and you're good to go.
cool thank you!!!
@formal goblet do you think it would be worth adding variable fields to the item container that could be placed over the item icon?
the screen above fakes the look by pushing the first and/or second column overtop the icon, but because of that it doesn't like you resizing the window
.icn-amt {
pointer-events: none;
position: relative;
font-weight: bold;
bottom: -7px;
scale: 1.1;
color: white;
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000
}
.icn-blk {
pointer-events: none;
position: relative;
font-weight: bold;
bottom: -7px;
right: 30px;
margin-right: -30px;
scale: 1.1;
color: white;
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000
}
.icn-dur {
pointer-events: none;
position: relative;
font-weight: bold;
bottom: 10px;
right: 22px;
scale: 1.1;
color: burlywood;
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000
}
.equip-icn table { background: none; border: none; }
.equip-icn table tbody tr { background: none; }
.equip-icn a.content-link {
background: none;
border: none;
font-size: 0;
}
.equip-icn .custom-system-item-container-image {
object-fit: contain;
max-width: 36px;
max-height: 36px;
margin: 0px;
vertical-align: middle;
border: none;
border-radius: 8px;
background-color: rgba(0,0,0,0.05);
transition: all .3s ease-in-out;
}
I like the idea, but I think that other features deserve more attention atm. You can at least open a Feature Request, so that we can keep track of it.
I am trying to use a Set-operation item modifier to manipulate an item container in a character sheet, but it wont show anything when the item is placed in the sheet... Not sure what I am doing wrong
How do I return the substring of a component value? Something equivalent to %{return key.substring(0,3)%. Thanks
There´s no CSB-function for that, so you have to use a Script: %{return '${key}$'.substring(0, 3);}%
i dont know how to resolve these problem. Last version of CSB.
Making itemtemplate, i have warnings of formules.
only 6 warnings, multiply for the number of items are more 8000 warnings, foundry too long to load.
i dont undestand, why is a warning.
There can be several reasons for uncomputed props. The most common one is because of typos in keys in formulas.
If you want to resolve them, you have to dig into the formula-parts which cause the warnings. Check every single bit in the formula. You can use Label prefix/suffix for help.
I have 4 containers that use the same item template. Each container has a filter defined. When I drop a folder containing items onto the sheet, items filter correctly except one, "combat". The value comes from a drop down. I have deleted and re-created the key in the dropdown but the problem still persists. Does anyone have any suggests? The dropdowns key and label for the options are the same. When I drop the single item, it filters correctly.
You can create a 5th Container without filtering for testing-purposes and check if the Item is displayed there.
"${floor(sum(switchCase(armadura_cali,'-5',-1,'0',0,'+5',+1,'+10',+2,'+15',+3,'+20',+4),armadura_inputfil))}$"
is a sum of a drowlist and numberfield. I dont see the error.
Dropping the contents of the folder, it does not appear in a unfiltered item container.
Ok, so you cannot drop a whole folder, can you?
I think I solved the problem. The problem was that only some of the items within a folder appeared on the sheet, when droppped. However I moved everything to a new folder and now it is working.
Ok, weird. But whatever
Me neither. But like I said, check every single part of a formula (be it a function or a key).
i dont know, how to check. I dont have infomatics knowledge.
If the formula is an a Label, you can do the following:
- Copy the formula into the Label prefix and check if the result is displayed. If yes, the formula is fine. If not, you have to split it into subparts. e.g.:
${sum(strength, dexterity) + weight}$can be split into 2 parts:${sum(strength, dexterity)}$and${weight}$. - Check a part in the Label prefix. If it works, check the other part. If it doesn't, split it further.
i think i find part the problem. Optional is not optional
Seven lines are good now
How is your Black Star character sheet coming along, and are you willing to share it when you're done? I've been thinking about running a Black Star game over Foundry, but my players aren't willing to play anything other than D&D unless it's mostly effortless for them to get into. 😅 I mean, Black Star is an easy system to grok, but having a character sheet that handles rolls would be a godsend.
is it possible to link a window of an item into a rich text box to be clicked on and viewed as a popout?
Is there a way to generate a CSV based on the names of items in an item container that can be stored in a label?
Just drag the Item into it (works only in dialog-mode)
Nope, you'd have to refer to scripts. Atm it's simply impossible to reference an Item Container in CSB-Formulas.
It is possible to have an item add its name to a label, similar to doing weight totals but as a concatenated string instead of an integer?
You mean the add-operator in Item Modifiers? That's currently only for numbers.
okay thank you
I knew that about the add-operator. I was hoping there was another method, via JS or another way. Thanks
Like I said, it would be no problem using a Script instead.
I know nothing of CSS. How could I change the background color or add a image in it's place?
I have populated a dropdown from a CSV using JS. This works however, when I select an option from the replaced options, the sheet re-writes it self and replacements as well as selected option are reset to "stock" value. Is there a recommended way to populate a dropdown from a list in a label?
You cannot override the options of the dropdown, these are derived values which will be recalculated on every character update 😅
But fear not, the next patch has the option to include a formula for the options.
Great! I will stare intently at my monitor, waiting for it to drop. Thanks.
I am using items for talents. Talents are ranked 1-5 and will be filtered by rank. Talents will be displayed in column by rank. Because of the way talents need to be chosen, there will be one talent per item container. How can I limit containers to holding a single talent. Does anyone have an idea on how to capture the order of the dropped talent.
Is it possible to setPropertyInEntity of all rows of the same column of a dynamic table?
You cannot limit the container, because the container is only meant for displaying Items an Actor has.
Nope, Script it is
Thought so, trying to figure how to get it to trigger though. Do you have any ideas how to get a script to trigger based on drop downs/check boxes? I have a "currently wielding" drop down (one hand or two hand) and then check box options of whether a weapon is a 1h or 2h weapon. Stats get reduced if wielding a 2h with only 1h. Any suggestions?
Thats just it, the goal is to drop the talent on the actor and the value is generated. I can use this value to limit with filters. If I can generate a unique sequential integer within the item when it is dropped on the sheet then I can use that value to limit what appears. Example: "droporder =3" if the talent is the third talent dropped on actor. What I am trying to figure out is how to generate this sequentially increasing integers within the item as values are dropped. It also occurs to me that if Talent3 is deleted and another Talent is dropped, than the value of "droporder" for the new talent would then need to be 3.
Thinking out loud: Maybe generate a CSV list of talent names w/JS in the actor, have the talent find the index of its name on the list and store that number which is than filtered by the container.
@formal goblet I deleted an item template and one particular actor keeps throwing an error "Item template has been deleted for item "x", every time the sheet is edited. The items are not on the sheet, at least visibly. Is there a way I can refresh whatever items are tied to an actor?
You'd need to delete the item manually from the actor via a script
Would probably be faster for me to just rebuild the actor from scratch unless you know the code off hand?
Just open the console, copy the id from the warning and then just call delete() on the Item.
tried delete(Item.aIm44Oj9URSKofmH), returned true, but didn't change anything
Remove Item.
i had that issue in the past after update. i exported the char sheet as json, open it and look for the item in it and removed it (be careful of the brackets). then reimport it back. that fixed it. can try that if not having any luck with the command.
still no change. the way it is worded makes it sound like it is looking for a template that isn't there anymore
may have to try that.
it was one faulty item entry referencing some non existing template for me. have to remove the item from the char sheet . the same item is fine though if you re-add it again.
Hi, I would like to create an Item container which has horizontal alignment, at the moment it is vertical:
I could save a lot of space with horizontal alignment.
Then good luck trying to align items in a table horizontally. At least I wouldn't be able to 😅
what I mean is at the moment it is puting the items ina coloumn and I would prefer them to be in a row
I know. But I can't help you with that because I don't even know if this is even doable with CSS.
Is there a difference in type, category, etc, between the items that can show up on that part of sheet? If so, I recommend two filtered item containers in a 2-column, 1-row table component. The table will handle spacing, etc.
If there aren't category or type differences, like, it's a just collection of identical types of things, then I've no idea
hmmm
I could make them different...
thanks
this is a good idea... although not very elegnat... but oh well...
Also, if you leave the item container's checkbox "Display Column Names" unchecked and you have no other labels in the item container, items show up as a vertical list of links, not a table with boxes
Ha! I've said the same thing so many times! Just thankful to have a system that lets me do most of the things.
Custom CSS gets the more elegant looks, if not underlying systems
Hello all! I just started using CSB and it's JUST what I need to implement my system... I'm trying to add a Component via Module implementation... It works but there is a problem when I re-enter my World... This is the error message:
If anyone can help me...thanks in advance!
Have you read this one already? https://gitlab.com/custom-system-builder/custom-system-builder/-/wikis/Create-components/Create-an-input-component

I'll do it right away 🙂
My implementation seems correct with this wiki article... The error is when I enter the World, if I go to the Actor sheet and press Refresh, it works but I can't reload the Template...
Does anyone have a Ryuutama sheet to share? ❤️
Does CSB still support foundry V10? Apparently sheet active effects is broken for V10 specifically
Hey guys, was wondering how this system compares to GRPGA in terms of what it can and cannot do as well as how in depth and fleshed out one is able to go using this to create their own system?
I'm completely new to all of this so if there is one that has even more options feel free to mention it.
Note: I'm aware the absolute most in depth method would be to learn coding/programming, but I'm unable to commit that type of time to learn such a thing unfortunately
Hello, I want tonuse this module in my CBS
Automated Animations, an Add-on Module for Foundry Virtual Tabletop
I think that this module check the name of Items, when it is roll in the chat
The problem is that I do not know how to do a rolleable Item
Some similar to DnD magics or weapons
Any help?
We cannot give support to modules, which are not explicitly integrated into CSB, because we don´t know how these work. We´d need a look at the documentation or even the code to give meaningful support.
Again? ... Yeah, it should still be V10-compatible. We plan to drop the compatibility with v3.0.0
I´d recommend to take a look at our documentation: https://gitlab.com/custom-system-builder/custom-system-builder/ . The doc also mentions a Sheet-library, where you can find existing templates. There´s also an Example-Sheet: https://gitlab.com/custom-system-builder/custom-system-builder/-/tree/develop/sheet-library/Example
Seems so yeah . I was helping someone trouble shooting sheets I made and active effects just doesn't work on latest version at foundry 10