RitsuLib
RitsuLib是另一个统一添加新内容行为的基础mod。
https://github.com/BAKAOLC/STS2-RitsuLib
以下内容使用ritsulib0.2.15。
先依赖ritsulib才能查看这里里面的文章。
下载
前往 https://github.com/BAKAOLC/STS2-RitsuLib/releases 下载稳定版本(不是Development build,而是例如STS2.RitsuLib.X.X.X.github.zip这样的),解压出来放在mods文件夹里。记住你下载的版本。
请根据你的游戏版本选择对应的RitsuLib版本。例如不带后缀的STS2.RitsuLib.XXX.github.zip一般跟随测试版,而例如STS2.RitsuLib.Compat.0.103.2.XXX.github.zip这种是兼容0.103.2正式版的版本。
在csproj文件中相应位置引用STS2-RitsuLib.dll,如下,两种方式都可。推荐使用nuget。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <ItemGroup> <Reference Include="sts2"> <HintPath>$(Sts2DataDir)/sts2.dll</HintPath> <Private>false</Private> </Reference>
<Reference Include="0Harmony"> <HintPath>$(Sts2DataDir)/0Harmony.dll</HintPath> <Private>false</Private> </Reference>
<PackageReference Include="STS2.RitsuLib" Version="*" /> </ItemGroup>
|
- 不要忘了在你
{modid}.json中填写dependencies。
1 2 3
| "dependencies": [ { "id": "STS2-RitsuLib", "min_version": "0.2.27" } ],
|
- 分发时,可以把自己的mod和
STS2-RitsuLib.XXX.variant-pack.zip解压后的打包给玩家。该版本可以自己检测游戏版本并使用对应的库。
下面展示RitsuLib的各种功能。如果你想马上做出一张卡牌,先看初始化函数就行。
初始化函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| using System.Reflection; using MegaCrit.Sts2.Core.Logging; using MegaCrit.Sts2.Core.Modding; using STS2RitsuLib; using STS2RitsuLib.Interop;
namespace Test.Scripts;
[ModInitializer(nameof(Init))] public class Entry { public const string ModId = "test"; public static readonly Logger Logger = RitsuLibFramework.CreateLogger(ModId);
public static void Init() { var assembly = Assembly.GetExecutingAssembly(); RitsuLibFramework.EnsureGodotScriptsRegistered(assembly, Logger); ModTypeDiscoveryHub.RegisterModAssembly(ModId, assembly); } }
|
注册内容
RitsuLib同时支持显式和自动注册。例如自动注册卡牌:
1 2 3 4 5
| [RegisterCard(typeof(TestCardPool))]
[RegisterCharacterStarterCard(typeof(TestCharacter), 5)] public class TestCard : ModCardTemplate {}
|
或是在初始化函数中显式注册:
1 2 3 4 5 6
| RitsuLibFramework.CreateContentPack(ModId) .Card<TestCardPool, TestCard>() .Relic<TestRelicPool, TestRelic>() .Character<TestCharacter>() .ActEncounter<Glory, TestEncounter>() .Apply();
|