|  |  |  | 
|---|
|  |  |  | import PlayerActivity | 
|---|
|  |  |  | import PlayerControl | 
|---|
|  |  |  | import IpyGameDataPY | 
|---|
|  |  |  | import SkillCommon | 
|---|
|  |  |  | import PyGameData | 
|---|
|  |  |  | import BuffSkill | 
|---|
|  |  |  | import PlayerTJG | 
|---|
|  |  |  | import NPCCommon | 
|---|
|  |  |  | import ChConfig | 
|---|
|  |  |  | import GameObj | 
|---|
|  |  |  | 
|---|
|  |  |  | if not g_familyOwnerBossHurt: | 
|---|
|  |  |  | g_familyOwnerBossHurt = FamilyOwnerBossHurt() | 
|---|
|  |  |  | return g_familyOwnerBossHurt | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OnPlayerLogin(curPlayer): | 
|---|
|  |  |  | if GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyRobBoss): | 
|---|
|  |  |  | __DoCheckHorsePetRobBossKillCntBuff(curPlayer, GameWorld.GetGameWorld().GetTick()) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def IsHorsePetRobBoss(bossID): | 
|---|
|  |  |  | ## 是否骑宠争夺bossID | 
|---|
|  |  |  | 
|---|
|  |  |  | npcHisHurtPlayerList.sort(cmp=CmpFamilyOwnerBossHurtSort) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 归属仙盟前x名玩家额外奖励,算历史伤血 | 
|---|
|  |  |  | batchPlayerIDList, batchAddItemList, batchParamList = [], [], [] | 
|---|
|  |  |  | batchPlayerIDList, batchAddItemList, batchParamList, batchDetailList = [], [], [], [] | 
|---|
|  |  |  | ownerFamilyPlayerOrderAwardDict = IpyGameDataPY.GetFuncEvalCfg("FairyGrabBoss", 1, {}) | 
|---|
|  |  |  | curNPCPlayerOrderAwardDict = ownerFamilyPlayerOrderAwardDict.get(bossID, {}) | 
|---|
|  |  |  | maxOrder = max(curNPCPlayerOrderAwardDict) if curNPCPlayerOrderAwardDict else 0 | 
|---|
|  |  |  | 
|---|
|  |  |  | batchPlayerIDList.append([hurtPlayer.objID]) | 
|---|
|  |  |  | batchAddItemList.append(awardItemList) | 
|---|
|  |  |  | batchParamList.append([bossID, curOrder]) | 
|---|
|  |  |  | batchDetailList.append({"BossID":bossID, "Order":curOrder}) | 
|---|
|  |  |  | orderPlayerNameList.append(hurtPlayer.name) | 
|---|
|  |  |  | GameWorld.Log("    归属仙盟第%s名额外奖励: %s" % (curOrder, awardItemList)) | 
|---|
|  |  |  | if curOrder >= maxOrder: | 
|---|
|  |  |  | break | 
|---|
|  |  |  | if batchPlayerIDList: | 
|---|
|  |  |  | PlayerControl.SendMailBatch("FairyGrabBoss2", batchPlayerIDList, batchAddItemList, batchParamList) | 
|---|
|  |  |  | orderPlayerName = ShareDefine.Def_Space.join(orderPlayerNameList) | 
|---|
|  |  |  | PlayerControl.WorldNotify(0, "FairyGrabBossRank", [orderPlayerName, bossID]) | 
|---|
|  |  |  | PlayerControl.SendMailBatch("FairyGrabBoss2", batchPlayerIDList, batchAddItemList, batchParamList, batchDetail=batchDetailList) | 
|---|
|  |  |  | for order, orderPlayerName in enumerate(orderPlayerNameList, 1): | 
|---|
|  |  |  | PlayerControl.WorldNotify(0, "FairyGrabBossRank", [orderPlayerName, bossID, order]) | 
|---|
|  |  |  | if order >= 3: | 
|---|
|  |  |  | break | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 参与仙盟历史伤血奖励, 算历史伤血 | 
|---|
|  |  |  | joinAwardNeedHurtHPPer = IpyGameDataPY.GetFuncCfg("FairyGrabBoss", 2) | 
|---|
|  |  |  | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | joinAwardPlayerIDList += familyPlayerIDList | 
|---|
|  |  |  | if joinAwardPlayerIDList: | 
|---|
|  |  |  | PlayerControl.SendMailByKey("FairyGrabBoss1", joinAwardPlayerIDList, curNPCJoinFamilyAwardList, [bossID, joinAwardNeedHurtHPPer]) | 
|---|
|  |  |  | PlayerControl.SendMailByKey("FairyGrabBoss1", joinAwardPlayerIDList, curNPCJoinFamilyAwardList, [bossID, joinAwardNeedHurtHPPer], detail={"BossID":bossID}) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 同步最终结果给所有参与过的玩家 | 
|---|
|  |  |  | hurtPack = __GetFamilyOwnerBossHurtPack(hurtMgr, key, objID, bossID, 0) | 
|---|
|  |  |  | 
|---|
|  |  |  | return hurtPack | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OnFamilyKillHorsePetRobBossCntChange(tick): | 
|---|
|  |  |  | ## 仙盟击杀骑宠boss个数变更 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | playerManager = GameWorld.GetPlayerManager() | 
|---|
|  |  |  | for i in xrange(playerManager.OnlineCount()): | 
|---|
|  |  |  | curPlayer = playerManager.OnlineAt(i) | 
|---|
|  |  |  | if curPlayer.IsEmpty(): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | __DoCheckHorsePetRobBossKillCntBuff(curPlayer, tick) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __DoCheckHorsePetRobBossKillCntBuff(curPlayer, tick): | 
|---|
|  |  |  | familyID = curPlayer.GetFamilyID() | 
|---|
|  |  |  | if not familyID: | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if PlayerTJG.GetIsTJG(curPlayer): | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | killCount = PyGameData.g_familyKillHorsePetRobBossCntDict.get(familyID, 0) | 
|---|
|  |  |  | skillTypeID = ChConfig.Def_SkillID_HorsePetRobBossKillCntBuff | 
|---|
|  |  |  |  | 
|---|
|  |  |  | skillInfo = SkillCommon.FindBuffByID(curPlayer, skillTypeID) | 
|---|
|  |  |  | findBuff, buffManager, buffType, findSkill = skillInfo | 
|---|
|  |  |  | if not findSkill: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | killLV = min(killCount, findSkill.GetSkillMaxLV()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if findBuff: | 
|---|
|  |  |  | buffSkill = findBuff.GetSkill() | 
|---|
|  |  |  | if not buffSkill: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | curBuffLV = buffSkill.GetSkillLV() | 
|---|
|  |  |  | if curBuffLV == killLV: | 
|---|
|  |  |  | #GameWorld.DebugLog("骑宠怨念buff等级不变: familyID=%s,killLV=%s,curBuffLV=%s" % (familyID, killLV, curBuffLV), curPlayer.GetPlayerID()) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | elif not killLV: | 
|---|
|  |  |  | #GameWorld.DebugLog("无骑宠怨念buff: familyID=%s,killLV=%s" % (familyID, killLV), curPlayer.GetPlayerID()) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if not killLV: | 
|---|
|  |  |  | #GameWorld.DebugLog("删除骑宠怨念buff: familyID=%s,killLV=%s" % (familyID, killLV), curPlayer.GetPlayerID()) | 
|---|
|  |  |  | BuffSkill.DelBuffBySkillID(curPlayer, skillTypeID, tick) | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | #GameWorld.DebugLog("变更骑宠怨念buff等级: familyID=%s,killLV=%s" % (familyID, killLV), curPlayer.GetPlayerID()) | 
|---|
|  |  |  | curSkill = GameWorld.GetGameData().FindSkillByType(skillTypeID, killLV) | 
|---|
|  |  |  | BuffSkill.AddBuffNoRefreshState(curPlayer, buffType, curSkill, tick, [], curPlayer) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|