Skip to content

Releases: BAKAOLC/STS2-RitsuLib

Development build (dev)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Aug 18:10
1f3bee4

This is an automated development build from branch dev.

  • Development Version: 9999.0.0-dev.30760401573+1f3bee4a (independent from stable release versions)

  • Current Stable Line in repo: 0.5.4

  • Purpose: quick testing and integration validation.

  • Stability: may change frequently and can include breaking changes.

  • Install target: developers/testers only.

  • Repository: BAKAOLC/STS2-RitsuLib

  • Commit: 1f3bee4a

  • Workflow Run: #30760401573

0.5.4

Choose a tag to compare

@github-actions github-actions released this 01 Aug 15:35
v0.5.4
8b971a7
  • Added embedded placeholder artwork for cards based on ModCardTemplate when no main portrait is configured.
  • Fixed RitsuLib-owned network-message tails being skipped when the game inlined message serialization, including new-run data and multiplayer diagnostics.

  • 为未配置主卡图的 ModCardTemplate 卡牌添加了内嵌占位图。
  • 修复了游戏内联消息序列化时可能跳过 RitsuLib 消息尾的问题,涵盖新开局数据与多人游戏诊断信息。

Full Changelog: v0.5.3...v0.5.4

0.5.3

Choose a tag to compare

@github-actions github-actions released this 01 Aug 07:05
v0.5.3
5cb814c
  • Restored safe string-ID CardModel.AddModKeyword and HasModKeyword overloads that resolve only registered mod keywords.
  • Added a bounded, collision-safe API for registering and transporting versioned extensions in vanilla network-message tails.

  • 恢复了接受字符串 ID 的安全 CardModel.AddModKeywordHasModKeyword 重载,并限制为仅解析已注册的模组关键词。
  • 添加了有界且可检测冲突的 API,用于在原版网络消息尾中注册和传输版本化扩展。

Full Changelog: v0.5.2...v0.5.3

0.5.2

Choose a tag to compare

@github-actions github-actions released this 31 Jul 12:21
v0.5.2
27532d0
  • Fixed maximum-hand-size compatibility builds missing the async player-turn setup state machine, restoring first-turn innate-card hand-limit handling on game 0.107.1–0.109.0.
  • Fixed BaseLib-managed maximum-hand-size targets being incorrectly reported as missing RitsuLib IL coverage.
  • Fixed playable extra-hand cards bypassing the vanilla hand-play state machine and using invalid upper-hand drag thresholds, restoring consecutive play, targeting, and cancellation.
  • Fixed switching between extra-hand cards and vanilla numeric card shortcuts, and removed misleading numeric labels from extra-hand cards.
  • Fixed extra-hand cards rendering above card-selection layers.
  • Fixed extra-hand card entry animations that incorrectly used generic pile-flight visuals instead of vanilla hand-entry motion.

  • 修复了手牌上限兼容版本未补丁玩家回合初始化异步状态机的问题,恢复游戏 0.107.1–0.109.0 中首回合固有牌的动态手牌上限处理。
  • 修复了由 BaseLib 接管的手牌上限目标被错误报告为缺少 RitsuLib IL 覆盖的问题。
  • 修复了可打出的额外手牌绕过原版手牌出牌状态机并错误计算上方牌区拖拽阈值的问题,恢复连续出牌、目标选择及取消。
  • 修复了额外手牌与原版数字选牌快捷键之间的切换,并移除了额外手牌上误导性的数字标签。
  • 修复了额外手牌显示在选牌层之上的问题。
  • 修复了额外手牌入场动画错误使用通用牌堆飞行动画而非原版手牌入场动画的问题。

Full Changelog: v0.5.1...v0.5.2

0.5.1

Choose a tag to compare

@github-actions github-actions released this 31 Jul 07:19
v0.5.1
94e3d6b
  • Fixed developer-console autocomplete performance by indexing frozen registration ownership once and reusing localized-title catalogs throughout each completion; early empty title catalogs are refreshed after model initialization, and current game versions no longer calculate the same ghost-text completion twice.
  • Fixed custom-pile cards failing to move into the hand on game 0.110.0 by aligning NCard.FindOnTable override-pile routing with the updated game behavior.

  • 修复了开发者控制台自动补全的性能问题:冻结后的注册归属现在只建立一次索引,本地化标题目录会在每次补全过程中复用;初始化早期的空标题目录会在模型初始化后刷新,当前游戏版本也不会再为同一幽灵文本计算两次完整补全。
  • 对齐了游戏 0.110.0 更新后的 NCard.FindOnTable 覆盖牌堆路由,修复自定义牌堆中的卡牌无法移入手牌的问题。

