Beispiel #1
0
    private static List <ExtraEffectStatus> GetMonsterIntegrationGroupList(List <ExtraEffectStatus> extraEffectStatusList, string[] monsterIntegrationIds, ExtraEffectStatus.ExtraTargetType targetType, EffectStatusBase.ExtraEffectType effectType)
    {
        List <ExtraEffectStatus> list  = new List <ExtraEffectStatus>();
        List <ExtraEffectStatus> list2 = new List <ExtraEffectStatus>();

        foreach (ExtraEffectStatus extraEffectStatus in extraEffectStatusList)
        {
            EffectStatusBase.ExtraTargetSubType targetSubType = (EffectStatusBase.ExtraTargetSubType)extraEffectStatus.TargetSubType;
            if (targetSubType == EffectStatusBase.ExtraTargetSubType.MonsterIntegrationGroup)
            {
                list2.Add(extraEffectStatus);
            }
        }
        while (list2.Count > 0)
        {
            ExtraEffectStatus        extraEffectStatus2 = list2[0];
            List <ExtraEffectStatus> list3 = new List <ExtraEffectStatus>();
            List <ExtraEffectStatus> list4 = new List <ExtraEffectStatus>();
            foreach (ExtraEffectStatus extraEffectStatus3 in list2)
            {
                if (extraEffectStatus3.TargetValue == extraEffectStatus2.TargetValue)
                {
                    list3.Add(extraEffectStatus3);
                }
                else
                {
                    list4.Add(extraEffectStatus3);
                }
            }
            string id   = extraEffectStatus2.TargetValue.ToString();
            bool   flag = monsterIntegrationIds.Where((string item) => item == id).Any <string>();
            if (flag)
            {
                List <ExtraEffectStatus> extraEffectStatusList2 = ExtraEffectStatus.GetExtraEffectStatusList(list3, targetType, EffectStatusBase.ExtraTargetSubType.MonsterIntegrationGroup, extraEffectStatus2.TargetValue, effectType);
                if (extraEffectStatusList2.Count > 0)
                {
                    list.AddRange(extraEffectStatusList2);
                }
            }
            list2 = list4;
        }
        return(list);
    }
    private static List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> GetMonsterIntegrationGroupList(GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] chipEffects, bool isEnemy, string[] monsterIntegrationIds, ChipEffectStatus.TargetType targetType, EffectStatusBase.ExtraEffectType effectType)
    {
        List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> list  = new List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect>();
        List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> list2 = new List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect>();

        foreach (GameWebAPI.RespDataMA_ChipEffectM.ChipEffect chipEffect in chipEffects)
        {
            EffectStatusBase.ExtraTargetSubType extraTargetSubType = (EffectStatusBase.ExtraTargetSubType)chipEffect.targetSubType.ToInt32();
            if (extraTargetSubType == EffectStatusBase.ExtraTargetSubType.MonsterIntegrationGroup)
            {
                list2.Add(chipEffect);
            }
        }
        while (list2.Count > 0)
        {
            GameWebAPI.RespDataMA_ChipEffectM.ChipEffect        chipEffect2 = list2[0];
            List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> list3       = new List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect>();
            List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> list4       = new List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect>();
            foreach (GameWebAPI.RespDataMA_ChipEffectM.ChipEffect chipEffect3 in list2)
            {
                if (chipEffect3.targetValue == chipEffect2.targetValue)
                {
                    list3.Add(chipEffect3);
                }
                else
                {
                    list4.Add(chipEffect3);
                }
            }
            string id   = chipEffect2.targetValue;
            bool   flag = monsterIntegrationIds.Where((string item) => item == id).Any <string>();
            if (flag)
            {
                List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> chipEffectList = ChipEffectStatus.GetChipEffectList(list3.ToArray(), targetType, EffectStatusBase.ExtraTargetSubType.MonsterIntegrationGroup, chipEffect2.targetValue.ToInt32(), isEnemy, effectType);
                if (chipEffectList.Count > 0)
                {
                    list.AddRange(chipEffectList);
                }
            }
            list2 = list4;
        }
        return(list);
    }
Beispiel #3
0
    private static List <ExtraEffectStatus> GetExtraEffectStatusList(List <ExtraEffectStatus> extraEffectStatusList, ExtraEffectStatus.ExtraTargetType targetType, EffectStatusBase.ExtraTargetSubType targetSubType, int targetValue, EffectStatusBase.ExtraEffectType effectType)
    {
        List <ExtraEffectStatus> list = new List <ExtraEffectStatus>();

        if (extraEffectStatusList.Count == 0)
        {
            return(list);
        }
        Func <int, bool> searchEffectType = (int x) => x == (int)effectType;

        if (EffectStatusBase.ExtraEffectType.Atk <= effectType && effectType < EffectStatusBase.ExtraEffectType.AllStatus)
        {
            searchEffectType = ((int x) => x == (int)effectType || x == 27);
        }
        IEnumerable <ExtraEffectStatus> enumerable = extraEffectStatusList.Where((ExtraEffectStatus x) => (x.TargetType == (int)targetType || x.TargetType == 0) && x.TargetSubType == (int)targetSubType && x.TargetValue == targetValue && searchEffectType(x.EffectType));

        foreach (ExtraEffectStatus item in enumerable)
        {
            list.Add(item);
        }
        return(list);
    }
    private static List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> GetChipEffectList(GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] chipEffects, ChipEffectStatus.TargetType targetType, EffectStatusBase.ExtraTargetSubType targetSubType, int targetValue, bool isEnemy, EffectStatusBase.ExtraEffectType effectType)
    {
        List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> list = new List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect>();

        if (chipEffects.Length == 0)
        {
            return(list);
        }
        Func <int, bool> searchEffectType = (int x) => x == (int)effectType;

        if (EffectStatusBase.ExtraEffectType.Atk <= effectType && effectType < EffectStatusBase.ExtraEffectType.AllStatus)
        {
            searchEffectType = ((int x) => x == (int)effectType || x == 27);
        }
        Func <int, bool> searchTargetType = (int x) => x == (int)targetType || (!isEnemy && x == 1) || (isEnemy && x == 2);
        IEnumerable <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> enumerable = chipEffects.Where((GameWebAPI.RespDataMA_ChipEffectM.ChipEffect x) => searchTargetType(x.targetType.ToInt32()) && x.targetSubType.ToInt32() == (int)targetSubType && x.targetValue.ToInt32() == targetValue && searchEffectType(x.effectType.ToInt32()));

        foreach (GameWebAPI.RespDataMA_ChipEffectM.ChipEffect item in enumerable)
        {
            list.Add(item);
        }
        return(list);
    }