10019 【砍树】回合战斗(增加强化暴伤、弱化暴伤属性;增加1308通用持续性回血buff逻辑,支持单次回血超20E;)
9个文件已修改
1个文件已添加
119 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1308.py 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -703,6 +703,8 @@
Def_Effect_CureDefPer = 216 # 弱化治疗
Def_Effect_PetStrengthenPer = 217 # 强化灵兽
Def_Effect_PetWeakenPer = 218 # 弱化灵兽
Def_Effect_SuperHitHurtPer = 219 # 强化暴伤
Def_Effect_SuperHitHurtDefPer = 220 # 弱化暴伤
#增加%d物理伤害值,其中a值为伤害值
Def_Effect_AddAtk = 1005
@@ -1079,9 +1081,11 @@
CDBPlayerRefresh_Xiantao, # 仙桃  254
CDBPlayerRefresh_CurePer, # 强化治疗 255
CDBPlayerRefresh_CureDefPer, # 弱化治疗 256
CDBPlayerRefresh_PetStrengthenPer, # 弱化灵兽 257
CDBPlayerRefresh_PetStrengthenPer, # 强化灵兽 257
CDBPlayerRefresh_PetWeakenPer, # 弱化灵兽 258
) = range(146, 259)
CDBPlayerRefresh_SuperHitHurtPer, # 强化暴伤 259
CDBPlayerRefresh_SuperHitHurtDefPer, # 弱化暴伤 260
) = range(146, 261)
TYPE_Price_Gold_Paper_Money = 5    # 金钱类型,(先用礼券,再用金子)
TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -2155,6 +2155,8 @@
    
    # 重击和暴击互斥,并且使用同一个参数
    isSuperHit, aSuperHit, dSuperHitReduce = hurtTypeResultDict[ChConfig.Def_HurtType_ThumpHit] 
    aSuperHitHurtPer = GameObj.GetSuperHitHurtPer(atkObj)
    dSuperHitHurtDefPer = GameObj.GetSuperHitHurtPer(defObj)
    if not isSuperHit:
        isSuperHit, aSuperHit, dSuperHitReduce = hurtTypeResultDict[ChConfig.Def_HurtType_SuperHit] 
        
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -581,9 +581,11 @@
                          GameObj.GetAtkBackRate(gameObj), GameObj.GetAtkBackDefRate(gameObj),
                          GameObj.GetSuckHPPer(gameObj), GameObj.GetSuckHPDefPer(gameObj),
                          ))
    GameWorld.DebugLog("    XP=%s/%s,强疗=%s,弱疗=%s,强灵=%s,弱灵=%s"
    GameWorld.DebugLog("    XP=%s/%s,强疗=%s,弱疗=%s,强灵=%s,弱灵=%s,强暴=%s,弱暴=%s"
                       % (GameObj.GetXP(gameObj), GameObj.GetMaxXP(gameObj), GameObj.GetCurePer(gameObj), GameObj.GetCureDefPer(gameObj), 
                          GameObj.GetPetStrengthenPer(gameObj), GameObj.GetPetWeakenPer(gameObj)))
                          GameObj.GetPetStrengthenPer(gameObj), GameObj.GetPetWeakenPer(gameObj),
                          GameObj.GetSuperHitHurtPer(gameObj), GameObj.GetSuperHitHurtDefPer(gameObj),
                          ))
    return