Full Changelog: v0.5.0...v0.5.1

0.5.0

Choose a tag to compare

@github-actions github-actions released this 31 Jul 04:03
v0.5.0
d3c4492
  • Updated RitsuLib for game version 0.110.0 and added Sts2InputCompat, so controller and runtime-input integrations now use the current game API.
  • Consolidated source-compatible legacy constructors for card assets, custom piles, keywords, patch metadata, starter content, and color settings; equivalent calls now rebind without source changes after dependent mods are rebuilt.
  • Removed 43 deprecated declarations approved for cleanup, together with their lifecycle, card-hook, hand-outline, keyword, tag, template, settings, and hooked-singleton compatibility bridges; affected mods must migrate before rebuilding.
  • Corrected host-version and custom-framework detection, and changed uncertain detour overlaps to be reported as possibilities instead of confirmed conflicts.
  • Added native-value lookups for registered piles, tags, rewards, and keywords, and expanded CardKeyword helpers to retrieve definitions, localized text, card text, and hover tips through the game’s native paths.
  • Normalized keyword ownership and qualified IDs, and made incomplete card-tag initialization retryable instead of leaving partially registered data behind.
  • Fixed custom-pile and extra-hand lifecycles, including registration identity, layout validation, card-flight positions, interrupted transfers, persistent-card recovery, and combat top-bar refreshes.
  • Improved custom pile-view fallback behavior; failed clones now clean up incomplete controls, preserve a usable fallback, and produce stable diagnostics.
  • Fixed card-transform notifications and type-text composition; callbacks retain their intended order, and one faulty contributor no longer breaks the complete type line.
  • Strengthened card OnPlay hook validation, aligned enchantment previews with effective card state, prevented recursive dynamic-variable evaluation, and isolated faulty hover-tip and hand-highlight providers.
  • Corrected content-source names and ownership, rejected unusable pool entries before registration, made invalid asset overrides fall back cleanly, and isolated incidental type-discovery failures.
  • Fixed character-owned content by normalizing asset IDs, avoiding duplicate combat factories, refreshing fake-merchant visual ownership, and preserving nested character-selection policies.
  • Validated ancient relic upgrades and timeline layouts before registration, keeping epoch state, gated presentation, and relic visibility synchronized with actual results.
  • Fixed epoch and score-based unlock handling, including scoped bypasses and mid-run restrictions; incomplete combat checks are no longer treated as successful unlocks.
  • Prevented duplicate right-click power handlers while preserving failures from explicitly registered contributors.
  • Strengthened interop binding and attachment by validating reflected inputs, forwarding arguments correctly, keeping returned JSON nodes alive, cleaning up invalid nodes, and making primary registration order deterministic.
  • Made dynamic patch application idempotent and failed unpatch operations retryable, so lifecycle reporting reflects the patches that remain installed.
  • Corrected profile-switch context and queued visual transitions, and cleaned up partial objects when ancient-stage, deck-view, or scaffolding construction fails.
  • Fixed synchronized run-data handling; malformed payloads are rejected, valid payloads are consumed once, failed outbound scopes are cleaned up, and failed slot registrations roll back fully.
  • Corrected run-data, model-data, and interop persistence; migrations preserve envelopes and defaults, missing objects merge correctly, invalid RNG states stay rejected, and placeholders are limited to unavailable history.
  • Fixed custom reward and temporary-power validation; malformed rewards propagate correctly, missing card content is removed safely, and negative durations cannot destabilize dynamic values.
  • Fixed free-play, autoplay, and custom-targeting cleanup; failed plays clear their bindings and targeting state, restore controller navigation, and leave ordinary cards and BaseLib targets usable.
  • Stabilized hand-glow, orb, capability, and resource-listener dispatch; listener inputs and exposed collections stay protected, removed identities are cleaned up, and generated monster-move graphs are validated before use.
  • Strengthened adaptive music transitions; handles close safely, fade-out options are honored, failed switches preserve the active track, and incomplete replacements roll back.
  • Validated backend audio handles, parameters, paths, playback results, cooldowns, and manual scopes before dispatch, while retaining failed cleanup ownership for a diagnostic retry.
  • Added controllable music handles and typed replacement results, and corrected FMOD bus IDs, DSP settings, deferred registration, one-shot cleanup, playback ownership, and GUID synchronization.
  • Fixed streaming and virtual audio state, including verified atomic cache replacement, fully loaded resource requirements, concurrent loops, routing, round-robin selection, mapped run music, and deferred instance cleanup.
  • Added transfer-size limits throughout network framing and decompression; retries preserve valid partial data, stale timers cannot delete replacement state, and failed optional payloads emit an explicit empty marker.
  • Made network configuration and sidecar setup transactional and retryable. Routing now follows network-service changes, mismatched envelopes are rejected, and sidecar dispatch no longer blocks callers or reorders protocol work.
  • Corrected JSON Merge Patch, JSON Pointer, canonicalization, and JSON Patch behavior to follow RFC 7396, RFC 8785/JCS, and RFC 6902, including their Unicode, number, pointer, array, null, and cloning rules.
  • Fixed recursive deletion, Godot and filesystem root resolution, runtime utility registration, and persistence type discovery; failures now propagate while safe retries and best-effort cleanup remain available.
  • Prevented weighted-list total overflow from mutating the collection or desynchronizing TotalWeight.
  • Preserved Harmony IL labels and exception metadata, rejected unsafe empty replacements, released failed patch payloads, and retained generated transpilers and handles until their final owners release them.
  • Isolated Harmony payloads in collectible assemblies and PNG export sessions from one another, allowing released patches and failed exports to clean up without affecting later work.
  • Fixed developer-console autocomplete refresh, history navigation, and provider isolation; late registrations now appear immediately, and one mutable or failing provider cannot corrupt the active request.
  • Corrected self-check results and artifact reporting, stopped bundle creation when redaction fails, stopped IL analysis at malformed operands, and made startup mod-inventory logging retryable.
  • Strengthened telemetry configuration, consent, identity persistence, initialization, startup capture, applicant storage, and queued delivery; partial setup rolls back, and failed persistence retains retryable state.
  • Corrected update-service ownership and framework initialization, allowing schedulers, enabled checks, service registration, lifecycle setup, and auxiliary Godot services to retry without losing valid state or applied patches.
  • Improved logging and multiplayer join diagnostics; logs preserve ordering and complete failures, the viewer limits HTTP resource use, and join reports include both peers’ gameplay mods.
  • Isolated data migrations by storage slot and rejected invalid slot names before they can mutate storage.
  • Fixed Godot runtime factories, node attachment, and frame waiting; failed object creation cleans up safely and remains retryable, while frame waits now use the actual SceneTree.ProcessFrame signal and preserve cancellation.
  • Added dynamic localization for mod-defined card keywords and atomic localization-table replacement, and corrected virtual fallback selection, Ancient dialogue metadata, and late SmartFormat extension precedence.
  • Refined exception boundaries across results, localization, saves, and networking; cancellation, interruption, corrupted-state, and resource-exhaustion failures now propagate while ordinary optional fallbacks remain available.
  • Made settings-store initialization retryable and validated callbacks, contexts, text fallbacks, navigation locations, ordering, clipboard operations, slider ranges, layout dimensions, and dynamic options before changing state.
  • Applied consistent recovery to settings bindings and adapters; failed saves remain pending for autosave retry, listeners are isolated, unexpected conversion failures propagate, and unadapted lists are deep-cloned.
  • Strengthened settings clipboard handling; invalid envelopes, identities, and numbers are rejected, while custom copy and paste handlers can no longer leak state between extensions.
  • Stabilized settings interface callbacks; invalid colors and dimensions are rejected, and menus, modals, editors, subscriptions, and theme watchers restore their own focus or state after failures.
  • Recovered loadable types from partially invalid assemblies during reflected settings discovery, while keeping provider, assembly, metadata, dynamic-text, and loader failures identifiable without repeated stack traces.
  • Normalized hotkey parsing and rebinding, rejecting empty, repeated, or ambiguous tokens while keeping left and right modifiers distinct.
  • Added a controller-input compatibility layer and deterministic Steam Input action IDs; removed pressed actions now emit releases, and a failed optional backend disables itself instead of retrying every frame.
  • Fixed top-bar registration identity, click validation, open-state animation, ordering, combat-scoped pile rebinding, and clone fallbacks, preventing stale counts and bindings while preserving failures for the owning mod.
  • Preserved Capstone screen transitions by allowing the normal replacement flow to complete instead of closing the existing scr...
