// DecalFilters.idl : IDL source for DecalFilters.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (DecalFilters.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
import "DecalNet.idl";

enum eTrainingType
{
	eTrainUnusable,
	eTrainUntrained,
	eTrainTrained,
	eTrainSpecialized
};

enum eAttributeID
{
   eAttrStrength = 1,
   eAttrEndurance = 2,
   eAttrQuickness = 3,
   eAttrCoordination = 4,
   eAttrFocus = 5,
   eAttrSelf = 6
};

enum eSkillID
{
	eSkillAxe = 1,
	eSkillBow = 2,
	eSkillCrossbow = 3,
	eSkillDagger = 4,
	eSkillMace = 5,
	eSkillMeleeDefense = 6,
	eSkillMissileDefense = 7,
	eSkillSpear = 9,
	eSkillStaff = 10,
	eSkillSword = 11,
	eSkillThrownWeapons = 12,
	eSkillUnarmed = 13,
	eSkillArcaneLore = 14,
	eSkillMagicDefense = 15,
	eSkillManaConversion = 16,
	eSkillAppraiseItem = 18,
	eSkillAssessPerson = 19,
	eSkillDeception = 20,
	eSkillHealing = 21,
	eSkillJump = 22,
	eSkillLockpick = 23,
	eSkillRun = 24,
	eSkillAssessCreature = 27,
	eSkillAppraiseWeapon = 28,
	eSkillAppraiseArmour = 29,
	eSkillAppraiseMagicItem = 30,
	eSkillCreatureEnchantment = 31,
	eSkillItemEnchantment = 32,
	eSkillLifeMagic = 33,
	eSkillWarMagic = 34,
	eSkillLeadership = 35,
	eSkillLoyalty = 36,
	eSkillFletching = 37,
	eSkillAlchemy = 38,
	eSkillCooking = 39
};

enum eVitalID
{
	eHealth = 1,
	eStamina = 2,
	eMana = 3
};

enum eStatisticType
{
	eStatBurden = 5,
	eStatPyreal = 20,
	eStatExperience = 21,
	eStatUnassignedExp = 22,
	eStatUnassignedSkillPoints = 24,
	eStatLevel = 25,
	eStatRank = 30
};

