202 lines
7.0 KiB
C#
202 lines
7.0 KiB
C#
using ClassicAssist.Shared;
|
|
using ClassicAssist.Data.Macros.Commands;
|
|
using ClassicAssist.Data.Targeting;
|
|
using ClassicAssist.Shared.Resources;
|
|
using ClassicAssist.UO;
|
|
using ClassicAssist.UO.Data;
|
|
using ClassicAssist.UO.Network.Packets;
|
|
using ClassicAssist.UO.Objects;
|
|
using UOC = ClassicAssist.Shared.UO.Commands;
|
|
|
|
namespace ClassicAssist.Data.Hotkeys.Commands
|
|
{
|
|
public class Targeting
|
|
{
|
|
[HotkeyCommand( Name = "Set Enemy", Category = "Targeting" )]
|
|
public class SetEnemyCommand : HotkeyCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
TargetManager manager = TargetManager.GetInstance();
|
|
|
|
Entity mobile = manager.PromptTarget();
|
|
|
|
if ( mobile == null )
|
|
{
|
|
return;
|
|
}
|
|
|
|
manager.SetEnemy( mobile );
|
|
Engine.SendPacketToServer( new LookRequest( mobile.Serial ) );
|
|
}
|
|
}
|
|
|
|
[HotkeyCommand( Name = "Set Friend", Category = "Targeting" )]
|
|
public class SetFriendCommand : HotkeyCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
TargetManager manager = TargetManager.GetInstance();
|
|
|
|
Entity mobile = manager.PromptTarget();
|
|
|
|
if ( mobile == null )
|
|
{
|
|
return;
|
|
}
|
|
|
|
manager.SetFriend( mobile );
|
|
Engine.SendPacketToServer( new LookRequest( mobile.Serial ) );
|
|
}
|
|
}
|
|
|
|
[HotkeyCommand( Name = "Set Last Target", Category = "Targeting" )]
|
|
public class SetLastTargetCommand : HotkeyCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
TargetManager manager = TargetManager.GetInstance();
|
|
|
|
Entity entity = manager.PromptTarget();
|
|
|
|
if ( entity == null )
|
|
{
|
|
return;
|
|
}
|
|
|
|
manager.SetLastTarget( entity );
|
|
|
|
if ( UOMath.IsMobile( entity.Serial ) )
|
|
{
|
|
Engine.SendPacketToServer( new LookRequest( entity.Serial ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
[HotkeyCommand( Name = "Target Enemy", Category = "Targeting" )]
|
|
public class TargetEnemyCommand : HotkeyCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
TargetCommands.Target( "enemy", Options.CurrentOptions.RangeCheckLastTarget,
|
|
Options.CurrentOptions.QueueLastTarget );
|
|
}
|
|
}
|
|
|
|
[HotkeyCommand( Name = "Target Last", Category = "Targeting" )]
|
|
public class TargetLastCommand : HotkeyCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
if ( Options.CurrentOptions.SmartTargetOption == SmartTargetOption.None )
|
|
{
|
|
TargetCommands.Target( "last", Options.CurrentOptions.RangeCheckLastTarget,
|
|
Options.CurrentOptions.QueueLastTarget );
|
|
}
|
|
else
|
|
{
|
|
if ( Engine.TargetExists )
|
|
{
|
|
if ( Options.CurrentOptions.SmartTargetOption.HasFlag( SmartTargetOption.Friend ) &&
|
|
Engine.TargetFlags == TargetFlags.Beneficial && AliasCommands.FindAlias( "friend" ) )
|
|
{
|
|
TargetCommands.Target( "friend", Options.CurrentOptions.RangeCheckLastTarget,
|
|
Options.CurrentOptions.QueueLastTarget );
|
|
return;
|
|
}
|
|
|
|
if ( Options.CurrentOptions.SmartTargetOption.HasFlag( SmartTargetOption.Enemy ) &&
|
|
Engine.TargetFlags == TargetFlags.Harmful && AliasCommands.FindAlias( "enemy" ) )
|
|
{
|
|
TargetCommands.Target( "enemy", Options.CurrentOptions.RangeCheckLastTarget,
|
|
Options.CurrentOptions.QueueLastTarget );
|
|
return;
|
|
}
|
|
}
|
|
|
|
TargetCommands.Target( "last", Options.CurrentOptions.RangeCheckLastTarget,
|
|
Options.CurrentOptions.QueueLastTarget );
|
|
}
|
|
}
|
|
}
|
|
|
|
[HotkeyCommand( Name = "Target Friend", Category = "Targeting" )]
|
|
public class TargetFriendCommand : HotkeyCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
TargetCommands.Target( "friend", Options.CurrentOptions.RangeCheckLastTarget,
|
|
Options.CurrentOptions.QueueLastTarget );
|
|
}
|
|
}
|
|
|
|
[HotkeyCommand( Name = "Target Self", Category = "Targeting" )]
|
|
public class TargetSelfCommand : HotkeyCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
TargetCommands.Target( "self", Options.CurrentOptions.RangeCheckLastTarget,
|
|
Options.CurrentOptions.QueueLastTarget );
|
|
}
|
|
}
|
|
|
|
[HotkeyCommand( Name = "Clear Target Queue", Category = "Targeting" )]
|
|
public class ClearTargetQueueCommand : HotkeyCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
TargetCommands.ClearTargetQueue();
|
|
}
|
|
}
|
|
|
|
[HotkeyCommand( Name = "Attack Last", Category = "Targeting" )]
|
|
public class AttackLastCommand : HotkeyCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
ActionCommands.Attack( "last" );
|
|
}
|
|
}
|
|
|
|
[HotkeyCommand( Name = "Attack Enemy", Category = "Targeting" )]
|
|
public class AttackEnemyCommand : HotkeyCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
ActionCommands.Attack( "enemy" );
|
|
}
|
|
}
|
|
|
|
[HotkeyCommand( Name = "Show Next Target In Queue", Category = "Targeting" )]
|
|
public class ShowNextTargetQueue : HotkeyCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
if ( !Options.CurrentOptions.QueueLastTarget )
|
|
{
|
|
UOC.SystemMessage( Strings.Target_queue_is_not_enabled___ );
|
|
return;
|
|
}
|
|
|
|
object nextTarget = Engine.LastTargetQueue.Peek();
|
|
|
|
switch ( nextTarget )
|
|
{
|
|
case string targetAlias:
|
|
MsgCommands.HeadMsg( string.Format( Strings.Next_Target___0_, targetAlias ),
|
|
Engine.Player?.Serial );
|
|
break;
|
|
case int targetSerial:
|
|
{
|
|
Mobile entity = Engine.Mobiles.GetMobile( targetSerial );
|
|
|
|
MsgCommands.HeadMsg(
|
|
string.Format( Strings.Next_Target___0_,
|
|
$"0x{targetSerial:x} - {entity?.Name ?? "Unknown"}" ), Engine.Player?.Serial );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |