From 6d52c69be5170f6518ac9be8aa05bae7bfd26b54 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 21 七月 2025 14:24:43 +0800 Subject: [PATCH] 121 【武将】武将系统-服务端(去除旧属性;优化命令Hero、PrintFightPower;优化武将技能战力计算;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py | 188 +++------------------------------------------- 1 files changed, 15 insertions(+), 173 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py index 47ec39f..3452d8a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py @@ -46,6 +46,7 @@ import FBCommon import IpyGameDataPY import PyGameData +import TurnAttack #--------------------------------------------------------------------- GameWorld.ImportAll("Script\\Skill\\" , "GameSkills") GameWorld.ImportAll("Script\\Skill\\" , "GameBuffs") @@ -634,42 +635,6 @@ return False return True - - -##弓和弩普攻技能 -# @param curPlayer 玩家实例 -# @param skillID 技能ID -# @return 特别的普攻ID -#=============================================================================== -# def GetBowNormalAttackID(curPlayer, skillID): -# #刷新人物攻击距离 -# playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) -# #获得当前人物使用的武器 -# curUseWeapon = playerEquip.GetAt(ShareDefine.retWeapon) -# curUseWeapon2 = playerEquip.GetAt(ShareDefine.retWeapon2) -# #空手 -# if curUseWeapon.IsEmpty() and curUseWeapon2.IsEmpty(): -# return skillID -# -# if curUseWeapon.GetType() in [ChConfig.Def_ItemType_Crossbow, ChConfig.Def_ItemType_Bow]: -# curEffect = ItemCommon.GetItemEffectByEffectID(curUseWeapon, ChConfig.Def_Effect_WeaponAttack) -# if curEffect == None: -# GameWorld.DebugAnswer(curPlayer, '没有物品效果ID %s'%ChConfig.Def_Effect_WeaponAttack) -# return skillID -# -# return curEffect.GetEffectValue(0) -# -# if curUseWeapon2.GetType() in [ChConfig.Def_ItemType_Crossbow, ChConfig.Def_ItemType_Bow]: -# curEffect = ItemCommon.GetItemEffectByEffectID(curUseWeapon2, ChConfig.Def_Effect_WeaponAttack) -# if curEffect == None: -# GameWorld.DebugAnswer(curPlayer, '没有物品效果ID %s'%ChConfig.Def_Effect_WeaponAttack) -# return skillID -# -# return curEffect.GetEffectValue(0) -# -# return skillID -#=============================================================================== - #=============================================================================== # //B4 02 对象击退 #tagCMNPCBeatBack @@ -2069,11 +2034,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)) @@ -2206,11 +2171,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] @@ -2629,8 +2594,8 @@ # @remarks 刷新玩家场景状态 def ProcessPlayerAreaState(curPlayer): #初始化所有的场景buff状态 - playerControl = PlayerControl.PlayerControl(curPlayer) - playerControl.InitMapBuffState() + #playerControl = PlayerControl.PlayerControl(curPlayer) + #playerControl.InitMapBuffState() buffManager = curPlayer.GetMapBuff() @@ -2656,89 +2621,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()) - #=========================================================================== #--------------------------------------------------------------------- ##计算效果值 @@ -2842,35 +2724,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) @@ -2971,18 +2824,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 玩家实例 @@ -3653,7 +3494,8 @@ #调用攻击惩罚逻辑 BaseAttack.DoLogic_AttackResult(attacker, defender, None, tick) - + TurnAttack.OnTurnfightAttackResult(attacker, defender, curSkill) + return #--------------------------------------------------------------------- ##释放普通技能 -- Gitblit v1.8.0