Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kerbalism 相关 #51

Open
tinygrox opened this issue Nov 8, 2024 · 1 comment
Open

Kerbalism 相关 #51

tinygrox opened this issue Nov 8, 2024 · 1 comment
Labels
记录 Mod问题(非本项目导致)相关或解决办法

Comments

@tinygrox
Copy link
Owner

tinygrox commented Nov 8, 2024

Kerbalism 自动化食物产出

Kerbalism 对于食物的生产模拟是间隔产出而不是像 TAC LS 的实时产出,这是为了模拟植物的生长,为了拟真化体验。
但是这功能有个弊端,即玩家需要在食物成熟时(通常是200天)手动切换到目标进行手动收获,这个机制一开始很新鲜,但重复操作的次数多了之后只会觉得很恼人,因为我们没有自动收获的选项。
所以为了实现自动化,或者实现类似于 TAC LS 的食物产出,我们就需要修改 Kerbalism 的这个系统,让食物作为资源实时产出,无需等待收获时间。

接下来就是如何手动改写 Kerbalism 的 Patch 配置。

Kerbalism 有个名为 Greenhouse 的 MODULE:https://github.com/Kerbalism/Kerbalism/wiki/TechGuide-~-PartModules-~-Greenhouse

为了实现实时产出,我们可以在这个 MODULE 中添加 OUTPUT_RESOURCE 直接添加一个额外的资源产出:

OUTPUT_RESOURCE
{
    name = Food
    rate = 每秒产出
}

Kerbalism 的 Greenhouse MODULE 的 crop_sizecrop_rate 分别为食物的收获量和产出速度,根据这两个字段来计算我们所需的 rate。

首先用 1 / crop_rate 得到 crop_rate 增长到 1 的总经过秒数 T
然后用 crop_size / T 即可得到食物每秒产出食物的 rate 的值

rate的值已经确定,但同时还要取消掉原来的产出,即将 crop_size 设置为 0,理应也将 crop_rate 设置为 0,但是在 Kerbalism 的代码中:

https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L233-L235

https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L343-L345

https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L442

crop_size 会作为除数存在,所以不能设置为 0,所以只好退而求其次,将生长速度设置为负,或让生长速率极其缓慢(生长个几千年)。

那么接下来的事情就是为这些 Greenhouse 编写所需的 MM Patch,如 Kerbalism 自带的部件

@PART[kerbalism-greenhouse]:NEEDS[ProfileDefault]:AFTER[KerbalismDefault]
{
  @MODULE[Greenhouse]
  {
    @crop_size = 0 // 27.5625
    
    @crop_rate = -0.00000000001 // 0.00000023148
    
    OUTPUT_RESOURCE
    {
        name = Food
        rate = 0.0000063802
    }
  }
}

更多 Patch 可参考本项目中的 SomeMMPatches/KerbalismGreenHouse.cfg 文件

@tinygrox tinygrox added the 记录 Mod问题(非本项目导致)相关或解决办法 label Nov 8, 2024
@tinygrox
Copy link
Owner Author

Kerbal GPS 与 Kerbalism

Kerbalism 的后台资源计算好像对 KerbalGPS 的 ModuleGPSTransmitterKerbalGPS 无法识别。所以日志会疯狂报错
所以在安装了 Kerbalism 的情况下取消掉对应部件的资源消耗就好了:

@PART[FigaroReceiver]:NEEDS[KerbalGPS,Kerbalism]:AFTER[KerbalGPS]
{
    @MODULE[KerbalGPS]
    {
        !RESOURCE[ElectricCharge] { }
    }
}
@PART[FigaroReceiver]:NEEDS[KerbalGPS,Kerbalism]:AFTER[KerbalGPS]
{
    @MODULE[ModuleGPSTransmitter]
    {
        !RESOURCE[ElectricCharge] { }
    }
}
@PART[FigaroReceiver]:NEEDS[KerbalGPS,Kerbalism]:AFTER[KerbalGPS]
{
    @MODULE[KerbalGPS]
    {
        !RESOURCE[ElectricCharge] { }
    }
}

同时,Kerbal GPS 会将所有的带有 ModuleCommand 的部件添加 KerbalGPS,所以还需要将这些被 Patch 的部件删除资源消耗

@PART[*]:HAS[@MODULE[KerbalGPS]]:NEEDS[KerbalGPS, Kerbalism]:AFTER[KerbalGPS]
{
    @MODULE[KerbalGPS]
    {
        !RESOURCE[ElectricCharge] { }
    }
}

或参考本项目中 SomeMMPatches\KerbalGPSPatch.cfg 的做法

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
记录 Mod问题(非本项目导致)相关或解决办法
Projects
None yet
Development

No branches or pull requests

1 participant