@@ -68,6 +68,9 @@ private enum OldDukeAIState
6868 #region 生命周期
6969
7070 public override bool CanOverride ( ) {
71+ if ( ! CWRRef . Has ) { //如果没有灾厄Mod,就不覆盖AI,避免潜在的兼容性问题
72+ return false ;
73+ }
7174 if ( CWRRef . GetBossRushActive ( ) ) {
7275 return false ;
7376 }
@@ -205,42 +208,6 @@ internal static void StartCampsiteFindMeScenarioNetWork(BinaryReader reader, int
205208 }
206209 }
207210
208- /// <summary>
209- /// 处理切磋生成老公爵的网络消息。
210- /// 服务端收到后设置状态并生成NPC
211- /// </summary>
212- /// <summary>
213- /// 处理切磋生成老公爵的网络消息。
214- /// 服务端收到后:先广播WannaToFight=true给所有客户端,再生成NPC。
215- /// 这样保证所有客户端在NPC到达前就已知道这是切磋模式,
216- /// 避免NPC首帧AI因ShouldLeaveAfterCooperation()而消失。
217- /// </summary>
218- internal static void SpwanOldDukeByWannaToFightNetWork ( BinaryReader reader , int whoAmI ) {
219- int playerIndex = reader . ReadInt32 ( ) ;
220- Player player = Main . player [ playerIndex ] ;
221-
222- if ( ! VaultUtils . isServer ) {
223- return ;
224- }
225-
226- //步骤1:先设置服务端状态
227- OldDukeCampsite . WannaToFight = true ;
228-
229- //步骤2:先广播WannaToFight=true给所有客户端
230- //这样客户端在收到NPC同步包之前就已经知道这是切磋模式
231- ModPacket packet = CWRMod . Instance . GetPacket ( ) ;
232- packet . Write ( ( byte ) CWRMessageType . OldDukeEffect ) ;
233- packet . Write ( false ) ; //IsActive由声明式计算管理,这里写false
234- packet . Write ( true ) ; //WannaToFight = true
235- packet . Write ( playerIndex ) ;
236- packet . Write ( ( byte ) OldDukeInteractionState . AcceptedCooperation ) ;
237- packet . Send ( ) ;
238-
239- //步骤3:最后才生成NPC(NPC同步包会在OldDukeEffect包之后到达客户端)
240- NPC . NewNPC ( NPC . GetBossSpawnSource ( player . whoAmI ) ,
241- ( int ) player . Center . X , ( int ) player . Center . Y - 200 , CWRID . NPC_OldDuke ) ;
242- }
243-
244211 /// <summary>
245212 /// 根据当前是否在酸雨事件中,触发对应的营地场景对话
246213 /// </summary>
@@ -268,6 +235,10 @@ public override bool AI() {
268235 return RunStorylineAI ( ) ;
269236 }
270237
238+ if ( CWRRef . GetBossRushActive ( ) ) {
239+ return true ; //以防万一,虽然CanOverride已经禁止了这种情况,但多一层保险总是好的
240+ }
241+
271242 npc . TargetClosest ( ) ;
272243 Player target = Main . player [ npc . target ] ;
273244
0 commit comments