hxp
2025-09-03 efaf363493930c5148271e5a50bbddd07909e110
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -32,7 +32,6 @@
import DataRecordPack
#import ChItem
import ShareDefine
import PlayerGreatMaster
import PlayerHorse
import GameObj
import random
@@ -1891,9 +1890,9 @@
#        if not PlayerHorse.CheckLearnHorseSkill(curPlayer, curSkillTypeID):
#            return False
    #天赋技学习点数判断
    if upSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
        if not PlayerGreatMaster.GetGreatMasterFreeSkillPoint(curPlayer):
            return False
    #if upSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
    #    if not PlayerGreatMaster.GetGreatMasterFreeSkillPoint(curPlayer):
    #        return False
        
    #经验检测
    skillLvUpNeedExp = upSkill.GetLVUpCostExp()
@@ -1958,8 +1957,8 @@
        #GeRen_jin_474794  <n color="255,255,0" BKCOLOR="0,0,0">您消耗了经验值:</n><n color="0,190,255" BKCOLOR="0,0,0">{%S1%}</n>
        PlayerControl.NotifyCode(curPlayer, "GeRen_jin_474794", [skillLvUpNeedExp])
    
    if upSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
        PlayerGreatMaster.AddGreatMasterSkillPointByLV(curPlayer, -1)
    #if upSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
    #    PlayerGreatMaster.AddGreatMasterSkillPointByLV(curPlayer, -1)
    return True
#---------------------------------------------------------------------
##检测学习技能需求条件
@@ -2034,11 +2033,11 @@
    needBaseAttrID, needBaseAttrValue = GetSkillUpNeedAttr(stateSkillLV)
    if needBaseAttrID and needBaseAttrValue:
        baseAttrDict = {
                            ShareDefine.Def_Effect_Metal:PlayerControl.GetMetal(curPlayer),
                            ShareDefine.Def_Effect_Wood:PlayerControl.GetWood(curPlayer),
                            ShareDefine.Def_Effect_Water:PlayerControl.GetWater(curPlayer),
                            ShareDefine.Def_Effect_Fire:PlayerControl.GetFire(curPlayer),
                            ShareDefine.Def_Effect_Earth:PlayerControl.GetEarth(curPlayer),
                            #ShareDefine.Def_Effect_Metal:PlayerControl.GetMetal(curPlayer),
                            #ShareDefine.Def_Effect_Wood:PlayerControl.GetWood(curPlayer),
                            #ShareDefine.Def_Effect_Water:PlayerControl.GetWater(curPlayer),
                            #ShareDefine.Def_Effect_Fire:PlayerControl.GetFire(curPlayer),
                            #ShareDefine.Def_Effect_Earth:PlayerControl.GetEarth(curPlayer),
                         }
        if needBaseAttrID not in baseAttrDict:
            GameWorld.ErrLog('    技能升级属性点条件配置错误,curSkillTypeID=%s,needBaseAttrID=%s'%(curSkillTypeID, needBaseAttrID))
@@ -2171,11 +2170,11 @@
    if skillTypeID not in PyGameData.g_elemntSkillDict:
        return isNotify, hasChangeLV
    baseAttrDict = {
                            ShareDefine.Def_Effect_Metal:PlayerControl.GetMetal(curPlayer),
                            ShareDefine.Def_Effect_Wood:PlayerControl.GetWood(curPlayer),
                            ShareDefine.Def_Effect_Water:PlayerControl.GetWater(curPlayer),
                            ShareDefine.Def_Effect_Fire:PlayerControl.GetFire(curPlayer),
                            ShareDefine.Def_Effect_Earth:PlayerControl.GetEarth(curPlayer),
                            #ShareDefine.Def_Effect_Metal:PlayerControl.GetMetal(curPlayer),
                            #ShareDefine.Def_Effect_Wood:PlayerControl.GetWood(curPlayer),
                            #ShareDefine.Def_Effect_Water:PlayerControl.GetWater(curPlayer),
                            #ShareDefine.Def_Effect_Fire:PlayerControl.GetFire(curPlayer),
                            #ShareDefine.Def_Effect_Earth:PlayerControl.GetEarth(curPlayer),
                         }
    activeSkillLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SkillElementLV % skillTypeID)
    limitInfoList = PyGameData.g_elemntSkillDict[skillTypeID]
@@ -2594,8 +2593,8 @@
# @remarks 刷新玩家场景状态
def ProcessPlayerAreaState(curPlayer):
    #初始化所有的场景buff状态
    playerControl = PlayerControl.PlayerControl(curPlayer)
    playerControl.InitMapBuffState()
    #playerControl = PlayerControl.PlayerControl(curPlayer)
    #playerControl.InitMapBuffState()
    
    buffManager = curPlayer.GetMapBuff()
    
@@ -2621,89 +2620,6 @@
            callFunc(curPlayer, curEffect)
    return
#---------------------------------------------------------------------
##添加装备触发的Buff
# @param curPlayer 玩家实例
# @param curEquip 装备实例
# @return 返回值无意义
# @remarks 添加装备触发的Buff
def RefreshSkillBuffByEquip(curPlayer, curEquip) :
    #一般装备新增Buff
    __DoEquip_AddBuff(curPlayer, curEquip)
    return
