PoA_PRC8/_module/_removed files/hgll_featreq_inc.nss
Jaysyn904 151d074880 Added "Removed Files" folder
Added "Removed Files" folder in case we needed to review any of them.
2022-10-10 10:39:34 -04:00

4203 lines
168 KiB
Plaintext

//--------------------------------DECLARATIONS--------------------------------//
// This function determines what class controls the character's advancement during legendary
// levels. First it checks the character's It returns the class type with the most levels.
// If the character has two classes that tie for most number of levels, it will return the
// class the character took first. It returns -1 on an error.
int GetControlClass(object oPC);
// This function returns the cost of taking a certain skill based on the class. Return
// values are: 1 for class skill, 2 for cross-class skill, -1 for class forbidden skill (default),
// and -2 for CLASS_TYPE input error. The switches essentially reconstruct the 2da. They also
// conveniently mirror the skill chart order in the HotU book. This allows users to alter skill
// costs and availabilities, and is faster than a 2da or int cache lookup.
int GetCostOfSkill(int nClass, int nSkill);
// This function returns TRUE if the PC has the stat or stats required to take nFeat,
// or if nFeat has no required stats.
int GetAreFeatStatReqsMet(int nFeat, object oPC);
// This function returns TRUE if the PC has the skill or skills required to take nFeat,
// or if nFeat has no required skills.
int GetAreFeatSkillReqsMet(int nFeat, object oPC);
// This function returns TRUE if the PC has the feat or feats required to take nFeat,
// or if nFeat has no required feats.
int GetAreFeatFeatReqsMet(int nFeat, object oPC);
// This function returns TRUE if the feat is only available at first level. Returns -3 on error.
int GetIsFeatFirstLevelOnly(int nFeat);
// This function returns true if a feat is of the devastating critical type.
int GetIsFeatDevCrit(int nFeat);
// This function returns TRUE if the PC has the ability to cast spells of the level required
// by the feat specified. It returns TRUE if the feat has no spell level requirement, and
// always returns FALSE for Sap.
int GetHasRequiredSpellLevelForFeat(object oPC, int nFeat);
// This function returns the name of the designated feat.
string GetNameOfFeat(int nFeat);
// This function returns TRUE if the feat is restricted to a limited number of uses per day.
int GetIsFeatLimitedUses(int nFeat);
//----------------------------------FUNCTIONS---------------------------------//
int GetControlClass(object oPC)
{
int nL1 = GetLevelByPosition(1, oPC);
int nL2 = GetLevelByPosition(2, oPC);
int nL3 = GetLevelByPosition(3, oPC);
//class 1 highest
if ((nL1 > nL2) && (nL1 > nL3)) return GetClassByPosition(1, oPC);
//class 2 highest
else if ((nL2 > nL1) && (nL2 > nL3)) return GetClassByPosition(2, oPC);
//class 3 highest
else if ((nL3 > nL1) && (nL3 > nL2)) return GetClassByPosition(3, oPC);
//class 1 and 2 tied for highest
else if (nL1 == nL2) return GetClassByPosition(1, oPC);
//class 1 and 3 tied for highest
else if (nL1 == nL3) return GetClassByPosition(1, oPC);
//class 2 and 3 tied for highest
else if (nL2 == nL3) return GetClassByPosition(2, oPC);
//return -1 on error
else return -1;
}
int GetCostOfSkill(int nClass, int nSkill)
{
switch(nClass) //These switches essentially reconstruct the 2da. They also conveniently mirror
{ //the skill chart order in the HotU book. This allows users to alter skill costs
//and availabilities as well, and is faster than a 2da or int cache lookup.
case 0://barbarian
switch(nSkill){
case 0: return -1; break;//animal empathy
case 1: return 2; break;//concentration
case 2: return 2; break;//disable trap
case 3: return 1; break;//discipline
case 4: return 1; break;//heal
case 5: return 2; break;//hide
case 6: return 1; break;//listen
case 7: return 1; break;//lore
case 8: return 2; break;//move silently
case 9: return 2; break;//open lock
case 10: return 1; break;//parry
case 11: return -1; break;//perform
case 12: return 2; break;//persuade
case 13: return 2; break;//pick pocket
case 14: return 2; break;//search
case 15: return 2; break;//set trap
case 16: return 2; break;//spellcraft
case 17: return 2; break;//spot
case 18: return 1; break;//taunt
case 19: return -1; break;//UMD
case 20: return 2; break;//appraise
case 21: return 2; break;//tumble
case 22: return 1; break;//craft trap
case 23: return 2; break;//bluff
case 24: return 1; break;//intimidate
case 25: return 1; break;//craft armor
case 26: return 1; break;//craft weapon
default: return -1;
}
case 1://bard
switch(nSkill){
case 0: return -1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 1; break;
case 4: return 1; break;
case 5: return 1; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 1; break;
case 9: return 2; break;
case 10: return 1; break;
case 11: return 1; break;//perform
case 12: return 1; break;
case 13: return 1; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 1; break;
case 17: return 2; break;
case 18: return 1; break;
case 19: return 1; break;//UMD
case 20: return 1; break;
case 21: return 1; break;
case 22: return 1; break;
case 23: return 1; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 2://cleric
switch(nSkill){
case 0: return -1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 2; break;
case 4: return 1; break;
case 5: return 2; break;
case 6: return 2; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 1; break;
case 11: return -1; break;//perform
case 12: return 1; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 1; break;
case 17: return 2; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 3://druid
switch(nSkill){
case 0: return 1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 2; break;
case 4: return 1; break;
case 5: return 2; break;
case 6: return 2; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 1; break;
case 11: return -1; break;//perform
case 12: return 1; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 1; break;
case 17: return 2; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 4://fighter
switch(nSkill){
case 0: return -1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 1; break;
case 4: return 1; break;
case 5: return 2; break;
case 6: return 2; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 1; break;
case 11: return -1; break;//perform
case 12: return 2; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 2; break;
case 17: return 2; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 5://monk
switch(nSkill){
case 0: return -1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 1; break;
case 4: return 1; break;
case 5: return 1; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 1; break;
case 9: return 2; break;
case 10: return 1; break;
case 11: return -1; break;//perform
case 12: return 1; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 2; break;
case 17: return 2; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 1; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 6://paladin
switch(nSkill){
case 0: return -1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 1; break;
case 4: return 1; break;
case 5: return 2; break;
case 6: return 2; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 1; break;
case 11: return -1; break;//perform
case 12: return 1; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 2; break;
case 17: return 2; break;
case 18: return 1; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 7://ranger
switch(nSkill){
case 0: return 1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 1; break;
case 4: return 1; break;
case 5: return 1; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 1; break;
case 9: return 2; break;
case 10: return 1; break;
case 11: return -1; break;//perform
case 12: return 2; break;
case 13: return 2; break;
case 14: return 1; break;
case 15: return 1; break;
case 16: return 2; break;
case 17: return 1; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 8://rogue
switch(nSkill){
case 0: return -1; break;
case 1: return 2; break;
case 2: return 1; break;
case 3: return 2; break;
case 4: return 1; break;
case 5: return 1; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 1; break;
case 9: return 1; break;
case 10: return 1; break;
case 11: return -1; break;//perform
case 12: return 1; break;
case 13: return 1; break;
case 14: return 1; break;
case 15: return 1; break;
case 16: return 2; break;
case 17: return 1; break;
case 18: return 2; break;
case 19: return 1; break;//UMD
case 20: return 1; break;
case 21: return 1; break;
case 22: return 1; break;
case 23: return 1; break;
case 24: return 1; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 9://sorceror
switch(nSkill){
case 0: return -1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 2; break;
case 4: return 1; break;
case 5: return 2; break;
case 6: return 2; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 2; break;
case 11: return -1; break;//perform
case 12: return 2; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 1; break;
case 17: return 2; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 10://wizard
switch(nSkill){
case 0: return -1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 2; break;
case 4: return 1; break;
case 5: return 2; break;
case 6: return 2; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 2; break;
case 11: return -1; break;//perform
case 12: return 2; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 1; break;
case 17: return 2; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 27://shadowdancer
switch(nSkill){
case 0: return -1; break;
case 1: return 2; break;
case 2: return 2; break;
case 3: return 2; break;
case 4: return 1; break;
case 5: return 1; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 1; break;
case 9: return 2; break;
case 10: return 2; break;
case 11: return -1; break;//perform
case 12: return 1; break;
case 13: return 1; break;
case 14: return 1; break;
case 15: return 2; break;
case 16: return 2; break;
case 17: return 1; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 1; break;
case 22: return 2; break;
case 23: return 1; break;
case 24: return 2; break;
case 25: return 2; break;
case 26: return 2; break;
default: return -1;
}
case 28://harper scout
switch(nSkill){
case 0: return -1; break;
case 1: return 2; break;
case 2: return 2; break;
case 3: return 1; break;
case 4: return 1; break;
case 5: return 1; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 1; break;
case 9: return 2; break;
case 10: return 2; break;
case 11: return -1; break;//perform
case 12: return 1; break;
case 13: return 1; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 2; break;
case 17: return 2; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 1; break;
case 21: return 1; break;
case 22: return 1; break;
case 23: return 1; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 29://arcane archer
switch(nSkill){
case 0: return -1; break;
case 1: return 2; break;
case 2: return 2; break;
case 3: return 2; break;
case 4: return 1; break;
case 5: return 1; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 1; break;
case 9: return 2; break;
case 10: return 2; break;
case 11: return -1; break;//perform
case 12: return 2; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 2; break;
case 17: return 1; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 30://assassin
switch(nSkill){
case 0: return -1; break;
case 1: return 2; break;
case 2: return 1; break;
case 3: return 2; break;
case 4: return 1; break;
case 5: return 1; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 1; break;
case 9: return 1; break;
case 10: return 2; break;
case 11: return -1; break;//perform
case 12: return 2; break;
case 13: return 1; break;
case 14: return 1; break;
case 15: return 1; break;
case 16: return 2; break;
case 17: return 1; break;
case 18: return 2; break;
case 19: return 1; break;//UMD
case 20: return 1; break;
case 21: return 1; break;
case 22: return 1; break;
case 23: return 1; break;
case 24: return 1; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 31://blackguard
switch(nSkill){
case 0: return -1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 1; break;
case 4: return 1; break;
case 5: return 2; break;
case 6: return 2; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 1; break;
case 11: return -1; break;//perform
case 12: return 1; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 2; break;
case 17: return 2; break;
case 18: return 1; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 1; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 32://CoT
switch(nSkill){
case 0: return -1; break;
case 1: return 2; break;
case 2: return 2; break;
case 3: return 1; break;
case 4: return 1; break;
case 5: return 2; break;
case 6: return 2; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 1; break;
case 11: return -1; break;//perform
case 12: return 2; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 2; break;
case 17: return 1; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 33://weaponmaster
switch(nSkill){
case 0: return -1; break;
case 1: return 2; break;
case 2: return 2; break;
case 3: return 1; break;
case 4: return 1; break;
case 5: return 2; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 2; break;
case 11: return -1; break;//perform
case 12: return 2; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 2; break;
case 17: return 1; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 2; break;
case 23: return 2; break;
case 24: return 1; break;
case 25: return 2; break;
case 26: return 2; break;
default: return -1;
}
case 34://palemaster
switch(nSkill){
case 0: return -1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 2; break;
case 4: return 1; break;
case 5: return 1; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 1; break;
case 9: return 2; break;
case 10: return 2; break;
case 11: return -1; break;//perform
case 12: return 1; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 1; break;
case 17: return 2; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 35://shifter
switch(nSkill){
case 0: return 1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 2; break;
case 4: return 1; break;
case 5: return 1; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 2; break;
case 11: return -1; break;//perform
case 12: return 1; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 2; break;
case 17: return 1; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 36://dwarven defender
switch(nSkill){
case 0: return -1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 1; break;
case 4: return 1; break;
case 5: return 2; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 1; break;
case 11: return -1; break;//perform
case 12: return 2; break;
case 13: return 2; break;
case 14: return 2; break;
case 15: return 2; break;
case 16: return 2; break;
case 17: return 1; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
case 37://dragon disciple
switch(nSkill){
case 0: return -1; break;
case 1: return 1; break;
case 2: return 2; break;
case 3: return 1; break;
case 4: return 1; break;
case 5: return 2; break;
case 6: return 1; break;
case 7: return 1; break;
case 8: return 2; break;
case 9: return 2; break;
case 10: return 1; break;
case 11: return -1; break;//perform
case 12: return 1; break;
case 13: return 2; break;
case 14: return 1; break;
case 15: return 2; break;
case 16: return 1; break;
case 17: return 1; break;
case 18: return 2; break;
case 19: return -1; break;//UMD
case 20: return 2; break;
case 21: return 2; break;
case 22: return 1; break;
case 23: return 2; break;
case 24: return 2; break;
case 25: return 1; break;
case 26: return 1; break;
default: return -1;
}
default: return -2;
}
return -3;
}
int GetAreFeatStatReqsMet(int nFeat, object oPC)
{
int nStr = TRUE;
int nDex = TRUE;
int nCon = TRUE;
int nInt = TRUE;
int nWis = TRUE;
int nCha = TRUE;
if (nFeat < 495)
{
if (nFeat < 35)
{
switch(nFeat)
{
case 1: nDex = (GetLocalInt(oPC, "BASE_DEX") >=15); break;
case 6: nStr = (GetLocalInt(oPC, "BASE_STR") >=13); break;
case 8: nDex = (GetLocalInt(oPC, "BASE_DEX") >=13); break;
case 9: nInt = (GetLocalInt(oPC, "BASE_INT") >=13); break;
case 10: nDex = (GetLocalInt(oPC, "BASE_DEX") >=13); break;
case 16: nInt = (GetLocalInt(oPC, "BASE_INT") >=13); break;
case 17: nInt = (GetLocalInt(oPC, "BASE_INT") >=13); break;
case 18: nInt = (GetLocalInt(oPC, "BASE_INT") >=13); break;
case 19: nStr = (GetLocalInt(oPC, "BASE_STR") >=13); break;
case 26: nDex = (GetLocalInt(oPC, "BASE_DEX") >=13); break;
case 28: nStr = (GetLocalInt(oPC, "BASE_STR") >=13); break;
case 30: nDex = (GetLocalInt(oPC, "BASE_DEX") >=13); break;
}
}
else
{
switch(nFeat)
{
case 38: nDex = (GetLocalInt(oPC, "BASE_DEX") >=13); break;
case 39: nDex = (GetLocalInt(oPC, "BASE_DEX") >=13); nWis = (GetLocalInt(oPC, "BASE_WIS") >=13); break;
case 389: nInt = (GetLocalInt(oPC, "BASE_INT") >=13); break;
case 390: nInt = (GetLocalInt(oPC, "BASE_INT") >=13); break;
case 391: nStr = (GetLocalInt(oPC, "BASE_STR") >=13); break;
case 392: nDex = (GetLocalInt(oPC, "BASE_DEX") >=13); break;
case 409: nDex = (GetLocalInt(oPC, "BASE_DEX") >=15); break;
case 412: nWis = (GetLocalInt(oPC, "BASE_WIS") >=13); break;
case 413: nStr = (GetLocalInt(oPC, "BASE_STR") >=13); nCha = (GetLocalInt(oPC, "BASE_CHA") >=13); break;
case 414: nStr = (GetLocalInt(oPC, "BASE_STR") >=13); nCha = (GetLocalInt(oPC, "BASE_CHA") >=13); break;
case 491: nDex = (GetLocalInt(oPC, "BASE_DEX") >=25); break;
case 492: nCon = (GetLocalInt(oPC, "BASE_CON") >=21); break;
}
}
}
else if (nFeat < 532)
{
if (nFeat < 513)
{
switch(nFeat)
{
case 495: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 496: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 497: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 498: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 499: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 500: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 501: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 502: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 503: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 504: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 505: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 506: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 507: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 508: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 509: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 510: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 511: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 512: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
}
}
else
{
switch(nFeat)
{
case 513: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 514: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 515: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 516: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 517: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 518: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 519: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 520: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 521: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 522: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 523: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 524: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 525: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 526: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 527: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 528: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 529: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 530: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 531: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
}
}
}
else if (nFeat < 746)
{
if (nFeat < 727)
{
switch(nFeat)
{
case 697: nWis = (GetLocalInt(oPC, "BASE_WIS") >=21); break;
case 709: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 710: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 711: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 712: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 713: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 714: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 715: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 716: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 717: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 718: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 719: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 720: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 721: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 722: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 723: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 724: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 725: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 726: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
}
}
else
{
switch(nFeat)
{
case 727: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 728: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 729: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 730: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 731: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 732: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 733: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 734: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 735: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 736: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 737: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 738: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 739: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 740: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 741: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 742: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 743: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 744: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 745: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
}
}
}
else
{
if (nFeat < 840)
{
switch(nFeat)
{
case 747: nCon = (GetLocalInt(oPC, "BASE_CON") >=25); break;
case 748: nDex = (GetLocalInt(oPC, "BASE_DEX") >=30); break;
case 749: nDex = (GetLocalInt(oPC, "BASE_DEX") >=30); break;
case 750: nDex = (GetLocalInt(oPC, "BASE_DEX") >=30); break;
case 751: nDex = (GetLocalInt(oPC, "BASE_DEX") >=30); break;
case 752: nDex = (GetLocalInt(oPC, "BASE_DEX") >=30); break;
case 824: nCha = (GetLocalInt(oPC, "BASE_CHA") >=25); break;
case 825: nCha = (GetLocalInt(oPC, "BASE_CHA") >=25); break;
case 826: nCha = (GetLocalInt(oPC, "BASE_CHA") >=25); break;
case 827: nCha = (GetLocalInt(oPC, "BASE_CHA") >=25); break;
case 828: nCha = (GetLocalInt(oPC, "BASE_CHA") >=25); break;
case 829: nCha = (GetLocalInt(oPC, "BASE_CHA") >=25); break;
case 830: nCha = (GetLocalInt(oPC, "BASE_CHA") >=25); break;
case 831: nCha = (GetLocalInt(oPC, "BASE_CHA") >=25); break;
case 832: nCha = (GetLocalInt(oPC, "BASE_CHA") >=25); break;
case 833: nCha = (GetLocalInt(oPC, "BASE_CHA") >=25); break;
}
}
else
{
switch(nFeat)
{
case 844: nDex = (GetLocalInt(oPC, "BASE_DEX") >=19); nWis = (GetLocalInt(oPC, "BASE_WIS") >=19); break;
case 854: nWis = (GetLocalInt(oPC, "BASE_WIS") >=25); nCha = (GetLocalInt(oPC, "BASE_CHA") >=25); break;
case 856: nDex = (GetLocalInt(oPC, "BASE_DEX") >=25); break;
case 867: nDex = (GetLocalInt(oPC, "BASE_DEX") >=13); nInt = (GetLocalInt(oPC, "BASE_INT") >=13); break;
case 868: nDex = (GetLocalInt(oPC, "BASE_DEX") >=23); break;
case 869: nStr = (GetLocalInt(oPC, "BASE_STR") >=21); nCon = (GetLocalInt(oPC, "BASE_CON") >=21); break;
case 873: nWis = (GetLocalInt(oPC, "BASE_WIS") >=30); break;
case 955: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 958: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 988: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 996: nStr = (GetLocalInt(oPC, "BASE_STR") >=25); break;
case 999: nStr = (GetLocalInt(oPC, "BASE_STR") >=23); break;
case 1060: nWis = (GetLocalInt(oPC, "BASE_WIS") >=25); break;
case 1061: nWis = (GetLocalInt(oPC, "BASE_WIS") >=27); break;
}
}
}
return (nStr && nDex && nCon && nInt && nWis && nCha);
}
int GetAreFeatSkillReqsMet(int nFeat, object oPC)
{
int nReturn = TRUE;
if (nFeat < 200)
{
if (nFeat < 180)
{
switch(nFeat)
{
case 34: nReturn = (GetCostOfSkill(GetControlClass(oPC), 0) > 0); break;
case 173: nReturn = (GetCostOfSkill(GetControlClass(oPC), 1) > 0); break;
case 174: nReturn = (GetCostOfSkill(GetControlClass(oPC), 2) > 0); break;
case 175: nReturn = (GetCostOfSkill(GetControlClass(oPC), 3) > 0); break;
case 177: nReturn = (GetCostOfSkill(GetControlClass(oPC), 4) > 0); break;
case 178: nReturn = (GetCostOfSkill(GetControlClass(oPC), 5) > 0); break;
case 179: nReturn = (GetCostOfSkill(GetControlClass(oPC), 6) > 0); break;
}
}
else
{
switch(nFeat)
{
case 180: nReturn = (GetCostOfSkill(GetControlClass(oPC), 7) > 0); break;
case 181: nReturn = (GetCostOfSkill(GetControlClass(oPC), 8) > 0); break;
case 182: nReturn = (GetCostOfSkill(GetControlClass(oPC), 9) > 0); break;
case 183: nReturn = (GetCostOfSkill(GetControlClass(oPC), 10) > 0); break;
case 184: nReturn = (GetCostOfSkill(GetControlClass(oPC), 11) > 0); break;
case 185: nReturn = (GetCostOfSkill(GetControlClass(oPC), 12) > 0); break;
case 186: nReturn = (GetCostOfSkill(GetControlClass(oPC), 13) > 0); break;
case 187: nReturn = (GetCostOfSkill(GetControlClass(oPC), 14) > 0); break;
case 188: nReturn = (GetCostOfSkill(GetControlClass(oPC), 15) > 0); break;
case 189: nReturn = (GetCostOfSkill(GetControlClass(oPC), 16) > 0); break;
case 190: nReturn = (GetCostOfSkill(GetControlClass(oPC), 17) > 0); break;
case 192: nReturn = (GetCostOfSkill(GetControlClass(oPC), 18) > 0); break;
case 193: nReturn = (GetCostOfSkill(GetControlClass(oPC), 19) > 0); break;
}
}
}
else if (nFeat < 600)
{
if (nFeat < 590)
{
switch(nFeat)
{
case 378: nReturn = (GetCostOfSkill(GetControlClass(oPC), 11) > 0); break;
case 404: nReturn = (GetCostOfSkill(GetControlClass(oPC), 20) > 0); break;
case 406: nReturn = (GetCostOfSkill(GetControlClass(oPC), 21) > 0); break;
case 407: nReturn = (GetCostOfSkill(GetControlClass(oPC), 22) > 0); break;
case 423: nReturn = (GetCostOfSkill(GetControlClass(oPC), 11) > 0); break;
case 424: nReturn = (GetCostOfSkill(GetControlClass(oPC), 11) > 0); break;
case 587: nReturn = (GetLocalInt(oPC, "BASE_ANIMAL") > 19); break;
case 588: nReturn = (GetLocalInt(oPC, "BASE_APPRAI") > 19); break;
case 589: nReturn = (GetLocalInt(oPC, "BASE_CONCEN") > 19); break;
}
}
else
{
switch(nFeat)
{
case 590: nReturn = (GetLocalInt(oPC, "BASE_CRAFT_T") > 19); break;
case 591: nReturn = (GetLocalInt(oPC, "BASE_DISABL") > 19); break;
case 592: nReturn = (GetLocalInt(oPC, "BASE_DISCIP") > 19); break;
case 593: nReturn = (GetLocalInt(oPC, "BASE_HEAL") > 19); break;
case 594: nReturn = (GetLocalInt(oPC, "BASE_HIDE") > 19); break;
case 595: nReturn = (GetLocalInt(oPC, "BASE_LISTEN") > 19); break;
case 596: nReturn = (GetLocalInt(oPC, "BASE_LORE") > 19); break;
case 597: nReturn = (GetLocalInt(oPC, "BASE_MOVE_S") > 19); break;
case 598: nReturn = (GetLocalInt(oPC, "BASE_OPEN_L") > 19); break;
case 599: nReturn = (GetLocalInt(oPC, "BASE_PARRY") > 19); break;
}
}
}
else if (nFeat < 860)
{
if (nFeat < 610)
{
switch(nFeat)
{
case 600: nReturn = (GetLocalInt(oPC, "BASE_PERFOR") > 19); break;
case 601: nReturn = (GetLocalInt(oPC, "BASE_PERSUA") > 19); break;
case 602: nReturn = (GetLocalInt(oPC, "BASE_PICK_P") > 19); break;
case 603: nReturn = (GetLocalInt(oPC, "BASE_SEARCH") > 19); break;
case 604: nReturn = (GetLocalInt(oPC, "BASE_SET_TR") > 19); break;
case 605: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 19); break;
case 606: nReturn = (GetLocalInt(oPC, "BASE_SPOT") > 19); break;
case 607: nReturn = (GetLocalInt(oPC, "BASE_TAUNT") > 19); break;
case 608: nReturn = (GetLocalInt(oPC, "BASE_TUMBLE") > 19); break;
case 609: nReturn = (GetLocalInt(oPC, "BASE_USE_MA") > 19); break;
}
}
else
{
switch(nFeat)
{
case 696: nReturn = (GetLocalInt(oPC, "BASE_CONCEN") > 24); break;
case 748: nReturn = (GetLocalInt(oPC, "BASE_HIDE") > 29 && GetLocalInt(oPC, "BASE_TUMBLE") > 29);break;
case 749: nReturn = (GetLocalInt(oPC, "BASE_HIDE") > 29 && GetLocalInt(oPC, "BASE_TUMBLE") > 29);break;
case 750: nReturn = (GetLocalInt(oPC, "BASE_HIDE") > 29 && GetLocalInt(oPC, "BASE_TUMBLE") > 29);break;
case 751: nReturn = (GetLocalInt(oPC, "BASE_HIDE") > 29 && GetLocalInt(oPC, "BASE_TUMBLE") > 29);break;
case 752: nReturn = (GetLocalInt(oPC, "BASE_HIDE") > 29 && GetLocalInt(oPC, "BASE_TUMBLE") > 29);break;
case 856: nReturn = (GetLocalInt(oPC, "BASE_TUMBLE") > 29); break;
case 857: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 29); break;
case 858: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 29); break;
case 859: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 29); break;
}
}
}
else
{
if (nFeat < 900)
{
switch(nFeat)
{
case 860: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 23); break;
case 861: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 23); break;
case 862: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 23); break;
case 863: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 26); break;
case 864: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 26); break;
case 865: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 26); break;
case 870: nReturn = (GetLocalInt(oPC, "BASE_PERFOR") > 24); break;
case 874: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 14); break;
case 875: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 21); break;
case 876: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 31); break;
case 877: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 25); break;
case 878: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 24); break;
}
}
else
{
switch(nFeat)
{
case 911: nReturn = (GetCostOfSkill(GetControlClass(oPC), 25) > 0); break;
case 912: nReturn = (GetCostOfSkill(GetControlClass(oPC), 26) > 0); break;
case 913: nReturn = (GetLocalInt(oPC, "BASE_CRAFT_A") > 19); break;
case 914: nReturn = (GetLocalInt(oPC, "BASE_CRAFT_W") > 19); break;
case 915: nReturn = (GetCostOfSkill(GetControlClass(oPC), 23) > 0); break;
case 916: nReturn = (GetCostOfSkill(GetControlClass(oPC), 24) > 0); break;
case 917: nReturn = (GetLocalInt(oPC, "BASE_BLUFF") > 19); break;
case 918: nReturn = (GetLocalInt(oPC, "BASE_INTIMI") > 19); break;
case 989: nReturn = (GetLocalInt(oPC, "BASE_INTIMI") > 24); break;
case 990: nReturn = (GetLocalInt(oPC, "BASE_SPELLC") > 33); break;
}
}
}
return nReturn;
}
int GetAreFeatFeatReqsMet(int nFeat, object oPC)
{
int nPRF1 = 1, nPRF2 = 1, nORF1 = 1, nORF2 = 0, nORF3 = 0, nORF4 = 0, nORF5 = 0;//these match columns from the 2da
if (nFeat < 250)//nORF1 defaults to true so that feats without "Or Feat" Requirements will return for them
{ //Likewise nPRF1 & 2 default to true for feats that have no prerequisite feats
if (nFeat < 50)
{
if (nFeat < 10)
{
switch (nFeat)
{
case 2: nPRF1 = GetHasFeat(3, oPC); nPRF2 = GetHasFeat(4, oPC); break;
case 4: nPRF1 = GetHasFeat(3, oPC); break;
case 6: nPRF1 = GetHasFeat(28, oPC); break;
case 8: nPRF1 = GetHasFeat(21, oPC); break;
}
}
else if (nFeat < 20)
{
switch (nFeat)
{
case 13: nPRF1 = GetHasFeat(294, oPC); break;
case 15: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); nORF3 = GetHasFeat(49, oPC); nORF4 = GetHasFeat(50, oPC); nORF5 = GetHasFeat(51, oPC); break;
case 16: nPRF1 = GetHasFeat(9, oPC); break;
case 17: nPRF1 = GetHasFeat(23, oPC); break;
case 19: nPRF1 = GetHasFeat(28, oPC); break;
}
}
else if (nFeat < 30)
{
switch (nFeat)
{
case 20: nPRF1 = GetHasFeat(41, oPC); nPRF2 = GetHasFeat(1, oPC); break;
case 26: nPRF1 = GetHasFeat(10, oPC); break;
}
}
else if (nFeat < 40)
{
switch (nFeat)
{
case 30: nPRF1 = GetHasFeat(27, oPC); break;
case 31: nPRF1 = GetHasFeat(5, oPC); break;
case 38: nPRF1 = GetHasFeat(31, oPC); break;
case 39: nPRF1 = GetHasFeat(21, oPC); break;
}
}
else //<50
{
switch (nFeat)
{
case 43: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); nORF3 = GetHasFeat(49, oPC); nORF4 = GetHasFeat(50, oPC); nORF5 = GetHasFeat(51, oPC); break;
case 47: nPRF1 = GetHasFeat(43, oPC); break;
}
}
}
else if (nFeat < 100)
{
if (nFeat < 60)
{
switch (nFeat)
{
case 52: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); nORF3 = GetHasFeat(49, oPC); nORF4 = GetHasFeat(50, oPC); nORF5 = GetHasFeat(51, oPC); break;
case 53: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); nORF3 = GetHasFeat(50, oPC); nORF4 = GetHasFeat(51, oPC); break;
case 54: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(49, oPC); nORF3 = GetHasFeat(50, oPC); nORF4 = GetHasFeat(51, oPC); break;
case 55: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(49, oPC); nORF3 = GetHasFeat(50, oPC); nORF4 = GetHasFeat(51, oPC); break;
case 56: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(50, oPC); break;
case 57: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(50, oPC); break;
case 58: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); nORF3 = GetHasFeat(49, oPC); nORF4 = GetHasFeat(50, oPC); nORF5 = GetHasFeat(51, oPC); break;
case 59: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); break;
}
}
else if (nFeat < 70)
{
switch (nFeat)
{
case 60: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); break;
case 61: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); nORF3 = GetHasFeat(49, oPC); nORF4 = GetHasFeat(50, oPC); break;
case 63: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(256, oPC); break;
case 64: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(50, oPC); nORF3 = GetHasFeat(256, oPC); break;
case 65: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(50, oPC); break;
case 66: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(50, oPC); nORF3 = GetHasFeat(256, oPC); break;
case 67: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(48, oPC); break;
case 68: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(256, oPC); break;
case 69: nPRF1 = GetHasFeat(45, oPC); break;
}
}
else if (nFeat < 80)
{
switch (nFeat)
{
case 70: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(49, oPC); nORF3 = GetHasFeat(50, oPC); break;
case 71: nPRF1 = GetHasFeat(45, oPC); break;
case 72: nPRF1 = GetHasFeat(45, oPC); break;
case 73: nPRF1 = GetHasFeat(45, oPC); break;
case 74: nPRF1 = GetHasFeat(45, oPC); break;
case 75: nPRF1 = GetHasFeat(45, oPC); break;
case 76: nPRF1 = GetHasFeat(45, oPC); break;
case 77: nPRF1 = GetHasFeat(45, oPC); break;
case 78: nPRF1 = GetHasFeat(45, oPC); break;
case 79: nORF1 = GetHasFeat(44, oPC); nORF2 = GetHasFeat(49, oPC); break;
}
}
else if (nFeat < 90)
{
switch (nFeat)
{
case 80: nPRF1 = GetHasFeat(44, oPC); break;
case 81: nPRF1 = GetHasFeat(44, oPC); break;
case 82: nORF1 = GetHasFeat(44, oPC); nORF2 = GetHasFeat(49, oPC); break;
case 83: nPRF1 = GetHasFeat(44, oPC); break;
case 84: nPRF1 = GetHasFeat(44, oPC); break;
case 85: nORF1 = GetHasFeat(44, oPC); break;
case 86: nPRF1 = GetHasFeat(44, oPC); break;
case 87: nPRF1 = GetHasFeat(44, oPC); break;
case 88: nPRF1 = GetHasFeat(44, oPC); break;
case 89: nPRF1 = GetHasFeat(44, oPC); break;
}
}
else //<100
{
switch (nFeat)
{
case 90: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); nORF3 = GetHasFeat(49, oPC); nORF4 = GetHasFeat(50, oPC); nORF5 = GetHasFeat(51, oPC); break;
case 91: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); nORF3 = GetHasFeat(50, oPC); nORF4 = GetHasFeat(50, oPC); nORF5 = GetHasFeat(51, oPC); break;
case 92: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(49, oPC); nORF3 = GetHasFeat(50, oPC); nORF4 = GetHasFeat(51, oPC); break;
case 93: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(49, oPC); nORF3 = GetHasFeat(50, oPC); nORF4 = GetHasFeat(51, oPC); break;
case 94: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(50, oPC); break;
case 95: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(50, oPC); break;
case 96: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); nORF3 = GetHasFeat(49, oPC); nORF4 = GetHasFeat(50, oPC); nORF5 = GetHasFeat(51, oPC); break;
case 97: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); break;
case 98: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); break;
case 99: nORF1 = GetHasFeat(46, oPC); nORF2 = GetHasFeat(48, oPC); nORF3 = GetHasFeat(49, oPC); nORF4 = GetHasFeat(50, oPC); break;
}
}
}
else if (nFeat < 150)
{
if (nFeat < 110)
{
switch (nFeat)
{
case 101: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(256, oPC); break;
case 102: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(50, oPC); nORF3 = GetHasFeat(256, oPC); break;
case 103: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(50, oPC); break;
case 104: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(50, oPC); nORF3 = GetHasFeat(256, oPC); break;
case 105: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(48, oPC); break;
case 106: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(256, oPC); break;
case 107: nPRF1 = GetHasFeat(45, oPC); break;
case 108: nORF1 = GetHasFeat(45, oPC); nORF2 = GetHasFeat(49, oPC); nORF3 = GetHasFeat(50, oPC); break;
case 109: nPRF1 = GetHasFeat(45, oPC); break;
}
}
else if (nFeat < 120)
{
switch (nFeat)
{
case 110: nPRF1 = GetHasFeat(45, oPC); break;
case 111: nPRF1 = GetHasFeat(45, oPC); break;
case 112: nPRF1 = GetHasFeat(45, oPC); break;
case 113: nPRF1 = GetHasFeat(45, oPC); break;
case 114: nPRF1 = GetHasFeat(45, oPC); break;
case 115: nPRF1 = GetHasFeat(45, oPC); break;
case 116: nPRF1 = GetHasFeat(45, oPC); break;
case 117: nORF1 = GetHasFeat(44, oPC); nORF2 = GetHasFeat(49, oPC); break;
case 118: nPRF1 = GetHasFeat(44, oPC); break;
case 119: nPRF1 = GetHasFeat(44, oPC); break;
}
}
else if (nFeat < 130)
{
switch (nFeat)
{
case 120: nORF1 = GetHasFeat(44, oPC); nORF2 = GetHasFeat(49, oPC); break;
case 121: nPRF1 = GetHasFeat(44, oPC); break;
case 122: nPRF1 = GetHasFeat(44, oPC); break;
case 123: nPRF1 = GetHasFeat(44, oPC); break;
case 124: nPRF1 = GetHasFeat(44, oPC); break;
case 125: nPRF1 = GetHasFeat(44, oPC); break;
case 126: nPRF1 = GetHasFeat(44, oPC); break;
case 127: nPRF1 = GetHasFeat(44, oPC); break;
case 128: nPRF1 = GetHasFeat(90, oPC); break;
case 129: nPRF1 = GetHasFeat(91, oPC); break;
}
}
else if (nFeat < 140)
{
switch (nFeat)
{
case 130: nPRF1 = GetHasFeat(92, oPC); break;
case 131: nPRF1 = GetHasFeat(93, oPC); break;
case 132: nPRF1 = GetHasFeat(94, oPC); break;
case 133: nPRF1 = GetHasFeat(95, oPC); break;
case 134: nPRF1 = GetHasFeat(96, oPC); break;
case 135: nPRF1 = GetHasFeat(97, oPC); break;
case 136: nPRF1 = GetHasFeat(98, oPC); break;
case 137: nPRF1 = GetHasFeat(99, oPC); break;
case 138: nPRF1 = GetHasFeat(100, oPC); break;
case 139: nPRF1 = GetHasFeat(101, oPC); break;
}
}
else //<150
{
switch (nFeat)
{
case 140: nPRF1 = GetHasFeat(102, oPC); break;
case 141: nPRF1 = GetHasFeat(103, oPC); break;
case 142: nPRF1 = GetHasFeat(104, oPC); break;
case 143: nPRF1 = GetHasFeat(105, oPC); break;
case 144: nPRF1 = GetHasFeat(106, oPC); break;
case 145: nPRF1 = GetHasFeat(107, oPC); break;
case 146: nPRF1 = GetHasFeat(108, oPC); break;
case 147: nPRF1 = GetHasFeat(109, oPC); break;
case 148: nPRF1 = GetHasFeat(110, oPC); break;
case 149: nPRF1 = GetHasFeat(111, oPC); break;
}
}
}
else
{
if (nFeat < 160)
{
switch (nFeat)
{
case 150: nPRF1 = GetHasFeat(112, oPC); break;
case 151: nPRF1 = GetHasFeat(113, oPC); break;
case 152: nPRF1 = GetHasFeat(114, oPC); break;
case 153: nPRF1 = GetHasFeat(115, oPC); break;
case 154: nPRF1 = GetHasFeat(116, oPC); break;
case 155: nPRF1 = GetHasFeat(117, oPC); break;
case 156: nPRF1 = GetHasFeat(118, oPC); break;
case 157: nPRF1 = GetHasFeat(119, oPC); break;
case 158: nPRF1 = GetHasFeat(120, oPC); break;
case 159: nPRF1 = GetHasFeat(121, oPC); break;
}
}
else
{
switch (nFeat)
{
case 160: nPRF1 = GetHasFeat(122, oPC); break;
case 161: nPRF1 = GetHasFeat(123, oPC); break;
case 162: nPRF1 = GetHasFeat(124, oPC); break;
case 163: nPRF1 = GetHasFeat(125, oPC); break;
case 164: nPRF1 = GetHasFeat(126, oPC); break;
case 165: nPRF1 = GetHasFeat(127, oPC); break;
}
}
}
}
else if (nFeat < 500)
{
if (nFeat < 400)
{
switch (nFeat)
{
case 390: nPRF1 = GetHasFeat(389, oPC); break;
case 391: nPRF1 = GetHasFeat(28, oPC); nPRF2 = GetHasFeat(6, oPC); break;
case 392: nPRF1 = GetHasFeat(26, oPC); nPRF2 = GetHasFeat(10, oPC); break;
case 393: nPRF1 = GetHasFeat(35, oPC); break;
case 394: nPRF1 = GetHasFeat(166, oPC); break;
case 395: nPRF1 = GetHasFeat(167, oPC); break;
case 396: nPRF1 = GetHasFeat(168, oPC); break;
case 397: nPRF1 = GetHasFeat(169, oPC); break;
case 398: nPRF1 = GetHasFeat(170, oPC); break;
case 399: nPRF1 = GetHasFeat(171, oPC); break;
}
}
else if (nFeat < 450)
{
if (nFeat < 410)
{
switch (nFeat)
{
case 400: nPRF1 = GetHasFeat(172, oPC); break;
case 401: nPRF1 = GetHasFeat(36, oPC); break;
case 409: nPRF1 = GetHasFeat(21, oPC); break;
}
}
else if (nFeat < 420)
{
switch (nFeat)
{
case 410: nPRF1 = GetHasFeat(39, oPC); break;
case 413: nPRF1 = GetHasFeat(28, oPC); nPRF2 = GetHasFeat(294, oPC); break;
case 414: nPRF1 = GetHasFeat(28, oPC); nPRF2 = GetHasFeat(294, oPC); break;
case 415: nPRF1 = GetHasFeat(35, oPC); break;
case 416: nPRF1 = GetHasFeat(166, oPC); break;
case 417: nPRF1 = GetHasFeat(167, oPC); break;
case 418: nPRF1 = GetHasFeat(168, oPC); break;
case 419: nPRF1 = GetHasFeat(169, oPC); break;
}
}
else if (nFeat < 430)
{
switch (nFeat)
{
case 420: nPRF1 = GetHasFeat(170, oPC); break;
case 421: nPRF1 = GetHasFeat(171, oPC); break;
case 422: nPRF1 = GetHasFeat(172, oPC); break;
}
}
else //<450
{
switch (nFeat)
{
case 446: nPRF1 = GetHasFeat(445, oPC); break;
case 447: nPRF1 = GetHasFeat(446, oPC); break;
case 448: nPRF1 = GetHasFeat(447, oPC); break;
case 449: nPRF1 = GetHasFeat(448, oPC); break;
}
}
}
else //<500
{
if (nFeat < 460)
{
switch (nFeat)
{
case 452: nPRF1 = GetHasFeat(451, oPC); break;
case 456: nPRF1 = GetHasFeat(455, oPC); break;
case 457: nPRF1 = GetHasFeat(456, oPC); break;
case 458: nPRF1 = GetHasFeat(457, oPC); break;
case 459: nPRF1 = GetHasFeat(458, oPC); break;
}
}
else if (nFeat < 470)
{
switch (nFeat)
{
case 461: nPRF1 = GetHasFeat(460, oPC); break;
case 462: nPRF1 = GetHasFeat(461, oPC); break;
case 464: nPRF1 = GetHasFeat(463, oPC); break;
case 465: nPRF1 = GetHasFeat(464, oPC); break;
case 466: nPRF1 = GetHasFeat(465, oPC); break;
case 467: nPRF1 = GetHasFeat(466, oPC); break;
}
}
else //<500
{
switch (nFeat)
{
case 493: nPRF1 = GetHasFeat(492, oPC); break;
case 494: nPRF1 = GetHasFeat(493, oPC); break;
case 495: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(709, oPC); break;
case 496: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(710, oPC); break;
case 497: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(711, oPC); break;
case 498: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(712, oPC); break;
case 499: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(713, oPC); break;
}
}
}
}
else if (nFeat < 750)
{
if (nFeat < 550)
{
if (nFeat < 510)
{
switch (nFeat)
{
case 500: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(714, oPC); break;
case 501: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(715, oPC); break;
case 502: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(716, oPC); break;
case 503: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(717, oPC); break;
case 504: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(718, oPC); break;
case 505: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(719, oPC); break;
case 506: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(720, oPC); break;
case 507: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(721, oPC); break;
case 508: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(722, oPC); break;
case 509: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(723, oPC); break;
}
}
else if (nFeat < 520)
{
switch (nFeat)
{
case 510: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(724, oPC); break;
case 511: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(725, oPC); break;
case 512: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(726, oPC); break;
case 513: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(727, oPC); break;
case 514: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(728, oPC); break;
case 515: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(729, oPC); break;
case 516: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(730, oPC); break;
case 517: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(731, oPC); break;
case 518: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(732, oPC); break;
case 519: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(733, oPC); break;
}
}
else if (nFeat < 530)
{
switch (nFeat)
{
case 520: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(734, oPC); break;
case 521: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(735, oPC); break;
case 522: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(736, oPC); break;
case 523: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(737, oPC); break;
case 524: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(738, oPC); break;
case 525: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(739, oPC); break;
case 526: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(740, oPC); break;
case 527: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(741, oPC); break;
case 528: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(742, oPC); break;
case 529: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(743, oPC); break;
}
}
else if (nFeat < 540)
{
switch (nFeat)
{
case 530: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(744, oPC); break;
case 531: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(745, oPC); break;
case 534: nPRF1 = GetHasFeat(533, oPC); break;
case 535: nPRF1 = GetHasFeat(534, oPC); break;
case 536: nPRF1 = GetHasFeat(535, oPC); break;
case 537: nPRF1 = GetHasFeat(536, oPC); break;
case 538: nPRF1 = GetHasFeat(537, oPC); break;
case 539: nPRF1 = GetHasFeat(538, oPC); break;
}
}
else //<550
{
switch (nFeat)
{
case 540: nPRF1 = GetHasFeat(539, oPC); break;
case 541: nPRF1 = GetHasFeat(540, oPC); break;
case 542: nPRF1 = GetHasFeat(541, oPC); break;
case 544: nPRF1 = GetHasFeat(543, oPC); break;
case 545: nPRF1 = GetHasFeat(544, oPC); break;
case 546: nPRF1 = GetHasFeat(545, oPC); break;
case 547: nPRF1 = GetHasFeat(546, oPC); break;
case 548: nPRF1 = GetHasFeat(547, oPC); break;
case 549: nPRF1 = GetHasFeat(548, oPC); break;
}
}
}
else if (nFeat < 600)
{
if (nFeat < 560)
{
switch (nFeat)
{
case 550: nPRF1 = GetHasFeat(549, oPC); break;
case 551: nPRF1 = GetHasFeat(550, oPC); break;
case 552: nPRF1 = GetHasFeat(551, oPC); break;
case 554: nPRF1 = GetHasFeat(553, oPC); break;
case 555: nPRF1 = GetHasFeat(554, oPC); break;
case 556: nPRF1 = GetHasFeat(555, oPC); break;
case 557: nPRF1 = GetHasFeat(556, oPC); break;
case 558: nPRF1 = GetHasFeat(557, oPC); break;
case 559: nPRF1 = GetHasFeat(558, oPC); break;
}
}
else if (nFeat < 570)
{
switch (nFeat)
{
case 560: nPRF1 = GetHasFeat(559, oPC); break;
case 561: nPRF1 = GetHasFeat(560, oPC); break;
case 562: nPRF1 = GetHasFeat(561, oPC); break;
case 564: nPRF1 = GetHasFeat(563, oPC); break;
case 565: nPRF1 = GetHasFeat(564, oPC); break;
case 566: nPRF1 = GetHasFeat(565, oPC); break;
case 567: nPRF1 = GetHasFeat(566, oPC); break;
case 568: nPRF1 = GetHasFeat(567, oPC); break;
case 569: nPRF1 = GetHasFeat(568, oPC); break;
}
}
else if (nFeat < 580)
{
switch (nFeat)
{
case 570: nPRF1 = GetHasFeat(569, oPC); break;
case 571: nPRF1 = GetHasFeat(570, oPC); break;
case 572: nPRF1 = GetHasFeat(571, oPC); break;
case 574: nPRF1 = GetHasFeat(573, oPC); break;
case 575: nPRF1 = GetHasFeat(574, oPC); break;
case 576: nPRF1 = GetHasFeat(575, oPC); break;
case 577: nPRF1 = GetHasFeat(576, oPC); break;
case 578: nPRF1 = GetHasFeat(577, oPC); break;
case 579: nPRF1 = GetHasFeat(578, oPC); break;
}
}
else
{
switch (nFeat)
{
case 580: nPRF1 = GetHasFeat(579, oPC); break;
case 581: nPRF1 = GetHasFeat(580, oPC); break;
case 582: nPRF1 = GetHasFeat(581, oPC); break;
}
}
}
else if (nFeat < 650)
{
if (nFeat < 620)
{
switch (nFeat)
{
case 610: nPRF1 = GetHasFeat(393, oPC); break;
case 611: nPRF1 = GetHasFeat(394, oPC); break;
case 612: nPRF1 = GetHasFeat(395, oPC); break;
case 613: nPRF1 = GetHasFeat(396, oPC); break;
case 614: nPRF1 = GetHasFeat(397, oPC); break;
case 615: nPRF1 = GetHasFeat(398, oPC); break;
case 616: nPRF1 = GetHasFeat(399, oPC); break;
case 617: nPRF1 = GetHasFeat(400, oPC); break;
case 618: nPRF1 = GetHasFeat(401, oPC); break;
case 619: nPRF1 = GetHasFeat(15, oPC); break;
}
}
else if (nFeat < 630)
{
switch (nFeat)
{
case 620: nPRF1 = GetHasFeat(90, oPC); break;
case 621: nPRF1 = GetHasFeat(91, oPC); break;
case 622: nPRF1 = GetHasFeat(92, oPC); break;
case 623: nPRF1 = GetHasFeat(93, oPC); break;
case 624: nPRF1 = GetHasFeat(94, oPC); break;
case 625: nPRF1 = GetHasFeat(95, oPC); break;
case 626: nPRF1 = GetHasFeat(96, oPC); break;
case 627: nPRF1 = GetHasFeat(97, oPC); break;
case 628: nPRF1 = GetHasFeat(98, oPC); break;
case 629: nPRF1 = GetHasFeat(99, oPC); break;
}
}
else if (nFeat < 640)
{
switch (nFeat)
{
case 630: nPRF1 = GetHasFeat(100, oPC); break;
case 631: nPRF1 = GetHasFeat(101, oPC); break;
case 632: nPRF1 = GetHasFeat(102, oPC); break;
case 633: nPRF1 = GetHasFeat(103, oPC); break;
case 634: nPRF1 = GetHasFeat(104, oPC); break;
case 635: nPRF1 = GetHasFeat(105, oPC); break;
case 636: nPRF1 = GetHasFeat(106, oPC); break;
case 637: nPRF1 = GetHasFeat(107, oPC); break;
case 638: nPRF1 = GetHasFeat(108, oPC); break;
case 639: nPRF1 = GetHasFeat(109, oPC); break;
}
}
else //<650
{
switch (nFeat)
{
case 640: nPRF1 = GetHasFeat(110, oPC); break;
case 641: nPRF1 = GetHasFeat(111, oPC); break;
case 642: nPRF1 = GetHasFeat(112, oPC); break;
case 643: nPRF1 = GetHasFeat(113, oPC); break;
case 644: nPRF1 = GetHasFeat(114, oPC); break;
case 645: nPRF1 = GetHasFeat(115, oPC); break;
case 646: nPRF1 = GetHasFeat(116, oPC); break;
case 647: nPRF1 = GetHasFeat(117, oPC); break;
case 648: nPRF1 = GetHasFeat(118, oPC); break;
case 649: nPRF1 = GetHasFeat(120, oPC); break;
}
}
}
else if (nFeat < 700)
{
if (nFeat < 660)
{
switch (nFeat)
{
case 650: nPRF1 = GetHasFeat(121, oPC); break;
case 651: nPRF1 = GetHasFeat(122, oPC); break;
case 652: nPRF1 = GetHasFeat(123, oPC); break;
case 653: nPRF1 = GetHasFeat(125, oPC); break;
case 654: nPRF1 = GetHasFeat(126, oPC); break;
case 655: nPRF1 = GetHasFeat(127, oPC); break;
case 657: nPRF1 = GetHasFeat(47, oPC); nPRF2 = GetHasFeat(619, oPC); break;
case 658: nPRF1 = GetHasFeat(128, oPC); nPRF2 = GetHasFeat(620, oPC); break;
case 659: nPRF1 = GetHasFeat(129, oPC); nPRF2 = GetHasFeat(621, oPC); break;
}
}
else if (nFeat < 670)
{
switch (nFeat)
{
case 660: nPRF1 = GetHasFeat(130, oPC); nPRF2 = GetHasFeat(622, oPC); break;
case 661: nPRF1 = GetHasFeat(131, oPC); nPRF2 = GetHasFeat(623, oPC); break;
case 662: nPRF1 = GetHasFeat(132, oPC); nPRF2 = GetHasFeat(624, oPC); break;
case 663: nPRF1 = GetHasFeat(133, oPC); nPRF2 = GetHasFeat(625, oPC); break;
case 664: nPRF1 = GetHasFeat(134, oPC); nPRF2 = GetHasFeat(626, oPC); break;
case 665: nPRF1 = GetHasFeat(135, oPC); nPRF2 = GetHasFeat(627, oPC); break;
case 666: nPRF1 = GetHasFeat(136, oPC); nPRF2 = GetHasFeat(628, oPC); break;
case 667: nPRF1 = GetHasFeat(137, oPC); nPRF2 = GetHasFeat(629, oPC); break;
case 668: nPRF1 = GetHasFeat(138, oPC); nPRF2 = GetHasFeat(630, oPC); break;
case 669: nPRF1 = GetHasFeat(139, oPC); nPRF2 = GetHasFeat(631, oPC); break;
}
}
else if (nFeat < 680)
{
switch (nFeat)
{
case 670: nPRF1 = GetHasFeat(140, oPC); nPRF2 = GetHasFeat(632, oPC); break;
case 671: nPRF1 = GetHasFeat(141, oPC); nPRF2 = GetHasFeat(633, oPC); break;
case 672: nPRF1 = GetHasFeat(142, oPC); nPRF2 = GetHasFeat(634, oPC); break;
case 673: nPRF1 = GetHasFeat(143, oPC); nPRF2 = GetHasFeat(635, oPC); break;
case 674: nPRF1 = GetHasFeat(144, oPC); nPRF2 = GetHasFeat(636, oPC); break;
case 675: nPRF1 = GetHasFeat(145, oPC); nPRF2 = GetHasFeat(637, oPC); break;
case 676: nPRF1 = GetHasFeat(146, oPC); nPRF2 = GetHasFeat(638, oPC); break;
case 677: nPRF1 = GetHasFeat(147, oPC); nPRF2 = GetHasFeat(639, oPC); break;
case 678: nPRF1 = GetHasFeat(148, oPC); nPRF2 = GetHasFeat(640, oPC); break;
case 679: nPRF1 = GetHasFeat(149, oPC); nPRF2 = GetHasFeat(641, oPC); break;
}
}
else if (nFeat < 690)
{
switch (nFeat)
{
case 680: nPRF1 = GetHasFeat(150, oPC); nPRF2 = GetHasFeat(642, oPC); break;
case 681: nPRF1 = GetHasFeat(151, oPC); nPRF2 = GetHasFeat(643, oPC); break;
case 682: nPRF1 = GetHasFeat(152, oPC); nPRF2 = GetHasFeat(644, oPC); break;
case 683: nPRF1 = GetHasFeat(153, oPC); nPRF2 = GetHasFeat(645, oPC); break;
case 684: nPRF1 = GetHasFeat(154, oPC); nPRF2 = GetHasFeat(646, oPC); break;
case 685: nPRF1 = GetHasFeat(155, oPC); nPRF2 = GetHasFeat(647, oPC); break;
case 686: nPRF1 = GetHasFeat(156, oPC); nPRF2 = GetHasFeat(648, oPC); break;
case 687: nPRF1 = GetHasFeat(158, oPC); nPRF2 = GetHasFeat(649, oPC); break;
case 688: nPRF1 = GetHasFeat(159, oPC); nPRF2 = GetHasFeat(650, oPC); break;
case 689: nPRF1 = GetHasFeat(160, oPC); nPRF2 = GetHasFeat(651, oPC); break;
}
}
else //<700
{
switch (nFeat)
{
case 690: nPRF1 = GetHasFeat(161, oPC); nPRF2 = GetHasFeat(652, oPC); break;
case 691: nPRF1 = GetHasFeat(163, oPC); nPRF2 = GetHasFeat(653, oPC); break;
case 692: nPRF1 = GetHasFeat(164, oPC); nPRF2 = GetHasFeat(654, oPC); break;
case 693: nPRF1 = GetHasFeat(165, oPC); nPRF2 = GetHasFeat(655, oPC); break;
case 696: nPRF1 = GetHasFeat(7, oPC); break;
case 697: nPRF1 = GetHasFeat(344, oPC); break;
case 698: nPRF1 = GetHasFeat(697, oPC); break;
case 699: nPRF1 = GetHasFeat(215, oPC); break;
}
}
}
else //<750
{
if (nFeat < 710)
{
switch (nFeat)
{
case 700: nPRF1 = GetHasFeat(699, oPC); break;
case 701: nPRF1 = GetHasFeat(700, oPC); break;
case 702: nPRF1 = GetHasFeat(701, oPC); break;
case 703: nPRF1 = GetHasFeat(702, oPC); break;
case 704: nPRF1 = GetHasFeat(703, oPC); break;
case 705: nPRF1 = GetHasFeat(704, oPC); break;
case 706: nPRF1 = GetHasFeat(705, oPC); break;
case 707: nPRF1 = GetHasFeat(706, oPC); break;
case 708: nPRF1 = GetHasFeat(707, oPC); break;
case 709: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(15, oPC); break;
}
}
else if (nFeat < 720)
{
switch (nFeat)
{
case 710: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(52, oPC); break;
case 711: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(53, oPC); break;
case 712: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(54, oPC); break;
case 713: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(55, oPC); break;
case 714: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(56, oPC); break;
case 715: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(57, oPC); break;
case 716: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(58, oPC); break;
case 717: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(59, oPC); break;
case 718: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(60, oPC); break;
case 719: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(61, oPC); break;
}
}
else if (nFeat < 730)
{
switch (nFeat)
{
case 720: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(62, oPC); break;
case 721: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(63, oPC); break;
case 722: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(64, oPC); break;
case 723: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(65, oPC); break;
case 724: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(66, oPC); break;
case 725: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(67, oPC); break;
case 726: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(68, oPC); break;
case 727: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(69, oPC); break;
case 728: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(70, oPC); break;
case 729: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(71, oPC); break;
}
}
else if (nFeat < 740)
{
switch (nFeat)
{
case 730: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(72, oPC); break;
case 731: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(73, oPC); break;
case 732: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(74, oPC); break;
case 733: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(75, oPC); break;
case 734: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(76, oPC); break;
case 735: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(77, oPC); break;
case 736: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(78, oPC); break;
case 737: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(79, oPC); break;
case 738: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(80, oPC); break;
case 739: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(82, oPC); break;
}
}
else //750
{
switch (nFeat)
{
case 740: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(83, oPC); break;
case 741: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(84, oPC); break;
case 742: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(85, oPC); break;
case 743: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(87, oPC); break;
case 744: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(88, oPC); break;
case 745: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(89, oPC); break;
case 746: nPRF1 = GetHasFeat(292, oPC); break;
case 747: nPRF1 = GetHasFeat(14, oPC); break;
case 748: nPRF1 = GetHasFeat(212, oPC); break;
case 749: nPRF1 = GetHasFeat(748, oPC); break;
}
}
}
}
else
{
if (nFeat < 800)
{
if (nFeat < 760)
{
switch (nFeat)
{
case 750: nPRF1 = GetHasFeat(749, oPC); break;
case 751: nPRF1 = GetHasFeat(750, oPC); break;
case 752: nPRF1 = GetHasFeat(751, oPC); break;
case 753: nPRF1 = GetHasFeat(377, oPC); break;
case 755: nPRF1 = GetHasFeat(754, oPC); break;
case 756: nPRF1 = GetHasFeat(755, oPC); break;
case 757: nPRF1 = GetHasFeat(756, oPC); break;
case 758: nPRF1 = GetHasFeat(757, oPC); break;
case 759: nPRF1 = GetHasFeat(758, oPC); break;
}
}
else if (nFeat < 770)
{
switch (nFeat)
{
case 760: nPRF1 = GetHasFeat(759, oPC); break;
case 761: nPRF1 = GetHasFeat(760, oPC); break;
case 762: nPRF1 = GetHasFeat(761, oPC); break;
case 763: nPRF1 = GetHasFeat(762, oPC); break;
case 765: nPRF1 = GetHasFeat(764, oPC); break;
case 766: nPRF1 = GetHasFeat(765, oPC); break;
case 767: nPRF1 = GetHasFeat(766, oPC); break;
case 768: nPRF1 = GetHasFeat(767, oPC); break;
case 769: nPRF1 = GetHasFeat(768, oPC); break;
}
}
else if (nFeat < 780)
{
switch (nFeat)
{
case 770: nPRF1 = GetHasFeat(769, oPC); break;
case 771: nPRF1 = GetHasFeat(770, oPC); break;
case 772: nPRF1 = GetHasFeat(771, oPC); break;
case 773: nPRF1 = GetHasFeat(772, oPC); break;
case 775: nPRF1 = GetHasFeat(774, oPC); break;
case 776: nPRF1 = GetHasFeat(775, oPC); break;
case 777: nPRF1 = GetHasFeat(776, oPC); break;
case 778: nPRF1 = GetHasFeat(777, oPC); break;
case 779: nPRF1 = GetHasFeat(778, oPC); break;
}
}
else if (nFeat < 790)
{
switch (nFeat)
{
case 780: nPRF1 = GetHasFeat(779, oPC); break;
case 781: nPRF1 = GetHasFeat(780, oPC); break;
case 782: nPRF1 = GetHasFeat(781, oPC); break;
case 783: nPRF1 = GetHasFeat(782, oPC); break;
case 785: nPRF1 = GetHasFeat(784, oPC); break;
case 786: nPRF1 = GetHasFeat(785, oPC); break;
case 787: nPRF1 = GetHasFeat(786, oPC); break;
case 788: nPRF1 = GetHasFeat(787, oPC); break;
case 789: nPRF1 = GetHasFeat(788, oPC); break;
}
}
else //<800
{
switch (nFeat)
{
case 790: nPRF1 = GetHasFeat(789, oPC); break;
case 791: nPRF1 = GetHasFeat(790, oPC); break;
case 792: nPRF1 = GetHasFeat(791, oPC); break;
case 793: nPRF1 = GetHasFeat(792, oPC); break;
case 795: nPRF1 = GetHasFeat(794, oPC); break;
case 796: nPRF1 = GetHasFeat(795, oPC); break;
case 797: nPRF1 = GetHasFeat(796, oPC); break;
case 798: nPRF1 = GetHasFeat(797, oPC); break;
case 799: nPRF1 = GetHasFeat(798, oPC); break;
}
}
}
else if (nFeat < 850)
{
if (nFeat < 810)
{
switch (nFeat)
{
case 800: nPRF1 = GetHasFeat(799, oPC); break;
case 801: nPRF1 = GetHasFeat(800, oPC); break;
case 802: nPRF1 = GetHasFeat(801, oPC); break;
case 803: nPRF1 = GetHasFeat(802, oPC); break;
case 805: nPRF1 = GetHasFeat(804, oPC); break;
case 806: nPRF1 = GetHasFeat(805, oPC); break;
case 807: nPRF1 = GetHasFeat(806, oPC); break;
case 808: nPRF1 = GetHasFeat(807, oPC); break;
case 809: nPRF1 = GetHasFeat(808, oPC); break;
}
}
else if (nFeat < 820)
{
switch (nFeat)
{
case 810: nPRF1 = GetHasFeat(809, oPC); break;
case 811: nPRF1 = GetHasFeat(810, oPC); break;
case 812: nPRF1 = GetHasFeat(811, oPC); break;
case 813: nPRF1 = GetHasFeat(812, oPC); break;
case 815: nPRF1 = GetHasFeat(814, oPC); break;
case 816: nPRF1 = GetHasFeat(815, oPC); break;
case 817: nPRF1 = GetHasFeat(816, oPC); break;
case 818: nPRF1 = GetHasFeat(817, oPC); break;
case 819: nPRF1 = GetHasFeat(818, oPC); break;
}
}
else if (nFeat < 830)
{
switch (nFeat)
{
case 820: nPRF1 = GetHasFeat(819, oPC); break;
case 821: nPRF1 = GetHasFeat(820, oPC); break;
case 822: nPRF1 = GetHasFeat(821, oPC); break;
case 823: nPRF1 = GetHasFeat(822, oPC); break;
case 824: nORF1 = GetHasFeat(472, oPC); nORF2 = GetHasFeat(301, oPC); break;
case 825: nPRF1 = GetHasFeat(824, oPC); break;
case 826: nPRF1 = GetHasFeat(825, oPC); break;
case 827: nPRF1 = GetHasFeat(826, oPC); break;
case 828: nPRF1 = GetHasFeat(827, oPC); break;
case 829: nPRF1 = GetHasFeat(828, oPC); break;
}
}
else if (nFeat < 840)
{
switch (nFeat)
{
case 830: nPRF1 = GetHasFeat(829, oPC); break;
case 831: nPRF1 = GetHasFeat(830, oPC); break;
case 832: nPRF1 = GetHasFeat(831, oPC); break;
case 833: nPRF1 = GetHasFeat(832, oPC); break;
case 834: nORF1 = GetHasFeat(351, oPC); nORF2 = GetHasFeat(1006, oPC); nORF3 = GetHasFeat(1011, oPC); break;
case 835: nPRF1 = GetHasFeat(834, oPC); break;
case 836: nPRF1 = GetHasFeat(835, oPC); break;
case 837: nPRF1 = GetHasFeat(836, oPC); break;
case 838: nPRF1 = GetHasFeat(837, oPC); break;
case 839: nPRF1 = GetHasFeat(838, oPC); break;
}
}
else //<850
{
switch (nFeat)
{
case 840: nPRF1 = GetHasFeat(839, oPC); break;
case 841: nPRF1 = GetHasFeat(840, oPC); break;
case 842: nPRF1 = GetHasFeat(841, oPC); break;
case 843: nPRF1 = GetHasFeat(842, oPC); break;
case 844: nPRF1 = GetHasFeat(39, oPC); nPRF2 = GetHasFeat(21, oPC); break;
case 845: nPRF1 = GetHasFeat(844, oPC); break;
case 846: nPRF1 = GetHasFeat(845, oPC); break;
case 847: nPRF1 = GetHasFeat(846, oPC); break;
case 848: nPRF1 = GetHasFeat(847, oPC); break;
case 849: nPRF1 = GetHasFeat(848, oPC); break;
}
}
}
else if (nFeat < 900)
{
if (nFeat < 860)
{
switch (nFeat)
{
case 850: nPRF1 = GetHasFeat(849, oPC); break;
case 851: nPRF1 = GetHasFeat(850, oPC); break;
case 852: nPRF1 = GetHasFeat(851, oPC); break;
case 853: nPRF1 = GetHasFeat(852, oPC); break;
case 854: nPRF1 = GetHasFeat(294, oPC); break;
case 856: nPRF1 = GetHasFeat(212, oPC); nPRF2 = GetHasFeat(223, oPC); break;
case 857: nPRF1 = GetHasFeat(29, oPC); break;
case 858: nPRF1 = GetHasFeat(857, oPC); break;
case 859: nPRF1 = GetHasFeat(858, oPC); break;
}
}
else if (nFeat < 870)
{
switch (nFeat)
{
case 860: nPRF1 = GetHasFeat(33, oPC); break;
case 861: nPRF1 = GetHasFeat(860, oPC); break;
case 862: nPRF1 = GetHasFeat(861, oPC); break;
case 863: nPRF1 = GetHasFeat(37, oPC); break;
case 864: nPRF1 = GetHasFeat(863, oPC); break;
case 865: nPRF1 = GetHasFeat(864, oPC); break;
case 867: nPRF1 = GetHasFeat(392, oPC); nPRF2 = GetHasFeat(389, oPC); break;
case 868: nPRF1 = GetHasFeat(867, oPC); break;
case 869: nPRF1 = GetHasFeat(331, oPC); break;
}
}
else if (nFeat < 880)
{
switch (nFeat)
{
case 870: nPRF1 = GetHasFeat(373, oPC); break;
case 872: nPRF1 = GetHasFeat(903, oPC); break;
case 873: nORF1 = GetHasFeat(338, oPC); nORF2 = GetHasFeat(903, oPC); break;
case 879: nPRF1 = GetHasFeat(98, oPC); break;
}
}
else if (nFeat < 890)
{
switch (nFeat)
{
case 880: nPRF1 = GetHasFeat(117, oPC); break;
case 881: nPRF1 = GetHasFeat(118, oPC); break;
case 887: nPRF1 = GetHasFeat(886, oPC); break;
case 888: nPRF1 = GetHasFeat(887, oPC); break;
}
}
else //<900
{
switch (nFeat)
{
case 893: nPRF1 = GetHasFeat(892, oPC); break;
case 897: nPRF1 = GetHasFeat(893, oPC); break;
}
}
}
else if (nFeat < 950)
{
if (nFeat < 910)
{
switch (nFeat)
{
case 900: nPRF1 = GetHasFeat(898, oPC); break;
case 901: nPRF1 = GetHasFeat(900, oPC); break;
case 903: nPRF1 = GetHasFeat(901, oPC); break;
case 905: nPRF1 = GetHasFeat(904, oPC); break;
case 906: nPRF1 = GetHasFeat(905, oPC); break;
case 907: nPRF1 = GetHasFeat(906, oPC); break;
case 908: nPRF1 = GetHasFeat(907, oPC); break;
}
}
else if (nFeat < 920)
{
switch (nFeat)
{
case 910: nORF1 = GetHasFeat(301, oPC); nORF2 = GetHasFeat(472, oPC); break;
case 919: nPRF1 = GetHasFeat(43, oPC); break;
}
}
else if (nFeat < 930)
{
switch (nFeat)
{
case 920: nPRF1 = GetHasFeat(90, oPC); break;
case 921: nPRF1 = GetHasFeat(94, oPC); break;
case 922: nPRF1 = GetHasFeat(95, oPC); break;
case 923: nPRF1 = GetHasFeat(96, oPC); break;
case 924: nPRF1 = GetHasFeat(97, oPC); break;
case 925: nPRF1 = GetHasFeat(103, oPC); break;
case 926: nPRF1 = GetHasFeat(104, oPC); break;
case 927: nPRF1 = GetHasFeat(105, oPC); break;
case 928: nPRF1 = GetHasFeat(106, oPC); break;
case 929: nPRF1 = GetHasFeat(107, oPC); break;
}
}
else if (nFeat < 940)
{
switch (nFeat)
{
case 930: nPRF1 = GetHasFeat(108, oPC); break;
case 931: nPRF1 = GetHasFeat(110, oPC); break;
case 932: nPRF1 = GetHasFeat(111, oPC); break;
case 933: nPRF1 = GetHasFeat(112, oPC); break;
case 934: nPRF1 = GetHasFeat(113, oPC); break;
case 935: nPRF1 = GetHasFeat(114, oPC); break;
case 936: nPRF1 = GetHasFeat(115, oPC); break;
case 937: nPRF1 = GetHasFeat(116, oPC); break;
case 938: nPRF1 = GetHasFeat(121, oPC); break;
case 939: nPRF1 = GetHasFeat(122, oPC); break;
}
}
else //<950
{
switch (nFeat)
{
case 940: nPRF1 = GetHasFeat(123, oPC); break;
case 941: nPRF1 = GetHasFeat(125, oPC); break;
case 942: nPRF1 = GetHasFeat(126, oPC); break;
case 943: nPRF1 = GetHasFeat(127, oPC); break;
}
}
}
else if (nFeat < 1000)
{
if (nFeat < 960)
{
switch (nFeat)
{
case 950: nPRF1 = GetHasFeat(949, oPC); break;
case 951: nPRF1 = GetHasFeat(950, oPC); break;
case 952: nPRF1 = GetHasFeat(44, oPC); break;
case 953: nPRF1 = GetHasFeat(952, oPC); break;
case 954: nPRF1 = GetHasFeat(44, oPC); break;
case 955: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(958, oPC); break;
case 956: nPRF1 = GetHasFeat(952, oPC); break;
case 957: nPRF1 = GetHasFeat(953, oPC); nPRF2 = GetHasFeat(956, oPC); break;
case 958: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(954, oPC); break;
case 959: nPRF1 = GetHasFeat(952, oPC); break;
}
}
else if (nFeat < 990)
{
switch (nFeat)
{
case 988: nPRF1 = GetHasFeat(329, oPC); break;
case 989: nPRF1 = GetHasFeat(329, oPC); break;
}
}
else //<1000
{
switch (nFeat)
{
case 993: nPRF1 = GetHasFeat(44, oPC); break;
case 994: nPRF1 = GetHasFeat(993, oPC); break;
case 995: nPRF1 = GetHasFeat(44, oPC); break;
case 996: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(999, oPC); break;
case 997: nPRF1 = GetHasFeat(993, oPC); break;
case 998: nPRF1 = GetHasFeat(994, oPC); nPRF2 = GetHasFeat(997, oPC); break;
case 999: nPRF1 = GetHasFeat(391, oPC); nPRF2 = GetHasFeat(995, oPC); break;
}
}
}
else //through 1071
{
if (nFeat < 1010)
{
switch (nFeat)
{
case 1000: nPRF1 = GetHasFeat(993, oPC); break;
case 1002: nPRF1 = GetHasFeat(435, oPC); break;
case 1003: nPRF1 = GetHasFeat(475, oPC); break;
}
}
else if (nFeat < 1050)
{
switch (nFeat)
{
case 1045: nPRF1 = GetHasFeat(449, oPC); break;
case 1046: nPRF1 = GetHasFeat(1045, oPC); break;
case 1047: nPRF1 = GetHasFeat(1046, oPC); break;
case 1048: nPRF1 = GetHasFeat(1047, oPC); break;
case 1049: nPRF1 = GetHasFeat(1048, oPC); break;
}
}
else if (nFeat < 1060)
{
switch (nFeat)
{
case 1050: nPRF1 = GetHasFeat(1049, oPC); break;
case 1051: nPRF1 = GetHasFeat(1050, oPC); break;
case 1052: nPRF1 = GetHasFeat(1051, oPC); break;
case 1053: nPRF1 = GetHasFeat(1052, oPC); break;
case 1054: nPRF1 = GetHasFeat(1053, oPC); break;
case 1055: nPRF1 = GetHasFeat(1054, oPC); break;
case 1056: nPRF1 = GetHasFeat(1055, oPC); break;
case 1057: nPRF1 = GetHasFeat(1056, oPC); break;
case 1058: nPRF1 = GetHasFeat(1057, oPC); break;
case 1059: nPRF1 = GetHasFeat(1058, oPC); break;
}
}
else //through 1071
{
switch (nFeat)
{
case 1060: nPRF1 = GetHasFeat(903, oPC); break;
case 1061: nPRF1 = GetHasFeat(903, oPC); break;
case 1067: nPRF1 = GetHasFeat(334, oPC); break;
case 1070: nPRF1 = GetHasFeat(466, oPC); break;
case 1071: nPRF1 = GetHasFeat(884, oPC); break;
}
}
}
}
return ((nPRF1 && nPRF2) && (nORF1 || nORF2 || nORF3 || nORF4 || nORF5));
}
int GetIsFeatFirstLevelOnly(int nFeat)
{
switch(nFeat)
{
case 378: return TRUE; break;
case 379: return TRUE; break;
case 380: return TRUE; break;
case 381: return TRUE; break;
case 382: return TRUE; break;
case 384: return TRUE; break;
case 386: return TRUE; break;
case 388: return TRUE; break;
default : return FALSE; break;
}
return -3;
}
int GetIsFeatDevCrit(int nFeat)
{
if (nFeat > 494 && nFeat <532) return TRUE;
else if (nFeat == 955 || nFeat == 996) return TRUE;
else return FALSE;
}
int GetHasRequiredSpellLevelForFeat(object oPC, int nFeat)
{
int nReturn = TRUE;
switch(nFeat)
{
case 7: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 12: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 33: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 35: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 36: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 37: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 166: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 167: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 168: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 169: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 170: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 171: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 172: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 1) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 1) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 1) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 2) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 4)); break;
case 11: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 3) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 4) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 3) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 3) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 4) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 8) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 8)); break;
case 25: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 5) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 6) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 5) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 5) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 7) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 11) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 11)); break;
case 29: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 7) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 8) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 7) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 7) || (GetLevelByClass(CLASS_TYPE_BARD, oPC) >= 10) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) >= 14) || (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 14)); break;
case 31: nReturn = FALSE; break;
case 610: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 611: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 612: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 613: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 614: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 615: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 616: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 617: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 857: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 858: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 859: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 860: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 861: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 862: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 863: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 864: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
case 865: nReturn = ((GetLevelByClass(CLASS_TYPE_CLERIC, oPC) >= 17) || (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) >= 18) || ((GetLevelByClass(CLASS_TYPE_WIZARD, oPC) + (GetLevelByClass(CLASS_TYPE_PALEMASTER, oPC)/2)) >= 17) || (GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 17)); break;
default: nReturn = TRUE; break;
}
return nReturn;
}
string GetNameOfFeat(int nFeat)
{
string sName;
if (nFeat < 250)
{
if (nFeat < 50)
{
if (nFeat < 10)
{
switch (nFeat)
{
case 0: sName = "Alertness"; break;
case 1: sName = "Ambidexterity"; break;
case 2: sName = "Armor Proficiency Heavy"; break;
case 3: sName = "Armor Proficiency Light"; break;
case 4: sName = "Armor Proficiency Medium"; break;
case 5: sName = "Called Shot"; break;
case 6: sName = "Cleave"; break;
case 7: sName = "Combat Casting"; break;
case 8: sName = "Deflect Arrows"; break;
case 9: sName = "Disarm"; break;
}
}
else if (nFeat < 20)
{
switch (nFeat)
{
case 10: sName = "Dodge"; break;
case 11: sName = "Empower Spell"; break;
case 12: sName = "Extend Spell"; break;
case 13: sName = "Extra Turning"; break;
case 14: sName = "Great Fortitude"; break;
case 15: sName = "Improved Critical Club"; break;
case 16: sName = "Improved Disarm"; break;
case 17: sName = "Improved Knockdown"; break;
case 18: sName = "Improved Parry"; break;
case 19: sName = "Improved Power Attack"; break;
}
}
else if (nFeat < 30)
{
switch (nFeat)
{
case 20: sName = "Improved Two Weapon Fighting"; break;
case 21: sName = "Improved Unarmed Strike"; break;
case 22: sName = "Iron Will"; break;
case 23: sName = "Knockdown"; break;
case 24: sName = "Lightning Reflexes"; break;
case 25: sName = "Maximize Spell"; break;
case 26: sName = "Mobility"; break;
case 27: sName = "Point Blank Shot"; break;
case 28: sName = "Power Attack"; break;
case 29: sName = "Quicken Spell"; break;
}
}
else if (nFeat < 40)
{
switch (nFeat)
{
case 30: sName = "Rapid Shot"; break;
case 31: sName = "Sap"; break;
case 32: sName = "Shield Proficiency"; break;
case 33: sName = "Silence Spell"; break;
case 34: sName = "Skill Focus Animal Empathy"; break;
case 35: sName = "Spell Focus Abjuration"; break;
case 36: sName = "Spell Penetration"; break;
case 37: sName = "Still Spell"; break;
case 39: sName = "Stunning Fist"; break;
}
}
else //<50
{
switch (nFeat)
{
case 40: sName = "Toughness"; break;
case 41: sName = "Two Weapon Fighting"; break;
case 42: sName = "Weapon Finesse"; break;
case 43: sName = "Weapon Focus Club"; break;
case 44: sName = "Weapon Proficiency Exotic"; break;
case 45: sName = "Weapon Proficiency Martial"; break;
case 46: sName = "Weapon Proficiency Simple"; break;
case 47: sName = "Weapon Specialization Club"; break;
case 48: sName = "Weapon Proficiency Druid"; break;
case 49: sName = "Weapon Proficiency Monk"; break;
}
}
}
else if (nFeat < 100)
{
if (nFeat < 60)
{
switch (nFeat)
{
case 50: sName = "Weapon Proficiency Rogue"; break;
case 51: sName = "Weapon Proficiency Wizard"; break;
case 52: sName = "Improved Critical Dagger"; break;
case 53: sName = "Improved Critical Dart"; break;
case 54: sName = "Improved Critical Heavy Crossbow"; break;
case 55: sName = "Improved Critical Light Crossbow"; break;
case 56: sName = "Improved Critical Light Mace"; break;
case 57: sName = "Improved Critical Morning Star"; break;
case 58: sName = "Improved Critical Staff"; break;
case 59: sName = "Improved Critical Spear"; break;
}
}
else if (nFeat < 70)
{
switch (nFeat)
{
case 60: sName = "Improved Critical Sickle"; break;
case 61: sName = "Improved Critical Sling"; break;
case 62: sName = "Improved Critical Unarmed Strike"; break;
case 63: sName = "Improved Critical Longbow"; break;
case 64: sName = "Improved Critical Shortbow"; break;
case 65: sName = "Improved Critical Short Sword"; break;
case 66: sName = "Improved Critical Rapier"; break;
case 67: sName = "Improved Critical Scimitar"; break;
case 68: sName = "Improved Critical Long Sword"; break;
case 69: sName = "Improved Critical Great Sword"; break;
}
}
else if (nFeat < 80)
{
switch (nFeat)
{
case 70: sName = "Improved Critical Hand Axe"; break;
case 71: sName = "Improved Critical Throwing Axe"; break;
case 72: sName = "Improved Critical Battle Axe"; break;
case 73: sName = "Improved Critical Great Axe"; break;
case 74: sName = "Improved Critical Halberd"; break;
case 75: sName = "Improved Critical Light Hammer"; break;
case 76: sName = "Improved Critical Light Flail"; break;
case 77: sName = "Improved Critical War Hammer"; break;
case 78: sName = "Improved Critical Heavy Flail"; break;
case 79: sName = "Improved Critical Kama"; break;
}
}
else if (nFeat < 90)
{
switch (nFeat)
{
case 80: sName = "Improved Critical Kukri"; break;
case 82: sName = "Improved Critical Shuriken"; break;
case 83: sName = "Improved Critical Scythe"; break;
case 84: sName = "Improved Critical Katana"; break;
case 85: sName = "Improved Critical Bastard Sword"; break;
case 87: sName = "Improved Critical Dire Mace"; break;
case 88: sName = "Improved Critical Double Axe"; break;
case 89: sName = "Improved Critical Two Bladed Sword"; break;
}
}
else //<100
{
switch (nFeat)
{
case 90: sName = "Weapon Focus Dagger"; break;
case 91: sName = "Weapon Focus Dart"; break;
case 92: sName = "Weapon Focus Heavy Crossbow"; break;
case 93: sName = "Weapon Focus Light Crossbow"; break;
case 94: sName = "Weapon Focus Light Mace"; break;
case 95: sName = "Weapon Focus Morning Star"; break;
case 96: sName = "Weapon Focus Staff"; break;
case 97: sName = "Weapon Focus Spear"; break;
case 98: sName = "Weapon Focus Sickle"; break;
case 99: sName = "Weapon Focus Sling"; break;
}
}
}
else if (nFeat < 150)
{
if (nFeat < 110)
{
switch (nFeat)
{
case 100: sName = "Weapon Focus Unarmed Strike"; break;
case 101: sName = "Weapon Focus Longbow"; break;
case 102: sName = "Weapon Focus Shortbow"; break;
case 103: sName = "Weapon Focus Short Sword"; break;
case 104: sName = "Weapon Focus Rapier"; break;
case 105: sName = "Weapon Focus Scimitar"; break;
case 106: sName = "Weapon Focus Long Sword"; break;
case 107: sName = "Weapon Focus Great Sword"; break;
case 108: sName = "Weapon Focus Hand Axe"; break;
case 109: sName = "Weapon Focus Throwing Axe"; break;
}
}
else if (nFeat < 120)
{
switch (nFeat)
{
case 110: sName = "Weapon Focus Battle Axe"; break;
case 111: sName = "Weapon Focus Great Axe"; break;
case 112: sName = "Weapon Focus Halberd"; break;
case 113: sName = "Weapon Focus Light Hammer"; break;
case 114: sName = "Weapon Focus Light Flail"; break;
case 115: sName = "Weapon Focus War Hammer"; break;
case 116: sName = "Weapon Focus Heavy Flail"; break;
case 117: sName = "Weapon Focus Kama"; break;
case 118: sName = "Weapon Focus Kukri"; break;
}
}
else if (nFeat < 130)
{
switch (nFeat)
{
case 120: sName = "Weapon Focus Shuriken"; break;
case 121: sName = "Weapon Focus Scythe"; break;
case 122: sName = "Weapon Focus Katana"; break;
case 123: sName = "Weapon Focus Bastard Sword"; break;
case 125: sName = "Weapon Focus Dire Mace"; break;
case 126: sName = "Weapon Focus Double Axe"; break;
case 127: sName = "Weapon Focus Two Bladed Sword"; break;
case 128: sName = "Weapon Specialization Dagger"; break;
case 129: sName = "Weapon Specialization Dart"; break;
}
}
else if (nFeat < 140)
{
switch (nFeat)
{
case 130: sName = "Weapon Specialization Heavy Crossbow"; break;
case 131: sName = "Weapon Specialization Light Crossbow"; break;
case 132: sName = "Weapon Specialization Light Mace"; break;
case 133: sName = "Weapon Specialization Morning Star"; break;
case 134: sName = "Weapon Specialization Staff"; break;
case 135: sName = "Weapon Specialization Spear"; break;
case 136: sName = "Weapon Specialization Sickle"; break;
case 137: sName = "Weapon Specialization Sling"; break;
case 138: sName = "Weapon Specialization Unarmed Strike"; break;
case 139: sName = "Weapon Specialization Longbow"; break;
}
}
else //<150
{
switch (nFeat)
{
case 140: sName = "Weapon Specialization Shortbow"; break;
case 141: sName = "Weapon Specialization Short Sword"; break;
case 142: sName = "Weapon Specialization Rapier"; break;
case 143: sName = "Weapon Specialization Scimitar"; break;
case 144: sName = "Weapon Specialization Long Sword"; break;
case 145: sName = "Weapon Specialization Great Sword"; break;
case 146: sName = "Weapon Specialization Hand Axe"; break;
case 147: sName = "Weapon Specialization Throwing Axe"; break;
case 148: sName = "Weapon Specialization Battle Axe"; break;
case 149: sName = "Weapon Specialization Great Axe"; break;
}
}
}
else if (nFeat < 200)
{
if (nFeat < 160)
{
switch (nFeat)
{
case 150: sName = "Weapon Specialization Halberd"; break;
case 151: sName = "Weapon Specialization Light Hammer"; break;
case 152: sName = "Weapon Specialization Light Flail"; break;
case 153: sName = "Weapon Specialization War Hammer"; break;
case 154: sName = "Weapon Specialization Heavy Flail"; break;
case 155: sName = "Weapon Specialization Kama"; break;
case 156: sName = "Weapon Specialization Kukri"; break;
case 158: sName = "Weapon Specialization Shuriken"; break;
case 159: sName = "Weapon Specialization Scythe"; break;
}
}
else if (nFeat < 170)
{
switch (nFeat)
{
case 160: sName = "Weapon Specialization Katana"; break;
case 161: sName = "Weapon Specialization Bastard Sword"; break;
case 163: sName = "Weapon Specialization Dire Mace"; break;
case 164: sName = "Weapon Specialization Double Axe"; break;
case 165: sName = "Weapon Specialization Two Bladed Sword"; break;
case 166: sName = "Spell Focus Conjuration"; break;
case 167: sName = "Spell Focus Divination"; break;
case 168: sName = "Spell Focus Enchantment"; break;
case 169: sName = "Spell Focus Evocation"; break;
}
}
else if (nFeat < 180)
{
switch (nFeat)
{
case 170: sName = "Spell Focus Illusion"; break;
case 171: sName = "Spell Focus Necromancy"; break;
case 172: sName = "Spell Focus Transmutation"; break;
case 173: sName = "Skill Focus Concentration"; break;
case 174: sName = "Skill Focus Disable Trap"; break;
case 175: sName = "Skill Focus Discipline"; break;
case 177: sName = "Skill Focus Heal"; break;
case 178: sName = "Skill Focus Hide"; break;
case 179: sName = "Skill Focus Listen"; break;
}
}
else if (nFeat < 190)
{
switch (nFeat)
{
case 180: sName = "Skill Focus Lore"; break;
case 181: sName = "Skill Focus Move Silently"; break;
case 182: sName = "Skill Focus Open Lock"; break;
case 183: sName = "Skill Focus Parry"; break;
case 184: sName = "Skill Focus Perform"; break;
case 185: sName = "Skill Focus Persuade"; break;
case 186: sName = "Skill Focus Pick Pocket"; break;
case 187: sName = "Skill Focus Search"; break;
case 188: sName = "Skill Focus Set Trap"; break;
case 189: sName = "Skill Focus Spellcraft"; break;
}
}
else //<200
{
switch (nFeat)
{
case 190: sName = "Skill Focus Spot"; break;
case 192: sName = "Skill Focus Taunt"; break;
case 193: sName = "Skill Focus Use Magic Device"; break;
case 194: sName = "Barbarian Endurance"; break;
case 195: sName = "Uncanny Dodge 1"; break;
case 196: sName = "Damage Reduction"; break;
case 197: sName = "Bardic Knowledge"; break;
case 198: sName = "Nature Sense"; break;
case 199: sName = "Animal Companion"; break;
}
}
}
else //<250
{
if (nFeat < 210)
{
switch (nFeat)
{
case 200: sName = "Woodland Stride"; break;
case 201: sName = "Trackless Step"; break;
case 202: sName = "Resist Natures Lure"; break;
case 203: sName = "Venom Immunity"; break;
case 204: sName = "Flurry Of Blows"; break;
case 206: sName = "Evasion"; break;
case 207: sName = "Monk Endurance"; break;
case 208: sName = "Still Mind"; break;
case 209: sName = "Purity Of Body"; break;
}
}
else if (nFeat < 220)
{
switch (nFeat)
{
case 211: sName = "Wholeness Of Body"; break;
case 212: sName = "Improved Evasion"; break;
case 213: sName = "Ki Strike"; break;
case 214: sName = "Diamond Body"; break;
case 215: sName = "Diamond Soul"; break;
case 216: sName = "Perfect Self"; break;
case 217: sName = "Divine Grace"; break;
case 219: sName = "Divine Health"; break;
}
}
else if (nFeat < 230)
{
switch (nFeat)
{
case 221: sName = "Sneak Attack"; break;
case 222: sName = "Crippling Strike"; break;
case 223: sName = "Defensive Roll"; break;
case 224: sName = "Opportunist"; break;
case 225: sName = "Skill Mastery"; break;
case 226: sName = "Uncanny Reflex"; break;
case 227: sName = "Stonecunning"; break;
case 228: sName = "Darkvision"; break;
case 229: sName = "Hardiness Versus Poisons"; break;
}
}
else if (nFeat < 240)
{
switch (nFeat)
{
case 230: sName = "Hardiness Versus Spells"; break;
case 231: sName = "Battle Training Versus Orcs"; break;
case 232: sName = "Battle Training Versus Goblins"; break;
case 233: sName = "Battle Training Versus Giants"; break;
case 234: sName = "Skill Affinity Lore"; break;
case 235: sName = "Immunity To Sleep"; break;
case 236: sName = "Hardiness Versus Enchantments"; break;
case 237: sName = "Skill Affinity Listen"; break;
case 238: sName = "Skill Affinity Search"; break;
case 239: sName = "Skill Affinity Spot"; break;
}
}
else //<250
{
switch (nFeat)
{
case 240: sName = "Keen Sense"; break;
case 241: sName = "Hardiness Versus Illusions"; break;
case 242: sName = "Battle Training Versus Reptilians"; break;
case 243: sName = "Skill Affinity Concentration"; break;
case 244: sName = "Partial Skill Affinity Listen"; break;
case 245: sName = "Partial Skill Affinity Search"; break;
case 246: sName = "Partial Skill Affinity Spot"; break;
case 247: sName = "Skill Affinity Move Silently"; break;
case 248: sName = "Lucky"; break;
case 249: sName = "Fearless"; break;
}
}
}
}
else if (nFeat < 500)
{
if (nFeat < 300)
{
if (nFeat < 260)
{
switch (nFeat)
{
case 250: sName = "Good Aim"; break;
case 251: sName = "Uncanny Dodge 2"; break;
case 252: sName = "Uncanny Dodge 3"; break;
case 253: sName = "Uncanny Dodge 4"; break;
case 254: sName = "Uncanny Dodge 5"; break;
case 255: sName = "Uncanny Dodge 6"; break;
case 256: sName = "Weapon Proficiency Elf"; break;
case 257: sName = "Bard Songs"; break;
case 258: sName = "Quick To Master"; break;
case 259: sName = "Slippery Mind"; break;
}
}
else if (nFeat < 270)
{
switch (nFeat)
{
case 260: sName = "Monk Ac Bonus"; break;
case 261: sName = "Favored Enemy Dwarf"; break;
case 262: sName = "Favored Enemy Elf"; break;
case 263: sName = "Favored Enemy Gnome"; break;
case 264: sName = "Favored Enemy Halfling"; break;
case 265: sName = "Favored Enemy Halfelf"; break;
case 266: sName = "Favored Enemy Halforc"; break;
case 267: sName = "Favored Enemy Human"; break;
case 268: sName = "Favored Enemy Aberration"; break;
case 269: sName = "Favored Enemy Animal"; break;
}
}
else if (nFeat < 280)
{
switch (nFeat)
{
case 270: sName = "Favored Enemy Beast"; break;
case 271: sName = "Favored Enemy Construct"; break;
case 272: sName = "Favored Enemy Dragon"; break;
case 273: sName = "Favored Enemy Goblinoid"; break;
case 274: sName = "Favored Enemy Monstrous"; break;
case 275: sName = "Favored Enemy Orc"; break;
case 276: sName = "Favored Enemy Reptilian"; break;
case 277: sName = "Favored Enemy Elemental"; break;
case 278: sName = "Favored Enemy Fey"; break;
case 279: sName = "Favored Enemy Giant"; break;
}
}
else if (nFeat < 290)
{
switch (nFeat)
{
case 280: sName = "Favored Enemy Magical Beast"; break;
case 281: sName = "Favored Enemy Outsider"; break;
case 284: sName = "Favored Enemy Shapechanger"; break;
case 285: sName = "Favored Enemy Undead"; break;
case 286: sName = "Favored Enemy Vermin"; break;
case 289: sName = "Weapon Proficiency Creature"; break;
}
}
else //<300
{
switch (nFeat)
{
case 290: sName = "Weapon Specialization Creature"; break;
case 291: sName = "Weapon Focus Creature"; break;
case 292: sName = "Improved Critical Creature"; break;
case 293: sName = "Barbarian Rage"; break;
case 294: sName = "Turn Undead"; break;
case 296: sName = "Quivering Palm"; break;
case 297: sName = "Empty Body"; break;
case 299: sName = "Lay On Hands"; break;
}
}
}
else if (nFeat < 350)
{
if (nFeat < 310)
{
switch (nFeat)
{
case 300: sName = "Aura Of Courage"; break;
case 301: sName = "Smite Evil"; break;
case 302: sName = "Remove Disease"; break;
case 303: sName = "Summon Familiar"; break;
case 304: sName = "Elemental Shape"; break;
case 305: sName = "Wild Shape"; break;
case 306: sName = "War Domain Power"; break;
case 307: sName = "Strength Domain Power"; break;
case 308: sName = "Protection Domain Power"; break;
case 309: sName = "Luck Domain Power"; break;
}
}
else if (nFeat < 320)
{
switch (nFeat)
{
case 310: sName = "Death Domain Power"; break;
case 311: sName = "Air Domain Power"; break;
case 312: sName = "Animal Domain Power"; break;
case 313: sName = "Destruction Domain Power"; break;
case 314: sName = "Earth Domain Power"; break;
case 315: sName = "Evil Domain Power"; break;
case 316: sName = "Fire Domain Power"; break;
case 317: sName = "Good Domain Power"; break;
case 318: sName = "Healing Domain Power"; break;
case 319: sName = "Knowledge Domain Power"; break;
}
}
else if (nFeat < 330)
{
switch (nFeat)
{
case 320: sName = "Magic Domain Power"; break;
case 321: sName = "Plant Domain Power"; break;
case 322: sName = "Sun Domain Power"; break;
case 323: sName = "Travel Domain Power"; break;
case 324: sName = "Trickery Domain Power"; break;
case 325: sName = "Water Domain Power"; break;
case 326: sName = "Barbarian Rage"; break;
case 327: sName = "Barbarian Rage"; break;
case 328: sName = "Barbarian Rage"; break;
case 329: sName = "Barbarian Rage"; break;
}
}
else if (nFeat < 340)
{
switch (nFeat)
{
case 330: sName = "Barbarian Rage"; break;
case 331: sName = "Barbarian Rage"; break;
case 332: sName = "Damage Reduction"; break;
case 333: sName = "Damage Reduction"; break;
case 334: sName = "Damage Reduction"; break;
case 335: sName = "Wild Shape"; break;
case 336: sName = "Wild Shape"; break;
case 337: sName = "Wild Shape"; break;
case 338: sName = "Wild Shape"; break;
case 339: sName = "Wild Shape"; break;
}
}
else //<350
{
switch (nFeat)
{
case 340: sName = "Elemental Shape"; break;
case 341: sName = "Elemental Shape"; break;
case 342: sName = "Elemental Shape"; break;
case 343: sName = "Ki Strike"; break;
case 344: sName = "Ki Strike"; break;
case 345: sName = "Sneak Attack"; break;
case 346: sName = "Sneak Attack"; break;
case 347: sName = "Sneak Attack"; break;
case 348: sName = "Sneak Attack"; break;
case 349: sName = "Sneak Attack"; break;
}
}
}
else if (nFeat < 400)
{
if (nFeat < 360)
{
switch (nFeat)
{
case 350: sName = "Sneak Attack"; break;
case 351: sName = "Sneak Attack"; break;
case 352: sName = "Sneak Attack"; break;
case 353: sName = "Sneak Attack"; break;
case 354: sName = "Lowlightvision"; break;
case 355: sName = "Bard Songs"; break;
case 356: sName = "Bard Songs"; break;
case 357: sName = "Bard Songs"; break;
case 358: sName = "Bard Songs"; break;
case 359: sName = "Bard Songs"; break;
}
}
else if (nFeat < 370)
{
switch (nFeat)
{
case 360: sName = "Bard Songs"; break;
case 361: sName = "Bard Songs"; break;
case 362: sName = "Bard Songs"; break;
case 363: sName = "Bard Songs"; break;
case 364: sName = "Bard Songs"; break;
case 365: sName = "Bard Songs"; break;
case 366: sName = "Bard Songs"; break;
case 367: sName = "Bard Songs"; break;
case 368: sName = "Bard Songs"; break;
case 369: sName = "Bard Songs"; break;
}
}
else if (nFeat < 380)
{
switch (nFeat)
{
case 370: sName = "Bard Songs"; break;
case 371: sName = "Bard Songs"; break;
case 372: sName = "Bard Songs"; break;
case 373: sName = "Bard Songs"; break;
case 374: sName = "Ambidexterity"; break;
case 375: sName = "Ambidexterity"; break;
case 377: sName = "Improved Initiative"; break;
case 378: sName = "Artist"; break;
case 379: sName = "Blooded"; break;
}
}
else if (nFeat < 390)
{
switch (nFeat)
{
case 380: sName = "Bullheaded"; break;
case 381: sName = "Courteous Magocracy"; break;
case 382: sName = "Luck Of Heroes"; break;
case 383: sName = "Resist Poison"; break;
case 384: sName = "Silver Palm"; break;
case 385: sName = "Smooth Talk"; break;
case 386: sName = "Snake Blood"; break;
case 387: sName = "Stealthy"; break;
case 388: sName = "Strong Soul"; break;
case 389: sName = "Expertise"; break;
}
}
else //<400
{
switch (nFeat)
{
case 390: sName = "Improved Expertise"; break;
case 391: sName = "Great Cleave"; break;
case 392: sName = "Spring Attack"; break;
case 393: sName = "Greater Spell Focus Abjuration"; break;
case 394: sName = "Greater Spell Focus Conjuration"; break;
case 395: sName = "Greater Spell Focus Divination"; break;
case 396: sName = "Greater Spell Focus Enchantment"; break;
case 397: sName = "Greater Spell Focus Evocation"; break;
case 398: sName = "Greater Spell Focus Illusion"; break;
case 399: sName = "Greater Spell Focus Necromancy"; break;
}
}
}
else if (nFeat < 450)
{
if (nFeat < 410)
{
switch (nFeat)
{
case 400: sName = "Greater Spell Focus Transmutation"; break;
case 401: sName = "Greater Spell Penetration"; break;
case 402: sName = "Thug"; break;
case 403: sName = "Mercantile Background"; break;
case 404: sName = "Skill Focus Appraise"; break;
case 406: sName = "Skill Focus Tumble"; break;
case 407: sName = "Skill Focus Craft Trap"; break;
case 408: sName = "Blind Fight"; break;
case 409: sName = "Circle Kick"; break;
}
}
else if (nFeat < 420)
{
switch (nFeat)
{
case 410: sName = "Extra Stunning Attack"; break;
case 411: sName = "Rapid Reload"; break;
case 412: sName = "Zen Archery"; break;
case 413: sName = "Divine Might"; break;
case 414: sName = "Divine Shield"; break;
case 415: sName = "Arcane Defense Abjuration"; break;
case 416: sName = "Arcane Defense Conjuration"; break;
case 417: sName = "Arcane Defense Divination"; break;
case 418: sName = "Arcane Defense Enchatment"; break;
case 419: sName = "Arcane Defense Evocation"; break;
}
}
else if (nFeat < 430)
{
switch (nFeat)
{
case 420: sName = "Arcane Defense Illusion"; break;
case 421: sName = "Arcane Defense Necromancy"; break;
case 422: sName = "Arcane Defense Transmutation"; break;
case 423: sName = "Extra Music"; break;
case 424: sName = "Lingering Song"; break;
case 425: sName = "Dirty Fighting"; break;
case 426: sName = "Resist Disease"; break;
case 427: sName = "Resist Energy Cold"; break;
case 428: sName = "Resist Energy Acid"; break;
case 429: sName = "Resist Energy Fire"; break;
}
}
else if (nFeat < 440)
{
switch (nFeat)
{
case 430: sName = "Resist Energy Electrical"; break;
case 431: sName = "Resist Energy Sonic"; break;
case 433: sName = "Hide In Plain Sight"; break;
case 434: sName = "Shadow Daze"; break;
case 435: sName = "Summon Shadow"; break;
case 436: sName = "Shadow Evade"; break;
case 437: sName = "Deneirs Eye"; break;
case 438: sName = "Tymoras Smile"; break;
case 439: sName = "Lliiras Heart"; break;
}
}
else //<450
{
switch (nFeat)
{
case 440: sName = "Craft Harper Item"; break;
case 441: sName = "Harper Sleep"; break;
case 442: sName = "Harper Cats Grace"; break;
case 443: sName = "Harper Eagles Splendor"; break;
case 444: sName = "Harper Invisibility"; break;
case 445: sName = "Prestige Enchant Arrow 1"; break;
case 446: sName = "Prestige Enchant Arrow 2"; break;
case 447: sName = "Prestige Enchant Arrow 3"; break;
case 448: sName = "Prestige Enchant Arrow 4"; break;
case 449: sName = "Prestige Enchant Arrow 5"; break;
}
}
}
else //<500
{
if (nFeat < 460)
{
switch (nFeat)
{
case 450: sName = "Prestige Embue Arrow"; break;
case 451: sName = "Prestige Seeker Arrow 1"; break;
case 452: sName = "Prestige Seeker Arrow 2"; break;
case 453: sName = "Prestige Hail Of Arrows"; break;
case 454: sName = "Prestige Arrow Of Death"; break;
case 455: sName = "Prestige Death Attack 1"; break;
case 456: sName = "Prestige Death Attack 2"; break;
case 457: sName = "Prestige Death Attack 3"; break;
case 458: sName = "Prestige Death Attack 4"; break;
case 459: sName = "Prestige Death Attack 5"; break;
}
}
else if (nFeat < 470)
{
switch (nFeat)
{
case 460: sName = "Blackguard Sneak Attack 1d6"; break;
case 461: sName = "Blackguard Sneak Attack 2d6"; break;
case 462: sName = "Blackguard Sneak Attack 3d6"; break;
case 463: sName = "Prestige Poison Save 1"; break;
case 464: sName = "Prestige Poison Save 2"; break;
case 465: sName = "Prestige Poison Save 3"; break;
case 466: sName = "Prestige Poison Save 4"; break;
case 467: sName = "Prestige Poison Save 5"; break;
case 468: sName = "Prestige Spell Ghostly Visage"; break;
case 469: sName = "Prestige Darkness"; break;
}
}
else if (nFeat < 480)
{
switch (nFeat)
{
case 470: sName = "Prestige Invisibility 1"; break;
case 471: sName = "Prestige Invisibility 2"; break;
case 472: sName = "Smite Good"; break;
case 473: sName = "Prestige Dark Blessing"; break;
case 474: sName = "Inflict Light Wounds"; break;
case 475: sName = "Inflict Moderate Wounds"; break;
case 476: sName = "Inflict Serious Wounds"; break;
case 477: sName = "Inflict Critical Wounds"; break;
case 478: sName = "Bulls Strength"; break;
case 479: sName = "Contagion"; break;
}
}
else //<500
{
switch (nFeat)
{
case 490: sName = "Epic Armor Skin"; break;
case 491: sName = "Epic Blinding Speed"; break;
case 492: sName = "Epic Damage Reduction 3"; break;
case 493: sName = "Epic Damage Reduction 6"; break;
case 494: sName = "Epic Damage Reduction 9"; break;
case 495: sName = "Epic Devastating Critical Club"; break;
case 496: sName = "Epic Devastating Critical Dagger"; break;
case 497: sName = "Epic Devastating Critical Dart"; break;
case 498: sName = "Epic Devastating Critical Heavycrossbow"; break;
case 499: sName = "Epic Devastating Critical Lightcrossbow"; break;
}
}
}
}
else if (nFeat < 750)
{
if (nFeat < 550)
{
if (nFeat < 510)
{
switch (nFeat)
{
case 500: sName = "Epic Devastating Critical Lightmace"; break;
case 501: sName = "Epic Devastating Critical Morningstar"; break;
case 502: sName = "Epic Devastating Critical Quarterstaff"; break;
case 503: sName = "Epic Devastating Critical Shortspear"; break;
case 504: sName = "Epic Devastating Critical Sickle"; break;
case 505: sName = "Epic Devastating Critical Sling"; break;
case 506: sName = "Epic Devastating Critical Unarmed"; break;
case 507: sName = "Epic Devastating Critical Longbow"; break;
case 508: sName = "Epic Devastating Critical Shortbow"; break;
case 509: sName = "Epic Devastating Critical Shortsword"; break;
}
}
else if (nFeat < 520)
{
switch (nFeat)
{
case 510: sName = "Epic Devastating Critical Rapier"; break;
case 511: sName = "Epic Devastating Critical Scimitar"; break;
case 512: sName = "Epic Devastating Critical Longsword"; break;
case 513: sName = "Epic Devastating Critical Greatsword"; break;
case 514: sName = "Epic Devastating Critical Handaxe"; break;
case 515: sName = "Epic Devastating Critical Throwingaxe"; break;
case 516: sName = "Epic Devastating Critical Battleaxe"; break;
case 517: sName = "Epic Devastating Critical Greataxe"; break;
case 518: sName = "Epic Devastating Critical Halberd"; break;
case 519: sName = "Epic Devastating Critical Lighthammer"; break;
}
}
else if (nFeat < 530)
{
switch (nFeat)
{
case 520: sName = "Epic Devastating Critical Lightflail"; break;
case 521: sName = "Epic Devastating Critical Warhammer"; break;
case 522: sName = "Epic Devastating Critical Heavyflail"; break;
case 523: sName = "Epic Devastating Critical Kama"; break;
case 524: sName = "Epic Devastating Critical Kukri"; break;
case 525: sName = "Epic Devastating Critical Shuriken"; break;
case 526: sName = "Epic Devastating Critical Scythe"; break;
case 527: sName = "Epic Devastating Critical Katana"; break;
case 528: sName = "Epic Devastating Critical Bastardsword"; break;
case 529: sName = "Epic Devastating Critical Diremace"; break;
}
}
else if (nFeat < 540)
{
switch (nFeat)
{
case 530: sName = "Epic Devastating Critical Doubleaxe"; break;
case 531: sName = "Epic Devastating Critical Twobladedsword"; break;
case 532: sName = "Epic Devastating Critical Creature"; break;
case 533: sName = "Epic Energy Resistance Cold 1"; break;
case 534: sName = "Epic Energy Resistance Cold 2"; break;
case 535: sName = "Epic Energy Resistance Cold 3"; break;
case 536: sName = "Epic Energy Resistance Cold 4"; break;
case 537: sName = "Epic Energy Resistance Cold 5"; break;
case 538: sName = "Epic Energy Resistance Cold 6"; break;
case 539: sName = "Epic Energy Resistance Cold 7"; break;
}
}
else //<550
{
switch (nFeat)
{
case 540: sName = "Epic Energy Resistance Cold 8"; break;
case 541: sName = "Epic Energy Resistance Cold 9"; break;
case 542: sName = "Epic Energy Resistance Cold 10"; break;
case 543: sName = "Epic Energy Resistance Acid 1"; break;
case 544: sName = "Epic Energy Resistance Acid 2"; break;
case 545: sName = "Epic Energy Resistance Acid 3"; break;
case 546: sName = "Epic Energy Resistance Acid 4"; break;
case 547: sName = "Epic Energy Resistance Acid 5"; break;
case 548: sName = "Epic Energy Resistance Acid 6"; break;
case 549: sName = "Epic Energy Resistance Acid 7"; break;
}
}
}
else if (nFeat < 600)
{
if (nFeat < 560)
{
switch (nFeat)
{
case 550: sName = "Epic Energy Resistance Acid 8"; break;
case 551: sName = "Epic Energy Resistance Acid 9"; break;
case 552: sName = "Epic Energy Resistance Acid 10"; break;
case 553: sName = "Epic Energy Resistance Fire 1"; break;
case 554: sName = "Epic Energy Resistance Fire 2"; break;
case 555: sName = "Epic Energy Resistance Fire 3"; break;
case 556: sName = "Epic Energy Resistance Fire 4"; break;
case 557: sName = "Epic Energy Resistance Fire 5"; break;
case 558: sName = "Epic Energy Resistance Fire 6"; break;
case 559: sName = "Epic Energy Resistance Fire 7"; break;
}
}
else if (nFeat < 570)
{
switch (nFeat)
{
case 560: sName = "Epic Energy Resistance Fire 8"; break;
case 561: sName = "Epic Energy Resistance Fire 9"; break;
case 562: sName = "Epic Energy Resistance Fire 10"; break;
case 563: sName = "Epic Energy Resistance Electrical 1"; break;
case 564: sName = "Epic Energy Resistance Electrical 2"; break;
case 565: sName = "Epic Energy Resistance Electrical 3"; break;
case 566: sName = "Epic Energy Resistance Electrical 4"; break;
case 567: sName = "Epic Energy Resistance Electrical 5"; break;
case 568: sName = "Epic Energy Resistance Electrical 6"; break;
case 569: sName = "Epic Energy Resistance Electrical 7"; break;
}
}
else if (nFeat < 580)
{
switch (nFeat)
{
case 570: sName = "Epic Energy Resistance Electrical 8"; break;
case 571: sName = "Epic Energy Resistance Electrical 9"; break;
case 572: sName = "Epic Energy Resistance Electrical 10"; break;
case 573: sName = "Epic Energy Resistance Sonic 1"; break;
case 574: sName = "Epic Energy Resistance Sonic 2"; break;
case 575: sName = "Epic Energy Resistance Sonic 3"; break;
case 576: sName = "Epic Energy Resistance Sonic 4"; break;
case 577: sName = "Epic Energy Resistance Sonic 5"; break;
case 578: sName = "Epic Energy Resistance Sonic 6"; break;
case 579: sName = "Epic Energy Resistance Sonic 7"; break;
}
}
else if (nFeat < 590)
{
switch (nFeat)
{
case 580: sName = "Epic Energy Resistance Sonic 8"; break;
case 581: sName = "Epic Energy Resistance Sonic 9"; break;
case 582: sName = "Epic Energy Resistance Sonic 10"; break;
case 583: sName = "Epic Fortitude"; break;
case 584: sName = "Epic Prowess"; break;
case 585: sName = "Epic Reflexes"; break;
case 586: sName = "Epic Reputation"; break;
case 587: sName = "Epic Skill Focus Animal Empathy"; break;
case 588: sName = "Epic Skill Focus Appraise"; break;
case 589: sName = "Epic Skill Focus Concentration"; break;
}
}
else //<600
{
switch (nFeat)
{
case 590: sName = "Epic Skill Focus Craft Trap"; break;
case 591: sName = "Epic Skill Focus Disabletrap"; break;
case 592: sName = "Epic Skill Focus Discipline"; break;
case 593: sName = "Epic Skill Focus Heal"; break;
case 594: sName = "Epic Skill Focus Hide"; break;
case 595: sName = "Epic Skill Focus Listen"; break;
case 596: sName = "Epic Skill Focus Lore"; break;
case 597: sName = "Epic Skill Focus Movesilently"; break;
case 598: sName = "Epic Skill Focus Openlock"; break;
case 599: sName = "Epic Skill Focus Parry"; break;
}
}
}
else if (nFeat < 650)
{
if (nFeat < 610)
{
switch (nFeat)
{
case 600: sName = "Epic Skill Focus Perform"; break;
case 601: sName = "Epic Skill Focus Persuade"; break;
case 602: sName = "Epic Skill Focus Pickpocket"; break;
case 603: sName = "Epic Skill Focus Search"; break;
case 604: sName = "Epic Skill Focus Settrap"; break;
case 605: sName = "Epic Skill Focus Spellcraft"; break;
case 606: sName = "Epic Skill Focus Spot"; break;
case 607: sName = "Epic Skill Focus Taunt"; break;
case 608: sName = "Epic Skill Focus Tumble"; break;
case 609: sName = "Epic Skill Focus Usemagicdevice"; break;
}
}
else if (nFeat < 620)
{
switch (nFeat)
{
case 610: sName = "Epic Spell Focus Abjuration"; break;
case 611: sName = "Epic Spell Focus Conjuration"; break;
case 612: sName = "Epic Spell Focus Divination"; break;
case 613: sName = "Epic Spell Focus Enchantment"; break;
case 614: sName = "Epic Spell Focus Evocation"; break;
case 615: sName = "Epic Spell Focus Illusion"; break;
case 616: sName = "Epic Spell Focus Necromancy"; break;
case 617: sName = "Epic Spell Focus Transmutation"; break;
case 618: sName = "Epic Spell Penetration"; break;
case 619: sName = "Epic Weapon Focus Club"; break;
}
}
else if (nFeat < 630)
{
switch (nFeat)
{
case 620: sName = "Epic Weapon Focus Dagger"; break;
case 621: sName = "Epic Weapon Focus Dart"; break;
case 622: sName = "Epic Weapon Focus Heavycrossbow"; break;
case 623: sName = "Epic Weapon Focus Lightcrossbow"; break;
case 624: sName = "Epic Weapon Focus Lightmace"; break;
case 625: sName = "Epic Weapon Focus Morningstar"; break;
case 626: sName = "Epic Weapon Focus Quarterstaff"; break;
case 627: sName = "Epic Weapon Focus Shortspear"; break;
case 628: sName = "Epic Weapon Focus Sickle"; break;
case 629: sName = "Epic Weapon Focus Sling"; break;
}
}
else if (nFeat < 640)
{
switch (nFeat)
{
case 630: sName = "Epic Weapon Focus Unarmed"; break;
case 631: sName = "Epic Weapon Focus Longbow"; break;
case 632: sName = "Epic Weapon Focus Shortbow"; break;
case 633: sName = "Epic Weapon Focus Shortsword"; break;
case 634: sName = "Epic Weapon Focus Rapier"; break;
case 635: sName = "Epic Weapon Focus Scimitar"; break;
case 636: sName = "Epic Weapon Focus Longsword"; break;
case 637: sName = "Epic Weapon Focus Greatsword"; break;
case 638: sName = "Epic Weapon Focus Handaxe"; break;
case 639: sName = "Epic Weapon Focus Throwingaxe"; break;
}
}
else //<650
{
switch (nFeat)
{
case 640: sName = "Epic Weapon Focus Battleaxe"; break;
case 641: sName = "Epic Weapon Focus Greataxe"; break;
case 642: sName = "Epic Weapon Focus Halberd"; break;
case 643: sName = "Epic Weapon Focus Lighthammer"; break;
case 644: sName = "Epic Weapon Focus Lightflail"; break;
case 645: sName = "Epic Weapon Focus Warhammer"; break;
case 646: sName = "Epic Weapon Focus Heavyflail"; break;
case 647: sName = "Epic Weapon Focus Kama"; break;
case 648: sName = "Epic Weapon Focus Kukri"; break;
case 649: sName = "Epic Weapon Focus Shuriken"; break;
}
}
}
else if (nFeat < 700)
{
if (nFeat < 660)
{
switch (nFeat)
{
case 650: sName = "Epic Weapon Focus Scythe"; break;
case 651: sName = "Epic Weapon Focus Katana"; break;
case 652: sName = "Epic Weapon Focus Bastardsword"; break;
case 653: sName = "Epic Weapon Focus Diremace"; break;
case 654: sName = "Epic Weapon Focus Doubleaxe"; break;
case 655: sName = "Epic Weapon Focus Twobladedsword"; break;
case 656: sName = "Epic Weapon Focus Creature"; break;
case 657: sName = "Epic Weapon Specialization Club"; break;
case 658: sName = "Epic Weapon Specialization Dagger"; break;
case 659: sName = "Epic Weapon Specialization Dart"; break;
}
}
else if (nFeat < 670)
{
switch (nFeat)
{
case 660: sName = "Epic Weapon Specialization Heavycrossbow"; break;
case 661: sName = "Epic Weapon Specialization Lightcrossbow"; break;
case 662: sName = "Epic Weapon Specialization Lightmace"; break;
case 663: sName = "Epic Weapon Specialization Morningstar"; break;
case 664: sName = "Epic Weapon Specialization Quarterstaff"; break;
case 665: sName = "Epic Weapon Specialization Shortspear"; break;
case 666: sName = "Epic Weapon Specialization Sickle"; break;
case 667: sName = "Epic Weapon Specialization Sling"; break;
case 668: sName = "Epic Weapon Specialization Unarmed"; break;
case 669: sName = "Epic Weapon Specialization Longbow"; break;
}
}
else if (nFeat < 680)
{
switch (nFeat)
{
case 670: sName = "Epic Weapon Specialization Shortbow"; break;
case 671: sName = "Epic Weapon Specialization Shortsword"; break;
case 672: sName = "Epic Weapon Specialization Rapier"; break;
case 673: sName = "Epic Weapon Specialization Scimitar"; break;
case 674: sName = "Epic Weapon Specialization Longsword"; break;
case 675: sName = "Epic Weapon Specialization Greatsword"; break;
case 676: sName = "Epic Weapon Specialization Handaxe"; break;
case 677: sName = "Epic Weapon Specialization Throwingaxe"; break;
case 678: sName = "Epic Weapon Specialization Battleaxe"; break;
case 679: sName = "Epic Weapon Specialization Greataxe"; break;
}
}
else if (nFeat < 690)
{
switch (nFeat)
{
case 680: sName = "Epic Weapon Specialization Halberd"; break;
case 681: sName = "Epic Weapon Specialization Lighthammer"; break;
case 682: sName = "Epic Weapon Specialization Lightflail"; break;
case 683: sName = "Epic Weapon Specialization Warhammer"; break;
case 684: sName = "Epic Weapon Specialization Heavyflail"; break;
case 685: sName = "Epic Weapon Specialization Kama"; break;
case 686: sName = "Epic Weapon Specialization Kukri"; break;
case 687: sName = "Epic Weapon Specialization Shuriken"; break;
case 688: sName = "Epic Weapon Specialization Scythe"; break;
case 689: sName = "Epic Weapon Specialization Katana"; break;
}
}
else //<700
{
switch (nFeat)
{
case 690: sName = "Epic Weapon Specialization Bastardsword"; break;
case 691: sName = "Epic Weapon Specialization Diremace"; break;
case 692: sName = "Epic Weapon Specialization Doubleaxe"; break;
case 693: sName = "Epic Weapon Specialization Twobladedsword"; break;
case 694: sName = "Epic Weapon Specialization Creature"; break;
case 695: sName = "Epic Will"; break;
case 696: sName = "Epic Improved Combat Casting"; break;
case 697: sName = "Epic Improved Ki Strike 4"; break;
case 698: sName = "Epic Improved Ki Strike 5"; break;
case 699: sName = "Epic Improved Spell Resistance 1"; break;
}
}
}
else //<750
{
if (nFeat < 710)
{
switch (nFeat)
{
case 700: sName = "Epic Improved Spell Resistance 2"; break;
case 701: sName = "Epic Improved Spell Resistance 3"; break;
case 702: sName = "Epic Improved Spell Resistance 4"; break;
case 703: sName = "Epic Improved Spell Resistance 5"; break;
case 704: sName = "Epic Improved Spell Resistance 6"; break;
case 705: sName = "Epic Improved Spell Resistance 7"; break;
case 706: sName = "Epic Improved Spell Resistance 8"; break;
case 707: sName = "Epic Improved Spell Resistance 9"; break;
case 708: sName = "Epic Improved Spell Resistance 10"; break;
case 709: sName = "Epic Overwhelming Critical Club"; break;
}
}
else if (nFeat < 720)
{
switch (nFeat)
{
case 710: sName = "Epic Overwhelming Critical Dagger"; break;
case 711: sName = "Epic Overwhelming Critical Dart"; break;
case 712: sName = "Epic Overwhelming Critical Heavycrossbow"; break;
case 713: sName = "Epic Overwhelming Critical Lightcrossbow"; break;
case 714: sName = "Epic Overwhelming Critical Lightmace"; break;
case 715: sName = "Epic Overwhelming Critical Morningstar"; break;
case 716: sName = "Epic Overwhelming Critical Quarterstaff"; break;
case 717: sName = "Epic Overwhelming Critical Shortspear"; break;
case 718: sName = "Epic Overwhelming Critical Sickle"; break;
case 719: sName = "Epic Overwhelming Critical Sling"; break;
}
}
else if (nFeat < 730)
{
switch (nFeat)
{
case 720: sName = "Epic Overwhelming Critical Unarmed"; break;
case 721: sName = "Epic Overwhelming Critical Longbow"; break;
case 722: sName = "Epic Overwhelming Critical Shortbow"; break;
case 723: sName = "Epic Overwhelming Critical Shortsword"; break;
case 724: sName = "Epic Overwhelming Critical Rapier"; break;
case 725: sName = "Epic Overwhelming Critical Scimitar"; break;
case 726: sName = "Epic Overwhelming Critical Longsword"; break;
case 727: sName = "Epic Overwhelming Critical Greatsword"; break;
case 728: sName = "Epic Overwhelming Critical Handaxe"; break;
case 729: sName = "Epic Overwhelming Critical Throwingaxe"; break;
}
}
else if (nFeat < 740)
{
switch (nFeat)
{
case 730: sName = "Epic Overwhelming Critical Battleaxe"; break;
case 731: sName = "Epic Overwhelming Critical Greataxe"; break;
case 732: sName = "Epic Overwhelming Critical Halberd"; break;
case 733: sName = "Epic Overwhelming Critical Lighthammer"; break;
case 734: sName = "Epic Overwhelming Critical Lightflail"; break;
case 735: sName = "Epic Overwhelming Critical Warhammer"; break;
case 736: sName = "Epic Overwhelming Critical Heavyflail"; break;
case 737: sName = "Epic Overwhelming Critical Kama"; break;
case 738: sName = "Epic Overwhelming Critical Kukri"; break;
case 739: sName = "Epic Overwhelming Critical Shuriken"; break;
}
}
else //750
{
switch (nFeat)
{
case 740: sName = "Epic Overwhelming Critical Scythe"; break;
case 741: sName = "Epic Overwhelming Critical Katana"; break;
case 742: sName = "Epic Overwhelming Critical Bastardsword"; break;
case 743: sName = "Epic Overwhelming Critical Diremace"; break;
case 744: sName = "Epic Overwhelming Critical Doubleaxe"; break;
case 745: sName = "Epic Overwhelming Critical Twobladedsword"; break;
case 746: sName = "Epic Overwhelming Critical Creature"; break;
case 747: sName = "Epic Perfect Health"; break;
case 748: sName = "Epic Self Concealment 1"; break;
case 749: sName = "Epic Self Concealment 2"; break;
}
}
}
}
else
{
if (nFeat < 800)
{
if (nFeat < 760)
{
switch (nFeat)
{
case 750: sName = "Epic Self Concealment 3"; break;
case 751: sName = "Epic Self Concealment 4"; break;
case 752: sName = "Epic Self Concealment 5"; break;
case 753: sName = "Epic Superior Initiative"; break;
case 754: sName = "Epic Toughness 1"; break;
case 755: sName = "Epic Toughness 2"; break;
case 756: sName = "Epic Toughness 3"; break;
case 757: sName = "Epic Toughness 4"; break;
case 758: sName = "Epic Toughness 5"; break;
case 759: sName = "Epic Toughness 6"; break;
}
}
else if (nFeat < 770)
{
switch (nFeat)
{
case 760: sName = "Epic Toughness 7"; break;
case 761: sName = "Epic Toughness 8"; break;
case 762: sName = "Epic Toughness 9"; break;
case 763: sName = "Epic Toughness 10"; break;
case 764: sName = "Epic Great Charisma 1"; break;
case 765: sName = "Epic Great Charisma 2"; break;
case 766: sName = "Epic Great Charisma 3"; break;
case 767: sName = "Epic Great Charisma 4"; break;
case 768: sName = "Epic Great Charisma 5"; break;
case 769: sName = "Epic Great Charisma 6"; break;
}
}
else if (nFeat < 780)
{
switch (nFeat)
{
case 770: sName = "Epic Great Charisma 7"; break;
case 771: sName = "Epic Great Charisma 8"; break;
case 772: sName = "Epic Great Charisma 9"; break;
case 773: sName = "Epic Great Charisma 10"; break;
case 774: sName = "Epic Great Constitution 1"; break;
case 775: sName = "Epic Great Constitution 2"; break;
case 776: sName = "Epic Great Constitution 3"; break;
case 777: sName = "Epic Great Constitution 4"; break;
case 778: sName = "Epic Great Constitution 5"; break;
case 779: sName = "Epic Great Constitution 6"; break;
}
}
else if (nFeat < 790)
{
switch (nFeat)
{
case 780: sName = "Epic Great Constitution 7"; break;
case 781: sName = "Epic Great Constitution 8"; break;
case 782: sName = "Epic Great Constitution 9"; break;
case 783: sName = "Epic Great Constitution 10"; break;
case 784: sName = "Epic Great Dexterity 1"; break;
case 785: sName = "Epic Great Dexterity 2"; break;
case 786: sName = "Epic Great Dexterity 3"; break;
case 787: sName = "Epic Great Dexterity 4"; break;
case 788: sName = "Epic Great Dexterity 5"; break;
case 789: sName = "Epic Great Dexterity 6"; break;
}
}
else //<800
{
switch (nFeat)
{
case 790: sName = "Epic Great Dexterity 7"; break;
case 791: sName = "Epic Great Dexterity 8"; break;
case 792: sName = "Epic Great Dexterity 9"; break;
case 793: sName = "Epic Great Dexterity 10"; break;
case 794: sName = "Epic Great Intelligence 1"; break;
case 795: sName = "Epic Great Intelligence 2"; break;
case 796: sName = "Epic Great Intelligence 3"; break;
case 797: sName = "Epic Great Intelligence 4"; break;
case 798: sName = "Epic Great Intelligence 5"; break;
case 799: sName = "Epic Great Intelligence 6"; break;
}
}
}
else if (nFeat < 850)
{
if (nFeat < 810)
{
switch (nFeat)
{
case 800: sName = "Epic Great Intelligence 7"; break;
case 801: sName = "Epic Great Intelligence 8"; break;
case 802: sName = "Epic Great Intelligence 9"; break;
case 803: sName = "Epic Great Intelligence 10"; break;
case 804: sName = "Epic Great Wisdom 1"; break;
case 805: sName = "Epic Great Wisdom 2"; break;
case 806: sName = "Epic Great Wisdom 3"; break;
case 807: sName = "Epic Great Wisdom 4"; break;
case 808: sName = "Epic Great Wisdom 5"; break;
case 809: sName = "Epic Great Wisdom 6"; break;
}
}
else if (nFeat < 820)
{
switch (nFeat)
{
case 810: sName = "Epic Great Wisdom 7"; break;
case 811: sName = "Epic Great Wisdom 8"; break;
case 812: sName = "Epic Great Wisdom 9"; break;
case 813: sName = "Epic Great Wisdom 10"; break;
case 814: sName = "Epic Great Strength 1"; break;
case 815: sName = "Epic Great Strength 2"; break;
case 816: sName = "Epic Great Strength 3"; break;
case 817: sName = "Epic Great Strength 4"; break;
case 818: sName = "Epic Great Strength 5"; break;
case 819: sName = "Epic Great Strength 6"; break;
}
}
else if (nFeat < 830)
{
switch (nFeat)
{
case 820: sName = "Epic Great Strength 7"; break;
case 821: sName = "Epic Great Strength 8"; break;
case 822: sName = "Epic Great Strength 9"; break;
case 823: sName = "Epic Great Strength 10"; break;
case 824: sName = "Epic Great Smiting 1"; break;
case 825: sName = "Epic Great Smiting 2"; break;
case 826: sName = "Epic Great Smiting 3"; break;
case 827: sName = "Epic Great Smiting 4"; break;
case 828: sName = "Epic Great Smiting 5"; break;
case 829: sName = "Epic Great Smiting 6"; break;
}
}
else if (nFeat < 840)
{
switch (nFeat)
{
case 830: sName = "Epic Great Smiting 7"; break;
case 831: sName = "Epic Great Smiting 8"; break;
case 832: sName = "Epic Great Smiting 9"; break;
case 833: sName = "Epic Great Smiting 10"; break;
case 834: sName = "Epic Improved Sneak Attack 1"; break;
case 835: sName = "Epic Improved Sneak Attack 2"; break;
case 836: sName = "Epic Improved Sneak Attack 3"; break;
case 837: sName = "Epic Improved Sneak Attack 4"; break;
case 838: sName = "Epic Improved Sneak Attack 5"; break;
case 839: sName = "Epic Improved Sneak Attack 6"; break;
}
}
else //<850
{
switch (nFeat)
{
case 840: sName = "Epic Improved Sneak Attack 7"; break;
case 841: sName = "Epic Improved Sneak Attack 8"; break;
case 842: sName = "Epic Improved Sneak Attack 9"; break;
case 843: sName = "Epic Improved Sneak Attack 10"; break;
case 844: sName = "Epic Improved Stunning Fist 1"; break;
case 845: sName = "Epic Improved Stunning Fist 2"; break;
case 846: sName = "Epic Improved Stunning Fist 3"; break;
case 847: sName = "Epic Improved Stunning Fist 4"; break;
case 848: sName = "Epic Improved Stunning Fist 5"; break;
case 849: sName = "Epic Improved Stunning Fist 6"; break;
}
}
}
else if (nFeat < 900)
{
if (nFeat < 860)
{
switch (nFeat)
{
case 850: sName = "Epic Improved Stunning Fist 7"; break;
case 851: sName = "Epic Improved Stunning Fist 8"; break;
case 852: sName = "Epic Improved Stunning Fist 9"; break;
case 853: sName = "Epic Improved Stunning Fist 10"; break;
case 854: sName = "Epic Planar Turning"; break;
case 855: sName = "Epic Bane Of Enemies"; break;
case 856: sName = "Epic Dodge"; break;
case 857: sName = "Epic Automatic Quicken 1"; break;
case 858: sName = "Epic Automatic Quicken 2"; break;
case 859: sName = "Epic Automatic Quicken 3"; break;
}
}
else if (nFeat < 870)
{
switch (nFeat)
{
case 860: sName = "Epic Automatic Silent Spell 1"; break;
case 861: sName = "Epic Automatic Silent Spell 2"; break;
case 862: sName = "Epic Automatic Silent Spell 3"; break;
case 863: sName = "Epic Automatic Still Spell 1"; break;
case 864: sName = "Epic Automatic Still Spell 2"; break;
case 865: sName = "Epic Automatic Still Spell 3"; break;
case 867: sName = "Whirlwind Attack"; break;
case 868: sName = "Improved Whirlwind"; break;
case 869: sName = "Mighty Rage"; break;
}
}
else if (nFeat < 880)
{
switch (nFeat)
{
case 870: sName = "Epic Lasting Inspiration"; break;
case 871: sName = "Curse Song"; break;
case 872: sName = "Wild Shape Undead"; break;
case 873: sName = "Wild Shape Dragon"; break;
case 874: sName = "Epic Spell Mummy Dust"; break;
case 875: sName = "Epic Spell Dragon Knight"; break;
case 876: sName = "Epic Spell Hellball"; break;
case 877: sName = "Epic Spell Mage Armour"; break;
case 878: sName = "Epic Spell Ruin"; break;
case 879: sName = "Weapon Of Choice Sickle"; break;
}
}
else if (nFeat < 890)
{
switch (nFeat)
{
case 880: sName = "Weapon Of Choice Kama"; break;
case 881: sName = "Weapon Of Choice Kukri"; break;
case 882: sName = "Ki Damage"; break;
case 883: sName = "Increase Multiplier"; break;
case 884: sName = "Superior Weapon Focus"; break;
case 885: sName = "Ki Critical"; break;
case 886: sName = "Bone Skin 2"; break;
case 889: sName = "Animate Dead"; break;
}
}
else //<900
{
switch (nFeat)
{
case 890: sName = "Summon Undead"; break;
case 891: sName = "Deathless Vigor"; break;
case 892: sName = "Undead Graft 1"; break;
case 893: sName = "Undead Graft 2"; break;
case 894: sName = "Tough As Bone"; break;
case 895: sName = "Summon Greater Undead"; break;
case 896: sName = "Deathless Mastery"; break;
case 897: sName = "Deathless Master Touch"; break;
case 898: sName = "Greater Wildshape 1"; break;
}
}
}
else if (nFeat < 950)
{
if (nFeat < 910)
{
switch (nFeat)
{
case 900: sName = "Greater Wildshape 2"; break;
case 901: sName = "Greater Wildshape 3"; break;
case 902: sName = "Humanoid Shape"; break;
case 903: sName = "Greater Wildshape 4"; break;
case 904: sName = "Sacred Defense 1"; break;
case 905: sName = "Sacred Defense 2"; break;
case 906: sName = "Sacred Defense 3"; break;
case 907: sName = "Sacred Defense 4"; break;
case 908: sName = "Sacred Defense 5"; break;
case 909: sName = "Divine Wrath"; break;
}
}
else if (nFeat < 920)
{
switch (nFeat)
{
case 910: sName = "Extra Smiting"; break;
case 911: sName = "Skill Focus Craft Armor"; break;
case 912: sName = "Skill Focus Craft Weapon"; break;
case 913: sName = "Epic Skill Focus Craft Armor"; break;
case 914: sName = "Epic Skill Focus Craft Weapon"; break;
case 915: sName = "Skill Focus Bluff"; break;
case 916: sName = "Skill Focus Intimidate"; break;
case 917: sName = "Epic Skill Focus Bluff"; break;
case 918: sName = "Epic Skill Focus Intimidate"; break;
case 919: sName = "Weapon Of Choice Club"; break;
}
}
else if (nFeat < 930)
{
switch (nFeat)
{
case 920: sName = "Weapon Of Choice Dagger"; break;
case 921: sName = "Weapon Of Choice Lightmace"; break;
case 922: sName = "Weapon Of Choice Morningstar"; break;
case 923: sName = "Weapon Of Choice Quarterstaff"; break;
case 924: sName = "Weapon Of Choice Shortspear"; break;
case 925: sName = "Weapon Of Choice Shortsword"; break;
case 926: sName = "Weapon Of Choice Rapier"; break;
case 927: sName = "Weapon Of Choice Scimitar"; break;
case 928: sName = "Weapon Of Choice Longsword"; break;
case 929: sName = "Weapon Of Choice Greatsword"; break;
}
}
else if (nFeat < 940)
{
switch (nFeat)
{
case 930: sName = "Weapon Of Choice Handaxe"; break;
case 931: sName = "Weapon Of Choice Battleaxe"; break;
case 932: sName = "Weapon Of Choice Greataxe"; break;
case 933: sName = "Weapon Of Choice Halberd"; break;
case 934: sName = "Weapon Of Choice Lighthammer"; break;
case 935: sName = "Weapon Of Choice Lightflail"; break;
case 936: sName = "Weapon Of Choice Warhammer"; break;
case 937: sName = "Weapon Of Choice Heavyflail"; break;
case 938: sName = "Weapon Of Choice Scythe"; break;
case 939: sName = "Weapon Of Choice Katana"; break;
}
}
else //<950
{
switch (nFeat)
{
case 940: sName = "Weapon Of Choice Bastardsword"; break;
case 941: sName = "Weapon Of Choice Diremace"; break;
case 942: sName = "Weapon Of Choice Doubleaxe"; break;
case 943: sName = "Weapon Of Choice Twobladedsword"; break;
case 944: sName = "Brew Potion"; break;
case 945: sName = "Scribe Scroll"; break;
case 946: sName = "Craft Wand"; break;
case 947: sName = "Dwarven Defender Defensive Stance"; break;
case 948: sName = "Damage Reduction 6"; break;
case 949: sName = "Prestige Defensive Awareness 1"; break;
}
}
}
else if (nFeat < 1000)
{
if (nFeat < 960)
{
switch (nFeat)
{
case 950: sName = "Prestige Defensive Awareness 2"; break;
case 951: sName = "Prestige Defensive Awareness 3"; break;
case 952: sName = "Weapon Focus Dwaxe"; break;
case 953: sName = "Weapon Specialization Dwaxe"; break;
case 954: sName = "Improved Critical Dwaxe"; break;
case 955: sName = "Epic Devastating Critical Dwaxe"; break;
case 956: sName = "Epic Weapon Focus Dwaxe"; break;
case 957: sName = "Epic Weapon Specialization Dwaxe"; break;
case 958: sName = "Epic Overwhelming Critical Dwaxe"; break;
case 959: sName = "Weapon Of Choice Dwaxe"; break;
}
}
else if (nFeat < 970)
{
switch (nFeat)
{
case 960: sName = "Use Poison"; break;
case 961: sName = "Dragon Armor"; break;
case 962: sName = "Dragon Abilities"; break;
case 963: sName = "Dragon Immune Paralysis"; break;
case 964: sName = "Dragon Immune Fire"; break;
case 965: sName = "Dragon Dis Breath"; break;
case 966: sName = "Epic Fighter"; break;
case 967: sName = "Epic Barbarian"; break;
case 968: sName = "Epic Bard"; break;
case 969: sName = "Epic Cleric"; break;
}
}
else if (nFeat < 980)
{
switch (nFeat)
{
case 970: sName = "Epic Druid"; break;
case 971: sName = "Epic Monk"; break;
case 972: sName = "Epic Paladin"; break;
case 973: sName = "Epic Ranger"; break;
case 974: sName = "Epic Rogue"; break;
case 975: sName = "Epic Sorcerer"; break;
case 976: sName = "Epic Wizard"; break;
case 977: sName = "Epic Arcane Archer"; break;
case 978: sName = "Epic Assassin"; break;
case 979: sName = "Epic Blackguard"; break;
}
}
else if (nFeat < 990)
{
switch (nFeat)
{
case 980: sName = "Epic Shadowdancer"; break;
case 981: sName = "Epic Harper Scout"; break;
case 982: sName = "Epic Divine Champion"; break;
case 983: sName = "Epic Weapon Master"; break;
case 984: sName = "Epic Pale Master"; break;
case 985: sName = "Epic Dwarven Defender"; break;
case 986: sName = "Epic Shifter"; break;
case 987: sName = "Epic Red Dragon Disc"; break;
case 988: sName = "Epic Thundering Rage"; break;
case 989: sName = "Epic Terrifying Rage"; break;
}
}
else //<1000
{
switch (nFeat)
{
case 990: sName = "Epic Spell Epic Warding"; break;
case 991: sName = "Prestige Master Crafter"; break;
case 992: sName = "Prestige Scrounger"; break;
case 993: sName = "Weapon Focus Whip"; break;
case 994: sName = "Weapon Specialization Whip"; break;
case 995: sName = "Improved Critical Whip"; break;
case 996: sName = "Epic Devastating Critical Whip"; break;
case 997: sName = "Epic Weapon Focus Whip"; break;
case 998: sName = "Epic Weapon Specialization Whip"; break;
case 999: sName = "Epic Overwhelming Critical Whip"; break;
}
}
}
else //through 1071
{
if (nFeat < 1010)
{
switch (nFeat)
{
case 1000: sName = "Weapon Of Choice Whip"; break;
case 1001: sName = "Epic Character"; break;
case 1002: sName = "Epic Epic Shadowlord"; break;
case 1003: sName = "Epic Epic Fiend"; break;
case 1004: sName = "Prestige Death Attack 6"; break;
case 1005: sName = "Prestige Death Attack 7"; break;
case 1006: sName = "Prestige Death Attack 8"; break;
case 1007: sName = "Blackguard Sneak Attack 4d6"; break;
case 1008: sName = "Blackguard Sneak Attack 5d6"; break;
case 1009: sName = "Blackguard Sneak Attack 6d6"; break;
}
}
else if (nFeat < 1020)
{
switch (nFeat)
{
case 1010: sName = "Blackguard Sneak Attack 7d6"; break;
case 1011: sName = "Blackguard Sneak Attack 8d6"; break;
case 1012: sName = "Blackguard Sneak Attack 9d6"; break;
case 1013: sName = "Blackguard Sneak Attack 10d6"; break;
case 1014: sName = "Blackguard Sneak Attack 11d6"; break;
case 1015: sName = "Blackguard Sneak Attack 12d6"; break;
case 1016: sName = "Blackguard Sneak Attack 13d6"; break;
case 1017: sName = "Blackguard Sneak Attack 14d6"; break;
case 1018: sName = "Blackguard Sneak Attack 15d6"; break;
case 1019: sName = "Prestige Death Attack 9"; break;
}
}
else if (nFeat < 1030)
{
switch (nFeat)
{
case 1020: sName = "Prestige Death Attack 10"; break;
case 1021: sName = "Prestige Death Attack 11"; break;
case 1022: sName = "Prestige Death Attack 12"; break;
case 1023: sName = "Prestige Death Attack 13"; break;
case 1024: sName = "Prestige Death Attack 14"; break;
case 1025: sName = "Prestige Death Attack 15"; break;
case 1026: sName = "Prestige Death Attack 16"; break;
case 1027: sName = "Prestige Death Attack 17"; break;
case 1028: sName = "Prestige Death Attack 18"; break;
case 1029: sName = "Prestige Death Attack 19"; break;
}
}
else if (nFeat < 1040)
{
switch (nFeat)
{
case 1030: sName = "Prestige Death Attack 20"; break;
case 1032: sName = "Sneak Attack 11"; break;
case 1033: sName = "Sneak Attack 12"; break;
case 1034: sName = "Sneak Attack 13"; break;
case 1035: sName = "Sneak Attack 14"; break;
case 1036: sName = "Sneak Attack 15"; break;
case 1037: sName = "Sneak Attack 16"; break;
case 1038: sName = "Sneak Attack 17"; break;
case 1039: sName = "Sneak Attack 18"; break;
}
}
else if (nFeat < 1050)
{
switch (nFeat)
{
case 1040: sName = "Sneak Attack 19"; break;
case 1041: sName = "Sneak Attack 20"; break;
case 1042: sName = "Dragon Hdincrease D6"; break;
case 1043: sName = "Dragon Hdincrease D8"; break;
case 1044: sName = "Dragon Hdincrease D10"; break;
case 1045: sName = "Prestige Enchant Arrow 6"; break;
case 1046: sName = "Prestige Enchant Arrow 7"; break;
case 1047: sName = "Prestige Enchant Arrow 8"; break;
case 1048: sName = "Prestige Enchant Arrow 9"; break;
case 1049: sName = "Prestige Enchant Arrow 10"; break;
}
}
else if (nFeat < 1060)
{
switch (nFeat)
{
case 1050: sName = "Prestige Enchant Arrow 11"; break;
case 1051: sName = "Prestige Enchant Arrow 12"; break;
case 1052: sName = "Prestige Enchant Arrow 13"; break;
case 1053: sName = "Prestige Enchant Arrow 14"; break;
case 1054: sName = "Prestige Enchant Arrow 15"; break;
case 1055: sName = "Prestige Enchant Arrow 16"; break;
case 1056: sName = "Prestige Enchant Arrow 17"; break;
case 1057: sName = "Prestige Enchant Arrow 18"; break;
case 1058: sName = "Prestige Enchant Arrow 19"; break;
case 1059: sName = "Prestige Enchant Arrow 20"; break;
}
}
else //through 1071
{
switch (nFeat)
{
case 1060: sName = "Epic Outsider Shape"; break;
case 1061: sName = "Epic Construct Shape"; break;
case 1062: sName = "Epic Shifter Infinite Wildshape 1"; break;
case 1063: sName = "Epic Shifter Infinite Wildshape 2"; break;
case 1064: sName = "Epic Shifter Infinite Wildshape 3"; break;
case 1065: sName = "Epic Shifter Infinite Wildshape 4"; break;
case 1066: sName = "Epic Shifter Infinite Humanoid Shape"; break;
case 1067: sName = "Epic Barbarian Damage Reduction"; break;
case 1068: sName = "Epic Druid Infinite Wildshape"; break;
case 1069: sName = "Epic Druid Infinite Elemental Shape"; break;
case 1070: sName = "Prestige Poison Save Epic"; break;
case 1071: sName = "Epic Superior Weapon Focus"; break;
}
}
}
}
return sName;
}
int GetIsFeatLimitedUses(int nFeat)
{
int nReturn = FALSE;
if (nFeat < 330)
{
if (nFeat < 300)
{
switch(nFeat)
{
case 39: nReturn = TRUE; break;
case 199: nReturn = TRUE; break;
case 211: nReturn = TRUE; break;
case 223: nReturn = TRUE; break;
case 257: nReturn = TRUE; break;
case 293: nReturn = TRUE; break;
case 294: nReturn = TRUE; break;
case 296: nReturn = TRUE; break;
case 297: nReturn = TRUE; break;
case 299: nReturn = TRUE; break;
}
}
else
{
switch(nFeat)
{
case 301: nReturn = TRUE; break;
case 302: nReturn = TRUE; break;
case 303: nReturn = TRUE; break;
case 304: nReturn = TRUE; break;
case 305: nReturn = TRUE; break;
case 306: nReturn = TRUE; break;
case 307: nReturn = TRUE; break;
case 308: nReturn = TRUE; break;
case 310: nReturn = TRUE; break;
case 324: nReturn = TRUE; break;
case 326: nReturn = TRUE; break;
case 327: nReturn = TRUE; break;
case 328: nReturn = TRUE; break;
case 329: nReturn = TRUE; break;
}
}
}
else if (nFeat < 400)
{
if (nFeat < 360)
{
switch(nFeat)
{
case 330: nReturn = TRUE; break;
case 331: nReturn = TRUE; break;
case 335: nReturn = TRUE; break;
case 336: nReturn = TRUE; break;
case 337: nReturn = TRUE; break;
case 338: nReturn = TRUE; break;
case 339: nReturn = TRUE; break;
case 340: nReturn = TRUE; break;
case 341: nReturn = TRUE; break;
case 342: nReturn = TRUE; break;
case 355: nReturn = TRUE; break;
case 356: nReturn = TRUE; break;
case 357: nReturn = TRUE; break;
case 358: nReturn = TRUE; break;
case 359: nReturn = TRUE; break;
}
}
else
{
switch(nFeat)
{
case 360: nReturn = TRUE; break;
case 361: nReturn = TRUE; break;
case 362: nReturn = TRUE; break;
case 363: nReturn = TRUE; break;
case 364: nReturn = TRUE; break;
case 365: nReturn = TRUE; break;
case 366: nReturn = TRUE; break;
case 367: nReturn = TRUE; break;
case 368: nReturn = TRUE; break;
case 369: nReturn = TRUE; break;
case 370: nReturn = TRUE; break;
case 371: nReturn = TRUE; break;
case 372: nReturn = TRUE; break;
case 373: nReturn = TRUE; break;
}
}
}
else if (nFeat < 500)
{
if (nFeat < 460)
{
switch(nFeat)
{
case 434: nReturn = TRUE; break;
case 435: nReturn = TRUE; break;
case 436: nReturn = TRUE; break;
case 438: nReturn = TRUE; break;
case 440: nReturn = TRUE; break;
case 441: nReturn = TRUE; break;
case 442: nReturn = TRUE; break;
case 443: nReturn = TRUE; break;
case 444: nReturn = TRUE; break;
case 450: nReturn = TRUE; break;
case 451: nReturn = TRUE; break;
case 452: nReturn = TRUE; break;
case 453: nReturn = TRUE; break;
case 454: nReturn = TRUE; break;
}
}
else
{
switch(nFeat)
{
case 468: nReturn = TRUE; break;
case 469: nReturn = TRUE; break;
case 470: nReturn = TRUE; break;
case 471: nReturn = TRUE; break;
case 472: nReturn = TRUE; break;
case 474: nReturn = TRUE; break;
case 475: nReturn = TRUE; break;
case 476: nReturn = TRUE; break;
case 477: nReturn = TRUE; break;
case 478: nReturn = TRUE; break;
case 479: nReturn = TRUE; break;
case 491: nReturn = TRUE; break;
}
}
}
else
{
if (nFeat < 900)
{
switch(nFeat)
{
case 869: nReturn = TRUE; break;
case 872: nReturn = TRUE; break;
case 873: nReturn = TRUE; break;
case 874: nReturn = TRUE; break;
case 875: nReturn = TRUE; break;
case 876: nReturn = TRUE; break;
case 877: nReturn = TRUE; break;
case 878: nReturn = TRUE; break;
case 882: nReturn = TRUE; break;
case 889: nReturn = TRUE; break;
case 890: nReturn = TRUE; break;
case 892: nReturn = TRUE; break;
case 893: nReturn = TRUE; break;
case 895: nReturn = TRUE; break;
case 897: nReturn = TRUE; break;
case 898: nReturn = TRUE; break;
}
}
else
{
switch(nFeat)
{
case 900: nReturn = TRUE; break;
case 901: nReturn = TRUE; break;
case 902: nReturn = TRUE; break;
case 903: nReturn = TRUE; break;
case 909: nReturn = TRUE; break;
case 947: nReturn = TRUE; break;
case 965: nReturn = TRUE; break;
case 990: nReturn = TRUE; break;
case 1060: nReturn = TRUE; break;
case 1061: nReturn = TRUE; break;
}
}
}
return nReturn;
}
//below used to compile
/*
void main()
{
}
*/