From fbc7b73be513ac507ad43f1586c8f6f865049d0d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 03 十二月 2025 11:18:00 +0800
Subject: [PATCH] 358 【内政】红颜系统-服务端(游历裂纹改为指定物品奖励必定出现;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py |   25 +++++++++++++------------
 1 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py
index b4ea635..7474b04 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py
@@ -258,16 +258,7 @@
 def __doClickUnOpendGrid(curPlayer, row, col):
     ## 执行点击未开启的格子
     gridState = GetGridState(curPlayer, row, col)
-    if gridState == GridState_None:
-        crackRate = IpyGameDataPY.GetFuncCfg("TravelRate", 1)
-        if GameWorld.CanHappen(crackRate):
-            GameWorld.DebugLog("触发裂纹: row=%s,col=%s,crackRate=%s" % (row, col, crackRate))
-            SetGridState(curPlayer, row, col, GridState_Crack)
-        else:
-            __openGridRandEvent(curPlayer, row, col)
-            
-    # 再次点击裂纹
-    elif gridState == GridState_Crack:
+    if gridState in [GridState_None, GridState_Crack]:
         __openGridRandEvent(curPlayer, row, col)
     else:
         return
@@ -275,9 +266,9 @@
 
 def __openGridRandEvent(curPlayer, row, col):
     ## 执行打开格子随机生成事件
-    SetGridState(curPlayer, row, col, GridState_Opend)
     eventID = GetGridEventID(curPlayer, row, col)
     if eventID:
+        SetGridState(curPlayer, row, col, GridState_Opend)
         GameWorld.DebugLog("该游历格子已经有事件ID了! row=%s,col=%s,eventID=%s" % (row, col, eventID))
         return
     
@@ -296,12 +287,19 @@
         eventID = EventID_Blank
     else:
         eventID = ipyData.GetEventID()
-        if ipyData.GetAwardItemID():
+        awardItemID = ipyData.GetAwardItemID()
+        if awardItemID in IpyGameDataPY.GetFuncEvalCfg("TravelRate", 1) and GetGridState(curPlayer, row, col) == GridState_None:
+            GameWorld.DebugLog("必出现裂纹的奖励事件! eventID=%s,awardItemID=%s" % (eventID, awardItemID))
+            SetGridState(curPlayer, row, col, GridState_Crack)
+            
+        if awardItemID:
             multiRate = IpyGameDataPY.GetFuncCfg("TravelRate", 2)
             if GameWorld.CanHappen(multiRate):
                 multi = 2
     SetGridMulti(curPlayer, row, col, multi)
     SetGridEventID(curPlayer, row, col, eventID)
+    if GetGridState(curPlayer, row, col) == GridState_None:
+        SetGridState(curPlayer, row, col, GridState_Opend)
     GameWorld.DebugLog("随机格子事件: row=%s,col=%s,eventID=%s,multi=%s" % (row, col, eventID, multi))
     return
 
@@ -367,6 +365,9 @@
             eventID = GetGridEventID(curPlayer, row, col)
             if eventID in SpecEventIDList or eventID < EventID_Portal:
                 continue
+            if GetGridState(curPlayer, row, col) != GridState_Opend:
+                #GameWorld.DebugLog("    未开启的格子: row=%s,col=%s,eventID=%s" % (row, col, eventID))
+                continue
             ipyData = IpyGameDataPY.GetIpyGameDataNotLog("TravelEvent", eventID)
             if not ipyData:
                 continue

--
Gitblit v1.8.0