From 37e044190ad9c4cd98e3ecc42762379676bd6c23 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 15 四月 2019 11:44:18 +0800
Subject: [PATCH] 6515 【测试】【主干】新增游戏警报邮件

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py |  509 +++++++++++++++++++++++++------------------------------
 1 files changed, 232 insertions(+), 277 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
index b5ad849..13bf2af 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
@@ -37,7 +37,6 @@
 import QuestCommon
 import SkillShell
 import GameLogInfo
-import PlayerReincarnation
 import PlayerMissionCollect
 import PlayerFamily
 import ShareDefine
@@ -49,19 +48,18 @@
 import ChEquip
 import PlayerActivity
 import PlayerSuccess
-import EventReport
-#import PlayerCostVIP
-import GameFuncComm
 import IpyGameDataPY
-import ShopItemManage
 import PlayerPet
 import PlayerArrestTask
 import PlayerMagicWeapon
 import PlayerBossReborn
 import PlayerFairyCeremony
+import PlayerNewFairyCeremony
+import PlayerWeekParty
+import PlayerFairyDomain
+import PlayerActLogin
 import PlayerHorse
 import FBCommon
-import PyGameData
 
 import math
 import time
@@ -92,7 +90,7 @@
 Def_Run_Around_Reward_Exp = "run_around_exp"              #跑环任务的奖励
 Def_Run_Around_Reward_ExpPoint = "run_around_exp_point"     #跑环任务的奖励
 Def_Run_Around_Reward_Money = "run_around_money"          #跑环任务的给钱
-
+Def_Run_Around_Reward_FamilyHornor = "run_around_familyhornor"     #跑环任务的仙盟贡献奖励
 Def_Run_Around_Reward_Multiple = "run_around_multiple"     #跑环任务的奖励翻倍数
 
 Def_Task_Reward_Per = "reward_per"     #领取任务奖励倍数百分比; 150代表1.5倍
@@ -1221,7 +1219,7 @@
 def __RunAnswerAction(curPlayer, curMission, answersNode):
     actionsNode = __FindAnswerActionNode(curPlayer, curMission, answersNode)
     if actionsNode == None or actionsNode.IsEmpty():
-        GameWorld.Log('__RunAnswerAction找不到回答节点')
+        GameWorld.DebugLog('__RunAnswerAction找不到回答节点--%s'%curMission.GetMissionID())
         return
     
     __DoAnswerActionNode(curPlayer, curMission, actionsNode)
@@ -1276,7 +1274,7 @@
         #特殊清空处理, 如果没有任务, state为0
         curValue = 0
     elif tagMission == None:
-        GameWorld.Log("没有目标任务 %s" % conditionID , curPlayer.GetPlayerID())
+        GameWorld.DebugLog("没有目标任务 %s" % conditionID , curPlayer.GetPlayerID())
         return
     else:
         curValue = QuestRunnerValue.GetValue(curPlayer, tagMission, conditionName)
@@ -1362,6 +1360,22 @@
     value = 1
     return QuestRunnerValue.GetEval(conditionType, value, conditionValue)
 
+##判断是否穿戴某部位(非时效)
+# @param curPlayer 玩家实例
+# @param curMission 任务实例
+# @param curConditionNode 节点信息
+# @return 返回值, 是否判断成功
+# @remarks <have_equip value="装备位"/>
+def ConditionType_Have_Equip(curPlayer, curMission, curConditionNode):
+    equipPlace = int(curConditionNode.GetAttribute("value"))
+    roleEquipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
+    curEquip = roleEquipPack.GetAt(equipPlace)
+    if curEquip.IsEmpty():
+        return False
+    if curEquip.GetEndureReduceType():
+        return False
+    return True
+    
 #---------------------------------------------------------------------
 ##增加家族相关值 
 # @param curPlayer 玩家实例
@@ -2490,7 +2504,7 @@
     equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
     for equipIndex in range(0, equipPack.GetCount()):
         #备用装备栏不处理
-        if equipIndex not in ChConfig.Type_Equip_CanTake :
+        if equipIndex not in ShareDefine.RoleEquipType:
             continue
         curEquip = equipPack.GetAt(equipIndex)
         if curEquip.IsEmpty():
@@ -2515,7 +2529,7 @@
     totalPlusLV = 0
     for packType, equipPartIndexList in ChConfig.Pack_EquipPart_CanPlusStar.items():
         for i in equipPartIndexList:
-            partStarLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, i)
+            partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, i)
             totalPlusLV += partStarLV
     
     
@@ -2526,7 +2540,7 @@
 #    equipPartIndexList = ChConfig.Pack_EquipPart_CanPlusStar.get(IPY_GameWorld.rptEquip, [])
 #    for i in equipPartIndexList:
 #        #统计全身强化等级
-#        partStarLV = ChEquip.GetEquipPartStarLV(curPlayer, IPY_GameWorld.rptEquip, i)
+#        partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, i)
 #        if partStarLV >= star:
 #            partCnt +=1 
     #GameWorld.Log('star=%s,conditionValue=%s,partCnt=%s,%s'%(star,conditionValue,partCnt,QuestRunnerValue.GetEval(conditionType, partCnt, conditionValue)))
