public override void InitState(SkillObj self, BuffInfo_New biffInfo, BuffConfig_New buffConfig, double fixTime) { int index = self.GetBuffStateIndex(biffInfo); var time = self.GetBuffStateTime(buffConfig, index) + fixTime; self.SetBuffStateTime(biffInfo, time); self.SetBuffDoubleParam(biffInfo, time, key_ticlLeftTime_BuffInfo); }
public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { int iDamamge = self.GetSkillIntParam(skillConfig, DamegeKey); Damage damage = BattleModule.CreateDamage(iDamamge); BattleModule.DamageTarget(target, self, damage); return true; }
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 InitState(SkillObj self, SkillInfo_New biffInfo, SkillConfig_New skillConfig, double fixTime) { int index = self.GetSkillStateIndex(biffInfo); var time = self.GetSkillStateTime(skillConfig, index) + fixTime; self.SetSkillStateTime(biffInfo, time); self.SetSkillDoubleParam(biffInfo, time, key_ticlLeftTime_SkillInfo); }
public override void OnDie(SkillObj self, SkillObj attacker, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { return; if (self.GetBuffIntParam(buffInfo, Key_Int_Bombed_BuffInfo) != Key_Int_Bombed_Value) { var targetSelectName = self.GetTargetSelect(buffConfig); var targetSelect = BattleModule.GetTargetSelect(targetSelectName); if (targetSelect == null) { self.LogInfo("targetSelect == null buffId:[{0}] targetSelectName:[{1}]".F(self.GetBuffID(buffInfo), targetSelectName)); return; } var targetTypeName = self.GetTargetType(buffConfig); var targetType = BattleModule.GetTargetType(targetTypeName); if (targetType == null) { self.LogInfo("targetSelect == null buffId:[{0}] targetType:[{1}]".F(self.GetBuffID(buffInfo), targetTypeName)); return; } var targets = BattleModule.GetTargets(self, targetSelect, targetType, buffInfo, buffConfig); foreach (var tar in targets.Where(t => !t.IsDead())) { OnEffect(self, tar, buffInfo, buffConfig); } } }
public override void InitState(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig, double fixTime) { int index = self.GetSkillStateIndex(skillInfo); var time = self.GetSkillStateTime(skillConfig, index); self.SetSkillStateTime(skillInfo, time + fixTime); self.LogInfo("State [{0}] NowTime bEGIN:[{1}]".F(self.GetSkillLogicStateName(skillInfo), self.GetNowTime())); }
public virtual BuffSuperpositionRet OnBuffSuperposition(SkillObj tarObj, SkillObj srcObj, BattleReason reason, BuffConfig_New buffConfig) { BuffSuperpositionRet ret; ret.bType = BuffSuperpositionType.None; ret.buff = new BuffInfo_New(); return ret; }
public override LogicStateTickRet Tick(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { LogicStateTickRet ret = base.Tick(self, buffInfo, buffConfig); if (ret == LogicStateTickRet.TimeFinish) { return ret; } double effectTickTime = self.GetBuffStateDoubleParam(buffConfig, key_EffectTickTime, self.GetBuffStateIndex(buffInfo)); if(effectTickTime < 0) { self.LogInfo("TickBuffState:buffObj[{0}] buff:[{1}] Tick Effect effectTickTime< 0".F(self.GetID(), self.GetBuffID(buffInfo))); return LogicStateTickRet.TimeFinish; } self.SetBuffStateTime(buffInfo, self.GetBuffStateTime(buffInfo) - self.GetDeltaTime()); var leftTickTime = self.GetBuffDoubleParam(buffInfo, key_ticlLeftTime_BuffInfo); if (leftTickTime - self.GetBuffStateTime(buffInfo) >= effectTickTime) { self.SetBuffDoubleParam(buffInfo, leftTickTime - effectTickTime, key_ticlLeftTime_BuffInfo); self.LogInfo("TickBuffState:buffObj[{0}] buff:[{1}] Tick Effect".F(self.GetID(), self.GetBuffID(buffInfo))); ret = LogicStateTickRet.OnEffect; } else if (self.GetBuffStateTime(buffInfo) <= 0) { ret = LogicStateTickRet.NextState; self.LogInfo("TickBuffState:buffObj[{0}] buff:[{1}] Tick Finish".F(self.GetID(), self.GetBuffID(buffInfo))); } else { ret = LogicStateTickRet.None; } return ret; }
public override LogicStateTickRet Tick(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { LogicStateTickRet ret = base.Tick(self, buffInfo, buffConfig); if (ret == LogicStateTickRet.TimeFinish) { return ret; } self.SetBuffStateTime(buffInfo, self.GetBuffStateTime(buffInfo) - self.GetDeltaTime()); //help harm 判断是否停留 int harmHelpType = self.GetBuffStateIntParam(buffConfig, Key_Int__BuffConfig, self.GetBuffStateIndex(buffInfo)); bool needNextState = false; switch(harmHelpType) { case 1: //这个是友好,没错 needNextState = self.GetCamp() != self.GetSrcCamp(buffInfo); break; case 2: //这个是友好,没错敌对 needNextState = self.GetCamp() == self.GetSrcCamp(buffInfo); break; } if (self.GetBuffStateTime(buffInfo) <= 0 || needNextState) { ret = LogicStateTickRet.NextState; self.LogInfo("ChargeState:buffObj[{0}] buff:[{1}] ShowEffectState Finish".F(self.GetID(), self.GetBuffID(buffInfo))); } return ret; }
public override void OnDamageTarget(SkillObj self, SkillObj target, Damage damage, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { var buffIds = self.GetBuffIntParams(buffConfig).Skip(Key_Int_SummonObjBuffId_BuffConfig+1); foreach (var buffId in buffIds.Where(b=>b>0)) { BattleModule.AddBuff(target, self, buffId, BattleReason.Buff); } return ; }
// private const int key_BuffId1_SkillConfig = 0; // private const int key_BuffId2_SkillConfig = 1; // private const int key_BuffId3_SkillConfig = 2; public override void OnEffect(SkillObj self, SkillObj tarObj, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { var buffIds = self.GetBuffIntParams(buffConfig); foreach(var buffId in buffIds) { BattleModule.AddBuff(tarObj, self, buffId, BattleReason.Skill); } return ; }
// private const int key_BuffId1_SkillConfig = 0; // private const int key_BuffId2_SkillConfig = 1; // private const int key_BuffId3_SkillConfig = 2; public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { var buffIds = self.GetSkillIntParams(skillConfig); foreach(var buffId in buffIds) { BattleModule.AddBuff(target, self, buffId, BattleReason.Skill); } return true; }
public override void OnEffect(SkillObj self, SkillObj tarObj, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { int healValue = self.GetBuffIntParam(buffConfig, HealValueKey); if (healValue > 0) { Damage heal = BattleModule.CreateDamage(-healValue); BattleModule.DamageTarget(tarObj, self, heal); } }
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 bool InitBuffInfo(SkillObj self, SkillObj srcObj, BattleReason reason, BuffInfo_New buffInfo, BuffConfig_New buffConfig, bool RefreshGUID = true) { base.InitBuffInfo(self, srcObj, reason, buffInfo, buffConfig, RefreshGUID); int absorbDamage = self.GetBuffIntParam(buffConfig, AbsorbDamageKey); if(absorbDamage > 0) { self.SetBuffIntParam(buffInfo, AbsorbDamageKey, absorbDamage); } return true; }
public override bool IsTarget(SkillObj srcObj, SkillObj tarObj) { var srcCamp = srcObj.GetCamp(); var tarCamp = tarObj.GetCamp(); if (IsEnemy(srcCamp, tarCamp) || srcObj == tarObj) { return true; } return false; }
public virtual bool CommonCheck(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { if (!self.CommonCheck() || self.IsDead()) { return false; } if (skillInfo != null && IsEnd(self, skillInfo, skillConfig)) { return false; } return true; }
public override void OnSummon(int id, SkillObj self, SkillObj summonObj, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { if(summonObj != null) { var summonId = self.GetBuffIntParam(buffConfig, Key_Int_AddBuffSummonObjId_BuffConfig); var buffId = self.GetBuffIntParam(buffConfig, Key_Int_SummonObjBuffId_BuffConfig); if(summonId == id) { BattleModule.AddBuff(summonObj, self, buffId, BattleReason.Buff); } } }
public override bool InitSkillInfo(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { bool ret = base.InitSkillInfo(self, skillInfo, skillConfig); var targetSelectName = "Range"; var targetSelect = BattleModule.GetTargetSelect(targetSelectName); if (targetSelect == null) { self.LogInfo("targetSelect == null skillId:[{0}] targetSelectName:[{1}]".F(self.GetSkillID(skillInfo), targetSelectName)); Debug.Assert(false, "targetSelect == null skillId:[{0}] targetSelectName:[{1}]".F(self.GetSkillID(skillInfo), targetSelectName)); return false; } var targetTypeName = "Harm"; var targetType = BattleModule.GetTargetType(targetTypeName); if (targetType == null) { self.LogInfo("targetSelect == null skillId:[{0}] targetType:[{1}]".F(self.GetSkillID(skillInfo), targetTypeName)); Debug.Assert(false, "targetSelect == null skillId:[{0}] targetType:[{1}]".F(self.GetSkillID(skillInfo), targetTypeName)); return false; } var targets = BattleModule.GetTargets(self, targetSelect, targetType, skillInfo, skillConfig).ToList(); if(targets == null || targets.Count <= 0) { return true; } int count = self.GetSkillIntParam(skillConfig, key_SummonCount_SkillConfig); int realCount = 0; int index = 0; foreach (var tar in targets) { if(index < count) { self.SetSkillIntParam(skillInfo, key_SummonTraceTarget_SkillInfo + index++, tar.GetID()); realCount++; } else { break; } } if(index < count) { var tank = targets.OrderBy(t => t.GetHP()).FirstOrDefault(); for (int i = index; i < count; i++) { self.SetSkillIntParam(skillInfo, key_SummonTraceTarget_SkillInfo + i, tank.GetID()); realCount++; } } self.SetSkillIntParam(skillInfo, key_SummonIdx_SkillInfo, 0); ret = true; return ret; }
public virtual bool CheckCD(SkillObj self, SkillConfig_New skillConfig) { string key = self.GetSkillCDKey(skillConfig); if(key == null || key.Equals("")) { return true; } double time = self.GetCD(key); if(time <= 0) { return true; } return false; }
public override LogicStateTickRet Tick(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { LogicStateTickRet ret = base.Tick(self, skillInfo, skillConfig); if (ret == LogicStateTickRet.TimeFinish) { return ret; } self.SetSkillStateTime(skillInfo, self.GetSkillStateTime(skillInfo) - self.GetDeltaTime()); if (self.GetSkillStateTime(skillInfo) <= 0) { ret = LogicStateTickRet.NextState; self.LogInfo("ShowEffectSkillState:skillObj[{0}] skill:[{1}] ShowEffectState Finish".F(self.GetID(), self.GetSkillID(skillInfo))); } return ret; }
public SkillInfo_New Begin(SkillObj self, SkillConfig_New skillConfig) { if (!CommonCheck(self, null, skillConfig)) { return null; } SkillInfo_New skillInfo = new SkillInfo_New() { }; bool ret = InitSkillInfo(self, skillInfo, skillConfig); if (ret) { self.NotifySkillInfo(skillInfo, BattleInfoNotifyType.All_Skill, BattleNotifyTime.TickEnd); return skillInfo; } return null; }
public override LogicStateTickRet Tick(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { LogicStateTickRet ret = base.Tick(self, buffInfo, buffConfig); if (ret == LogicStateTickRet.TimeFinish) { return ret; } self.SetBuffStateTime(buffInfo, self.GetBuffStateTime(buffInfo) - self.GetDeltaTime()); if (self.GetBuffStateTime(buffInfo) <= 0) { ret = LogicStateTickRet.NextState; self.LogInfo("ChargeState:buffObj[{0}] buff:[{1}] ShowEffectState Finish".F(self.GetID(), self.GetBuffID(buffInfo))); } return ret; }
public override Damage BeHurtDamageFix(SkillObj self, SkillObj source, Damage damage, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { int shield = self.GetBuffIntParam(buffInfo, AbsorbDamageKey); if(shield > damage.value) { shield -= damage.value; damage.value = 0; } else { damage.value -= shield; shield = 0; BuffOnEnd(self, buffInfo, buffConfig); } return damage; }
private IEnumerable<SkillObj> GetTargets(SkillObj skillObj, double width, double height) { Vector3_Hzy tarVec; Vector3_Hzy srcVec = skillObj.GetPos(); var tList = skillObj.GetTarListnearby().Where(t => !t.IsDead()); List<SkillObj> tarList = new List<SkillObj>(); double srcDirRadian = skillObj.GetDirRadian(); foreach (var tar in tList) { tarVec = tar.GetPos(); if (BattleHelper.IsInRect_2D(srcVec, srcDirRadian, tarVec, width, height, skillObj)) { tarList.Add(tar); } } return tarList; }
public override LogicStateTickRet Tick(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { LogicStateTickRet ret = base.Tick(self, skillInfo, skillConfig); if(ret == LogicStateTickRet.TimeFinish) { return ret; } self.SetSkillStateTime(skillInfo, self.GetSkillStateTime(skillInfo) - self.GetDeltaTime()); //self.LogInfo("State [{0}] Time:[{1}]".F(self.GetSkillLogicStateName(skillInfo), self.GetSkillStateTime(skillInfo))); if (self.GetSkillStateTime(skillInfo) <= 0) { self.LogInfo("State [{0}] NowTime fINISH:[{1}]".F(self.GetSkillLogicStateName(skillInfo), self.GetNowTime())); ret = LogicStateTickRet.NextState; self.LogInfo("ChargeState:skillObj[{0}] skill:[{1}] Charge Finish".F(self.GetID(), self.GetSkillID(skillInfo))); } return ret; }
public virtual void BeginCD(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { string key = self.GetSkillCDKey(skillConfig); if (key == null || key.Equals("")) { return ; } double time = self.GetSkillCD(skillConfig); if (time <= 0) { return ; } self.SetCD(key, time); self.NotifySkillInfo(skillInfo, BattleInfoNotifyType.CD_Skill, BattleNotifyTime.TickEnd); self.LogInfo("skill:[{0}] CD Begin [{1}]".F(self.GetSkillID(skillInfo), self.GetCD(key))); return ; }
private IEnumerable<SkillObj> GetTargets(SkillObj skillObj, double range) { Vector3_Hzy tarVec; Vector3_Hzy srcVec = skillObj.GetPos(); var tList = skillObj.GetTarListnearby().Where(t => !t.IsDead()); List<SkillObj> tarList = new List<SkillObj>(); double srcDirRadian = skillObj.GetDirRadian(); foreach (var tar in tList) { tarVec = tar.GetPos(); double distance = BattleHelper.Distance_2D(tarVec, srcVec); if(distance <= range) { tarList.Add(tar); } } return tarList; }
// private const int key_BuffId3_SkillConfig = 2; public override bool OnEffect(SkillObj self, SkillObj target, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { var buffId1 = self.GetSkillIntParam(skillConfig, key_BuffId1_SkillConfig); var buffId2 = self.GetSkillIntParam(skillConfig, key_BuffId2_SkillConfig); var tarBuff = target.GetBuffList().Where(b => target.GetBuffID(b) == buffId1); if (tarBuff != null && tarBuff.FirstOrDefault() != null) { BattleModule.AddBuff(target, self, buffId2, BattleReason.Skill); BattleModule.RemoveBuff(target, self, buffId1, BattleReason.Skill); } else { BattleModule.AddBuff(target, self, buffId1, BattleReason.Skill); BattleModule.RemoveBuff(target, self, buffId2, BattleReason.Skill); } return true; }
public override LogicStateTickRet Tick(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { LogicStateTickRet ret = base.Tick(self, buffInfo, buffConfig); if (ret == LogicStateTickRet.TimeFinish) { return ret; } if (self.GetBuffStateIntParam(buffInfo, key) == NotEffect) { self.SetBuffStateIntParam(buffInfo, key, Effected); return LogicStateTickRet.OnEffect; } else { return LogicStateTickRet.NextState; } return ret; }
public virtual Damage BeHurtDamageFix(SkillObj self, SkillObj source, Damage damage, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { return(damage); }
public virtual IEnumerable <SkillObj> GetTargets(SkillObj skillObj, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { return(null); }
/// <summary> /// 造成伤害或治疗 /// </summary> /// <param name="tarObj"></param> /// <param name="srcObj"></param> /// <param name="damage">大于0是伤害,小于0是治疗</param> public static void DamageTarget(SkillObj tarObj, SkillObj srcObj, Damage damage) { SkillObj realSrcObj = srcObj; if (tarObj == null || tarObj.IsDead()) { return; } if (realSrcObj != null && damage.srcId > 0 && realSrcObj.GetID() != damage.srcId) { realSrcObj = tarObj.GetSkillObj(damage.srcId); } BattleModule.CalcDamage(tarObj, realSrcObj, damage); //先修正伤害 BattleModule.DamageFix(tarObj, realSrcObj, damage); //质量和造成伤害都是这个 //造成伤害 if (damage.value >= 0) { tarObj.OnDamage(damage, realSrcObj); } else { tarObj.OnDamage(damage, realSrcObj); } //检查技能与BUFF的相应触发 if (realSrcObj != null && !realSrcObj.IsDead()) { var srcSkillList = realSrcObj.GetSkillList(); var srcBuffList = realSrcObj.GetBuffList(); //Source skill fix if (srcSkillList != null) { foreach (var skillInfo in srcSkillList) { SkillLogic skillLogic = GetSkillLogic(skillInfo, realSrcObj); int skillId = realSrcObj.GetSkillID(skillInfo); if (skillLogic != null) { SkillConfig_New skillConfig = realSrcObj.GetSkillConfig(skillId); if (damage.value >= 0) { skillLogic.OnDamageTarget(realSrcObj, tarObj, damage, skillInfo, skillConfig); } else { skillLogic.OnHealTarget(realSrcObj, tarObj, damage, skillInfo, skillConfig); } } else { realSrcObj.LogInfo("something error in BattleModule.DamageTarget src skill:[{0}]".F(skillId)); } } } //Source buff fix if (srcBuffList != null) { foreach (var buffInfo in srcBuffList) { BuffLogic buffLogic = GetBuffLogic(buffInfo, realSrcObj); int buffId = realSrcObj.GetBuffID(buffInfo); if (buffLogic != null) { BuffConfig_New buffConfig = realSrcObj.GetBuffConfig(buffId); if (damage.value >= 0) { buffLogic.OnDamageTarget(realSrcObj, tarObj, damage, buffInfo, buffConfig); } else { buffLogic.OnHealTarget(realSrcObj, tarObj, damage, buffInfo, buffConfig); } } else { realSrcObj.LogInfo("something error in BattleModule.DamageTarget src buff:[{0}]".F(buffId)); } } } } var tarSkillList = tarObj.GetSkillList(); var tarBuffList = tarObj.GetBuffList(); //Target skill fix if (!tarObj.IsDead()) { if (tarSkillList != null) { foreach (var skillInfo in tarSkillList) { SkillLogic skillLogic = GetSkillLogic(skillInfo, tarObj); int skillId = tarObj.GetSkillID(skillInfo); if (skillLogic != null) { SkillConfig_New skillConfig = tarObj.GetSkillConfig(skillId); if (damage.value >= 0) { skillLogic.OnBeHurt(tarObj, realSrcObj, damage, skillInfo, skillConfig); } else { skillLogic.OnBeHeal(tarObj, realSrcObj, damage, skillInfo, skillConfig); } } else { tarObj.LogInfo("something error in BattleModule.DamageTarget tar skill:[{0}]".F(skillId)); } } } //Target buff fix if (tarBuffList != null) { foreach (var buffInfo in tarBuffList) { BuffLogic buffLogic = GetBuffLogic(buffInfo, tarObj); int buffId = tarObj.GetBuffID(buffInfo); if (buffLogic != null) { BuffConfig_New buffConfig = tarObj.GetBuffConfig(buffId); if (damage.value >= 0) { buffLogic.OnBeHurt(tarObj, realSrcObj, damage, buffInfo, buffConfig); } else { buffLogic.OnBeHeal(tarObj, realSrcObj, damage, buffInfo, buffConfig); } } else { tarObj.LogInfo("something error in BattleModule.DamageTarget tar buff:[{0}]".F(buffId)); } } } } if (tarObj.IsDead()) { if (tarSkillList != null) { foreach (var skillInfo in tarSkillList) { SkillLogic skillLogic = GetSkillLogic(skillInfo, tarObj); int skillId = tarObj.GetSkillID(skillInfo); if (skillLogic != null) { SkillConfig_New skillConfig = tarObj.GetSkillConfig(skillId); skillLogic.OnDie(tarObj, realSrcObj, skillInfo, skillConfig); } else { tarObj.LogInfo("something error in BattleModule.DamageTarget tar skill:[{0}]".F(skillId)); } } } //Target buff fix if (tarBuffList != null) { foreach (var buffInfo in tarBuffList) { BuffLogic buffLogic = GetBuffLogic(buffInfo, tarObj); int buffId = tarObj.GetBuffID(buffInfo); if (buffLogic != null) { BuffConfig_New buffConfig = tarObj.GetBuffConfig(buffId); buffLogic.OnDie(tarObj, realSrcObj, buffInfo, buffConfig); } else { tarObj.LogInfo("something error in BattleModule.DamageTarget tar buff:[{0}]".F(buffId)); } } } bool ret = tarObj.OnDie(realSrcObj); } }
public virtual void OnDie(SkillObj self, SkillObj attacker, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { }
public override double OnStateChanged(string tarState, SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { return(self.GetSkillStateTime(skillInfo)); }
public virtual bool IsTarget(SkillObj srcObj, SkillObj tarObj) { return(false); }
public static void NotifyTimeOnEnter(SkillObj player) { player.NotifyBattleTime(battleBeginTime.Ticks / (10000f)); }
public override void InitState(SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig, double fixTime) { self.SetBuffStateIntParam(buffInfo, key, NotEffect); }
public virtual IEnumerable <SkillObj> GetTargets(SkillObj skillObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { return(null); }
public override double OnStateChanged(string tarState, SkillObj self, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { return(self.GetBuffStateTime(buffInfo)); }
public override double OnStateChanged(string tarState, SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { self.LogInfo("State [{0}] finish".F(self.GetSkillLogicStateName(skillInfo))); return(self.GetSkillStateTime(skillInfo)); }
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 void Init(SkillObj skillObj, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { return; }
/// <summary> /// 消耗检查 /// </summary> /// <param name="self"></param> /// <param name="skillConfig"></param> /// <returns></returns> private static bool UseSkillCheckDeplete(SkillObj self, SkillConfig_New skillConfig) { return(true); }
//public virtual double HitRateRefix(SkillObj self, int skillId, double rate, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { return rate; } //public virtual double CriticalRateRefix(SkillObj self, int skillId, double rate, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { return rate; } public virtual Damage DamageTargetFix(SkillObj self, SkillObj target, Damage damage, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { return(damage); }
public virtual void Init(SkillObj skillObj, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { return; }
public override void InitState(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig, double fixTime) { self.SetSkillStateIntParam(skillInfo, key, NotEffect); }
public static void DetachBuff(SkillObj tarObj, SkillObj srcObj, BuffInfo_New buff, BuffConfig_New buffConfig) { var buffLogicId = tarObj.GetBuffLogicId(buffConfig); if (!BuffLogics.ContainsKey(buffLogicId)) { return; } BuffLogic buffLogic = BuffLogics[buffLogicId]; //先从src方进行修正 if (srcObj != null) { var srcSkillList = srcObj.GetSkillList(); var srcBuffList = srcObj.GetBuffList(); if (srcSkillList != null) { foreach (var skillInfo in srcSkillList) { int skillId = srcObj.GetSkillID(skillInfo); SkillConfig_New skillConfig = srcObj.GetSkillConfig(skillId); var logic = GetSkillLogic(skillInfo, srcObj); logic.OnClearBuff(tarObj, srcObj, buff, skillInfo, skillConfig); } } if (srcBuffList != null) { foreach (var buffInfo in srcBuffList) { int buffId = srcObj.GetBuffID(buffInfo); BuffConfig_New srcBuffConfig = srcObj.GetBuffConfig(buffId); var logic = GetBuffLogic(buffInfo, srcObj); logic.OnClearBuff(tarObj, srcObj, buff, buffInfo, srcBuffConfig); } } } { var tarSkillList = tarObj.GetSkillList(); var tarBuffList = tarObj.GetBuffList(); if (tarSkillList != null) { foreach (var skillInfo in tarSkillList) { int skillId = tarObj.GetSkillID(skillInfo); SkillConfig_New skillConfig = tarObj.GetSkillConfig(skillId); var logic = GetSkillLogic(skillInfo, tarObj); logic.OnDetachBuff(tarObj, srcObj, buff, skillInfo, skillConfig); } } if (tarBuffList != null) { foreach (var buffInfo in tarBuffList.Where(b => b.buff != buff.buff)) { int buffId = tarObj.GetBuffID(buffInfo); BuffConfig_New tarBuffConfig = tarObj.GetBuffConfig(buffId); var logic = GetBuffLogic(buffInfo, tarObj); logic.OnDetachBuff(tarObj, srcObj, buff, buffInfo, tarBuffConfig); } } } buffLogic.BuffOnEnd(tarObj, buff, buffConfig); buffLogic.OnDetach(tarObj, srcObj, buff, buffConfig); }
public static bool RemoveBuff(SkillObj tarObj, SkillObj srcObj, int deleteBuffId, BattleReason reason) { if (tarObj == null) { return(false); } var buffConfig = tarObj.GetBuffConfig(deleteBuffId); if (buffConfig == null) { return(false); } var tarBuffList = tarObj.GetBuffList(); BuffInfo_New buff = null; foreach (var b in tarBuffList) { if (tarObj.GetBuffID(b) == deleteBuffId) { buff = b; break; } } if (buff == null) { return(false); } //DetachBuff(tarObj, srcObj, buff, buffConfig); var buffLogicId = tarObj.GetBuffLogicId(buffConfig); if (!BuffLogics.ContainsKey(buffLogicId)) { return(false); } BuffLogic buffLogic = BuffLogics[buffLogicId]; buffLogic.BuffOnEnd(tarObj, buff, buffConfig); ////先从src方进行修正 //if (srcObj != null) //{ // var srcSkillList = srcObj.GetSkillList(); // var srcBuffList = srcObj.GetBuffList(); // if (srcSkillList != null) // { // foreach (var skillInfo in srcSkillList) // { // int skillId = srcObj.GetSkillID(skillInfo); // SkillConfig_New skillConfig = srcObj.GetSkillConfig(skillId); // var logic = GetSkillLogic(skillInfo, srcObj); // logic.OnClearBuff(tarObj, srcObj, buff, skillInfo, skillConfig); // } // } // if (srcBuffList != null) // { // foreach (var buffInfo in srcBuffList) // { // int buffId = srcObj.GetBuffID(buffInfo); // BuffConfig_New srcBuffConfig = srcObj.GetBuffConfig(buffId); // var logic = GetBuffLogic(buffInfo, srcObj); // logic.OnClearBuff(tarObj, srcObj, buff, buffInfo, srcBuffConfig); // } // } //} //{ // var tarSkillList = tarObj.GetSkillList(); // if (tarSkillList != null) // { // foreach (var skillInfo in tarSkillList) // { // int skillId = tarObj.GetSkillID(skillInfo); // SkillConfig_New skillConfig = tarObj.GetSkillConfig(skillId); // var logic = GetSkillLogic(skillInfo, tarObj); // logic.OnDetachBuff(tarObj, srcObj, buff, skillInfo, skillConfig); // } // } // if (tarBuffList != null) // { // foreach (var buffInfo in tarBuffList) // { // int buffId = tarObj.GetBuffID(buffInfo); // BuffConfig_New tarBuffConfig = tarObj.GetBuffConfig(buffId); // var logic = GetBuffLogic(buffInfo, tarObj); // logic.OnDetachBuff(tarObj, srcObj, buff, buffInfo, tarBuffConfig); // } // } //} //buffLogic.BuffOnEnd(tarObj, buff, buffConfig); return(true); }
public override IEnumerable <SkillObj> GetTargets(SkillObj skillObj, BuffInfo_New buffInfo, BuffConfig_New buffConfig) { double range = skillObj.GetTargetSelectDoubleParam(buffConfig, key_Range); return(GetTargets(skillObj, range)); }
public virtual void OnUseSkill(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { }
public virtual void OnHealTarget(SkillObj self, SkillObj target, Damage heal, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { //OnDamageTarget(self, target, -heal, skillInfo, skillConfig); }
public override void InitSkill(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig, double fixTime) { var time = self.GetSkillTime(skillConfig); self.SetSkillTime(skillInfo, time + fixTime); }
public virtual void OnBeHeal(SkillObj self, SkillObj attacker, Damage heal, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { //OnBeHurt(self, attacker, -heal, skillInfo, skillConfig); }
public static bool AddBuff(SkillObj tarObj, SkillObj srcObj, int newBuffId, BattleReason reason) { if (tarObj == null) { return(false); } var buffConfig = tarObj.GetBuffConfig(newBuffId); if (buffConfig == null) { return(false); } var buffSuperpositionLogicId = tarObj.GetBuffSuperpositionLogicId(buffConfig); if (!BuffSuperpositionLogics.ContainsKey(buffSuperpositionLogicId)) { return(false); } BuffSuperpositionLogic buffSuperpositionLogic = BuffSuperpositionLogics[buffSuperpositionLogicId]; var buffRet = buffSuperpositionLogic.OnBuffSuperposition(tarObj, srcObj, reason, buffConfig); BuffInfo_New buff = buffRet.buff; if (buffRet.bType == BuffSuperpositionType.Refresh) { var buffLogicId = tarObj.GetBuffLogicId(buffConfig); if (!BuffLogics.ContainsKey(buffLogicId)) { return(false); } BuffLogic buffLogic = BuffLogics[buffLogicId]; buffLogic.InitBuffInfo(tarObj, srcObj, reason, buff, buffConfig, false); } else if (buffRet.bType == BuffSuperpositionType.Add) { var buffLogicId = tarObj.GetBuffLogicId(buffConfig); if (!BuffLogics.ContainsKey(buffLogicId)) { return(false); } BuffLogic buffLogic = BuffLogics[buffLogicId]; buffLogic.InitBuffInfo(tarObj, srcObj, reason, buff, buffConfig); //先从src方进行修正 if (srcObj != null) { var srcSkillList = srcObj.GetSkillList(); var srcBuffList = srcObj.GetBuffList(); if (srcSkillList != null) { foreach (var skillInfo in srcSkillList) { int skillId = srcObj.GetSkillID(skillInfo); SkillConfig_New skillConfig = srcObj.GetSkillConfig(skillId); var logic = GetSkillLogic(skillInfo, srcObj); logic.OnSendBuff(tarObj, srcObj, buff, skillInfo, skillConfig); } } if (srcBuffList != null) { foreach (var buffInfo in srcBuffList) { int buffId = srcObj.GetBuffID(buffInfo); BuffConfig_New srcBuffConfig = srcObj.GetBuffConfig(buffId); var logic = GetBuffLogic(buffInfo, srcObj); logic.OnSendBuff(tarObj, srcObj, buff, buffInfo, srcBuffConfig); } } } { var tarSkillList = tarObj.GetSkillList(); var tarBuffList = tarObj.GetBuffList(); if (tarSkillList != null) { foreach (var skillInfo in tarSkillList) { int skillId = tarObj.GetSkillID(skillInfo); SkillConfig_New skillConfig = tarObj.GetSkillConfig(skillId); var logic = GetSkillLogic(skillInfo, tarObj); logic.OnAttachBuff(tarObj, srcObj, buff, skillInfo, skillConfig); } } if (tarBuffList != null) { foreach (var buffInfo in tarBuffList) { int buffId = tarObj.GetBuffID(buffInfo); BuffConfig_New tarBuffConfig = tarObj.GetBuffConfig(buffId); var logic = GetBuffLogic(buffInfo, tarObj); logic.OnAttachBuff(tarObj, srcObj, buff, buffInfo, tarBuffConfig); } } } buffLogic.OnAttach(tarObj, srcObj, buff, buffConfig); tarObj.AddTempBuffList(buff); } tarObj.NotifyBuffInfo(buff, BattleInfoNotifyType.All_Buff, BattleNotifyTime.TickEnd); return(true); }
public virtual void OnBeHurt(SkillObj self, SkillObj attacker, Damage damage, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { }
public virtual void OnDamageTarget(SkillObj self, SkillObj target, Damage damage, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { }
public virtual bool CanUse(SkillObj self, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { return(false); }
public virtual Damage BeHealFix(SkillObj self, SkillObj source, Damage heal, SkillInfo_New skillInfo, SkillConfig_New skillConfig) { return(heal); }
private static void DamageFix(SkillObj tarObj, SkillObj srcObj, Damage damage) { if (tarObj == null) { return; } if (srcObj != null) { var srcSkillList = srcObj.GetSkillList(); var srcBuffList = srcObj.GetBuffList(); //Source skill fix if (srcSkillList != null) { foreach (var skillInfo in srcSkillList) { SkillLogic skillLogic = GetSkillLogic(skillInfo, srcObj); int skillId = srcObj.GetSkillID(skillInfo); if (skillLogic != null) { SkillConfig_New skillConfig = srcObj.GetSkillConfig(skillId); skillLogic.DamageTargetFix(srcObj, tarObj, damage, skillInfo, skillConfig); } else { srcObj.LogInfo("something error in BattleModule.DamageFix src skill:[{0}]".F(skillId)); } } } //Source buff fix if (srcBuffList != null) { foreach (var buffInfo in srcBuffList) { BuffLogic buffLogic = GetBuffLogic(buffInfo, srcObj); int buffId = srcObj.GetBuffID(buffInfo); if (buffLogic != null) { BuffConfig_New skillConfig = srcObj.GetBuffConfig(buffId); buffLogic.DamageTargetFix(srcObj, tarObj, damage, buffInfo, skillConfig); } else { srcObj.LogInfo("something error in BattleModule.DamageFix src buff:[{0}]".F(buffId)); } } } } { var tarBuffList = tarObj.GetBuffList(); var tarSkillList = tarObj.GetSkillList(); //Target skill fix if (tarSkillList != null) { foreach (var skillInfo in tarSkillList) { SkillLogic skillLogic = GetSkillLogic(skillInfo, tarObj); int skillId = tarObj.GetSkillID(skillInfo); if (skillLogic != null) { SkillConfig_New skillConfig = tarObj.GetSkillConfig(skillId); skillLogic.BeHurtDamageFix(tarObj, srcObj, damage, skillInfo, skillConfig); } else { tarObj.LogInfo("something error in BattleModule.DamageFix tar skill:[{0}]".F(skillId)); } } } //Target buff fix if (tarBuffList != null) { foreach (var buffInfo in tarBuffList) { BuffLogic buffLogic = GetBuffLogic(buffInfo, tarObj); int buffId = tarObj.GetBuffID(buffInfo); if (buffLogic != null) { BuffConfig_New skillConfig = tarObj.GetBuffConfig(buffId); buffLogic.BeHurtDamageFix(tarObj, srcObj, damage, buffInfo, skillConfig); } else { tarObj.LogInfo("something error in BattleModule.DamageFix tar buff:[{0}]".F(buffId)); } } } } }