Exemplo n.º 1
0
        public override LogicStateTickRet Tick(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig)
        {
            LogicStateTickRet ret = base.Tick(self, buffInfo, buffConfig);

            self.SetBuffTime(buffInfo, self.GetBuffTime(buffInfo) - self.GetDeltaTime());
            if (self.GetBuffTime(buffInfo) <= 0)
            {
                ret = LogicStateTickRet.TimeFinish;
                self.LogInfo("BuffLogicState:buffObj[{0}] buff:[{1}] [{2}]".F(self.GetID(), self.GetBuffID(buffInfo), ret.ToString()));
            }
            return(ret);
        }
Exemplo n.º 2
0
        public override void Tick(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig)
        {
            Dictionary <int, int> keyValues = new Dictionary <int, int>();

            foreach (var buff in self.GetBuffIntParams(buffConfig).Skip(Key_Int_SummonId_BuffConfig + 1))
            {
                keyValues.Add(buff, buff);
            }
            bool bAddTime = false;

            foreach (var buff in self.GetBuffList(true))
            {
                int buffId = self.GetBuffID(buff);
                if (keyValues.ContainsKey(buffId))
                {
                    bAddTime = true;
                    break;
                }
            }
            if (bAddTime)
            {
                self.SetBuffTime(buffInfo, self.GetBuffTime(buffInfo) + self.GetDeltaTime());
                self.SetBuffStateTime(buffInfo, self.GetBuffStateTime(buffInfo) + self.GetDeltaTime());
                self.NotifyBuffInfo(buffInfo, BattleInfoNotifyType.Time_Buff, BattleNotifyTime.TickEnd);
            }
            base.Tick(self, buffInfo, buffConfig);
        }
Exemplo n.º 3
0
		public override void Tick(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig)
		{
			Dictionary<int, int> keyValues = new Dictionary<int, int>();
			foreach(var buff in self.GetBuffIntParams(buffConfig).Skip(Key_Int_SummonId_BuffConfig+1))
			{
				keyValues.Add(buff, buff);
			}
			bool bAddTime = false;
			foreach (var buff in self.GetBuffList(true))
			{
				int buffId = self.GetBuffID(buff);
				if(keyValues.ContainsKey(buffId))
				{
					bAddTime = true;
					break;
				}
			}
			if (bAddTime)
			{
				self.SetBuffTime(buffInfo, self.GetBuffTime(buffInfo) + self.GetDeltaTime());
				self.SetBuffStateTime(buffInfo, self.GetBuffStateTime(buffInfo) + self.GetDeltaTime());
				self.NotifyBuffInfo(buffInfo, BattleInfoNotifyType.Time_Buff, BattleNotifyTime.TickEnd);
			}
			base.Tick(self, buffInfo, buffConfig);

		}
Exemplo n.º 4
0
        override public BuffSuperpositionRet OnBuffSuperposition(SkillObj tarObj, SkillObj srcObj, BattleReason reason, BuffConfig_New buffConfig)
        {
            BuffSuperpositionRet ret;

            ret.bType = BuffSuperpositionType.None;
            ret.buff  = null;
            var tarBuff = tarObj.GetBuffList().Where(b => tarObj.GetBuffID(b) == tarObj.GetBuffID(buffConfig));

            if (tarBuff != null && tarBuff.FirstOrDefault() != null)
            {
                ret.bType = BuffSuperpositionType.AddStateTime;
                var buff = tarBuff.First();
                ret.buff = buff;
                double addTime = tarObj.GetBuffSuperpositionDoubleParam(buffConfig, Key_AddTime_SkillConfig);
                tarObj.SetBuffTime(buff, tarObj.GetBuffTime(buff) + addTime);
                tarObj.SetBuffStateTime(buff, tarObj.GetBuffStateTime(buff) + addTime);
                tarObj.NotifyBuffInfo(buff, BattleInfoNotifyType.Time_Buff, BattleNotifyTime.TickEnd);
            }
            else
            {
                ret.bType = BuffSuperpositionType.Add;
                ret.buff  = new BuffInfo_New();
            }
            return(ret);
        }
Exemplo n.º 5
0
 public virtual void BuffOnEnd(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig)
 {
     if (self.GetBuffTime(buffInfo) > 0)
     {
         self.SetBuffTime(buffInfo, 0);
     }
     self.NotifyBuffInfo(buffInfo, BattleInfoNotifyType.Time_Buff, BattleNotifyTime.TickEnd);
 }
