// FEATS
function Feat( p_aParams )
{
	this.name = p_aParams["name"];
	this.source = p_aParams["source"];
	this.power = ( p_aParams["power"] ? p_aParams["power"] : false );
	this.summary = ( p_aParams["summary"] ? p_aParams["summary"] : "" );
	this.description = ( p_aParams["description"] ? p_aParams["description"] : "" );
	this.requirements = ( p_aParams["requirements"] ? p_aParams["requirements"] : new Array() ); // array of Requirements
	this.modifiers = ( p_aParams["modifiers"] ? p_aParams["modifiers"] : new Array() ); // array of Modifiers
	this.numSubtypes = ( p_aParams["num subtypes"] ? p_aParams["num subtypes"] : 0 ); // number of subtypes selected per instance of the feat
	this.subtype = ( p_aParams["subtype"] ? p_aParams["subtype"] : "" ); // subtype category
}
// when checking for requirements, if a feat with subtypes is listed as a requirement, it is assumed that any subtype will do
// unless the feat with the requirement also has requirements, in which case it is assumed that the subtypes must match
function CharFeat( p_aParams )
{
	this.name = p_aParams["name"]; // also the index
	this.subtypes = ( p_aParams["subtypes"] ? p_aParams["subtypes"] : new Array() ); // an array of subtypes associated with this feat selection
	this.restrictions = ( p_aParams["restrictions"] ? p_aParams["restrictions"] : "" ); // a description of restrictions that apply to the feat
}
// for Character object...
function fbHasRequirements()
{
}
function fbHasRequirement( p_sType, p_sName, p_asSubtypes )
{
	switch( p_sType )
	{
		case "feat" : return fbHasRequiredFeat( p_sName, p_asSubtypes );
	}
}
function fbHasRequiredFeat( p_sName, p_asSubtypes )
{
	var aoFeats = this.feats;
	for ( var i = 0; i < aoFeats.length; i++ )
	{
		if ( aoFeats[p_sName] )
		{
			var asSubtypes = aoFeats[p_sName].subtypes;
			for ( var j = 0; j < p_asSubtypes.length; j++ )
			{
				for ( var k = 0; k < asSubtypes.length; k++ )
				{
//					if ( p_asSubtypes[j]
						
				}
			}
			
			return true;
		}
	}
	
	return false;
}
function Modifier( p_aParams )
{
	this.type = p_aParams["type"]; // ability | stat | skill | proficiency
	this.id = p_aParams["id"]; // the name of the ability, stat, or skill to be modified or "subtype" to modify the selected subtype
	this.specialty = ( p_aParams["specialty"] ? p_aParams["specialty"] : false ); // apply the bonus to the skill 
	this.modifierType = ( p_aParams["modifier type"] ? p_aParams["modifier type"] : "numeric" ); // ability | numeric | array | string
	this.modifier = p_aParams["modifier"]; // ability | numeric | array | "subtype"
}

function FeatList( p_aParams )
{
	this.name = p_aParams["name"]; // name of the feat category such as general | adept | expert | warrior | power
	this.feats = p_aParams["feats"]; // array of feat indices
}