@@ -2573,42 +2587,6 @@
             return False
         return petPack.GetCount() > 0
     return PlayerPet.GetPetDataItemByNPCID(curPlayer, checkPetID) != None
-
-def ConditionType_Is_Buy_Tehuiitem(curPlayer, curMission, curConditionNode):
-    # 判断是否购买过特惠商店物品
-    # <Is_Buy_Tehuiitem shopID="1007" itemShopIndex="0,1,2"/> shopID暂定需指定商店ID, itemShopIndex可指定多个索引, 中间英文逗号隔开
-    shopID = GameWorld.ToIntDef(curConditionNode.GetAttribute("shopID"), 0)
-    if not shopID:
-        return False
-    indexList = []
-    indexInfo = curConditionNode.GetAttribute("itemShopIndex")
-    if indexInfo != '':
-        indexList = eval('[' + indexInfo + ']')
-    if not indexList:
-        shopItemList = ShopItemManage.GetShopItemList(shopID)
-        indexList = range(len(shopItemList))
-    if not indexList:
-        GameWorld.DebugLog("需指定判断的特惠商店物品索引编号!indexInfo=%s" % indexInfo)
-        return False
-    for i in indexList:
-        buyCnt = ShopItemManage.__GetPlayerShopItemBuyCnt(curPlayer, shopID, i)
-        if buyCnt > 0:
-            return True
-    return False
-
-##竞技场是否达到多少名
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Check_Jjcorder type="类型" value="值"/> 
-def ConditionType_Check_Jjcorder(curPlayer, curMission, curConditionNode):
-    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    conditionType = curConditionNode.GetAttribute("type")
-    maxOrder = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HighLadder_HistoryMaxOrder, 0,
-                    ChConfig.Def_PDictType_Default)
-    
-    return QuestRunnerValue.GetEval(conditionType, maxOrder, conditionValue)
 
 #---------------------------------------------------------------------
 ##执行 扣除玩家镖车押金
@@ -2820,10 +2798,10 @@
 # @param bind 绑定
 # @param packList 背包索引
 # @return 背包索引,-1表示没有可放的背包
-def GetCanPutInPackIndex(curPlayer, itemID, itemCount, bind, packList):
+def GetCanPutInPackIndex(curPlayer, itemID, itemCount, bind, packList, isAuctionItem=False):
     itemControl = ItemControler.PlayerItemControler(curPlayer)
     for index in packList:
-        if not itemControl.CanPutInItem(index, itemID, itemCount, bind):
+        if not itemControl.CanPutInItem(index, itemID, itemCount, isAuctionItem):
             continue
         
         return index
@@ -2847,22 +2825,22 @@
                  itemStarLV=0, bind=False, property=None,
                  packList=[IPY_GameWorld.rptItem], isSuite=False,
                  addAttrLV=0, isLucky=False, skillBoostEff=[], holeCount=0,
-                 equipIndex= -1, isGreat=0, baseAttrRate=ShareDefine.Def_MaxRateValue, greatAttrList=[]):
-    if PlayerFamily.DoAddFamilyBossFoodEx(curPlayer, itemID, itemCount, ShareDefine.Def_AddFAVReason_DoFamilyMisson):
-        #仙盟兽粮自动使用
-        return
+                 equipIndex= -1, isGreat=0, baseAttrRate=ShareDefine.Def_MaxRateValue, greatAttrList=[], isAuctionItem=False):
+#    if PlayerFamily.DoAddFamilyBossFoodEx(curPlayer, itemID, itemCount, ShareDefine.Def_AddFAVReason_DoFamilyMisson):
+#        #仙盟兽粮自动使用
+#        return
         
     #任务给予物品应该只能放入万能背包和背包
     itemControl = ItemControler.PlayerItemControler(curPlayer)
 
     #获得可放入的背包索引
-    packIndex = GetCanPutInPackIndex(curPlayer, itemID, itemCount, bind, packList)
+    packIndex = GetCanPutInPackIndex(curPlayer, itemID, itemCount, bind, packList, isAuctionItem)
     if packIndex == -1:
         return
 
     #设置物品属性
-    curSingleItem = CreatMissionItem(itemID, itemStarLV, addAttrLV, isSuite, bind,
-                                      isLucky, skillBoostEff, itemCount, holeCount, isGreat, baseAttrRate, greatAttrList)
+    curSingleItem = CreatMissionItem(curPlayer, itemID, itemStarLV, addAttrLV, isSuite, bind,
+                                      isLucky, skillBoostEff, itemCount, holeCount, isGreat, baseAttrRate, greatAttrList, isAuctionItem=isAuctionItem)
     if not curSingleItem:
         return
     
@@ -2881,15 +2859,15 @@
         if equipIndex == 0:
             GameWorld.ErrLog("任务赠送装备位置错误 equipIndex=-1")
             return
