class Object native
{
	// These really should be global functions...
	native static int G_SkillPropertyInt(int p);
	native static double G_SkillPropertyFloat(int p);

	virtual native void Destroy();
	native class<Object> GetClass();
}

class Thinker : Object native
{
}

class ThinkerIterator : Object native
{
	enum EStatnums
	{
		MAX_STATNUM = 127
	}

	native static ThinkerIterator Create(class<Object> type = "Actor", int statnum=MAX_STATNUM+1);
	native Thinker Next(bool exact = false);
	native void Reinit();
}

class ActorIterator : Object native
{
	native static ActorIterator Create(int tid, class<Actor> type = "Actor");
	native Actor Next();
	native void Reinit();
}

class DropItem : Object native
{
	/* native fields listed for reference only for now
	native readonly DropItem Next;
	native readonly name Name;
	native readonly int Probability;
	native readonly int Amount;
	*/
}

class SpotState : Object native
{
	native static SpotState GetSpotState();
	native SpecialSpot GetNextInList(class<Actor> type, int skipcounter);
}