function fInitializeFeats()
{
	Feats = new Array();
	
	Feats["accurate attack"] = new Feat
	( {
		"name" : "Accurate Attack",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["acrobatic bluff"] = new Feat
	( {
		"name" : "Acrobatic Bluff",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["all-out attack"] = new Feat
	( {
		"name" : "All-out Attack",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["animal empathy"] = new Feat
	( {
		"name" : "Animal Empathy",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["armor training (heavy)"] = new Feat
	( {
		"name" : "Armor Training (heavy)",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "armor training (light)"
			} )
		),
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "proficiency",
				"id" : "armor",
				"modifier type" : "array",
				"modifier" : ArmorLists["heavy"].concat( ArmorLists["medium"] )
			})
		)
	} );
	Feats["armor training (light)"] = new Feat
	( {
		"name" : "Armor Training (light)",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "proficiency",
				"id" : "armor",
				"modifier type" : "array",
				"modifier" : ArmorLists["light"]
			})
		)
	} );
	Feats["aspect of flame"] = new Feat
	( {
		"name" : "Aspect of Flame",
		"source" : "True20 Worlds of Adventure"
	} );
	Feats["assessment"] = new Feat
	( {
		"name" : "Assessment",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["attack focus"] = new Feat
	( {
		"name" : "Attack Focus",
		"source" : "True20 Adventure Roleplaying",
		"num subtypes" : 1,
		"subtype" : "char weapons",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "weapon",
				"id" : "attack",
				"modifier type" : "numeric",
				"modifier" : 1
			})
		)
	} );
	Feats["attack specialization"] = new Feat
	( {
		"name" : "Attack Specialization",
		"source" : "True20 Adventure Roleplaying",
		"num subtypes" : 1,
		"subtype" : "requirement",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "attack focus"
			} )
		),
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "weapon",
				"id" : "damage",
				"modifier type" : "numeric",
				"modifier" : 1
			})
		)
	} );
	Feats["attractive"] = new Feat
	( {
		"name" : "Attractive",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["attune mana shard"] = new Feat
	( {
		"name" : "Attune Mana Shard",
		"source" : "True20 Worlds of Adventure",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "use mana shard"
			} )
		)
	} );
	Feats["benefit"] = new Feat
	( {
		"name" : "Benefit",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["blind-fight"] = new Feat
	( {
		"name" : "Blind-Fight",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["canny dodge"] = new Feat
	( {
		"name" : "Canny Dodge",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["challenge"] = new Feat
	( {
		"name" : "Challenge",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["chokehold"] = new Feat
	( {
		"name" : "Chokehold",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["cleave"] = new Feat
	( {
		"name" : "Cleave",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["connected"] = new Feat
	( {
		"name" : "Connected",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["contacts"] = new Feat
	( {
		"name" : "Contacts",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["crippling strike"] = new Feat
	( {
		"name" : "Crippling Strike",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "sneak attack"
			} )
		)
	} );
	Feats["critical strike"] = new Feat
	( {
		"name" : "Critical Strike",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "favored opponent"
			} )
		)
	} );
	Feats["dedicated"] = new Feat
	( {
		"name" : "Dedicated",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["defensive attack"] = new Feat
	( {
		"name" : "Defensive Attack",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["defensive roll"] = new Feat
	( {
		"name" : "Defensive Roll",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "stat",
				"id" : "unarmored toughness",
				"modifier" : 1
			})
		)
	} );
	Feats["deflect arrows"] = new Feat
	( {
		"name" : "Deflect Arrows",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["diehard"] = new Feat
	( {
		"name" : "Diehard",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["dodge focus"] = new Feat
	( {
		"name" : "Dodge Focus",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "stat",
				"id" : "dodge",
				"modifier" : 1
			})
		)
	} );
	Feats["eidetic memory"] = new Feat
	( {
		"name" : "Eidetic Memory",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["elusive target"] = new Feat
	( {
		"name" : "Elusive Target",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["empower"] = new Feat
	( {
		"name" : "Empower",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["endurance"] = new Feat
	( {
		"name" : "Endurance",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["erase signature"] = new Feat
	( {
		"name" : "Erase Signature",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "second sight"
			} )
		)
	} );
	Feats["evasion"] = new Feat
	( {
		"name" : "Evasion",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["exotic weapon training"] = new Feat
	( {
		"name" : "Exotic Weapon Training",
		"source" : "True20 Adventure Roleplaying",
		"num subtypes" : 1,
		"subtype" : "WeaponLists|exotic",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "proficiency",
				"id" : "weapon",
				"modifier type" : "string",
				"modifier" : "subtype"
			})
		)
	} );
	Feats["familiar"] = new Feat
	( {
		"name" : "Familiar",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["far shot"] = new Feat
	( {
		"name" : "Far Shot",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "point blank shot"
			} )
		)
	} );
	Feats["fascinate"] = new Feat
	( {
		"name" : "Fascinate",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["favored opponent"] = new Feat
	( {
		"name" : "Favored Opponent",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["firearms training"] = new Feat
	( {
		"name" : "Firearms Training",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "proficiency",
				"id" : "weapon",
				"modifier type" : "array",
				"modifier" : WeaponLists["firearms"]
			})
		)
	} );
	Feats["grappling finesse"] = new Feat
	( {
		"name" : "Grappling Finesse",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["great cleave"] = new Feat
	( {
		"name" : "Great Cleave",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "cleave"
			} )
		)
	} );
	Feats["great fortitude"] = new Feat
	( {
		"name" : "Great Fortitude",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "stat",
				"id" : "fortitude",
				"modifier" : 2
			})
		)
	} );
	Feats["greater attack focus"] = new Feat
	( {
		"name" : "Greater Attack Focus",
		"source" : "True20 Adventure Roleplaying",
		"num subtypes" : 1,
		"subtype" : "requirement",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "attack focus"
			} )
		),
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "weapon",
				"id" : "attack",
				"modifier type" : "numeric",
				"modifier" : 1
			})
		)
	} );
	Feats["greater attack specialization"] = new Feat
	( {
		"name" : "Greater Attack Specialization",
		"source" : "True20 Adventure Roleplaying",
		"num subtypes" : 1,
		"subtype" : "requirement",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "attack specialization"
			} )
		),
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "weapon",
				"id" : "damage",
				"modifier type" : "numeric",
				"modifier" : 1
			})
		)
	} );
	Feats["hide in plain sight"] = new Feat
	({
		"name" : "Hide in Plain Sight",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			({
				"type" : "skill",
				"id" : "stealth",
				"requirement" : 13
			})
		)
	});
	Feats["imbue item"] = new Feat
	({
		"name" : "Imbue Item",
		"source" : "True20 Adventure Roleplaying"
	});
	Feats["improved critical"] = new Feat
	( {
		"name" : "Improved Critical",
		"source" : "True20 Adventure Roleplaying",
		"num subtypes" : 1,
		"subtype" : "char weapons",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "weapon",
				"id" : "critRange",
				"modifier type" : "numeric",
				"modifier" : "crit range"
			})
		)
	} );
	Feats["improved defense"] = new Feat
	( {
		"name" : "Improved Defense",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["improved disarm"] = new Feat
	( {
		"name" : "Improved Disarm",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["improved evasion"] = new Feat
	( {
		"name" : "Improved Evasion",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "evasion"
			} )
		)
	} );
	Feats["improved grab"] = new Feat
	( {
		"name" : "Improved Grab",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["improved initiative"] = new Feat
	( {
		"name" : "Improved Initiative",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "stat",
				"id" : "initiative",
				"modifier" : 4
			})
		)
	} );
	Feats["improved pin"] = new Feat
	( {
		"name" : "Improved Pin",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["improved precise shot"] = new Feat
	( {
		"name" : "Improved Precise Shot",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "precise shot"
			} )
		)
	} );
	Feats["improved ranged disarm"] = new Feat
	( {
		"name" : "Improved Ranged Disarm",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["improved speed"] = new Feat
	( {
		"name" : "Improved Speed",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["improved strike"] = new Feat
	( {
		"name" : "Improved Strike",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["improved sunder"] = new Feat
	( {
		"name" : "Improved Sunder",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["improved throw"] = new Feat
	( {
		"name" : "Improved Throw",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["improved trip"] = new Feat
	( {
		"name" : "Improved Trip",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["improvised tools"] = new Feat
	( {
		"name" : "Improvised Tools",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["improved use ascendant technology"] = new Feat
	( {
		"name" : "Improved Use Ascendant Technology",
		"source" : "True20 Worlds of Adventure",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "use ascendant technology"
			} )
		)
	} );
	Feats["inspire"] = new Feat
	( {
		"name" : "Inspire",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "ability",
				"id" : "CHA",
				"requirement" : 1
			} )
		)
	} );
	Feats["iron will"] = new Feat
	( {
		"name" : "Iron Will",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "stat",
				"id" : "will",
				"modifier" : 2
			})
		)
	} );
	Feats["jack of all trades"] = new Feat
	( {
		"name" : "Jack of All Trades",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["leadership"] = new Feat
	( {
		"name" : "Leadership",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["light sleeper"] = new Feat
	( {
		"name" : "Light Sleeper",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["lightning reflexes"] = new Feat
	( {
		"name" : "Lightning Reflexes",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "stat",
				"id" : "reflex",
				"modifier" : 2
			})
		)
	} );
	Feats["low profile"] = new Feat
	( {
		"name" : "Low Profile",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["lucky"] = new Feat
	( {
		"name" : "Lucky",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "ability",
				"id" : "CHA",
				"requirement" : 1
			} )
		),
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "stat",
				"id" : "fortitude",
				"modifier type" : "ability",
				"modifier" : "CHA"
			}),
			new Modifier
			({
				"type" : "stat",
				"id" : "reflex",
				"modifier type" : "ability",
				"modifier" : "CHA"
			}),
			new Modifier
			({
				"type" : "stat",
				"id" : "will",
				"modifier type" : "ability",
				"modifier" : "CHA"
			})
		)
	} );
	Feats["mass suggestion"] = new Feat
	( {
		"name" : "Mass Suggestion",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["master plan"] = new Feat
	( {
		"name" : "Master Plan",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["mind over body"] = new Feat
	( {
		"name" : "Mind Over Body",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["move-by action"] = new Feat
	( {
		"name" : "Move-by Action",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["night vision"] = new Feat
	( {
		"name" : "Night Vision",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["overrun"] = new Feat
	( {
		"name" : "Overrun",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "vehicular combat"
			} )
		)
	} );
	Feats["point blank shot"] = new Feat
	( {
		"name" : "Point Blank Shot",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["precise shot"] = new Feat
	( {
		"name" : "Precise Shot",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["prone fighting"] = new Feat
	( {
		"name" : "Prone Fighting",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["quick draw"] = new Feat
	( {
		"name" : "Quick Draw",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["quicken power"] = new Feat
	( {
		"name" : "Quicken Power",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["rage"] = new Feat
	( {
		"name" : "Rage",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["ranged pin"] = new Feat
	( {
		"name" : "Ranged Pin",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["redirect"] = new Feat
	( {
		"name" : "Redirect",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["resonance crystal"] = new Feat
	( {
		"name" : "Resonance Crystal",
		"source" : "True20 Worlds of Adventure",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "background",
				"id" : "shodonai"
			} )
		)
	} );
	Feats["run"] = new Feat
	( {
		"name" : "Run",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["sapper"] = new Feat
	({
		"name" : "Sapper",
		"source" : "True20 Worlds of Adventure",
		"requirements" : new Array
		(
			new Requirement
			({
				"type" : "skill",
				"id" : "Knowledge (physical sciences)",
				"requirement" : 5
			}),
			new Requirement
			({
				"type" : "skill",
				"id" : "Craft (alchemy)",
				"requirement" : 5
			})
		)
	});
	Feats["second chance"] = new Feat
	({
		"name" : "Second Chance",
		"source" : "True20 Adventure Roleplaying"
	});
	Feats["seize initiative"] = new Feat
	( {
		"name" : "Seize Initiative",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["sense spirits"] = new Feat
	({
		"name" : "Sense Spirits",
		"source" : "True20 Worlds of Adventure"
	});
	Feats["set-up"] = new Feat
	( {
		"name" : "Set-up",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["shield penetration"] = new Feat
	( {
		"name" : "Shield Penetration",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["shield training"] = new Feat
	( {
		"name" : "Shield Training",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "proficiency",
				"id" : "armor",
				"modifier" : ArmorLists["shields"]
			})
		)
	} );
	Feats["skill focus"] = new Feat
	( {
		"name" : "Skill Focus",
		"source" : "True20 Adventure Roleplaying",
		"num subtypes" : 1,
		"subtype" : "char skills",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "skill",
				"id" : "subtype",
				"modifier" : 3
			})
		)
	} );
	Feats["skill mastery"] = new Feat
	({
		"name" : "Skill Mastery",
		"source" : "True20 Adventure Roleplaying"
	});
	Feats["skill training"] = new Feat
	({
		"name" : "Skill Training",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "skill points",
				"id" : "skill points",
				"modifier" : 4
			})
		)
	});
	Feats["slow fall"] = new Feat
	( {
		"name" : "Slow Fall",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["smite opponent"] = new Feat
	( {
		"name" : "Smite Opponent",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "favored opponent"
			} )
		)
	} );
	Feats["snatch arrows"] = new Feat
	( {
		"name" : "Snatch Arrows",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "deflect arrows"
			} )
		)
	} );
	Feats["sneak attack"] = new Feat
	( {
		"name" : "Sneak Attack",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["spirited charge"] = new Feat
	( {
		"name" : "Spirited Charge",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "vehicular combat"
			} )
		)
	} );
	Feats["startle"] = new Feat
	( {
		"name" : "Startle",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["store power"] = new Feat
	({
		"name" : "Store Power",
		"source" : "True20 Worlds of Adventure",
		"requirements" : new Array
		(
			new Requirement
			({
				"type" : "feat",
				"id" : "attune mana shard"
			})
		)
	});
	Feats["stunning attack"] = new Feat
	( {
		"name" : "Stunning Attack",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["subtle power"] = new Feat
	( {
		"name" : "Subtle Power",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["suggestion"] = new Feat
	( {
		"name" : "Suggestion",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "feat",
				"id" : "fascinate"
			} )
		)
	} );
	Feats["supernatural focus"] = new Feat
	( {
		"name" : "Supernatural Focus",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["supernatural resistance"] = new Feat
	({
		"name" : "Supernatural Resistance",
		"source" : "True20 Worlds of Adventure"
	});
	Feats["supernatural talent"] = new Feat
	( {
		"name" : "Supernatural Talent",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["talented"] = new Feat
	( {
		"name" : "Talented",
		"source" : "True20 Adventure Roleplaying",
		"num subtypes" : 2,
		"subtype" : "char skills",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "skill",
				"id" : "subtype",
				"modifier" : 2
			})
		)
	} );
	Feats["tap mana well"] = new Feat
	( {
		"name" : "Tap Mana Well",
		"source" : "True20 Worlds of Adventure",
		"requirements" : new Array
		(
			new Requirement
			({
				"type" : "skill",
				"id" : "Knowledge (supernatural)",
				"requirement" : 5
			}),
			new Requirement
			({
				"type" : "skill",
				"id" : "Concentration",
				"requirement" : 5
			}),
			new Requirement
			({
				"type" : "feat",
				"id" : "use mana shard"
			})
		)
	});
	Feats["taunt"] = new Feat
	( {
		"name" : "Taunt",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["tireless"] = new Feat
	( {
		"name" : "Tireless",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "ability",
				"id" : "CON",
				"requirement" : 1
			} ),
			new Requirement
			( {
				"type" : "feat",
				"id" : "endurance"
			} )
		)
	} );
	Feats["tough"] = new Feat
	( {
		"name" : "Tough",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "stat",
				"id" : "unarmored toughness",
				"modifier" : 1
			})
		)
	} );
	Feats["track"] = new Feat
	( {
		"name" : "Track",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["trackless"] = new Feat
	( {
		"name" : "Trackless",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "skill",
				"id" : "stealth",
				"requirement" : 1
			} ),
			new Requirement
			( {
				"type" : "skill",
				"id" : "survival",
				"requirement" : 1
			} )
		)
	} );
	Feats["trailblazer"] = new Feat
	( {
		"name" : "Trailblazer",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			( {
				"type" : "skill",
				"id" : "survival",
				"requirement" : 1
			} )
		)
	} );
	Feats["two-weapon defense"] = new Feat
	({
		"name" : "Two-Weapon Defense",
		"source" : "True20 Adventure Roleplaying",
		"requirements" : new Array
		(
			new Requirement
			({
				"type" : "feat",
				"id" : "two-weapon fighting"
			})
		)
	});
	Feats["two-weapon fighting"] = new Feat
	({
		"name" : "Two-Weapon Fighting",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "stat",
				"id" : "off-hand modifier",
				"modifier" : 4
			}),
			new Modifier
			({
				"type" : "stat",
				"id" : "dual wield modifier",
				"modifier" : 2
			})
		)
	});
	Feats["uncanny dodge"] = new Feat
	( {
		"name" : "Uncanny Dodge",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["use ascendant technology"] = new Feat
	( {
		"name" : "Use Ascendant Technology",
		"source" : "True20 Worlds of Adventure",
		"requirements" : new Array
		(
			new Requirement
			({
				"type" : "skill",
				"id" : "Knowledge (ascendant technology)",
				"requirement" : 5
			})
		)
	});
	Feats["use mana shard"] = new Feat
	({
		"name" : "Use Mana Shard",
		"source" : "True20 Worlds of Adventure"
	});
	Feats["use technological device"] = new Feat
	({
		"name" : "Use Technological Device",
		"source" : "True20 Worlds of Adventure"
	});
	Feats["vehicular combat"] = new Feat
	( {
		"name" : "Vehicular Combat",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["wealthy"] = new Feat
	( {
		"name" : "Wealthy",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["weapon bind"] = new Feat
	( {
		"name" : "Weapon Bind",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["weapon break"] = new Feat
	( {
		"name" : "Weapon Break",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["weapon training"] = new Feat
	( {
		"name" : "Weapon Training",
		"source" : "True20 Adventure Roleplaying",
		"modifiers" : new Array
		(
			new Modifier
			({
				"type" : "proficiency",
				"id" : "weapon",
				"modifier type" : "array",
				"modifier" : WeaponLists["martial"]
			})
		)
	} );
	Feats["well-informed"] = new Feat
	( {
		"name" : "Well-Informed",
		"source" : "True20 Adventure Roleplaying"
	} );
	Feats["widen power"] = new Feat
	( {
		"name" : "Widen Power",
		"source" : "True20 Adventure Roleplaying"
	} );
	
	// Powers
	Feats["apport"] = new Feat
	( {
		"name" : "Apport",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["beast link"] = new Feat
	( {
		"name" : "Beast Link",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["bind spirit"] = new Feat
	({
		"name" : "Bind Spirit",
		"source" : "True20 Worlds of Adventure",
		"power" : true
	});
	Feats["blink"] = new Feat
	( {
		"name" : "Blink",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["bliss"] = new Feat
	( {
		"name" : "Bliss",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["body control"] = new Feat
	( {
		"name" : "Body Control",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["boil blood"] = new Feat
	({
		"name" : "Boil Blood",
		"source" : "True20 Worlds of Adventure",
		"power" : true
	});
	Feats["calm"] = new Feat
	( {
		"name" : "Calm",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["cold shaping"] = new Feat
	( {
		"name" : "Cold Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["combat sense"] = new Feat
	( {
		"name" : "Combat Sense",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["computer link"] = new Feat
	( {
		"name" : "Computer Link",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["cure"] = new Feat
	( {
		"name" : "Cure",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["cure blindness/deafness"] = new Feat
	( {
		"name" : "Cure Blindness/Deafness",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["cure disease"] = new Feat
	( {
		"name" : "Cure Disease",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["cure poison"] = new Feat
	( {
		"name" : "Cure Poison",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["dominate"] = new Feat
	( {
		"name" : "Dominate",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["drain vitality"] = new Feat
	( {
		"name" : "Drain Vitality",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["earth shaping"] = new Feat
	( {
		"name" : "Earth Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["elemental aura"] = new Feat
	( {
		"name" : "Elemental Aura",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["elemental blast"] = new Feat
	( {
		"name" : "Elemental Blast",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["elemental resistance"] = new Feat
	( {
		"name" : "Elemental Resistance",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["elemental weapon"] = new Feat
	( {
		"name" : "Elemental Weapon",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["energy shaping"] = new Feat
	( {
		"name" : "Energy Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["enhance ability"] = new Feat
	( {
		"name" : "Enhance Ability",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["enhance other"] = new Feat
	( {
		"name" : "Enhance Other",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["enhance senses"] = new Feat
	( {
		"name" : "Enhance Senses",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["fire shaping"] = new Feat
	( {
		"name" : "Fire Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["flesh shaping"] = new Feat
	( {
		"name" : "Flesh Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["ghost touch"] = new Feat
	( {
		"name" : "Ghost Touch",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["harm"] = new Feat
	( {
		"name" : "Harm",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["heart reading"] = new Feat
	( {
		"name" : "Heart Reading",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["heart shaping"] = new Feat
	( {
		"name" : "Heart Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["illusion"] = new Feat
	( {
		"name" : "Illusion",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["imbue life"] = new Feat
	( {
		"name" : "Imbue Life",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["imbue unlife"] = new Feat
	( {
		"name" : "Imbue Unlife",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["infect"] = new Feat
	({
		"name" : "Infect",
		"source" : "True20 Worlds of Adventure",
		"power" : true
	});
	Feats["light shaping"] = new Feat
	( {
		"name" : "Light Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["mana blast"] = new Feat
	({
		"name" : "Mana Blast",
		"source" : "True20 Worlds of Adventure",
		"power" : true
	});
	Feats["mana shield"] = new Feat
	({
		"name" : "Mana Shield",
		"source" : "True20 Worlds of Adventure",
		"power" : true
	});
	Feats["manipulate object"] = new Feat
	( {
		"name" : "Manipulate Object",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["mind probe"] = new Feat
	( {
		"name" : "Mind Probe",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["mind reading"] = new Feat
	( {
		"name" : "Mind Reading",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["mind shaping"] = new Feat
	( {
		"name" : "Mind Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["mind touch"] = new Feat
	( {
		"name" : "Mind Touch",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["move object"] = new Feat
	( {
		"name" : "Move Object",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["nature reading"] = new Feat
	( {
		"name" : "Nature Reading",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["object reading"] = new Feat
	( {
		"name" : "Object Reading",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["pain"] = new Feat
	( {
		"name" : "Pain",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["phase"] = new Feat
	( {
		"name" : "Phase",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["plane shift"] = new Feat
	( {
		"name" : "Plane Shift",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["plant shaping"] = new Feat
	( {
		"name" : "Plant Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["psychic blast"] = new Feat
	( {
		"name" : "Psychic Blast",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["psychic reflection"] = new Feat
	( {
		"name" : "Psychic Reflection",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["psychic shield"] = new Feat
	( {
		"name" : "Psychic Shield",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["psychic trap"] = new Feat
	( {
		"name" : "Psychic Trap",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["psychic weapon"] = new Feat
	( {
		"name" : "Psychic Weapon",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["scrying"] = new Feat
	( {
		"name" : "Scrying",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["second sight"] = new Feat
	( {
		"name" : "Second Sight",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["self-shaping"] = new Feat
	( {
		"name" : "Self-Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["sense minds"] = new Feat
	( {
		"name" : "Sense Minds",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["severance"] = new Feat
	( {
		"name" : "Severance",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["sleep"] = new Feat
	( {
		"name" : "Sleep",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["suggestion (power)"] = new Feat
	( {
		"name" : "Suggestion (power)",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["summon spirit"] = new Feat
	( {
		"name" : "Summon Spirit",
		"source" : "True20 Worlds of Adventure",
		"power" : true
	} );
	Feats["supernatural speed"] = new Feat
	( {
		"name" : "Supernatural Speed",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["supernatural strike"] = new Feat
	( {
		"name" : "Supernatural Strike",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["supernatural weapon"] = new Feat
	( {
		"name" : "Supernatural Weapon",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["teleport"] = new Feat
	( {
		"name" : "Teleport",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["truth-reading"] = new Feat
	( {
		"name" : "Truth-Reading",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["visions"] = new Feat
	( {
		"name" : "Visions",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["ward"] = new Feat
	( {
		"name" : "Ward",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["water shaping"] = new Feat
	( {
		"name" : "Water Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["weather shaping"] = new Feat
	( {
		"name" : "Weather Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["wind shaping"] = new Feat
	( {
		"name" : "Wind Shaping",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	Feats["wind walk"] = new Feat
	( {
		"name" : "Wind Walk",
		"source" : "True20 Adventure Roleplaying",
		"power" : true
	} );
	
	// creating feat lists
	FeatLists =
	{
		"general" : new FeatList
		( {
			"name" : "General",
			"feats" : new Array
			(
				"accurate attack",
				"all-out attack",
				"animal empathy",
				"armor training (heavy)",
				"armor training (light)",
				"assessment",
				"attack focus",
				"attractive",
				"benefit",
				"blind-fight",
				"canny dodge",
				"challenge",
				"connected",
				"contacts",
				"dedicated",
				"defensive attack",
				"dodge focus",
				"eidetic memory",
				"endurance",
				"exotic weapon training",
				"far shot",
				"firearms training",
				"great fortitude",
				"improved critical",
				"improved defense",
				"improved disarm",
				"improved grab",
				"improved initiative",
				"improved pin",
				"improved precise shot",
				"improved ranged disarm",
				"improved speed",
				"improved strike",
				"improved sunder",
				"improved throw",
				"improved trip",
				"iron will",
				"leadership",
				"light sleeper",
				"lightning reflexes",
				"low profile",
				"lucky",
				"move-by action",
				"night vision",
				"overrun",
				"point blank shot",
				"precise shot",
				"prone fighting",
				"quick draw",
				"ranged pin",
				"run",
				"second chance",
				"set-up",
				"shield training",
				"skill focus",
				"skill training",
				"startle",
				"talented",
				"taunt",
				"tireless",
				"track",
				"trackless",
				"trailblazer",
				"two-weapon defense",
				"two-weapon fighting",
				"uncanny dodge",
				"vehicular combat",
				"wealthy",
				"weapon training"
			)
		} ),
		"adept" : new FeatList
		( {
			"name" : "Adept",
			"feats" : new Array
			(
				"empower",
				"erase signature",
				"familiar",
				"imbue item",
				"mind over body",
				"quicken power",
				"shield penetration",
				"subtle power",
				"supernatural focus",
				"supernatural talent",
				"widen power"
			)
		} ),
		"expert" : new FeatList
		( {
			"name" : "Expert",
			"feats" : new Array
			(
				"acrobatic bluff",
				"crippling strike",
				"defensive roll",
				"deflect arrows",
				"elusive target",
				"evasion",
				"fascinate",
				"hide in plain sight",
				"improved evasion",
				"improvised tools",
				"inspire",
				"jack of all trades",
				"mass suggestion",
				"master plan",
				"redirect",
				"skill mastery",
				"slow fall",
				"snatch arrows",
				"sneak attack",
				"stunning attack",
				"suggestion",
				"well-informed"
			)
		} ),
		"warrior" : new FeatList
		( {
			"name" : "Warrior",
			"feats" : new Array
			(
				"attack specialization",
				"chokehold",
				"cleave",
				"critical strike",
				"diehard",
				"favored opponent",
				"grappling finesse",
				"great cleave",
				"greater attack focus",
				"greater attack specialization",
				"rage",
				"seize initiative",
				"smite opponent",
				"spirited charge",
				"stunning attack",
				"tough",
				"weapon bind",
				"weapon break"
			)
		} ),
		
		// POWER LISTS
		"adept powers" : new FeatList
		( {
			"name" : "Adept Powers",
			"feats" : new Array
			(
				"apport",
				"beast link",
				"blink",
				"bliss",
				"body control",
				"calm",
				"cold shaping",
				"combat sense",
				"computer link",
				"cure",
				"cure blindness/deafness",
				"cure disease",
				"cure poison",
				"dominate",
				"drain vitality",
				"earth shaping",
				"elemental aura",
				"elemental blast",
				"elemental resistance",
				"elemental weapon",
				"energy shaping",
				"enhance ability",
				"enhance other",
				"enhance senses",
				"fire shaping",
				"flesh shaping",
				"ghost touch",
				"harm",
				"heart reading",
				"heart shaping",
				"illusion",
				"imbue life",
				"imbue unlife",
				"light shaping",
				"manipulate object",
				"mind probe",
				"mind reading",
				"mind shaping",
				"mind touch",
				"move object",
				"nature reading",
				"object reading",
				"pain",
				"phase",
				"plane shift",
				"plant shaping",
				"psychic blast",
				"psychic reflection",
				"psychic shield",
				"psychic trap",
				"psychic weapon",
				"scrying",
				"second sight",
				"self-shaping",
				"sense minds",
				"severance",
				"sleep",
				"suggestion (power)",
				"supernatural speed",
				"supernatural strike",
				"supernatural weapon",
				"teleport",
				"truth-reading",
				"visions",
				"ward",
				"water shaping",
				"weather shaping",
				"wind shaping",
				"wind walk"
			)
		} )
	}
}
