|
|
发表于 2026-10-4 21:46:00
|
显示全部楼层
310339 106458 [Thread-2] ERROR com.fs.starfarer.combat.CombatMain
java.lang.NullPointerException: Cannot invoke
"com.fs.starfarer.api.fleet.FleetMemberAPI.getMemberStrength()" because "member" is null
at com.fs.starfarer.api.util.Misc.getMemberStrength(Misc.java:4849)
at com.fs.starfarer.api.util.Misc.getMemberStrength(Misc.java:4845)
at exerelin.campaign.battle.NexWarSimScript.<init>(NexWarSimScript.java:69)
at exerelin.campaign.battle.NexWarSimScript.createAndExecute(NexWarSimScript.java:49)
at exerelin.campaign.intel.raid.BaseStrikeActionStage.autoresolve(BaseStrikeActionStage.java:73)
at exerelin.campaign.intel.invasion.InvActionStage.updateStatus(InvActionStage.java:181)
这是 Nexerelin(势力争霸)v0.12.2c 的一个 bug,跟原版、你的内存设置、其他 mod 都无关。崩溃点在 Nexerelin 自动结算(autoresolve)一场基地打击行动时,去取一个 null 舰队成员的强度值,直接 NPE → CTD
我反汇编了你的 ExerelinCore.jar 佐证:NexWarSimScript.applyDamageToParticipant 里正是取 getMembersListCopy() 逐个算强度的循环 —— 这次循环里拿到了 null。
触发条件(社区已复现,你的日志完全吻合)
两个势力几乎同时对同一颗行星发起 Strike 行动。 第一个(结算并获胜)之后,第二个势力那方已经没有可用舰队,轮到它结算时就取到 null 成员 → 崩。
你的日志里:106319 和 106371 — 连续两次 Autoresolving base strike action,紧接着 106458 崩溃。
而且同一个栈在日志里出现了两次(行 232760 是上一局),说明这是可复现的 —— 读档到那个时间点必然再崩,绕不过去。
英文官方论坛 #7129(2026-09-27)报的就是这个:"Diktat wins, then Diable tries immediately after and due to lack of a fleet, it fails to look for a flagship and crashes every time."
升级 Nexerelin 到 v0.12.2d(2026-09-26) —— 有一条 Fix crash when autoresolving battles against some stations,但 changelog 没有点名 NexWarSimScript,所以不保证修的就是你这一例。你现在是 0.12.2c,升级成本低,建议先试。
结果:两个势力是 辛达强权 和 恶魔航电
从你的最新存档 save_MMDGTC_2475978869492324012(10-04 20:32)里读到的当前活跃行动有两个,目标是同一个:
添加到对话
行动 势力 出发地 目标
基地打击 #1 辛达强权(sindrian_diktat) 市场 4040 市场 71502
基地打击 #2 恶魔航电(diableavionics) Eclipse 空间站 市场 71502
目标市场 = 「Nar 圣殿」(id 299af7),位于 Alexiar 星系 —— 与日志里 Adding recent raid to raid record: : Alexiar 完全对得上。
★ 和英文论坛那例是同一对势力:那边也是「Diktat 先赢 → Diable 随后无舰队 → 必崩」。你这里是同款配置,所以那条已被验证有效的绕过命令直接适用。
遇到一个稳定复现的bug,AI分析完日志说是势力争霸的mod报错,两个势力同时打同一个地方的时候就会出现这个,我的档已经坏掉了
|
|