6603 【后端】【2.0】增加新版的sp和被动技能 -- 印记通知修改
| | |
| | | CDBPlayerRefresh_LuckyHitReduce, # 会心伤害减免固定值
|
| | | CDBPlayerRefresh_FinalHurtReducePer, # 最终伤害减少百分比
|
| | | CDBPlayerRefresh_YinjiTime, # 每X秒减少印记时间,毫秒
|
| | | ) = range(146, 214)
|
| | | CDBPlayerRefresh_YinjiCnt, # 当前印记数 215
|
| | | ) = range(146, 215)
|
| | |
|
| | | TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子)
|
| | | TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
|
| | |
| | |
|
| | | # 根据伤血类型触发技能,群攻只触发一次,放在伤血列表被清之前
|
| | | OnHurtTypeTriggerSkill(attacker, defender, curSkill, tick)
|
| | | #释放技能即可处理的 不区分攻击和非攻击
|
| | | PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SkillSuccess, tick)
|
| | |
|
| | | # 普通或者可以主动释放的攻击性技能
|
| | | if not curSkill or (curSkill.GetSkillType() == ChConfig.Def_SkillType_Atk and\
|
| | |
| | |
|
| | | #---SetDict 玩家字典KEY,不存于数据库---
|
| | | # key的长度不能超过29个字节
|
| | | Def_PlayerKey_YinjiCnt = "YinjiCnt" # 当前印记数
|
| | | Def_PlayerKey_LostYinjiTime = "LostYinjiTime" # 每X秒自动消失一个印记
|
| | | Def_PlayerKey_1314HurtCount = "1314cnt" # 类剑刃风暴技能的1314效果,伤害次数处理
|
| | | Def_PlayerKey_FirstDefender = "FDID" # 第一个防守者,只用于比较
|
| | |
| | | TriggerType_AddThumpHitRate, # 提高重击概率 73
|
| | | TriggerType_ThumpHit, # 重击时 触发技能74
|
| | | TriggerType_AddThumpHitPer, # 重击时 增加重击百分比 75
|
| | | ) = range(1, 76)
|
| | | TriggerType_SkillSuccess, # 任何技能释放成功都可触发 76
|
| | | ) = range(1, 77)
|
| | |
|
| | |
|
| | | #不可以佩戴翅膀的地图
|
| | |
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_LostYinjiTime, value)
|
| | | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_YinjiTime, value, False)
|
| | |
|
| | | # 当前印记数
|
| | | def GetYinjiCnt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_YinjiCnt)
|
| | | def SetYinjiCnt(curPlayer, value): |
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_YinjiCnt, value)
|
| | | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_YinjiCnt, value, False)
|
| | | |
| | | ## 计算功能背包物品属性
|
| | | # @param curPlayer 当前玩家
|
| | | # @param packType 背包类型
|
| | |
| | | import GameWorld
|
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | | import ChConfig
|
| | | import ShareDefine
|
| | |
|
| | | Def_LastYinji_Tick = "lastyjtick" # 上一次印记消失时间
|
| | |
|
| | | #CDBPlayerRefresh_XP
|
| | | def AddYinji(curPlayer, cnt):
|
| | | beforeCnt = GetYinjiCnt(curPlayer)
|
| | | beforeCnt = PlayerControl.GetYinjiCnt(curPlayer)
|
| | | #上限 X个
|
| | | curPlayer.SetXP(min(beforeCnt + cnt, IpyGameDataPY.GetFuncCfg('Yinji', 2)))
|
| | | PlayerControl.SetYinjiCnt(curPlayer, min(beforeCnt + cnt, IpyGameDataPY.GetFuncCfg('Yinji', 2)))
|
| | |
|
| | | if beforeCnt == 0:
|
| | | # 第一次加印记需重计时
|
| | |
| | | return
|
| | |
|
| | | def SubYinji(curPlayer, cnt):
|
| | | curPlayer.SetXP(max(curPlayer.GetXP() - cnt, 0))
|
| | | PlayerControl.SetYinjiCnt(curPlayer, max(curPlayer.GetXP() - cnt, 0))
|
| | | return
|
| | |
|
| | | def GetYinjiCnt(curPlayer):
|
| | | return curPlayer.GetXP()
|
| | |
|
| | |
|
| | | # 每X秒自动减少1个印记
|
| | | def ProcessPlayerYinji(curPlayer, tick):
|
| | | if GetYinjiCnt(curPlayer) == 0:
|
| | | if PlayerControl.GetYinjiCnt(curPlayer) == 0:
|
| | | return
|
| | |
|
| | | if tick - curPlayer.GetDictByKey(Def_LastYinji_Tick) < PlayerControl.GetLostYinjiTime(curPlayer):
|
| | |
| | | CDBPlayerRefresh_LuckyHitReduce, # 会心伤害减免固定值
|
| | | CDBPlayerRefresh_FinalHurtReducePer, # 最终伤害减少百分比
|
| | | CDBPlayerRefresh_YinjiTime, # 每X秒减少印记时间,毫秒
|
| | | ) = range(146, 214)
|
| | | CDBPlayerRefresh_YinjiCnt, # 当前印记数 215
|
| | | ) = range(146, 215)
|
| | |
|
| | | TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子)
|
| | | TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
|
| | |
| | | #
|
| | | #---------------------------------------------------------------------
|
| | | #导入
|
| | | import PlayerYinji
|
| | | import PlayerControl
|
| | | import ChConfig
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | |
| | | # @return 总值
|
| | | def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
|
| | |
|
| | | return [PlayerYinji.GetYinjiCnt(defender)]
|
| | | return [PlayerControl.GetYinjiCnt(defender)]
|
| | |
|
| | |
|
| | |
|
| | |
| | |
|
| | | import ChConfig
|
| | | import AttackCommon
|
| | | import PlayerYinji
|
| | | import PlayerControl
|
| | |
|
| | |
|
| | | def CheckCanHappen(attacker, defender, effect, curSkill):
|
| | |
| | | return False
|
| | |
|
| | |
|
| | | return True if PlayerYinji.GetYinjiCnt(attacker) else False
|
| | | return True if PlayerControl.GetYinjiCnt(attacker) else False
|
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0)*min(PlayerYinji.GetYinjiCnt(attacker), effect.GetEffectValue(1)))/ChConfig.Def_MaxRateValue
|
| | | return float(effect.GetEffectValue(0)*min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(1)))/ChConfig.Def_MaxRateValue
|
| | |
| | | #
|
| | | #---------------------------------------------------------------------
|
| | | import ChConfig
|
| | | import PlayerYinji
|
| | | import PlayerControl
|
| | |
|
| | |
|
| | | def CheckCanHappen(attacker, defender, effect, curSkill):
|
| | |
|
| | | return True if PlayerYinji.GetYinjiCnt(attacker) >= effect.GetEffectValue(1) else False
|
| | | return True if PlayerControl.GetYinjiCnt(attacker) >= effect.GetEffectValue(1) else False
|
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | |
| | | #
|
| | | #---------------------------------------------------------------------
|
| | | import ChConfig
|
| | | import PlayerYinji
|
| | | import PlayerControl
|
| | |
|
| | |
|
| | | def CheckCanHappen(attacker, defender, effect, curSkill):
|
| | | if PlayerYinji.GetYinjiCnt(attacker) < effect.GetEffectValue(1):
|
| | | if PlayerControl.GetYinjiCnt(attacker) < effect.GetEffectValue(1):
|
| | | return False
|
| | |
|
| | | PlayerYinji.SubYinji(attacker, effect.GetEffectValue(1))
|
| | | # 4092 处理消耗
|
| | | #PlayerYinji.SubYinji(attacker, effect.GetEffectValue(1))
|
| | | return True
|
| | |
|
| | |
|
| | |
| | | #
|
| | | #---------------------------------------------------------------------
|
| | | import ChConfig
|
| | | import PlayerYinji
|
| | | import PlayerControl
|
| | |
|
| | |
|
| | | def CheckCanHappen(attacker, defender, effect, curSkill):
|
| | | if not PlayerYinji.GetYinjiCnt(attacker):
|
| | | if not PlayerControl.GetYinjiCnt(attacker):
|
| | | return False
|
| | |
|
| | | PlayerYinji.SubYinji(attacker, min(PlayerYinji.GetYinjiCnt(attacker), effect.GetEffectValue(1)))
|
| | | # 4092 处理消耗
|
| | | #PlayerYinji.SubYinji(attacker, min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(1)))
|
| | | return True
|
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0)*min(PlayerYinji.GetYinjiCnt(attacker), effect.GetEffectValue(1)))/ChConfig.Def_MaxRateValue
|
| | | return float(effect.GetEffectValue(0)*min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(1)))/ChConfig.Def_MaxRateValue
|
| | |
| | | # @note:
|
| | | #
|
| | | #---------------------------------------------------------------------
|
| | | import PlayerYinji
|
| | | import PlayerControl
|
| | |
|
| | |
|
| | | def CheckCanHappen(attacker, defender, effect, curSkill):
|
| | | cnt = PlayerYinji.GetYinjiCnt(attacker)
|
| | | cnt = PlayerControl.GetYinjiCnt(attacker)
|
| | | if cnt == 0:
|
| | | return False
|
| | |
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #
|
| | | ##@package
|
| | | #
|
| | | # @todo: 使用技能后减少印记数量 消耗模式0:固定个数,1.大于1小于限制个数可释放
|
| | | #
|
| | | # @author: Alee
|
| | | # @date 2019-4-26 下午05:52:27
|
| | | # @version 1.0
|
| | | #
|
| | | # @note: |
| | | #
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | | import PlayerYinji
|
| | | import PlayerControl
|
| | |
|
| | | def CheckCanHappen(attacker, defender, effect, curSkill):
|
| | | delType = effect.GetEffectValue(1)
|
| | | |
| | | if delType == 0:
|
| | | PlayerYinji.SubYinji(attacker, effect.GetEffectValue(0))
|
| | | elif delType == 1:
|
| | | PlayerYinji.SubYinji(attacker, min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(0)))
|
| | | return False |
| | |
| | | 4082:ChConfig.TriggerType_ThumpHit, # 对第一目标重击触发技能
|
| | | 4083:ChConfig.TriggerType_AddThumpHitPer, # 增加重击伤害百分比
|
| | | 4084:ChConfig.TriggerType_ThumpHit, # 对第一目标重击触发技能
|
| | | 4085:ChConfig.TriggerType_AttackOver, |
| | | 4085:ChConfig.TriggerType_SkillSuccess, # 任何技能释放成功都可触发 76 加印记
|
| | | 4086:ChConfig.TriggerType_AttackAddSkillPer, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
|
| | | 4087:ChConfig.TriggerType_AttackAddSkillPer, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
|
| | | 4088:ChConfig.TriggerType_AttackAddSkillPer, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
|
| | | 4089:ChConfig.TriggerType_AttackAddSkillPer, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
|
| | | 4090:ChConfig.TriggerType_AttackOver, # 攻击(对敌技能)后被动技能被触发 4
|
| | | 4091:ChConfig.TriggerType_SkillOverNoAttack, # 技能释放后 与TriggerType_AttackOver相反19,
|
| | | 4092:ChConfig.TriggerType_SkillSuccess, # 任何技能释放成功都可触发 76 减印记
|
| | | }
|
| | | return tdict.get(effectID, -1)
|
| | | #===========================================================================
|