void ActionDoLevelUp(object oCreature, int iLevels);
int LevelMob(object oCreature, int iLevels);
int GetPackage(int iClass);

void ActionDoLevelUp(object oCreature, int iLevels)
{
    LevelMob(oCreature, iLevels);
}

int LevelMob(object oCreature, int iLevels)
{
	int iNewLevel;
	int iIndex;
	int iClass;
	int iPackage;

	if (GetClassByPosition(2,oCreature) == CLASS_TYPE_INVALID)
	{
		iClass = GetClassByPosition(1,oCreature);
		iPackage =PACKAGE_INVALID;
	} 
	else 
	{
		iClass = CLASS_TYPE_INVALID;
		iPackage =PACKAGE_INVALID;
	}

	iIndex = 1;
	
	while (iIndex <= iLevels)
	{
		iNewLevel=LevelUpHenchman(oCreature,iClass,TRUE,iPackage);
		iIndex++;
	}

	//Force Rest to mem spells
	ForceRest(oCreature);

	//Give more treasure to be lvl appropriate
	//rem this out cuz too much code is running and getting error
	//CTG_GenerateNPCTreasure(TREASURE_TYPE_MONSTER, oCreature);

	return iNewLevel;
}

//Setup Random Packages, note that Wizards won't get random packages
//so that specific wizard types can be used.  Example: Necromancer.
int GetPackage(int iClass)
{
int iPackage;
int iRandom;

iPackage = PACKAGE_INVALID;
switch (iClass)
    {
    case CLASS_TYPE_SORCERER:
        iRandom=Random(10)+1;
        switch (iRandom)
            {
            case 1: iPackage = PACKAGE_SORCERER; break;
            case 2: iPackage = PACKAGE_SORCERER_ABJURATION; break;
            case 3: iPackage = PACKAGE_SORCERER_CONJURATION; break;
            case 4: iPackage = PACKAGE_SORCERER_DIVINATION; break;
            case 5: iPackage = PACKAGE_SORCERER_DRAGONDISCIPLE; break;
            case 6: iPackage = PACKAGE_SORCERER_ENCHANTMENT; break;
            case 7: iPackage = PACKAGE_SORCERER_EVOCATION; break;
            case 8: iPackage = PACKAGE_SORCERER_ILLUSION; break;
            case 9: iPackage = PACKAGE_SORCERER_NECROMANCY; break;
            case 10: iPackage = PACKAGE_SORCERER_TRANSMUTATION; break;
            }
        break;
    case CLASS_TYPE_CLERIC:
        iRandom=Random(6)+1;
        switch (iRandom)
            {
            case 1: iPackage = PACKAGE_CLERIC; break;
            case 2: iPackage = PACKAGE_CLERIC_BATTLE_PRIEST; break;
            case 3: iPackage = PACKAGE_CLERIC_DEADWALKER; break;
            case 4: iPackage = PACKAGE_CLERIC_DIVINE; break;
            case 5: iPackage = PACKAGE_CLERIC_ELEMENTALIST; break;
            case 6: iPackage = PACKAGE_CLERIC_SHAMAN; break;
            }
        break;
    case CLASS_TYPE_DRUID:
        iRandom=Random(6)+1;
        switch (iRandom)
            {
            case 1: iPackage = PACKAGE_DRUID; break;
            case 2: iPackage = PACKAGE_DRUID_DEATH; break;
            case 3: iPackage = PACKAGE_DRUID_GRAY; break;
            case 4: iPackage = PACKAGE_DRUID_HAWKMASTER; break;
            case 5: iPackage = PACKAGE_DRUID_INTERLOPER; break;
            case 6: iPackage = PACKAGE_DRUID_SHIFTER; break;
            }
        break;
    case CLASS_TYPE_BARD:
        iRandom=Random(6)+1;
        switch (iRandom)
            {
            case 1: iPackage = PACKAGE_BARD; break;
            case 2: iPackage = PACKAGE_BARD_BLADE; break;
            case 3: iPackage = PACKAGE_BARD_GALLANT; break;
            case 4: iPackage = PACKAGE_BARD_HARPER; break;
            case 5: iPackage = PACKAGE_BARD_JESTER; break;
            case 6: iPackage = PACKAGE_BARD_LOREMASTER; break;
            }
        break;
    case CLASS_TYPE_BARBARIAN:
        iRandom=Random(6)+1;
        switch (iRandom)
            {
            case 1: iPackage = PACKAGE_BARBARIAN; break;
            case 2: iPackage = PACKAGE_BARBARIAN_BLACKGUARD; break;
            case 3: iPackage = PACKAGE_BARBARIAN_BRUTE; break;
            case 4: iPackage = PACKAGE_BARBARIAN_ORCBLOOD; break;
            case 5: iPackage = PACKAGE_BARBARIAN_SAVAGE; break;
            case 6: iPackage = PACKAGE_BARBARIAN_SLAYER; break;
            }
        break;
    case CLASS_TYPE_FIGHTER:
        iRandom=Random(6)+1;
        switch (iRandom)
            {
            case 1: iPackage = PACKAGE_FIGHTER; break;
            case 2: iPackage = PACKAGE_FIGHTER_COMMANDER; break;
            case 3: iPackage = PACKAGE_FIGHTER_FINESSE; break;
            case 4: iPackage = PACKAGE_FIGHTER_GLADIATOR; break;
            case 5: iPackage = PACKAGE_FIGHTER_PIRATE; break;
            case 6: iPackage = PACKAGE_FIGHTER_WEAPONMASTER; break;
            }
        break;
    case CLASS_TYPE_MONK:
        iRandom=Random(6)+1;
        switch (iRandom)
            {
            case 1: iPackage = PACKAGE_MONK; break;
            case 2: iPackage = PACKAGE_MONK_ASSASSIN; break;
            case 3: iPackage = PACKAGE_MONK_DEVOUT; break;
            case 4: iPackage = PACKAGE_MONK_GIFTED; break;
            case 5: iPackage = PACKAGE_MONK_PEASANT; break;
            case 6: iPackage = PACKAGE_MONK_SPIRIT; break;
            }
        break;
    case CLASS_TYPE_RANGER:
        iRandom=Random(6)+1;
        switch (iRandom)
            {
            case 1: iPackage = PACKAGE_RANGER; break;
            case 2: iPackage = PACKAGE_RANGER_ARCANEARCHER; break;
            case 3: iPackage = PACKAGE_RANGER_GIANTKILLER; break;
            case 4: iPackage = PACKAGE_RANGER_MARKSMAN; break;
            case 5: iPackage = PACKAGE_RANGER_STALKER; break;
            case 6: iPackage = PACKAGE_RANGER_WARDEN; break;
            }
        break;
    case CLASS_TYPE_ROGUE:
        iRandom=Random(6)+1;
        switch (iRandom)
            {
            case 1: iPackage = PACKAGE_ROGUE; break;
            case 2: iPackage = PACKAGE_ROGUE_BANDIT; break;
            case 3: iPackage = PACKAGE_ROGUE_GYPSY; break;
            case 4: iPackage = PACKAGE_ROGUE_SCOUT; break;
            case 5: iPackage = PACKAGE_ROGUE_SHADOWDANCER; break;
            case 6: iPackage = PACKAGE_ROGUE_SWASHBUCKLER; break;
            }
        break;
    }

	return iPackage;
}