10258 【越南】【砍树】新增古宝特殊效果(增加灵根点效果;增加提升坐骑基础属性X%;坐骑每升X级加X点属性)
5个文件已修改
112 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py
@@ -56,7 +56,7 @@
                if gubaoID not in gubaoIDList:
                    gubaoIDList.append(gubaoID)
                PlayerGubao.SetGubaoLVInfo(curPlayer, gubaoID, 0, 0)
                for effType in PlayerGubao.GubaoEffTtemIypeList:
                for effType in PlayerGubao.NeedGubaoItemEffValueTypeList:
                    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), 0)
                    
            PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, force=True)
@@ -95,8 +95,8 @@
        if len(msgList) != 4:
            return
        _, gubaoID, effType, effValue = msgList
        if effType not in PlayerGubao.GubaoEffTtemIypeList:
            GameWorld.DebugAnswer(curPlayer, "古宝物品效果类型仅包含:%s" % str(PlayerGubao.GubaoEffTtemIypeList))
        if effType not in PlayerGubao.NeedGubaoItemEffValueTypeList:
            GameWorld.DebugAnswer(curPlayer, "古宝效果值类型仅包含:%s" % str(PlayerGubao.NeedGubaoItemEffValueTypeList))
            return
        ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID)
        if not ipyData:
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4374,6 +4374,7 @@
                curPlayer.SetBasePHY(aftBasePHY)
            if aftBaseCON > befBaseCON:
                curPlayer.SetBaseCON(aftBaseCON)
            PlayerGubao.DoGubaoAddFreePoint(curPlayer)
            #===================================================================
            # if curPlayer.GetXP() != befXP:
            #    curPlayer.SetXP(curPlayer.GetXP())
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py
@@ -58,6 +58,12 @@
                        GubaoEffType_CrossRealmPK,
                        ]
# 古宝灵根点特殊效果列表
GubaoEffFreePointTypeList = [54, 55, 56]
# 需要记录EffValue的EffType列表
NeedGubaoItemEffValueTypeList = GubaoEffAttrIypeList + GubaoEffTtemIypeList + GubaoEffFreePointTypeList
def GetGubaoLVInfo(curPlayer, gubaoID):
    lvInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoLVInfo % gubaoID)
    lv = lvInfo / 100
@@ -68,6 +74,7 @@
    return
def OnPlayerLogin(curPlayer):
    DoGubaoAddFreePoint(curPlayer) # 上线检查一下,修改配置可生效
    Sync_GubaoInfo(curPlayer)
    Sync_GubaoItemEffInfo(curPlayer)
    Sync_GubaoPieceInfo(curPlayer)
@@ -156,6 +163,7 @@
    lv, star = 1, 1
    SetGubaoLVInfo(curPlayer, gubaoID, lv, star)
    GameWorld.Log("古宝激活成功! gubaoID=%s" % gubaoID, playerID)
    DoGubaoAddFreePoint(curPlayer, gubaoID)
    
    RefreshGubaoAttr(curPlayer)
    Sync_GubaoInfo(curPlayer, [gubaoID])
@@ -253,11 +261,79 @@
    updStar = star + 1
    SetGubaoLVInfo(curPlayer, gubaoID, lv, updStar)
    GameWorld.Log("古宝升星: gubaoID=%s,updStar=%s" % (gubaoID, updStar), playerID)
    DoGubaoAddFreePoint(curPlayer, gubaoID)
    RefreshGubaoAttr(curPlayer)
    Sync_GubaoInfo(curPlayer, [gubaoID])
    
    PlayerActGubao.OnGubaoCost(curPlayer, needPieceInfo, realNeedItemList)
    return
def DoGubaoAddFreePoint(curPlayer, gubaoID=0):
    playerID = curPlayer.GetPlayerID()
    effPointDict = {}
    if gubaoID:
        __calcStarEffAddFreePoint(curPlayer, gubaoID, effPointDict)
    else:
        ipyDataMgr = IpyGameDataPY.IPY_Data()
        for index in xrange(ipyDataMgr.GetGubaoCount()):
            ipyData = ipyDataMgr.GetGubaoByIndex(index)
            gubaoID = ipyData.GetGubaoID()
            __calcStarEffAddFreePoint(curPlayer, gubaoID, effPointDict)
    if not effPointDict:
        return
    unAddFreePointTotal = 0
    for effKey, addFreePointTotal in effPointDict.items():
        gubaoID, star, effType = effKey
        # 已增加的点数
        addFreePointAlready = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType))
        unAddFreePoint = max(0, addFreePointTotal - addFreePointAlready)
        unAddFreePointTotal += unAddFreePoint
        GameWorld.DebugLog("古宝星级增加灵根点: gubaoID=%s,star=%s,addFreePointTotal=%s,addFreePointAlready=%s,unAddFreePoint=%s,total=%s"
                           % (gubaoID, star, addFreePointTotal, addFreePointAlready, unAddFreePoint, unAddFreePointTotal), playerID)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), addFreePointTotal)
        if unAddFreePoint:
            Sync_GubaoItemEffInfo(curPlayer, gubaoID, effType, True)
    if unAddFreePointTotal <= 0:
        return
    freePoint = curPlayer.GetFreePoint()
    updFreePoint = freePoint + unAddFreePointTotal
    curPlayer.SetFreePoint(updFreePoint)
    return
