protected void HandleTriggerEffect(long casterID, int skillID, int effectID, List <EffectTargetInfo> effectTargetInfos, XPoint basePoint, int effectUniqueID, bool isAddEffect = true, bool isCommunicateMix = false) { Effect effectDataByID = LocalAgent.GetEffectDataByID(effectID); EntityParent entityByID = LocalAgent.GetEntityByID(casterID); List <long> list = new List <long>(); for (int i = 0; i < effectTargetInfos.get_Count(); i++) { list.Add(effectTargetInfos.get_Item(i).targetId); } if (isAddEffect) { if (list.get_Count() > 0 && LocalAgent.GetEntityUsable(entityByID, isCommunicateMix)) { int num = BattleCalculator.CalculateEffectCasterActPoint(entityByID.BattleBaseAttrs, (double)effectDataByID.casterPoint); entityByID.SetValue(GameData.AttrType.ActPoint, entityByID.TryAddValue(GameData.AttrType.ActPoint, (long)num), true); } if (isCommunicateMix && effectDataByID.type1 != 0 && effectDataByID.type1 != 1 && effectDataByID.type1 != 2) { GlobalBattleNetwork.Instance.SendClientDriveBattleEffectDamage(casterID, 0L, (!LocalAgent.GetEntityUsable(entityByID, isCommunicateMix)) ? 0L : entityByID.Hp, 0L, 0L, skillID, effectID, true, false, null, null, basePoint, new List <long>(), string.Empty, true); } } for (int j = 0; j < list.get_Count(); j++) { EntityParent entityByID2 = LocalAgent.GetEntityByID(list.get_Item(j)); if (LocalAgent.GetEntityUsable(entityByID2, isCommunicateMix)) { entityByID2.SetValue(GameData.AttrType.ActPoint, entityByID2.TryAddValue(GameData.AttrType.ActPoint, (long)effectDataByID.targetPoint), true); } } switch (effectDataByID.type1) { case 1: LocalBattleEffectCalculatorDamageHandler.AppDamage(effectDataByID, entityByID, list, basePoint, skillID, isAddEffect, isCommunicateMix); break; case 2: LocalBattleEffectCalculatorTreatHandler.AppTheat(effectDataByID, entityByID, list, basePoint, skillID, isAddEffect, isCommunicateMix); break; case 3: LocalBattleEffectSummonMonsterHandler.AppSummonMonster(effectDataByID, entityByID, basePoint, isCommunicateMix); break; case 4: LocalBattleEffectReliveHandler.AppRelive(list, isCommunicateMix); break; case 5: LocalBattleEffectDrainHandler.AppDrain(effectDataByID, entityByID, list, isCommunicateMix); break; case 7: this.AppFuse(entityByID, skillID, isCommunicateMix); break; case 8: LocalBattleEffectSummonPetHandler.AppSummonPet(effectDataByID, entityByID, skillID, isCommunicateMix); break; case 9: LocalBattleEffectPetManualSkillHandler.AppManualSkill(entityByID, list, skillID, isCommunicateMix); break; case 10: LocalBattleEffectBlinkHandler.AppBlink(effectDataByID, entityByID, basePoint, isCommunicateMix); break; case 11: LocalBattleEffectHitHandler.AppHit(effectDataByID, entityByID, list, basePoint, isAddEffect); break; } for (int k = 0; k < list.get_Count(); k++) { for (int l = 0; l < effectDataByID.addLoopBuff.get_Count(); l++) { this.AppAddBuff(effectDataByID.addLoopBuff.get_Item(l), entityByID, list.get_Item(k), skillID, effectDataByID.element, isCommunicateMix); } if (isAddEffect) { for (int m = 0; m < effectDataByID.addBuff.get_Count(); m++) { this.AppAddBuff(effectDataByID.addBuff.get_Item(m), entityByID, list.get_Item(k), skillID, effectDataByID.element, isCommunicateMix); } for (int n = 0; n < effectDataByID.removeBuff.get_Count(); n++) { this.AppRemoveBuff(effectDataByID.removeBuff.get_Item(n), list.get_Item(k)); } } if (entityByID != null) { int skillLevelByID = entityByID.GetSkillLevelByID(skillID); for (int num2 = 0; num2 < effectDataByID.gradeAddLoopBuffId.get_Count(); num2++) { if (effectDataByID.gradeAddLoopBuffId.get_Item(num2).key == skillLevelByID) { this.AppAddBuff(effectDataByID.gradeAddLoopBuffId.get_Item(num2).value, entityByID, list.get_Item(k), skillID, effectDataByID.element, isCommunicateMix); } } if (isAddEffect) { for (int num3 = 0; num3 < effectDataByID.gradeAddBuffId.get_Count(); num3++) { if (effectDataByID.gradeAddBuffId.get_Item(num3).key == skillLevelByID) { this.AppAddBuff(effectDataByID.gradeAddBuffId.get_Item(num3).value, entityByID, list.get_Item(k), skillID, effectDataByID.element, isCommunicateMix); } } } } } }