/// <summary> /// 攻击 CD 计时 /// </summary> /// <param name="self"></param> public static void AttackTarget(this AttackComponent self) { if (self.delTime == 0) { //普通攻击,相当于施放技能41101,技能等级为0 SkillItem skillItem = ComponentFactory.CreateWithId <SkillItem>(41101); skillItem.UpdateLevel(0); skillItem.GetComponent <ChangeType>().CastId = self.GetParent <Unit>().Id; skillItem.GetComponent <NumericComponent>().Set(NumericType.CaseBase, 14); self.target.GetComponent <AttackComponent>().TakeDamage(skillItem); self.startTime = TimeHelper.ClientNowSeconds(); } long timeNow = TimeHelper.ClientNowSeconds(); self.delTime = timeNow - self.startTime + 1; if (self.delTime > (self.attcdTime + 1)) { self.delTime = 0; } }
/// <summary> /// 单目标 减伤列队 取出 循环执行 /// </summary> /// <param name="self"></param> public static void WhileTakeDamage(this AttackComponent self) { while (self.TakeDamages.Count > 0) { SkillItem skillItem = self.TakeDamages.Dequeue(); Unit myself = self.GetParent <Unit>(); if (!self.attackers.Contains(skillItem.GetComponent <ChangeType>().CastId)) { self.attackers.Add(skillItem.GetComponent <ChangeType>().CastId); } NumericComponent numSk = skillItem.GetComponent <NumericComponent>(); skillItem.Dispose(); NumericComponent numSelf = myself.GetComponent <NumericComponent>(); Random random = new Random(); int dom = random.Next(0, 99); int domhp = numSk[NumericType.Case]; if (dom < 26) { numSelf[NumericType.ValuationAdd] -= (domhp * 2); } else { numSelf[NumericType.ValuationAdd] -= domhp; } Console.WriteLine(" TakeDamage-143-Myself(" + myself.UnitType + ") : " + "-" + domhp + " / " + numSelf[NumericType.Valuation] + " /Count: " + self.TakeDamages.Count); } }
public static void UpdateLevel(this SkillItem self, int level) { switch (self.GetComponent <Skill>().TribeType) { case TribeType.Valuation: self.GetComponent <NumericComponent>().Set(NumericType.ValuationBase, 12); self.GetComponent <NumericComponent>().Set(NumericType.ValuationAdd, level * 4); break; case TribeType.Case: self.GetComponent <NumericComponent>().Set(NumericType.CaseBase, 14); self.GetComponent <NumericComponent>().Set(NumericType.CaseAdd, level * 4); break; } }