Beispiel #1
0
    public bool IsHitExtraEffect(CharacterStateControl character, EffectStatusBase.ExtraEffectType extraEffectType)
    {
        List <ExtraEffectStatus> list = ChipEffectStatus.CheckStageEffectInvalid(new List <ExtraEffectStatus>
        {
            this
        }, character);

        if (list.Count == 0)
        {
            return(false);
        }
        List <ExtraEffectStatus> totalExtraEffectStatusList = ExtraEffectStatus.GetTotalExtraEffectStatusList(list, character.characterStatus.monsterIntegrationIds, character.groupId, character.tolerance, character.characterDatas.tribe, character.characterDatas.growStep, null, null, ExtraEffectStatus.GetExtraTargetType(character), extraEffectType);

        return(totalExtraEffectStatusList.Count > 0);
    }
    private static float GetStatusValue(EffectStatusBase.ExtraEffectType type, MonsterData data, int skillType = 0)
    {
        switch (type)
        {
        case EffectStatusBase.ExtraEffectType.Atk:
            return(float.Parse(data.userMonster.attack));

        case EffectStatusBase.ExtraEffectType.Def:
            return(float.Parse(data.userMonster.defense));

        case EffectStatusBase.ExtraEffectType.Hp:
            return(float.Parse(data.userMonster.hp));

        case EffectStatusBase.ExtraEffectType.Speed:
            return(float.Parse(data.userMonster.speed));

        case EffectStatusBase.ExtraEffectType.Satk:
            return(float.Parse(data.userMonster.spAttack));

        case EffectStatusBase.ExtraEffectType.Sdef:
            return(float.Parse(data.userMonster.spDefense));

        default:
        {
            if (type != EffectStatusBase.ExtraEffectType.SkillPower && type != EffectStatusBase.ExtraEffectType.SkillHit)
            {
                return(0f);
            }
            float result = 0f;
            if (skillType == 1)
            {
                result = (float)data.GetUniqueSkillDetail().skillId.ToInt32();
            }
            else if (skillType == 2)
            {
                result = (float)data.GetCommonSkillDetail().skillId.ToInt32();
            }
            else if (skillType == 3 && data.GetExtraCommonSkillDetail() != null)
            {
                result = (float)data.GetExtraCommonSkillDetail().skillId.ToInt32();
            }
            return(result);
        }
        }
    }
    private IEnumerator PlayStageEffect(EffectStatusBase.EffectTriggerType effectTriggerType)
    {
        bool isBigBoss = base.hierarchyData.batteWaves[base.battleStateData.currentWaveNumber].cameraType == 1;
        List <ExtraEffectStatus> extraEffectStatus = BattleStateManager.current.battleStateData.extraEffectStatus;
        List <ExtraEffectStatus> invocationList    = ExtraEffectStatus.GetInvocationList(extraEffectStatus, effectTriggerType);

        if (invocationList.Count == 0)
        {
            yield break;
        }
        base.stateManager.uiControl.HideCharacterHUDFunction();
        base.stateManager.SetBattleScreen(BattleScreen.PoisonHit);
        this.cameraKey = "0002_command";
        if (isBigBoss)
        {
            this.cameraKey = "BigBoss/0002_command";
        }
        base.stateManager.cameraControl.PlayCameraMotionAction(this.cameraKey, base.battleStateData.stageSpawnPoint, true);
        foreach (ExtraEffectStatus invocation in invocationList)
        {
            IEnumerator function = null;
            EffectStatusBase.ExtraEffectType effectType = (EffectStatusBase.ExtraEffectType)invocation.EffectType;
            if (effectType != EffectStatusBase.ExtraEffectType.LeaderChange)
            {
                function = this.PlayDefaultEffect(invocation);
            }
            else
            {
                function = this.PlayLeaderChange(invocation);
            }
            while (function.MoveNext())
            {
                yield return(null);
            }
            if (base.stateManager.IsLastBattleAndAllDeath())
            {
                break;
            }
        }
        base.stateManager.cameraControl.StopCameraMotionAction(this.cameraKey);
        yield break;
    }
 private static bool CheckExtraStageParams(MonsterData monsterData, GameWebAPI.RespDataMA_GetWorldDungeonExtraEffectM.WorldDungeonExtraEffectM[] effectArray)
 {
     EffectStatusBase.ExtraEffectType[] array = new EffectStatusBase.ExtraEffectType[]
     {
         EffectStatusBase.ExtraEffectType.Atk,
         EffectStatusBase.ExtraEffectType.Def,
         EffectStatusBase.ExtraEffectType.Hp,
         EffectStatusBase.ExtraEffectType.Speed,
         EffectStatusBase.ExtraEffectType.Satk,
         EffectStatusBase.ExtraEffectType.Sdef,
         EffectStatusBase.ExtraEffectType.SkillPower,
         EffectStatusBase.ExtraEffectType.SkillHit
     };
     foreach (EffectStatusBase.ExtraEffectType extraEffectType in array)
     {
         int num  = 0;
         int num2 = 0;
         if (extraEffectType == EffectStatusBase.ExtraEffectType.SkillPower || extraEffectType == EffectStatusBase.ExtraEffectType.SkillHit)
         {
             for (int j = 1; j <= 3; j++)
             {
                 ExtraEffectUtil.GetExtraEffectFluctuationValue(out num, out num2, monsterData, effectArray, extraEffectType, j, false);
                 if (num2 != 0)
                 {
                     return(true);
                 }
             }
         }
         else
         {
             ExtraEffectUtil.GetExtraEffectFluctuationValue(out num, out num2, monsterData, effectArray, extraEffectType, 0, false);
             if (num2 != 0)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Beispiel #5
0
    private static List <ExtraEffectStatus> GetTotalExtraEffectStatusList(List <ExtraEffectStatus> extraEffectStatusList, string[] monsterIntegrationIds, string groupId, Tolerance tolerance, string tribe, GrowStep growStep, AffectEffectProperty skillPropety, HaveSufferState currentSufferState, ExtraEffectStatus.ExtraTargetType targetType, EffectStatusBase.ExtraEffectType effectType)
    {
        List <ExtraEffectStatus> list = new List <ExtraEffectStatus>();

        if (skillPropety != null)
        {
            bool flag = skillPropety.skillId.ToString() == BattleStateManager.PublicAttackSkillId;
            List <ExtraEffectStatus> list2 = new List <ExtraEffectStatus>();
            foreach (ExtraEffectStatus extraEffectStatus in extraEffectStatusList)
            {
                if (extraEffectStatus.TargetValue2 == "0")
                {
                    list2.Add(extraEffectStatus);
                }
                else if (extraEffectStatus.TargetValue2 == "1")
                {
                    if (flag)
                    {
                        list2.Add(extraEffectStatus);
                    }
                }
                else if (extraEffectStatus.TargetValue2 == "2" && !flag)
                {
                    list2.Add(extraEffectStatus);
                }
            }
            ConstValue.ResistanceType skillResistanceType = EffectStatusBase.GetSkillResistanceType(skillPropety);
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(list2, targetType, EffectStatusBase.ExtraTargetSubType.SkillAttribute, 0, effectType));
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(list2, targetType, EffectStatusBase.ExtraTargetSubType.SkillAttribute, (int)skillResistanceType, effectType));
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(list2, targetType, EffectStatusBase.ExtraTargetSubType.SkillId, 0, effectType));
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(list2, targetType, EffectStatusBase.ExtraTargetSubType.SkillId, skillPropety.skillId, effectType));
        }
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterResistance, 0, effectType));
        List <ConstValue.ResistanceType> attributeStrengthList = tolerance.GetAttributeStrengthList();

        foreach (ConstValue.ResistanceType targetValue in attributeStrengthList)
        {
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterResistance, (int)targetValue, effectType));
        }
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterTribe, 0, effectType));
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterTribe, tribe.ToInt32(), effectType));
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterGroup, 0, effectType));
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterGroup, groupId.ToInt32(), effectType));
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.GrowStep, 0, effectType));
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.GrowStep, (int)growStep, effectType));
        if (currentSufferState != null)
        {
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.Suffer, 0, effectType));
            IEnumerator enumerator3 = Enum.GetValues(typeof(SufferStateProperty.SufferType)).GetEnumerator();
            try
            {
                while (enumerator3.MoveNext())
                {
                    object obj = enumerator3.Current;
                    SufferStateProperty.SufferType sufferType = (SufferStateProperty.SufferType)obj;
                    if (sufferType != SufferStateProperty.SufferType.Null)
                    {
                        if (currentSufferState.FindSufferState(sufferType))
                        {
                            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.Suffer, (int)sufferType, effectType));
                        }
                    }
                }
            }
            finally
            {
                IDisposable disposable;
                if ((disposable = (enumerator3 as IDisposable)) != null)
                {
                    disposable.Dispose();
                }
            }
        }
        list.AddRange(ExtraEffectStatus.GetMonsterIntegrationGroupList(extraEffectStatusList, monsterIntegrationIds, targetType, effectType));
        return(list);
    }
