mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
2907 lines
57 KiB
C++
2907 lines
57 KiB
C++
// This file needs more than just 'std' updates
|
|
|
|
uint16 Mob::MaxSkill_weapon(uint16 skillid, uint16 class_, uint16 level) const
|
|
{
|
|
if (skillid > HIGHEST_SKILL) {
|
|
return 0;
|
|
}
|
|
uint16 r_value = 0;
|
|
switch (skillid) {
|
|
case _1H_BLUNT:
|
|
case _2H_BLUNT:
|
|
case PIERCING:
|
|
case HAND_TO_HAND:
|
|
case _1H_SLASHING:
|
|
case _2H_SLASHING: {
|
|
switch (class_) {
|
|
// Pure melee classes
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
r_value = 5 + (level * 5);
|
|
if ( level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if ( level > 50 && r_value > 250 ) {
|
|
r_value = 250;
|
|
}
|
|
switch (skillid) {
|
|
case PIERCING: {
|
|
if ( r_value > 240 ) {
|
|
r_value = 240;
|
|
}
|
|
break;
|
|
}
|
|
case HAND_TO_HAND: {
|
|
if ( r_value > 100 ) {
|
|
r_value = 100;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case MONK:
|
|
case MONKGM: {
|
|
r_value = 5 + (level * 5);
|
|
if ( level < 51 && r_value > 240)
|
|
if ( r_value > 240 ) {
|
|
r_value = 240;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND: {
|
|
if ( r_value > 225 && level < 51 ) {
|
|
r_value = 225;
|
|
}
|
|
break;
|
|
}
|
|
case PIERCING:
|
|
case _1H_SLASHING:
|
|
case _2H_SLASHING: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
r_value = 5 + (level * 5);
|
|
if ( level > 50 && r_value > 250 ) {
|
|
r_value = 250;
|
|
}
|
|
if ( level < 51 ) {
|
|
if ( r_value > 200 && skillid != PIERCING ) {
|
|
r_value = 200;
|
|
}
|
|
if ( r_value > 210 && skillid == PIERCING ) {
|
|
r_value = 210;
|
|
}
|
|
}
|
|
if (skillid == HAND_TO_HAND && r_value > 100) {
|
|
r_value = 100;
|
|
}
|
|
break;
|
|
}
|
|
case BERSERKER:
|
|
case BERSERKERGM: {
|
|
r_value = 5 + (level * 5);
|
|
if ( level < 51 && r_value > 240) {
|
|
r_value = 240;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND: {
|
|
if ( r_value > 198) {
|
|
r_value = 198;
|
|
}
|
|
break;
|
|
}
|
|
case PIERCING: {
|
|
if ( r_value > 240) {
|
|
r_value = 240;
|
|
}
|
|
break;
|
|
}
|
|
case _2H_BLUNT:
|
|
case _2H_SLASHING: {
|
|
if ( r_value > 252 ) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
// Priest classes
|
|
case CLERIC:
|
|
case CLERICGM: {
|
|
r_value = 4 + (level * 4);
|
|
if ( r_value > 175 ) {
|
|
r_value = 175;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND: {
|
|
if ( r_value > 75 ) {
|
|
r_value = 75;
|
|
}
|
|
break;
|
|
}
|
|
case PIERCING:
|
|
case _1H_SLASHING:
|
|
case _2H_SLASHING: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case DRUID:
|
|
case DRUIDGM: {
|
|
r_value = 4 + (level * 4);
|
|
if ( r_value > 175 ) {
|
|
r_value = 175;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND: {
|
|
if ( r_value > 75 ) {
|
|
r_value = 75;
|
|
}
|
|
}
|
|
case PIERCING:
|
|
case _2H_SLASHING: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case SHAMAN:
|
|
case SHAMANGM: {
|
|
r_value = 4 + (level * 4);
|
|
if ( r_value > 200 ) {
|
|
r_value = 200;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND: {
|
|
if ( r_value > 75 ) {
|
|
r_value = 75;
|
|
}
|
|
}
|
|
case _1H_SLASHING:
|
|
case _2H_SLASHING: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrids
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
r_value = 5 + (level * 5);
|
|
if ( level > 50 ) {
|
|
if ( r_value > 250 ) {
|
|
r_value = 250;
|
|
}
|
|
switch (skillid) {
|
|
case PIERCING: {
|
|
if ( r_value > 240 ) {
|
|
r_value = 240;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
} else if ( level < 51 ) {
|
|
if ( r_value > 200 ) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND: {
|
|
if ( r_value > 100 ) {
|
|
r_value = 100;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: {
|
|
r_value = 5 + (level * 5);
|
|
if ( level > 50 && r_value > 225 ) {
|
|
r_value = 225;
|
|
}
|
|
if ( level < 51 && r_value > 200 ) {
|
|
r_value = 200;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND: {
|
|
if ( r_value > 100 ) {
|
|
r_value = 100;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case BARD:
|
|
case BARDGM: {
|
|
r_value = 5 + (level * 5);
|
|
if ( level > 51 && r_value > 225 ) {
|
|
r_value = 225;
|
|
}
|
|
if ( level < 51 && r_value > 200 ) {
|
|
r_value = 200;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND: {
|
|
if ( r_value > 100 ) {
|
|
r_value = 100;
|
|
}
|
|
break;
|
|
}
|
|
case _2H_BLUNT:
|
|
case _2H_SLASHING: {
|
|
r_value = 0;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case BEASTLORD:
|
|
case BEASTLORDGM: {
|
|
r_value = 4 + (level * 4);
|
|
if ( level > 51 ) {
|
|
if ( r_value > 225 ) {
|
|
r_value = 225;
|
|
}
|
|
}
|
|
if ( level < 51 && r_value > 200 ) {
|
|
r_value = 200;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND: {
|
|
r_value = 5 + (level * 5); // Beastlords use different max skill formula only for h2h 200/250
|
|
if ( level < 51 ) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
case _1H_SLASHING:
|
|
case _2H_SLASHING: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
if ( r_value > 250 ) {
|
|
r_value = 250;
|
|
}
|
|
break;
|
|
}
|
|
// Pure casters
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM: {
|
|
r_value = 3 + (level * 3);
|
|
if ( r_value > 110 ) {
|
|
r_value = 110;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND: {
|
|
if ( r_value > 75 ) {
|
|
r_value = 75;
|
|
}
|
|
}
|
|
case _1H_SLASHING:
|
|
case _2H_SLASHING: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
#if EQDEBUG
|
|
std::cout << "MaxSkill_Weapon() Unknown class: " << class_ << std::endl;
|
|
#endif
|
|
break;
|
|
}
|
|
break;// Switch Class
|
|
}
|
|
default:
|
|
#if EQDEBUG
|
|
std::cout << "Unknown weapon skill: " << skillid << std::endl;
|
|
#endif
|
|
break;
|
|
}// Switch skill
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
return r_value;
|
|
}
|
|
|
|
uint16 Mob::MaxSkill_offensive(uint16 skillid, uint16 class_, uint16 level) const
|
|
{
|
|
uint16 r_value = 0;
|
|
switch (skillid) {
|
|
case OFFENSE: {
|
|
switch (class_) {
|
|
// Melee
|
|
case WARRIOR:
|
|
case WARRIORGM:
|
|
case BERSERKER:
|
|
case BERSERKERGM:
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
// 210 252 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
case MONK:
|
|
case MONKGM: {
|
|
// 230 252 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 230) {
|
|
r_value = 230;
|
|
}
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM: {
|
|
// 200 200 4*level+4
|
|
r_value = ((level * 4) + 4);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD:
|
|
case BEASTLORDGM: {
|
|
// 200 252 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM:
|
|
case BARD:
|
|
case BARDGM: {
|
|
// 200 225 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
if (r_value > 225) {
|
|
r_value = 225;
|
|
}
|
|
break;
|
|
}
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 210 252 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM: {
|
|
// 140 140 level*4
|
|
r_value = (level * 4);
|
|
if (r_value > 140) {
|
|
r_value = 140;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case THROWING: {
|
|
switch (class_) {
|
|
// Melee
|
|
case BERSERKER:
|
|
case BERSERKERGM:
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
// 220 250
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 220) {
|
|
r_value = 220;
|
|
}
|
|
}
|
|
if (r_value > 250) {
|
|
r_value = 250;
|
|
}
|
|
break;
|
|
}
|
|
case WARRIOR:
|
|
case WARRIORGM:
|
|
case MONK:
|
|
case MONKGM: {
|
|
// 113 200
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 113) {
|
|
r_value = 113;
|
|
}
|
|
}
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD:
|
|
case BEASTLORDGM:
|
|
case BARD:
|
|
case BARDGM:
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 113
|
|
r_value = ((level * 5) + 5);
|
|
if ( r_value > 113 ) {
|
|
r_value = 113;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM: {
|
|
// 75
|
|
r_value = ((level * 3) + 3);
|
|
if ( r_value > 75 ) {
|
|
r_value = 75;
|
|
}
|
|
break;
|
|
}
|
|
// No skill classes
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM:
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM:
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
/////////////////////////////////////////////////
|
|
case ARCHERY: {
|
|
switch (class_) {
|
|
// Melee
|
|
case ROGUE:
|
|
case ROGUEGM:
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
// 200 240
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 240) {
|
|
r_value = 240;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: {
|
|
// 75 75
|
|
r_value = ((level * 5) + 5);
|
|
if ( r_value > 75 ) {
|
|
r_value = 75;
|
|
}
|
|
break;
|
|
}
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 240 240
|
|
r_value = ((level * 5) + 5);
|
|
if ( r_value > 240 ) {
|
|
r_value = 240;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
case MONK:
|
|
case MONKGM:
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
// Hybrid
|
|
case BEASTLORD:
|
|
case BEASTLORDGM:
|
|
case BARD:
|
|
case BARDGM:
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
/////////////////////////////////////////////////
|
|
case DOUBLE_ATTACK: {
|
|
switch (class_) {
|
|
// Melee
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
// 16 200 240
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 16 ) {
|
|
r_value = 0;
|
|
}
|
|
if ( level < 51 ) {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
if (r_value > 240) {
|
|
r_value = 240;
|
|
}
|
|
break;
|
|
}
|
|
case BERSERKER:
|
|
case BERSERKERGM:
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
// 15 205 245
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 15 ) {
|
|
r_value = 0;
|
|
}
|
|
if ( level < 51 ) {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
if (r_value > 245) {
|
|
r_value = 245;
|
|
}
|
|
break;
|
|
}
|
|
case MONK:
|
|
case MONKGM: {
|
|
// 15 210 250
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 15 ) {
|
|
r_value = 0;
|
|
}
|
|
if ( level < 51 ) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
}
|
|
if (r_value > 250) {
|
|
r_value = 250;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: {
|
|
// 20 200 235
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 20 ) {
|
|
r_value = 0;
|
|
}
|
|
if ( level < 51 ) {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
if (r_value > 235) {
|
|
r_value = 235;
|
|
}
|
|
break;
|
|
}
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 20 200 245
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 20 ) {
|
|
r_value = 0;
|
|
}
|
|
if ( level < 51 ) {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
if (r_value > 245) {
|
|
r_value = 245;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
// Hybrid
|
|
case BEASTLORD:
|
|
case BEASTLORDGM:
|
|
case BARD:
|
|
case BARDGM:
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
/////////////////////////////////////////////////
|
|
case DUAL_WIELD: {
|
|
switch (class_) {
|
|
// Melee
|
|
case MONK:
|
|
case MONKGM: {
|
|
// 1 252 252
|
|
r_value = level * 7; // This can't be right can it?
|
|
break
|
|
;
|
|
}
|
|
case WARRIOR:
|
|
case WARRIORGM:
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
// 15 210 245
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 13 ) {
|
|
r_value = 0;
|
|
}
|
|
if ( level < 51 ) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
}
|
|
if (r_value > 245) {
|
|
r_value = 245;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD:
|
|
case BEASTLORDGM:
|
|
// 17 210 245
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 17 210 245
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 17 ) {
|
|
r_value = 0;
|
|
}
|
|
if ( level < 51 ) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
}
|
|
if (r_value > 245) {
|
|
r_value = 245;
|
|
}
|
|
break;
|
|
}
|
|
case BARD:
|
|
case BARDGM: {
|
|
// 17 210 210
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 17 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
break;
|
|
}
|
|
// No skill classes
|
|
// Melee
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
// Hybrid
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM:
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// end Class switch
|
|
break;
|
|
} // end case DUAL_WIELD:
|
|
////////////////////////////////////////////////////////
|
|
case KICK: {
|
|
switch (class_) {
|
|
// Melee
|
|
case BERSERKER:
|
|
case BERSERKERGM:
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
// 1 149 210
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 149) {
|
|
r_value = 149;
|
|
}
|
|
}
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
break;
|
|
}
|
|
case MONK:
|
|
case MONKGM: {
|
|
// 1 200 250
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
if (r_value > 250) {
|
|
r_value = 250;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 5 149 205
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 5 ) {
|
|
r_value = 0;
|
|
}
|
|
if ( level < 51 ) {
|
|
if (r_value > 149) {
|
|
r_value = 149;
|
|
}
|
|
}
|
|
if (r_value > 205) {
|
|
r_value = 205;
|
|
}
|
|
break;
|
|
}
|
|
case BEASTLORD:
|
|
case BEASTLORDGM: {
|
|
// 5 180 230
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 5 ) {
|
|
r_value = 0;
|
|
}
|
|
if ( level < 51 ) {
|
|
if (r_value > 180) {
|
|
r_value = 180;
|
|
}
|
|
}
|
|
if (r_value > 230) {
|
|
r_value = 230;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
case ROGUE:
|
|
case ROGUEGM:
|
|
// Melee
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
// Hybrid
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM:
|
|
case BARD:
|
|
case BARDGM:
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
////////////////////////////////////////////////////////
|
|
case BASH: {
|
|
r_value = ((level * 5) + 5);
|
|
switch (class_) {
|
|
// Melee
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
// 6 220 240
|
|
if (level < 6) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 220) {
|
|
r_value = 220;
|
|
}
|
|
if (r_value > 240) {
|
|
r_value = 240;
|
|
}
|
|
break;
|
|
}
|
|
// Priest
|
|
case CLERIC:
|
|
case CLERICGM: {
|
|
// 25 180 200
|
|
if (level < 25) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 180) {
|
|
r_value = 180;
|
|
}
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: {
|
|
// 6 175 200
|
|
if (level < 6) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 175) {
|
|
r_value = 175;
|
|
}
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
case MONK:
|
|
case MONKGM:
|
|
case ROGUE:
|
|
case ROGUEGM:
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
// Hybrid
|
|
case BEASTLORD:
|
|
case BEASTLORDGM:
|
|
case RANGER:
|
|
case RANGERGM:
|
|
case BARD:
|
|
case BARDGM: {
|
|
// switch (race) {
|
|
// case BARBARIAN:
|
|
// case TROLL:
|
|
//case OGRE:{
|
|
// r_value = 50;
|
|
//break;
|
|
//}
|
|
//default: break;
|
|
//}
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
////////////////////////////////////////////////////////
|
|
default:
|
|
#if EQDEBUG >= 1
|
|
std::cout << "Unknown Offensive skill: " << skillid << std::endl;
|
|
#endif
|
|
break;
|
|
}// Switch skill
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
return r_value;
|
|
}
|
|
|
|
uint16 Mob::MaxSkill_defensive(uint16 skillid, uint16 class_, uint16 level) const
|
|
{
|
|
uint16 r_value = 0;
|
|
switch (skillid) {
|
|
case DEFENSE: {
|
|
switch (class_) {
|
|
// Melee
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
// 210 252 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
// 200 252 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
case MONK:
|
|
case MONKGM: {
|
|
// 230 252 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 230) {
|
|
r_value = 230;
|
|
}
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
case BERSERKER:
|
|
case BERSERKERGM: {
|
|
// 230 252 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 230) {
|
|
r_value = 230;
|
|
}
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM: {
|
|
// 200 200 4*level+4
|
|
r_value = ((level * 4) + 4);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD:
|
|
case BEASTLORDGM: {
|
|
// 210 252 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: {
|
|
// 210 252 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
case BARD:
|
|
case BARDGM: {
|
|
// 200 252 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 200 200 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM: {
|
|
// 145 145 level*4
|
|
r_value = (level * 4);
|
|
if (r_value > 140) {
|
|
r_value = 140;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case PARRY: {
|
|
switch (class_) {
|
|
// Melee
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
// 12 200 230
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 12 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 200 && level < 51 ) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 230) {
|
|
r_value = 230;
|
|
}
|
|
break;
|
|
}
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
// 10 200 230
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 10 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 200 && level < 51 ) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 230) {
|
|
r_value = 230;
|
|
}
|
|
break;
|
|
}
|
|
case BERSERKER:
|
|
case BERSERKERGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 10 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 175) {
|
|
r_value = 175;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BARD:
|
|
case BARDGM: {
|
|
// 53 0 75
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 53 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 75) {
|
|
r_value = 75;
|
|
}
|
|
break;
|
|
}
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: {
|
|
// 17 175 205
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 17 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 175 && level < 51 ) {
|
|
r_value = 175;
|
|
}
|
|
if (r_value > 205) {
|
|
r_value = 205;
|
|
}
|
|
break;
|
|
}
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 18 185 220
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 18 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 185 && level < 51 ) {
|
|
r_value = 185;
|
|
}
|
|
if (r_value > 220) {
|
|
r_value = 220;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
case MONK:
|
|
case MONKGM:
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
// Hybrid
|
|
case BEASTLORD:
|
|
case BEASTLORDGM:
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case RIPOSTE: {
|
|
switch (class_) {
|
|
// Melee
|
|
case BERSERKER:
|
|
case BERSERKERGM:
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
// 25 200 225
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 25 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 200 && level < 51 ) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 225) {
|
|
r_value = 225;
|
|
}
|
|
break;
|
|
}
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
// 30 200 225
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 30 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 200 && level < 51 ) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 225) {
|
|
r_value = 225;
|
|
}
|
|
break;
|
|
}
|
|
case MONK:
|
|
case MONKGM: {
|
|
// 35 200 225
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 35 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 200 && level < 51 ) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 225) {
|
|
r_value = 225;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD:
|
|
case BEASTLORDGM: {
|
|
// 40 150 185
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 40 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 150 && level < 51 ) {
|
|
r_value = 150;
|
|
}
|
|
if (r_value > 185) {
|
|
r_value = 185;
|
|
}
|
|
break;
|
|
}
|
|
case BARD:
|
|
case BARDGM: {
|
|
// 58 75 75
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 58 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 75) {
|
|
r_value = 75;
|
|
}
|
|
break;
|
|
}
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: {
|
|
// 30 175 200
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 30 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 175 && level < 51 ) {
|
|
r_value = 175;
|
|
}
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 35 150 150
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 35 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 150) {
|
|
r_value = 150;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
// Hybrid
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case DODGE: {
|
|
switch (class_) {
|
|
// Melee
|
|
case BERSERKER:
|
|
case BERSERKERGM:
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
// 6 140 175
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 6 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 140 && level < 51 ) {
|
|
r_value = 140;
|
|
}
|
|
if (r_value > 175) {
|
|
r_value = 175;
|
|
}
|
|
break;
|
|
}
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
// 4 150 210
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 4 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 150 && level < 51 ) {
|
|
r_value = 150;
|
|
}
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
break;
|
|
}
|
|
case MONK:
|
|
case MONKGM: {
|
|
// 1 200 230
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 230) {
|
|
r_value = 230;
|
|
}
|
|
break;
|
|
}
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM: {
|
|
// 15 75 75 4*level+4
|
|
r_value = ((level * 4) + 4);
|
|
if ( level < 15 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 75) {
|
|
r_value = 75;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD:
|
|
case BEASTLORDGM:
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM:
|
|
case BARD:
|
|
case BARDGM: {
|
|
// 10 125 155 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 10 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 125 && level < 51 ) {
|
|
r_value = 125;
|
|
}
|
|
if (r_value > 155) {
|
|
r_value = 155;
|
|
}
|
|
break;
|
|
}
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 8 137 170 5*level+5
|
|
r_value = ((level * 5) + 5);
|
|
if ( level < 8 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 137 && level < 51 ) {
|
|
r_value = 137;
|
|
}
|
|
if (r_value > 170) {
|
|
r_value = 170;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM: {
|
|
// 22 75 75 3*level+3
|
|
r_value = ((level * 3) + 3);
|
|
if ( level < 22 ) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 75) {
|
|
r_value = 75;
|
|
}
|
|
break;
|
|
}
|
|
// No skill classes
|
|
// Melee
|
|
// Priest
|
|
// Pure
|
|
// Hybrid
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
// Other
|
|
case TAUNT: {
|
|
switch (class_) {
|
|
// Melee
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
// 1 200 200
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
// Priest
|
|
// Hybrid
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: {
|
|
// 1 180 180
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 180) {
|
|
r_value = 180;
|
|
}
|
|
break;
|
|
}
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 1 150 150
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 150) {
|
|
r_value = 150;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
case ROGUE:
|
|
case ROGUEGM:
|
|
case MONK:
|
|
case MONKGM:
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
// Hybrid
|
|
case BEASTLORD:
|
|
case BEASTLORDGM:
|
|
case BARD:
|
|
case BARDGM:
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case DISARM: {
|
|
switch (class_) {
|
|
// Melee
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
// 35 200 200
|
|
r_value = ((level * 5) + 5);
|
|
if (level < 35) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
case ROGUE:
|
|
case ROGUEGM:
|
|
case MONK:
|
|
case MONKGM: {
|
|
// 27 200 200
|
|
r_value = ((level * 5) + 5);
|
|
if (level < 27) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
case BERSERKER:
|
|
case BERSERKERGM: {
|
|
// 35 65 65
|
|
r_value = ((level * 5) + 5);
|
|
if (level < 35) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 65) {
|
|
r_value = 65;
|
|
}
|
|
break;
|
|
}
|
|
// Priest
|
|
// Hybrid
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: {
|
|
// 40 70 70
|
|
r_value = ((level * 5) + 5);
|
|
if (level < 40) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 70) {
|
|
r_value = 70;
|
|
}
|
|
break;
|
|
}
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 35 55 55
|
|
r_value = ((level * 5) + 5);
|
|
if (level < 35) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 55) {
|
|
r_value = 55;
|
|
}
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
// Priest
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
case CLERIC:
|
|
case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
// Hybrid
|
|
case BARD:
|
|
case BARDGM:
|
|
case BEASTLORD:
|
|
case BEASTLORDGM:
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
////////////////////////////////////////////////////////
|
|
default:
|
|
#if EQDEBUG
|
|
std::cout << "Unknown Defensive skill: " << skillid << std::endl;
|
|
#endif
|
|
break;
|
|
}// Switch skill
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
return r_value;
|
|
}
|
|
|
|
uint16 Mob::MaxSkill_arcane(uint16 skillid, uint16 class_, uint16 level) const
|
|
{
|
|
uint16 r_value = 0;
|
|
switch (skillid) {
|
|
case MEDITATE:
|
|
case ABJURE:
|
|
case ALTERATION:
|
|
case CHANNELING:
|
|
case CONJURATION:
|
|
case DIVINATION:
|
|
case EVOCATION: {
|
|
r_value = ((level * 5) + 5);
|
|
switch (class_) {
|
|
// Hybrid
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
// 9 235 235
|
|
// Channel 9 200 215
|
|
// Med 12 185 235
|
|
if (level < 9) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 12 && skillid == MEDITATE) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 0 && skillid == CHANNELING) {
|
|
if ( level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 215) {
|
|
r_value = 215;
|
|
}
|
|
}
|
|
if (r_value > 0 && skillid == MEDITATE) {
|
|
if ( level < 51 && r_value > 185) {
|
|
r_value = 185;
|
|
}
|
|
if (r_value > 235) {
|
|
r_value = 235;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case BEASTLORD:
|
|
case BEASTLORDGM:
|
|
case PALADIN:
|
|
case PALADINGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: {
|
|
// 9 235 235
|
|
// Channel 9 200 220
|
|
// Med 12 185 235
|
|
if (level < 9) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 12 && skillid == MEDITATE) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 0 && skillid == CHANNELING) {
|
|
if ( level < 51 && r_value > 185) {
|
|
r_value = 185;
|
|
}
|
|
if (r_value > 220) {
|
|
r_value = 220;
|
|
}
|
|
}
|
|
if (r_value > 0 && skillid == MEDITATE) {
|
|
if ( level < 51 && r_value > 185) {
|
|
r_value = 185;
|
|
}
|
|
if (r_value > 235) {
|
|
r_value = 235;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
// Priest
|
|
case CLERIC:
|
|
case CLERICGM:
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM: {
|
|
// 1 235 235
|
|
// Channel 4 200 220
|
|
// Med 8 235 252
|
|
if (level < 4 && skillid == CHANNELING) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 8 && skillid == MEDITATE) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 0 && skillid == CHANNELING) {
|
|
if ( level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 220) {
|
|
r_value = 220;
|
|
}
|
|
}
|
|
if (r_value > 0 && skillid == MEDITATE) {
|
|
if ( level < 51 && r_value > 235) {
|
|
r_value = 235;
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
// Int caster
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM: {
|
|
// 1 235 235
|
|
// Channel 1 200 220
|
|
// Med 4 235 252
|
|
if (level < 4 && skillid == MEDITATE) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 0 && skillid == CHANNELING) {
|
|
if ( level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 220) {
|
|
r_value = 220;
|
|
}
|
|
}
|
|
if (r_value > 0 && skillid == MEDITATE) {
|
|
if ( level < 51 && r_value > 235) {
|
|
r_value = 235;
|
|
}
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case BARD:
|
|
case BARDGM: {
|
|
r_value = 0;
|
|
if (level > 9 && skillid == MEDITATE) {
|
|
r_value = 1;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
// Unknown class
|
|
r_value = 0;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
case SPECIALIZE_ABJURE:
|
|
case SPECIALIZE_ALTERATION:
|
|
case SPECIALIZE_CONJURATION:
|
|
case SPECIALIZE_DIVINATION:
|
|
case SPECIALIZE_EVOCATION: {
|
|
r_value = ((level * 5) + 5);
|
|
switch (class_) {
|
|
// Non-int casters
|
|
case CLERIC:
|
|
case CLERICGM:
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM:
|
|
if (level < 30) {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
// Int caster
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM: {
|
|
if (level < 20) {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
//make sure only 1 skill can be over 50
|
|
uint16 hskill = 0;
|
|
uint16 high = 0;
|
|
uint16 cur;
|
|
cur = GetSkill(SPECIALIZE_ABJURE);
|
|
if (cur > high) {
|
|
hskill = SPECIALIZE_ABJURE;
|
|
high = cur;
|
|
}
|
|
cur = GetSkill(SPECIALIZE_ALTERATION);
|
|
if (cur > high) {
|
|
hskill = SPECIALIZE_ALTERATION;
|
|
high = cur;
|
|
}
|
|
cur = GetSkill(SPECIALIZE_CONJURATION);
|
|
if (cur > high) {
|
|
hskill = SPECIALIZE_CONJURATION;
|
|
high = cur;
|
|
}
|
|
cur = GetSkill(SPECIALIZE_DIVINATION);
|
|
if (cur > high) {
|
|
hskill = SPECIALIZE_DIVINATION;
|
|
high = cur;
|
|
}
|
|
cur = GetSkill(SPECIALIZE_EVOCATION);
|
|
if (cur > high) {
|
|
hskill = SPECIALIZE_EVOCATION;
|
|
high = cur;
|
|
}
|
|
if (high > 50 && hskill != skillid) {
|
|
r_value = 50;
|
|
break;
|
|
}
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
case RESEARCH: {
|
|
r_value = ((level * 5) + 5);
|
|
switch (class_) {
|
|
// Int caster
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM: {
|
|
// Res 16 200 200
|
|
if (level < 16) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
// FIXME Only let one SPEC go above what ever limit theres supposed to be
|
|
break;
|
|
}
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
case BRASS_INSTRUMENTS:
|
|
case SINGING:
|
|
case STRINGED_INSTRUMENTS:
|
|
case WIND_INSTRUMENTS:
|
|
case PERCUSSION_INSTRUMENTS: {
|
|
switch (class_) {
|
|
case BARD:
|
|
case BARDGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (level < 5 && skillid == PERCUSSION_INSTRUMENTS) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 8 && skillid == STRINGED_INSTRUMENTS) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 11 && skillid == BRASS_INSTRUMENTS) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 14 && skillid == WIND_INSTRUMENTS) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 235) {
|
|
r_value = 235;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
////////////////////////////////////////////////////////
|
|
default:
|
|
#if EQDEBUG
|
|
std::cout << "Unknown arcane skill: " << skillid << std::endl;
|
|
#endif
|
|
break;
|
|
}// Switch skill
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
return r_value;
|
|
}
|
|
|
|
uint16 Mob::MaxSkill_class(uint16 skillid, uint16 class_, uint16 level) const
|
|
{
|
|
uint16 r_value = 0;
|
|
switch (skillid) {
|
|
// Rogue
|
|
case APPLY_POISON:
|
|
case MAKE_POISON:
|
|
case PICK_POCKETS:
|
|
case BACKSTAB: {
|
|
switch (class_) {
|
|
// Melee
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
r_value = ((level * 5) + 5);
|
|
switch (skillid) {
|
|
case APPLY_POISON: {
|
|
// 18 200 200
|
|
if (level < 18) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
case MAKE_POISON: {
|
|
// 20 200 250
|
|
if (level < 20) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 250) {
|
|
r_value = 250;
|
|
}
|
|
break;
|
|
}
|
|
case PICK_POCKETS: {
|
|
// 7 200 210
|
|
if (level < 7) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
break;
|
|
}
|
|
case BACKSTAB: {
|
|
// 10 200 225
|
|
if (level < 10) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 225) {
|
|
r_value = 225;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
// Monk
|
|
case BLOCKSKILL: {
|
|
switch (class_) {
|
|
case BEASTLORD:
|
|
case BEASTLORDGM: {
|
|
r_value = (((level - 25) * 5) + 5);
|
|
// 12 200 230
|
|
if (level < 25) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 230) {
|
|
r_value = 230;
|
|
}
|
|
break;
|
|
}
|
|
case MONK:
|
|
case MONKGM: {
|
|
r_value = ((level * 5) + 5);
|
|
// 12 200 230
|
|
if (level < 12) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 230) {
|
|
r_value = 230;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case FEIGN_DEATH:
|
|
case MEND:
|
|
case DRAGON_PUNCH:
|
|
case EAGLE_STRIKE:
|
|
case FLYING_KICK:
|
|
case ROUND_KICK:
|
|
case TIGER_CLAW: {
|
|
switch (class_) {
|
|
case MONK:
|
|
case MONKGM: {
|
|
r_value = ((level * 5) + 5);
|
|
switch (skillid) {
|
|
case MEND: {
|
|
// 1 200 200
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
case ROUND_KICK: {
|
|
// 5 200 225
|
|
if (level < 5) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 225) {
|
|
r_value = 225;
|
|
}
|
|
break;
|
|
}
|
|
case TIGER_CLAW: {
|
|
// 10 200 225
|
|
if (level < 10) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 225) {
|
|
r_value = 225;
|
|
}
|
|
break;
|
|
}
|
|
case FEIGN_DEATH: {
|
|
// 17 200 200
|
|
if (level < 17) {
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
case EAGLE_STRIKE: {
|
|
// 20 200 225
|
|
if (level < 20) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 225) {
|
|
r_value = 225;
|
|
}
|
|
break;
|
|
}
|
|
case DRAGON_PUNCH: {
|
|
// 25 200 225
|
|
if (level < 25) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 225) {
|
|
r_value = 225;
|
|
}
|
|
break;
|
|
}
|
|
case FLYING_KICK: {
|
|
// 30 200 225
|
|
if (level < 30) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 225) {
|
|
r_value = 225;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
//Berzerkers
|
|
case BERSERKING: {
|
|
switch (class_) {
|
|
case BERSERKER:
|
|
case BERSERKERGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
// Shaman
|
|
case ALCHEMY: {
|
|
switch (class_) {
|
|
case SHAMAN:
|
|
case SHAMANGM: {
|
|
// 25 130 180
|
|
r_value = ((level * 5) + 5);
|
|
if (level < 25) {
|
|
r_value = 0;
|
|
}
|
|
if (level < 51 && r_value > 130) {
|
|
r_value = 130;
|
|
}
|
|
if (r_value > 180) {
|
|
r_value = 180;
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
///////////////////////////////////////////
|
|
//////////////////////////////////////////
|
|
// Shared skill
|
|
// Shared Rogue
|
|
case HIDE: {
|
|
switch (class_) {
|
|
// True class
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrids
|
|
case RANGER:
|
|
case RANGERGM:
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: { //75 cap
|
|
if (level >= 35) {
|
|
r_value = (((level - 35) * 5) + 5);
|
|
if (r_value > 75) {
|
|
r_value = 75;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case BARD:
|
|
case BARDGM: { //40 cap
|
|
if (level > 25) {
|
|
r_value = (((level - 25) * 5) + 5);
|
|
if (r_value > 40) {
|
|
r_value = 40;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
case SNEAK: {
|
|
switch (class_) {
|
|
// True class
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrids
|
|
case MONK:
|
|
case MONKGM: { //113 cap
|
|
if (level >= 8) {
|
|
r_value = (((level - 8) * 5) + 5);
|
|
if (r_value > 113) {
|
|
r_value = 113;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case RANGER:
|
|
case RANGERGM: { //75 cap
|
|
if (level >= 10) {
|
|
r_value = (((level - 10) * 5) + 5);
|
|
if (r_value > 75) {
|
|
r_value = 75;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case BARD:
|
|
case BARDGM: { //75 cap
|
|
if (level >= 17) {
|
|
r_value = (((level - 17) * 5) + 5);
|
|
if (r_value > 75) {
|
|
r_value = 75;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case BEASTLORD:
|
|
case BEASTLORDGM: { //50 cap
|
|
if (level >= 50) {
|
|
r_value = (((level - 50) * 5) + 5);
|
|
if (r_value > 50) {
|
|
r_value = 50;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
case SENSE_TRAPS:
|
|
case PICK_LOCK:
|
|
case DISARM_TRAPS: {
|
|
switch (class_) {
|
|
// True class
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
// Hybrids
|
|
case BARD:
|
|
case BARDGM: { //100 cap
|
|
if (level >= 30) { //this is wrong I think...
|
|
r_value = (((level - 30) * 5) + 5);
|
|
if (r_value > 100) {
|
|
r_value = 100;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
case SAFE_FALL: {
|
|
switch (class_) {
|
|
// Hybrids
|
|
case BARD:
|
|
case BARDGM: { //40 cap
|
|
if (level >= 24) {
|
|
r_value = (((level - 24) * 5) + 5);
|
|
if (r_value > 40) {
|
|
r_value = 40;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
// Melee
|
|
case MONK:
|
|
case MONKGM: {
|
|
if (level >= 3) {
|
|
r_value = (((level - 3) * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case ROGUE:
|
|
case ROGUEGM: { //100 cap
|
|
if (level >= 12) {
|
|
r_value = (((level - 12) * 5) + 5);
|
|
if (r_value > 100) {
|
|
r_value = 100;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
case INTIMIDATION: {
|
|
switch (class_) {
|
|
case BARD:
|
|
case BARDGM: { //100 cap
|
|
if (level >= 26) {
|
|
r_value = (((level - 26) * 5) + 5);
|
|
if (r_value > 100) {
|
|
r_value = 100;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
// Melee
|
|
case MONK:
|
|
case MONKGM: {
|
|
if (level >= 18) {
|
|
r_value = (((level - 18) * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case BERSERKER:
|
|
case BERSERKERGM: {
|
|
if (level >= 20) {
|
|
r_value = (((level - 20) * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
if (level >= 22) {
|
|
r_value = (((level - 22) * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
// Druid/Ranger/Bard
|
|
case FORAGE: {
|
|
switch (class_) {
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
if (level > 3) {
|
|
r_value = (((level - 3) * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case DRUID:
|
|
case DRUIDGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
case MONK:
|
|
case MONKGM:
|
|
case BARD:
|
|
case BARDGM:
|
|
r_value = 55;
|
|
break;
|
|
default:
|
|
r_value = 50;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
case TRACKING: {
|
|
switch (class_) {
|
|
case RANGER:
|
|
case RANGERGM:
|
|
case BARD:
|
|
case BARDGM:
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
r_value = 200;
|
|
break;
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
}
|
|
////////////////////////////////////////////////////////
|
|
default:
|
|
#if EQDEBUG
|
|
std::cout << "Unknown class skill: " << skillid << std::endl;
|
|
#endif
|
|
break;
|
|
}// Switch skill
|
|
if (r_value > 252) {
|
|
r_value = 252;
|
|
}
|
|
return r_value;
|
|
}
|
|
|
|
uint16 Mob::MaxSkill(uint16 skillid, uint16 class_, uint16 level) const
|
|
{
|
|
uint16 r_value = 0;
|
|
switch (skillid) {
|
|
case _1H_BLUNT:
|
|
case _2H_BLUNT:
|
|
case PIERCING:
|
|
case HAND_TO_HAND:
|
|
case _1H_SLASHING:
|
|
case _2H_SLASHING: {
|
|
r_value = MaxSkill_weapon(skillid, class_, level);
|
|
break;
|
|
}
|
|
case OFFENSE:
|
|
case THROWING:
|
|
case ARCHERY:
|
|
case DOUBLE_ATTACK:
|
|
case DUAL_WIELD:
|
|
case KICK:
|
|
case BASH: {
|
|
r_value = MaxSkill_offensive(skillid, class_, level);
|
|
break;
|
|
}
|
|
case DEFENSE:
|
|
case PARRY:
|
|
case RIPOSTE:
|
|
case DODGE:
|
|
case TAUNT:
|
|
case DISARM: {
|
|
r_value = MaxSkill_defensive(skillid, class_, level);
|
|
break;
|
|
}
|
|
case MEDITATE:
|
|
case ABJURE:
|
|
case ALTERATION:
|
|
case CHANNELING:
|
|
case CONJURATION:
|
|
case DIVINATION:
|
|
case EVOCATION:
|
|
case SPECIALIZE_ABJURE:
|
|
case SPECIALIZE_ALTERATION:
|
|
case SPECIALIZE_CONJURATION:
|
|
case SPECIALIZE_DIVINATION:
|
|
case SPECIALIZE_EVOCATION:
|
|
case RESEARCH:
|
|
case BRASS_INSTRUMENTS:
|
|
case SINGING:
|
|
case STRINGED_INSTRUMENTS:
|
|
case WIND_INSTRUMENTS:
|
|
case PERCUSSION_INSTRUMENTS: {
|
|
r_value = MaxSkill_arcane(skillid, class_, level);
|
|
break;
|
|
}
|
|
///////////////////////////////////////////
|
|
///////////////////////////////////////////
|
|
// Class skills
|
|
// Rogue
|
|
case APPLY_POISON:
|
|
case MAKE_POISON:
|
|
case PICK_POCKETS:
|
|
case BACKSTAB:
|
|
// Monk
|
|
case FEIGN_DEATH:
|
|
case MEND:
|
|
case DRAGON_PUNCH:
|
|
case EAGLE_STRIKE:
|
|
case FLYING_KICK:
|
|
case ROUND_KICK:
|
|
case TIGER_CLAW:
|
|
case BLOCKSKILL:
|
|
case ALCHEMY:
|
|
case HIDE:
|
|
case SNEAK:
|
|
case SENSE_TRAPS:
|
|
case PICK_LOCK:
|
|
case DISARM_TRAPS:
|
|
case SAFE_FALL:
|
|
case INTIMIDATION:
|
|
// Druid/Ranger/Bard
|
|
case FORAGE:
|
|
case TRACKING: {
|
|
r_value = MaxSkill_class(skillid, class_, level);
|
|
break;
|
|
}
|
|
///////////////////////////////////////////
|
|
///////////////////////////////////////////
|
|
// Tradeskills
|
|
case BAKING:
|
|
case TAILORING:
|
|
case BLACKSMITHING:
|
|
case FLETCHING:
|
|
case BREWING:
|
|
case JEWELRY_MAKING:
|
|
case POTTERY:
|
|
case FISHING: {
|
|
// Check for Any Trade above 200, check for X (aa skill) Trades above 200
|
|
r_value = 250;
|
|
break;
|
|
}
|
|
/////////////////////////////////////
|
|
/////////////////////////////////////
|
|
// Gnome
|
|
case TINKERING: {
|
|
if ( race == GNOME && level > 24 ) {
|
|
r_value = ((level * 5) + 5);
|
|
break;
|
|
}
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
/////////////////////////////////////////
|
|
// Common
|
|
/////////////////////////////////////////
|
|
case BIND_WOUND: {
|
|
switch (class_) {
|
|
case BARD:
|
|
case BARDGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (level >= 50) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
} else {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case CLERIC:
|
|
case CLERICGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (level >= 50) {
|
|
if (r_value > 201) {
|
|
r_value = 201;
|
|
}
|
|
} else {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case DRUID:
|
|
case DRUIDGM:
|
|
case SHAMAN:
|
|
case SHAMANGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
case MAGICIAN:
|
|
case MAGICIANGM:
|
|
case ENCHANTER:
|
|
case ENCHANTERGM:
|
|
case NECROMANCER:
|
|
case NECROMANCERGM:
|
|
case WIZARD:
|
|
case WIZARDGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (r_value > 100) {
|
|
r_value = 100;
|
|
}
|
|
break;
|
|
}
|
|
case BEASTLORD:
|
|
case BEASTLORDGM:
|
|
case BERSERKER:
|
|
case BERSERKERGM:
|
|
case MONK:
|
|
case MONKGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (level >= 50) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
} else {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case PALADIN:
|
|
case PALADINGM: {
|
|
if (level > 10) {
|
|
r_value = (((level - 10) * 5) + 5);
|
|
if (level >= 50) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
} else {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case RANGER:
|
|
case RANGERGM: {
|
|
if (level > 15) {
|
|
r_value = (((level - 15) * 5) + 5);
|
|
if (level >= 50) {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
} else {
|
|
if (r_value > 150) {
|
|
r_value = 150;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case ROGUE:
|
|
case ROGUEGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (level >= 50) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
} else {
|
|
if (r_value > 176) {
|
|
r_value = 176;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case SHADOWKNIGHT:
|
|
case SHADOWKNIGHTGM: {
|
|
r_value = ((level * 5) + 5);
|
|
if (level >= 50) {
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
} else {
|
|
if (r_value > 150) {
|
|
r_value = 150;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case WARRIOR:
|
|
case WARRIORGM: {
|
|
if (level > 5) {
|
|
r_value = (((level - 5) * 5) + 5);
|
|
if (level >= 50) {
|
|
if (r_value > 210) {
|
|
r_value = 210;
|
|
}
|
|
} else {
|
|
if (r_value > 175) {
|
|
r_value = 175;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case SENSE_HEADING:
|
|
case SWIMMING:
|
|
case ALCOHOL_TOLERANCE:
|
|
case BEGGING: {
|
|
r_value = 5 + (level * 5);
|
|
if (r_value > 200) {
|
|
r_value = 200;
|
|
}
|
|
break;
|
|
}
|
|
//case BERSERKING:
|
|
default: {
|
|
// Unknown skill we should like print something to a log/debug here
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}
|
|
if (r_value >= 253) {
|
|
r_value = 252;
|
|
}
|
|
return r_value;
|
|
}
|
|
|