Releases: Steamodded/smods
1.0.0-beta-1814a
SMODS_1.0.0-BETA-1814a
This release version contains a whole suite of bug fixes and adjustments to internal functions, as well as a few new useful tools for you to use.
Changelog
SMODS.copy_cardhas been added to make copying cards easierSMODS.is_playing_cardhas been added to check whether a card is a playing card or notCard:can_sell()function added to control whether a card is able to sold easier- The
{T:key}option of text formatting has been expanded to accept{T_set:set_key}and{T_vars:var1;var2;var3}to direct the tooltip to be drawn from outside of theOtherlocalization table select_cardhas had some adjustments to allow for both select and use buttons to be displayed simultaneously. Returning a second truthy value (i.e.return 'jokers', true) will enable both buttonsno_collectioncan now be a function that returnstrueorfalseto control the behaviourSMODS.create_card/SMODS.add_cardnow support some additional arguments:silentthat disables seal and edition application soundsscalethat accepts a table ofwandhto modify the size of the card
- It is now possible to create a badge for a custom
ObjectType - When creating a custom
ObjectType, you can now better control the undiscovered behaviour - Issues caused by shaders when playing on mobile have been addressed, and the experience should be a lot smoother now!
- Optional features that are enabled are now displayed on crash reports to aid with debugging for mod developers.
- The
name_texttype inlocalizenow correctly supports variables. SMODS.destroy_cardshas had it's format adjusted, and now takes a table of arguments to control it's behaviour. See below for more information.- The shop crash when redeeming the Illusion voucher when playing with object weights has been fixed
- Naneinf scores when chips or mult individually reach infinity once again work correctly
Detailed Changes
Copying Cards
Copying cards has been made easier to do correctly by using the new function SMODS.copy_card(card, args), where card is the card being copied and args is a table to further control the function's behaviour. The following args are supported:
new_card- Copies the card intonew_cardinstead of creating a new card (like the Death tarot)card_scale- Multiplier for the copy's scalestrip_edition- Strips the edition from the copyno_add- Skips adding the copy to deckarea- Area the new copy should be added to, if not specified it will be inferred from the card.playing_card- Sets the copy's playing card value. Iffalse, the value is not set. If no value is specified, it sets it to the next G.playing_card (only ifcardis a playing card)
This function comes along with another util function, SMODS.add_to_deck, which correctly calls all the relevant functions when adding something new to the players control. Further info on this function can be found on the Utility page of the wiki.
Controlling Ability to Sell
Centers can now have a can_sell function defined on them to control whether the card is sellable or not. For example, this function would prevent a card from being able to be sold.
can_sell = function(self, card, context)
return false
end,Note
context in this function is not provided by default, but could be present if you need to perform your own custom checks on whether cards can be sold.
ObjectType Changes
Badges
It is now possible to add a set_badges function on a custom ObjectType. This function works in the same way as on other objects.
Undiscovered Sprites
Previously, when creating a custom ObjectType, it required a lovely patch to enable custom undiscovered sprites. You can now add your ObjectType key to SMODS.UndiscoveredCompat to make your custom sprites work. If you find any other inconsistencies with undiscovered behaviour with custom types, please report it.
Destroying Cards
SMODS.destroy_cards has existed for a while now, but has recently been reworked to better control the behaviour. This also allows for custom colours to be passed to the dissolve function.
You should now use SMODS.destroy_cards(cards, args), where cards can be an individual Card object, or a table of Card objects, and args is a table that can have the following fields:
- bypass_eternal - Destroys cards even if they're Eternal.
- immediate - Destroys the cards immediately not creating an event (Note: Card.start_dissolve and Card.shatter internally still create an event)
- pinch_anim - Destroys the cards with the vanilla food Joker animation.
- colours - Replaces the colours used by start_dissolve.
- delay - Adds a delay to the event.
- destroy_func - Replaces the destroy function used (i.e. replaces Card.start_dissolve or Card.shatter)
This function will return a table of cards that are set to be destroyed.
Calculation Changes
- It is now possible to return a
fontkey in all calculations to customise the font of any message - When returning
dollars, you can addinstant = trueto add the dollars instantly instead of in line with animations SMODS.last_hand_scoretracks the total score of the last played hand- A new context has been added to modify the cashout after defeating a blind.
context.modify_final_cashout
This context is used to adjust the total value of the cashout. Returning modify = X will add your value to the total cashout.
if context.modify_final_cashout thencontext.modify_final_cashout -- boolean value to flag this context, always TRUE
context.amount -- the current value of the cashoutTip
Setting cashout_row = {} will allow you to provide your own arguments to the cashout row function. The amount and pitch are automatically populated for you. For example,
cashout_row = {name='custom', text = 'I'm custom!', text_colour = G.C.BLUE}
Coming Soon!
Over the next couple of weeks, I am hopeful that there will be a number of new features merged into the dev branch ready for wider testing, and work will begin/continue on other features too! If any of these are of interest to you, please try them out once they are merged and give us some feedback on them, so that we can have them functioning in the best state they can before the next release! If you’re interested in contributing or working on your own ideas for features, please get involved on the discord (or any other servers where we are active) and see what you can do!
- More Blind control - ability to create custom Small and Big blinds supported by default, as well as blinds that can appear in multiple slots. We’re looking into how this can be further expanded to allow for entirely custom antes and game paths
- Run Select Pages - if you are familiar with the mod Galdur, I have worked on incorporating it into SMODS in an improved form
- More attributes - attributes will be extended across all objects and the polling functions will have some tweaks to support this
- Card images - it will be possible to have the game create images of cards in their current state (including editions) at the press of a button
- Backgrounds - similar to ScreenShaders, we’re looking to make altering the background of the game a lot easier
- Sprite Particles - this feature will allow animated sprites to be used as particles on cards at a timing of your design
- Modifiers - it is planned to make creating new modifiers for cards (similar to enhancement, editions and seals) easier and work has been started on this
- Perma Bonuses - we’re also looking into how we can ease the process of adding custom permanent bonuses to cards
- Card Buttons - this is a longer term goal, but I’m beginning to work on custom buttons being applied to cards in a seamless manner (along with controller support 🤞)
1.0.0-beta-1620a
Fixes various bugs and visual inconsistencies. Also includes performance improvements and better compatibility with mobile devices.
What's Changed
soul_atlas: Separate atlas for center's floating sprite by @SleepyG11 in #1317- Mobile patches by @Aurelius7309 in #1325
- fix: resolve nil-indexing crashes in deck_preview UI by @spadesmaster in #1320
- Some UI optimizations by @SleepyG11 in #1316
- Optimize quantum enhancements's
set_abilityby @SleepyG11 in #1322 - Fix dropdowns causing unnecessary recalculates by @ThunderEdge73 in #1315
- feat: screen shader draw by @WilsontheWolf in #1342
- fix: booster select not accoutning for extra_slots_used by @WilsontheWolf in #1337
Full Changelog: 1.0.0-beta-1606b...1.0.0-beta-1620a
1.0.0-beta-1606b
Fixes a number of bugs from 1531zeebee. Lot's of wiki updates have been done as well documenting recent features/changes.
What's Changed
- "Cutting-edge technology bleeding pixels" fix by @SleepyG11 in #1301
- Add assert to shader loading for missing files by @lord-ruby in #1300
- split Card:set_cost for convenient overrides by @vitellaryjr in #1310
- Consistency changes to SMODS.create_card by @Aurelius7309 in #1313
Full Changelog: 1.0.0-beta-1531zeebee...1.0.0-beta-1606b
1.0.0-beta-1531zeebee
Heebee zeebees 😨
Full notes to come later/on the wiki.
What's Changed
- Fix: Update Blind's description with
set_text(Fixes #1233) and properly update name with loc_vars by @nh6574 in #1243 - Fix AnimatedSprite size in mods menu by @nh6574 in #1235
- Support starting & custom modifiers without UI for Challenges by @stupxd in #1230
- Fix fix implemented by #1159 (fixes #1220) by @wingedcatgirl in #1226
- Allow calc_scaling to apply to editions by @jumbocarrot0 in #1014
- Identify fake objects by passing
keytofake_cardfield by @HuyTheKiller in #1234 - Stake injection and UI fixes by @wingedcatgirl in #1058
main_start/endsupport for multiboxes by @nh6574 in #1246context.main_scoringfor 'individual' areas by @nh6574 in #1245- pass args.level_up to args.func in SMODS.upgrade_poker_hands by @MetaNite64 in #1268
disable_shinefor boosters, vouchers, and spectrals by @the-Astra in #1263- modify_booster_card context by @the-Astra in #1191
- Tweak
Card.selectable_from_pack, documentSMODS.card_select_areafunction andselect_cardfields by @HuyTheKiller in #1266 - feat: add conditionals for cycling dynatext content by @Foo54 in #1273
- Implement SMODS.GUI.scrollbar and SMODS.GUI.dropdown_select by @ThunderEdge73 in #1253
- Allow shaders to be applied to UI boxes by @InvalidOS in #1062
- feat: score modification effect by @Aikoyori in #1167
- Partial
no_overflow& scrollable mod name, authors and badge by @SleepyG11 in #1247 - Fix #1267 by @wingedcatgirl in #1278
- feat: UI elements in localization by @Aurelius7309 in #1283
- Proper prefix conflicts by @Aurelius7309 in #1290
- Allow mods to specify icon_path to have icons when unloaded by @lord-ruby in #1282
- Fix scrollbar bug with scrollbox content being smaller than or the same size as scrollbox bounds + Improve Dropdown API by @ThunderEdge73 in #1287
- Ability to specify scale args for custom round eval rows by @NeatsTopFoo in #1288
- Loader support for duplicate mods by @Aurelius7309 in #1291
calc_dollar_bonusimprovements by @nh6574 in #1244- feat: blind size modification effect by @LasagnaFelidae in #1281
- DynaText shaders, more robust UI element shaders by @InvalidOS in #1277
- Fix Center Unlock Text by @NeatsTopFoo in #1262
- stakes don't increment their own order anymore by @MetaNite64 in #1292
- Fix spectral card RNG parity with vanilla Balatro by @liafonx in #1231
- Update card_draw.lua by @RainDance2871 in #1236
- Add strikethrough formatting by @ThunderEdge73 in #1293
- DynaText: font for each individual string by @SleepyG11 in #1294
- feat: Add
weightsto every object andSMODS.Attributeby @Eremel in #1284
New Contributors
- @Foo54 made their first contribution in #1273
- @ThunderEdge73 made their first contribution in #1253
- @NeatsTopFoo made their first contribution in #1288
- @LasagnaFelidae made their first contribution in #1281
- @liafonx made their first contribution in #1231
- @RainDance2871 made their first contribution in #1236
Full Changelog: 1.0.0-beta-1503a...1.0.0-beta-1531zeebee
1.0.0-beta-1503a
Few bug fixes relating to installing for the first time, duplicate install detection and version checking.
Also contains some forbidden knowledge that will be explained in next release
1.0.0-beta-1501a
Look at this enormous list of pull requests and contributors. Thanks to everyone for their efforts in providing fixes and new features.
Full notes can be found here
What's Changed
- fix: crash with attention_text with text as table by @frostice482 in #1140
- Fix win condition to accomodate ante skipping by @wingedcatgirl in #1159
- [FIX] SMODS.is_eternal does not properly work for objects without a default eternal_compat value by @the-Astra in #1147
- Update LSP defs by @wingedcatgirl in #1169
SMODS.Back.initial_deckby @Gloompashcy in #1124- Allow custom types in
create_UIBox_notify_alertby @wingedcatgirl in #1138 - Ignore folders with .lovelyignore when running find_self by @stupxd in #1142
- Added German Translation (Create de.lua) by @onichama in #768
- Add
text_colourto challenges by @nh6574 in #1173 - Add SMODS.get_clean_pool by @the-Astra in #1146
- Fix crash in check_applied_stakes when stake.applied_stakes is nil by @toppeak-web in #1175
- implement the menu_cards function by @MetaNite64 in #1165
menu_cardsfixes by @nh6574 in #1185- Multiple columns for additional Ranks by @cloudzXIII in #1179
- add winning hand info to context.end_of_round by @lord-ruby in #1180
- implement CanvasSprite class by @MetaNite64 in #1020
- align_buttons cardarea config option by @the-Astra in #1148
- Hide palette selector for deckskins/collabs that have only a single palette by @VivianGiacobbi in #1163
- Custom StatusText in
update_hand_textby @Gloompashcy in #1172 - Prospective #1168 Fix by @Gloompashcy in #1184
- Preflight V1 by @WilsontheWolf in #1186
- #1179 Fix by @cloudzXIII in #1187
- Blind description formatting by @nh6574 in #1199
buttonsupport for text formatting by @nh6574 in #1200- add SMODS.ScreenShader by @real-niacat in #1174
- Add
.lovelyignoreto.gitignoreby @nh6574 in #1213 - Add info to
SMODS.destroy_cardslsp def by @nh6574 in #1215 - fix displaying negative chips from rank.nominal by @RandomsongV2 in #1222
- add array support to screenshader by @real-niacat in #1212
- Comment for ovewritten functions in vanilla code by @nh6574 in #1214
- Changes to badge colour handling by @nh6574 in #1219
- Allow
Card.remove_stickerto removepinnedby @nh6574 in #1221 pre_funccalculation key (Fixes #1098) by @nh6574 in #1218- Fix
SMODS.scale_cardLSP def by @nh6574 in #1229 - Fix no_juice returns not working by @InvalidOS in #1224
- Add context for altering Poker Hands by @DigitalDetective47 in #1139
New Contributors
- @frostice482 made their first contribution in #1140
- @onichama made their first contribution in #768
- @toppeak-web made their first contribution in #1175
- @cloudzXIII made their first contribution in #1179
- @RandomsongV2 made their first contribution in #1222
Full Changelog: 1.0.0-beta-1224a...1.0.0-beta-1501a
1.0.0-beta-1224a
Pushing through a small bug fix release before the festive period fully kicks off.
Cleans up some bugs introduced in the previous release.
1.0.0-beta-1221a
For detailed information on what this release adds, please see this discussion:
Click to see discussion post
What's Changed
- Fix Orbital Tag missing poker hand, expand
add_tagfunction by @HuyTheKiller in #1007 - Update ko.lua by @PixVoxel in #1040
- Update sticker.lua by @wingedcatgirl in #1061
- Fix display for scoring parameters with negative values by @nh6574 in #1088
- Add context.blueprint_copier by @InvalidOS in #1067
- Adds tracking for hands played per ante by @VivianGiacobbi in #1091
- Fix replace sound infinite loop by @VivianGiacobbi in #1090
- Add Poker Hands to collection by @nh6574 in #844
- Add config options to CardArea by @nh6574 in #891
- Shop Card Editing by @the-Astra in #953
- Custom ConsumableType usage tracking by @the-Astra in #978
- Add shader patching for lovely 0.9.0+ by @cg-223 in #1006
SMODS.is_active_blind()function by @AllUniversal in #1015- Updated ko.lua by @PixVoxel in #1084
- Added
SMODS.create_sprite()to decide betweenSpriteandAnimatedSpritedepending on the Atlas by @AllUniversal in #982 - Stake
loc_varsby @HuyTheKiller in #1082 - Add Poker Hand
keyto G.GAME.hands by @nh6574 in #1099 - Show the Cat during loading by @TheOneGoofAli in #1059
- add a more robust way to upgrade base hand score by @MetaNite64 in #994
- Fix crash on unlocking any vanilla item by @wingedcatgirl in #1102
- consistently define "added_to_deck" for playing cards by @vitellaryjr in #1106
- Fix Card:load by @ellestuff in #1116
- Fix a memory leak that occurs when quickly switching menus/tabs that contain text inputs by @VivianGiacobbi in #1120
- Address all unnecessary
update_hand_textcalls by @HuyTheKiller in #1111 - Add extra easings for "ease" event type by @Mysthaps in #1110
- Add missing stake
loc_varspatches and overrides by @HuyTheKiller in #1123 - Add disable_if_empty to SMODS.Rarity by @factwixard in #1101
- Automatic Achievement ordering in Mod Collection by @Aikoyori in #1128
- Minor pseudorandom_element LSP fix by @nh6574 in #1130
- Ensure object is non-nil in SMODS.get_card_areas by @mleaf233 in #1127
New Contributors
- @PixVoxel made their first contribution in #1040
- @InvalidOS made their first contribution in #1067
- @TheOneGoofAli made their first contribution in #1059
- @ellestuff made their first contribution in #1116
- @factwixard made their first contribution in #1101
- @mleaf233 made their first contribution in #1127
Full Changelog: 1.0.0-beta-1016c...1.0.0-beta-1221a
1.0.0-beta-1016c
This release mostly contains various slight bug fixes. For a complete list, you can review the commit messages since the last release. Some notable inclusions are:
context.ante_endfixed whenease_anteis hooked- added
SMODS.DynaTextEffect- docs to follow, aiko is a dynatext wizard - added
SMODS.update_context_flagsfunction to be used in response to some calculation contexts - added
SMODS.poll_editionfunction to wrap the default poll function to allow similar usage toSMODS.poll_sealandSMODS.poll_enhancement select_cardproperty is now able to be added to individualCenterobjects andConsumableTypes, and can be defined as a function.select_button_textcan also be defined on an object as a function returning a localized string, or as a string which is a localization key, to control the text that appears on the button.SMODS.Scoring_Parameternow has ajuice_on_updateflag set totruewhich controls whether the display of it uses juice_up when it updates- added
SMODS.is_challenge_unlockedfunction
What's Changed
- Add SMODS.DynaTextEffect for custom DynaText manipulations by @Aikoyori in #917
- Fixed infinite "Getter" context loops by @AllUniversal in #945
- make destroy_cards not crash when passed an empty table by @cg-223 in #948
- Added
SMODS.update_context_flags(context, flags)function by @AllUniversal in #875 - Ante and setting ability contexts lsp definitions by @nh6574 in #955
- Fixed incorrect hand size when reloading with
negativeplaying cards in hand by @AllUniversal in #966 - Fix
SMODS.add_to_poolbeing ignored by @nh6574 in #927 - Small tweak and expansion to Operator API by @HuyTheKiller in #943
- Update zh_CN.lua by @HONE13 in #857
- Update to the italian localization by @alexxyo3 in #988
- Card.selectable_from_pack null check by @blamperer in #997
- Fix orphaned info_queue Dynatext appearing in the top left of the screen for a frame by @nh6574 in #1009
- Fix challenge unlock counter by @wingedcatgirl in #996
- Expanded select_card arg by @the-Astra in #892
- feat: add custom draw functions for dynatexteffect by @Aikoyori in #995
New Contributors
- @HONE13 made their first contribution in #857
- @alexxyo3 made their first contribution in #988
- @blamperer made their first contribution in #997
Full Changelog: 1.0.0-beta-0827c...1.0.0-beta-1016b
1.0.0-beta-0827c
For detailed information on what this release adds, please see this discussion:
Click to see discussion post
What's Changed
- Add basic safety checks to
e.config.pageaccess andLAST_SELECTED_MOD_TABassignment by @Breezebuilder in #823 - Fix authors marquee max width by @lord-ruby in #825
- Support animated Mod Icons by @lord-ruby in #819
- Added context.change_suit and context.change_rank by @bepisfever in #813
CalcContextLSP update by @nh6574 in #843- Prevent calculate_context from being called outside of a run (Closes #849) by @nh6574 in #850
- Add scale_card functionality for scaling detection and modification. by @lord-ruby in #861
- Added SMODS.JimboQuip by @Kekulism in #745
- Function support for Challenge Banned Cards by @VivianGiacobbi in #799
- Fix smart_level_up_hand() not properly updating hand text for hands with face-down cards by @JustOsquo in #800
- Add context.money_altered (and G.STATES.SMODS_REDEEM_VOUCHER) by @JustOsquo in #804
- Miscellaneous LSP updates by @nh6574 in #856
- Remove padding from base node of dynamic tab by @gfreitash in #806
- Better handling of
trueinSMODS.merge_effectsby @nh6574 in #811 - Added perma_repetitions to perma_bonus.toml by @AllUniversal in #820
- Fix vanilla JimboQuip registering by @nh6574 in #862
- Added no_mod arg to probability functions by @the-Astra in #816
- ConsumableType: change primary/secondary color to text/bg color by @MetaNite64 in #833
- LSP Updates for 0808a by @nh6574 in #863
JimboQuipchanges by @nh6574 in #864- Fixed Campfire "Upgrade" attention text when selling it. by @AllUniversal in #868
- Negative playing cards draw fix by @AllUniversal in #854
- Fixed Card:set_base regression with manual sprites by @VivianGiacobbi in #869
- Use Card:should_hide_front() in DrawStep code by @the-Astra in #870
- info_queue's stylized name + multi lines name support by @bepisfever in #839
- Added probability numerator/denominator handling to other cardarea types by @VivianGiacobbi in #845
- Add G.GAME.modifiers.booster_choice_mod by @JustOsquo in #814
SMODS.is_in_pool()by @nh6574 in #828- Challenge
applyandcalculateby @nh6574 in #846 - Global mod
calculateby @nh6574 in #847 - Stake
calculateby @nh6574 in #859 - Added a "hand_type" argument to SMODS.four_fingers() by @VivianGiacobbi in #874
- Mods menu restarts after changes when pressing esc (Fixes #616) by @nh6574 in #848
allow_duplicatesinSMODS.create_cardby @nh6574 in #855- Update
es_419.luaandes_ES.luaby @nh6574 in #815 - Use
SMODS.shattersin localrandom_destroyby @HuyTheKiller in #881 - New ante-related contexts by @the-Astra in #878
- Chip-Mult Operator API by @balt-dev in #809
- Add deck loading when reloading a run by @nh6574 in #872
- Fix modded booster
select_cardsoftlock by @VivianGiacobbi in #841 blind.effectby @nh6574 in #873- Added
Card:is_rarity()function toutils.luaby @AllUniversal in #885 - Custom hidden achievement names by @Gloompashcy in #842
- Added
SMODS.context_stackby @AllUniversal in #877 - setting_ability Context by @the-Astra in #886
- fix edition card limit crash in collection by @real-niacat in #896
- Fixed
delay_editioninCard:set_edition()not working if removing Editions by @AllUniversal in #897
New Contributors
- @Breezebuilder made their first contribution in #823
- @lord-ruby made their first contribution in #825
- @bepisfever made their first contribution in #813
- @gfreitash made their first contribution in #806
- @AllUniversal made their first contribution in #820
- @MetaNite64 made their first contribution in #833
- @balt-dev made their first contribution in #809
- @real-niacat made their first contribution in #896
Full Changelog: 1.0.0-beta-0711a...1.0.0-beta-0820a