#---------------------------------------------------------------------
##添加装备触发的Buff, 一般装备新增Buff
# @param curPlayer 玩家实例
# @param curEquip 装备实例
# @return 返回值无意义
# @remarks 添加装备触发的Buff, 一般装备新增Buff
def __DoEquip_AddBuff(curPlayer, curEquip):
    gameData = GameWorld.GetGameData()
    playerVehicle = curPlayer.GetPlayerVehicle()
    houseState = curPlayer.GetPlayerRidehorseState()
    for index in range(0 , curEquip.GetAddSkillCount()):
        curSkillID = curEquip.GetAddSkill(index)
        if curSkillID == 0:
            continue
        #通过技能ID获得使用技能
        curSkill = gameData.GetSkillBySkillID(curSkillID)
        if curSkill == None :
            GameWorld.Log("装备触发技能,物品表错误 curSkillID = %s"%(curSkillID) , curPlayer.GetPlayerID())
            continue
        #骑马触发技能
        houseSkill = ChConfig.Def_Skill_TypeID_Speed
        curSkillType = curSkill.GetSkillTypeID()
        if not SkillCommon.IsBuff(curSkill):
            continue
        if curSkillType in houseSkill:
            #不使用,不添加buff
            if playerVehicle != IPY_GameWorld.pvHorse :
                continue
            if curSkillType == houseSkill[0] and houseState != IPY_GameWorld.prsNormal :
                continue
            if curSkillType == houseSkill[1] and houseState != IPY_GameWorld.prsRun :
                continue
        #添加Buff
        BuffSkill.AddBuffNoRefreshState(curPlayer, IPY_GameWorld.bfEquipBuff, curSkill, 0, [], buffOwner = curPlayer)
    return
#---------------------------------------------------------------------
##刷新buff的效果
# @param buffState Buff管理器
# @param sameEffectCanWork 是否可以叠加相同效果, <sameEffectCanWork> : 效果是否可以叠加, 默认为否
# @return 返回值无意义
# @remarks 刷新buff的效果 (参数 -> buff管理器,是否叠加)
def __RefreshSkillBuffEffect(buffState, sameEffectCanWork = False):
    return
    #===========================================================================
    # buffState.ClearEffects()
    # for buffIndex in range(0, buffState.GetBuffCount()):
    #    curBuff = buffState.GetBuff(buffIndex)
    #    buffValue = curBuff.GetValue()
    #    curSkill = curBuff.GetSkill()
    #    skillID = curSkill.GetSkillID()
    #    if skillID == 0:
    #        continue
    #
    #    for effectIndex in range(0, curSkill.GetEffectCount()):
    #        curEffect = curSkill.GetEffect(effectIndex)
    #        effectID = curEffect.GetEffectID()
    #        if effectID == 0:
    #            continue
    #
    #        buffState.AddEffect(curEffect, buffValue, skillID, curBuff.GetOwnerID(), curBuff.GetOwnerType())
    #===========================================================================
#---------------------------------------------------------------------
##计算效果值
@@ -2807,35 +2723,6 @@
    
    return ChConfig.Def_CalcAttrIndexDict[(isBaseEff, calcType)]
##刷新玩家所有影响属性的Buff,添加时只重计算同类型BUFF,删除时刷新所有类型BUFF
# @param curPlayer 玩家实例
# @param buffType buff类型 -1代表全部刷性
# @return 返回值无意义
def RefreshPlayerBuffOnAttrAddEffect(curPlayer, buffType=-1):
    return
#===============================================================================
#    GameWorld.DebugLog("Start RefreshPlayerBuffOnAttrAddEffect!!!")
#
#    #[[BuffState, CanPileup]]
#    if buffType == -1:
#        buffRefreshList = [
#            [curPlayer.GetBuffState(), False], [curPlayer.GetDeBuffState(), False],
#            [curPlayer.GetAura(), False], [curPlayer.GetIncBuff(), True],
#            [curPlayer.GetPassiveBuf(), True], [curPlayer.GetEquipBuff(), True],
#                       ]
#    else:
#        #只重计算改变的BUFF, 这里不防范非属性类型BUFF外层过滤
#        buffManagerInfo = SkillCommon.GetBuffManagerByBuffType(curPlayer, buffType)
#        buffRefreshList = [[buffManagerInfo[0],  buffManagerInfo[2]]]
#
#    #执行刷新逻辑
#    __DoRefreshBuff(buffRefreshList)
#
#    return
#===============================================================================
# 通过技能ID删除buff对应的效果ID
def ClearBuffEffectBySkillID(curObj, skillID, ownerID, ownerType):
    curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
@@ -2936,18 +2823,6 @@
    for i in effectIndexList:
        buffState.DeleteEffectByIndex(i)
        
##刷新管理器中的Buff
# @param buffRefreshList Buff刷新列表[[BuffState, CanPileup]]
# @return 返回值无意义
# @remarks 按照叠加规则, 刷新指定管理中的Buff
def __DoRefreshBuff(buffRefreshList):
    for buffState, canPileUp in buffRefreshList:
        __RefreshSkillBuffEffect(buffState, canPileUp)
    return
##计算行为BUFF对人物行为状态的改变
# @param curPlayer 玩家实例
@@ -3618,7 +3493,7 @@
        #调用攻击惩罚逻辑
        BaseAttack.DoLogic_AttackResult(attacker, defender, None, tick)
        TurnAttack.OnTurnfightAttackResult(attacker, defender, curSkill)
        #TurnAttack.OnTurnfightAttackResult(attacker, defender, curSkill)
        
    return
#---------------------------------------------------------------------