杀戮尖塔 2 原生模组 Shun's Slay the Spire 2 Mod — Native
| 模块 | 文件夹 | 说明 |
|---|---|---|
ShunMod_Core |
Mods/ShunMod_Core/ |
共享基础框架(必需) |
ShunMod_Shun |
Mods/ShunMod_Shun/ |
舜角色内容(卡牌/遗物/事件) |
ShunMod_Tweaks |
Mods/ShunMod_Tweaks/ |
数值/机制修改 |
ShunMod_Compat |
Mods/ShunMod_Compat/ |
第三方模组兼容补丁 |
| 名称 | 费用 | 稀有度 | 类型 | 效果 |
|---|---|---|---|---|
| 超级神化 | 2→1 | 稀有·无色 | 技能 | 升级战斗中所有卡牌,同时升级牌组中所有可升级卡牌。 |
| 名称 | 稀有度 | 效果 |
|---|---|---|
| 🏆 首领奖杯 | 稀有 | 击杀 Boss 后最大生命值 +25%。 |
| 🌿 丰饶叶 | 稀有 | 每个回合开始时,用随机药水填满所有空药水栏位。 |
| 💪 无限壶铃 | 稀有 | 在休息处可无限次锻炼,每次锻炼后战斗开始时多获得 1 点力量。 |
| ♾️ 生生不息 | 稀有 | 右键点击触发,消耗任意张手牌,每张生成随机升级卡(全职业)加入手牌且首次免费,回等量能量。 |
| 名称 | 模块 | 说明 |
|---|---|---|
| ♾️ 无限升级 | Tweaks | 卡牌可无限次升级。 |
| 🛠️ 硬化外壳修复 | Tweaks | 修正硬化外壳能力的减伤数值。 |
| 🛡️ 格挡保留 | Tweaks | 格挡永不归零。 |
| 💥 显示总伤害 | Tweaks | 多段卡/X卡在卡牌描述末尾显示总伤害(单段伤害 × 段数)。 |
| ⚔️ 锻造拉回 | Tweaks | 所有锻造行为自动将非手牌的君王之剑拉回手牌。 |
| ⚡ 能量保留 | Tweaks | 回合开始时能量不清零,剩余能量累积(冰激凌逻辑)。 |
| 🔓 附魔限制解除 | Tweaks | 运行时扫描所有附魔子类,自动解除 CanEnchant / CanEnchantCardType 限制,任意卡牌可接受任意附魔。 |
| 🖱️ 遗物右键交互 | Shun | 为 ShunMod 遗物添加右键点击支持(GuiInput 信号)。 |
| ✨ 休息处附魔 | Shun | 休息处增加「附魔」选项,随机选一种附魔施加到牌组中的一张牌上。 |
| 名称 | 模块 | 说明 |
|---|---|---|
| 🔮 影之诗进化不消耗+回合解除 | Compat | 进化不消耗进化点(TryUseEvolutionPoint 跳过原方法),初始 1 点启动。回合限制一并解除,每回合可多次进化。纯反射,无依赖。 |
| 🎨 影之诗皮肤限制解除 | Compat | 影之诗模组皮肤启用数从 14→无限,Patch SkinPackManager.SetEnabled。纯反射,无依赖。 |
| 🖼️ 影之诗背景包限制解除 | Compat | 影之诗模组背景包启用数从 7→无限,Patch BgPackManager。纯反射,无依赖。 |
| 📚 附魔叠加上限解除 | Compat | 解除 MoreEnchantmentsMod 单卡附魔叠加上限(CanApply 跳过上限检查)。 |
| 📚 附魔已满拦截解除 | Compat | 解除 MoreEnchantmentsMod 附魔界面 UI 层上限检查,上限后仍可继续附魔。 |
| ⏳ 凝固时间符文修改 | Compat | 海克斯模组 SolidTimeRune:打出能力卡时移除牌组中对应卡(取消 pile.Type == 6 限制),战斗开始时触发所有被移除牌效果。 |
当前无自定义事件。后续添加事件只需继承
EventModel+ 标记[EventPool]。
下载 Release 中的 STS2_ShunMod.zip,解压到 Slay the Spire 2 的 Mods/ 目录,得到 4 个模块文件夹:
Mods/
├── ShunMod_Core/ # 必需
├── ShunMod_Shun/ # 舜角色内容
├── ShunMod_Tweaks/ # 数值修改(可选,部分功能依赖 Core)
└── ShunMod_Compat/ # 兼容补丁(可选,无 Shadowverse 模组不生效)
也可以单独下载各模块的独立 zip 按需部署。
STS2-ShunMod/
├── STS2_ShunMod.sln # 4 项目 Solution
│
├── ShunMod.Core/ # 共享基础框架
│ ├── ShunMod.Core.csproj # AssemblyName: ShunMod_Core
│ ├── ShunMod_Core.json # 独立模组清单
│ ├── ModEntry.cs # Harmony.PatchAll(保留入口)
│ └── Core/
│ ├── Base/
│ │ ├── ShunCard.cs # 卡牌肖像工具(静态泛型 helper)
│ │ └── ShunRelic.cs # 遗物路径工具(静态泛型 helper)
│ ├── Helpers/
│ │ ├── ShunModHelper.cs # 资源路径工具
│ │ └── CreatureReflection.cs # Creature 反射工具(Block/IsPlayer)
│ ├── Registry/
│ │ ├── ContentRegistry.cs # 扫描 + 注册(回调解耦)
│ │ └── PoolAttribute.cs # [CardPool]/[RelicPool] 特性
│ └── CompatibilityPatchUtil.cs # 兼容补丁共享工具(类型查找/单例发现)
│
├── ShunMod.Shun/ # 舜角色内容
│ ├── ShunMod.Shun.csproj # AssemblyName: ShunMod_Shun → 引用 Core
│ ├── ShunMod_Shun.json # 模组清单,依赖 ShunMod_Core
│ ├── ModEntry.cs # Harmony.PatchAll + ContentRegistry
│ ├── Cards/
│ │ ├── ShunModStokeModified.cs # 添柴·改
│ │ └── ShunModSuperApotheosis.cs # 超级神化
│ ├── Relics/
│ │ ├── ShunModBossTrophy.cs # 首领奖杯
│ ├── ShunModBountifulFrond.cs # 丰饶叶
│ ├── ShunModEndlessLife.cs # 生生不息
│ └── ShunModInfiniteGirya.cs # 无限壶铃
│ ├── RestSite/
│ │ ├── EnchantRestSiteOption.cs # 休息处附魔选项
│ │ └── EnchantRestSitePatch.cs # 注入 Generate 方法
│ └── Events/
│ └── (框架预留)
│
├── ShunMod.Tweaks/ # 数值/机制修改
│ ├── ShunMod.Tweaks.csproj # AssemblyName: ShunMod_Tweaks → 引用 Core
│ ├── ShunMod_Tweaks.json # 模组清单,依赖 ShunMod_Core
│ ├── ModEntry.cs # Harmony.PatchAll
│ └── Patches/
│ ├── Combat/
│ │ ├── BlockRetentionPatch.cs # 格挡保留
│ │ ├── EnergyRetentionPatch.cs # 能量保留(冰激凌)
│ │ ├── ForgePullBladesToHandPatch.cs # 锻造拉回君王之剑
│ │ ├── HardenedShellPatch.cs # 硬化外壳修复
│ │ └── ShowTotalDamage.cs # 显示总伤害
│ ├── Cards/
│ │ ├── EternalRemovalPatch.cs # 永恒卡牌移除/变化限制解除
│ │ └── InfiniteUpgrade.cs # 无限升级
│ └── Enchantments/
│ └── EnchantRestrictionRemover.cs # 运行时扫描所有附魔子类,自动解除限制
│
├── ShunMod.Compat/ # 兼容性补丁
│ ├── ShunMod.Compat.csproj # AssemblyName: ShunMod_Compat → 引用 Core
│ ├── ShunMod_Compat.json # 模组清单,依赖 ShunMod_Core
│ ├── ModEntry.cs # Harmony.PatchAll + CompatibilityPatches
│ └── Patches/Compatibility/
│ ├── CompatibilityPatches.cs # 统一入口
│ ├── Shadowverse/
│ │ ├── ShadowverseEvolutionPointPatch.cs # 影之诗进化点解除
│ │ ├── ShadowverseSkinLimitPatch.cs # 影之诗皮肤限制解除
│ │ └── ShadowverseBgLimitPatch.cs # 影之诗背景包限制解除
│ ├── MoreEnchantments/
│ │ ├── MoreEnchantStackPatch.cs # 附魔叠加上限解除
│ │ └── MoreEnchantPayCheckPatch.cs # 附魔已满拦截解除
│ └── Hextech/
│ └── SolidTimeRunePatch.cs # 凝固时间符文 pile.Type == 6 限制解除
│
│ └── assets/ # Godot 资源(图片/本地化)
│ ├── images/ # 卡牌/遗物/事件美术
│ └── localization/ # 中英双语本地化
├── project.godot # Godot 4.5 项目
├── Sts2PathDiscovery.props # 路径发现配置
└── .github/workflows/ # CI/CD
继承 CardModel,加 [CardPool] 特性即可自动注册:
[CardPool(typeof(ColorlessCardPool))]
public class MyCard : CardModel
{
public MyCard()
: base(1, CardType.Attack, CardRarity.Common, TargetType.Enemy)
{
}
public override string PortraitPath => ShunCard.PortraitPath<MyCard>();
protected override async Task OnPlay(PlayerChoiceContext choiceContext, CardPlay cardPlay)
{
// 卡牌效果
}
}ShunMod.Shun/ModEntry.cs 中的 ContentRegistry.RegisterAll() 在启动时扫描所有 [CardPool] / [RelicPool] 类并注册到对应池。
卡牌、遗物分别对应
[CardPool]、[RelicPool]特性,路径工具类ShunCard/ShunRelic自动生成资源路径。
写入对应模块的 Patches/ 目录即可:
namespace ShunMod.Tweaks.Combat; // 或 ShunMod.Compat
[HarmonyPatch(typeof(TargetClass), nameof(TargetClass.MethodName))]
public static class MyPatch
{
static void Postfix(ref int __result) => __result = 42;
}各模块的 ModEntry.Initialize() 中 _harmony.PatchAll() 自动应用。
在 CompatibilityPatches.ApplyAll() 中追加调用:
internal static class CompatibilityPatches
{
public static void ApplyAll(Harmony harmony)
{
// ── 在此追加新的兼容补丁 ──
MyNewPatch.Apply(harmony);
}
}- .NET 9.0 SDK
- 已安装 Slay the Spire 2
# 编辑 Sts2PathDiscovery.props,设置 Sts2Path 指向 STS2 安装目录
dotnet build STS2_ShunMod.sln产物输出到 .godot/mono/temp/bin/Release/,每个模块独立 dll:
ShunMod_Core.dllShunMod_Shun.dll+ShunMod_Shun.pck(PckPacker 自动打包)ShunMod_Tweaks.dllShunMod_Compat.dll
dotnet build ShunMod.Shun/ShunMod.Shun.csproj -c Release- 游戏引擎 Godot 4.5 (.NET)
- 目标框架 .NET 9.0
- Mod 框架 Harmony(运行时 IL 补丁)
- 打包 BSchneppe.StS2.PckPacker(仅 Shun 模块)
- CI/CD GitHub Actions
MIT
yehuoshun 和卷王龙虾,干就完了 🦞