public override BuffSuperpositionRet OnBuffSuperposition(SkillObj tarObj, SkillObj srcObj, BattleReason reason, BuffConfig_New buffConfig)
        {
            BuffSuperpositionRet ret;
            ret.bType = BuffSuperpositionType.None;
            ret.buff = null;
            var buffKey = tarObj.GetBuffKey(buffConfig);
            foreach (var tarBuff in tarObj.GetBuffList())
            {
                var tarBuffConfig = tarObj.GetBuffConfig(tarObj.GetBuffID(tarBuff));
                if(tarBuffConfig != null && tarObj.GetBuffKey(tarBuffConfig).Equals(buffKey))
                {
                    BattleModule.RemoveBuff(tarObj, srcObj, tarObj.GetBuffID(tarBuff), BattleReason.Replace);
                    //BattleModule.DetachBuff(tarObj, srcObj, tarBuff, tarBuffConfig);
                }
            }

            ret.bType = BuffSuperpositionType.Add;
            ret.buff = new BuffInfo_New();
            return ret;
        }
        override public BuffSuperpositionRet OnBuffSuperposition(SkillObj tarObj, SkillObj srcObj, BattleReason reason, BuffConfig_New buffConfig)
        {
            BuffSuperpositionRet ret;

            ret.bType = BuffSuperpositionType.None;
            ret.buff  = null;
            var buffKey = tarObj.GetBuffKey(buffConfig);

            foreach (var tarBuff in tarObj.GetBuffList())
            {
                var tarBuffConfig = tarObj.GetBuffConfig(tarObj.GetBuffID(tarBuff));
                if (tarBuffConfig != null && tarObj.GetBuffKey(tarBuffConfig).Equals(buffKey))
                {
                    BattleModule.RemoveBuff(tarObj, srcObj, tarObj.GetBuffID(tarBuff), BattleReason.Replace);
                    //BattleModule.DetachBuff(tarObj, srcObj, tarBuff, tarBuffConfig);
                }
            }

            ret.bType = BuffSuperpositionType.Add;
            ret.buff  = new BuffInfo_New();
            return(ret);
        }