钓鱼获得龙虾/螃蟹 改小bug(可用版本)

This commit is contained in:
wenhe committed 2026-09-24 16:01:17 +08:00
1 parent 23598ed3dd
commit a647878ac1
12 files changed
+373 -36

No files matched your search

@@ -49,6 +49,9 @@ from ...BlueFoxTools.ModConfig import MOD_NAME
# 它是"普通逻辑类"(自己不监听), 由本分发器实例化并把 ServerEntityDieEvent 转给它。
from ..siwangshengwu.service.DeadmobGeneratorService import DeadmobGeneratorService
# ---- 钓鱼掉落: 螃蟹/龙虾(普通逻辑类, 由本分发器转发 PlayerFishingServerEvent) ----
from ..yuanbanfangzhi.service.YuanbanFishing import YuanbanFishingService
# ---- 汤锅盛出自定义事件名(与客户端 ClientFeatureDispatcher TAKEOUT_EVENT 一致) ----
TAKEOUT_EVENT = "TakeoutRequest"
@@ -206,6 +209,7 @@ class FeatureDispatcher(BlueFoxServerSystem):
print "===== FeatureDispatcher init ====="
self._cancelItemUse = {} # 将要取消下一次物品使用的玩家ID集合(防止喝药水等)
self._deadmobGen = DeadmobGeneratorService() # 死亡生物·生成引擎(杀猪牛羊等->尸体方块)
self._fishing = YuanbanFishingService() # 钓鱼掉落(螃蟹/龙虾)
self.ListenEvent()
def Destroy(self):
@@ -675,25 +679,12 @@ class FeatureDispatcher(BlueFoxServerSystem):
def OnFishing(self, args):
"""
玩家收杆时、钓鱼掉落物生成前触发(PlayerFishingServerEvent)。
让 螃蟹(rtdd:crab)/龙虾(rtdd:lobster) 直接作为"钓上来的物品":
有几率把本次钓上来的东西【替换】成 螃蟹 或 龙虾 —— 不再像 After 事件那样
额外多掉一只, 更贴近原版"钓上来什么就是什么"。
args.关键字段: playerId / hookEntity / itemList(本次钓上的物品列表, 生成前可改)。
概率(草稿, 可调): 螃蟹 10% / 龙虾 6%。
玩家钓鱼收杆时触发(PlayerFishingServerEvent)。
转给 原版放置·钓鱼掉落(YuanbanFishingService): 取消默认钓物并在鱼钩位置
生成 螃蟹/龙虾。
"""
try:
playerId = args.get("playerId")
itemList = args.get("itemList")
if not playerId or not isinstance(itemList, list) or not itemList:
return
# 【测试用】概率 100%: 每次收杆都替换成 螃蟹/龙虾(50/50), 方便验证两者都能钓到。
# 测试完请调回(如 螃蟹0.10 / 龙虾0.06)。
if random.random() < 0.5:
sea = "rtdd:crab"
else:
sea = "rtdd:lobster"
args["itemList"] = [{"itemName": sea, "count": 1, "auxValue": 0}]
self._fishing.OnFishing(args)
except Exception as e:
print "[FD-OnFishing-ERR]", e