private static void Remove(GameSession session, SkillCast skillCast, int sourceId) { Task.Run(async() => { // TODO: Get the correct Region Skill Duration when calling chain Skills await Task.Delay(skillCast.DurationTick() + 5000); session.FieldManager.BroadcastPacket(RegionSkillPacket.Remove(sourceId)); }); }
public Status(SkillCast skillCast, int target, int source, int stacks) { SkillId = skillCast.SkillId; UniqueId = GuidGenerator.Int(); Target = target; Source = source; Level = skillCast.SkillLevel; Stacks = stacks > 0 && stacks <= skillCast.MaxStack() ? stacks : skillCast.MaxStack(); SkillCast = skillCast; Start = Environment.TickCount; Duration = skillCast.DurationTick(); End = Start + Duration; }