Esempio n. 1
0
    public void AppAddBuff(int buffID, EntityParent caster, long targetID, int fromSkillID, int elementType = 0, bool isCommunicateMix = false)
    {
        Buff         buffDataByID = LocalAgent.GetBuffDataByID(buffID);
        EntityParent entityByID   = LocalAgent.GetEntityByID(targetID);

        if (this.CheckBuff(buffDataByID, caster, entityByID, fromSkillID, elementType, isCommunicateMix))
        {
            this.InitBuff(buffDataByID, caster, entityByID, fromSkillID, elementType, isCommunicateMix);
        }
    }
Esempio n. 2
0
    public void AddGlobalBuff(EntityParent target)
    {
        EntityParent entSelf = EntityWorld.Instance.EntSelf;

        for (int i = 0; i < this.globalBuff.get_Count(); i++)
        {
            Buff buffDataByID = LocalAgent.GetBuffDataByID(this.globalBuff.get_Item(i));
            if (this.CheckAddGlobalBuff(buffDataByID, entSelf, target))
            {
                this.InitGlobalBuff(buffDataByID, entSelf, target);
            }
        }
    }
Esempio n. 3
0
 public bool CheckBuffTypeContainOther(Buff buffData, long targetID)
 {
     if (!this.buffStateTable.ContainsKey(targetID))
     {
         return(false);
     }
     for (int i = 0; i < this.buffStateTable[targetID].Count; i++)
     {
         if (this.buffStateTable[targetID].ElementKeyAt(i) != buffData.id)
         {
             Buff buffDataByID = LocalAgent.GetBuffDataByID(this.buffStateTable[targetID].ElementKeyAt(i));
             if (buffDataByID.type == buffData.type)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Esempio n. 4
0
    protected bool CheckAddGlobalBuff(Buff buffData, EntityParent caster, EntityParent target)
    {
        if (buffData == null)
        {
            return(false);
        }
        if (caster == null)
        {
            return(false);
        }
        if (target == null)
        {
            return(false);
        }
        if (!EntityWorld.Instance.TargetTypeFilter <EntityParent>(target, caster, buffData.globalTarget))
        {
            return(false);
        }
        if (!BattleCalculator.CalculateAddBuff(caster.BattleBaseAttrs, target.BattleBaseAttrs, (double)buffData.buffProp, 0))
        {
            return(false);
        }
        XDict <int, BuffState> buffListByEntityID = this.GetBuffListByEntityID(target.ID);

        if (buffListByEntityID == null)
        {
            return(false);
        }
        for (int i = 0; i < buffListByEntityID.Count; i++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(i)).resist.Contains(buffData.type))
            {
                return(false);
            }
        }
        for (int j = 0; j < buffListByEntityID.Count; j++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(j)).resistId.Contains(buffData.id))
            {
                return(false);
            }
        }
        List <int> list = new List <int>();

        for (int k = 0; k < buffListByEntityID.Count; k++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(k)).cover.Contains(buffData.type))
            {
                list.Add(buffListByEntityID.ElementKeyAt(k));
            }
        }
        for (int l = 0; l < list.get_Count(); l++)
        {
            this.AppRemoveBuff(list.get_Item(l), target.ID);
        }
        list.Clear();
        for (int m = 0; m < buffListByEntityID.Count; m++)
        {
            if (buffData.delete.Contains(LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(m)).type))
            {
                list.Add(buffListByEntityID.ElementKeyAt(m));
            }
        }
        for (int n = 0; n < list.get_Count(); n++)
        {
            this.AppRemoveBuff(list.get_Item(n), target.ID);
        }
        if (LocalAgent.CheckBuffByTargetIDAndBuffID(target.ID, buffData.id))
        {
            int overlayModeId = buffData.overlayModeId;
            if (overlayModeId != 1 && overlayModeId != 2)
            {
                this.AppRemoveBuff(buffData.id, target.ID);
            }
        }
        return(true);
    }
Esempio n. 5
0
    protected void KillBuff(int buffID, long casterID, long targetID, int fromSkillLevel, bool isCommunicateMix)
    {
        Buff         buffDataByID = LocalAgent.GetBuffDataByID(buffID);
        EntityParent entityByID   = LocalAgent.GetEntityByID(casterID);
        EntityParent entityByID2  = LocalAgent.GetEntityByID(targetID);

        switch (buffDataByID.type)
        {
        case 1:
            LocalBattleBuffCalculatorDamageHandler.KillBuff(buffID, casterID, targetID, fromSkillLevel, isCommunicateMix);
            break;

        case 2:
            LocalBattleBuffCalculatorTreatHandler.KillBuff(buffID, casterID, targetID, fromSkillLevel, isCommunicateMix);
            break;

        case 3:
            LocalBattleBuffTauntHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 4:
            LocalBattleBuffFixHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 5:
            LocalBattleBuffStaticHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 6:
            LocalBattleBuffShiftHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 7:
            LocalBattleBuffChangeAttrsHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 8:
            LocalBattleBuffSuperArmorHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 9:
            LocalBattleBuffDrainHandler.KillBuff(buffID, casterID, targetID, fromSkillLevel, isCommunicateMix);
            break;

        case 10:
            LocalBattleBuffIgnoreFormulaHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 11:
            LocalBattleBuffCloseRendererHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 12:
            LocalBattleBuffMoveCastHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 13:
            LocalBattleBuffFilterHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 14:
            LocalBattleBuffDizzyHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 15:
            LocalBattleBuffUnconspicuousHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 16:
            LocalBattleBuffAuraHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 17:
            LocalBattleBuffWeakHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 18:
            LocalBattleBuffIncurableHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 19:
            LocalBattleBuffCalculatorTreat2Handler.KillBuff(buffID, casterID, targetID, fromSkillLevel, isCommunicateMix);
            break;
        }
        if (buffDataByID.tempSkill > 0)
        {
            LocalBattleProtocolSimulator.SendRemoveSkill(targetID, buffDataByID.tempSkill);
        }
    }