-        
-        if ItemCommon.CheckHasEquip(curPlayer, IPY_GameWorld.rptEquip, equipIndex):
+        equipPackIndex = ItemCommon.GetEquipPackIndex(curSingleItem)
+        if ItemCommon.CheckHasEquip(curPlayer, IPY_GameWorld.rptEquip, equipPackIndex):
             #物品已存在直接给背包
             if not itemControl.PutInItem(IPY_GameWorld.rptItem, curSingleItem, event=["AddEventItem", False, {'MissionID':missionID}]):
                 GameWorld.Log('###任务 = %s给予物品异常, %s, %s' % (missionID, itemID, itemCount), curPlayer.GetPlayerID())
                 curSingleItem.Clear()
                 return
         else:
-            ChEquip.DoPlayerEquipItem(curPlayer, curSingleItem, equipIndex, 0)
+            ChEquip.DoPlayerEquipItem(curPlayer, curSingleItem,equipPackIndex, 0)
     
     #ObtainRes01    <n>获得</n><Info Type="Item" Name="Name" ID="{%S1%}"/><n>×</n><n>{%S2%}!</n>
     elif not itemControl.PutInItem(packIndex, curSingleItem, event=["AddEventItem", False, {'MissionID':missionID}]):
@@ -2911,26 +2889,23 @@
 #  @param itemCount: 物品数量
 #  @param baseAttrRate: 任务创建的物品默认的基础属性随机值为10000
 #  @return None
-def CreatMissionItem(itemID, starLV=0, addAttrLV=0, isSuite=False, bind=False,
+def CreatMissionItem(curPlayer, itemID, starLV=0, addAttrLV=0, isSuite=False, bind=False,
                      isLucky=0, skillBoostEff=[], itemCount=1, holeCount=0,
-                     isGreat=0, baseAttrRate=ShareDefine.Def_MaxRateValue, greatAttrList=[]):
+                     isGreat=0, baseAttrRate=ShareDefine.Def_MaxRateValue, greatAttrList=[], isAuctionItem=False):
     
-    curSingleItem = ItemControler.GetOutPutItemObj(itemID)
+    curSingleItem = ItemControler.GetOutPutItemObj(itemID, itemCount, isAuctionItem, curPlayer=curPlayer)
     
     if not curSingleItem:
         GameWorld.Log('###创造任务物品失败, itemID = %s' % (itemID))
         return
     
-    tmpEquipData = ItemControler.SingleEquipTmpData()
-    tmpEquipData.starLV = starLV
-    tmpEquipData.holeCnt = holeCount
-    tmpEquipData.isSuite = isSuite
-    tmpEquipData.isBind = bind
+    #tmpEquipData = ItemControler.SingleEquipTmpData()
+    #tmpEquipData.starLV = starLV
+    #tmpEquipData.holeCnt = holeCount
+    #tmpEquipData.isSuite = isSuite
+    #tmpEquipData.isBind = bind
     
-    ChItem.EquipAddAdditionEx(curSingleItem, tmpEquipData)
-
-    #设置数量
-    ItemControler.SetItemCount(curSingleItem, itemCount)
+    #ChItem.EquipAddAdditionEx(curSingleItem, tmpEquipData)
     
     return curSingleItem
 
@@ -3715,7 +3690,7 @@
 # @param curMission 任务实例
 # @param curActionNode节点信息
 # @return 返回值无意义
-# @remarks  <Add_Item id="物品ID" count="物品数量" starLV="星级" bind="是否绑定" 
+# @remarks  <Add_Item id="物品ID" count="物品数量" starLV="星级" bind="是否绑定" isAuctionItem="是否拍品"
 #        packtype="1,2背包索引" equipIndex="装备位置" suite="是否套装化" addAttrLV="追加等级",isLucky="是否有幸运"
 #        skillBoostEff="[技能效果增强索引, 值]", holeCount="孔数" isGreat="1" baseAttrRate="可强化的装备基础属性随机加强比例默认10000"
 #        greatAttr="[卓越属性列表]" />  
@@ -3736,10 +3711,13 @@
     itemStarLV = GameWorld.ToIntDef(curActionNode.GetAttribute("starLV"), 0)
     
     #物品是否绑定
-    bind = True if curActionNode.GetAttribute("bind") else False
-    
+    bind = True if GameWorld.ToIntDef(curActionNode.GetAttribute("bind")) else False
+
     #物品是否套装化
     isSuite = True if curActionNode.GetAttribute("suite") else False
+    
+    #是否拍品
+    isAuctionItem = GameWorld.ToIntDef(curActionNode.GetAttribute("isAuctionItem"), 0)
     
     #追加
     addAttrLV = GameWorld.ToIntDef(curActionNode.GetAttribute("addAttrLV"), 0)
@@ -3767,7 +3745,7 @@
     baseAttrRate = GameWorld.ToIntDef(curActionNode.GetAttribute("baseAttrRate"), ShareDefine.Def_MaxRateValue)
     AddEventItem(curPlayer, curMission, curItemID, curItemCount, None, itemStarLV,
                  bind, False, packTypeList, isSuite, addAttrLV, isLucky,
-                 skillBoostEff, holeCount, equipIndex, isGreat, baseAttrRate, greatAttrList)
+                 skillBoostEff, holeCount, equipIndex, isGreat, baseAttrRate, greatAttrList, isAuctionItem=isAuctionItem)
 
 
 #---------------------------------------------------------------------
