尿石

创作者: lamali
已更新:2026-06-09 02:55:29
3.3MB

关于此 MOD

将瀑布巨人替换为尿石,如霜之至尊所愿
抱歉,我未能看到您提供的文本内容。请将需要翻译的游戏文本粘贴在消息中,我将按照要求进行专业本地化翻译。





安装说明

此模组适用于公开测试分支。
(因为它在编辑新的背景))
(但可能适用于0.103.0版本,不确定)

前往《杀戮尖塔2》的Steam文件夹
适用于 Windows

C:\Program Files (x86)\Steam\steamapps\common\杀戮尖塔 2

或 Mac
/Users/<UserName>/Library/Application Support/Steam/steamapps/common/Slay the Spire 2/SlayTheSpire2.app/Contents/MacOS/
创建Mods文件夹
然后将压缩包解压到该目录下,效果应如图所示。
C:\Program Files (x86)\Steam\steamapps\common\杀戮尖塔2\
└── mods\
└── 尿石\
**尿液之石.dll**
├── PissRock.pck
└── 尿石.json
(PissRock文件夹为可选,dll、pck和json文件需解压至mods文件夹中的同一位置)












这是 DLL 里的完整代码。我可不想让雇主看到什么公开的“尿石” GitHub 仓库。笑死。
只是调整了瀑布巨人场景的一些颜色数值,因为我懒得手动替换整个场景,顺便还换了几个素材。
```gdscript
使用 Godot;
```
using HarmonyLib;
using MegaCrit.Sts2.Core.Modding;
using MegaCrit.Sts2.Core.Nodes.Rooms;
using MegaCrit.Sts2.Core.Rooms;

命名空间 PissRock.PissRockCode;

[模组初始化器(nameof(Initialize))]
``` partial class 尿石主文件 : 节点 ```
{
    ModId = "PissRock"; //目前仅用于日志和Harmony名称。

    public static MegaCrit.Sts2.Core.Logging.Logger Logger { get; } =
        new(ModId, MegaCrit.Sts2.Core.Logging.LogType.Generic);

    public static void Initialize()
    {
        和谐 和谐 = new(ModId);

        harmony.PatchAll();
    }
}

[HarmonyPatch(typeof(NCombatBackground), "SetLayers")]
static class NCombatBackgroundSetLayersHuePatch
{
    const string ShaderCode = @"
着色器类型:画布项;
uniform float 色相偏移值 = -0.36944;
vec3 rgb2hsv(vec3 c) { vec4 K = vec4(0.0, -1.0/3.0, 2.0/3.0, -1.0); vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); float d = q.x - min(q.w, q.y); float e = 1.0e-10; return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); }
vec3 hsv转rgb(vec3 颜色){vec4 K=vec4(1.0,2.0/3.0,1.0/3.0,3.0);vec3 p=abs(fract(颜色.xxx+K.xyz)*6.0-K.www);return 颜色.z*mix(K.xxx,clamp(p-K.xxx,0.0,1.0),颜色.y);}
void fragment(){ vec4 b = texture(TEXTURE, UV) * COLOR; vec3 h = rgb2hsv(b.rgb); h.x = fract(h.x + hue_shift); COLOR = vec4(hsv2rgb(h), b.a); }

    const float 色调偏移量 = -133f / 360f; // Godot 色调值为 0–1,非角度值
    static ShaderMaterial? _mat;

    [Harmony后缀]
    static void Postfix(NCombatBackground __instance, BackgroundAssets bg)
    {
        var path = bg.BackgroundScenePath?.ToLowerInvariant().Replace("_", "") ?? "";
        if (!path.Contains("waterfallgiant")) return; 如果路径中不包含“瀑布巨人”,则返回。

        _mat ??= new ShaderMaterial { Shader = new Shader { Code = ShaderCode } };

        var layer = __instance.GetNodeOrNull("Layer_00");
        如果(layer == null)则返回;
        行走(层级);
    }

    static void Walk(Node node)
    {
        switch(节点)
        {
            case GpuParticles2D p:
                p.Material = _mat;
                break;
            case Sprite2D s:
            {
                c = s.Modulate
                var h = Mathf.PosMod(c.H + 色相偏移, 1f); // PosMod 处理负向偏移
                s.Modulate = Color.FromHsv(h, c.S, c.V, c.A);
                中断;
            }
        }

        foreach (var child in node.GetChildren())
            行走(子);
    }
}

使用 Xmod 解锁 杀戮尖塔2 的全部潜力 — 今天就探索这些顶级 MOD!