Example #1
0
    // 计算宠物战队Buff效果aa
    public List <int> GetPetGroupBuff(sdGameActor kActor)
    {
        Hashtable kGroupTable = sdConfDataMgr.Instance().ParsedPetGroupsTable;

        if (kGroupTable == null)
        {
            return(null);
        }

        Hashtable kSapTable = sdConfDataMgr.Instance().ParsedPetSapsTable;

        if (kSapTable == null)
        {
            return(null);
        }

        //
        bool bIsPet = (kActor.GetActorType() == ActorType.AT_Pet);

        // 查找匹配的组合效果aa
        List <int> kValidSaps = new List <int>();

        foreach (DictionaryEntry kEntry in kGroupTable)
        {
            Hashtable kGroupItem = kEntry.Value as Hashtable;
            if (kGroupItem == null)
            {
                continue;
            }

            if (bIsPet)
            {
                bool bHasPet = (bool)(kGroupItem["HasPet"]);
                if (!bHasPet)
                {
                    continue;                           //< 组合对宠物无效aa
                }
            }
            else
            {
                bool bHasRole = (bool)(kGroupItem["HasRole"]);
                if (!bHasRole)
                {
                    continue;                           //< 组合对角色无效aa
                }
            }

            bool bValid = true;
            for (int iIndex = 1; iIndex <= 4; ++iIndex)
            {
                string kSkillKey = "Data" + iIndex.ToString() + ".PetID";
                int    iPetTid   = (int)kGroupItem[kSkillKey];
                if (iPetTid > 0 && !IsPetInPetTeam(iPetTid))
                {
                    bValid = false;
                    break;
                }
            }

            if (bValid)
            {
                int iSapId = (int)kGroupItem["SapID"];
                kValidSaps.Add(iSapId);
            }
        }

        // 查找组合的效果
        List <int> kBuffList = new List <int>();

        foreach (int iSap in kValidSaps)
        {
            Hashtable kSapItem = kSapTable[iSap] as Hashtable;
            if (kSapItem == null)
            {
                continue;
            }

            for (int iIndex = 1; iIndex <= 6; ++iIndex)
            {
                string kSkillKey = "Skill" + iIndex.ToString() + ".SkillID";
                int    iSkillId  = (int)kSapItem[kSkillKey];
                if (iSkillId > 0)
                {
                    kBuffList.Add(iSkillId);
                }
            }
        }

        return(kBuffList);
    }