#Custom System Builder

1 messages · Page 31 of 1

faint wharf
#

I perssonaly cant w8 for any type of linking betwween items. To be able make bags or something along thi way. I love force my players to be sure where what they got.

formal goblet
#

To be fair, you can already have a checkbox in an Item Container (or at least the same functionality). Let's assume that the Item has a Checkkbox with the key equipped:

  • Label text: <i class="fa-regular fa-${item.equipped ? 'square-check' : 'square'}$ " style="color: ${item.equipped ? 'green' : 'red'}$; background-color: white;"></i>
  • Label Roll Message: ${setPropertyInEntity('item', 'equipped', "item.equipped ? false : true")}$
hazy saffron
#

That's the functionally that we'd use

#

Or do you mean it's a way to view the status of the checkbox? If so, we do that now with a yes/no label text

hazy saffron
dark plover
#

Hello! I had a quick question, how possible would it implement something like this from the system never going home? Such as a dialogue box that has these options that allow you to manipulate a roll.

"Before a Roll:
• Temporarily gain an untrained skill (dice are bought separately).
• Add a die to the roll (ex: roll 4 dice on a skill with 3 training).
After a Roll:
• Add a pip to a die (ex: change a 4 to a 5).
• Reroll any number of dice. Keep the result (once per skill roll)."

I'm unsure if it would be better to just do an actual system, or if it's possible in custom system builder. Regardless I'm extremely new to both and a little daunted.

brittle moth
#

From what I understand, that's partly possible. The system allows you to prompt users for input when making rolls, so the "before a roll part" is absolutely possible.
The after roll is harder, as the system currently handles dice rolls as a whole, meaning you can't change (or even access) individual dice in a roll, without using Javascript scripts inside the roll, and accessing the data directly. Doable, but hard, I'd say 🙂

hazy saffron
#

What does ReferenceError: tinymce is not defined mean when trying to add a column to an itemcontainer?

brittle moth
hazy saffron
hazy saffron
torn wigeon
#

I am looking for help with CBS. If any of you who know how to code stuff is willing to become a co-creator of the system I have been working on and maybe earn some cash while at it please message me.

brittle moth
faint wharf
#

A big question! Is there a way in CSB to make stat replenish on character turn? I wanted to make Action Points Based system and for that im looking for way to replanish when character turns comes

brittle moth
#

There is no way to do this in the current version. You need to make a custom module for that 🙂

faint wharf
#

player.CurrentAP = player.MaxAP

brittle moth
#

a macro could do it 🙂
I'll let you see with #macro-polo for the implementation details though 🙂
The actor's data is stored in actor.system.props

dire socket
#

Is it possible to filter items with a specific value if it's contained in an array or text value. Like if theres a target value to filter by but the value is compared to one that may have several others along it, seperated by commas.

#

Example would be like search is "Sword"

and the tags on the item are "Sword, Hammer"
While another is "Hammer, Spear"

I would want the first value to be kept on the table while the second would be excluded since the filter would be sword.

hazy saffron
#

How do you control what tgoes to the console? Does that slow things down considerably?

dire socket
#

I also would like to know this, my sheet is just a tad slow with how much is going on init

hazy saffron
#

Question: Is there a list of all the functions for the 'templateSystem' helper object? I saw links in this chat to that system on github but they all say that it doesn't exist. Recently I found out there's an item.templateSystem.reloadTemplate(); Is there an equivalent getTemplate() that would return the name of the template the item is associated with?

hazy saffron
hazy saffron
dire socket
#

Yes

hazy saffron
#

item.taglabel.includes("Sword") should work where taglabel is the key on tthe item holding the tags

dire socket
#

oh my god it works, thank you so much

hazy saffron
#

You can make it even more discriminating if you need to with logical AND (&) and OR (|)

#

item.taglabel.includes("Sword") | item.taglabel.includes("Blade") for instance

dire socket
#

That is good to know, thank you again

hazy saffron
#

The templateSystem link has an error on it.

module/documents/templateSystem.js" did not exist on "develop"

formal goblet
velvet heron
#

Is it possible to limit the number of items in an Item Container?

velvet heron
#

Also related to items. As a GM, if I configure ownership to a folder that contains other folders, should it not automatically configure that ownership to all the sub-folders at once?

As it stands now, configuring ownership to any top-level folder doesn't do anything. You need to do it individually for each sub-folder.

formal goblet
drowsy rune
formal goblet
faint wharf
#

i think i cant update data someone can aid me? im trying return here APS to value of APSIK on every end turn for current character in combat (replenish AP)
Hooks.on("combatTurnChange", (combat, prior, current) => { current.actor.system.props.APS = current.actor.system.props.APSIK; });

formal goblet
hazy saffron
vocal sorrel
drowsy rune
#

They had several

vocal sorrel
#

Hm. Then, I am at a loss. Sorry. Maybe try giving the panels and tables Keys? They seem to require it for me as of the new versions.

drowsy rune
#

I noticed it does not happen if I put them in another location first, then drag them

vocal sorrel
#

CSB do be quirky like that sometimes. :D

drowsy rune
#

Would you happen to know what's wrong with this formula ?

#

${sum(100)-(infantry_cost_reduction)}$

#

If I type ${infantry_cost_reduction}$ it display the correct number

drowsy rune
#

Ok, got it

#

My infantry_cost_reduction label had a % sign after the formula, not in the suffix field

hazy saffron
formal goblet
hazy saffron
#

Okay I will have an item object, so that makes sense

half beacon
#

Hey. A bit of a minor/niche problem here. I tend to go between text editors (for rich text) fairly frequently while I make a catalog of items for my players. But sometimes when I open a second text editor to update the information in it, the new window will automatically replace all of its text with whatever is in the first editor. Once that happens, it doesn't matter if I click cancel or close out of the window. All of the text is saved.

velvet heron
#

I think I already know the answer but figured it's probably worth asking anyway... If you have a panel set as a grid of 3 columns, for example, is there a way to make one component take up two columns? Like maybe to merge two columns?

dire socket
#

@brittle moth I keep running into this issue, where a lookup function will return a blank, empty value. I thought I had evaded since the updates but once I started referencing from my weapon item table for my attacks with ${lookup('WeaponStack', 'WeaponTypeW', 'NameT', WeaponPick)}$ the issue seems to have reared its head again. It works fine as a roll, it returning "dagger", but the label remains blank. It happened before where lookup would only work as a roll but not a label when I needed it as a label.

#

It all started since the update to 3.0.0

#

Okay, I fixed it, but there is definitely some witchcraft going on here. THE ONLY difference betweent these two Ive found out

#

is that when given a key, the lookup doesn't want to work anymore, it returns blank, I'm almost certain this is not an intended way for this to function and probably needs to be fixed.

silver lake
#

Bumping my question from a few days ago again.
And I have a new one!
On item containers, in the character sheet, I can't create a number field in the item container to track quantity. How else can I do that?

#

Okay, I figured out how to do it. Since the item becomes separate once in the sheet, if the quantity is modified in the item, it doesn't change all items.

#

But I still have the first question.

#

I'm trying to get the Module 'Boss Bar' to work, but it won't and I think it might be the pathing in the system.
For the current health for example, I'm using attributeBar.CCon for example, to refer to a number field. Should I be adding anything more?

faint wharf
#

someone has a example script to update value on actor in macro? i would be thankfull, to canibilize code

drowsy rune
#

Sup. I crated a list of labels with visibility formulas ( x = 50 ; x = 100 ; x = 150 ; and so on until 800). They do work, but I'm running into this:

#

The labels aren't visible, but they still take space on the table. Is there any way I can have them not occupy any space ? Maybe by using a more complex formula ? I have 16 results possible for x (50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800) so I'm not sure how to proceed because it also generates a fair bit of text each time

x = 50 -> first unit costs 100, subsequent cost 200
x = 100 -> first unit costs 0, subsequent cost 200
x = 150 -> first unit costs 0, second unit costs 100, subsequent cost 200

and so on...

crimson aspen
#

i have a hidden attribute named fotd. I got this inside a label as label text ${fotd}$. Base it is 0 - i want to override it with a roll from another level, so it updates and shows the rolled number. is that possible? And if, how?

rotund mason
#

did you tr putting them into a panel and using the visibility formula in the panel?

drowsy rune
#

I didn't. Will try this once I'm back from work.

rotund mason
#

I have a section of sheet with hidden panels, the player sees only one from a dropdown and I dint'n notice any extra space

#

but I am very bad at the graphic design level xD

rotund mason
crimson aspen
#

But that should be automatic, not manually - if possible

rotund mason
#

I mean, if you just need to save that roll until needed is easy, if that roll is part of another formula, and then also needs to do something else, that makes things harder

crimson aspen
#

thats basicly what i got now.

#

But it wont update on roll.

crimson aspen
rotund mason
#

fotd is not defined anywhere in those images

crimson aspen
#

ah sorry - its here

#

in hidden attributes

rotund mason
#

yep, thats using a roll after, the only way I know of doint that is using scripts

crimson aspen
rotund mason
#

If thats something you are gonna do rarelly, use a macro to update the variable or do it manually, much easier

#

since you already have the hidden formulas, just update the correct value there and use this in the rest of the sheet as needed

crimson aspen
brittle moth
rotund mason
#

If you want to update the variable in many sheets at the same time without having to open then one by one, use an actor for global variables, and reference this variable in the other sheets, this way, you only have to edit it once

brittle moth
# drowsy rune The labels aren't visible, but they still take space on the table. Is there any ...

The space will be taken by each label to ensure a consistent look on the sheet. For your specific need, if multiple Labels can't be displayed at once, you should use a condition in the Label Message :

${x == 50 ? 'first unit costs 100, subsequent cost 200' : (x == 100 ? 'first unit costs 0, subsequent cost 200' : (x == 150 ? 'first unit costs 0, second unit costs 100, subsequent cost 200'))}$