enum eStringType
{
	eStringName = 1,
	eStringGender = 3,
	eStringRace = 4,
	eStringClass = 5
};

	[
		uuid(236B3F19-8F40-492b-A462-0EB4447A6296),
		helpstring("IEchoEvents Interface")
	]
	dispinterface IEchoEvents
	{
	properties:
	methods:
		[id(1), helpstring("method EchoMessage")] void EchoMessage(IMessage *Message);
	};

	[
		uuid(A67C748D-2427-4a13-A114-7ACC1D4C9433),
		helpstring("IPrefilterEvents Interface")
	]
	dispinterface IPrefilterEvents
	{
	properties:
	methods:
		[id(1), helpstring("method Event")] void Event(long ID, IMessage *Message);
	};

	[
		object,
		uuid(B6496852-E977-4DA2-884D-09AFEA3D7582),
		dual,
		helpstring("IAttributeInfo Interface"),
		pointer_default(unique)
	]
	interface IAttributeInfo : IDispatch
	{
		[propget, id(1), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
		[propget, id(2), helpstring("property Creation")] HRESULT Creation([out, retval] long *pVal);
		[propget, id(3), helpstring("property Exp")] HRESULT Exp([out, retval] long *pVal);
		[propget, id(4), helpstring("property Current")] HRESULT Current([out, retval] long *pVal);
	};

	[
		object,
		uuid(6FBA5326-F234-4AEC-B844-2136A0D50FD5),
		dual,
		helpstring("ISkillInfo Interface"),
		pointer_default(unique)
	]
	interface ISkillInfo : IDispatch
	{
		[propget, id(1), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
		[propget, id(2), helpstring("property ShortName")] HRESULT ShortName([out, retval] BSTR *pVal);
		[propget, id(3), helpstring("property Formula")] HRESULT Formula([out, retval] BSTR *pVal);
		[propget, id(4), helpstring("property Base")] HRESULT Base([out, retval] long *pVal);
		[propget, id(5), helpstring("property Current")] HRESULT Current([out, retval] long *pVal);
		[propget, id(6), helpstring("property Exp")] HRESULT Exp([out, retval] long *pVal);
		[propget, id(7), helpstring("property Training")] HRESULT Training([out, retval] enum eTrainingType *pVal);
		[propget, id(8), helpstring("property Known")] HRESULT Known([out, retval] VARIANT_BOOL *pVal);
	};

	[
		object,
		uuid(BFBE3A29-5F61-4973-9A74-EF50B328225E),
		dual,
		helpstring("INetworkFilter Interface"),
		pointer_default(unique)
	]
	interface IEchoFilter : IDispatch
	{
	};

	[
		object,
		uuid(0CE57594-4E30-4446-956D-CE460C7355AF),
		dual,
		helpstring("ICharacterStats Interface"),
		pointer_default(unique)
	]
	interface ICharacterStats : IDispatch
	{
		[propget, id(1), helpstring("property Character")] HRESULT Character([out, retval] long *pVal);
		[propget, id(2), helpstring("property Level")] HRESULT Level([out, retval] long *pVal);
		[propget, id(3), helpstring("property Rank")] HRESULT Rank([out, retval] long *pVal);
		[propget, id(4), helpstring("property TotalExp")] HRESULT TotalExp([out, retval] long *pVal);
		[propget, id(5), helpstring("property UnassignedExp")] HRESULT UnassignedExp([out, retval] long *pVal);
		[propget, id(6), helpstring("property SkillPoints")] HRESULT SkillPoints([out, retval] long *pVal);
		[propget, id(7), helpstring("property Server")] HRESULT Server([out, retval] BSTR *pVal);
		[propget, id(8), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
		[propget, id(9), helpstring("property Race")] HRESULT Race([out, retval] BSTR *pVal);
		[propget, id(10), helpstring("property Gender")] HRESULT Gender([out, retval] BSTR *pVal);
		[propget, id(11), helpstring("property ClassTemplate")] HRESULT ClassTemplate([out, retval] BSTR *pVal);
		[propget, id(12), helpstring("property AttributeCount")] HRESULT AttributeCount([out, retval] long *pVal);
		[propget, id(13), helpstring("property SkillCount")] HRESULT SkillCount([out, retval] long *pVal);
		[propget, id(14), helpstring("property VitalCount")] HRESULT VitalCount([out, retval] long *pVal);
		[propget, id(15), helpstring("property Attribute")] HRESULT Attribute(enum eAttributeID Index, [out, retval] IAttributeInfo * *pVal);
		[propget, id(16), helpstring("property Skill")] HRESULT Skill(enum eSkillID Index, [out, retval] ISkillInfo * *pVal);
		[propget, id(17), helpstring("property Vital")] HRESULT Vital(enum eVitalID Index, [out, retval] ISkillInfo * *pVal);
	};

[
	uuid(DA16DAA9-7F16-45D9-A59F-8C45A7F2ACB1),
	version(1.0),
	helpstring("Decal Network Filters Type Library")
]
library DecalFilters
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	dispinterface IEchoEvents;
	dispinterface IPrefilterEvents;

	[
		uuid(8C2FA400-315D-41DE-B063-D6EF04F12E1F),
		helpstring("EchoFilter Class")
	]
	coclass EchoFilter
	{
		[default] interface IEchoFilter;
		[default, source] dispinterface IEchoEvents;
	};

	[
		uuid(0B60F187-13CD-4E35-B8A2-FE128F05CA6B),
		helpstring("_ICharacterStatsEvents Interface")
	]
	dispinterface ICharacterStatsEvents
	{
		properties:
		methods:
		[id(1), helpstring("method Login")] HRESULT Login(long character);
	};

	[
		object,
		uuid(3C1CBEF8-E72A-4BDF-B92E-4F3307109766),
		dual,
		helpstring("IPrefilter Interface"),
		pointer_default(unique)
	]
	interface IPrefilter : IDispatch
	{
	};

	[
		uuid(4540C969-08D1-46BF-97AD-6B19D3C10BEE),
		helpstring("CharacterStats Class")
	]
	coclass CharacterStats
	{
		[default] interface ICharacterStats;
		[default, source] dispinterface ICharacterStatsEvents;
	};

	[
		uuid(AF42E9D7-E3F3-416B-AF32-A411F3F6EE72),
		helpstring("AttributeInfo Class"),
		noncreatable
	]
	coclass AttributeInfo
	{
		[default] interface IAttributeInfo;
	};

	[
		uuid(652DA384-AA3B-4F9D-9730-8CF753DA1A31),
		helpstring("SkillInfo Class"),
		noncreatable
	]
	coclass SkillInfo
	{
		[default] interface ISkillInfo;
	};

	[
		uuid(443D4A68-5422-4E0C-9460-973F8FBDB190),
		helpstring("Prefilter Class")
	]
	coclass Prefilter
	{
		[default] interface IPrefilter;
		[default, source] dispinterface IPrefilterEvents;
	};
};
