157 lines
4.5 KiB
C#
157 lines
4.5 KiB
C#
using System;
|
|
using System.Text;
|
|
using Server;
|
|
using Server.Targeting;
|
|
using Server.Commands;
|
|
using Server.Commands.Generic;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public class ItemFlags
|
|
{
|
|
public const int StealableFlag = 0x00200000;
|
|
public const int TakenFlag = 0x00100000;
|
|
|
|
public static void Initialize()
|
|
{
|
|
CommandSystem.Register( "Stealable", AccessLevel.GameMaster, new CommandEventHandler( SetStealable_OnCommand ) );
|
|
CommandSystem.Register( "Flag", AccessLevel.GameMaster, new CommandEventHandler( GetFlag_OnCommand ) );
|
|
}
|
|
|
|
public static void SetStealable(Item target, bool value)
|
|
{
|
|
if(target != null)
|
|
target.SetSavedFlag( StealableFlag, value);
|
|
}
|
|
|
|
public static bool GetStealable(Item target)
|
|
{
|
|
if(target != null)
|
|
return target.GetSavedFlag(StealableFlag);
|
|
else
|
|
return false;
|
|
}
|
|
|
|
public static void SetTaken(Item target, bool value)
|
|
{
|
|
if(target != null)
|
|
{
|
|
target.SetSavedFlag( TakenFlag, value);
|
|
}
|
|
}
|
|
|
|
public static bool GetTaken(Item target)
|
|
{
|
|
if(target != null)
|
|
return target.GetSavedFlag(TakenFlag);
|
|
else
|
|
return false;
|
|
}
|
|
|
|
[Usage( "Flag flagfield" )]
|
|
[Description( "Gets the state of the specified SavedFlag on any item" )]
|
|
public static void GetFlag_OnCommand( CommandEventArgs e )
|
|
{
|
|
int flag=0;
|
|
bool error = false;
|
|
if( e.Arguments.Length > 0 )
|
|
{
|
|
if(e.Arguments[0].StartsWith( "0x" ))
|
|
{
|
|
try{flag = Convert.ToInt32( e.Arguments[0].Substring( 2 ), 16 ); } catch { error = true;}
|
|
} else
|
|
{
|
|
try{flag = int.Parse(e.Arguments[0]); } catch { error = true;}
|
|
}
|
|
|
|
}
|
|
if(!error)
|
|
{
|
|
e.Mobile.Target = new GetFlagTarget(e,flag);
|
|
} else
|
|
{
|
|
try{
|
|
e.Mobile.SendMessage(33,"Flag: Bad flagfield argument");
|
|
} catch {}
|
|
}
|
|
}
|
|
|
|
private class GetFlagTarget : Target
|
|
{
|
|
private CommandEventArgs m_e;
|
|
private int m_flag;
|
|
|
|
public GetFlagTarget( CommandEventArgs e, int flag) : base ( 30, false, TargetFlags.None )
|
|
{
|
|
m_e = e;
|
|
m_flag = flag;
|
|
}
|
|
protected override void OnTarget( Mobile from, object targeted )
|
|
{
|
|
if(targeted is Item)
|
|
{
|
|
bool state = ((Item)targeted).GetSavedFlag(m_flag);
|
|
|
|
from.SendMessage("Flag (0x{0:X}) = {1}",m_flag,state);
|
|
} else
|
|
{
|
|
from.SendMessage("Must target an Item");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
[Usage( "Stealable [true/false]" )]
|
|
[Description( "Sets/gets the stealable flag on any item" )]
|
|
public static void SetStealable_OnCommand( CommandEventArgs e )
|
|
{
|
|
bool state = false;
|
|
bool error = false;
|
|
if( e.Arguments.Length > 0 ){
|
|
try{state = bool.Parse(e.Arguments[0]); } catch { error = true;}
|
|
|
|
}
|
|
if(!error)
|
|
{
|
|
e.Mobile.Target = new SetStealableTarget(e, state);
|
|
}
|
|
|
|
}
|
|
|
|
private class SetStealableTarget : Target
|
|
{
|
|
private CommandEventArgs m_e;
|
|
private bool m_state;
|
|
private bool set = false;
|
|
|
|
public SetStealableTarget( CommandEventArgs e, bool state) : base ( 30, false, TargetFlags.None )
|
|
{
|
|
m_e = e;
|
|
m_state = state;
|
|
if( e.Arguments.Length > 0 )
|
|
{
|
|
set = true;
|
|
}
|
|
}
|
|
protected override void OnTarget( Mobile from, object targeted )
|
|
{
|
|
if(targeted is Item)
|
|
{
|
|
if(set)
|
|
{
|
|
SetStealable(((Item)targeted), m_state);
|
|
}
|
|
|
|
bool state = GetStealable((Item)targeted);
|
|
|
|
from.SendMessage("Stealable = {0}",state);
|
|
|
|
} else
|
|
{
|
|
from.SendMessage("Must target an Item");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|