Files
Beyhan Oğur d5f52cc3d3 first commit
2026-09-03 04:45:36 +03:00

155 lines
4.7 KiB
C#

using ClassicAssist.Shared;
using ClassicAssist.Data.Abilities;
using ClassicAssist.Shared.Resources;
using ClassicAssist.UO.Data;
using ClassicAssist.UO.Network.Packets;
using ClassicAssist.UO.Objects;
using UOC = ClassicAssist.Shared.UO.Commands;
namespace ClassicAssist.Data.Macros.Commands
{
public static class AbilitiesCommands
{
[CommandsDisplay( Category = nameof( Strings.Abilities ) )]
public static void ClearAbility()
{
AbilitiesManager manager = AbilitiesManager.GetInstance();
if ( manager.IsPrimaryEnabled )
{
manager.SetAbility( AbilityType.Primary );
}
else if ( manager.IsSecondaryEnabled )
{
manager.SetAbility( AbilityType.Secondary );
}
}
[CommandsDisplay( Category = nameof( Strings.Abilities ),
Parameters = new[] { nameof( ParameterType.Ability ), nameof( ParameterType.OnOff ) } )]
public static void SetAbility( string ability, string onOff = "toggle" )
{
AbilitiesManager manager = AbilitiesManager.GetInstance();
if ( ability.ToLower().Equals( "stun" ) )
{
Engine.SendPacketToServer( new StunRequest() );
return;
}
if ( ability.ToLower().Equals( "disarm" ) )
{
Engine.SendPacketToServer( new DisarmRequest() );
return;
}
bool primary;
switch ( ability.ToLower() )
{
case "primary":
primary = true;
break;
default:
primary = false;
break;
}
string onOffNormalized = onOff.Trim().ToLower();
if ( onOffNormalized != "toggle" )
{
switch ( onOffNormalized )
{
case "on":
{
if ( primary && manager.IsPrimaryEnabled || !primary && manager.IsSecondaryEnabled )
{
if ( !MacroManager.QuietMode )
{
UOC.SystemMessage( Strings.Ability_already_set___, 0x3F );
}
return;
}
break;
}
case "off":
{
if ( primary && !manager.IsPrimaryEnabled || !primary && !manager.IsSecondaryEnabled )
{
if ( !MacroManager.QuietMode )
{
UOC.SystemMessage( Strings.Ability_not_set___, 0x3F );
}
return;
}
break;
}
}
}
UOC.SystemMessage( string.Format( Strings.Setting_ability___0_____, ability ), 0x3F );
manager.SetAbility( primary ? AbilityType.Primary : AbilityType.Secondary );
}
[CommandsDisplay( Category = nameof( Strings.Abilities ) )]
public static void Fly()
{
PlayerMobile player = Engine.Player;
if ( player == null )
{
return;
}
if ( !player.Status.HasFlag( MobileStatus.Flying ) )
{
UOC.ToggleGargoyleFlying();
}
}
[CommandsDisplay( Category = nameof( Strings.Abilities ),
Parameters = new[] { nameof( ParameterType.SerialOrAlias ) } )]
public static bool Flying( object obj )
{
int serial = AliasCommands.ResolveSerial( obj );
if ( serial == 0 )
{
UOC.SystemMessage( Strings.Invalid_or_unknown_object_id );
return false;
}
Mobile mobile = Engine.Mobiles.GetMobile( serial );
if ( mobile == null )
{
// TODO better message
UOC.SystemMessage( Strings.Cannot_find_item___ );
return false;
}
return mobile.Status.HasFlag( MobileStatus.Flying );
}
[CommandsDisplay( Category = nameof( Strings.Abilities ) )]
public static void Land()
{
PlayerMobile player = Engine.Player;
if ( player == null )
{
return;
}
if ( player.Status.HasFlag( MobileStatus.Flying ) )
{
UOC.ToggleGargoyleFlying();
}
}
}
}