Beispiel #6
0
    public static int GetExtraEffectCorrectionValue(int areaId, List <ExtraEffectStatus> extraEffectStatusList, int baseValue, MonsterData[] chipPlayers, MonsterData[] chipEnemys, MonsterData chipTarget, AffectEffectProperty affectEffectProperty, EffectStatusBase.ExtraEffectType effectType)
    {
        List <ExtraEffectStatus> list = ChipEffectStatus.CheckStageEffectInvalid(areaId, extraEffectStatusList, chipPlayers, chipEnemys, chipTarget);

        if (list.Count == 0)
        {
            return(baseValue);
        }
        bool flag = chipEnemys.Where((MonsterData item) => item.userMonster.userMonsterId == chipTarget.userMonster.userMonsterId).Any <MonsterData>();

        GameWebAPI.RespDataMA_GetMonsterMG.MonsterM         group = MonsterMaster.GetMonsterMasterByMonsterGroupId(chipTarget.monsterM.monsterGroupId).Group;
        GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster responseMonsterIntegrationGroupMaster = MasterDataMng.Instance().ResponseMonsterIntegrationGroupMaster;
        GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup[] source      = responseMonsterIntegrationGroupMaster.monsterIntegrationGroupM.Where((GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup item) => item.monsterId == chipTarget.monsterM.monsterId).ToArray <GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup>();
        string[] monsterIntegrationIds = source.Select((GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup item) => item.monsterIntegrationId).ToArray <string>();
        GameWebAPI.RespDataMA_GetMonsterResistanceM.MonsterResistanceM        resistanceMaster     = MonsterResistanceData.GetResistanceMaster(chipTarget.monsterM.resistanceId);
        List <GameWebAPI.RespDataMA_GetMonsterResistanceM.MonsterResistanceM> uniqueResistanceList = MonsterResistanceData.GetUniqueResistanceList(chipTarget.GetResistanceIdList());

        GameWebAPI.RespDataMA_GetMonsterResistanceM.MonsterResistanceM data = MonsterResistanceData.AddResistanceFromMultipleTranceData(resistanceMaster, uniqueResistanceList);
        Tolerance tolerance = ServerToBattleUtility.ResistanceToTolerance(data);
        GrowStep  growStep  = MonsterGrowStepData.ToGrowStep(group.growStep);
        List <ExtraEffectStatus> totalExtraEffectStatusList = ExtraEffectStatus.GetTotalExtraEffectStatusList(list, monsterIntegrationIds, chipTarget.monsterM.monsterGroupId, tolerance, group.tribe, growStep, affectEffectProperty, null, (!flag) ? ExtraEffectStatus.ExtraTargetType.Player : ExtraEffectStatus.ExtraTargetType.Enemy, effectType);

        if (totalExtraEffectStatusList.Count > 0)
        {
            return((int)ExtraEffectStatus.GetCorrectionValue((float)baseValue, totalExtraEffectStatusList));
        }
        return(baseValue);
    }