Read more

0.4.66

Choose a tag to compare

@github-actions github-actions released this 28 Jul 07:14
v0.4.66
3d5a8fe
  • Fixed an issue where the secondary resource UI attempts to fetch incorrect data under certain scenarios.

  • 修复次级资源 UI 在部分场景下尝试获取错误的数据的问题

Full Changelog: v0.4.65...v0.4.66

0.4.65

Choose a tag to compare

@github-actions github-actions released this 28 Jul 02:32
v0.4.65
27df41f
  • Disabled the ability to modify values by scrolling the wheel on the settings menu slider to avoid accidental value changes.
  • Optimized the refresh logic of some UI to reduce the number of call interactions with the native layer.
  • Added support for content registration for trash heap events.
  • Refactored the execution logic and implementation of some right-click operations to ensure more rigorous data security and behavior consistency, and expanded the supported target types.
  • Extended and added some IL toolchains to support some special requirements.

  • 禁用了设置菜单滑条的滚轮滚动修改数值能力,以避免意外的数值修改
  • 优化了部分 UI 的刷新逻辑以减少原生层的调用交互次数
  • 增加了对垃圾堆事件的内容注册支持
  • 重构了部分右键操作的执行逻辑和实现以确保更严谨的数据安全性和行为一致性,并扩充了支持的目标类型
  • 扩展增加了部分 il 工具链以支持一些特殊需求

