using System.Collections.Generic; using System.Linq; using ClassicAssist.Shared; using ClassicAssist.Data.Skills; using ClassicAssist.Misc; using ClassicAssist.Shared.Resources; using ClassicAssist.UO.Data; using ClassicAssist.UO.Network.Packets; using UOC = ClassicAssist.Shared.UO.Commands; namespace ClassicAssist.Data.Macros.Commands { public static class SkillCommands { [CommandsDisplay( Category = nameof( Strings.Skills ), Parameters = new[] { nameof( ParameterType.SkillName ) } )] public static void UseSkill( string skill ) { int id = GetSkillID( skill ); if ( id == -1 ) { UOC.SystemMessage( string.Format( Strings.Invalid_skill_name___0__, skill ) ); return; } Engine.SendPacketToServer( new UseSkill( id ) ); } private static int GetSkillID( string skill ) { skill = skill.ToLower().Replace( '_', ' ' ); KeyValuePair sk = UO.Data.Skills.GetSkills() .FirstOrDefault( s => s.Value.Name.ToLower().Equals( skill ) ); if ( sk.Value == null ) { return -1; } return sk.Key; } [CommandsDisplay( Category = nameof( Strings.Skills ), Parameters = new[] { nameof( ParameterType.SkillName ) } )] public static double Skill( string name ) { SkillManager manager = SkillManager.GetInstance(); SkillEntry s = manager.Items.FirstOrDefault( se => se.Skill.Name.ToLower().Contains( name.ToLower() ) ); return s?.Value ?? 0; } [CommandsDisplay( Category = nameof( Strings.Skills ), Parameters = new[] { nameof( ParameterType.SkillName ) } )] public static double SkillCap( string name ) { SkillManager manager = SkillManager.GetInstance(); SkillEntry s = manager.Items.FirstOrDefault( se => se.Skill.Name.ToLower().Contains( name.ToLower() ) ); return s?.Cap ?? 0; } [CommandsDisplay( Category = nameof( Strings.Skills ), Parameters = new[] { nameof( ParameterType.SkillName ) } )] public static string SkillState( string name ) { SkillManager manager = SkillManager.GetInstance(); SkillEntry s = manager.Items.FirstOrDefault( se => se.Skill.Name.ToLower().Contains( name.ToLower() ) ); return s?.LockStatus.ToString().ToLower() ?? "up"; } [CommandsDisplay( Category = nameof( Strings.Skills ), Parameters = new[] { nameof( ParameterType.SkillName ), nameof( ParameterType.UpDownLocked ) } )] [CommandsDisplayStringSeeAlso( new[] { null, nameof( LockStatus ) } )] public static void SetSkill( string skill, string status ) { SkillManager manager = SkillManager.GetInstance(); SkillEntry s = manager.Items.FirstOrDefault( se => se.Skill.Name.ToLower().Contains( skill.ToLower() ) ); if ( s == null ) { UOC.SystemMessage( string.Format( Strings.Invalid_skill_name___0__, skill ) ); return; } LockStatus ls = Utility.GetEnumValueByName( status ); UOC.ChangeSkillLock( s, ls ); } [CommandsDisplay( Category = nameof( Strings.Skills ), Parameters = new[] { nameof( ParameterType.String ), nameof( ParameterType.UpDownLocked ) } )] [CommandsDisplayStringSeeAlso( new[] { nameof( StatType ), nameof( LockStatus ) } )] public static void SetStatus( string stat, string lockStatus ) { StatType st = Utility.GetEnumValueByName( stat ); LockStatus ls = Utility.GetEnumValueByName( lockStatus ); UOC.ChangeStatLock( st, ls ); } } }