@@ -3806,7 +3784,7 @@
 # @param curMission 任务实例
 # @param curActionNode节点信息
 # @return 返回值无意义
-# @remarks  <Drop_Item id="物品ID" count="物品数量" starLV="星级" bind="是否绑定" 
+# @remarks  <Drop_Item id="物品ID" count="物品数量" starLV="星级" bind="是否绑定" isAuctionItem="是否拍品"
 #         suite="是否套装化" addAttrLV="追加等级",isLucky="是否有幸运"
 #        skillBoostEff="[技能效果增强索引, 值]", holeCount="孔数", isGreat="1", effIndex="1" , dropDist="掉落范围默认3"
 #        aroundPlayer="1" baseAttrRate="可强化的装备基础属性随机加强比例默认10000" greatAttr="[卓越属性列表]" />  
@@ -3826,6 +3804,8 @@
     isSuite = GameWorld.ToIntDef((curActionNode.GetAttribute("suite")), 0)
     
     bind = GameWorld.ToIntDef((curActionNode.GetAttribute("bind")), 1)
+    
+    isAuctionItem = GameWorld.ToIntDef((curActionNode.GetAttribute("isAuctionItem")), 0)
     
     #追加
     addAttrLV = GameWorld.ToIntDef(curActionNode.GetAttribute("addAttrLV"), 0)
@@ -3851,14 +3831,14 @@
     baseAttrRate = GameWorld.ToIntDef(curActionNode.GetAttribute("baseAttrRate"), ShareDefine.Def_MaxRateValue)
 
     #设置物品属性
-    curItem = CreatMissionItem(curItemID, starLV, addAttrLV, isSuite, bind,
-                               isLucky, skillBoostEff, count, holeCount, isGreat, baseAttrRate, greatAttrList)
+    curItem = CreatMissionItem(curPlayer, curItemID, starLV, addAttrLV, isSuite, bind,
+                               isLucky, skillBoostEff, count, holeCount, isGreat, baseAttrRate, greatAttrList, isAuctionItem=isAuctionItem)
         
     if not curItem:
         GameWorld.Log('###创建地上物品异常,无此ID物品 = %s' % (curItemID))
         return
     
-    if curActionNode.GetAttribute("aroundPlayer") == "1":
+    if curActionNode.GetAttribute("aroundPlayer") == "1" or not curNPC:
         posX, posY = curPlayer.GetPosX(), curPlayer.GetPosY()
     else:
         posX, posY = curNPC.GetPosX(), curNPC.GetPosY()
@@ -4347,61 +4327,8 @@
     curPlayer.SetFreePoint(curPlayerFreePoint + value)
     
     DataRecordPack.DR_Freepoint(curPlayer, "Event", value, {"MissionID":curMission.GetMissionID()})
-    
+    return
 
-#---------------------------------------------------------------------
-#===============================================================================
-# PlayerJob_Warrior,  #  剑士,
-# PlayerJob_Wizard,   #  魔法师,
-# PlayerJob_Assassin, #  弓箭手,
-# PlayerJob_Chaplain, #  魔剑士,
-# PlayerJob_Knight,   # 骑士
-# PlayerJob_ForceUser,# 魔导师
-# PlayerJob_BowMaster,# 圣射手
-#===============================================================================
-##玩家转职业
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义 <Change_Job checkLV="150" changeJob="4">
-def DoType_Change_Job(curPlayer, curMission, curActionNode):
-    playerID = curPlayer.GetID()
-    
-    checkLV = GameWorld.ToIntDef(curActionNode.GetAttribute("checkLV"), 0)
-    if not checkLV:
-        GameWorld.Log("change job error! checkLV=%s" % checkLV, playerID)
-        return
-
-    curLV = curPlayer.GetLV()
-    if curLV < checkLV:
-        GameWorld.Log("change job error! checkLV=%s curlv=%s" % (checkLV, curLV), playerID)
-        return
-    
-    changeJob = GameWorld.ToIntDef(curActionNode.GetAttribute("changeJob"), 0)
-    #验证职业
-    if not changeJob:
-        GameWorld.Log("change job error! changeJob=%s" % changeJob, playerID)
-        return
-        
-    #curJob = curPlayer.GetJob()
-
-    #计算点数, 恢复等级差的点数
-    #addPointDict = ReadChConfig.GetEvalChConfig('lvUp_Point')
-    
-    #addPoint = (curLV - checkLV)*(addPointDict.get(changeJob) - addPointDict.get(curJob))
-    
-    #设置玩家可加属性点
-    #curPlayer.SetFreePoint(curPlayer.GetFreePoint() + addPoint)
-    #DataRecordPack.DR_Freepoint(curPlayer, "ChangeJob", addPoint, {"job":changeJob})
-    
-    #设置职业
-    curPlayer.SetJob(changeJob)
-    
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    playerControl.RefreshAllState()
-    
-    PlayerReincarnation.DoPlayerReincarnation(curPlayer)
-    return True
 
 #---------------------------------------------------------------------
 ##删除物品