Beispiel #7
0
    private static float GetExtraEffectCorrectionValue(List <ExtraEffectStatus> extraEffectStatusList, float baseValue, string[] monsterIntegrationIds, string groupId, Tolerance tolerance, string tribe, GrowStep growStep, AffectEffectProperty skillPropety, HaveSufferState currentSufferState, ExtraEffectStatus.ExtraTargetType targetType, EffectStatusBase.ExtraEffectType effectType)
    {
        List <ExtraEffectStatus> totalExtraEffectStatusList = ExtraEffectStatus.GetTotalExtraEffectStatusList(extraEffectStatusList, monsterIntegrationIds, groupId, tolerance, tribe, growStep, skillPropety, currentSufferState, targetType, effectType);

        if (totalExtraEffectStatusList.Count > 0)
        {
            return(ExtraEffectStatus.GetCorrectionValue(baseValue, totalExtraEffectStatusList));
        }
        return(baseValue);
    }
Beispiel #8
0
    public static int GetExtraEffectValue(List <ExtraEffectStatus> extraEffectStatusList, int baseValue, CharacterStateControl character, EffectStatusBase.ExtraEffectType effectType)
    {
        List <ExtraEffectStatus> list = ChipEffectStatus.CheckStageEffectInvalid(extraEffectStatusList, character);

        if (list.Count == 0)
        {
            return(baseValue);
        }
        return((int)ExtraEffectStatus.GetExtraEffectCorrectionValue(list, (float)baseValue, character.characterStatus.monsterIntegrationIds, character.groupId, character.tolerance, character.characterDatas.tribe, character.characterDatas.growStep, null, character.currentSufferState, ExtraEffectStatus.GetExtraTargetType(character), effectType));
    }
    public static float GetChipEffectValueToFloat(GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] chipEffects, float baseValue, bool isEnemy, string[] monsterIntegrationIds, string groupId, Tolerance tolerance, string tribe, GrowStep growStep, AffectEffectProperty skillPropety, HaveSufferState currentSufferState, ChipEffectStatus.TargetType targetType, EffectStatusBase.ExtraEffectType effectType, int attackNum = 0)
    {
        List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> totalChipEffectStatusList = ChipEffectStatus.GetTotalChipEffectStatusList(chipEffects, isEnemy, monsterIntegrationIds, groupId, tolerance, tribe, growStep, skillPropety, currentSufferState, targetType, effectType);

        if (totalChipEffectStatusList.Count > 0)
        {
            float correctionValue = ChipEffectStatus.GetCorrectionValue(baseValue, totalChipEffectStatusList, attackNum);
            return(correctionValue - baseValue);
        }
        return(0f);
    }
    private static int GetExtraStageValue(int baseValue, MonsterData monsterData, MonsterData[] party, GameWebAPI.RespDataMA_GetWorldDungeonExtraEffectM.WorldDungeonExtraEffectM[] effectArray, AffectEffectProperty affectEffectProperty, EffectStatusBase.ExtraEffectType extraEffectType)
    {
        if (effectArray == null || effectArray.Length == 0)
        {
            return(baseValue);
        }
        List <ExtraEffectStatus> list = new List <ExtraEffectStatus>();

        foreach (GameWebAPI.RespDataMA_GetWorldDungeonExtraEffectM.WorldDungeonExtraEffectM worldDungeonExtraEffectM in effectArray)
        {
            ExtraEffectStatus item = new ExtraEffectStatus(worldDungeonExtraEffectM);
            list.Add(item);
        }
        if (extraEffectType == EffectStatusBase.ExtraEffectType.SkillPower)
        {
            return(ExtraEffectStatus.GetExtraEffectCorrectionValue(ExtraEffectUtil.GetAreaId(), list, affectEffectProperty.GetPower(null), party, new MonsterData[0], monsterData, affectEffectProperty, extraEffectType));
        }
        if (extraEffectType == EffectStatusBase.ExtraEffectType.SkillHit)
        {
            return(ExtraEffectStatus.GetExtraEffectCorrectionValue(ExtraEffectUtil.GetAreaId(), list, (int)(affectEffectProperty.hitRate * 100f), party, new MonsterData[0], monsterData, affectEffectProperty, extraEffectType));
        }
        return(ExtraEffectStatus.GetExtraEffectCorrectionValue(ExtraEffectUtil.GetAreaId(), list, baseValue, party, new MonsterData[0], monsterData, null, extraEffectType));
    }
    public static void GetExtraEffectFluctuationValue(out int result, out int change, MonsterData monsterData, GameWebAPI.RespDataMA_GetWorldDungeonExtraEffectM.WorldDungeonExtraEffectM[] effectArray, EffectStatusBase.ExtraEffectType extraEffectType, int skillType = 0, bool isChipValue = true)
    {
        int num  = (int)ExtraEffectUtil.GetStatusValue(extraEffectType, monsterData, skillType);
        int num2 = 0;

        if (isChipValue)
        {
            num2 = ExtraEffectUtil.GetExtraChipValue(monsterData, extraEffectType);
        }
        MonsterData[] party = new MonsterData[]
        {
            monsterData
        };
        if (CMD_PartyEdit.instance != null)
        {
            MonsterData[] array = CMD_PartyEdit.instance.GetSelectedMD().ToArray();
            bool          flag  = array.Where((MonsterData item) => item.userMonster.userMonsterId == monsterData.userMonster.userMonsterId).Any <MonsterData>();
            if (flag)
            {
                party = array;
            }
            else
            {
                GameWebAPI.RespDataMN_GetDeckList.DeckList[] deckList = DataMng.Instance().RespDataMN_DeckList.deckList;
                string deckNoText = DataMng.Instance().RespDataMN_DeckList.selectDeckNum;
                GameWebAPI.RespDataMN_GetDeckList.DeckList deckList2 = deckList.Where((GameWebAPI.RespDataMN_GetDeckList.DeckList item) => item.deckNum == deckNoText.ToString()).SingleOrDefault <GameWebAPI.RespDataMN_GetDeckList.DeckList>();
                bool flag2 = deckList2.monsterList.Where((GameWebAPI.RespDataMN_GetDeckList.MonsterList item) => item.userMonsterId == monsterData.userMonster.userMonsterId).Any <GameWebAPI.RespDataMN_GetDeckList.MonsterList>();
                if (flag2)
                {
                    List <MonsterData> list = new List <MonsterData>();
                    foreach (GameWebAPI.RespDataMN_GetDeckList.MonsterList monsterList2 in deckList2.monsterList)
                    {
                        MonsterData monsterDataByUserMonsterID = MonsterDataMng.Instance().GetMonsterDataByUserMonsterID(monsterList2.userMonsterId, false);
                        list.Add(monsterDataByUserMonsterID);
                    }
                    party = list.ToArray();
                }
            }
        }
        int num3 = 0;
        AffectEffectProperty affectEffectProperty = null;

        if (extraEffectType == EffectStatusBase.ExtraEffectType.SkillPower)
        {
            List <AffectEffectProperty> affectEffectPropertyListForUtil = BattleServerControl.GetAffectEffectPropertyListForUtil(num.ToString());
            if (affectEffectPropertyListForUtil != null && affectEffectPropertyListForUtil.Count <AffectEffectProperty>() > 0)
            {
                affectEffectProperty = affectEffectPropertyListForUtil[0];
                num  = affectEffectProperty.GetPower(null);
                num3 = ExtraEffectUtil.GetExtraStageValue(num, monsterData, party, effectArray, affectEffectProperty, extraEffectType);
            }
            else
            {
                num = num3;
            }
        }
        else if (extraEffectType == EffectStatusBase.ExtraEffectType.SkillHit)
        {
            List <AffectEffectProperty> affectEffectPropertyListForUtil2 = BattleServerControl.GetAffectEffectPropertyListForUtil(num.ToString());
            if (affectEffectPropertyListForUtil2 != null && affectEffectPropertyListForUtil2.Count <AffectEffectProperty>() > 0)
            {
                affectEffectProperty = affectEffectPropertyListForUtil2[0];
                num  = (int)(affectEffectProperty.hitRate * 100f);
                num3 = ExtraEffectUtil.GetExtraStageValue(num, monsterData, party, effectArray, affectEffectProperty, extraEffectType);
            }
            else
            {
                num = num3;
            }
        }
        else
        {
            num3 = ExtraEffectUtil.GetExtraStageValue(num, monsterData, party, effectArray, affectEffectProperty, extraEffectType);
        }
        result = num3 + num2;
        change = 0;
        if (num2 > 0 || num < num3)
        {
            change = 1;
        }
        else if (num2 < 0 || num > num3)
        {
            change = -1;
        }
    }
    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);
    }
    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);
    }
    private static List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> GetTotalChipEffectStatusList(GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] chipEffects, bool isEnemy, string[] monsterIntegrationIds, string groupId, Tolerance tolerance, string tribe, GrowStep growStep, AffectEffectProperty skillPropety, HaveSufferState currentSufferState, ChipEffectStatus.TargetType targetType, EffectStatusBase.ExtraEffectType effectType)
    {
        List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> list = new List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect>();

        list.AddRange(ChipEffectStatus.GetChipEffectList(chipEffects, targetType, EffectStatusBase.ExtraTargetSubType.Non, 0, isEnemy, effectType));
        if (skillPropety != null)
        {
            bool flag = skillPropety.skillId.ToString() == BattleStateManager.PublicAttackSkillId;
            List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> list2 = new List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect>();
            foreach (GameWebAPI.RespDataMA_ChipEffectM.ChipEffect chipEffect in chipEffects)
            {
                if (chipEffect.targetValue2 == "0")
                {
                    list2.Add(chipEffect);
                }
                else if (chipEffect.targetValue2 == "1")
                {
                    if (flag)
                    {
                        list2.Add(chipEffect);
                    }
                }
                else if (chipEffect.targetValue2 == "2" && !flag)
                {
                    list2.Add(chipEffect);
                }
            }
            ConstValue.ResistanceType skillResistanceType = EffectStatusBase.GetSkillResistanceType(skillPropety);
            list.AddRange(ChipEffectStatus.GetChipEffectList(list2.ToArray(), targetType, EffectStatusBase.ExtraTargetSubType.SkillAttribute, 0, isEnemy, effectType));
            list.AddRange(ChipEffectStatus.GetChipEffectList(list2.ToArray(), targetType, EffectStatusBase.ExtraTargetSubType.SkillAttribute, (int)skillResistanceType, isEnemy, effectType));
            list.AddRange(ChipEffectStatus.GetChipEffectList(list2.ToArray(), targetType, EffectStatusBase.ExtraTargetSubType.SkillId, 0, isEnemy, effectType));
            list.AddRange(ChipEffectStatus.GetChipEffectList(list2.ToArray(), targetType, EffectStatusBase.ExtraTargetSubType.SkillId, skillPropety.skillId, isEnemy, effectType));
        }
        list.AddRange(ChipEffectStatus.GetChipEffectList(chipEffects, targetType, EffectStatusBase.ExtraTargetSubType.MonsterResistance, 0, isEnemy, effectType));
        List <ConstValue.ResistanceType> attributeStrengthList = tolerance.GetAttributeStrengthList();

        foreach (ConstValue.ResistanceType targetValue in attributeStrengthList)
        {
            list.AddRange(ChipEffectStatus.GetChipEffectList(chipEffects, targetType, EffectStatusBase.ExtraTargetSubType.MonsterResistance, (int)targetValue, isEnemy, effectType));
        }
        list.AddRange(ChipEffectStatus.GetChipEffectList(chipEffects, targetType, EffectStatusBase.ExtraTargetSubType.MonsterTribe, 0, isEnemy, effectType));
        list.AddRange(ChipEffectStatus.GetChipEffectList(chipEffects, targetType, EffectStatusBase.ExtraTargetSubType.MonsterTribe, tribe.ToInt32(), isEnemy, effectType));
        list.AddRange(ChipEffectStatus.GetChipEffectList(chipEffects, targetType, EffectStatusBase.ExtraTargetSubType.MonsterGroup, 0, isEnemy, effectType));
        list.AddRange(ChipEffectStatus.GetChipEffectList(chipEffects, targetType, EffectStatusBase.ExtraTargetSubType.MonsterGroup, groupId.ToInt32(), isEnemy, effectType));
        list.AddRange(ChipEffectStatus.GetChipEffectList(chipEffects, targetType, EffectStatusBase.ExtraTargetSubType.GrowStep, 0, isEnemy, effectType));
        list.AddRange(ChipEffectStatus.GetChipEffectList(chipEffects, targetType, EffectStatusBase.ExtraTargetSubType.GrowStep, (int)growStep, isEnemy, effectType));
        if (currentSufferState != null)
        {
            list.AddRange(ChipEffectStatus.GetChipEffectList(chipEffects, targetType, EffectStatusBase.ExtraTargetSubType.Suffer, 0, isEnemy, effectType));
            IEnumerator enumerator2 = Enum.GetValues(typeof(SufferStateProperty.SufferType)).GetEnumerator();
            try
            {
                while (enumerator2.MoveNext())
                {
                    object obj = enumerator2.Current;
                    SufferStateProperty.SufferType sufferType = (SufferStateProperty.SufferType)obj;
                    if (sufferType != SufferStateProperty.SufferType.Null)
                    {
                        if (currentSufferState.FindSufferState(sufferType))
                        {
                            list.AddRange(ChipEffectStatus.GetChipEffectList(chipEffects, targetType, EffectStatusBase.ExtraTargetSubType.Suffer, (int)sufferType, isEnemy, effectType));
                        }
                    }
                }
            }
            finally
            {
                IDisposable disposable;
                if ((disposable = (enumerator2 as IDisposable)) != null)
                {
                    disposable.Dispose();
                }
            }
        }
        list.AddRange(ChipEffectStatus.GetMonsterIntegrationGroupList(chipEffects, isEnemy, monsterIntegrationIds, targetType, effectType));
        return(list);
    }