Exemplo n.º 6
0
 public override void OnDamageTarget(SkillObj self, SkillObj target, Damage damage, BuffInfo_New buffInfo, BuffConfig_New buffConfig)
 {
     if (damage.value > 0 && self != target)
     {
         double addTime = self.GetBuffDoubleParam(buffConfig, Key_Double_AddTime_BuffConfig);
         self.SetBuffTime(buffInfo, self.GetBuffTime(buffInfo) + addTime);
         self.SetBuffStateTime(buffInfo, self.GetBuffStateTime(buffInfo) + addTime);
         self.NotifyBuffInfo(buffInfo, BattleInfoNotifyType.Time_Buff, BattleNotifyTime.TickEnd);
     }
 }
Exemplo n.º 7
0
		public override void OnDamageTarget(SkillObj self, SkillObj target, Damage damage, BuffInfo_New buffInfo, BuffConfig_New buffConfig)
		{
			if(damage.value > 0 && self != target)
			{
				double addTime = self.GetBuffDoubleParam(buffConfig, Key_Double_AddTime_BuffConfig);
				self.SetBuffTime(buffInfo, self.GetBuffTime(buffInfo) + addTime);
				self.SetBuffStateTime(buffInfo, self.GetBuffStateTime(buffInfo) + addTime);
				self.NotifyBuffInfo(buffInfo, BattleInfoNotifyType.Time_Buff, BattleNotifyTime.TickEnd);
			}
		}
 public override BuffSuperpositionRet OnBuffSuperposition(SkillObj tarObj, SkillObj srcObj, BattleReason reason, BuffConfig_New buffConfig)
 {
     BuffSuperpositionRet ret;
     ret.bType = BuffSuperpositionType.None;
     ret.buff = null;
     var tarBuff = tarObj.GetBuffList().Where(b => tarObj.GetBuffID(b) == tarObj.GetBuffID(buffConfig));
     if (tarBuff != null && tarBuff.FirstOrDefault() != null)
     {
         ret.bType = BuffSuperpositionType.AddStateTime;
         var buff = tarBuff.First();
         double addTime = tarObj.GetBuffSuperpositionDoubleParam(buffConfig, Key_AddTime_SkillConfig);
         tarObj.SetBuffTime(buff, tarObj.GetBuffTime(buff) + addTime);
         tarObj.SetBuffStateTime(buff, tarObj.GetBuffStateTime(buff) + addTime);
         tarObj.NotifyBuffInfo(buff, BattleInfoNotifyType.Time_Buff, BattleNotifyTime.TickEnd);
     }
     else
     {
         ret.bType = BuffSuperpositionType.Add;
         ret.buff = new BuffInfo_New();
     }
     return ret;
 }
Exemplo n.º 9
0
 public override void OnEffect(SkillObj self, SkillObj tarObj, BuffInfo_New buffInfo, BuffConfig_New buffConfig)
 {
     int key = Key_Double_AddTime1_BuffConfig;
     if (self.GetSrcID(buffInfo) == tarObj.GetID() || self.GetSrcParentID(buffInfo) == tarObj.GetID())
     {
         key = Key_Double_AddTime1_BuffConfig;
     }
     else
     {
         key = Key_Double_AddTime2_BuffConfig;
     }
     foreach (var buff in self.GetBuffList(true))
     {
         int buffId = self.GetBuffID(buff);
         if (buffId > 0 && buffId == self.GetBuffIntParam(buffConfig, Key_Int_BuffId_BuffConfig))
         {
             double addTime = self.GetBuffDoubleParam(buffConfig, key);
             self.SetBuffTime(buff, self.GetBuffTime(buff) + addTime);
             self.SetBuffStateTime(buff, self.GetBuffStateTime(buff) + addTime);
             self.NotifyBuffInfo(buff, BattleInfoNotifyType.Time_Buff, BattleNotifyTime.TickEnd);
         }
     }
 }
