Fixed missing Factions on Animated Statues. Added XP to next level for lvl 40+ characters. Added Dragon AI for CODI Core AI. Tweaked Beholders & some Dragons to use CODI Core AI. Fixed CODI Core NPC onSPawn script to run PRC scripts properly. Full compile. Updated release archive.
171 lines
5.8 KiB
Plaintext
171 lines
5.8 KiB
Plaintext
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;
|
|
} |