7339 子 【开发】【2.0】称号,灵宠,技能附带效果 / 【后端】【2.0】新增效果
5个文件已修改
123 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
@@ -29,6 +29,7 @@
import PyGameData
import GameFuncComm
import EventShell
import PlayerPet
#关联类型
(
@@ -239,7 +240,31 @@
    DoAddActivity(curPlayer, addValue, True)
    return
def DoAddActivity(curPlayer, addValue, isMultiple=False):
def DoAddActivityByLV(curPlayer, befLV, aftLV):
    ##升级增加活跃点
    perLVAddPoint = IpyGameDataPY.GetFuncCfg('ImmortalDomainActivePoint', 3)
    skillTypeID, perAddLV, addPoint, maxPoint = IpyGameDataPY.GetFuncEvalCfg('ImmortalDomainActivePoint', 4)
    learnSkillList, passiveSkillList = PlayerPet.GetPetLearnSkill(curPlayer)
    addValue = (aftLV-befLV)*perLVAddPoint
    if skillTypeID in passiveSkillList:
        for lv in xrange(befLV+1, aftLV+1):
            addValue += min((lv-1)/perAddLV * addPoint, maxPoint)
    DoAddActivity(curPlayer, addValue, False, True)
    return
def AddActivityByLVOnLearnSkill(curPlayer, skillID):
    ## 获得技能时,处理增加升级获得活跃点效果
    skillTypeID, perAddLV, addPoint, maxPoint = IpyGameDataPY.GetFuncEvalCfg('ImmortalDomainActivePoint', 4)
    if skillID != skillTypeID:
        return
    curLV = curPlayer.GetLV()
    addValue = 0
    for lv in xrange(2, curLV+1):
        addValue += min((lv-1)/perAddLV * addPoint, maxPoint)
    DoAddActivity(curPlayer, addValue, False, True)
    return
def DoAddActivity(curPlayer, addValue, isMultiple=False, isLVUp=False):
    if not addValue:
        return
    multiple = 1
@@ -253,7 +278,7 @@
        addValue = addValue + addExtraPoint
    curTotalPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint)
    __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint, curTotalPoint + addValue)
    AddCanCostActivityPoint(curPlayer, addValue)
    AddCanCostActivityPoint(curPlayer, addValue, isLVUp)
    historyPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityHistoryPoint)
    __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityHistoryPoint,
                    min(ChConfig.Def_UpperLimit_DWord, historyPoint + addValue))
@@ -280,10 +305,14 @@
        return multiple, extraPointLimit
    return actRealmPointIpyData.GetMultiple(), actRealmPointIpyData.GetPointLimit()
def AddCanCostActivityPoint(curPlayer, addValue):
def AddCanCostActivityPoint(curPlayer, addValue, isLVUp):
    # 增加可消耗的活跃点
    curPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint)
    __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint, min(IpyGameDataPY.GetFuncCfg('ImmortalDomainActivePoint'), curPoint + addValue))
    if isLVUp:
        updPoint = min(ChConfig.Def_UpperLimit_DWord, curPoint + addValue)
    else:
        updPoint = min(IpyGameDataPY.GetFuncCfg('ImmortalDomainActivePoint'), curPoint + addValue)
    __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint, updPoint)
    return
def CostActivityPoint(curPlayer, costPoint, isOnlyCheck=False):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3451,8 +3451,8 @@
    if addPoint == None:
        raise Exception('玩家获得升级属性点异常, curLV = %s PlayerID = %s' % (curLV, curPlayerID))
        return
    return int(addPoint) + GetFabaoAddPoint(curPlayer)
    multiple = GetLVAddPointMultiple(curPlayer)
    return int(addPoint+ GetFabaoAddPoint(curPlayer)) * multiple
def GetAllPointByLV(curPlayer):
    ##获取当前等级可得到属性点数
@@ -3460,19 +3460,28 @@
    curLV = curPlayer.GetLV()
    if curLV < openLV:
        return 0
    # 初始点+升级点+境界点
    # 初始点+(升级点+法宝效果)*称号效果倍数+境界点
    setFreePoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 2)
    fabaoAddPoint = GetFabaoAddPoint(curPlayer)
    multiple = GetLVAddPointMultiple(curPlayer)
    addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
    for rangLVs, point in addPointDict.items():
        if curLV < rangLVs[0]:
            continue
        setFreePoint += (point + fabaoAddPoint) * (min(curLV, rangLVs[1]) - rangLVs[0] + 1)
        setFreePoint += (point + fabaoAddPoint) * multiple * (min(curLV, rangLVs[1]) - rangLVs[0] + 1)
    
    #境界提升点数
    setFreePoint += curPlayer.GetOfficialRank() * IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 3)
    return setFreePoint
def GetLVAddPointMultiple(curPlayer):
    # 获取等级加点的倍数
    multiple = 1
    titleID = IpyGameDataPY.GetFuncCfg("TitleAddPoint")
    if titleID and curPlayer.GetDienstgradManager().GetDienstgrad(titleID):
        multiple = IpyGameDataPY.GetFuncCfg("TitleAddPoint", 2) or 1
    return multiple
def GetFabaoAddPoint(curPlayer):
    #法宝额外增加玩家每级获得的灵根点
    mwID = IpyGameDataPY.GetFuncCfg('FabaoAddPoint', 1)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py
