| | |
| | | # @remarks 刷新玩家场景状态
|
| | | def ProcessPlayerAreaState(curPlayer):
|
| | | #初始化所有的场景buff状态
|
| | | playerControl = PlayerControl.PlayerControl(curPlayer)
|
| | | playerControl.InitMapBuffState()
|
| | | #playerControl = PlayerControl.PlayerControl(curPlayer)
|
| | | #playerControl.InitMapBuffState()
|
| | |
|
| | | buffManager = curPlayer.GetMapBuff()
|
| | |
|
| | |
| | | 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())
|
| | | #===========================================================================
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ##计算效果值
|
| | |
| | |
|
| | | 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)
|
| | |
| | | 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 玩家实例
|