#!/usr/bin/python # -*- coding: GBK -*- # # @todo: ÓÉ·þÎñ¶ËÖ÷µ¼É˺¦µÄ³ÖÐøÐÔ¼¼ÄÜ # # @author: Alee # @date 2017-11-3 ÏÂÎç04:22:55 # @version 1.0 # # @note: 2017-12-08 Ìí¼Ó±»¶¯Ôö¼Ó¼¼ÄÜÉ˺¦ # #--------------------------------------------------------------------- #µ¼Èë import GameWorld import SkillCommon import BaseAttack import ChConfig import PassiveBuffEffMng import SkillShell import GameObj import IPY_GameWorld import AttackCommon def ProcessBuff(tagObj, curBuff, curEffect, processBuffTick, tick): Attack(tagObj, curBuff, tick) #¼ä¸ô¹¥»÷£¬buffvalueµÚÒ»¸öֵΪ¹¥»÷´ÎÊý def Attack(tagObj, curBuff, tick): if curBuff.GetValue() == 0: return curSkill = curBuff.GetSkill() srcPosX, srcPosY = tagObj.GetPosX(), tagObj.GetPosY() #¹¥»÷Ч¹û skillEffect = SkillCommon.GetSkillEffectByEffectID(curSkill, ChConfig.Def_Skill_Effect_Attack) skillPer = 10000 skillEnhance = 0 if skillEffect != None: #¼¼ÄÜÔöÇ¿°Ù·Ö±È skillPer = skillEffect.GetEffectValue(0) multiple = curSkill.GetEffect(0).GetEffectValue(0) - curBuff.GetValue() + 1 # µÚ¼¸´Î¹¥»÷ skillPer += multiple*PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(tagObj, None, curSkill, ChConfig.TriggerType_AddSingleSkillPer) #¼¼ÄÜÔöǿֵ skillEnhance = skillEffect.GetEffectValue(1) else: GameWorld.ErrLog("ûÓй¥»÷Ч¹ûÏî%s ID=%s, Lv=%s"%(ChConfig.Def_Skill_Effect_Attack, curSkill.GetSkillID(), curSkill.GetSkillLV())) skillMatrix = None if curSkill.GetAtkType() == 12: # ÓнǶȹ¥»÷ attackRad = curSkill.GetAtkRadius() attackMatrix = ChConfig.Def_Angle_MatrixDict.get(attackRad) if attackMatrix == None: GameWorld.ErrLog("ÀàÐÍ´íÎó(%s), ÓнǶȵĹ¥»÷¾ØÕó"%attackRad) return False srcPosX, srcPosY = tagObj.GetPosX(), tagObj.GetPosY() tagRoundPosX, tagRoundPosY = tagObj.GetUseSkillPosX(), tagObj.GetUseSkillPosY() skillMatrix = GameWorld.MatrixCircle(attackMatrix, srcPosX, srcPosY, tagRoundPosX, tagRoundPosY) #¼ÆËãÆ«ÒÆ²úÉú¶µã£¬²¹×ãÄ¿±êµã desDist = GameWorld.GetDist(srcPosX, srcPosY, tagRoundPosX, tagRoundPosY) atkDist = curSkill.GetAtkDist() if atkDist != 0 and desDist <= atkDist: insertIndex = int(desDist/float(atkDist)*len(skillMatrix)) if (tagRoundPosX, tagRoundPosY) not in skillMatrix: skillMatrix.insert(insertIndex, (tagRoundPosX, tagRoundPosY)) #¹¥»÷´ÎÊý´¦Àí£¬ÅäÖÃΪ0µÄ˵Ã÷ÊÇÒÔ³ÖÐøÊ±¼äΪÖ÷ # SwordStormAttack ¿ÉÄÜÒò±»¶¯µ¼ÖÂ×Ô¼ºËÀÍö£¬ËùÒÔ²»ÄÜÔÚ¹¥»÷ºó´¦Àí curBuff.SetValue(max(curBuff.GetValue() - 1, 0)) BaseAttack.SwordStormAttack(tagObj, srcPosX, srcPosY, curSkill, skillPer, skillEnhance, skillMatrix, tick) PassiveBuffEffMng.OnPassiveBuffTrigger(tagObj, None, curSkill, ChConfig.TriggerType_Buff_AttackSubLayer, tick) if GameObj.GetHP(tagObj) > 0 and not AttackCommon.GetIsDead(tagObj): if tagObj.GetDictByKey(ChConfig.Def_PlayerKey_1314HurtCount): # ÐèҪʱ¼äÅäºÏ£¬²»È»»áµ¼ÖÂÉ˺¦»¹Ã»¼ÆËãÍê±Ï buffÌáǰÏûʧÁË curBuff.SetValue(curBuff.GetValue() + 1) tagObj.SetDict(ChConfig.Def_PlayerKey_1314HurtCount, 0) if curBuff.GetValue() == 0: # ÈÃÏÂÒ»´ÎÑ­»·È¡Ïûbuff£¬¿Í»§¶ËÍ˳öÐýת curBuff.SetRemainTime(1) #buffvalueµÚÒ»¸öֵΪ¹¥»÷´ÎÊý£¬ µÚ¶þ¸öֵΪ±»¶¯ÔöÇ¿ def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict): curEffect = curSkill.GetEffect(0) return [curEffect.GetEffectValue(0)] ## Ìí¼ÓBUFFºóµÄÂß¼­ # @param None # @return None def DoAddBuffOver(curObj, addBuff, curEffect, tick, buffOwner): Attack(curObj, addBuff, tick) #Á¢¼´Ö´ÐÐÒ»´Î¹¥»÷ if GameObj.GetHP(curObj) != 0 and not AttackCommon.GetIsDead(curObj): addBuff.SetProcessInterval(tick) return #=============================================================================== # def OnBuffDisappear(defender, curSkill, curBuff, curEffect, tick): # # ÊÓÒ°ÄÚbuffÖÖ×Ó±¬Õ¨ # # ¶àÖÖÖÖ×ÓµÄÇé¿ö²»Ö§³Ö # skillID = PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defender, None, curSkill, ChConfig.TriggerType_BeBoomSeed) # seedSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID) # if not seedSkill: # return # # SkillShell.UsePassiveTriggerSkill(defender, seedSkill, None, tick) # return #===============================================================================