@Override
	public void initializeClass()
	{
		super.initializeClass();
		CMLib.ableMapper().addCharAbilityMapping(ID(),1,"Skill_Spellcraft",50,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),1,"Skill_ScrollCopy",100,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),1,"Spell_Scribe",75,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),1,"Papermaking",75,true);
		CMLib.ableMapper().addCharAbilityMapping(ID(),1,"Spell_ReadMagic",100,true);


		CMLib.ableMapper().addCharAbilityMapping(ID(),1,"Spell_MagicMissile",false);
		CMLib.ableMapper().addCharAbilityMapping(ID(),1,"Spell_ResistMagicMissiles",false);
		CMLib.ableMapper().addCharAbilityMapping(ID(),1,"Spell_Shield",false);
		CMLib.ableMapper().addCharAbilityMapping(ID(),1,"Spell_IronGrip",false);

		for(final Enumeration<Ability> a=CMClass.abilities();a.hasMoreElements();)
		{
			final Ability A=a.nextElement();
			if((A!=null)
			&&((A.classificationCode()&Ability.ALL_ACODES)==Ability.ACODE_SPELL))
			{
				final int level=CMLib.ableMapper().getQualifyingLevel(ID(),true,A.ID());
				if(level>0)
				{
					final AbilityMapper.AbilityMapping able=CMLib.ableMapper().getAbleMap(ID(),A.ID());
					if((able!=null)
					&&(!CMLib.ableMapper().getDefaultGain(ID(),true,A.ID())))
					{
						able.costOverrides=new Integer[]{Integer.valueOf(0),Integer.valueOf(0),Integer.valueOf(0),Integer.valueOf(0)};
						able.defaultProficiency=100;
					}
				}
			}
		}
	}