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); }
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); }
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); }
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); }
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); }
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 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; }
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); } } }
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); } } }
/// <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); } } }
/// <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); } } }
public override void InitBuff(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig, double fixTime) { var time = self.GetBuffTime(buffConfig); self.SetBuffTime(buffInfo, time + fixTime); }
public virtual bool IsEnd(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { return(self.GetBuffTime(buffInfo) <= 0); }