namespace Decal.Filters;

public class Skill : IIdNameTableEntry
{
	private int mID;

	private string mName;

	private string mDesc;

	private int mIconId;

	private int mTrainCost;

	private int mSpecCost;

	private SkillType mType;

	private int mUnk1;

	private SkillState mUsability;

	private int mUnk2;

	private bool mAttr1Valid;

	private bool mAttr2Valid;

	private int mDivisor;

	private int mAttr1ID;

	private int mAttr2ID;

	private double mTimerLimit;

	private double mTimerStart;

	private double mUnk3;

	public int Id => mID;

	public string Name
	{
		get
		{
			return mName;
		}
		internal set
		{
			mName = value;
		}
	}

	public string Description
	{
		get
		{
			return mDesc;
		}
		internal set
		{
			mDesc = value;
		}
	}

	public int IconId
	{
		get
		{
			return mIconId;
		}
		internal set
		{
			mIconId = value;
		}
	}

	public int CreditsToTrain
	{
		get
		{
			return mTrainCost;
		}
		internal set
		{
			mTrainCost = value;
		}
	}

	public int CreditsToSpecialize
	{
		get
		{
			return mSpecCost;
		}
		internal set
		{
			mSpecCost = value;
		}
	}

	public SkillType Type
	{
		get
		{
			return mType;
		}
		internal set
		{
			mType = value;
		}
	}

	public SkillState Usability
	{
		get
		{
			return mUsability;
		}
		internal set
		{
			mUsability = value;
		}
	}

	public bool IsAttribute1Valid
	{
		get
		{
			return mAttr1Valid;
		}
		internal set
		{
			mAttr1Valid = value;
		}
	}

	public bool IsAttribute2Valid
	{
		get
		{
			return mAttr2Valid;
		}
		internal set
		{
			mAttr2Valid = value;
		}
	}

	public int Attribute1Id
	{
		get
		{
			return mAttr1ID;
		}
		internal set
		{
			mAttr1ID = value;
		}
	}

	public int Attribute2Id
	{
		get
		{
			return mAttr2ID;
		}
		internal set
		{
			mAttr2ID = value;
		}
	}

	public int AttributeDivisor
	{
		get
		{
			return mDivisor;
		}
		internal set
		{
			mDivisor = value;
		}
	}

	public double XPTimerStart
	{
		get
		{
			return mTimerStart;
		}
		internal set
		{
			mTimerStart = value;
		}
	}

	public double XPTimerLimit
	{
		get
		{
			return mTimerLimit;
		}
		internal set
		{
			mTimerLimit = value;
		}
	}

	public int Unknown1
	{
		get
		{
			return mUnk1;
		}
		internal set
		{
			mUnk1 = value;
		}
	}

	public int Unknown2
	{
		get
		{
			return mUnk2;
		}
		internal set
		{
			mUnk2 = value;
		}
	}

	public double Unknown3
	{
		get
		{
			return mUnk3;
		}
		internal set
		{
			mUnk3 = value;
		}
	}

	internal Skill(int ID)
	{
		mID = ID;
	}

	public override string ToString()
	{
		return mName;
	}
}