def __calcStarEffAddFreePoint(curPlayer, gubaoID, effPointDict):
    _, star = GetGubaoLVInfo(curPlayer, gubaoID)
    if not star:
        return
    starIpyData = IpyGameDataPY.GetIpyGameData("GubaoStar", gubaoID, star)
    if not starIpyData:
        return
    starEffIDList = starIpyData.GetStarEffIDList()
    for effID in starEffIDList:
        effIpyData = IpyGameDataPY.GetIpyGameData("GubaoEffAttr", effID)
        if not effIpyData:
            continue
        effType = effIpyData.GetGubaoEffType()
        effCond = effIpyData.GetEffCond()
        effAttrValue = effIpyData.GetEffAttrValue()
        effKey = (gubaoID, star, effType)
        if effType == 54: # 增加x点灵根
            addFreePointTotal = effIpyData.GetEffAttrValue()
            effPointDict[effKey] = effPointDict.get(effKey, 0) + addFreePointTotal
        elif effType == 55: # 境界每级增加X点灵根
            realmLV = curPlayer.GetOfficialRank()
            addFreePointTotal = int(realmLV / effCond * effAttrValue)
            effPointDict[effKey] = effPointDict.get(effKey, 0) + addFreePointTotal
        elif effType == 56: # 等级每级增加X点灵根
            playerLV = curPlayer.GetLV()
            addFreePointTotal = int(playerLV / effCond * effAttrValue)
            effPointDict[effKey] = effPointDict.get(effKey, 0) + addFreePointTotal
    return
#// B2 18 古宝升级 #tagCMGubaoLVUp
#
@@ -762,6 +838,21 @@
        if attrID > 0 and addAttrValue > 0:
            effAttrInfo[attrID] = effAttrInfo.get(attrID, 0) + addAttrValue
            
    #57    坐骑基础属性提升x%
    elif effType == 57:
        customAttrDict = PlayerControl.GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Horse)[2]
        horseBaseAttrInfo = customAttrDict.get("horseBaseAttrInfo", {})
        #GameWorld.DebugLog("    effID=%s,effType=%s,horseBaseAttrInfo=%s,effAttrInfo=%s" % (effID, effType, horseBaseAttrInfo, effAttrInfo))
        __addStarEffFuncAttr(ipyData, effAttrInfo, horseBaseAttrInfo, effAttrValue)
    #58    坐骑每x级+xx属性                   x级
    elif effType == 58:
        horseLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserLV)
        addAttrValue = int(horseLV / effCond * effAttrValue)
        #GameWorld.DebugLog("    effID=%s,effType=%s,effCond=%s,horseLV=%s,attrID=%s,addAttrValue=%s" % (effID, effType, effCond, horseLV, attrID, addAttrValue))
        if attrID > 0 and addAttrValue > 0:
            effAttrInfo[attrID] = effAttrInfo.get(attrID, 0) + addAttrValue
    return
def __addStarEffFuncAttr(ipyData, effAttrInfo, funcAttrInfo, effAttrValue):
@@ -901,7 +992,7 @@
    else:
        syncIDList = [gubaoID]
        
    syncEffTypeList = [effType] if effType else GubaoEffTtemIypeList
    syncEffTypeList = [effType] if effType else NeedGubaoItemEffValueTypeList
    
    itemEffInfoList = []
    for gubaoID in syncIDList:
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -407,12 +407,14 @@
    allAttrListTrain = [{} for _ in range(4)]
    allAttrListStar = [{} for _ in range(4)]
    
    customAttrDictHorse = {}
    customAttrDictSkin = {}
    
    horseSpeed = 0 # 坐骑功能增加的速度值,骑乘时才有效果
    horseLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserLV)
    # 等阶培养属性
    #totalItemCount = 0
    horseBaseAttrInfo = {}
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    for index in xrange(ipyDataMgr.GetHorseLVUpCount()):
        horseIpyData = ipyDataMgr.GetHorseLVUpByIndex(index)
@@ -433,6 +435,7 @@
                horseSpeed += attrValue
                continue
            PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
            horseBaseAttrInfo[attrID] = horseBaseAttrInfo.get(attrID, 0) + attrValue
            
        # 培养丹增加属性
        upItemPerCount = horseIpyData.GetUpEatItemPerCount()
@@ -443,7 +446,10 @@
            for i, attrID in enumerate(upItemAttrTypeList):
                attrValue = upItemAttrValueList[i]
                PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrList)
                horseBaseAttrInfo[attrID] = horseBaseAttrInfo.get(attrID, 0) + attrValue * attrMultiple
    customAttrDictHorse["horseBaseAttrInfo"] = horseBaseAttrInfo
#    # 等阶培养丹累加个数属性
#    eatItemAttrInfo = IpyGameDataPY.GetFuncCfg("HorseUpItem", 3)
#    for attrID, attrValue in eatItemAttrInfo:
@@ -546,7 +552,7 @@
    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_HorseSoul, fightPowerEx)
    
    # 保存计算值
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Horse, allAttrList)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Horse, allAttrList, customAttrDict=customAttrDictHorse)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSoul, allAttrListHorseSoul)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSkin, allAttrListSkin, customAttrDict=customAttrDictSkin)
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseTarin, allAttrListTrain)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
@@ -30,6 +30,7 @@
import PlayerBillboard
import PlayerTongTianLing
import PassiveBuffEffMng
import PlayerGubao
import EventShell
import DataRecordPack
import SkillCommon
@@ -259,6 +260,7 @@
    curPlayer.SetOfficialRank(nextRealmLv)
    # 提升1级境界加点
    __DoRealmLVUpAddPoint(curPlayer)
    PlayerGubao.DoGubaoAddFreePoint(curPlayer)
    
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBIsOpen, 0)
    if needSys: