@Override
	public AbilityMapping makeAbilityMapping(final String ID,
											 final int qualLevel,
											 final String abilityID,
											 final int defaultProficiency,
											 final int maxProficiency,
											 final String defaultParam,
											 final boolean autoGain,
											 final boolean secret,
											 final boolean isAllQualified,
											 final List<String> preReqSkillsList,
											 final String extraMask,
											 final Integer[] costOverrides)
	{
		final AbilityMapping able=newAbilityMapping()
		.ID(ID)
		.qualLevel(qualLevel)
		.abilityID(abilityID)
		.defaultProficiency(defaultProficiency)
		.maxProficiency(maxProficiency)
		.defaultParm(defaultParam ==null ? "" : defaultParam)
		.autoGain(autoGain)
		.isSecret(secret)
		.isAllQualified(isAllQualified)
		.extraMask(extraMask == null ? "" : extraMask)
		.costOverrides(costOverrides)
		.originalSkillPreReqList(CMParms.toListString(preReqSkillsList))
		.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;
	}