Esempio n. 6
0
    protected void IntervalHandleBuff(int buffID, long targetID)
    {
        EntityParent entityByID = LocalAgent.GetEntityByID(targetID);

        if (entityByID == null)
        {
            return;
        }
        XDict <int, BuffState> buffListByEntityID = this.GetBuffListByEntityID(targetID);

        if (buffListByEntityID == null)
        {
            return;
        }
        if (buffListByEntityID.Count == 0)
        {
            return;
        }
        if (!buffListByEntityID.ContainsKey(buffID))
        {
            return;
        }
        EntityParent entityByID2 = LocalAgent.GetEntityByID(this.buffStateTable[targetID][buffID].casterID);

        if (entityByID2 == null)
        {
            return;
        }
        Buff     buffDataByID = LocalAgent.GetBuffDataByID(buffID);
        BuffType type         = (BuffType)buffDataByID.type;

        switch (type)
        {
        case BuffType.Aura:
            entityByID.GetSkillManager().ClientCastSkillByID(buffDataByID.tempSkill);
            return;

        case BuffType.Weak:
        case BuffType.Incurable:
IL_83:
            if (type == BuffType.Damage)
            {
                LocalBattleBuffCalculatorDamageHandler.IntervalBuff(buffDataByID, entityByID2, entityByID, this.buffStateTable[targetID][buffID].fromSkillID, this.buffStateTable[targetID][buffID].fromSkillLevel, this.buffStateTable[targetID][buffID].fromSkillAttrChange, this.buffStateTable[targetID][buffID].isCommunicateMix);
                return;
            }
            if (type == BuffType.Theat)
            {
                LocalBattleBuffCalculatorTreatHandler.IntervalBuff(buffDataByID, entityByID2, entityByID, this.buffStateTable[targetID][buffID].fromSkillID, this.buffStateTable[targetID][buffID].fromSkillLevel, this.buffStateTable[targetID][buffID].fromSkillAttrChange, this.buffStateTable[targetID][buffID].isCommunicateMix);
                return;
            }
            if (type != BuffType.Drain)
            {
                return;
            }
            LocalBattleBuffDrainHandler.IntervalBuff(buffDataByID, entityByID2, entityByID, this.buffStateTable[targetID][buffID].fromSkillID, this.buffStateTable[targetID][buffID].fromSkillLevel, this.buffStateTable[targetID][buffID].fromSkillAttrChange, this.buffStateTable[targetID][buffID].isCommunicateMix);
            return;

        case BuffType.Theat2:
            LocalBattleBuffCalculatorTreat2Handler.IntervalBuff(buffDataByID, entityByID2, entityByID, this.buffStateTable[targetID][buffID].fromSkillID, this.buffStateTable[targetID][buffID].fromSkillLevel, this.buffStateTable[targetID][buffID].fromSkillAttrChange, this.buffStateTable[targetID][buffID].isCommunicateMix);
            return;
        }
        goto IL_83;
    }
Esempio n. 7
0
    protected bool CheckBuff(Buff buffData, EntityParent caster, EntityParent target, int fromSkillID, int elementType, bool isCommunicateMix = false)
    {
        if (buffData == null)
        {
            return(false);
        }
        if (caster == null)
        {
            return(false);
        }
        if (target == null)
        {
            return(false);
        }
        if (LocalAgent.GetSpiritIsDead(target, isCommunicateMix))
        {
            return(false);
        }
        if (!target.IsFighting)
        {
            return(false);
        }
        if (!BattleCalculator.CalculateAddBuff(caster.BattleBaseAttrs, target.BattleBaseAttrs, (double)buffData.buffProp, elementType))
        {
            return(false);
        }
        XDict <int, BuffState> buffListByEntityID = this.GetBuffListByEntityID(target.ID);

        if (buffListByEntityID == null)
        {
            return(false);
        }
        for (int i = 0; i < buffListByEntityID.Count; i++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(i)).resist.Contains(buffData.type))
            {
                return(false);
            }
        }
        for (int j = 0; j < buffListByEntityID.Count; j++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(j)).resistId.Contains(buffData.id))
            {
                return(false);
            }
        }
        List <int> list = new List <int>();

        for (int k = 0; k < buffListByEntityID.Count; k++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(k)).cover.Contains(buffData.type))
            {
                list.Add(buffListByEntityID.ElementKeyAt(k));
            }
        }
        for (int l = 0; l < buffListByEntityID.Count; l++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(l)).coverId.Contains(buffData.id))
            {
                list.Add(buffListByEntityID.ElementKeyAt(l));
            }
        }
        for (int m = 0; m < list.get_Count(); m++)
        {
            this.AppRemoveBuff(list.get_Item(m), target.ID);
        }
        list.Clear();
        for (int n = 0; n < buffListByEntityID.Count; n++)
        {
            if (buffData.delete.Contains(LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(n)).type))
            {
                list.Add(buffListByEntityID.ElementKeyAt(n));
            }
        }
        for (int num = 0; num < list.get_Count(); num++)
        {
            this.AppRemoveBuff(list.get_Item(num), target.ID);
        }
        if (LocalAgent.CheckBuffByTargetIDAndBuffID(target.ID, buffData.id))
        {
            int overlayModeId = buffData.overlayModeId;
            if (overlayModeId != 1 && overlayModeId != 2)
            {
                this.AppRemoveBuff(buffData.id, target.ID);
            }
        }
        return(true);
    }