@@ -4809,7 +4736,7 @@
     
     mission_1.SetProperty(Def_Around_AllCount, allCount)
     EventShell.EventRespons_RunTaskAllCnt(curPlayer, curMissionData.Type, allCount)
-    GameWorld.DebugLog("删除任务allCount %s, RUNCOUNT=%s" % (allCount, RUNCOUNT))
+    GameWorld.Log("删除任务allCount %s, RUNCOUNT=%s" % (allCount, RUNCOUNT))
 
 
     if allCount < RUNCOUNT:
@@ -4874,6 +4801,7 @@
 # @return 无
 # @remarks 跑环任务结束处理,删除或者随机下一个
 def __RunAroundMission(curPlayer, missionID, curMissionData, curActionNode):
+    GameWorld.Log("__RunAroundMission----%s"%missionID, curPlayer.GetID())
     #任务完成,触发随机跑环
     run_event = GameWorld.ToIntDef(curActionNode.GetAttribute("run_around"), 0)
     firstMissionID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
@@ -4910,8 +4838,9 @@
     
     
     #总跑环次数已满,不可再做
-    if run_event == Def_Run_Around_Over_1 and allCount >= RUNCOUNT:
-        return
+    if run_event == Def_Run_Around_Over_1:
+        if allCount >= RUNCOUNT or aroundCount >= AROUNDCOUNT:
+            return
     
     nextMissionID = 0
     nextMission = None
@@ -4959,9 +4888,9 @@
         
         if curMissionData.Type == QuestCommon.Def_Mission_Type_RunFamily:
             PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TaskFRun, 1)
-        if allCount < RUNCOUNT:
-            nextMissionID = __OverRandRunAround(curPlayer, curMissionData)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskNextMissionID % curMissionData.Type, nextMissionID)
+#        if allCount < RUNCOUNT:
+#            nextMissionID = __OverRandRunAround(curPlayer, curMissionData)
+#            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskNextMissionID % curMissionData.Type, nextMissionID)
         
                 
             
@@ -5216,14 +5145,21 @@
 def OnAroundMissionFinish(curPlayer, missionType, addCnt=1):
     #跑环任务id列表
     # 活跃度
+    GameWorld.Log('    跑环完成触发活跃度 missionType=%s'%missionType, curPlayer.GetPlayerID())
     if missionType == QuestCommon.Def_Mission_Type_RunDaily:
         PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_DailyRunMission, addCnt)
+        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_TaskCRun, addCnt)
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TaskCRun, addCnt)
         PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RunTask, addCnt)
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunTask, addCnt)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunTask, addCnt)
+        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_RunTask, addCnt)
+        PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_RunTask, 1)
     elif missionType == QuestCommon.Def_Mission_Type_RunFamily:
         PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyRunMission, addCnt)
         PlayerFamily.AddFamilyActivity(curPlayer, ShareDefine.FamilyActive_Task, addCnt)
+    else:
+        GameWorld.Log('    跑环完成触发活跃度异常 missionType=%s'%missionType, curPlayer.GetPlayerID())
     return
 
 
@@ -5266,66 +5202,6 @@
     for lvInfo in runAroundReward.Rewards:
         if curRewardLV >= lvInfo[0] and curRewardLV <= lvInfo[1]:
             return runAroundReward.Rewards[lvInfo]
-    
-    return
-
-
-##转生后跑环奖励处理
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @return 返回值无意义
-# @remarks 转生后跑环奖励处理
-def __ReinAddRunAroundReward(curPlayer, curMission):
-    runAroundReward = FindQuestFunc(curMission.GetMissionID()).RunAroundReward
-
-    lvReward = GetRunAroundReward(curPlayer, runAroundReward, rewardLV=0, isMaxLV=True)
-    if not lvReward:
-        GameWorld.Log("转生跑环奖励错误 id = %d" % curMission.GetMissionID() , curPlayer.GetPlayerID())
-        return
-    
-    #金钱奖励最大等级
-    if lvReward.Money != 0:
-        curMission.SetProperty(Def_Run_Around_Reward_Money, lvReward.Money)   
-    
-#---------------------------------------------------------------------
-##转生后每日任务新增奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Reincarnation_Add_Reward />
-def DoType_Reincarnation_Add_Reward(curPlayer, curMission, curActionNode):
-    #没转生不处理
-    curReinLV = curPlayer.GetReincarnationLv()
-    if curReinLV < 1:
-        return
-    
-    dayEventReward = FindQuestFunc(curMission.GetMissionID()).DayEventReward
-    
-    if dayEventReward == None:
-        GameWorld.Log("转生奖励错误 id = %d" % curMission.GetMissionID() , curPlayer.GetPlayerID())
-        return
-    
-    curRewardLV = dayEventReward.MaxLV
-    familyLV = curPlayer.GetFamilyLV()
-    
-    #当前等级任务奖励结构体
-    curLVDayEventReward = dayEventReward.Rewards[curRewardLV]
-    
-    #金钱奖励最大等级
-    if curLVDayEventReward.Money != 0:
-        curMission.SetProperty(Def_Day_Event_Reward_Money, curLVDayEventReward.Money)   
-    
-    #家族活跃最大等级
-    if curLVDayEventReward.PlayerFamilyActiveValue != 0:
-        curMission.SetProperty(Def_Day_Event_Reward_Player_Family_ActiveValue, (curLVDayEventReward.PlayerFamilyActiveValue) * familyLV)   
-    
-    #镖车压金最大等级
-    if curLVDayEventReward.TruckMoney != 0:
-        curMission.SetProperty(Def_Day_Event_Reward_Truck_Money, curLVDayEventReward.TruckMoney)
-    
-    #转生后跑环奖励处理
-    __ReinAddRunAroundReward(curPlayer, curMission)
     
     return
 
