public bool CheckOverlay(BuffSkill _buffSkill)
        {
            if (_buffSkill.cfgData == null)
            {
                return(false);
            }
            if (!this.CheckTriggerRate(_buffSkill))
            {
                return(false);
            }
            if (!this.CheckMutexCondition(_buffSkill))
            {
                return(false);
            }
            if (!this.CheckDependCondition(_buffSkill))
            {
                return(false);
            }
            if (_buffSkill.cfgData.dwOverlayMax < 1)
            {
                _buffSkill.SetOverlayCount(1);
                return(true);
            }
            BuffSkill skill = this.buffHolder.FindBuff(_buffSkill.SkillID);

            if ((skill != null) && (skill.GetOverlayCount() >= _buffSkill.cfgData.dwOverlayMax))
            {
                if (_buffSkill.cfgData.dwOverlayRule != 1)
                {
                    if (_buffSkill.cfgData.dwOverlayRule == 2)
                    {
                        this.buffHolder.RemoveBuff(_buffSkill.SkillID);
                        return(false);
                    }
                    if (_buffSkill.cfgData.dwOverlayRule == 3)
                    {
                        this.buffHolder.RemoveBuff(_buffSkill.SkillID);
                        _buffSkill.SetOverlayCount(1);
                        return(true);
                    }
                    if (_buffSkill.cfgData.dwOverlayRule == 4)
                    {
                        int overlayCount = skill.GetOverlayCount();
                        this.buffHolder.RemoveBuff(_buffSkill.SkillID);
                        _buffSkill.SetOverlayCount(overlayCount);
                        return(true);
                    }
                }
                return(false);
            }
            int num2 = 0;

            if (skill != null)
            {
                num2 = skill.GetOverlayCount();
                this.buffHolder.RemoveBuff(_buffSkill.SkillID);
            }
            _buffSkill.SetOverlayCount(++num2);
            return(true);
        }
Beispiel #2
0
        public bool CheckOverlay(BuffSkill _buffSkill)
        {
            if (_buffSkill.cfgData == null)
            {
                return(false);
            }
            if (!this.CheckTriggerRate(_buffSkill))
            {
                return(false);
            }
            if (!this.CheckMutexCondition(_buffSkill))
            {
                return(false);
            }
            if (!this.CheckDependCondition(_buffSkill))
            {
                return(false);
            }
            if (_buffSkill.cfgData.bOverlayMax < 1)
            {
                _buffSkill.SetOverlayCount(1);
                if (this.buffHolder.FindBuffCount(_buffSkill.SkillID) == 0)
                {
                    _buffSkill.bFirstEffect = true;
                }
                return(true);
            }
            BuffSkill buffSkill = this.buffHolder.FindBuff(_buffSkill.SkillID);

            if (buffSkill == null || buffSkill.GetOverlayCount() < (int)_buffSkill.cfgData.bOverlayMax)
            {
                int num = 0;
                if (buffSkill != null)
                {
                    num = buffSkill.GetOverlayCount();
                    this.SetOverlayCount(buffSkill.SkillID, num + 1);
                    this.buffHolder.RemoveBuff(_buffSkill.SkillID);
                }
                _buffSkill.SetOverlayCount(num + 1);
                return(true);
            }
            if (_buffSkill.cfgData.bOverlayRule == 1)
            {
                return(false);
            }
            if (_buffSkill.cfgData.bOverlayRule == 2)
            {
                this.buffHolder.RemoveBuff(_buffSkill.SkillID);
                return(false);
            }
            if (_buffSkill.cfgData.bOverlayRule == 3)
            {
                this.buffHolder.RemoveBuff(_buffSkill.SkillID);
                _buffSkill.SetOverlayCount(1);
                return(true);
            }
            if (_buffSkill.cfgData.bOverlayRule == 4)
            {
                int overlayCount = buffSkill.GetOverlayCount();
                this.buffHolder.RemoveBuff(_buffSkill.SkillID);
                _buffSkill.SetOverlayCount(overlayCount);
                return(true);
            }
            return(false);
        }