private static bool CheckStageEffectInvalid(CharacterStateControl chipTarget, ExtraEffectStatus extraEffectStatus) { BattleStateManager current = BattleStateManager.current; CharacterStateControl[] totalCharacters = current.battleStateData.GetTotalCharacters(); foreach (CharacterStateControl characterStateControl in totalCharacters) { if (!(characterStateControl == null)) { ChipEffectStatus.TargetType targetType = ChipEffectStatus.GetTargetType(characterStateControl, chipTarget); foreach (int num in characterStateControl.chipIds) { GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] array2 = ChipDataMng.GetChipEffectData(num.ToString()); array2 = ChipEffectStatus.GetStageEffectInvalidList(BattleStateManager.current.hierarchyData.areaId, array2, extraEffectStatus).ToArray(); if (array2.Length > 0) { List <GameWebAPI.RespDataMA_ChipEffectM.ChipEffect> totalChipEffectStatusList = ChipEffectStatus.GetTotalChipEffectStatusList(array2, chipTarget.isEnemy, chipTarget.characterStatus.monsterIntegrationIds, chipTarget.groupId, chipTarget.tolerance, chipTarget.characterDatas.tribe, chipTarget.characterDatas.growStep, null, null, targetType, EffectStatusBase.ExtraEffectType.StageEffextInvalid); if (totalChipEffectStatusList.Count > 0) { return(true); } } } } } return(false); }
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> 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); }
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); }
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); }