public void SkillParizer(Entity caster, Entity[] targets, ClassSkill skill) { double hp = 200; caster.Heal(hp); DiscordManager.Instance.SendMessage($"{caster.Name} casted {skill.Name} and was healed by {hp} HP (HP: {caster.HP}) "); }
public void CastSkill(long id, Entity caster, Entity[] targets) { ClassSkill skill = GetSkillByID(id); if (skill != null) { MethodInfo method = typeof(Skills).GetMethod(skill.Method); if (method != null) { Tuple <long, Action, double> cast = new Tuple <long, Action, double>(caster.ID, () => { caster.GetSkillByID(id).Expiration = Utils.GetTime(skill.BaseCooldown); method.Invoke(skillsMethds, new object[] { caster, targets, skill }); if (caster is Player) { if (MobManager.Instance.GetCurrentBoss().HP < 0) { MobManager.Instance.LastBossKiller = caster.ID; } } }, DateTime.Now.TimeOfDay.TotalMilliseconds + skill.CastDuration * 1000); casting.Add(cast); } } }
public string CastSkill(string name, Entity[] targets) { string result = ""; ClassSkill skill = SkillManager.Instance.GetSkillByName(name); if (skill == null) return "Skill not found"; else { if (CanCast(skill.ID)) { if (isAlive()) { Skill s = GetSkillByID(skill.ID); if (s.CanBeCasted()) { SkillManager.Instance.CastSkill(s.ID, this, targets); } else { return $"{Name}'s {skill.Name} skill is cooling down: {Utils.FormatSeconds(Utils.GetTimeDifference(s.Expiration) / 1000)}"; } } else { return $"{Name} you are dead. You will be revived in: {Utils.FormatSeconds(Utils.GetTimeDifference(ReviveTime) / 1000)}"; } } else { return $"{Name} you can not cast {skill.Name}"; } } return result; }
public static void InitializeSkills() { if (!File.Exists("skills.json")) { ClassSkill s = new ClassSkill(); SkillManager.Instance.skills.Add(s); SkillManager.Instance.SaveSkills(); } }
public string ShortDisplayString() { ClassSkill s = SkillManager.Instance.GetSkillByID(ID); return($"Name: {s.Name}\nCast duration:{Utils.FormatSeconds(s.CastDuration)}\nCooldown:{Utils.FormatSeconds(s.BaseCooldown)}\nTime until next cast: {Utils.FormatSeconds(Utils.GetTimeDifference(Expiration) / 1000)}\n____________________________"); }