/**
	* Returns all the max mental states for a creature.
	*
	* @param env		    Java environment
	* @param self		    class calling this function
	* @param mob	    id of creature to access
	*
	* @return the max mental states for the creature
*/
jobjectArray JNICALL ScriptMethodsMentalStatesNamespace::getMaxMentalStates(JNIEnv *env, jobject self, jlong mob)
{
	UNREF(self);

	CreatureObject * creature = 0;
	if (!JavaLibrary::getObject(mob, creature))
		return 0;

	// create the array of mental states
	LocalObjectArrayRefPtr attribs = createNewObjectArray(
		MentalStates::NumberOfMentalStates, JavaLibrary::getClsMentalState());
	if (env->ExceptionCheck())
	{
		env->ExceptionDescribe();
		return 0;
	}

	// set the array elements
	for (int i = 0; i < MentalStates::NumberOfMentalStates; ++i)
	{
		LocalRefPtr mentalState = createNewObject(JavaLibrary::getClsMentalState(), JavaLibrary::getMidMentalState(),
			i, creature->getMaxMentalState(static_cast<MentalStates::Enumerator>(i)));
		if (env->ExceptionCheck())
		{
			env->ExceptionDescribe();
			return 0;
		}
		setObjectArrayElement(*attribs, i, *mentalState);
	}
	return attribs->getReturnValue();
}	// JavaLibrary::getMaxMentalStates
	/**
	* Returns a creature's max mentalState.
	*
	* @param env		    Java environment
	* @param self		    class calling this function
	* @param mob	    id of creature to access
	* @param mentalState		mentalState we are interested in
	*
	* @return the max mental state value, or MENTAL_STATE_ERROR on error
*/
jfloat JNICALL ScriptMethodsMentalStatesNamespace::getMaxMentalState(JNIEnv *env, jobject self, jlong mob, jint mentalState)
{
	UNREF(self);

	if (mentalState < 0 || mentalState >= MentalStates::NumberOfMentalStates)
		return MENTAL_STATE_ERROR;

	CreatureObject * creature = 0;
	if (!JavaLibrary::getObject(mob, creature))
		return MENTAL_STATE_ERROR;

	return creature->getMaxMentalState(static_cast<MentalStates::Enumerator>(mentalState));
}	// JavaLibrary::getMaxMentalStates