This commit is contained in:
2026-10-11 14:05:54 +08:00
parent 30c757e604
commit 65ccfce49e
11 changed files with 514 additions and 10 deletions
@@ -294,6 +294,14 @@ public class MonsterContral : MonoBehaviour
}
}
/// <summary>
/// ⭐ 本次服务端击杀通知是否需要清除各座位对该鱼的锁定引用(默认 true:死了就清锁)。
/// 多次死亡的 Boss(星际巡航/烈焰风暴)重写:非最终死亡(爆奖不死)时返回 false,
/// 此时鱼既没死也不回收,保持锁定,玩家不用重新点一次锁定。
/// </summary>
/// <param name="killNotice">本次击杀通知(子类据此判断是否最终死亡)</param>
public virtual bool ShouldClearLockOnKill(RoomKillNotice killNotice) => true;
/// <summary>
/// ⭐ 是否延迟注册入鱼列表(子类控制,默认false=OnlyFish 创建时立即注册,现有鱼零影响)。
/// true=CreateFishManager.OnlyFish 跳过 RegisterFishInstance,
@@ -2055,10 +2055,14 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
}
// ⭐ 死鱼清除所有座位的锁定引用(原逻辑只清击杀者座位,其他座位锁同一条鱼时不清)
ClearLockOnFish(killFish.fishId);
// ⭐ 例外:多次死亡 Boss(星际巡航/烈焰风暴)"爆奖不死"(非最终死亡)时不清锁 ——
// 鱼既没死也不回收,保持锁定,玩家不用重新点一次;是否清锁由 Boss 自己判定
bool killedFound = fishDatas_hashCodekey.TryGetValue(killFish.fishId, out var monster);
if (!killedFound || monster.ShouldClearLockOnKill(killFish))
ClearLockOnFish(killFish.fishId);
if (!fishDatas_hashCodekey.TryGetValue(killFish.fishId, out var monster)) return;
if (!killedFound) return;
// ⭐ 统一标记死亡:死亡后子弹不再命中、不再被锁定(含不调 base.DieFish 的 Boss 子类)
monster.isDead = true;