Releases: Steamodded/smods
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
1.0.0-beta-0711a
Main Notes
- Added SMODS probability functions
- Poker Hands
visibleproperty adjustments - Animation adjustments
- certificate/marble
- card juicing on conditional upgrades
- level not updating when levelling up a different hand
- Discard effects on debuffed cards fixed
- Blueprint effects no longer copy debuffed jokers
- Blind debuff text can now be updated after it has been created
- Added
context.initial_scoring_step - Added
context.joker_type_destroyed - Added
context.evaluate_poker_hand - Added
context.check_eternal - Added
SMODS.is_eternal - Added
Card:should_hide_front - Added
context.beat_bosstocontext.end_of_roundto signify if a boss was defeated
Probability Changes
Probability has had it's functionality changed to allow for more granular control of it, and to allow for effects to happen based on probability rolls. Unfortunately, this requires updating older mods to be able to function properly with the new changes. There are two steps to do this.
Updating Probability Chances
Step 1 - Replace your loc_vars
Any item descriptions that contain a chance roll should be updated to use the new functionality. If your code looked like this before,
return {vars = {numerator, denominator, other_value}}then it should be changed to
local new_numerator, new_denominator = SMODS.get_probability_vars(card, numerator, demoninator, 'identifier') -- it is suggested to use an identifier so that effects that modify probabilities can target specific values
return {vars = {new_numerator, new_denominator, other_value}}This will allow your item description to dynamically update based on probability altering effects.
Step 2 - Replace your probability checks
The probability check will also need to be adjusted. If your code look like this before,
if pseudorandom('seed') < G.GAME.probabilities.normal * numerator / denominator thenthen it should be changed to
if SMODS.pseudorandom_probability(card, 'seed', numerator, denominator, 'identifier') thenThis will allow your random chance effect to be based on probability altering effects.
Modifying Probability
It is now possible to modify probability in two ways. By using new calculation contexts, you can modify both the numerator and denominator of a chance based effect, with respect to joker order, or you can set it to a fixed value. Both of these new contexts have context.numerator and context.denominator which are the current values of the numerator and denominator, taking into account modifications from previous jokers. They also have context.trigger_obj and context.identifier which can be used to identify the source of the chance roll.
fix_probability = true, from_roll = from_roll, trigger_obj = trigger_obj, identifier = identifier, numerator = additive.numerator or base_numerator, denominator = additive.denominator or base_denominator
context.mod_probability
This context should be used for any additive or multiplicative modifications to the probability.
if context.mod_probability thencontext.numerator -- current numerator
context.denominator -- current denominator
context.mod_probability -- boolean value to flag this context, always TRUE
context.trigger_obj -- the object that the roll comes from (note: The Wheel blind switches between the blind object and the blind prototype object)
context.identifier -- a string value to identify the source of the roll
context.from_roll -- internal value used to only trigger certain return values when the roll is made rather than a tooltip updateFor example, Oops All 6s! would use this check:
if context.mod_probability and not context.blueprint then
return {
numerator = context.numerator * 2
}
endcontext.fix_probability
This context should be used for setting either the numerator or the denominator.
if context.fix_probability thencontext.numerator -- current numerator
context.denominator -- current denominator
context.fix_probability -- boolean value to flag this context, always TRUE
context.trigger_obj -- the object that the roll comes from (note: The Wheel blind switches between the blind object and the blind prototype object)
context.identifier -- a string value to identify the source of the roll
context.from_roll -- internal value used to only trigger certain return values when the roll is made rather than a tooltip updateFor example, a joker that sets every chance based effect to a 1 in 2 would use this check:
if context.fix_probability and not context.blueprint then
return {
numerator = 1,
denominator = 2
}
endResponding to probability rolls
It is also possible to trigger effects based on the outcomes of probability rolls, using another new context.
Some return values may appear misordered here. Please report any such occurances then we can continue to improve SMODS.
context.pseudorandom_result
This context should be used for setting either the numerator or the denominator.
if context.pseudorandom_result thencontext.pseudorandom_result -- boolean value to flag this context, always TRUE
context.result -- the result of the chance roll
context.numerator -- the numerator used for the chance
context.denominator -- the denominator used for the chance
context.trigger_obj -- the object that the roll comes from (note: The Wheel blind switches between the blind object and the blind prototype object)
context.identifier -- a string value to identify the source of the rollFor example, a joker that triggers a message when a chance roll fails would look like this:
if context.pseudorandom_result and not context.result then
return {
message = 'Chance failed!'
}
endOther Changes
New Contexts
context.initial_scoring_step
This context is used for scoring effects that happen before playing cards are scored.
Note: This happens after context.before
if context.initial_scoring_step thencontext.cardarea, context.full_hand, context.scoring_hand, context.scoring_name, context.poker_hands,
context.initial_scoring_step -- boolean value to flag this context, always TRUEcontext.joker_type_destroyed
This context is used when a non-playing card is destroyed.
if context.joker_type_destroyed thencontext.joker_type_destroyed -- boolean value to flag this context, always TRUE
context.card -- the card object that has been destroyedNote
You can return no_destroy = true within this context to block the destruction event.
context.evaluate_poker_hand
This context is used to make modifications to the evaluation of poker hands, or to display custom hand names.
if context.evaluate_poker_hand thencontext.evaluate_poker_hand
context.cardarea, context.full_hand, context.scoring_hand, context.scoring_name, context.poker_hands
context.evaluate_poker_hand -- boolean value to flag this context, always TRUE
context.display_name -- the current text that is displayedValid return values to make modifications within this context are:
replace_scoring_name = "Hand Type"used to change which poker hand is used to scorereplace_display_name = "String"used to change the displayed text (also accepts a loc_key for a string stored in thepoker_handsloc_table)replace_poker_hands = tableused to modify the poker hands table (this is fairly advanced and should only be used if you know what you are doing)
context.check_eternal
This context is used to apply the eternal effect without the sticker being applied.
if context.check_eternal thencontext.check_eternal -- boolean value to flag this context, always TRUE
context.other_card -- the card object that is being checked
context.trigger -- the source of the check (this is an empty table if it has not been provided)Note
You can return no_destroy = true within this context to add the eternal effect to a card. Returning no_destroy = {override_compat = true} will apply the effect to cards that are marked as eternal_compat = false.
New Functions
SMODS.is_eternal(card, trigger)
This function is used for checking whether a card object has an eternal property, provided either through the Eternal sticker, or other means.
card- the card that is being checkedtrigger- generally should be a reference to the object that is doing the check. If the check is being done by a general function, it is recommended to supply an identifying table such as{destroying_cards = true}
Card:should_hide_front()
This function checks whether a card object should display the front sprite or not. Currently only checks for Stone cards and cards with overrides_base_rank = true defined on the Center, but can be hooked to provide additional functionality as required.
SMODS.is_poker_hand_visible(handname)
This function checks whether a poker hand is visible in the poker hands menu.
handname- string of poker hand name
What's Changed
- Fix DeckSkin Credit UI breaking modded languages by @HuyTheKiller in #751
- Fix
smart_level_upnot updating level in scoring by @nh6574 in #755 - Dedicated functions for listed probabilities by @TamerSoup625 in #661
- Better calc individual juice fix (Issue #711) by @Gloompashcy in #737
- SMODS.PokerHand function to control visibility by @nh6574 in #764
- Blind debuff text can now update if provided a new message by @VivianGiacobbi in htt...
1.0.0-beta-0614a
What's Changed
- Allow modded editions to spawn naturally on playing cards in shop by @nh6574 in #718
SMODS.showman()function to apply showman-esque effects by @nh6574 in #717get_current_poolproperly supports editions by @nh6574 in #719- (Better) Playing card support for
SMODS.create_cardby @nh6574 in #720- Adds support for
"Playing Card", "Base", "Enhanced"as options forsetPlaying Card-> respects base enhancement chanceBase-> always spawns an unenhanced cardEnhanced-> always spawns an enhanced card
- Adds support for
- Multiline name support and scaling fix by @nh6574 in #723
namefields now accept a table of strings
- context.round_eval by @nh6574 in #726
- Add lookup table of ObjectTypes to each center by @nh6574 in #735
- Add util function,
SMODS.merge_effects, for merging calculate return tables by @nh6574 in #736 - Allow
pseudorandom_elementto take strings for seeds by @nh6574 in #741 - Fix
SMODS.Gradientcrashing inattention_textby @nh6574 in #753
Full Changelog: 1.0.0-beta-0530b...1.0.0-beta-0614a
1.0.0 beta (0530b)
What's Changed
- fix crash when
context.other_card.can_calculateisnilby @nnmrts in #708 - Deck Preview Pages by @RattlingSnow353 in #582
- Hand limit API by @Eremel in #626
- Add in_scoring field to modify_scoring_hand context by @nh6574 in #629
- Unlock deck popup now includes unlock description by @jumbocarrot0 in #666
- Challenge button colour by @nh6574 in #671
- Add context.hand_space by @nh6574 in #675
- Add text styling to poker hand tips by @nh6574 in #712
- SMODS.Font & Change Font in Item Name & Description by @Aikoyori in #684
- Mod UI config by @nh6574 in #673
- Fix copy_card back sprite bug by @nh6574 in #716
- Add glass_trigger to Glass Cards destroyed by their own effect by @nh6574 in #713
- DeckSkin Card UI (Crediting) by @Kekulism in #659
- Add enhancements to poker hand tooltips by @nh6574 in #672
- More robust card destruction during calculations and
SMODS.destroy_cardsadded by @Eremel in 3fd48a2 - Various bug fixes
New Contributors
- @RattlingSnow353 made their first contribution in #582
- @jumbocarrot0 made their first contribution in #666
Full Changelog: 1.0.0-beta-0509c...1.0.0-beta-0530b
1.0.0 beta (0509c)
What's Changed
- Excluded no-collection jokers from profile joker sticker progress by @VivianGiacobbi in #685
- Add enhancements to poker hand tips by @nh6574 in #672
- fix
restart_gamereferencing wrong path by @nnmrts in #687
New Contributors
- @VivianGiacobbi made their first contribution in #685
- @nnmrts made their first contribution in #687
Full Changelog: 1.0.0-beta-0506a...1.0.0-beta-0509c
1.0.0 beta (0506a)
What's Changed
- Added
SMODS.shallow_copy(d4e60d2) - Added
balancecalculation return (16c175f) - Added support for
no_collectionfield on ConsumableTypes (ade0726) - setting playing cards to negative only draws cards during blind by @vitellaryjr in #581
- Swap card <-> blueprint_card in blueprint_effect function by @larswijn in #580
- Fix to crash upon loading a new profile by @bobjoe400 in #610
- Fix crash when area.cards is nil in SMODS.find_card by @its-edalo in #605
- Fixed card_limit cards not being buyable at full room by @a-memer in #634
- Add rotation/offset support for shiny stickers in SMODS.DrawStep by @larswijn in #646
- fix crash without wins_by_key by @Mysthaps in #617
- More Explicit Asserts by @GauntletGames-2086 in #636
- Better catch for non-vanilla scaling factors by @wingedcatgirl in #653
- Fix deck preview not using suit icon by @Aikoyori in #681
- Update es_ES and es_419 localizations by @nh6574 in #676
- Update zh_CN.lua by @ayssia in #663
- Russian localization by @EnderDrag0n in #655
- Italian localization by @DZAladan in #624
- Blue Seal crash fix by @SageJFox in #604
New Contributors
- @bobjoe400 made their first contribution in #610
- @its-edalo made their first contribution in #605
- @a-memer made their first contribution in #634
- @wingedcatgirl made their first contribution in #653
- @Aikoyori made their first contribution in #681
- @ayssia made their first contribution in #663
- @EnderDrag0n made their first contribution in #655
- @DZAladan made their first contribution in #624
- @SageJFox made their first contribution in #604
How to install
Please head here for install instructions and a lot more useful documentation pages.
Issues, Suggestions, Contributions and more
Create a pull request, open an issue or find us on Discord if you'd like to get in touch.
Full Changelog: 1.0.0-beta-0323b...1.0.0-beta-0506a
1.0.0 beta (0323b)
What's Changed
- Fix consumable career stats not progressing
- Fix no_retrigger functionality
- Revert a change to SMODS.calculate_destroying_cards to fix a bug related to glass cards by @dunghmm in #541
- Add context for adding cards to the deck by @VictinZero in #560
- Fix all other mult granting enhancements that aren't just Mult Card by @baliame in #556
- Initialize prev table on register by @random-facades in #552
- Added an argument to the debug console that controls the font scaling. by @jlwoolf in #551
- Better calc 2.3 by @Aurelius7309 in #548
- Add empty card area to deck viewer to fix visual issue with 0 cards left by @stupxd in #540
- add discovery overrides to SMODS.create_card by @vitellaryjr in #545
- Fix: wraparound shortcut
- fix deprecated gradient warn crash by @vitellaryjr in #571
- Add Korean localization by @voidumbrella in #570
- Smeared Joker and Seeing Double bug fix with Modded Suits by @Kekulism in #563
- Implement enhancement cache by @Aurelius7309 in #412
- Add Alt+F5 Keybind for restarting
- Fix incorrect scored cards in blind/deck calculation and message positioning for observatory
- add gradients to LOC_COLOURS by @vitellaryjr in #574
- Fix: retriggers don't apply in context.selling_self
New Contributors
- @dunghmm made their first contribution in #541
- @jlwoolf made their first contribution in #551
- @vitellaryjr made their first contribution in #545
- @voidumbrella made their first contribution in #570
How to install
Please head here for install instructions and a lot more useful documentation pages.
Issues, Suggestions, Contributions and more
Create a pull request, open an issue or find us on Discord if you'd like to get in touch.
Full Changelog: 1.0.0-beta-0312b...1.0.0-beta-0323b