From 3ac863ebc8f55dd0838b4ee2f9d0c39234af25eb Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 09 二月 2026 10:46:00 +0800
Subject: [PATCH] 358 【内政】红颜系统-服务端(修改游历体力为DWORD;红颜时装升级改为使用背包物品;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 49 insertions(+), 8 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
index b762825..46afd48 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
@@ -179,12 +179,15 @@
continue
buffID = buff.GetBuffID()
nowLayerCnt = buff.GetLayer()
- GameWorld.DebugLogEx(" 已经存在该buff: buffID=%s,skillTypeID=%s,ownerID=%s,buffRepeat=%s", buffID, skillTypeID, ownerID, buffRepeat)
+ GameWorld.DebugLogEx(" 已经存在该buff: buffID=%s,skillTypeID=%s,ownerID=%s,buffRepeat=%s,nowLayerCnt=%s/%s", buffID, skillTypeID, ownerID, buffRepeat, nowLayerCnt, maxLayerCnt)
resetAddTiming = False # 一般只有覆盖的才重新计算回合,视为重新添加
remainTime = buffSkill.GetLastTime()
updLayerCnt = addLayerCnt
if buffRepeat == 3: # 叠加层级
+ if maxLayerCnt and nowLayerCnt >= maxLayerCnt:
+ GameWorld.DebugLogEx(" 已达最大层数: nowLayerCnt=%s/%s", nowLayerCnt, maxLayerCnt)
+ return
updLayerCnt = nowLayerCnt + addLayerCnt
if maxLayerCnt and updLayerCnt > maxLayerCnt:
updLayerCnt = maxLayerCnt
@@ -226,11 +229,12 @@
ownerID = buffOwner.GetID()
buffID = buff.GetBuffID()
timing = batObj.GetTiming()
+ skillType = buffSkill.GetSkillType()
remainTime = buffSkill.GetLastTime()
remainTime += TurnPassive.GetTriggerEffectValue(turnFight, buffOwner, batObj, ChConfig.PassiveEff_AddBuffTime, buffSkill)
- GameWorld.DebugLogEx(" __addNewBuff. buffID=%s,skillID=%s,ownerID=%s,relatedSkillID=%s,timing=%s,remainTime=%s,setLayerCnt=%s",
- buffID, skillID, ownerID, relatedSkillID, timing, remainTime, setLayerCnt, curID)
+ GameWorld.DebugLogEx(" __addNewBuff. buffID=%s,skillID=%s,ownerID=%s,relatedSkillID=%s,timing=%s,remainTime=%s,setLayerCnt=%s,afterLogic=%s",
+ buffID, skillID, ownerID, relatedSkillID, timing, remainTime, setLayerCnt, afterLogic, curID)
buff.SetAddTiming(timing) # 武将当前在什么时机就设置为什么时机
buff.SetOwnerID(ownerID)
buff.SetRemainTime(remainTime)
@@ -240,11 +244,13 @@
if curBuffState:
buffMgr.AddBuffState(curBuffState, buffID)
- if buffSkill.GetSkillType() == ChConfig.Def_SkillType_Halo:
+ if skillType == ChConfig.Def_SkillType_Halo:
__addHaloBuffEffObjID(curID, buff, skillID, ownerID, haloSrcBuff)
if afterLogic and buffSkill:
buffSkill.AddAfterLogic(ChConfig.AfterLogic_AddBuff, [batObj, buff, buffOwner])
+ if bySkill:
+ bySkill.AddAfterLogic(ChConfig.AfterLogic_AddBuff, [batObj, buff, buffOwner])
elif isSync:
SyncBuffRefresh(turnFight, batObj, buff, relatedSkillID, isNewAdd=True)
@@ -253,6 +259,10 @@
#添加buff时有需要后置处理触发被动的,如受控
if curBuffState and IsControlledHardState(curBuffState):
buffSkill.AddAfterLogic(ChConfig.AfterLogic_TriggerAddBuff, [ChConfig.TriggerWay_BeControlledHard, batObj, buff, buffOwner])
+
+ #添加持续减益buff
+ if skillType == ChConfig.Def_SkillType_LstDepBuff:
+ buffSkill.AddAfterLogic(ChConfig.AfterLogic_TriggerAddBuff, [ChConfig.TriggerWay_AddDOTBuff, batObj, buff, buffOwner])
return buff
@@ -577,9 +587,14 @@
befHP = batObj.GetHP()
befMaxHP = batObj.GetMaxHP()
+ isMingge = batObj.GetPosNum() == ChConfig.TFPosNum_Mingge
+ mgObj = None
+ if not isMingge:
+ mgObj = batObj.GetTFBatLineup().getMinggeObj()
+ mgObjID = mgObj.GetID() if mgObj else 0
batAttrDict = batObj.ResetBattleEffect()
- GameWorld.DebugLogEx("RefreshBuffAttr ID:%s,atk=%s,def=%s,hp=%s/%s,batAttrDict=%s",
- objID, batObj.GetAtk(), batObj.GetDef(), befHP, befMaxHP, batAttrDict)
+ GameWorld.DebugLogEx("RefreshBuffAttr ID:%s,atk=%s,def=%s,hp=%s/%s,isMingge=%s(%s),batAttrDict=%s",
+ objID, batObj.GetAtk(), batObj.GetDef(), befHP, befMaxHP, isMingge, mgObjID, batAttrDict)
skbufAttrDict = {}
@@ -654,11 +669,22 @@
objID = batObj.GetID()
# 先计算百分比加成或降低的
+ mgHaveAttrPer = False # 命格加成对友军有效
perIDList = ChConfig.AttrPerDict.values()
for attrID, attrPerID in ChConfig.AttrPerDict.items():
- if attrPerID not in skbufAttrDict:
+ attrPerValue = 0
+ if attrPerID in skbufAttrDict:
+ attrPerValue += skbufAttrDict[attrPerID] # 可能是负值
+ if mgObj:
+ attrPerValue += mgObj.GetBatAttrValue(attrPerID)
+ if attrPerValue:
+ GameWorld.DebugLogEx(" 命格额外加成: attrID=%s,attrPerID=%s,attrPerValue=%s", attrID, attrPerID, attrPerValue)
+ elif isMingge and attrPerValue:
+ mgHaveAttrPer = True
+ batObj.SetBatAttrValue(attrPerID, attrPerValue)
+ GameWorld.DebugLogEx(" 命格保存加成: attrID=%s,attrPerID=%s,attrPerValue=%s", attrID, attrPerID, attrPerValue)
+ if not attrPerValue:
continue
- attrPerValue = skbufAttrDict[attrPerID] # 可能是负值
attrValue = batObj.GetBatAttrValue(attrID, False)
if attrValue <= 0:
continue
@@ -690,6 +716,21 @@
batObj.SetHP(aftHP, isNotify)
GameWorld.DebugLogEx(" befHP=%s/%s, aftHP=%s/%s", befHP, befMaxHP, aftHP, aftMaxHP)
GameWorld.DebugLogEx(" 最终属性 ID:%s,atk=%s,def=%s,hp=%s/%s,%s", objID, batObj.GetAtk(), batObj.GetDef(), aftHP, aftMaxHP, batObj.GetBatAttrDict())
+
+ # 命格刷属性
+ if mgHaveAttrPer and isMingge and not isInit:
+ batLineup = batObj.GetTFBatLineup()
+ batObjMgr = BattleObj.GetBatObjMgr()
+ heroObjIDList = batLineup.getBatHeroObjIDList()
+ GameWorld.DebugLogEx("命格有加成属性同步刷新本阵容武将属性: heroObjIDList=%s", heroObjIDList)
+ for heroObjID in heroObjIDList:
+ heroObj = batObjMgr.getBatObj(heroObjID)
+ if not heroObj:
+ continue
+ if not heroObj.IsAlive():
+ continue
+ RefreshBuffAttr(heroObj)
+
return
def SyncBuffRefresh(turnFight, curBatObj, curBuff, relatedSkillID=0, isNewAdd=False):
--
Gitblit v1.8.0