@@ -5383,7 +5259,6 @@
         randStarList = eval(ReadChConfig.GetChConfig('RunAround_Star'))
         aroundStar = GameWorld.GetResultByRandomList(randStarList, 1)
         
-        #vipStar = PlayerCostVIP.GetRoundStar(curPlayer)
         vipStar = 0
         if vipStar > 0:
             aroundStar = vipStar
@@ -5417,6 +5292,8 @@
 # @return 返回值无意义
 # @remarks 设置跑环任务奖励 <set_run_around_reward multiple="指定倍数" id_name="任务ID存储key" /> 
 def DoType_Set_Run_Around_Reward(curPlayer, curMission, curActionNode):
+    curMissionID = curMission.GetMissionID()
+    GameWorld.Log("DoType_Set_Run_Around_Reward---%s"%curMissionID, curPlayer.GetID())
     idNameStr = curActionNode.GetAttribute("id_name")
     if curMission and idNameStr != "":
         questID = GameWorld.ToIntDef(curMission.GetProperty(idNameStr), 0)
@@ -5425,16 +5302,15 @@
             if curMission == None:
                 curMission = QuestCommon.AddNewMission(curPlayer, questID)
             
-    curMissionID = curMission.GetMissionID()
     curMissionData = FindQuestFunc(curMissionID)
     if not curMissionData:
         return
  
     rewardList = __GetRunAroundReward(curPlayer, curMission)
     if rewardList:
-        curExp, curMoney, itemID, itemCount = rewardList
+        curExp, curMoney, curFamilyHornor, itemID, itemCount = rewardList
     else:
-        curExp, curMoney, itemID, itemCount = 0, 0, 0, 0
+        curExp, curMoney, curFamilyHornor, itemID, itemCount = 0, 0, 0, 0
     
     curMission.SetProperty(Def_Run_Around_Reward_Exp, curExp % ChConfig.Def_PerPointValue)
     curMission.SetProperty(Def_Run_Around_Reward_ExpPoint, curExp / ChConfig.Def_PerPointValue)
@@ -5442,6 +5318,8 @@
     
     curMission.SetProperty(Def_Day_Event_Reward_Item_Id, itemID)
     curMission.SetProperty(Def_Day_Event_Reward_Item_Count, itemCount)
+    curMission.SetProperty(Def_Run_Around_Reward_FamilyHornor, curFamilyHornor)
+    
     return
 
 
@@ -5470,14 +5348,14 @@
     curExp = eval(IpyGameDataPY.GetFuncCfg('RunTaskExp'))
     curExp += curLVRunAroundReward.AddExp
     curMoney = baseMoney
-    
+    curFamilyHornor = curLVRunAroundReward.PlayerFamilyHornor
     itemInfo = curLVRunAroundReward.Item
     if itemInfo:
         itemID, itemCount = eval(itemInfo)
     else:
         itemID, itemCount = 0, 0
    
-    return (curExp, curMoney, itemID, itemCount)
+    return (curExp, curMoney, curFamilyHornor, itemID, itemCount)
   
 #---------------------------------------------------------------------
 ##给予跑环奖励
@@ -5505,14 +5383,24 @@
     addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Run"}
     PlayerControl.GiveMoney(curPlayer, runAroundReward.MoneyType, money, ChConfig.Def_GiveMoney_Mission, addDataDict, False)
     
+    familyHornor = curMission.GetProperty(Def_Run_Around_Reward_FamilyHornor)
+    if familyHornor: 
+        PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, familyHornor, True, ShareDefine.Def_AddFAVReason_DoFamilyMisson, True)
+
     item_id = curMission.GetProperty(Def_Day_Event_Reward_Item_Id)
     item_count = curMission.GetProperty(Def_Day_Event_Reward_Item_Count)
     
     #给物品奖励
     itemInfo = []
     if item_id and item_count:
-        AddEventItem(curPlayer, curMission, item_id, item_count, bind=True)
         itemInfo = [[item_id, item_count, True]]
+        packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, 1)
+        if 1 > packSpace:
+            PlayerControl.NotifyCode(curPlayer, "UnionTask_Reward")
+            PlayerControl.SendMailByKey("UnionTaskReward", [curPlayer.GetID()], itemInfo)
+        else:
+            AddEventItem(curPlayer, curMission, item_id, item_count, bind=True)
+        
     GameWorld.DebugLog("任务:%d  获得经验:%d,钱=%s,物品ID=%s,物品数量=%s" 
                        % (curMission.GetMissionID(), exp, money, item_id, item_count))
     