def TurnFightObjPerTurnStart(gameObj, tagObj, turnNum, tick):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -79,7 +79,7 @@
Def_BuffValue_Count = 3     # buff记录的value个数
#游戏对象属性--------------------------------------------
Def_Calc_AllAttrType_MAX = 174
Def_Calc_AllAttrType_MAX = 176
#基本属性BUFF计算,顺序与 ObjProperty_AttrByIndex 对应,同时也为buff效果ID同步通知策划
TYPE_Calc_AttrList = (
TYPE_Calc_Metal,                        # 金 1
@@ -267,6 +267,8 @@
TYPE_Calc_CureDefPer,                    # 弱化对方治疗效果
TYPE_Calc_PetStrengthenPer,              # 强化灵兽
TYPE_Calc_PetWeakenPer,                  # 弱化灵兽
TYPE_Calc_SuperHitHurtPer,               # 强化暴伤
TYPE_Calc_SuperHitHurtDefPer,            # 弱化暴伤 175
) = range(1, Def_Calc_AllAttrType_MAX)
## 支持大数值属性,超过20E
@@ -4554,6 +4556,8 @@
AttrName_CureDefPer = "CureDefPer"  # 弱化治疗
AttrName_PetStrengthenPer = "PetStrengthenPer"  # 强化灵兽
AttrName_PetWeakenPer = "PetWeakenPer"  # 弱化灵兽
AttrName_SuperHitHurtPer = "SuperHitHurtPer"  # 强化暴伤
AttrName_SuperHitHurtDefPer = "SuperHitHurtDefPer"  # 弱化暴伤
#物品效果(ID或指定类型)对应的属性计算信息 {效果(ID/指定类型):[[属性索引, ...], 是否基础属性,(非)线性]}
#对应 Def_Calc_AllAttrType_MAX
@@ -4756,6 +4760,8 @@
    ShareDefine.Def_Effect_CureDefPer:[[TYPE_Calc_CureDefPer], False, TYPE_Linear],
    ShareDefine.Def_Effect_PetStrengthenPer:[[TYPE_Calc_PetStrengthenPer], False, TYPE_Linear],
    ShareDefine.Def_Effect_PetWeakenPer:[[TYPE_Calc_PetWeakenPer], False, TYPE_Linear],
    ShareDefine.Def_Effect_SuperHitHurtPer:[[TYPE_Calc_SuperHitHurtPer], False, TYPE_Linear],
    ShareDefine.Def_Effect_SuperHitHurtDefPer:[[TYPE_Calc_SuperHitHurtDefPer], False, TYPE_Linear],
    
    #战斗非线性
    ShareDefine.Def_Effect_SuperHitPer:[[TYPE_Calc_SuperHit], False, TYPE_NoLinear],
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
@@ -235,6 +235,8 @@
    SetPetStrengthenPer(gameObj, 0)
    SetPetWeakenPer(gameObj, 0)
    SetDamageBackRate(gameObj, 0)
    SetSuperHitHurtPer(gameObj, 0)
    SetSuperHitHurtDefPer(gameObj, 0)
    return
def GetPetDamPer(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrPetDamPer)
@@ -423,6 +425,21 @@
        PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_PetWeakenPer, value)
    return
def GetSuperHitHurtPer(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_SuperHitHurtPer)
def SetSuperHitHurtPer(gameObj, value):
    ## 强化暴伤
    gameObj.SetDict(ChConfig.AttrName_SuperHitHurtPer, value)
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_SuperHitHurtPer, value)
    return
def GetSuperHitHurtDefPer(gameObj): return gameObj.GetDictByKey(ChConfig.AttrName_SuperHitHurtDefPer)
def SetSuperHitHurtDefPer(gameObj, value):
    ## 弱化暴伤
    gameObj.SetDict(ChConfig.AttrName_SuperHitHurtDefPer, value)
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_SuperHitHurtDefPer, value)
    return