@@ -26,6 +26,8 @@
import PassiveBuffEffMng
import DataRecordPack
import CrossPlayerData
import GameFuncComm
import ShareDefine
import time
#-------------------------------------------------------------
@@ -132,7 +134,8 @@
        __GiveSkill(curPlayer, skillID)
        
    CrossPlayerData.OnDienstgradChange(curPlayer, dienstgradID, 1)
    if dienstgradID == IpyGameDataPY.GetFuncCfg("TitleAddPoint"):
        __DoTitleAddPoint(curPlayer)
    #重新刷新角色属性
    if isRefreshAttr:
        CalcAllDienstgradAttr(curPlayer)
@@ -141,6 +144,28 @@
    return True
# 获得称号加点
def __DoTitleAddPoint(curPlayer):
    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_AddPoint):
        # 未开启前不可加点,因为DoAddPointOpen会一次性补齐,避免意外情况多加了点数
        return
    addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
    fabaoAddPoint = PlayerControl.GetFabaoAddPoint(curPlayer)
    multiple = PlayerControl.GetLVAddPointMultiple(curPlayer)
    curLV = curPlayer.GetLV()
    addFreePoint = 0
    for rangLVs, point in addPointDict.items():
        if curLV < rangLVs[0]:
            continue
        addFreePoint += (fabaoAddPoint + point) * (multiple-1) * (min(curLV, rangLVs[1]) - rangLVs[0] + 1)
    freePoint = curPlayer.GetFreePoint()
    updFreePoint = freePoint + addFreePoint
    curPlayer.SetFreePoint(updFreePoint)
    GameWorld.DebugLog("获得称号增加自由属性点: freePoint=%s,addFreePoint=%s,curLV=%s,updFreePoint=%s"
                       % (freePoint, addFreePoint, curLV, updFreePoint))
    return
# 从称号获得技能
def __GiveSkill(curPlayer, skillResID):
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
@@ -110,19 +110,8 @@
            sysMark = IpyGameDataPY.GetFuncEvalCfg('UnblockTreasure', 2, {}).get(mwID, 'UnblockTreasure')
            PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), mwID])
        if mwID == IpyGameDataPY.GetFuncCfg('FabaoAddPoint', 1):
            addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
            fabaoAddPoint = IpyGameDataPY.GetFuncCfg('FabaoAddPoint', 2)
            curLV = curPlayer.GetLV()
            addFreePoint = 0
            for rangLVs, point in addPointDict.items():
                if curLV < rangLVs[0]:
                    continue
                addFreePoint += fabaoAddPoint * (min(curLV, rangLVs[1]) - rangLVs[0] + 1)
            freePoint = curPlayer.GetFreePoint()
            updFreePoint = freePoint + addFreePoint
            curPlayer.SetFreePoint(updFreePoint)
            GameWorld.DebugLog("激活法宝增加自由属性点: freePoint=%s,addFreePoint=%s,curLV=%s,updFreePoint=%s"
                               % (freePoint, addFreePoint, curLV, updFreePoint))
            __DoFabaoAddPoint(curPlayer)
    EventShell.EventRespons_MagicWeaponLV(curPlayer, mwID, mwLV)
    #通知客户端等级
@@ -153,7 +142,27 @@
    DataRecordPack.DR_MagicWeaponActive(curPlayer, mwID, mwLV)
    return True
# 获得法宝加点
def __DoFabaoAddPoint(curPlayer):
    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_AddPoint):
        # 未开启前不可加点,因为DoAddPointOpen会一次性补齐,避免意外情况多加了点数
        return
    addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
    fabaoAddPoint = PlayerControl.GetFabaoAddPoint(curPlayer)
    multiple = PlayerControl.GetLVAddPointMultiple(curPlayer)
    curLV = curPlayer.GetLV()
    addFreePoint = 0
    for rangLVs, point in addPointDict.items():
        if curLV < rangLVs[0]:
            continue
        addFreePoint += fabaoAddPoint * multiple * (min(curLV, rangLVs[1]) - rangLVs[0] + 1)
    freePoint = curPlayer.GetFreePoint()
    updFreePoint = freePoint + addFreePoint
    curPlayer.SetFreePoint(updFreePoint)
    GameWorld.DebugLog("获得法宝增加自由属性点: freePoint=%s,addFreePoint=%s,curLV=%s,updFreePoint=%s"
                       % (freePoint, addFreePoint, curLV, updFreePoint))
    return
def GetWMIpyData(mwID):return IpyGameDataPY.GetIpyGameData('Treasure', mwID)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -41,6 +41,7 @@
import CalcNoLineEffect
import CrossPlayerData
import CalcLineEffect
import PlayerActivity
import random
import math
@@ -708,7 +709,9 @@
            #广播
            sysMark = sysMarkList[i] if i < len(sysMarkList) else 'PetUpLv'
            PlayerControl.WorldNotify(0, sysMark, [playerName, petNPCID, limitPetClassLV, skillid])
            #增加升级活跃点效果
            PlayerActivity.AddActivityByLVOnLearnSkill(curPlayer, skillid)
        if not learnSkillList and updClassLV + 1 == maxClassLV:
            PlayerControl.WorldNotify(0, 'PetUpLvMax', [playerName, petNPCID])
        # 如果是当前出战的宠物, 则该宠物学习技能