hch
2019-04-15 37e044190ad9c4cd98e3ecc42762379676bd6c23
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,20 +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
@@ -2507,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():
@@ -2532,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
    
    
@@ -2543,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)))
@@ -2590,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)
#---------------------------------------------------------------------
##执行 扣除玩家镖车押金
@@ -2837,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
@@ -2864,7 +2825,7 @@
                 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=[]):
                 equipIndex= -1, isGreat=0, baseAttrRate=ShareDefine.Def_MaxRateValue, greatAttrList=[], isAuctionItem=False):
#    if PlayerFamily.DoAddFamilyBossFoodEx(curPlayer, itemID, itemCount, ShareDefine.Def_AddFAVReason_DoFamilyMisson):
#        #仙盟兽粮自动使用
#        return
@@ -2873,13 +2834,13 @@
    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
    
@@ -2898,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}]):
@@ -2928,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
@@ -3732,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="[卓越属性列表]" />  
@@ -3753,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)
@@ -3784,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)
#---------------------------------------------------------------------
@@ -3823,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="[卓越属性列表]" />  
@@ -3843,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)
@@ -3868,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()
@@ -4364,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
#---------------------------------------------------------------------
##删除物品
@@ -5238,10 +5148,13 @@
    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)
@@ -5289,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
@@ -5406,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
@@ -6090,6 +5942,34 @@
    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 任务实例
@@ -6111,11 +5991,11 @@
# @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))
#    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_调度器
@@ -6490,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 玩家实例
@@ -6622,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
#---------------------------------------------------------------------
##给予玩家技能
@@ -7204,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
@@ -7227,21 +7067,7 @@
    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
@@ -7257,12 +7083,31 @@
    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
    return #ChEquip.GetTotalEquipStars(curPlayer) >= totalcnt
##激活法宝,确认与成就逻辑后使用
# @param None
@@ -7270,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现身"/>
@@ -7299,3 +7142,11 @@
    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