def GetDamageBackRate(gameObj):
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        return gameObj.GetDamageBackRate()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -4203,6 +4203,8 @@
        GameObj.SetCureDefPer(curNPC, PropDict.get("CureDefPer", 0))
        GameObj.SetPetStrengthenPer(curNPC, PropDict.get("PetStrengthenPer", 0))
        GameObj.SetPetWeakenPer(curNPC, PropDict.get("PetWeakenPer", 0))
        GameObj.SetSuperHitHurtPer(curNPC, PropDict.get("SuperHitHurtPer", 0))
        GameObj.SetSuperHitHurtDefPer(curNPC, PropDict.get("SuperHitHurtDefPer", 0))
        GameObj.SetFinalHurtPer(curNPC, PropDict.get("FinalHurtPer", 0))
        GameObj.SetFinalHurtReducePer(curNPC, PropDict.get("FinalHurtReducePer", 0))
        
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
@@ -233,6 +233,8 @@
    curPlayerPropDict["CureDefPer"] = GameObj.GetCureDefPer(curPlayer) # 弱化治疗
    curPlayerPropDict["PetStrengthenPer"] = GameObj.GetPetStrengthenPer(curPlayer) # 强化灵兽
    curPlayerPropDict["PetWeakenPer"] = GameObj.GetPetWeakenPer(curPlayer) # 弱化灵兽
    curPlayerPropDict["SuperHitHurtPer"] = GameObj.GetSuperHitHurtPer(curPlayer) # 强化暴伤
    curPlayerPropDict["SuperHitHurtDefPer"] = GameObj.GetSuperHitHurtDefPer(curPlayer) # 弱化暴伤
    
    #-----------
    #扩展属性缓存
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -703,6 +703,8 @@
Def_Effect_CureDefPer = 216 # 弱化治疗
Def_Effect_PetStrengthenPer = 217 # 强化灵兽
Def_Effect_PetWeakenPer = 218 # 弱化灵兽
Def_Effect_SuperHitHurtPer = 219 # 强化暴伤
Def_Effect_SuperHitHurtDefPer = 220 # 弱化暴伤
#增加%d物理伤害值,其中a值为伤害值
Def_Effect_AddAtk = 1005
@@ -1079,9 +1081,11 @@
CDBPlayerRefresh_Xiantao, # 仙桃  254
CDBPlayerRefresh_CurePer, # 强化治疗 255
CDBPlayerRefresh_CureDefPer, # 弱化治疗 256
CDBPlayerRefresh_PetStrengthenPer, # 弱化灵兽 257
CDBPlayerRefresh_PetStrengthenPer, # 强化灵兽 257
CDBPlayerRefresh_PetWeakenPer, # 弱化灵兽 258
) = range(146, 259)
CDBPlayerRefresh_SuperHitHurtPer, # 强化暴伤 259
CDBPlayerRefresh_SuperHitHurtDefPer, # 弱化暴伤 260
) = range(146, 261)
TYPE_Price_Gold_Paper_Money = 5    # 金钱类型,(先用礼券,再用金子)
TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py
@@ -213,6 +213,8 @@
   [lambda curObj:GameObj.GetCureDefPer(curObj), lambda curObj, value:GameObj.SetCureDefPer(curObj, value), ShareDefine.CDBPlayerRefresh_CureDefPer, 1, 0],          # 弱化对方治疗
   [lambda curObj:GameObj.GetPetStrengthenPer(curObj), lambda curObj, value:GameObj.SetPetStrengthenPer(curObj, value), ShareDefine.CDBPlayerRefresh_PetStrengthenPer, 1, 0],          # 强化灵兽
   [lambda curObj:GameObj.GetPetWeakenPer(curObj), lambda curObj, value:GameObj.SetPetWeakenPer(curObj, value), ShareDefine.CDBPlayerRefresh_PetWeakenPer, 1, 0],          # 弱化灵兽
   [lambda curObj:GameObj.GetSuperHitHurtPer(curObj), lambda curObj, value:GameObj.SetSuperHitHurtPer(curObj, value), ShareDefine.CDBPlayerRefresh_SuperHitHurtPer, 1, 0],          # 强化暴伤
   [lambda curObj:GameObj.GetSuperHitHurtDefPer(curObj), lambda curObj, value:GameObj.SetSuperHitHurtDefPer(curObj, value), ShareDefine.CDBPlayerRefresh_SuperHitHurtDefPer, 1, 0],          # 弱化暴伤
]
## 通过索引获得属性值
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1308.py
New file
@@ -0,0 +1,64 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.GameBuffs.BuffProcess_1308
#
# @todo:持继回血触发的buff逻辑实现
# @author hxp
# @date 2024-03-28
# @version 1.0
#
# 详细描述: 持继回血触发的buff逻辑实现
# 效果1:    A值-百分比;B值-附加值;C值-恢复类型(同释放方式8的恢复类型)
# 效果2:    一般搭配效果ID 9999 处理间隔使用
#
#-------------------------------------------------------------------------------
#"""Version = 2024-03-28 18:30"""
#-------------------------------------------------------------------------------
import ChConfig
import GameWorld
import SkillCommon
import SkillShell
import GameObj
def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
    if curBuff.GetValue2() == 0:
        return
    curBuff.SetValue2(max(curBuff.GetValue2() - 1, 0))
    curBuffSkillID = curBuff.GetSkill().GetSkillTypeID()
    singleAddHP = curBuff.GetValue() + curBuff.GetValue1() * ChConfig.Def_PerPointValue
    SkillCommon.SkillAddHP(defender, curBuffSkillID, singleAddHP)
    return
# 消失前如有未执行次数则补上
#  @param defender 承受者
def OnBuffDisappear(defender, curSkill, curBuff, curEffect, tick):
    count = curBuff.GetValue2()
    #无剩余
    if count <= 0:
        return
    #已经死亡不触发
    if GameObj.GetHP(defender) <= 0:
        return
    singleAddHP = curBuff.GetValue() + curBuff.GetValue1() * ChConfig.Def_PerPointValue
    SkillCommon.SkillAddHP(defender, curSkill.GetSkillTypeID(), singleAddHP * count)
    return
def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
    curEffect = curSkill.GetEffect(0)
    cureType = curEffect.GetEffectValue(2)
    cureHP = SkillCommon.GetCureHP(attacker, defender, curSkill, cureType, largeNum=True) # 支持超20E
    buffTime = curSkill.GetLastTime()
    buffTick = SkillShell.GetProcessBuffTick(curSkill, defender)
    count = int(buffTime / buffTick)
    GameWorld.DebugLog("BuffProcess_1308.CalcBuffValue: cureHP=%s,count=%s,atkID=%s,defID=%s" % (cureHP, count, attacker.GetID(), defender.GetID()))
    return [cureHP % ChConfig.Def_PerPointValue, cureHP / ChConfig.Def_PerPointValue, count]