/
com/planet_ink/coffee_mud/Abilities/
com/planet_ink/coffee_mud/Abilities/Common/
com/planet_ink/coffee_mud/Abilities/Diseases/
com/planet_ink/coffee_mud/Abilities/Druid/
com/planet_ink/coffee_mud/Abilities/Fighter/
com/planet_ink/coffee_mud/Abilities/Prayers/
com/planet_ink/coffee_mud/Abilities/Properties/
com/planet_ink/coffee_mud/Abilities/Skills/
com/planet_ink/coffee_mud/Abilities/Songs/
com/planet_ink/coffee_mud/Abilities/Spells/
com/planet_ink/coffee_mud/Abilities/Thief/
com/planet_ink/coffee_mud/Abilities/Traps/
com/planet_ink/coffee_mud/Areas/interfaces/
com/planet_ink/coffee_mud/Behaviors/
com/planet_ink/coffee_mud/Behaviors/interfaces/
com/planet_ink/coffee_mud/CharClasses/interfaces/
com/planet_ink/coffee_mud/Commands/
com/planet_ink/coffee_mud/Commands/interfaces/
com/planet_ink/coffee_mud/Exits/interfaces/
com/planet_ink/coffee_mud/Items/Armor/
com/planet_ink/coffee_mud/Items/Basic/
com/planet_ink/coffee_mud/Items/MiscMagic/
com/planet_ink/coffee_mud/Items/Software/
com/planet_ink/coffee_mud/Items/Weapons/
com/planet_ink/coffee_mud/Libraries/
com/planet_ink/coffee_mud/Libraries/interfaces/
com/planet_ink/coffee_mud/Locales/
com/planet_ink/coffee_mud/Locales/interfaces/
com/planet_ink/coffee_mud/MOBS/
com/planet_ink/coffee_mud/Races/
com/planet_ink/coffee_mud/Races/interfaces/
com/planet_ink/coffee_mud/WebMacros/
com/planet_ink/coffee_mud/WebMacros/interfaces/
com/planet_ink/coffee_mud/core/smtp/
com/planet_ink/coffee_mud/core/threads/
com/planet_ink/siplet/applet/
lib/
resources/fakedb/
resources/quests/holidays/
web/
web/admin.templates/
web/admin/grinder/
web/admin/images/
web/pub.templates/
web/pub/images/mxp/
web/pub/sounds/
package com.planet_ink.coffee_mud.Common.interfaces;

import java.util.Vector;

import com.planet_ink.coffee_mud.core.CMath;

/**
 * Descriptor class for ability components.
 * These are managed by by the Ability library.
 * @author Bo Zimmerman
 *
 */
public interface AbilityComponent extends CMCommon
{
	/**
	 * 
	 * @return
	 */
	public CompConnector getConnector();
	
	/**
	 * 
	 * @param connector
	 */
	public void setConnector(CompConnector connector);
	
	/**
	 * 
	 * @return
	 */
	public CompLocation getLocation();
	
	/**
	 * 
	 * @param location
	 */
	public void setLocation(CompLocation location);
	
	/**
	 * 
	 * @return
	 */
	public boolean isConsumed();
	
	/**
	 * 
	 * @param isConsumed
	 */
	public void setConsumed(boolean isConsumed);
	
	/**
	 * 
	 * @return
	 */
	public int getAmount();
	
	/**
	 * 
	 * @param amount
	 */
	public void setAmount(int amount);
	
	/**
	 * 
	 * @return
	 */
	public CompType getType();
	
	/**
	 * 
	 * @param type
	 * @param typeObj
	 */
	public void setType(CompType type, Object typeObj);
	
	/**
	 * 
	 * @return
	 */
	public long getLongType();
	
	/**
	 * 
	 * @return
	 */
	public String getStringType();
	
	/**
	 * 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public Vector getCompiledMask();

	/**
	 * 
	 * @return
	 */
	public String getMaskStr();

	/**
	 * 
	 * @param maskStr
	 */
	public void setMask(String maskStr); 
	
	/**
	 * 
	 * @author Bo Zimmerman
	 *
	 */
	public enum CompConnector { AND, OR };
	
	/**
	 * 
	 * @author Bo Zimmerman
	 *
	 */
	public enum CompLocation { INVENTORY, HELD, WORN };
	
	/**
	 * 
	 * @author Bo Zimmerman
	 *
	 */
	public enum CompType { RESOURCE, MATERIAL, STRING };
}