-
Notifications
You must be signed in to change notification settings - Fork 178
Text Styling
Balatro includes a very basic formatting syntax for styling and formatting displayed text in-game. Where supported, text can be styled with the use of style modifier codes included within the text string. For example, the text string:
{C:blue}+1{} hand |
produces
|
|
Most SMODS objects that display description text will parse and style text strings automatically when loading from localization files or loc_txt. This includes the text strings of descriptions for Achievements, Consumables, Decks, Jokers, Vouchers, and more.
Style modifiers are not additive - text will only be styled by the modifiers contained within the previous set of curly braces. Using empty braces {} will reset text styling for text after it.
Additionally, multiple modifiers can be combined in a single set of curly braces. For example, the text string:
{X:mult,C:white}X0.5{} |
produces
|
|
Valid style modifiers are as follows:
| Defined text colour |
{C:colour-key}
|
| Defined background colour |
{X:colour-key}
|
| Variable/custom text colour |
{V:colour-index}
|
| Variable/custom background colour |
{B:colour-index}
|
| Text motion |
{E:motion-index}
|
| Text hover tooltip |
{T:tooltip-key}
|
| Text scale |
{s:scale}
|
| Text underline |
{u:colour-key}
|
| Text strikethrough |
{st:colour-key}
|
| Font |
{f:font}
|
| Button |
{button:function-key}
|
| UI Element |
{element:element-index}
|
| No modifiers (use default styling) |
{}
|
Important
Modifiers are case sensitive - make sure to refer to this list for the appropriate capitalization.
{C:colour-key} changes the color of the text, where colour-key is the key of a colour defined in G.ARGS.LOC_COLOURS.
| Text string | loc_vars | Result |
{C:mult}+4{} Mult |
|
|
{C:attention}1{} free {C:green}Reroll{} |
|
|
{C:green}#1# іn #2#{} chance |
vars = {
G.GAME.probabilities.normal, -- 1
card.ability.extra.odds -- 6
} |
|
{X:colour-key} sets the background color of the text, where colour-key is the key of a colour defined in G.ARGS.LOC_COLOURS.
This modifier is usually combined with the text colour modifier to make
This modifier uniquely strips all whitespace from the styled text, so text like {X:gold} W I D E {} is rendered as . This can be helpful for improving the readability of otherwise dense strings.
| Text string | loc_vars | Result |
{X:mult,C:white}X3{} Mult{} |
|
|
{X:chips,C:white} X 1 . 5 {} Chips{} |
|
|
{X:mult,C:white} X#1# {} |
vars = {
card.ability.extra.xmult -- 0.5
} |
|
{V:index} changes the colour of the text to a custom colour provided as an entry in the loc_vars vars.colours table. See Localization for more details.
index is the array index of the colour entry in the vars.colours table.
| Text string | loc_vars | Result |
{V:1}FF00FF{} |
vars = {
colours = { HEX('FF00FF') }
} |
|
{V:2}#2#{} suit{} |
vars = {
'Spade',
'Heart',
'Club',
'Diamond',
colours = {
G.C.SUITS.Spades,
G.C.SUITS.Hearts,
G.C.SUITS.Clubs,
G.C.SUITS.Diamonds
}
} |
|
Note
This modifier is added by Steamodded and is not supported by vanilla Balatro.
{B:index} changes the colour of the background to a custom colour provided as an entry in the loc_vars vars.colours table. See Localization for more details.
index is the array index of the colour entry in the vars.colours table.
Unlike the similar Defined background modifier {X:}, {B:} does not remove or change the whitespace of styled text, so displayed contents will remain the same as their input string.
| Text string | loc_vars | Result |
{B:1}00FF00{} |
vars = {
colours = { HEX('00FF00') }
} |
|
{B:1,V:2}Oh no!{} Anyway... |
vars = {
colours = {
{1, 0, 0, 1}, --#FF0000
{0, 0, 0, 1} --#000000
}
} |
|
{B:1,V:2}#1#{B:2,V:1}#2#{} |
vars = {
'Spa',
'rts',
colours = {
G.C.SUITS.Spades,
G.C.SUITS.Hearts,
}
} |
|
{E:1} applies a pop-in effect when the text is first displayed, and a floating animation to each letter in the text.
{E:2} applies a bumping animation to each letter in sequence.
{E:} is incompatible with background modifiers {X:} and {B:}. If background modifiers are set, {E:1} will only show a pop-in effect with no motion, and {E:2} will be ignored.
You can also apply a custom effect using SMODS.DynaTextEffect, in that case the modifier should be {E:modprefix_key}.
| Text string | Result |
{C:green,E:1}probabilities{} |
|
{E:2}Joker{} |
|
{C:red,E:2}self destructs{} |
|
{T:tooltip-key} adds tooltip functionality to the text, which displays a small tooltip UI above the text when the text is hovered over.
tooltip-key must be the name of a key found in either G.P_CENTERS or G.P_TAGS. See the entries in the SMODS.Center category and SMODS.Tag for more.
| Text string | Result |
{C:tarot,T:v_crystal_ball}Crystal Ball{} |
|
Important
This modifier requires the lowercase s, unlike other modifiers which must be UPPERCASE.
{s:scale} changes the size of the text.
scale is a decimal value where the default size is 1.0.
Vanilla Balatro only uses s:0.8, s:0.85 and s:1.1 text scales.
| Text string | Result |
{s:0.8}0.8 {s:1.0}1.0 {s:1.1}1.1{} |
|
Note
This modifier is added by Steamodded and is not supported by vanilla Balatro.
Important
This modifier requires the lowercase u, unlike other modifiers which must be UPPERCASE.
{u:colour-key} adds an underline under the text.
colour-key sets the colour of the underline, where colour-key is the key of a colour defined in G.ARGS.LOC_COLOURS.
| Text string | Result |
{u:red}Underlined text! |
TBD |
Note
This modifier is added by Steamodded and is not supported by vanilla Balatro. (Added in 1531zeebee)
Important
This modifier requires the lowercase st, unlike other modifiers which must be UPPERCASE.
{st:colour-key} adds a strikethrough line through the text.
colour-key sets the colour of the underline, where colour-key is the key of a colour defined in G.ARGS.LOC_COLOURS.
| Text string | Result |
{st:red}Strikethrough text! |
TBD |
Note
This modifier is added by Steamodded and is not supported by vanilla Balatro.
Important
This modifier requires the lowercase f, unlike other modifiers which must be UPPERCASE.
{f:font} changes the font of the text.
font is a f value ranging from 1 to 9 in vanilla, to add custom fonts you need to set the value as the font's full key (modname_font).
| Text string | Font Name | Assigned Language | Result |
{f:1}Hello{} |
m6x11 plus | Default |
|
{f:2}Hello, 你好{} |
Noto Sans SC Bold | Simplified Chinese |
|
{f:3}Hello, 您好{} |
Noto Sans TC Bold | Traditional Chinese |
|
{f:4}Hello, 안녕하세요{} |
Noto Sans KR Bold | Korean |
|
{f:5}こんにちは{} |
Noto Sans JP Bold | Japanese |
|
{f:6}Hello, Здравствуйте{} |
Noto Sans Bold | Russian |
|
{f:7}Hello{} |
m6x11 plus | None* |
|
{f:8}Hello{} |
Go Noto Current Bold | All1** |
|
{f:9}Hello{} |
Go Noto CJK Core | All2** |
|
{f:modprefix_fontkey}Hello{} |
Custom Font (example: Comic Sans MS) | Custom |
|
*It differs from the default font from the parameters TEXT_HEIGHT_SCALE = 0.9 and TEXT_OFFSET = {x=10,y=15}
**These are the language names given in the original game.lua file.
Note
This modifier is added by Steamodded and is not supported by vanilla Balatro. (Added in 1501a)
Important
This modifier requires the lowercase button, unlike other modifiers which must be UPPERCASE.
{button:function-key} allows text to be clickable.
function-key is the key of the callback function for the button. The function will be under G.FUNCS['function-key'].
| Text string | Result |
{button:modprefix_function}Click me! |
TBD |
Note
This modifier is added by Steamodded and is not supported by vanilla Balatro. (Added in 1531zeebee)
Important
This modifier requires the lowercase element, unlike other modifiers which must be UPPERCASE.
Important
Unlike other modifiers, this modifier does not affect the text string after it. Instead, the UI element is inserted directly at the position of the modifier.
{element:index} inserts a UI element provided as an entry in the loc_vars vars.elements table. Instances of Node (e.g. CardArea, Sprite, UIBox) are automatically wrapped in an object node. See Localization for more details.
index is the array index of the element entry in the vars.elements table.
| Text string | loc_vars | Result |
{element:1} <-- Cool sprite |
vars = {
elements = {
{ n=G.UIT.R, config = { align="cm" }, nodes = {
{ n=G.UIT.O, config= { object =
SMODS.create_sprite(0, 0, 20, 20, "modprefix_atlaskey", {x = 0, y = 0})
} }
} },
}
} |
TBD |
Some style codes can be combined within one set of curly braces, like {X:mult,C:white}.
-
{T:},{f:},{u:},{button:}and{s:}are compatible with all other modifiers. -
Background modifiers
{X:}or{B:}can be used in conjunction with text colour modifiers{C:}or{V:}. -
Text motion modifier
{E:}is incompatible with background modifiers{X:}and{B:}- if background modifiers are set,{E:1}will only show a pop-in effect with no motion, and{E:2}will be ignored. -
{C:}and{V:}are exclusive - if both are used,{C:}will be ignored. -
{X:}and{B:}are exclusive - if both are used,{X:}will be ignored. -
{element:}does not interact with any other modifiers. Any additional modifiers will function as if{element:}wasn't present.
| Text string | loc_vars | Result |
{X:mult,C:white}X0.5{} |
|
|
{C:edition,E:1,s:2}YOU WIN!{} |
|
|
{s:0.8}({V:1,s:0.8}lvl.#1#
{s:0.8}){} Level up{} |
vars = {
G.GAME.hands[card.config.hand_type].level,
colours = {
G.C.HAND_LEVELS[math.min(7,
G.GAME.hands[card.config.hand_type].level
)]
}
} |
|
| Colour | Key | Value | Example | Note |
|
|
red
|
G.C.RED
|
|
|
|
|
mult
|
G.C.MULT
|
|
|
|
|
blue
|
G.C.BLUE
|
|
|
|
|
chips
|
G.C.CHIPS
|
|
|
|
|
green
|
G.C.GREEN
|
|
|
|
|
money
|
G.C.MONEY
|
|
|
|
|
gold
|
G.C.GOLD
|
|
|
|
|
attention
|
G.C.FILTER
|
|
|
|
|
purple
|
G.C.PURPLE
|
|
|
|
|
white
|
G.C.WHITE
|
|
|
|
|
inactive
|
G.C.UI.TEXT_INACTIVE
|
|
|
|
|
spades
|
G.C.SUITS.Spades
|
|
Suit colours affected by High Contrast setting |
|
|
hearts
|
G.C.SUITS.Hearts
|
|
|
|
|
clubs
|
G.C.SUITS.Clubs
|
|
|
|
|
diamonds
|
G.C.SUITS.Diamonds
|
|
|
|
|
tarot
|
G.C.SECONDARY_SET.Tarot
|
|
|
|
|
planet
|
G.C.SECONDARY_SET.Planet
|
|
|
|
|
spectral
|
G.C.SECONDARY_SET.Spectral
|
|
|
|
|
edition
|
G.C.EDITION
|
|
Animated colours |
|
|
dark_edition
|
G.C.DARK_EDITION
|
|
|
|
|
common
|
G.C.RARITY.Common
|
|
Added by Steamodded |
|
|
uncommon
|
G.C.RARITY.Uncommon
|
|
|
|
|
rare
|
G.C.RARITY.Rare
|
|
|
|
|
legendary
|
G.C.RARITY[4] (vanilla)G.C.RARITY.Legendary (SMODS)
|
|
|
|
|
enhanced
|
G.C.SECONDARY_SET.Enhanced
|
|
|
|
|
default |
G.C.UI.TEXT_DARK
|
|
|
|
|
blind |
G.C.DYN_UI.DARK
|
|
Added by Steamodded since 1.0.0~BETA-1531zeebee
|
This dictionary is initially assigned by the loc_colour function in functions/misc_functions.lua.
Steamodded automatically adds additional entries to LOC_COLOURS for all custom objects in:
which can be used as colour keys in the same way by {C:} and {X:}. When referring to custom Rarity, Gradient or Suit colours added by SMODS, the key must be prefixed with the mod prefix.
Game Objects
- API Documentation
- SMODS.Achievement
- SMODS.Atlas
- SMODS.Attribute
- SMODS.Blind
- SMODS.CanvasSprite
- SMODS.Center
- SMODS.Challenge
- SMODS.DeckSkin
- SMODS.DrawStep
- SMODS.DynaTextEffect
- SMODS.Font
- SMODS.Gradient
- SMODS.https
- SMODS.JimboQuip
- SMODS.Keybind
- SMODS.Language
- SMODS.ObjectType and SMODS.ConsumableType
- SMODS.PokerHand
- SMODS.Rank and SMODS.Suit
- SMODS.Rarity
- SMODS.Scoring_Parameter and SMODS.Scoring_Calculation
- SMODS.Seal
- SMODS.Shader and SMODS.ScreenShader
- SMODS.Sound
- SMODS.Stake
- SMODS.Sticker
- SMODS.Tag
Guides
- Your First Mod
- Mod Metadata
- The Mod Object
- Calculate Functions
- Perma-bonuses
- Object Weights
- Logging
- Event Manager
- Localization
- Text Styling
- UI Structure
- Utility Functions
- All About
G - Internal Documentation
Release Notes
Found an issue, or want to add something? Submit a PR to the Wiki repo.