server-master/srcs/WingsAPI.Game/Skills/CharacterSkill.cs
2026-02-10 18:21:30 +01:00

37 lines
No EOL
1.4 KiB
C#

// WingsEmu
//
// Developed by NosWings Team
using System;
using System.Collections.Generic;
using System.Linq;
using WingsEmu.DTOs.Skills;
using WingsEmu.Game.Characters;
using WingsEmu.Game.Managers.StaticData;
using WingsEmu.Game.Networking;
namespace WingsEmu.Game.Skills;
public static class CharacterSkillsExtensions
{
public static IEnumerable<IBattleEntitySkill> GetSkills(this IPlayerEntity character) => character.UseSp ? character.SkillsSp.Values.ToArray() : character.CharacterSkills.Values.ToArray();
public static string GenerateSkillCooldownResetPacket(this IClientSession session, int castId) => $"sr {castId}";
public static string GenerateSkillCooldownResetAfter(this IClientSession session, short castId, short time) => $"sr -10 {castId} {time}";
public static void SendSkillCooldownResetAfter(this IClientSession session, short castId, short time) => session.SendPacket(session.GenerateSkillCooldownResetAfter(castId, time));
public static void SendSkillCooldownReset(this IClientSession session, int castId) => session.SendPacket(session.GenerateSkillCooldownResetPacket(castId));
}
public class CharacterSkill : CharacterSkillDTO, IBattleEntitySkill
{
private SkillDTO _skill;
public CharacterSkill() => LastUse = DateTime.UtcNow.AddHours(-1);
public DateTime LastUse { get; set; }
public short Rate { get; } = 100;
public SkillDTO Skill => _skill ??= StaticSkillsManager.Instance.GetSkill(SkillVNum);
}