Full Changelog: v0.4.64...v0.4.65

0.4.64

Choose a tag to compare

@github-actions github-actions released this 24 Jul 14:02
v0.4.64
979718c
  • Adjusted the recognition and allocation logic for some auto-discovered attributes to better match design expectations.
  • Adjusted ComputedDynamicVar to be Context-based implementation, to support more flexible calculation logic and facilitate more extensions.
  • Added creation logic for numerous quick DynamicVars.

  • 调整部分自动发现 attribute 的识别和分配逻辑,以更符合设计预期
  • 调整 ComputedDynamicVar 为基于 Context 的实现,以支持更灵活的计算逻辑和便于做出更多扩展
  • 补充了大量快捷 DynamicVar 的创建逻辑

Full Changelog: v0.4.63...v0.4.64

0.4.63

Choose a tag to compare

@github-actions github-actions released this 24 Jul 11:10
v0.4.63
ada90c4
  • Adjusted the update check logic; it will now also execute on game startup errors, to allow the workshop to attempt automatic updates to a version that fixes the issue.
  • In version 0.107.1, added fallback for the vanilla InputMap to avoid continuous error log output caused by input mapping changes in the beta.
  • Followed up and supplemented system logic related to Card Type Text.
  • Extended the helper methods of HarmonyIl to provide simple raw IL inspection and call path lookup functionality.
  • Removed the old dual resource Free assumption logic, and added adaptation to the vanilla Free semantics supported by the Free parser logic that provides registered parsers.
  • Made the internal ModelHookListenerDispatcher class public to simplify the need for other Mods to use it for event dispatching.
  • Provided a registration method to allow defining additional model title parsers, to support correct parsing of title names for additional types defined by Mods.

  • 调整更新检查的逻辑,现在在游戏启动错误时也会执行,以允许 workshop 尝试自动更新为修复了问题的版本
  • 在 0.107.1 版本中,为原版的 InputMap 增加兜底,以避免因 beta 的输入映射变更而导致的游戏持续的输出错误日志
  • 跟进补充 Card Type Text 相关系统逻辑
  • 扩展 HarmonyIl 的辅助方法,提供简易的原始 IL 检查和调用路径查找功能
  • 删除了旧的双资源 Free 假定逻辑,新增了由提供注册解析器的 Free 解析器逻辑支持的对原版 Free 语义的适配
  • 公开了内部的 ModelHookListenerDispatcher 类,以简化其他 Mod 利用其进行事件分发的需求
  • 提供了一个注册方法允许定义额外的模型标题解析器,以支持 Mod 定义的额外类型能正确解析标题名称

Full Changelog: v0.4.62...v0.4.63