君子好瑜 发表于 2025-2-27 20:46:58

舰船的改装机库部署点惩罚修改

舰船的改装机库部署点惩罚怎么修改为0啊,想问问大佬的改法,找到了ConvertedHangarNoPenalty这个文件但是把1改成0没有反应stats.getDynamic().getMod(Stats.CONVERTED_HANGAR_NO_DP_INCREASE).modifyFlat(id, 0);

残殇 发表于 2025-3-1 14:08:43

泥嚎,我将我的思路提供给你,希望可以帮助你解决这个问题!

残殇 发表于 2025-3-1 14:11:58

残殇 发表于 2025-3-1 14:08
泥嚎,我将我的思路提供给你,希望可以帮助你解决这个问题!

首先在starsector-core\data\hullmods下找到hull_mods.csv这个文件,打开以后搜索“改装机库”,可以看到与其相关的各项参数,其中“com.fs.starfarer.api.impl.hullmods.ConvertedHangar”应当是其代码实现的地方,你可以在starsector-core下的starfarer.api.zip中寻找相应的代码,并加以修改。

君子好瑜 发表于 2025-3-3 16:06:35

十分感谢你的指点,我找错了方向,根据你的提示我将改装机库的惩罚分为了两类方法:

1. ​全局调整 DP 惩罚比例(简单修改)​
修改 FIGHTER_OP_PER_DP 的数值即可改变 OP 到 DP 的转换比例。

java
public static float FIGHTER_OP_PER_DP = 10; // 原值为5,改为10后 DP 惩罚减半
​效果:每 10 OP 的飞机会增加 1 DP(原为每 5 OP)。
​适用场景:希望全面降低所有舰船的 DP 惩罚。


2. ​按舰船类型差异化调整
根据舰船类型(如巡洋舰、主力舰)设置不同的 OP/DP 比例。

java
public static int computeDPModifier(float fighterOPCost, HullSize hullSize) {
    float opPerDP = FIGHTER_OP_PER_DP;
    if (hullSize == HullSize.CRUISER) {
      opPerDP = 15; // 巡洋舰每15 OP 增加1 DP
    } else if (hullSize == HullSize.CAPITAL_SHIP) {
      opPerDP = 20; // 主力舰每20 OP 增加1 DP
    }
    int mod = (int) Math.ceil(fighterOPCost / opPerDP);
    return Math.max(mod, MIN_DP);
}
在 applyEffectsBeforeShipCreation 中调用时传入 hullSize:

java
float dpMod = computeDPModifier(getFighterOPCost(stats), hullSize);
​效果:巡洋舰和主力舰会有更低的 DP 惩罚。
​适用场景:希望大型舰船承受更少惩罚。

配置建议

​降低全局惩罚:推荐方案 1,简单有效。
​差异化调整:方案 2 可让大型舰船更灵活。

君子好瑜 发表于 2025-10-26 15:47:57

残殇 发表于 2025-3-1 14:08
泥嚎,我将我的思路提供给你,希望可以帮助你解决这个问题!

感谢你提供的思路我去试试
页: [1]
查看完整版本: 舰船的改装机库部署点惩罚修改