|
楼主 |
发表于 2025-1-30 12:32:32
|
显示全部楼层
有关于该观点的事:刚刚又问他能不能帮我做个船插
这是回复:以下是一个基于《远行星号》LazyLib模组框架的舰船插件代码示例,实现了您描述的效果:
```java
package demo.hullmods;
import com.fs.starfarer.api.combat.BaseHullMod;
import com.fs.starfarer.api.combat.MutableShipStatsAPI;
import com.fs.starfarer.api.combat.ShipAPI.HullSize;
public class AdvancedMaintenanceCore extends BaseHullMod {
// 定义效果参数
private static final float PEAK_TIME_BONUS = 10f; // 峰值时间增加百分比
private static final float SUPPLIES_REDUCTION = 20f; // 补给消耗减少百分比
private static final float CR_RECOVERY_BONUS = 25f; // CR每日恢复率增加百分比
@Override
public void applyEffectsBeforeShipCreation(HullSize hullSize,
MutableShipStatsAPI stats,
String id) {
// 修改峰值时间
stats.getPeakCRDuration().modifyPercent(id, PEAK_TIME_BONUS);
// 减少补给消耗
stats.getSuppliesPerMonth().modifyPercent(id, -SUPPLIES_REDUCTION);
// 提高CR恢复率(基础值+百分比提升)
stats.getBaseCRRecoveryRatePercentPerDay().modifyPercent(id, CR_RECOVERY_BONUS);
}
// 描述文本生成
@Override
public String getDescriptionParam(int index, HullSize hullSize) {
if (index == 0) return Math.round(PEAK_TIME_BONUS) + "%";
if (index == 1) return Math.round(SUPPLIES_REDUCTION) + "%";
if (index == 2) return Math.round(CR_RECOVERY_BONUS) + "%";
return null;
}
// 其他配置
@Override
public boolean isApplicableToShip(ShipAPI ship) {
return true; // 适用于所有舰船
}
}
```
需要配套的**hull_mods.csv**条目:
```csv
id,name,short,long,tags,rarity,cost,perma-mod,hidden,career_limited,description prefix,description,tech/manufacturer
advanced_maintenance_core,"先进维护核心","先进维护核心",,,"common",5000,FALSE,FALSE,FALSE,,"增加峰值时间 %s%%,减少%s%%补给消耗,提升%s%%CR恢复率",tech
```
### 关键代码解析:
1. **效果实现**:
- `getPeakCRDuration()`:处理峰值时间
- `getSuppliesPerMonth()`:控制补给消耗
- `getBaseCRRecoveryRatePercentPerDay()`:影响CR恢复速率
2. **数值运算注意事项**:
- 补给消耗使用负数修正值实现减少效果
- 百分比修改采用`modifyPercent`方法
3. **兼容性建议**:
```java
@Override
public void applyEffectsAfterShipCreation(ShipAPI ship, String id) {
// 检测冲突插件
if (ship.getVariant().hasHullMod("automated")) {
ship.getVariant().removeMod("advanced_maintenance_core");
}
}
```
可添加类似代码防止与自动化舰船插件冲突
### 开发环境建议:
1. 推荐使用:
- **LazyLib**:基础工具库
- **MagicLib**:高级API支持
- **Console Commands**:实时调试
2. 测试时建议通过控制台命令直接添加插件:
```
addhullmod advanced_maintenance_core
```
### 平衡性注意事项:
如果发现效果过强,可以通过以下方式调整:
```java
// 根据舰船规模调整效果
float sizeMultiplier = 1f;
switch (hullSize) {
case CAPITAL_SHIP: sizeMultiplier = 0.6f; break;
case CRUISER: sizeMultiplier = 0.8f; break;
case DESTROYER: sizeMultiplier = 1f; break;
case FRIGATE: sizeMultiplier = 1.2f; break;
}
stats.getSuppliesPerMonth().modifyPercent(id, -SUPPLIES_REDUCTION * sizeMultiplier);
```
建议将此插件设置为:
- 占用至少30点OP
- 无法与强化舱壁等维护类插件叠加
- 需要安装自动化舰体改造作为前置科技
经过简单的修改(代码实现部分没动)后在游戏内实现如图(不知道怎么游戏内截屏,所以直接用手机拍的)
肯定是做不出那些特殊插,但如果只是简单的修改数据,这家伙应该还是做得到的吧
|
-
-
|