From 59131b1a15794d761b345302792eb601dd2c6c82 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 25 十二月 2025 18:32:58 +0800
Subject: [PATCH] 358 【内政】红颜系统-服务端(游历景观未被发现时不通知景观相关信息;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py |   32 +++++++++++++++++++++-----------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py            |    6 ++++--
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index b2118aa..10b32a8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3542,7 +3542,7 @@
 Def_PDict_TravelEnergy = "TravelEnergy"  # 剩余体力
 Def_PDict_TravelEnergyTime = "TravelEnergyTime"  # 上次恢复体力时间戳
 Def_PDict_TravelCnt = "TravelCnt"  # 累计游历次数
-Def_PDict_TravelScenery = "TravelScenery"  # 景观信息,景观左上角所在格子索引 * 10 + 景观类型
+Def_PDict_TravelSceneryState = "TravelSceneryState"  # 景观状态信息,是否已被找到 * 1000 + 景观左上角所在格子行 * 100 + 列 * 10 + 景观类型
 Def_PDict_TravelSceneryLVInfo = "TravelSceneryLVInfo"  # 景观等级信息,个位数-第1次升级成功与否,1-成功,2-失败;十位-第2次 ...
 Def_PDict_TravelGridInfo = "TravelGridInfo_%s_%s"  # 格子信息,参数(行, 列) 事件ID*100+是否双倍*10+开启状态
 Def_PDict_TravelState = "TravelState"  # 本盘游历记录,1-已领取景观奖励
@@ -4037,7 +4037,9 @@
 TriggerWay_FriendDotHurt, # 友方造成持续伤害时(多目标仅触发一次,包含自己) 53
 TriggerWay_NoDead, # 不时死(有配置该触发方式的视为有不死,触发死亡时不死保留1点血量) 54
 TriggerWay_ImmuneHurt, # 免疫伤害时 55
-) = range(1, 1 + 55)
+TriggerWay_BeSuckHP, # 被吸血时 56
+TriggerWay_SuckHPOne, # 吸血时(多目标仅触发一次) 57
+) = range(1, 1 + 57)
 
 # 不加载的被动触发方式,一般用于本技能固定触发逻辑用的
 TriggerWayNoLoadList = [TriggerWay_CurSkillEff, TriggerWay_CurSkillEffLst]
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 cdd0ca1..99e634c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py
@@ -118,7 +118,7 @@
     randRow = random.randint(1, randRowMax)
     randCol = random.randint(1, randColMax)
     sceneryValue = randRow * 100 + randCol * 10 + sceneryType
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TravelScenery, sceneryValue)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TravelSceneryState, sceneryValue)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TravelSceneryLVInfo, 0)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TravelState, 0)
     GameWorld.DebugLog("    景观位置: randRow=%s,randCol=%s,sceneryValue=%s" % (randRow, randCol, sceneryValue))
@@ -133,15 +133,23 @@
     return sceneryType, randRow, randCol
 
 def __getSceneryInfo(curPlayer):
-    sceneryValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelScenery)
-    sRow = sceneryValue / 100
+    sceneryValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelSceneryState)
+    found = sceneryValue / 1000 # 是否已被找到
+    sRow = sceneryValue % 1000 / 100
     sCol = sceneryValue % 100 / 10
     sceneryType = sceneryValue % 10
-    return sceneryType, sRow, sCol
+    return sceneryType, sRow, sCol, found
+
+def SetSceneryFound(curPlayer):
+    sceneryValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelSceneryState)
+    sceneryValue = sceneryValue % 1000 + 1000
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TravelSceneryState, sceneryValue)
+    GameWorld.DebugLog("    设置景观被找到了: sceneryValue=%s" % sceneryValue)
+    return
 
 def __checkSceneryOpend(curPlayer):
     ## 检查景观相关格子是否已全部打开
-    sceneryType, sRow, sCol = __getSceneryInfo(curPlayer)
+    sceneryType, sRow, sCol, _ = __getSceneryInfo(curPlayer)
     if sceneryType not in SceneryTypeSet:
         return
     rowSet, colSet = SceneryTypeSet[sceneryType]
@@ -269,6 +277,8 @@
     if eventID:
         SetGridState(curPlayer, row, col, GridState_Opend)
         GameWorld.DebugLog("该游历格子已经有事件ID了! row=%s,col=%s,eventID=%s" % (row, col, eventID))
+        if eventID < EventID_Portal:
+            SetSceneryFound(curPlayer)
         return
     
     # 生成事件ID
@@ -404,7 +414,7 @@
     if not __checkSceneryOpend(curPlayer):
         return
     
-    sceneryType, sRow, sCol = __getSceneryInfo(curPlayer)
+    sceneryType, sRow, sCol, _ = __getSceneryInfo(curPlayer)
     ipyDataList = IpyGameDataPY.GetIpyGameDataList("TravelScenery", sceneryType)
     if not ipyDataList:
         return
@@ -485,17 +495,17 @@
         grid.Col = col
         grid.State = GetGridState(curPlayer, row, col)
         grid.Multi = GetGridMulti(curPlayer, row, col)
-        grid.EventID = GetGridEventID(curPlayer, row, col)
+        grid.EventID = GetGridEventID(curPlayer, row, col) if grid.State == GridState_Opend else 0
         gridList.append(grid)
         
-    sceneryType, sRow, sCol = __getSceneryInfo(curPlayer)
+    sceneryType, sRow, sCol, found = __getSceneryInfo(curPlayer)
     clientPack = ChPyNetSendPack.tagSCTravelInfo()
     clientPack.Energy = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelEnergy)
     clientPack.EnergyTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelEnergyTime)
     clientPack.TravelCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelCnt)
-    clientPack.SceneryType = sceneryType
-    clientPack.SceneryRow = sRow
-    clientPack.SceneryCol = sCol
+    clientPack.SceneryType = sceneryType if found else 0
+    clientPack.SceneryRow = sRow if found else 0
+    clientPack.SceneryCol = sCol if found else 0
     clientPack.SceneryLVInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelSceneryLVInfo)
     clientPack.Result = result
     clientPack.GridList = gridList

--
Gitblit v1.8.0