@@ -5850,6 +5738,11 @@
     #记录副本对应的任务ID
     if FBCommon.GetRecordMapID(mapID) in [ChConfig.Def_FBMapID_ClearDevil, ChConfig.Def_FBMapID_MagicWeapon]:
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqFBMissionID, curMission.GetMissionID())
+        missionID = curMission.GetMissionID()
+        curMissionData = FindQuestFunc(missionID)
+        if curMissionData:
+            missionType = curMissionData.Type
+            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqFBMissionType, missionType)
     return
 
 #---------------------------------------------------------------------
@@ -6043,10 +5936,66 @@
 # @remarks <Set_Horsetotallv key="" />
 def DoType_Set_Horsetotallv(curPlayer, curMission, curActionNode):
     key = curActionNode.GetAttribute("key")
-    questID = GameWorld.ToIntDef(curMission.GetProperty("id"), 0)
+    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
     if questID != 0:
         curMission = curPlayer.FindMission(questID)
     curMission.SetProperty(key, PlayerHorse.GetHorseSumLV(curPlayer))
+    return
+
+##设置某阶达到强化等级的件数
+# @param curPlayer 玩家实例
+# @param curMission 任务实例
+# @param curActionNode节点信息
+# @return 返回值无意义
+# @remarks <Set_Pluslvpartcnt key="" id="" classLV="" plusLV=""/>
+def DoType_Set_Pluslvpartcnt(curPlayer, curMission, curActionNode):
+    key = curActionNode.GetAttribute("key")
+    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
+    if questID != 0:
+        curMission = curPlayer.FindMission(questID)
+    classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classLV"), 0)
+    if not classLV:
+        return
+    needPlusLV = GameWorld.ToIntDef(curActionNode.GetAttribute("plusLV"), 0)
+    totalCnt = 0
+    equipPlaceList = ChConfig.Pack_EquipPart_CanPlusStar[IPY_GameWorld.rptEquip]
+    for equipPlace in equipPlaceList:
+        ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
+        if not ipyData:
+            continue
+        partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, ipyData.GetGridIndex())
+        if partStarLV >= needPlusLV:
+            totalCnt += 1
+        
+    curMission.SetProperty(key, totalCnt)
+    return
+
+##设置强化总等级
+# @param curPlayer 玩家实例
+# @param curMission 任务实例
+# @param curActionNode节点信息
+# @return 返回值无意义
+# @remarks <Set_Totalpluslv key="" />
+def DoType_Set_Totalpluslv(curPlayer, curMission, curActionNode):
+    key = curActionNode.GetAttribute("key")
+    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
+    if questID != 0:
+        curMission = curPlayer.FindMission(questID)
+    curMission.SetProperty(key, ChEquip.GetTotalPlusLV(curPlayer, False))
+    return
+
+##设置装备总星级
+# @param curPlayer 玩家实例
+# @param curMission 任务实例
+# @param curActionNode节点信息
+# @return 返回值无意义
+# @remarks <Set_Equiptotalstar key="" />
+def DoType_Set_Equiptotalstar(curPlayer, curMission, curActionNode):
+#    key = curActionNode.GetAttribute("key")
+#    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
+#    if questID != 0:
+#        curMission = curPlayer.FindMission(questID)
+#    curMission.SetProperty(key, ChEquip.GetTotalEquipStars(curPlayer))
     return
 #---------------------------------------------------------------------
 ##DoType_调度器
@@ -6421,6 +6370,18 @@
     conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
     return PlayerMagicWeapon.GetIsActiveMagicWeapon(curPlayer, mwid, conditionValue)
 
+##判断魔族法宝通关关卡
+# @param curPlayer 玩家实例
+# @param curMission 任务实例
+# @param curConditionNode节点信息 
+# @return 返回值, 是否通过检查
+# @remarks  <Check_Magicweapon_Passfblv" mwid="法宝ID" value="期望值" /> 
+def ConditionType_Check_Magicweapon_Passfblv(curPlayer, curMission, curConditionNode):
+    mwid = GameWorld.ToIntDef(curConditionNode.GetAttribute("mwid"), 0)
+    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
+    fbpasslv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MWFBPassLevel % mwid)
+    return fbpasslv >= conditionValue
+
 #---------------------------------------------------------------------
 ##是否拥有足够的竞技点
 # @param curPlayer 玩家实例
@@ -6553,52 +6514,6 @@
     __NPCAllowResetWorldPos(curPlayer, mapID, bornX, bornY, False)
     
     return