Beispiel #15
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 int GetExtraChipValue(MonsterData monsterData, EffectStatusBase.ExtraEffectType effectType)
    {
        float num    = 0f;
        int   areaId = ExtraEffectUtil.GetAreaId();

        GameWebAPI.RespDataMA_GetMonsterMG.MonsterM group = MonsterMaster.GetMonsterMasterByMonsterGroupId(monsterData.monsterM.monsterGroupId).Group;
        foreach (int num2 in monsterData.GetChipEquip().GetChipIdList())
        {
            GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] chipEffectData = ChipDataMng.GetChipEffectData(num2.ToString());
            if (chipEffectData != null)
            {
                GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] invocationList = ChipEffectStatus.GetInvocationList(chipEffectData, EffectStatusBase.EffectTriggerType.Area, monsterData.monsterM.monsterGroupId.ToInt32(), null, areaId);
                int num3 = 0;
                EffectStatusBase.ExtraEffectType effectType2 = EffectStatusBase.ExtraEffectType.Non;
                switch (effectType)
                {
                case EffectStatusBase.ExtraEffectType.Atk:
                    num3        = monsterData.userMonster.attack.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Atk;
                    break;

                case EffectStatusBase.ExtraEffectType.Def:
                    num3        = monsterData.userMonster.defense.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Def;
                    break;

                case EffectStatusBase.ExtraEffectType.Hp:
                    num3        = monsterData.userMonster.hp.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Hp;
                    break;

                case EffectStatusBase.ExtraEffectType.Speed:
                    num3        = monsterData.userMonster.speed.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Speed;
                    break;

                case EffectStatusBase.ExtraEffectType.Satk:
                    num3        = monsterData.userMonster.spAttack.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Satk;
                    break;

                case EffectStatusBase.ExtraEffectType.Sdef:
                    num3        = monsterData.userMonster.spDefense.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Sdef;
                    break;

                default:
                    if (effectType == EffectStatusBase.ExtraEffectType.SkillPower || effectType == EffectStatusBase.ExtraEffectType.SkillHit)
                    {
                        num3        = 0;
                        effectType2 = EffectStatusBase.ExtraEffectType.Non;
                    }
                    break;
                }
                GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster responseMonsterIntegrationGroupMaster = MasterDataMng.Instance().ResponseMonsterIntegrationGroupMaster;
                GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup[] source      = responseMonsterIntegrationGroupMaster.monsterIntegrationGroupM.Where((GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup item) => item.monsterId == monsterData.monsterM.monsterId).ToArray <GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup>();
                string[] monsterIntegrationIds = source.Select((GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup item) => item.monsterIntegrationId).ToArray <string>();
                num += ChipEffectStatus.GetChipEffectValueToFloat(invocationList, (float)num3, false, monsterIntegrationIds, monsterData.monsterM.monsterGroupId, ExtraEffectUtil.ResistanceToTolerance(monsterData), group.tribe, MonsterGrowStepData.ToGrowStep(group.growStep), null, null, ChipEffectStatus.TargetType.Actor, effectType2, 0);
            }
        }
        return(Mathf.FloorToInt(num));
    }
Beispiel #17
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);
    }
 public static float GetChipEffectValueToFloat(GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] chipEffects, float baseValue, CharacterStateControl character, EffectStatusBase.ExtraEffectType effectType)
 {
     return(ChipEffectStatus.GetChipEffectValueToFloat(chipEffects, baseValue, character.isEnemy, character.characterStatus.monsterIntegrationIds, character.groupId, character.tolerance, character.characterDatas.tribe, character.characterDatas.growStep, null, character.currentSufferState, ChipEffectStatus.GetTargetType(character, character), effectType, 0));
 }