Or even better :
${switch(x, 50, 'first unit costs 100, subsequent cost 200', 100, 'first unit costs 0, subsequent cost 200', 150, 'first unit costs 0, second unit costs 100, subsequent cost 200', ''}$

crimson aspen
rotund mason
#

what entity are you referencing in the formula?

drowsy rune
dire socket
#

I'm on the latest version, 3.2.1. I've never made an issue on gitlab, but I'll go ahead and give it a go a little later today! (Should I just dump the whole sheet or try my best to isolate the issue and share a template with that).

#

@brittle moth

brittle moth
velvet heron
#

Random but does CSB have a dark mode?

hazy saffron
#

Question: Has anyone written a macro or created an 'add on' that would allow a GM to go into a shared compendium and automatically refresh all the items with their respective templates? This could be by folder, or particular template type, or anything that would prevent the need to open each item and refresh it manually.

median mirage
#

Is there a way to make a panel or anything else take multiple columns without css classes?

formal goblet
velvet heron
formal goblet
median mirage
#

Know anything about doing that with forge? Not sure if I have access to the data folder with that

formal goblet
median mirage
#

I'll give it a go

#

Thanks ❤️

median mirage
#

Digging into the css I'm struggling to see where all the vertical height of stuff is coming from, it's making for some comical layouts

drowsy rune
drowsy rune
#

It doesn't seem to work and I don't understand why. 🤔

formal goblet
drowsy rune
#

Ok, it doesn't display ERROR anymore but just a blank

#

I'm making progress

formal goblet
#

Blank is probably a typo in a key

#

Or the default-case

drowsy rune
#

I can display special characters, right ? é è à etc ?

formal goblet
#

Yeah, that's no issue

drowsy rune
#

Ok

#

I switched to

#

${switchCase(advanced_recon_squads_discount == 50, 'La première unité coûte 100 ressources militaires, les suivantes 200')}$

#

And this one works

#

Ok that's:

#

${switchCase(advanced_recon_squads_discount == 50, 'La première unité coûte 100 ressources militaires, les suivantes 200', 100, 'La première unité est gratuite, les suivantes coûtent 200')}$

#

Man that's gonna be a long-ass formula

drowsy rune
#

${switchCase(advanced_recon_squads_discount == 50, 'La première unité coûte 100 ressources militaires, les suivantes 200', 100, 'La première unité est gratuite, les suivantes coûtent 200 ressources militaires', 150, 'La première unité est gratuite, la seconde coûte 100 ressources militaires, les suivantes coûtent 200', 200, 'Les deux premières unités sont gratuites, les suivantes coûtent 200 militaires', 250, 'Les deux premières unités sont gratuites, la troisième coûte 100 ressources militaires, les suivantes coûtent 200', 300, 'Les trois premières unités sont gratuites, les suivantes coûtent 200 ressources militaires', 350, 'Les trois premières unités sont gratuites, la quatrième coûte 100 ressources militaires, les suivantes coûtent 200', 400, 'Les quatre premières unités sont gratuites, les suivantes coûtent 200 ressources militaires', 450, 'Les quatre premières unités sont gratuites, la cinquième coûte 100 ressources militaires, les suivantes coûtent 200', 500, 'Les cinq premières unités sont gratuites, les suivantes coûtent 200 ressources militaires', 550, 'Les cinq premières unités sont gratuites, la sixième coûte 100 ressources militaires, les suivantes coûtent 200', 600, 'Les six premières unités sont gratuites, les suivantes coûtent 200 ressources militaires', 650, 'Les six premières unités sont gratuites, la septième coûte 100 ressources militaires, les suivantes coûtent 200', 700, 'Les sept premières unités sont gratuites, les suivantes coûtent 200 ressources militaires', 750, 'Les sept premières unités sont gratuites, la huitième coûte 100 ressources militaires, les suivantes coûtent 200', 800, 'Les huit premières unités sont gratuites, les suivantes coûtent 200 ressources militaires')}$

#

Something's wrong in that because when I test it, it only displays the x == 800 value even if x == 50 on my sheet

drowsy rune
#

Yeah, it just always display the last possibility.

formal goblet
drowsy rune
#

So ${switchCase(advanced_recon_squads_discount, 50, ?

formal goblet
#

Yeah

drowsy rune
#

It gives a blank

formal goblet
#

Quote the 50 and test that

drowsy rune
#

'50' ?

formal goblet
#

Y

drowsy rune
#

Works. I have to quote all the values

#

Thanks, that was driving me crazy

narrow hollow
#

hey is there a way to use fetch from actor to get the name of an actor? i want a roll message to show the name of the targeted actor.

formal goblet
narrow hollow
#

thank you very much

iron badger
#

how do i change the font of the actor sheet?

craggy python
#

heyo, anyone else having trouble with importing items to a container directly from a compendium? i've been away from foundry for a while and just updated, it seems like my old workflow doesn't work?

craggy python
#

I think i've seen a tutorial on it somewhere, or at least something adjacent to that nature, lemme see if I can find it

iron badger
craggy python
#

oh ok good that you at least started to figure it out bc i can't find the video i was thinking of lmao

#

i'm of no help here, unfortunately, i've never tinkered with any of that stuff

iron badger
#

no worries, i'm just starting myself

drowsy rune
#

Sup, following the formula created yesterday, I tried to create this one:

#

${switchCase(war_year,'1','22 av.BY: Première année de la guerre. La Grande Armée de la République a mis en service de nombreux véhicules et matériels, mais d'autres projets sont en cours de conception.','2','21 av.BY: Deuxième année de la guerre. Les unités suivantes sont mises en service: Turbo-tank HAVw A6 Juggernaut, Speeders BARC, Chasseurs Lourds ARC-170.','3','20 av.BY: Troisième année de la guerre. Les unités suivantes sont mises en service: Nacelle d'Attaque Tout-Terrain, Plateforme de Soutien d'Infanterie, Chasseurs Z-95.')}$

war_year being a number field between 1 and 3.

#

Oh, I think the " d'autres " might be the issue...

#

It has a quotation mark.

#

Bingo, that was the problem

#

Any way I can include these without getting an error ?

rotund mason
#

with "" intead of ''

drowsy rune
#

Oh nice, thank you

heavy elm
#

Hey is there an elegant way of implement lines and borders in a sheet? Im struggeling with the lines, they appear way to small on my Sheets.

#

And is there a way for switchcase to Look for ≤ or ≥ values?

#

It actually just gives me errors, I think its May the wrong function

formal goblet
formal goblet
civic finch
#

hello there! any idea on when CSB will catch up to Foundry version 12?

formal goblet
civic finch
abstract briar
#

Hello Everyone!

I'm trying to make a formula in a label to show a number based on another dynamic table.

The problem is that this label is within a dynamic table.

So when I use the formula, the number is repeated every row.

The firs image is a dropdown list making reference to another table.

The second is the formula

The third is the dynamic table with all numbers I need

The fourth is the result when I use the formula

formal goblet
zinc verge
#

could I use a User Input to make a button that can display a table? I wanted to have a small icon that could basically bring up a separate window with a reference table in it and wasn't sure the best way to approach it

#

I could just make an item table but I didn't wanna have a big bar running across the whole width of the sheet

formal goblet
zinc verge
#

I just want it as a reference. Basically I have a class feature for an actor template that gives them a modular spell modifier that they can add from a list of modifiers, and I wanted to make an easy access table to display their options that could be pulled up in a separate window from the character sheet so they could reference their stats and the table simultaneously

#

so really I just need a button that can pull up a separate window to display info

zinc verge
#

this will only send it to the chat box right? I was hoping to just be able to pull up an item sheet in a seperate window essentially, or something similar

#

part of the reason I want to do it this way is because I use the Popout mod, so being able to pull things up in windowed assets means those assets can be moved to different monitors outside of the Foundry window

#

actually, I think doing an item table will work

#

with some funky shenanigans using panels and selecting settings a certain way for the item table I was able to shoot the item into a corner where I wanted it and not have the rest of the table visible around it

zinc verge
#

having an issue with item containers; I have one that is supposed to only display items that have a checkbox keyed as "ACTIVE" where the checkbox resolves to true. It used to function, but now it's displaying any item templates that are checked in the filter items list regardless of whether they match my item filter formula or not anymore. I just updated to the newest update today.

equalText(item.ACTIVE, 'true') this is the exact formula I'm using for my item filter

formal goblet
zinc verge
#

okay bet bet ty!

sharp geyser
#

Is there a way to make all the buttons the same size? They're all "Medium" but they're definitely not the same size haha.

sturdy mesa
#

You need to put the same character amount in your buttons

rain rapids
#

Is there a built in way to set a certain effect to on using the CSB commands? Like if I want to turn on 'unconscious' for the token or something

vagrant hollow
brave trench
#

Does anyone understand this error? Its coming from this roll message:

${#?#{User Input Sheet}}$

${#setPropertyInEntity('self', 'currentAmmo', "currentAmmo - 1")}$

${#diceModSelect:= fetchFromActor('attached', 'diceModSelect2')}$
${#totalMod:= fetchFromActor('attached', rangedAttSelect,0)+rangedHitMod}$

<table>
<tr>
<th>${name}$ Attack</th>
</tr>
<tr>
<td>Total</td>
<td>${Roll:=[:diceModSelect:+:totalMod:]}$</td>
</tr>
<tr>
<td>Recoil</td>
<td>${recoil}$</td>
</tr>
</table>

static cargo
#

Hey, do we have an article I can read about changes between 3.0.0 and 3.2.1?

formal goblet
dusky mauve
#

I move my setPropertyInEntity to the END of my script

#

and it start works

#

have no idea why

static cargo
formal goblet
brave trench
#

newest

#

3.2.1

formal goblet
#

Then might be an oopsie on our side if I interpret that correctly.

brave trench
#

Yeah its kinda out of nowhere. item broke after update. But I've also had some errors to sort out since the update as well, but this item and actor isn't throwing any sheet errors, just this one, and only for this roll button (attack). The damage roll button works fine.

If you need anything from me to compare lmk.

dusky mauve
#

@brave trench can you put ${#setPropertyInEntity('self', 'currentAmmo', "currentAmmo - 1")}$

to the end of the script - after html </table> ?

#

instead of begining of the script

brave trench
#

yeah that fixed it lol

dusky mauve
#

@formal goblet ^ ^ ^

#

So I have the same)

formal goblet
#

That's weird, it shouldn't be dependent on the order

dusky mauve
#

Yep - no Idea why it work like that)

half beacon
#

Is it currently possible to have a formula as a collapsible panel's title?

dusky mauve
#

It start after upgrade

dusky mauve
half beacon
#

I'll find a workaround for my project. Good to know I wasn't doing something wrong!

rain rapids
#

How should I add a button to the sheet? Lets say I want a button that changes some data but I don't want a message popping up. is that possible?

#

Actually I noticed in the wiki that labels have the option 'send roll message to chat'.

#

Must be in a different version of the system

heavy elm
#

Hey, does anybody know how to perform a diceroll-formular while fetching an value from a dynamic table?

#

nvm I figured out

drowsy rune
#

What would the correct syntax be here ?

#

${switchCase(air_power_meter "< 0" ,"Supériorité aérienne séparatiste", "> 0" ,"Supériorité aérienne républicaine")}$

drowsy rune
#

I'm not even sure I'm using the right formula for what I'm doing right now

stone swan
#

I know this is a minor thing, but does anyone else have an issue with both explicit links and the ToC on the github pages going to the wrong part of the page? Like a link to the computable phrase section ends up showing the very bottom of the page?

static cargo
#

So... component type "Meter"'s options: on an actor with 10hp, I assume Min and Max would be 0 and 10. Can someone help me out with Low, High and Optimum though, please?

drowsy rune
#

Meters can go in negatives too if you need them too

stone swan
static cargo
drowsy rune
#

My min value is -10. My max value is 10.

At 0 and above, meter will be green
Under 0, meter will be yellow
Under -5, meter will be red

stone swan
# drowsy rune Meters can go in negatives too if you need them too

Kind-of but there's an important caveat there. The min and max values set both the scale of the meter and the range of acceptable values, so if you set a min of -10 and a max of 10, then a value of 0 will result in a meter that looks half full. Conversely, if you set a min of 0, then the meter will look empty at 0, but you won't be able to go to -10.

drowsy rune
#

I know. Sadly for now that's how I'm gonna use it

static cargo
#

So a better use case would be Min=Unconscious, Max=Healthy and then Optimal=over Half, High=half and Low=1/4?

stone swan
drowsy rune
#

${switchCase(air_power_meter, "< 0" , "L'ennemi a une supériorité aérienne écrasante. Toute tentative d'appui aérien de nos appareils sera extrêmement risquée." , "== 0", "Aucun camp n'a l'avantage dans les cieux." , "> 0" , "La République a la supériorité aérienne. Nos appareils pourront mener leurs opérations sans être gênés.")}$

There's progress, this formula does not return an error but doesn't appaear on my sheet either 😂

formal goblet
drowsy rune
#

Gotcha, thanks

formal goblet
high stag
#

Someone must have already asked this question, items quantity or price or anything after i update the system have return an error. How can I fix this?

formal goblet
#

Otherwise there are endless possibilities to cause errors 😅

high stag
#

The error message normally appears in the console when clicking on the error text, but this time it did not appear.

And the formula:

formal goblet
craggy python
#

heyo, idk if this is a known issue or not but I've come back to my foundry world after a while and it seems like with the new updates, i can no longer import from compendia directly into an item container. is this fixable without reimporting all of that compendia into folders? that would really bulk up my world file

high stag
formal goblet
craggy python
#

i'm doing a quick minimal reproduction project to see if it's just a me issue first and then sure

formal goblet
high stag
drowsy rune
drowsy rune
#

Oh so I gotta write air_power_meter again then

formal goblet
#

Yep

drowsy rune
#

Let's see

#

Niiice

craggy python
craggy python
#

oh lmao

#

looks like this will work then, mb for not checking the gitlab first

formal goblet
#

It's a closed issue, so would be hard to find in the first place 😄

craggy python
#

true actually

#

tsym for finding it for me

#

funny that I eventually had the same idea as OP of that issue

high stag
craggy python
drowsy rune
#

${(air_power_meter < -9 ? "L'ennemi a une supériorité aérienne écrasante. Toute tentative d'appui aérien par nos appareils sera extrêmement risquée." : air_power_meter < -4 ? "L'ennemi contrôle l'espace aérien. La sécurité de nos propres appareils est menacée en cas de demande de soutien." : air_power_meter < 0 ? "Les forces séparatistes ont un contrôle limité de l'espace aérien. Les risques sont mineurs pour nos propres appareils." : air_power_meter == 0 ? "Aucun camp n'a l'avantage aérien. Nos appareils peuvent agir, mais ceux de l'ennemi aussi." : air_power_meter > 0 ? "La République a un contrôle limité de l'espace aérien. Les appareils séparatistes pourraient subir des pertes s'ils décident de s'en prendre à nous." : air_power_meter > 4 ? "Nous contrôlons l'espace aérien. Nous pouvons agir en relative sécurité, tout en empêchant les appareils séparatistes d'opérer impunément." : air_power_meter > 9 ? "Nous avons la supériorité aérienne. Nos pilotes peuvent intervenir en sécurité, et les appareils séparatistes ont de grandes chances d'être interceptés.")}$

This is the complete formula, and for some reason it returns an error. If I put a last : "x" at the end, it does not return an error, but I don't need more conditions, and anything past air_power_meter > 4 doesn't work on the sheet

#

I tried putting values between " " but anything past 4 returns the text for x > 0

stone swan
#

Is there an easy way to reset a Number Field to its default value?

drowsy rune
#

I'm pretty sure my formula has a problem with negatives and positives but I don't know how to fix this

drowsy rune
#

Ok, I see, the very last condition is needed for the formula to work. But why can't I display the results for x > 4 and x > 9 ?

stone swan
static cargo
#

So, I've got a template with a meter called 'hpts' (Hit Points)... How do I know what to select for the Pog's Resource Bar?...

drowsy rune
#

${(air_power_meter < -9 ? "L'ennemi a une supériorité aérienne écrasante. Toute tentative d'appui aérien par nos appareils sera extrêmement risquée." : air_power_meter < -4 ? "L'ennemi contrôle l'espace aérien. La sécurité de nos propres appareils est menacée en cas de demande de soutien." : air_power_meter < 0 ? "Les forces séparatistes ont un contrôle limité de l'espace aérien. Les risques sont mineurs pour nos propres appareils." : air_power_meter > 0 ? "La République a un contrôle limité de l'espace aérien. Les appareils séparatistes pourraient subir des pertes s'ils décident de s'en prendre à nous." : air_power_meter > 4 ? "Nous contrôlons l'espace aérien. Nous pouvons agir en relative sécurité, tout en empêchant les appareils séparatistes d'opérer impunément." : air_power_meter > 9 ? "Nous avons la supériorité aérienne. Nos pilotes peuvent intervenir en sécurité, et les appareils séparatistes ont de grandes chances d'être interceptés." : "Aucun camp n'a l'avantage aérien. Nos appareils peuvent agir, mais ceux de l'ennemi aussi.")}$

@formal goblet Any idea why results past > 4 do not show up on the sheet and still display as if > 0 ?

formal goblet
static cargo
formal goblet
static cargo
#

Prototype Token... of the Template. Since asking, I've found that you have to at least be in an actual actor's token.

#

Was it not there for the Template Prototype Token because the Bars establish their numbers by formula?

static cargo
#

Hmm.... I've got attributeBar.hpts and attributeBar.epts set on the actor but the right-click method of changing the values in the bars won't touch it.

formal goblet
static cargo
#

So... I just shouldn't use "Meter" for health and energy?

formal goblet
static cargo
#

Hmmm... Yes, i was also noticing the 'Value' couldn't be adjusted on the Actor Sheet either. Makes me wonder what a Read-only Meter's use-cases would be.

#

... can 'value' be altered by a macro : actor update?

formal goblet
static cargo
#

Not by the user... fine. Macro then? 😵

formal goblet
static cargo
formal goblet
drowsy rune
formal goblet
#

Just think about this example:

x = 7;
x < 0 ? a : x > 0 ? b : x > 5 ? c : d What would be the solution in this case?

civic finch
#

I couldn't find the latest update notes, what version of Foundry is CSB compatibale with?

civic finch
#

any of them? there's 11.299 - 11.315

formal goblet
#

11.315

civic finch
#

thanks!

civic finch
#

disregard, something fixed it

stone swan
#

Ok. I'm still getting nowhere on the rolling from an item's Rich Text Field and I'm not sure why. I've checked the computable phase entry in the API and the getComputeFunctions() function in ItemContainer.ts and clearly I'm missing something, but I don't know what it is.

At the moment, I can get it to work fine for most of the things I've checked (the Rich Text field can have CSB formulas that roll, reference fields on the character sheet, and even ones that invoke and then reference prompts. The one thing it seems incapable of doing is referencing other fields on the item itself. Here's the code I'm using for the Label roll message, any suggestions for where I might have gone wrong would be greatly appreciated:

%{
const itemProps = linkedEntity.system.props;
itemProps.name = linkedEntity.name;
console.warn (itemProps);
console.log(itemProps.name);
const rollText = foundry.utils.getProperty(linkedEntity.system.props, 'ComAbAlt');
let phrase = new ComputablePhrase(rollText);
await phrase.compute(entity.system.props, {
  computeExplanation: true,
  reference: linkedEntity.id,
  triggerEntity: entity,
  customProps: {item: itemProps},
  linkedEntity: linkedEntity
});

let speakerData = ChatMessage.getSpeaker({
  actor: entity.entity,
  token: entity.entity.getActiveTokens()?.[0]?.document,
  scene: game.scenes.current
});

phrase.postMessage({
  speaker: speakerData
});

throw 'done';
}%
formal goblet
stone swan
formal goblet
stone swan
formal goblet
#

Otherwise I'd expect that as well, but you could also try to merge them in the 1st arg of compute()

stone swan
stone swan
iron badger
#

How do i reference the actor image inside the sheet through a label?

silver lake
stone swan
silver lake
earnest imp
#

is it safe to assume 3.1.3 is the last fix for v11?

drowsy rune
#

I wanna say

x < 0 ? a : x > 0 ? b : x > 5 ? c : x > 7 ? d : e

vagrant hollow
# drowsy rune I’m not sure I understand. 😦

It goes from left to right and if one condition is true, it will NOT go further.
So if x=7; x<0 is fals, go to next x>0 is true, no need to go further.
So you will get B as answer and no number above 0 will ever reach c, d, e or something else.

drowsy rune
#

How can I do then ?

#

Can I do a switchCase with several values ? Like

switchCase(x, "1, 2, 3, 4 " ………)

?

#

What I don’t understand is why does this work for negative values in my formula, but not for positives. I can display the difference between x < -9 and x < -4

drowsy rune
#

🤯

#

I’m gonna need to grab a pen and a paper and try to process this

#

Sometimes it’s so infuriating trying to pull these things with zero knowledge I swear

sharp geyser
vagrant hollow
drowsy rune
#

${(air_power_meter < -9 ? "L'ennemi a une supériorité aérienne écrasante. Toute tentative d'appui aérien par nos appareils sera extrêmement risquée." : air_power_meter < -4 ? "L'ennemi contrôle l'espace aérien. La sécurité de nos propres appareils est menacée en cas de demande de soutien." : air_power_meter < 0 ? "Les forces séparatistes ont un contrôle limité de l'espace aérien. Les risques sont mineurs pour nos propres appareils." : air_power_meter > 0 ? "La République a un contrôle limité de l'espace aérien. Les appareils séparatistes pourraient subir des pertes s'ils décident de s'en prendre à nous." : air_power_meter > 4 ? "Nous contrôlons l'espace aérien. Nous pouvons agir en relative sécurité, tout en empêchant les appareils séparatistes d'opérer impunément." : air_power_meter > 9 ? "Nous avons la supériorité aérienne. Nos pilotes peuvent intervenir en sécurité, et les appareils séparatistes ont de grandes chances d'être interceptés." : "Aucun camp n'a l'avantage aérien. Nos appareils peuvent agir, mais ceux de l'ennemi aussi.")}$

#

This is my formula, which works for air_power_meter when it’s in the negatives, but won’t work for the positives

rotund mason
#

It can't work, the logic is wrong

sharp geyser
drowsy rune
#

Oh don’t get me wrong I know it’s a PEBKAC but I don’t know how to solve this 😦

vagrant hollow
drowsy rune
vagrant hollow
drowsy rune
#

I’ll try this once I get home

vagrant hollow
drowsy rune
#

So…

rotund mason
#

try this

#

${(air_power_meter < -9 ? "L'ennemi a une supériorité aérienne écrasante. Toute tentative d'appui aérien par nos appareils sera extrêmement risquée." :air_power_meter < -4 ? "L'ennemi contrôle l'espace aérien. La sécurité de nos propres appareils est menacée en cas de demande de soutien." :air_power_meter < 0 ? "Les forces séparatistes ont un contrôle limité de l'espace aérien. Les risques sont mineurs pour nos propres appareils." :air_power_meter > 9 ? "Nous avons la supériorité aérienne. Nos pilotes peuvent intervenir en sécurité, et les appareils séparatistes ont de grandes chances d'être interceptés." :air_power_meter > 4 ? "Nous contrôlons l'espace aérien. Nous pouvons agir en relative sécurité, tout en empêchant les appareils séparatistes d'opérer impunément." :air_power_meter > 0 ? "La République a un contrôle limité de l'espace aérien. Les appareils séparatistes pourraient subir des pertes s'ils décident de s'en prendre à nous." :"Aucun camp n'a l'avantage aérien. Nos appareils peuvent agir, mais ceux de l'ennemi aussi.")}$

drowsy rune
#

I’ll make sure to try that

rotund mason
#

by the way, it's gonna fail is air_power_meter is exactly 0

#

by fail I mean it's gonna use :"Aucun camp n'a l'avantage aérien. Nos appareils peuvent agir, mais ceux de l'ennemi aussi." for 0

sharp geyser
#

${(air_power_meter < -9 ? "-9 ~ -4" : air_power_meter < -4 ? "-4 ~ -1" : and(air_power_meter>=-4,air_power_meter<=4)? "-4 to +4" : air_power_meter > 4 ? "5 ~ 9" : air_power_meter >= 9 ? "10+" : "Other")}$

#

Tested it, works on my end.

#

Bit of an error with the descriptions, but it works.

rotund mason
#

you missed the 0 case, which is other in the formula since in that logic is the only way it can ever be used, other than that it works... but you don't need to use another condition in this case

drowsy rune
# rotund mason by fail I mean it's gonna use :"Aucun camp n'a l'avantage aérien. Nos appareils ...

That’s exactly what I want. I know it’s kinda… complicated but basically I’ll explain how my system work and maybe it’ll be clearer:

Air Power is a value both sides can have. It can never go above 10 for each side. If the Republic has 6 air power and the separatist gain 4 air power, then the Republic will still be at 2 and the separatist will have 0. That’s why I’m using negative values, it’s because it is not possible for both camp to be in the positives at the same time.

#

Either they both cancel each other and have 0, or one side has more and start building towards 10 while the other is stuck at 0.

rotund mason
#

then it should work unless I made a mistake in the copy paste

drowsy rune
#

I’ll try once I’m home and tell you

rotund mason
#

I can try to explain the logic behind the formula if you want

#

or the why does it only work for negative numbres in this case

drowsy rune
#

@rotund mason I'm trying your formula in a couple of minutes.

#

it does work !

#

Now I can keep on building my tactical view tab, so the Grand Army of the Republic can crush the clankers

brittle moth
zealous forge
#

So I understand that items are applied to an actor and item containers merely display said items, but is there a way to attach a single item to a single property on an actor, such that referencing the property is a reference to the item itself?

formal goblet
zealous forge
#

That is unfortunate, I'd prefer the ability to state "This Style Item is Style1" and then reference its properties directly.
I suppose I could either keep it in an item container with other Styles and reference the whole table for given properties, or have it use item modifiers to change the properties I want to display.

#

Different question, is there a way to have an image within a property? I want to display dice in a better way than just "d6 d8 d8"

formal goblet
lament flint
#

I'm having trouble with Ripper's Boss bar module and CSB. I have it so the data path is right but when the hp changes the bar does not update. it will update if I close it and re open it. but otherwise it stays stuck. any help would be greatly appreciated.

formal goblet
stone swan
formal goblet
stone swan
#

Ah. I didn't understand what you meant by that. Thank you for the example code.

stone swan
#

It also doesn't like csb formulas in the referenced field (which I'm not even going to try to fix) or images, which is also an extremely minor flaw. All in all, this is a great success.

wet heron
#

Can I modify a setting of a number field with a button?
Ie, with a button, can I turn off show +- and make the field non editable?

stone swan
#

Correction: Images seem to work fine, but with a really weird caveat. If an image is in the referenced field and there's an emoji in either the referenced or direct field, then the image will automatically appear at the start of the message. This doesn't seem to effect images in the direct field, and things like tables or paragraph formatting (in either field) don't seem to produce this effect.

Again, I don't think it's worth going out of my way to fix it, but I thought you might find the interaction interesting.

#

Ok. There's more going on with the weird image placement than just that, and it's not limited to images in a referenced field. It's also quite inconsistent.

#

Oh, this might be a legitimate bug, but I'm not sure if it's CSB or something else. If you use the in sheet rich text editor to add an image, then there will be a button to select a source from the server (in addition to the field for a url), but if you use the pop-up editor the button won't be there.

#

... Images don't like the presence of Heading 3 text—and I do mean Heading 3 specifically. Headings 1, 2, and 4 all work just fine—regardless of which field they're in. 🤷

drowsy rune
#

In a dropdown list, does selecting one label make it "true" ?

stone swan
#

Selecting an item in a drop down sets the drop down's value to the key of the selected entry.

drowsy rune
#

So if my dropdown is named "bananas" and I select the entry "apples", bananas = apples ?

#

(because I know I ask way too much questions 😂)

stone swan
drowsy rune
#

Lemme rephrase is

#

My dropdown list key is x

first entry key is 1, label is one
second entry key is 2, label is two

stone swan
#

Unrelated to that, but how are auto completes in Text Fields supposed to work? I tried entering a few values in one, but when I went to test it none of them auto completed and I don't know if that's because I entered the values wrong or if I'm just trying to trigger it incorrectly.

drowsy rune
#

What happens if I select the first entry ?

formal goblet
drowsy rune
#

Ok, nice

wet heron
stone swan
#

I feel like I'm missing something basic with the Text Field autocomplete feature. I put a value into it and now there's a down arrow on the field, when I create items using that template, but clicking the arrow does nothing and neither does starting to type the word. How is this feature supposed to work, particularly when you're just using a static list of words?

drowsy rune
#

How do you refer to a dropdown key ? Especially for visibility formulas

formal goblet
#

Oh no, typing

#

You usually use it together with equalText()

drowsy rune
drowsy rune
formal goblet
#

Uh, that would be invalid syntax 😅

#

Either you have something like an operator like + (in this case, 4 + 6) or you have functions like sum() (in this case, sum(3, 5, 7))

drowsy rune
#

Mmmh

#

I wanted to display two different labels with visibility formulas depending on the dropdown list

#

But actually that might not be the best solution for what I want to achieve

drowsy rune
#

I managed to create my first formula without asking for help here 😂

#

Is it possible to create a number field with a suffix ?

Like a number field and then the suffix displays a given value

#

Right now I have a number field and a label field but that's not optimal

formal goblet
hazy saffron
#

Is this error something to be concerned about? Get it when loading or refreshing actors

[Detected 2 packages: advanced-macros, system:custom-system-builder]```
zealous forge
drowsy rune
#

I have tried tables and fiddling around with alignment but it does not look that good

broken pumice
#

I put them in their own sub-panel. I have the number field with a prefix (for example : "Focus : ") followed by the label with the maximum amount. The label has a prefix which is "/ ". So I get something like :
Focus : 10 / 12
Having both in their own panel allows them to keep the two fields together.

#

Looks like this on my sheet

broken pumice
drowsy rune
brave trench
#

Could someone give me an example of how or where to use the conditional modifier list component? I'm not quite understanding what its purpose is or where I would apply it

wet heron
#

I can't find any info on if I can change settings on a number field through code, if so can someone help me?

brave trench
tiny goblet
#

Morning all! Got a stupid question that has been stumping me all week.

How do I call a non-inline roll function with a label roll message?

formal goblet
formal goblet
formal goblet
tiny goblet
# formal goblet `${[1d20]}$` would be the most simple one

This results in an inline roll because of the bracket encapsulation, right?

The system i'm running requires evaluating the individual die results from a dice pool, but when it gives an inline result my players can't see what the individual results were.

(Top message is a '/r' roll sent by the user, bottom message is a [roll] called by my label message)

formal goblet
#

You can click on the 17

tiny goblet
#

I can and it will give a pop-up with the rolls, but that popup on click doesn't occur for my players. I've got a world script that makes rolls expand by default, but I can't figure out how to get something similar for the inline function.

formal goblet
# tiny goblet I can and it will give a pop-up with the rolls, but that popup on click doesn't ...

I see, that could be tricky, because CSB uses a Tooltip and not a collapsible section like Foundry. You could probably trigger a virtual click-event to let the tooltip show, but that would require a fitting selector... I think the easiest would be to use a Script instead to trigger a Roll like /r:

tiny goblet
#

This is exactly what I was looking for. Thanks much!

brave trench
#

More post update issues... I have items with fields that fetch from actor, that are currently failing to update unless I either close down the sheet, hit the refresh button, or open the item on the sheet. Has anyone else experienced this? (in image, attack/defend should read 3. they only update if i refresh page/close actor/open item)

tiny goblet
#

A follow up stupid question. Is there a setting I need to configure to allow players to edit richtext fields on sheets they own?

formal goblet
tiny goblet
#

hmm. It works just fine for me, but when my players attempt to edit a text box on the character sheet, the pop-out editor appears, but doesn't allow input. I'm gonna play with permissions and see if maybe I messed something up. Thanks

heavy elm
#

Hey, is anyone else experiencing that active effects cant be edited on templates?

formal goblet
heavy elm
#

alright, ty. I thought I may missed something

#

May I suggest that every installation of the CSB comes with the example-json? Its really helpful to get an idea of the possibilities and how to use the given tools or may copy/paste a few.

formal goblet
#

I won't include it in the system, but I'll try to make a module, so Users can optionally include that

dire socket
formal goblet
gleaming coral
#

is it possible to make the "configure hidden attributes" window wider?

wet heron
wet heron
rotund mason
#

even without field controls the field itself is editable, just without the buttons

dense pine
#

After the update to 3.2.1 a filter formula in an item container stopped working:
item.typ==40 and equalText(item.vorschau, 'true')
what do i have to change to make it work again please?

formal goblet
formal goblet
#

And the Script would be something like ```js
%{
const component = entity.getComponentMap().key;
component._showControls = !component._showControls
entity.entity.update('system.body': entity.entity.system.body);
}%

dense pine
formal goblet
#

and, not AND

dense pine
rotund mason
dense pine
wet heron
wet heron
dense pine
#

this label roll message used to let me activate a checkbox in an item from outside. it stopped working after the update. any idea how to fix this?

#

i think 'true' needs to be changed to 1 or '1' or true or whatever?

median mirage
#

Has anyone managed to do an inventory with item count or something similar?
I have numbers associated with items and I want to provide the ability to update that from the actor sheet. In my case it's incrementing/decrementing a number so a button would do fine too.

#

Actually I'm just realising it's probably using what Pete mentioned XD

brittle moth
# stone swan I feel like I'm missing something basic with the Text Field autocomplete feature...

The autocompletion values should be separated with ','. The arrow next to the Text Field indicates that autocompletion has been detected in your field, but if clicking on it does not show anything, there must be something wrong in the configuration. Can you send a screenshot of your element's config ?
I'll add that autocompletion is not a list of allowed values, just hints for you players.

formal goblet
stone swan
dense pine
stone swan
dense pine
#

its a label in the item container yes. it lets me activate/deactivate an item without opening it

dense pine
wet heron
brittle moth
craggy python
#

hopefully quick question here, i'm trying to paste some icons in just through a label here and I notice there's a border around images in general here. is this CSB doing this, or is this foundry? in any case, is there any way I can remove these borders?

formal goblet
craggy python
#

ah, i only asked because it seemed like there was similar formatting around the icons here as well

heavy elm
#

Hey. I'm stuggeling with that formular:

${sameRow('Attribute') == 1 ? STR_BONUS : sameRow('Attribute') == 2 ? KON_BONUS : ${sameRow('Attribute') == 3 ? GE_BONUS : 0}$

It suddenly works when I remove the third operator. And I dont know why.

craggy python
#

but in that case I'll look around on the foundry side of things anyways

formal goblet
craggy python
#

though I was able to find someone complaining of the same problem for foundry in general

craggy python
#

gonna try just adding style="border:0px;"

#

yea that did it lmao

formal goblet
alpine tiger
#

Is Custom System Builder going to be updated for v12?

stone swan
formal goblet
sturdy mesa
formal goblet
toxic lintel
dusky mauve
#

Why it happen?

#

start after upgrade - I can't directly add item from compendium. But Can if import it atfirst.

broken pumice
#

I seem to have a bug where I cannot add active effects modifiers whatever role I assigned to the Minimum Role to edit Item Modifiers. Are the active effects modifiers not affected by that setting ? Should I change something else ?

formal goblet
broken pumice
glad spade
#

Quick question, has itemData.system.documentTypes moved somewhere else in CSB? Is it itemData.system.template now?

formal goblet
glad spade
stone swan
#

Is there a way to add custom active effects and/or unique status icons to a type of character? (The current use case I'm thinking of is being able to show the phase for a multi-phase boss.)

stone swan
#

Related question, is there a good way to dynamically add elements to a sheet based on an entered value? The use case here is that multi-phase bosses have HP break points based on the number of phases they have and the number of phases they have can be freely determined by the GM. Ideally, I'd like to have labels showing the HP values for each of their break points and, possibly, boxes for the additional abilities they gain based on their phases and that come on line as they go through their phases.
(I'm also game for trying an alternative setup if it could convey the same information without needing to bother with dynamic elements.)

formal goblet
stone swan
formal goblet
stone swan
formal goblet
stone swan
# formal goblet Some modules can adjust the Effects in the Config. I've used "Custom Settings Ex...

That would still be adjusting the effect, not setting something up on the character sheet.

My idea was for a GM to be able to create a Progressive Boss (our systems multi-phase style of boss) and to have that style of character automatically have a condition that gets triggered as it goes through its phases, preferably without adding it to the general list of conditions that you see when right clicking a token.

Based on what you're saying, and the page you linked me, it seems there's no way to make it inherently part of the character type, but it might be possible to write a macro that would add it?

formal goblet
stone swan
# formal goblet Yep, if it's not part of the Effect List of the Token, then the only way would b...

Actually, on that note, I'm not sure how the Configure Active Effects button, on template sheets, is supposed to work. Clicking it opens a window that lists all of the status effects I've set up, plus an extra line that doesn't seem to have a title, but they all say "(0 modifiers)" and expanding them shows me the header for a table (like the item item modifier window, but there's no button to add entries. Am I missing something?

formal goblet
rotund mason
stone swan
#

(E.g. if I create 8 hidden elements, under the reasonable assumption that bosses are unlikely to have more than 6 phases, and a GM creates a boss with 9 phases, there's going to be a problem.)

rotund mason
#

make each phase as an item, with a checkbox somewhere called something like "active", when making the encounter, just add as many items as phases, put a description or something as a memo for "when to activate" and just activate the checkbox manually, with a macro, ascript or something

#

than you can do things like "this phase when under 50% hp" or "this when someone in the party wears red"

#

then you just need to put a check into the modifiers to look at the checkbox, A "if this is not checked, do nothing, if not, do X"

stone swan
#

That could, potentially, work, but I suspect the steps that would be needed to make it useful would make the item portion redundant.
(I don't know if I already mentioned it, but while the number of phases is arbitrary, it's represented by a single variable and that, plus another variable, determines the size of each phases, so the relevant numbers are easy enough to calculate.)

rotund mason
#

the item approach allows you to put the new things the boss can do in the item itself

#

with something like a numbox for "how many phases" you would need to put every possibilit in the base sheet

stone swan
#

Ah. Unfortunately, those new things are already items (they can be used by regular monsters and characters, the boss just gets extra instances of them), so I wouldn't be able to put them inside of an item that represents the phases, otherwise that would be a very good solution.

rotund mason
#

if they are already items, just copy the code into the new item

#

I mean, open the template, and control copy the item

#

you then just need to modify the item to do a few more checks

#

without seeing the sheet I can't offer more suggestions

#

in fact, you can probably modify the existing items, just add the checkbox in a hidden panel

stone swan
#

I'd rather avoid creating duplicate copies of every monster ability just so I can have a progressive boss version. 😓

There are quite a few of them and the macros can be quite complex (once they get added), so trying to maintain two copies is asking for trouble, in addition to just creating a lot of clutter.

stone swan
rotund mason
#

then a hidden panel, call it boss ability and make it so just a gm can see it, then add the logic to the modifiers with a if checked go see the phases codes, else ignore it

stone swan
#

Hmm. Could I put a script or formula in a hidden attribute that creates an array of integers based on a pair of number fields?

formal goblet
stone swan
#

I know DAE is listed as Does not work with CSB, but I was under the impression that was because it doesn't necessarily talk to CSB and CSB wouldn't take its changes into account, but you could still use them together. It's not supposed to completely break character sheets, right?

#

I'm asking, because I tried playing with it, but setting it to load for untested games resulted in my characters looking like I hadn't set a template for them and reloading them just produced some errors. They came back after I turned that setting off, except for the one I tried reload, which I can't even open now.

Fortunately, I tried all this on a duplicate world, so I'm not too concerned, but If this isn't just me messing something up it might mean the compatibility page should be updated.

formal goblet
stone swan
#

Ok. This is a lot. So, first off, just loading into the world with that setting checked produces a few errors. Most of them look like this:

#

One or two of them, however, looked completely different. The first set also happened early on in the load, while the odd ones happened at the very end.

#

Opening the sheet that had been previously reloaded was possible with the setting checked, though it still appeared blank, and produced this error.

#

Reloading it again produced this one.

#

Disabling the setting and then reloading the world only produced two errors, but they're new ones.

#

Finally, trying to open the sheet produced a ton of errors. Most of them looked similar enough, but one at the end was slightly different. I'm attaching a single example from the first set and the unique one.

#

Hopefully something in there is helpful, but let me know if you'd like me to test something else.

formal goblet
#

2 things are coming from DAE itself. The first one is ValidSpec.specs (dunno what it tries) and the second one is ui.notifications in the setup-Hook (that one could also cause issues in other systems, because ui.notifications doesn't seem to be initialized in that Hook).

stone swan
#

Which screenshot were those in?

#

Never mind, I found them.

#

validSpec seems to be something that DEA tries to create that lists all the things that a user can modify on a character sheet. I could send you the .js file where it's defined (and where the specific line that's causing the error is), or I could test some other things, but I'm not sure how far you want to pursue this, since it's not part of CSB and I know you already deal with a lot.

formal goblet
stone swan
#

More than reasonable. I think it might warrant a warning on the wiki, in that case.

gleaming coral
#

Is there a way to create functions and the ability to pass parameters into them? Trying to avoid updating multiple fields for each update.

formal goblet
gleaming coral
#

righto thanks

drowsy rune
#

I’m not sure this is exactly CSB-related, but has anyone ever turned a CSB character sheet into an editable PDF sheet to print it and give to players ?

high stag
#

I can make a counter by symbols in a roll message? Or only by csv?
Like rather than shows 3 sucess in a roll of d10 shows 3 green dots

#

2nd
I want to put a max value in a number field that it is not editable, a label I imagine. However, this means that it is not identified as Attributebar, what do I do to track it on the resources bar?

formal goblet
high stag
#

Hm ok

high stag
#

Thanks

high stag
#

How can i make a macro to update hp?

#

i tried

let sa = entity.system.props.sangue_maximo;
let selected = canvas.tokens.controlled;
if (selected.length === 0) {
    ui.notifications.warn("Nenhum token selecionado.");
} else {
    selected.forEach(async token => {
        
        // 
        setPropertyInEntity('target', 'sangue', "target.sangue - sa*0.25")
    });
}
#

I used props, but I imagine that attributeBar is the right one.

#

the path
actor.system.attributeBar.sangue

rocky dune
#

Heya, hoping someone can point out where im going wrong here. New to this so might be missing something obvious.

Trying to calculate Movement Speed for a character where they get 10 extra every 10 levels in DEX.

Under DEX Movement Mod im trying to do a stat total/10 to get how many groups of 10 levels the stat has, to then use that to work out how many +10 to add. However im getting an "Error" and im not sure why.

#

Origin of StatDexTot if its relevant.

rotund mason
#

that... should work

#

asuming StatDexTot is a number

rocky dune
#

StatDexTot is the output of the DEX Total image

formal goblet
rocky dune
formal goblet
formal goblet
formal goblet
high stag
#

Is there no way to do it with a macro?

rocky dune
#

ah! thanks got it. Was just me missing something obvious. Had some text modification round the stattot calculation so it thought the output was text. Thank you.

formal goblet
high stag
#

Ok

burnt ridge
#

Hi, is anyone able to explain this error message and if there is a potential solution to someone with limited coding understanding?

    at new PlaceableObject (foundry.js:26078:13)
    at new Token (foundry.js:58252:5)
    at TokenLayer.createObject (foundry.js:34020:12)
    at TokenLayer._onDropActorData (foundry.js:41525:20)```

It occurs when trying to drag a character token into a scene, it started when I updated Foundry to version 12.something
#

I can copy paste an existing token into a scene, just not drag a new one in

formal goblet
burnt ridge
#

any idea if/when it might be?

formal goblet
#

No estimation on that so far

burnt ridge
#

Ok, as always thank you for all of your efforts you put into this amazing system, very grateful for how accessible you make this stuff for everyone

heavy elm
#

I may found a bug. When I use

${lookup('Skills', 'Total', 'Name', Skill_Selection)}$

It only shows me the numeric value of 'Total' in a label when I dont use a componentkey. When I use a componentkey the field stays blank. But works fine whe I chose a number field.

formal goblet
heavy elm
#

I realized it also dont work with another field that contains a value as a label. Dead shure not a typo

#

same issue, same factors

#

And I can reproduce the issue. It stops showing me the numeric value as soon as I enter something into the Component key.

heavy elm
formal goblet
grave ether
#

Is there a easy way to convert from 3.0 to 3.1 since there is a a change in formula usage?

heavy elm
#

Sorry if its may dumb to ask, still learning

formal goblet
grave ether
#

After skill_selection

#

Hmmm, I get bunches of errors preventing the sheet from loading... since fetch was changed to lookup

#

I have avoided doing anything with it since moving lol got both versions installed atm

heavy elm
grave ether
#

Yes but believe you still need '' around the selection

heavy elm
#

Actually Skill_Selection is dropdown list that fetches the name of the skill from the dynamic table.

formal goblet
heavy elm
#

When I remove the component key its showing up

#

strange...

grave ether
#

Table, value,key, filter,

#

Is the 5th value sort now?

#

Haven't gone over all of the changes... /shrug will have to look at them tomorrow

heavy elm
#

yep I have

#

I also tried to wrap around a first, doesnt do a thing.

grave ether
#

Try using first in front.

grave ether
#

like: ${first(lookup('Skills', 'Total', 'Name', Skill_Selection, ==))}$ ?

#

Boo

#

Add a 3 =

#

===

heavy elm
#

same behaviour. As I enter a component key 😶‍🌫️ when I remove it 😃

heavy elm
# grave ether ===

nope didnt do a thing, this doesnt seem to be impressed by the number of = I put it.

#

Why is it correlating with the component key? Whats the matter here?

grave ether
#

Dropbox are a pain...

#

Lol

formal goblet
#

Can you open the console and look for errors?

heavy elm
#

Where can I find it?

formal goblet
#

Press F12

heavy elm
#

NS_ERROR_UNEXPECTED: theme.min.js:4
WebGL warning: drawElementsInstanced: Using format enabled by implicitly enabled extension: EXT_float_blend. For maximal portability enable it explicitly.

formal goblet
#

Focus on those coming from CSB only

heavy elm
#

some props were not computed

#

no erros there so far

#

oh wait I found one

#

TypeError: Failed data preparation for Actor.c4Gob7K9Bt79UlxL.Item.1liQmHWnpgnjil6V. expression is null

formal goblet
heavy elm
#

Plate

#

I have an item named like this

formal goblet
#

That one is causing an issue

heavy elm
#

I'll try tomorrow my very best again, but after I deleted the Item it's still not working

#

Even more strange, I use the _Template from the example.json and it uses the same conditions but my actor with that template works just fine

north nebula
#

I just want to double check something. When I get the notice "Some props were not computed." and then a line saying "All props for (actor) computed in 3 loops." Does that mean the issues of the first notice were supposedly resolved in those three loops?

north nebula
#

actually, never mind. I looked at the components of the sheet and the one that is giving me troubles is not listed. (However, it is late, so I will return tomorrow with more info)

tiny hinge
#

all my pc/npc sheet data is gone and reset to default after updating to 3.2.1. Is this expected behavior?

tiny hinge
tiny hinge
heavy elm
gray bluff
#

Hello everyone, I made a little Macro to increase a value on my characters sheets (used this https://gitlab.com/custom-system-builder/custom-system-builder/-/wikis/Tips-&-Tricks/Macro-for-updating-values as a model and it work like a charm)
But I would like to make it that when a certain box is checked on the sheet the increase was +2 instead of +1.
The component key is "easygoingcheck", I tried to fiddle with the macro myself but I'm really bad at it xD
Is there a way to do it ?
Here is my macro for the simple +1

crimson aspen
#

Heyho its me again. I got a Questions:
Is it possible to make a Dialog Window appear for the GM where he has to confirm first, before the actual roll is done?

crimson aspen
#

Also it would be insane if someone could point me in the right direction to fill a dynamic table with the values from a array.

idle urchin
#

Hey guys! I'm having a problem with Tabbed Panels. I'm not able to create tabs inside any tabbed panel. Can someone help me, please?

formal goblet
formal goblet
crimson aspen
formal goblet
formal goblet
idle urchin
rotund mason
#

Can I reference the item name in a roll message?

dusky mauve
#

When try to open actor with Dynamic table

rotund mason
brittle moth
dusky mauve
brittle moth
brittle moth
#

I have been made aware of a blocking issue in 3.2.2 creating duplicates of predefined Dynamic Table rows under certain conditions. I'll fix it soon. In the meantime, I have rolled back the release, the latest version is 3.2.1 again. Sorry for the inconvenience :/

toxic lintel
#

I have items linked to a specific actor, and a macro that displays items that meet specific conditions in a chat message with a link to open that item. The intent was to allow items that have been 'revealed' to be seen by all players. But I think because the players cannot have access to that actor, they can't see the items either.

Is the solution to have the macro go find the compendium item that is the 'parent' from which the item instance is created, and display THAT in the chat? (and give the players limited access to the compendium)

dusky mauve
#

@formal goblet do you havr ko-fi account? I see only @brittle moth on the main page of the CSB project.

silver lake
#

And it works, thank you very much

#

🫂

brittle moth
#

Fixes for the fixes !

#package-releases message
**Version 3.2.3 is now generally available, with the following changes : **

Fixes

  • Fixed an issue with Dynamic Tables when deleting rows
  • Fixed issues with 3.2.2 migration not being complete

Fixes from 3.2.2

Fixes

  • [#370] Fixed an issue causing lookup to return an empty array when values should be found in keyed Labels
  • Fixed an issue causing Item Containers to retain values of deleted Items
  • Fixed a performance issue with sheet computations
  • Fixed an issue with updates when using fetchFromActor function after setPropertyInEntity
  • Fixed API-links in Readme
  • Fixed Active Effect config
  • Removed 'customProps' from ComputablePhraseOptions

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

dark burrow
#

the image i sent is the formula for "Label Roll Message"

#

actually i sent the wrong image, give me a second

#

yo, so i was having a few questions about a certain thing i'm trying to do:
basically, this is a formula (idk if thats the name) for a label roll message, and it works fine

it just rolls a d20 with those 2 bonuses and all. But how would i make it so that, the label's text is just bonus + attributeBonus? I'm not sure what i should do for that, but i do have a formula which is basically the one i just sent, but without the [1d20] (thats getting an error, unfortunately)

dire socket
#

Like, all of them, but lookup for dynamic tables seems to be working just fine.

hallow ginkgo
#

Hey folks, can someone help me? I'm trying to use an user input in a roll, but I can't make it work.

Here's what I am trying

</br>

Rolling ${?{dice[number]|1}}$ dice

<p>Rolled: ${roll:=[dice* 6]}$ = ${roll}$```
#

I wanted to ask the user to input how many dice they'll roll

#

And then roll that many d6

formal goblet
hallow ginkgo
#

Oh thanks a lot

#

Man, I'm struggling to undersand the syntax. Not a developer hahaha

dire socket
hallow ginkgo
#

Is there a way to show the individual results? I mean, If I rolled 3d6, show each one of them separately?

dire socket
formal goblet
brittle moth
dire socket
#

HAHA, well I'm glad it's an easy fix, thank you for your service!

dusky mauve
# brittle moth Yeah, really looks like the issue I fixed 🙂

Nope)))

I able to reproduce it on 3.2.3

1 you need clean dynamic table.
2 Press create new row
3 Than you need to be fast))) close the Actor sheet

and it will no open anymore due to error

after export sheet I have found such record inside the actor

      "c_item_table": {
        "1": {
          "deleted": false
        }
brittle moth
hallow ginkgo
#

Folks, this kind of math works here?
${ dice == 0 ? ${math.min(${[1d6]}$ , ${[1d6]}$)}$ : Testing' }$

#

I wanted to be able to show the results like in the image, and then pick the highest or lowest among them to compare and see if its a sucess or failure

brittle moth
hallow ginkgo
#

Thanks

dark burrow
# formal goblet You're missing a parenthesis here:

thank you very much !! but i have a small question:
First image is the formula. This (second image) is how the label appears. I suppose its because of the 4 functions (?, i dont really know what to call them.) Is there a way i could make only the total (which is "bonus + attributeBonus") appear? Sorry if this may be a basic question or something

brittle moth
north nebula
#

I am trying to dig into the Script for updating multipe rows in a Dynamic Table. I am unsure what to make of the ...row, portion of the below exampe which is in the wiki. I understand with filters I can probably filter down to specific rows beyond just those that are not deleted, and my understanding of uses: parseInt(row.uses) + 1 is that uses is the column, and we are setting it to its current value + 1. I have tried poking around a bit and trying different shots in the dark, but I keep getting a "Unexpected token ':'" error, so I know I am missing something.

formal goblet
north nebula
#

In case it is something that I am doing wrong with my code, I am trying to set a column to the value of a drop down menu when I push a button. I know there are things missing, but again, it is the ...row, that I do not know what do with in this case.

%{const table1 = entity.system.props.table_test; Objectvalues(table1) .filter(row => !row.deleted) .map(row => (col1: '${test_dd}$'})); await entity.update({'system.props.table_test': table1});}%

#

oh fuck...

#

well, I foudn one issue already

#

Object.values, not Objectvalues

formal goblet
# north nebula I am trying to dig into the Script for updating multipe rows in a Dynamic Table....

... is the spread-syntax in JS. Here are tons of examples: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

MDN Web Docs

The spread (...) syntax allows an iterable, such as an array or string, to be expanded in places where zero or more arguments (for function calls) or elements (for array literals) are expected. In an object literal, the spread syntax enumerates the properties of an object and adds the key-value pairs to the object being created.

north nebula
#

Ah, thank you. I will read that a bit more. I put the ...row, back in, and now that the Object.values has the period like it should, I am getting a different error, but I will read more on the ... stuff first

#

Finding more syntax errors in m hasty typing. I am no long getting errors when I push the button. I will have to poke around more after lunch. Thanks for your help

dusky mauve
#

Why system keeps deleted rows?

#

in dynamic tables

brittle moth
# dusky mauve

Okay, I see
There is an error with the lookup function, I'm fixing it, and another with errors in prefixes and suffixes 🙂

brittle moth
dusky mauve
#

hm need to check this 🙂

#

Yes it works as you say) but

      "c_item_table": {
        "1": {
          "deleted": false
        }

wasn't predefined row

brittle moth
#

Every row is created with the deleted flag, it's a legacy thing. It will be removed one day ^^"

Erratum : It's to maintain consistency with predefinedLines. Standard lines will always have this to "false" though

formal goblet
heavy elm
#

Hello, can anyone assist me with a formular and checkboxes?

#

I want to add a value from a dropdown-list and a 1 or 0 from a checkbox. Also I want to check if another checkbox is checked so it repeats 0 as value.

${(sameRow('Main_Language') ? (sameRow('Level') == 3 ? 1 : 0) : sameRow('Level'))+sameRow('ReadWrite') ? 1 : 0)}$

Something is off with my formular

brittle moth
stone swan
#

I think this might be a bug, but I'm running into an issue where if a component goes too far to the right it will push other components partially out of the scrollable area of a window.

grave ether
#

Put them inside a panel?

stone swan
stone swan
#

Unrelated question, but is making a panel collapsible the only way to give it a visible title?

formal goblet
formal goblet
stone swan
north nebula
#

I have gotten the script for updating multiple rows in a dynamic table to stop throwing errors, but I must admit I am a bit lost as to to implement it into the sheet. I am assuming I do not want it in the label roll message as that does not seem to be updating the table itself.

To explain my end use for this, I am making a sheet for Panic at the Dojo. Characters can have up to seven stances that have a stance name (a text field the user can input), a style (option from a drop down menus), and one or two forms (options from drop down menus). Each stance is given its own tab in a tabbed panel. At level 10, players an use two stances at once. Easiest thing I can think of is have a button or something to fill in a dynamic table with the stance names, styles, and forms, so that two drop down menus can be populated with the stance names, and then the styles and forms are pulled in to labels with a simple lookup.

stone swan
#

I take it there's a reason you're giving each stance a tab in a tabbed menu, rather than a line in a dynamic table?

#

Also, unrelated to that, but shouldn't you be able to just put a Check Box's key into a visibility field, to make it toggle another component's visibility? Am I forgetting something with that interaction?

north nebula
#

Stances in Panic at the Disco are fluid things that the players create based on options available to them (once a character is made, the stances are generally set though) and they can change stances between rounds as stances affect what they can do.

#

I realize this might not be the optimal way of doing it, but it also seemed most user friendly with my current skills and knowledge

stone swan
#

Got it. There's a lot of information that needs to be visible. In that case, tab panels make sense to me, even if they complicate things a bit.

north nebula
#

The thing is, the key info is just the stance name (to identify which stance it is), style, and form. Everything else on that is derived from the style or form.

#

(well, and a few stance agnostic things)

stone swan
#

You could have a dynamic table where they enter the names of their stances and set the styles and forms and then use that table to populate both the tabs and the drop downs. That might also let you set the tab names to the stance names, rather than leaving them as generic "Stance n"s.

formal goblet
#

I'd say Items would be better

north nebula
#

Those stance names were ones I entered for example because I lacked creativity at this point.

#

Before I dive into how items work, would items solve my issue of being able to dynamically pull the seven user made stances? Panic at the Disco is a game where players go from level 1 to 10. For levels 1 through 9, having the seven distinct tabs for the stances is fine because they only use one at a time.

At level 10, they can use two of the seven stances they built at once.

#

And yes, it is something where I can have them manually input the forms and styles of the two stances they want to use, but that becomes tedious and is prone to user error.

stone swan
north nebula
#

The ideal in my head (which admittedly is probably not ideal) is to have a button they can press that pulls stance_name1 into row one, column one of a dynamic table, then style1 into row one, column two, and form11 into row one, column three, and form12 into row one column four, and then stance two info into row two....

north nebula
formal goblet
stone swan
north nebula
stone swan
north nebula
formal goblet
stone swan
formal goblet
stone swan
#

Ok, what am I doing wrong here? '1FCE' is the key for a check box. It should resolve to true or false and I know that it does, because I fed it in to a ternary operator and it works. So why does entering it in a visibility field not work?

formal goblet
north nebula
# stone swan I get that it can all be populated on the fly. I'm trying to get an idea for how...

Individual stances have the Stance name as an editable text field, and the style and form selections as drop downs that pull from dynamic tables, and then labels populate most of the rest of the info.

For level 10, my idea was to have a new tab, where there are two drop down menus with the stance names for what they made with stances 1-7. Based on what they select, The style names will fill in as labels. All of the other information the player needs will be populated based on what those styles and forms are.

stone swan
formal goblet
#

Well, haven't tried. It does cause conflicts with the Object Dot Notation, but not with the Object Square Notation

#

entity.system.props vs. entity['system']['props']

stone swan
formal goblet
#

The first has strict rules for variable names, while the second one has more freedom

stone swan
#

Alternatively, you could do something similar with items, though I'm not sure it would actually improve things over much.

stone swan
north nebula
#

Thank you

stone swan
formal goblet
#

I'll still suggest Item Containers over Dynamic Tables

north nebula
#

My issue with item containers is... my own fault. I already keyed in all of the static data in dynamic tables and I have a mostly functional character sheet with them, with the exception of this level 10 stuff, and a few things I have not gotten around to.

stone swan
# formal goblet I'll still suggest Item Containers over Dynamic Tables

I might be missing something, but setting it up using items would still require them to jump through similar hoops if they want the stance's information displayed on the sheet, so the main difference would be whether they set the names of the 7 stances and their details in a discreet item or on a table. Also, wouldn't the item approach require more data duplication, since each item would need a copy of the text for each of the styles and forms?

north nebula
#

And I have no understanding of items or item containers yet, so I will have to learn that as well (which I should at some point if I want to do more with this). But I also acknowledge that my own ignorance is what made me spend a lot of time going about it this way.

north nebula
#

I do appreciate your suggestion, I just am not at the level where I can take it and just implement it, and I do not want to take up people's time handholding me through it.

formal goblet
north nebula
#

Part of me is tempted to share the hackjob of a template I have made, but I really should be off for the evening I think.

stone swan
formal goblet
#

Ha, what is evening. It's 3 am here

north nebula
#

6:30 pm for me.

stone swan
#

9:35 here. Once more and we could have a complete chain of 3 hour jumps. 😝

north nebula
#

I do appreciate your suggestions and will keep them in mind in the future should I try rebuilding this or do a different project.

stone swan
#

Going through this is also good for my own understanding.

formal goblet
stone swan
# formal goblet How would you design something like Weapons?

The way I did it for my system is I have an item where you can set the type, class, and rarity in the header. It also has a tab devoted to text descriptions, a tab where you can set the weapon properties via drop downs (that reference a table of properties, requirements, and descriptions on another tab), and a tab for enchantments, which mostly revolves around a dynamic table with text fields.

#

The only parts of that that flow back into the character sheet are the name, the properties, and the descriptions for the properties.

#

Sorry, the type and class also flow back.

formal goblet
#

That's how it should be in most cases. Because a User can possess 0-n Weapons, you'll need an Extensible Container. The system has only 2 of them (well 3 to be fair, but let's just ignore the Conditional Modifier List), a Dynamic Table and an Item Container. Dynamic Tables should only be used for entries, which do not contain many data-fields. Once you have too many for a single row, one should prefer using Item Containers over Dynamic Tables.

We could argue, that because a User will always have 7 stances and not 0-n, a static container would be enough. But that would take you the option away to extend this feature easily (what if we want 8 selectable stances instead? What if the amount of stances gets dynamic?).

And also, those Tabs contain quite a few duplicate Components. They essentially do the same in the same composition. Also a good argument to package that into a more modular thing, which can be easier reused.

stone swan
# formal goblet That's how it should be in most cases. Because a User can possess 0-n Weapons, y...

Dynamic Tables are also useful because they're one of the only components that can be easily programmatically referenced.

I'd argue you only need 4 columns in the tables (Stance, Style, Form 1, Form 2) and I assumed the information the tabs were drawing on was stored centrally and simply referenced by the tab. So now I have a data storage question:

In scenario 1, you have 3 tabs that display a lot of duplicate information, but they do so by using labels that reference a dynamic table that's stored on a hidden tab.

In scenario 2 the 3 tabs instead reference 3 different items, but each of those items have their own version of that central table, so it can be referenced when setting up the items.

Which scenario results in smaller character sheets, or is their another scenario that's better than both?

formal goblet
stone swan
formal goblet
#

I would entirely get rid of the Tabs and only rely on the information of the Items. The Items would perform a lookup to the Dynamic Table with the additional information about the styles and so on. The Actor would only contain, which stances are currently selected (and maybe some additional info about the selected stances), but not really more.

#

So Tab1 - Tab7 would be Items. Only the multistance-Tab would be kept

stone swan
#

Unless I'm missing something, I feel like referencing a lot of that information (as a player) would be pretty awkward if you have to keep manually opening and closing items to do it, especially if you frequently change stances during combat (which may or may not be a thing in that system). Unless the multi-stance tab would still be able display all of that information, for the active stances?

formal goblet
#

You could keep the Dropdowns with the name of the stances or you use pseudo-checkboxes in the Item Container. Both allow selections at the Actor-Level

stone swan
#

The issue isn't selecting things for the actor. A lot of what those tabs seem to be displaying was text that the player's would need to read, so they still need a way to see that text, either by having it displayed somewhere on the character sheet or by opening up the stance items.

formal goblet
#

References will get a bit more complex, because you'd have to rely on a Script (at least a pretty easy one)

stone swan
#

Just to double check something, where does the reference table live in the item based setups? The character sheet, each individual item, or some third place?

formal goblet
#

Now with Item Containers also storing the Item ID, it might also be worth implementing a convenience-function to fetch the props of an Item

formal goblet
stone swan
#

I'm actually not familiar with how you'd go about setting up or referencing a global actor?

formal goblet
#

fetchFromActor() 😅

#

You can provide a static name, which pulls the data from the Actor with that name

stone swan
#

Yes, I suppose that would be a logical way to fetch data from a random actor. ...

#

... I should probably make use of that for some things, like my weapons.

formal goblet
#

I store the XP in a global Actor, because every player gets the same amount

stone swan
#

I just stopped using XP. 😝
But that's another good use for them.

formal goblet
#

Is data in a lookup-table (besides the lookup-key) dependent on Actor data? If not -> global.

stone swan
#

Tangentially related, mildly cursed, problem: I have a dynamic table with two text fields, one for a category and the other for the specific. I'd like to have another dynamic table reference them via programmatic dropdowns, so the first dropdown would let the player select the category and then the second dropdown would let them select from the specifics that belong to that category. (All of this is happening on an item sheet, it is unique to each instance of this type of item, and I can't know how many categories there will be or if there will even be any before hand. Like I said, mildly cursed.)
Problems two:

  1. The first dropdown shows every instance of a category (so if there are three 'Spirit Power' entries, I'll see 3 lines of 'Spirit Power'.
  2. The second dropdown is completely blank, even after selecting something in the first.
#

Realistically, I'm probably overcomplicating a feature that's never going to work well, but if you think those are reasonably tractable problems, it might be worth trying to solve them. (Or if you can suggest a saner way to handle this.)

formal goblet
#

So a set in a Table, which you want to have a subset, and then a subset out of this subset?

#

Nvm, I got it

#

Should be doable in my head.

stone swan
#

Uhh?

Table A is a reference table that has sets that. Players select the entries on Table B and it would be nice if they could do so by selecting the set and then the item from the that set.

formal goblet
#

The second Dropdown just needs to use the Formula-option with the lookup()-function to get the option entries depending on the selection of the first Dropdown

stone swan
#

Is there a way to get rid of the duplicate entries in the first column?

formal goblet
stone swan
#

Script it is.

formal goblet
#

So instead of 2 text fields you'd have 1 text field and 1 dropdown in the Dynamic Table

stone swan
#

That is probably the more reasonable answer, except I should be able to generate these things programmatically (outside of foundry) and I suspect that will be easier without the extra table.

#

(Also, one less table to deal with.)

formal goblet
#

My favorite is option 2 because it is fail-prove for Users (there can be typos in text fields, so Dropdowns are always safer). But that's your choice.

stone swan
#

Users shouldn't be filling the reference table out. If I'm lucky, it should come straight from the LaTex we used to generate the manual. (If it can't then the table won't be useful and I can just drop it altogether.)

formal goblet
#

You're importing from latex? This will be fun 😅

stone swan
#

No. Another dev is importing from latex, meaning we're also going to add a game of telephone to the procedure. 😆
I'm sure this won't explode horribly.

#

Can I use JS in the dropdown key formula and do I have access to Sets and the new Set function?

formal goblet
#

Yep

stone swan
#

Huh. Ok. I just tried %{return [... new Set(${lookup('ExtraMenu','Sel')}$)];}% and I got an error about a missing ')' and I'm pretty sure both sets are properly matched.

formal goblet
stone swan
formal goblet
#

Object.values(entity.system.props.table).filter(row => !row.deleted).map(row => row.columnKey) would be my preference instead of the lookup()

formal goblet
#

Information about types gets lost

stone swan
#

As always, thank you for all of the help.

stone swan
#

That explains my confusion. I thought I was missing something weird with Object.values.

formal goblet
#

Well, I thought 1 step ahead 😅

stone swan
#

That works perfectly.

#

On the topic of using things in ways they probably weren't meant to be used, can you use a CSB formula or JS in item modifier keys?

formal goblet
#

Yeah, you can

#

Otherwise you wouldn't be able to modify fields in Dynamic Tables

stone swan
#

That makes sense. Still, it continues to impress me how insanely flexible CSB is. I think most reasonable systems would have looked at half the things I've wanted to do and started laughing.

formal goblet
#

The complexity is actually no joke 😅, we spent quite a lot of time for code-refactorings alone in the past months

stone swan
#

There's no way I can shove a matrix into a Hidden Attribute, is there?

#

Or make an Item Modifier alter a single element in an array?

formal goblet
stone swan
#

I figured that was the case.

#

Ok. Sanity check time:

Tracks come in 3 speeds and each track has 7 facets that may or may not grant a perk point. Characters can get more than one track of the same speed, but that causes their granted points to multiply (I.E. if both corresponding facets grant a point, they gain 1 point, otherwise they gain 0).

Currently, I'm considering creating a hidden attribute for each speed /facet combination, but that would mean creating 21 hidden attributes just to hold the perk points, which seems wasteful. Especially, because I want to have a visible grid showing when they get perk points, but since Item Modifiers can't modify checkboxes I can't just jump straight to the grid.

#

... Is there a way I could set a Label's value to true, while also having it display as something prettier (like a check or an emoji), without having to upload a .css sheet?

stone swan
#

That's what I thought.

rocky dune
#

Ok dumb question time. Just updated to newest version, and now i cant open actors? Started a new world as well and cant edit actors in that either. Am I missing something?

stone swan
rocky dune
#

11.315

stone swan
#

Ok. So not 12, which is good. What happens when you try to open or edit an actor?

rocky dune
#

Nothing, no options at all for opening actors

stone swan
#

You mean like the actor tab isn't there on foundry's sidebar?

rocky dune
#

pffh annoyingly the server im hosting on has just gone down so cant screenshot. The actor tab is still there and the actors that were setup in the world i was working on still exist. but theres no options for "opening" them.

In the mean time while im trying to get server back up. is there a simple way to roll back to a previous version of CSB?

sharp geyser
rocky dune
#

so these are the options ive got.

#

also doesnt appear to be registering the templates i had set up.

#

Creating new actors has the same issue, no options to open them.

rocky dune
stone swan
#

I don't think the right click menu normally has an open option; you just left click on the actor? Similarly, the templates you have set up wouldn't show up in the window shown in your second screen shot. You'd need to create the character as a Type Character and then you'd get a drop down to select the specific template.

rocky dune
#

left clicking does nothing. it did work that way pre-update. and the templates were set up that way, pre-update.

stone swan
#

Just to double check, what version were you using before the update?

rocky dune
#

Not sure, i only installed 2 weeks ago though so im guessing the previous version

#

have just noticed ive got the same issue on items

stone swan
#

Ok. What does the console (hit f12) say if you left click the name of one of your characters?

rocky dune
#

Opening console, i get this

#

which is odd as my resolution is definatly not that.

#

This is the error I get trying to open actor

stone swan
#

That looks like there are some files missing, which puts it outside of what I'd be comfortable trying to trouble shoot for you. Sorry. (I'm sure more experienced people will be able to help.)

rocky dune
#

Ok, thanks the the time anyway

heavy elm
stone swan
#

Cursed question time: Hidden attributes will turn any arrays into CSVs, but Array() can turn CSVs into arrays. So, could I put a JS script in my item modifier that takes the Hidden Attribute CSV, converts it into an array, iterates through that array (doing its multiplication), and then returns an updated array for the Item Modifier to set the original Hidden Attribute to?

Better question (because I've already written a function that can do every part of that up to the set): How bad of an idea is that and will it explode if multiple items want to do it to the same Hidden Attribute? (The math on that second part should be fine, so long as they do it in sequence, regardless of order, rather than both acting on the unmodified Hidden Attribute).

formal goblet
# rocky dune

Try out CTRL + F5. Seems like the Cache is playing against you.

brittle moth
#

#package-releases message
I swear I'm trying to fix everything !

**Version 3.2.4 is now generally available, with the following changes : **

Fixes

  • Fixed an issue where Item Container were not referencable anymore
  • Fixed dynamic table's internal properties adressing
  • Fixed issue with lookup erroring when no data was found
  • Fixed issue with Label prefix & suffix causing sheet to not render when Formula errors

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

rocky dune
brittle moth
rocky dune
brittle moth
#

I tend to delete old versions from this page to avoid cluttering it

rocky dune
#

Ah perfect. Thank you very much. Issue i was seeing not present in that version. Wasnt looking forward to facing a group of hangry nerds so thats very much appreciated!

brittle moth
#

I understand you wanting to have the stablest version possible 🙂
But I must warn you : there are issues on every version (at least I assume so, because I don't know yet for the latest version :p), including the one I linked to you. Many were fixed in version 3.1.x, so I encourage you to try newer versions when you have the time to do so 🙂

#

The fact that I released so many new versions in the last few days does not mean the system is unstable or buggy, but that we're actually working hard to make it better even in the most obscure cases 🙂

rocky dune
stone swan
#

Ok. I have a new problem. I put together a macro that lets me get the names of targeted tokens (as opposed to just a single name for a targeted actor) and now I want to be able to call it in a roll message. This mostly seems to work, except for when a token with a ' in their name gets targeted, which causes it to throw errors. I also only get this error when I call the macro in a roll message (both normal roll messages and my weird referenced ones).

#

Here's the code for the macro:

let stooges = [];
game.user.targets.forEach((dupes,ind, arr)=>{
stooges.push(dupes.document.name)});
if (stooges.length > 1){
    let holding ='';
    stooges.forEach((dupe,ind,arr)=>{
        if(ind<=stooges.length-2){
            holding +=dupe+', ';
            }else {
                holding +='and '+dupe;
                }
                })
return holding;
}else{
    return stooges;
    ;}

Here's how I'm calling it %{return await game.macros.getName('User Multi-Target').execute();}%

#

And here's the error I'm getting:

#

(For reference, the character that causes this error is named "Epsilon's Test Char".

formal goblet
# stone swan Here's the code for the macro: ```js let stooges = []; game.user.targets.forEach...

I suggest that you escape the quotes. You can use String#replace() to achieve that: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

MDN Web Docs

The replace() method of String values returns a new string with one, some, or all matches of a pattern replaced by a replacement. The pattern can be a string or a RegExp, and the replacement can be a string or a function called for each match. If pattern is a string, only the first occurrence will be replaced. The original string is left unchanged.

stone swan
#

I thought I might need to do something like that (though I didn't know the proper way to do it and the ways I tried didn't work). I am a bit surprised that it's not an issue in other contexts, like referencing the same name, in the same message, using 'name'.

formal goblet
stone swan
#

Makes sense.

#

Also, not to be pushy, but did you see my question about converting CSVs to arrays via JS, working with those arrays in an item modifier, and then using the set mode to write an updated array back to a hidden attribute? I'm mostly worried about running into some sort of race condition if multiple item modifiers try to set the same attribute, because I don't know if they'll work sequentially (order shouldn't matter) or if they'll both act on the unmodified attribute.

formal goblet
stone swan
#

But if that's not an issue I'm all good. Thank you.

formal goblet
#

I'd say test it. I haven't worked with this approach so far, so it might contain unforseen things

stone swan
#

Will do.

lament flint
formal goblet
lament flint
formal goblet
#

Modules like Bar Brawl have no issues with CSB, so I don't know what is the issue

lament flint
#

is there a way to pull the values directly from the sheet rather then using an attribute bar? what would the path for that be?

formal goblet
#

system.props.key

lament flint
#

no luck, that just breaks it fully as well. I might mess with it and see if I can figure it out. I appreciate the help.

stone swan
summer kiln
#

Has anyone tried Token HUD Wildcard with Custom? I can't seem to get it to work

half beacon
#

There's an example in the Wiki that uses checkboxes in Item Containers, and the checkbox controls if an item is equipped or unequipped. But it's laggy compared to the checkbox used in the Checkbox component type. Is it possible to get the same functionality another way?

formal goblet
half beacon
#

Alright. Thanks for the info!

formal goblet
half beacon
formal goblet
half beacon
#

Hmm... when the dev says that, I know I've really screwed something up 🥲

formal goblet
#

Can you install other modules?

half beacon
#

Yeah it looks like it

formal goblet
#

Wait, did you try to install a system?

half beacon
#

... Oh my god...

#

Am I not supposed to do it from there? 😅

formal goblet
#

It's a module, not a system

half beacon
#

THAT explains that

#

Couple of questions. How would I change the font of just the table title for an Item Container? I'm using CSS, but I only know how to change the font for everything in the table and not just the title.

#

Other question, I've seen someone with a unique divider for their headers. I'm assuming they're using an image, but I'm not sure how to change it.

dire socket
#

@brittle moth Hey, is there an issue with the in sheet rich text editors? Also, whats up with this?

#

I swear it was working last night

#

Oh it seems to be my setproperty, but im not sure why it isn't working now

brittle moth
#

Didn't see anything with Rich Text Editors, but I'm going to look

For the migration... That's a bummer, I didn't count the case where the Dynamic Table has no predefined lines... Dammit...

#

Could you send me a template or a character with the issue ? 🙂

dire socket
#

for the dynamic table, rich text field orrr, the "original or other are not objects"?

#

I'll go ahead and export my abomination of a sheet anyways

dire socket
ancient gale
#

Hello, I am New at this.
I am looking to make a Dropdown to select an Item inside an item container, what would Key for the title name of an item sheet ?
The only way I made it work is to write a another textfield inside the Item (item.Name) But is it possible to take the title of the item itself ?.

formal goblet
#

To be more precise, the formula in the Dropdown should be ${lookup('itemContainerKey', 'name')}$

ancient gale
#

Yes I just figured out, thanks !

mint arch
#

Is there a way to force whole number values?

${(DexValue/2) + 2}$ Actions

I want this label to read whole numbers, and if the result were to end in ".5", automatically round down to the nearest whole number.

formal goblet
mint arch
#

gotcha, I'll look up those in the documentation. Thank you

mint arch
#

Floor works for now though.

formal goblet
#

If it is in math-js, you should be able to use that as well

mint arch
#

oh sweet!

#

thanks!

formal goblet
#

I've never seen someone use fix(), but I can imagine cases where signs matter

brittle moth
potent fossil
#

Guys did it happens to some of you that during migration for the latest version the dynamic tables off almost all your items and sheets contained rows you never added?

#

sometimes blank, sometimes like if they were coming from deleted items

#

Sometimes some rows won't even delete

cobalt mango
#

Hello. I'm in need of help, the faq brought me 90% of the way there.
I have a hidden attribute "StrenghtTotal" with Formula: StrenghtBase+StrenghtBonus+RollBonus
And a hidden attribute "StrenghtRoll" wich uses StrenghtTotal as a parameter to calculate the roll String.
I'm trying to use a prompt
${#?{RollBonus:"Bonus"[Number]|2}}$
${[:StrenghtRoll:] }$

#

However it doesn't calculate the "StrenghtRoll" after receiving the "RollBonus"

#

I'd really like to avoid having to put the Strenght roll string concat() in every roll message 😦

formal goblet
cobalt mango
#

1 sec

#

"ExternalMartialArtsRoll" would be what I called "StrenghtRoll" in my initial message.

#

I can show the attribute formulas if that helps

formal goblet
#

Did you reload the character if you have changed the key?

#

Otherwise that is your issue atm

cobalt mango
#

Yes

#

I did it again to make sure and it's the same error

#

ExternalMartialArtsRoll (formula): ${(ExternalMartialArtsTotal)>0? concat(string(${ExternalMartialArtsTotal}$),'d10kh'):'2d10kl'}$

#

ExternalMartialArtsTotal (formula): ${ExternalMartialArtsBase+ExternalMartialArtsBonus+TempBonus}$

#

if I remove the TempBonus in the second formula it works (obv)

#

Maybe TempBonus must be declared somewhere using a label or as an hidden attribute?

formal goblet
#

And TempBonus is what?

cobalt mango
#

Core Foundry is 11.315, CSB is 3.1.1

cobalt mango
#

it only appears in the roll message

formal goblet
#

So this is the order in the Label Roll Message: TempBonus -> ExternalMartialArtsTotal -> ExternalMartialArtsRoll

cobalt mango
#

${#?{TempBonus:"Bonus"[Number]|2}}$
${[:ExternalMartialArtsRoll:]}$

#

This is the roll message, the calculations are done in the hidden attributes tab

#

I was hoping between the prompt and the roll, "ExternalMartialArtsRoll" would stop being not solved because it stopped missing a variable

formal goblet
#

That won't work. ExternalMartialArtsTotal doesn't know at the time of calculation what TempBonus is. Everything on the Character Sheet, that is not in a Label Roll Message, will be calculated prior

cobalt mango
#

ouch. I guess there's no way other than calculating the roll in each label then?

#

What if I try to do ExternalMartialArtsTotal := (ExternalMartialArtsTotal+TempBonus)

formal goblet
#

You can remove TempBonus from the Total and resolve that in the Label Roll Message instead

cobalt mango
#

The roll variable is conditional and has "kl" or "kh" at the end so I'd have to use the total variable to calculate it every time

#

which is fine and I appreciate the help and the system btw 😄

#

ExternalMartialArtsRoll (formula): ${(ExternalMartialArtsTotal)>0? concat(string(${ExternalMartialArtsTotal}$),'d10kh'):'2d10kl'}$

formal goblet
#

Well, that's a dependency issue. Because TempBonus is a dependency on the Label Roll Message-level, everything else, that is dependent on it, can also only be resolved on this level.

cobalt mango
#

I see. Thanks for confirming so I can stop using time to work around it 😄

#

Maybe I should figure out how to call a function $calculateRoll(TempBonus, RollTotal) if it's possible to do in a roll message

#

anyways I haven't read enough on the documentation to know if that makes sense yet. (edit: ok it doesn't)
thank you again
I'm back to work

alpine tiger
#

I have a json file I created for a character sheet. Is there a way I am import it to Custom System Builder and use it as a template to create new custom character sheets?

formal goblet
cobalt mango
brittle moth
leaden rune
#

Trying to get the CSB built CBR+PNK system working and I need to upload the CSS file but it says I have to do it manually? Not sure how to do that. I’m using Forge and I tried uploading it to my asset library but it doesn’t show up

stone swan
stone swan
#

Is there a convenient way to rotate a label 90°, without using a css file?

stone swan
#

That's what I figured. Oh well.

stone swan
#

I've encountered a bit of a bug, but I'm not sure how best to word it for a report. Short version, if you have a Table filled with tiny items, that are programmatically set, setting their size to tiny might work on the character sheet, but it kind-of breaks the template sheet. Here's a picture of what I'm talking about:

#

The stars on the left are generated by the template on the right and that template is ... hard to read. Note there's a, still empty, column to the left of the innate column, but the '+'s to fill it are buried by the innate's code boxes.

#

Also, mostly unrelated issue, but I don't know why there's such a gap between the major and minor columns. They're all the same size and they should all be center aligned.