-
-
-
-#---------------------------------------------------------------------
-##执行玩家转生
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Player_Reincarnation /> 
-def DoType_Player_Reincarnation(curPlayer, curMission, curActionNode):
-    PlayerReincarnation.DoPlayerReincarnation(curPlayer)
-    return
-
-#---------------------------------------------------------------------
-##判断玩家是否转生
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Player_Is_Reincarnation result="期望的结果" /> 
-def ConditionType_Player_Is_Reincarnation(curPlayer, curMission, curConditionNode):
-    #<Player_Is_Reincarnation result="">  0:没转,1:有转
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    #转生等级
-    curReinLV = curPlayer.GetReincarnationLv()
-    if curReinLV > 0:
-        return True == result
-    else:
-        return False == result
-    
-    return
-
-##判断玩家转生数
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Player_Reincarnation result="期望的结果" /> 
-def ConditionType_Player_Reincarnation(curPlayer, curMission, curConditionNode):
-    #<Player_Reincarnation result="1"> # 玩家是否1转
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    #转生等级
-    curReinLV = curPlayer.GetReincarnationLv()
-    return curReinLV == result
-
 
 #---------------------------------------------------------------------
 ##给予玩家技能
@@ -7135,12 +7050,6 @@
     realmlv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
     return curPlayer.GetOfficialRank() >= realmlv
 
-##法宝之魂是否激活
-# @param None
-# @return None <Mwsoul value="id"/>
-def ConditionType_Mwsoul(curPlayer, curMission, curActionNode):
-    soulID = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return bool(PlayerMagicWeapon.GetIsActiveMWSoul(curPlayer, soulID))
 
 ##X级通关X层娲皇遗迹
 # @param None
@@ -7158,22 +7067,47 @@
     totallv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
     return PlayerHorse.GetHorseSumLV(curPlayer) >= totallv
 
-##2阶强化防具套装件数
-# @param None
-# @return None <Suitplus value="cnt"/>
-def ConditionType_Suitplus(curPlayer, curMission, curActionNode):
-    needCnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    
-    equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
-    groupCnt = 0 #2阶强化防具套装件数
-    for groupType, equipIndexList in equipSuitTypeDict.items():
-        for i in equipIndexList:
-            suiteInfo = ChEquip.GetSuiteInfoByPlace(curPlayer, i)
-            for suiteType, lv in suiteInfo.items():
-                if lv >= 2 and int(groupType) == 1 and suiteType == 2:
-                    groupCnt +=1
-    return groupCnt >= needCnt
 
+
+##法宝激活个数
+# @param None
+# @return None <Mwcnt value="cnt"/>
+def ConditionType_Mwcnt(curPlayer, curMission, curActionNode):
+    totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
+    return PlayerMagicWeapon.GetMWActiveCntTotal(curPlayer) >= totalcnt
+
+##总强化等级
+# @param None
+# @return None <Totalpluslv value="cnt"/>
+def ConditionType_Totalpluslv(curPlayer, curMission, curActionNode):
+    totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
+    return ChEquip.GetTotalPlusLV(curPlayer, False) >= totalcnt
+
+##判断某阶强化等级达到X的件数是否达到
+# @param None
+# @return None <Classlvpluslv classLV="" plusLV="" value="cnt"/>
+def ConditionType_Classlvpluslv(curPlayer, curMission, curActionNode):
+    classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classLV"), 0)
+    if not classLV:
+        return
+    needPlusLV = GameWorld.ToIntDef(curActionNode.GetAttribute("plusLV"), 0)
+    totalCnt = 0
+    equipPlaceList = ChConfig.Pack_EquipPart_CanPlusStar[IPY_GameWorld.rptEquip]
+    for equipPlace in equipPlaceList:
+        ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
+        if not ipyData:
+            continue
+        partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, ipyData.GetGridIndex())
+        if partStarLV >= needPlusLV:
+            totalCnt += 1
+    return totalCnt >= GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
+
+##装备总星级
+# @param None
+# @return None <Equiptotalstar value="cnt"/>
+def ConditionType_Equiptotalstar(curPlayer, curMission, curActionNode):
+    totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
+    return #ChEquip.GetTotalEquipStars(curPlayer) >= totalcnt
 
 ##激活法宝,确认与成就逻辑后使用
 # @param None
@@ -7181,8 +7115,6 @@
 def DoType_Active_Magicweapon(curPlayer, curMission, curActionNode):
     mwID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
     PlayerMagicWeapon.DoActiveMW(curPlayer, mwID)
-    PlayerMagicWeapon.NotifyMagicWeapon(curPlayer)
-    
     return
 
 ## 人物隐身 <Visible id="0隐身1现身"/>
@@ -7194,4 +7126,27 @@
     else:
         curPlayer.SetVisible(False)
         curPlayer.SetSight(0)
+    return
+
+
+# 被动技能孔
+def DoType_Open_Skill_Slots(curPlayer, curMission, curActionNode):
+    # 开孔
+    slotIndex = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
+    mission_1 = QuestCommon.GetCommonMission(curPlayer)
+    if not mission_1:
+        return
+
+    mission_1.SetProperty("OpenSkillSlots", pow(2, slotIndex)|mission_1.GetProperty("OpenSkillSlots"))
+    
+    return
+
+
+def DoType_Setfairydomain(curPlayer, curMission, curActionNode):
+    ## 任务开启缥缈仙域 (做标记可寻访) <Setfairydomain/>
+    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainState):
+        #若已在寻访中则不可设置
+        return
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainState, 2)
+    PlayerFairyDomain.NotifyVisitFairyDomainInfo(curPlayer)
     return
\ No newline at end of file

--
Gitblit v1.8.0