Exemplo n.º 10
0
        public override void OnEffect(SkillObj self, SkillObj tarObj, BuffInfo_New buffInfo, BuffConfig_New buffConfig)
        {
            int key = Key_Double_AddTime1_BuffConfig;

            if (self.GetSrcID(buffInfo) == tarObj.GetID() || self.GetSrcParentID(buffInfo) == tarObj.GetID())
            {
                key = Key_Double_AddTime1_BuffConfig;
            }
            else
            {
                key = Key_Double_AddTime2_BuffConfig;
            }
            foreach (var buff in self.GetBuffList(true))
            {
                int buffId = self.GetBuffID(buff);
                if (buffId > 0 && buffId == self.GetBuffIntParam(buffConfig, Key_Int_BuffId_BuffConfig))
                {
                    double addTime = self.GetBuffDoubleParam(buffConfig, key);
                    self.SetBuffTime(buff, self.GetBuffTime(buff) + addTime);
                    self.SetBuffStateTime(buff, self.GetBuffStateTime(buff) + addTime);
                    self.NotifyBuffInfo(buff, BattleInfoNotifyType.Time_Buff, BattleNotifyTime.TickEnd);
                }
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// 技能的late tick,这是处理一些技能时间到,buff时间到之后的后续处理,需要手动调用
        /// </summary>
        /// <param name="self"></param>
        public static void Tick_Battle_Late(SkillObj self)
        {
            self.Tick_Battle_Late();
            //这个时候已经不再使用buff的迭代器,可以改变集合了,因为这里边的buff已经认为是被加在角色身上了,所以需要有后续处理得先加进去
            foreach (var b in self.GetTempBuffList())
            {
                self.AddBuffList(b);
            }
            self.ClearTempBuffList();
            IEnumerable <BuffInfo_New> detachBuffs = null;

            if (self.IsDead())
            {
                detachBuffs = self.RemoveAllBuffs((b) => true);
                self.RemoveAllSkills((s) => true);
                self.RemoveAllCDKey((c) => true);
            }
            else
            {
                detachBuffs = self.RemoveAllBuffs(b => self.GetBuffTime(b) <= 0);
                self.RemoveAllSkills(s => self.GetSkillTime(s) <= 0);
                self.RemoveAllCDKey(s => self.GetCD(s) <= 0);
            }
            foreach (var delBuf in detachBuffs)
            {
                var buffConfig = self.GetBuffConfig(self.GetBuffID(delBuf));
                if (buffConfig == null)
                {
                    continue;
                }
                //foreach (var buff in GetTankData().BuffInfos)
                {
                    BattleModule.DetachBuff(self, null, delBuf, buffConfig);
                }
            }
        }
Exemplo n.º 12
0
 /// <summary>
 /// 技能的late tick,这是处理一些技能时间到,buff时间到之后的后续处理,需要手动调用
 /// </summary>
 /// <param name="self"></param>
 public static void Tick_Battle_Late(SkillObj self)
 {
     self.Tick_Battle_Late();
     //这个时候已经不再使用buff的迭代器,可以改变集合了,因为这里边的buff已经认为是被加在角色身上了,所以需要有后续处理得先加进去
     foreach (var b in self.GetTempBuffList())
     {
         self.AddBuffList(b);
     }
     self.ClearTempBuffList();
     IEnumerable<BuffInfo_New> detachBuffs = null;
     if (self.IsDead())
     {
         detachBuffs = self.RemoveAllBuffs((b) => true);
         self.RemoveAllSkills((s) => true);
         self.RemoveAllCDKey((c) => true);
     }else
     {
         detachBuffs = self.RemoveAllBuffs(b => self.GetBuffTime(b) <= 0);
         self.RemoveAllSkills(s => self.GetSkillTime(s) <= 0);
         self.RemoveAllCDKey(s => self.GetCD(s) <= 0);
     }
     foreach (var delBuf in detachBuffs)
     {
         var buffConfig = self.GetBuffConfig(self.GetBuffID(delBuf));
         if (buffConfig == null)
         {
             continue;
         }
         //foreach (var buff in GetTankData().BuffInfos)
         {
             BattleModule.DetachBuff(self, null, delBuf, buffConfig);
         }
     }
 }
Exemplo n.º 13
0
        public override void InitBuff(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig, double fixTime)
        {
            var time = self.GetBuffTime(buffConfig);

            self.SetBuffTime(buffInfo, time + fixTime);
        }
Exemplo n.º 14
0
 public virtual bool IsEnd(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig)
 {
     return(self.GetBuffTime(buffInfo) <= 0);
 }