@Override
	public AbilityMapping makeAbilityMapping(String ID,
											 int qualLevel,
											 String abilityID,
											 int defaultProficiency,
											 int maxProficiency,
											 String defaultParam,
											 boolean autoGain,
											 boolean secret,
											 boolean isAllQualified,
											 List<String> preReqSkillsList,
											 String extraMask,
											 Integer[] costOverrides)
	{
		final AbilityMapping able=new AbilityMapping(ID);
		able.abilityID=abilityID;
		able.qualLevel=qualLevel;
		able.autoGain=autoGain;
		able.isSecret=secret;
		able.isAllQualified=isAllQualified;
		able.defaultParm=defaultParam==null?"":defaultParam;
		able.defaultProficiency=defaultProficiency;
		able.maxProficiency=maxProficiency;
		able.extraMask=extraMask==null?"":extraMask;
		able.costOverrides=costOverrides;
		able.originalSkillPreReqList=CMParms.toStringList(preReqSkillsList);

		able.skillPreReqs=new DVector(2);
		addPreRequisites(abilityID,preReqSkillsList,extraMask);
		if(preReqSkillsList!=null)
			for(int v=0;v<preReqSkillsList.size();v++)
			{
				String s=preReqSkillsList.get(v);
				int prof=0;
				final int x=s.indexOf('(');
				if((x>=0)&&(s.endsWith(")")))
				{
					prof=CMath.s_int(s.substring(x+1,s.length()-1));
					s=s.substring(0,x);
				}
				able.skillPreReqs.addElement(s,Integer.valueOf(prof));
			}
		return able;
	}