Пример #1
0
 public static void AppSummonMonster(Effect effectData, EntityParent caster, XPoint basePoint, bool isCommunicateMix)
 {
     if (isCommunicateMix)
     {
         return;
     }
     switch (effectData.type2)
     {
     case 2:
     case 4:
         LocalBattleEffectSummonMonsterHandler.SummonMonster(effectData, caster, basePoint, effectData.monsterId, effectData.summonId);
         break;
     }
 }
Пример #2
0
    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);
                        }
                    }
                }
            }
        }
    }