Bigpull
02-16-2003, 11:49 PM
Old
int8 Client::MaxSkill(int16 skillid, int16 class_, int16 level) {
switch (skillid) {
case OFFENSE:
case DEFENSE: {
int16 tmp = level * 5;
if (tmp > 200)
tmp = 200;
return tmp;
}
default: {
return level*4;
}
}
}
And the new
int8 Client::MaxSkill(int16 skillid, int16 class_, int16 level) {
int16 r_value = 0;
switch (skillid) {
///////////////
// Melee Weapon/ Hand to Hand
///////////////
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:{
r_value = 5 + (level*5);
if ( level < 51 && r_value > 200)
r_value = 200;
if ( level > 51 && 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:{
r_value = 5 + (level*5);
if ( level < 51 && r_value > 240)
if ( r_value > 240 )
r_value = 240;
if ( r_value > 252 )
r_value = 252;
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:{
r_value = 5 + (level*5);
if ( level > 50 ){
if ( r_value > 250 )
r_value = 250;
}
else if ( level < 51 ){
if ( r_value > 200 && skillid != PIERCING )
r_value = 200;
switch (skillid){
case PIERCING:{
if (r_value > 210)
r_value = 210;
break;
}
default: break;
}
}
switch (skillid) {
case HAND_TO_HAND:{
if ( r_value > 100 )
r_value = 100;
break;
}
default: break;
}
break;
}
// Priest classes
case CLERIC:{
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:{
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:{
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:{
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 SHADOWKNIGHT:{
r_value = 5 + (level*5);
if ( level > 50 ){
if ( r_value > 225 )
r_value = 225;
}
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 BARD:{
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:{
r_value = 4 + (level*4);
if ( level > 51 ){
if ( r_value > 225 && skillid != HAND_TO_HAND )
r_value = 225;
}
if ( r_value > 250 )
r_value = 250
;
if ( level < 51 && r_value > 200 )
r_value = 200;
switch (skillid) {
case HAND_TO_HAND:{
r_value = 5 + (level*5);
if ( level < 51 )
r_value = 200;
if ( r_value > 250 )
r_value = 250;
break;
}
case _1H_SLASHING:
case _2H_SLASHING:{
r_value = 0;
break;
}
default: break;
}
break;
}
// Pure casters
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:{
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;
}
}
default: break;
}// End Class
}// End Weapons
///////////////////////////////////////
// Combat non weapon
////////////////////////////////////////
// Attack
case OFFENSE:{
switch (class_) {
// Melee
case WARRIOR:
case ROGUE:{
// 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:{
// 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 SHAMAN:
case CLERIC:{
// 200 200 4*level+4
r_value = ((level*4) + 4);
if (r_value > 200)
r_value = 200;
break;
}
// Hybrid
case BEASTLORD:{
// 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 SHADOWKNIGHT:
case BARD:{
// 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:{
// 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 WIZARD:
case MAGICIAN:
case ENCHANTER:{
// 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 ROGUE:{
// 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 MONK:{
// 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 BARD:
case RANGER:{
// 113
r_value = ((level*5) + 5);
if ( r_value > 113 )
r_value = 113;
break;
}
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:{
// 75
r_value = ((level*3) + 3);
if ( r_value > 75 )
r_value = 75;
break;
}
// No skill classes
case DRUID:
case SHAMAN:
case CLERIC:
case PALADIN:
case SHADOWKNIGHT:
default:
r_value = 0;
break;
}
break;
}
case ARCHERY:{
switch (class_) {
// Melee
case ROGUE:
case WARRIOR:{
// 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 SHADOWKNIGHT:{
// 75 75
r_value = ((level*5) + 5);
if ( r_value > 75 )
r_value = 75;
break;
}
case RANGER:{
// 240 240
r_value = ((level*5) + 5);
if ( r_value > 240 )
r_value = 240;
break;
}
// Pure
// No skill classes
// Melee
case MONK:
// Priest
case DRUID:
case SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BEASTLORD:
case BARD:
default:
r_value = 0;
break;
}
break;
}
case DOUBLE_ATTACK:{
switch (class_) {
// Melee
case ROGUE:{
// 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 WARRIOR:{
// 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:{
// 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 SHADOWKNIGHT:{
// 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:{
// 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 SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BEASTLORD:
case BARD:
default:
r_value = 0;
break;
}
break;
}
case DUEL_WIELD:{
switch (class_) {
// Melee
case WARRIOR:
case ROGUE:
case MONK:
// Hybrid
case BEASTLORD:
case BARD:
case RANGER:
// No skill classes
// Melee
// Priest
case DRUID:
case SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case PALADIN:
case SHADOWKNIGHT:
default:
r_value = 0;
break;
}// Class switch
}
case KICK:{
switch (class_) {
// Melee
case WARRIOR:{
// 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:{
// 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:{
// 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:{
// 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:
// Melee
// Priest
case DRUID:
case SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case PALADIN:
case SHADOWKNIGHT:
case BARD:
default:
r_value = 0;
break;
}
break;
}
///////////
// FIXME Where is slam?
case BASH:{
r_value = ((level*5)+5);
switch (class_) {
// Melee
case WARRIOR:{
// 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:{
// 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 SHADOWKNIGHT:{
// 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 ROGUE:
// Priest
case DRUID:
case SHAMAN:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BEASTLORD:
case RANGER:
case BARD:{
switch (race) {
case BARBARIAN:
case TROLL:
case OGRE:{
r_value = 50;
break;
}
default: break;
}
r_value = 0;
break;
}
}
break;
}
/////////////////////////////////////
/////////////////////////////////////
// Defensive skills
case DEFENSE:{
switch (class_) {
// Melee
case WARRIOR:{
// 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:{
// 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:{
// 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 SHAMAN:
case CLERIC:{
// 200 200 4*level+4
r_value = ((level*4) + 4);
if (r_value > 200)
r_value = 200;
break;
}
// Hybrid
case BEASTLORD:{
// 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 SHADOWKNIGHT:{
// 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:{
// 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:{
// 200 200 5*level+5
r_value = ((level*5) + 5);
if (r_value > 200)
r_value = 200;
break;
}
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:{
// 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:{
// 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:{
// 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;
}
// Hybrid
case BARD:{
// 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 SHADOWKNIGHT:{
// 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:{
// 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:
// Priest
case DRUID:
case SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BEASTLORD:
default:
r_value = 0;
break;
}
break;
}
case RIPOSTE:{
switch (class_) {
// Melee
case WARRIOR:{
// 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:{
// 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:{
// 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:{
// 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:{
// 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 SHADOWKNIGHT:{
// 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:{
// 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 SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
default:
r_value = 0;
break;
}
break;
}
case DODGE:{
switch (class_) {
// Melee
case WARRIOR:{
// 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:{
// 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:{
// 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 SHAMAN:
case CLERIC:{
// 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 PALADIN:
case SHADOWKNIGHT:
case BARD:{
// 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:{
// 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 WIZARD:
case MAGICIAN:
case ENCHANTER:{
// 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;
}
}
// Other
case TAUNT:{
switch (class_) {
// Melee
case WARRIOR:{
// 1 200 200
r_value = ((level*5) + 5);
if (r_value > 200)
r_value = 200;
break;
}
// Priest
// Hybrid
case PALADIN:
case SHADOWKNIGHT:{
// 1 180 180
r_value = ((level*5) + 5);
if (r_value > 180)
r_value = 180;
break;
}
case RANGER:{
// 1 150 150
r_value = ((level*5) + 5);
if (r_value > 150)
r_value = 150;
break;
}
// Pure
// No skill classes
// Melee
case ROGUE:
case MONK:
// Priest
case DRUID:
case SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BEASTLORD:
case BARD:
default: break;
}
}
case DISARM:{
switch (class_) {
// Melee
case WARRIOR:{
// 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 MONK:{
// 27 200 200
r_value = ((level*5) + 5);
if (level < 27)
r_value = 0;
if (r_value > 200)
r_value = 200;
break;
}
// Priest
// Hybrid
case PALADIN:
case SHADOWKNIGHT:{
// 40 70 70
r_value = ((level*5) + 5);
if (level < 40)
r_value = 0;
if (r_value > 70)
r_value = 70;
break;
}
case RANGER:{
// 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 SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BARD:
case BEASTLORD:
default: break;
}
}
///////////////////////////////////////////
///////////////////////////////////////////
// Spell Skills
case MEDITATE:
case ABJURE:
case ALTERATION:
case CHANNELING:
case CONJURATION:
case DIVINATION:
case EVOCATION:{
r_value = ((level*5) + 5);
switch(class_){
// Hybrid
case RANGER:{
// 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 PALADIN:
case SHADOWKNIGHT:{
// 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 DRUID:
case SHAMAN:{
// 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 MAGICIAN:
case NECROMANCER:
case WIZARD:{
// 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:{
r_value = 0;
if (level > 9 && skillid == MEDITATE)
r_value = 1;
break;
}
default:
// Unknown class
r_value = 0;
break;
}// Class Switch
}
case SPECIALIZE_ABJURE:
case SPECIALIZE_ALTERATION:
case SPECIALIZE_CONJURATION:
case SPECIALIZE_DIVINATION:
case SPECIALIZE_EVOCATION:
case RESEARCH:{
r_value = ((level*5) + 5);
switch(class_){
// Int caster
case ENCHANTER:
case MAGICIAN:
case NECROMANCER:
case WIZARD:{
// Res 16 200 200
if (level < 16 && skillid == RESEARCH)
r_value = 0;
if (r_value > 0 && skillid == RESEARCH) {
if (r_value > 200)
r_value = 200;
}
if (r_value > 235)
r_value = 235;
// FIXME Only let one SPEC go above what ever limit theres supposed to be
break;
}
default:{
r_value = 0;
break;
}
}// Class Switch
}
case BRASS_INSTRUMENTS:
case SINGING:
case STRINGED_INSTRUMENTS:
case WIND_INSTRUMENTS:
case PERCUSSION_INSTRUMENTS:{
switch(class_){
case BARD:{
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
}
///////////////////////////////////////////
///////////////////////////////////////////
// Class skills
// Rogue
case APPLY_POISON:
case MAKE_POISON:
case PICK_POCKETS:
case BACKSTAB:{
switch (class_) {
// Melee
case ROGUE: {
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
}
// Monk
case FEIGN_DEATH:
case MEND:
case DRAGON_PUNCH:
case EAGLE_STRIKE:
case FLYING_KICK:
case ROUND_KICK:
case TIGER_CLAW:
case BLOCK:{
switch(class_){
case MONK:{
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 BLOCK:{
// 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;
}
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
}
// Shaman
case ALCHEMY:{
switch(class_){
case SHAMAN:{
// 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
}
///////////////////////////////////////////
//////////////////////////////////////////
// Shared skill
// Shared Rogue
case HIDE:
case SNEAK:{
switch(class_){
// True class
case ROGUE:{
break;
}
// Hybrids
case MONK:
case RANGER:
case SHADOWKNIGHT:
case BARD:{
break;
}
default:
r_value = 0;
break;
}// Class Switch
}
case SENSE_TRAPS:
case PICK_LOCK:
case DISARM_TRAPS:{
switch(class_){
// True class
case ROGUE:{
break;
}
// Hybrids
case BARD:{
break;
}
default:
r_value = 0;
break;
}// Class Switch
}
case SAFE_FALL:
case INTIMIDATION:{
switch(class_){
// Melee
case MONK:
case ROGUE:{
break;
}
default:
r_value = 0;
break;
}// Class Switch
}
// Druid/Ranger/Bard
case FORAGE:{
switch(class_) {
case DRUID:
case RANGER:{
if (r_value > 200)
r_value = 200;
break;
}
case BARD:
r_value = 55;
break;
default:
r_value = 50;
break;
}
break;
}
case TRACKING:{
switch(class_){
case RANGER:
case BARD:
case DRUID:
default:
r_value = 0;
break;
}// Class Switch
}
///////////////////////////////////////////
///////////////////////////////////////////
// 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 = 200;
break;
}
/////////////////////////////////////
/////////////////////////////////////
// Gnome
case TINKERING:{
if ( race == GNOME && level > 24 ) {
r_value = ((level*5)+5);
break;
}
r_value = 0;
break;
}
/////////////////////////////////////////
// Common
/////////////////////////////////////////
case BIND_WOUND:{
r_value = 5 + (level*5);
if (level > 50){
// Check for aa and class
}
if (r_value > 200)
r_value = 200;
switch (class_) {
case ENCHANTER:
case MAGICIAN:
case NECROMANCER:
case WIZARD:{
if ( r_value > 100 )
r_value = 100;
}
default: 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;
}
}
return r_value;
}
int8 Client::MaxSkill(int16 skillid, int16 class_, int16 level) {
switch (skillid) {
case OFFENSE:
case DEFENSE: {
int16 tmp = level * 5;
if (tmp > 200)
tmp = 200;
return tmp;
}
default: {
return level*4;
}
}
}
And the new
int8 Client::MaxSkill(int16 skillid, int16 class_, int16 level) {
int16 r_value = 0;
switch (skillid) {
///////////////
// Melee Weapon/ Hand to Hand
///////////////
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:{
r_value = 5 + (level*5);
if ( level < 51 && r_value > 200)
r_value = 200;
if ( level > 51 && 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:{
r_value = 5 + (level*5);
if ( level < 51 && r_value > 240)
if ( r_value > 240 )
r_value = 240;
if ( r_value > 252 )
r_value = 252;
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:{
r_value = 5 + (level*5);
if ( level > 50 ){
if ( r_value > 250 )
r_value = 250;
}
else if ( level < 51 ){
if ( r_value > 200 && skillid != PIERCING )
r_value = 200;
switch (skillid){
case PIERCING:{
if (r_value > 210)
r_value = 210;
break;
}
default: break;
}
}
switch (skillid) {
case HAND_TO_HAND:{
if ( r_value > 100 )
r_value = 100;
break;
}
default: break;
}
break;
}
// Priest classes
case CLERIC:{
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:{
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:{
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:{
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 SHADOWKNIGHT:{
r_value = 5 + (level*5);
if ( level > 50 ){
if ( r_value > 225 )
r_value = 225;
}
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 BARD:{
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:{
r_value = 4 + (level*4);
if ( level > 51 ){
if ( r_value > 225 && skillid != HAND_TO_HAND )
r_value = 225;
}
if ( r_value > 250 )
r_value = 250
;
if ( level < 51 && r_value > 200 )
r_value = 200;
switch (skillid) {
case HAND_TO_HAND:{
r_value = 5 + (level*5);
if ( level < 51 )
r_value = 200;
if ( r_value > 250 )
r_value = 250;
break;
}
case _1H_SLASHING:
case _2H_SLASHING:{
r_value = 0;
break;
}
default: break;
}
break;
}
// Pure casters
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:{
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;
}
}
default: break;
}// End Class
}// End Weapons
///////////////////////////////////////
// Combat non weapon
////////////////////////////////////////
// Attack
case OFFENSE:{
switch (class_) {
// Melee
case WARRIOR:
case ROGUE:{
// 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:{
// 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 SHAMAN:
case CLERIC:{
// 200 200 4*level+4
r_value = ((level*4) + 4);
if (r_value > 200)
r_value = 200;
break;
}
// Hybrid
case BEASTLORD:{
// 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 SHADOWKNIGHT:
case BARD:{
// 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:{
// 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 WIZARD:
case MAGICIAN:
case ENCHANTER:{
// 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 ROGUE:{
// 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 MONK:{
// 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 BARD:
case RANGER:{
// 113
r_value = ((level*5) + 5);
if ( r_value > 113 )
r_value = 113;
break;
}
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:{
// 75
r_value = ((level*3) + 3);
if ( r_value > 75 )
r_value = 75;
break;
}
// No skill classes
case DRUID:
case SHAMAN:
case CLERIC:
case PALADIN:
case SHADOWKNIGHT:
default:
r_value = 0;
break;
}
break;
}
case ARCHERY:{
switch (class_) {
// Melee
case ROGUE:
case WARRIOR:{
// 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 SHADOWKNIGHT:{
// 75 75
r_value = ((level*5) + 5);
if ( r_value > 75 )
r_value = 75;
break;
}
case RANGER:{
// 240 240
r_value = ((level*5) + 5);
if ( r_value > 240 )
r_value = 240;
break;
}
// Pure
// No skill classes
// Melee
case MONK:
// Priest
case DRUID:
case SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BEASTLORD:
case BARD:
default:
r_value = 0;
break;
}
break;
}
case DOUBLE_ATTACK:{
switch (class_) {
// Melee
case ROGUE:{
// 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 WARRIOR:{
// 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:{
// 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 SHADOWKNIGHT:{
// 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:{
// 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 SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BEASTLORD:
case BARD:
default:
r_value = 0;
break;
}
break;
}
case DUEL_WIELD:{
switch (class_) {
// Melee
case WARRIOR:
case ROGUE:
case MONK:
// Hybrid
case BEASTLORD:
case BARD:
case RANGER:
// No skill classes
// Melee
// Priest
case DRUID:
case SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case PALADIN:
case SHADOWKNIGHT:
default:
r_value = 0;
break;
}// Class switch
}
case KICK:{
switch (class_) {
// Melee
case WARRIOR:{
// 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:{
// 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:{
// 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:{
// 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:
// Melee
// Priest
case DRUID:
case SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case PALADIN:
case SHADOWKNIGHT:
case BARD:
default:
r_value = 0;
break;
}
break;
}
///////////
// FIXME Where is slam?
case BASH:{
r_value = ((level*5)+5);
switch (class_) {
// Melee
case WARRIOR:{
// 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:{
// 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 SHADOWKNIGHT:{
// 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 ROGUE:
// Priest
case DRUID:
case SHAMAN:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BEASTLORD:
case RANGER:
case BARD:{
switch (race) {
case BARBARIAN:
case TROLL:
case OGRE:{
r_value = 50;
break;
}
default: break;
}
r_value = 0;
break;
}
}
break;
}
/////////////////////////////////////
/////////////////////////////////////
// Defensive skills
case DEFENSE:{
switch (class_) {
// Melee
case WARRIOR:{
// 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:{
// 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:{
// 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 SHAMAN:
case CLERIC:{
// 200 200 4*level+4
r_value = ((level*4) + 4);
if (r_value > 200)
r_value = 200;
break;
}
// Hybrid
case BEASTLORD:{
// 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 SHADOWKNIGHT:{
// 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:{
// 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:{
// 200 200 5*level+5
r_value = ((level*5) + 5);
if (r_value > 200)
r_value = 200;
break;
}
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:{
// 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:{
// 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:{
// 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;
}
// Hybrid
case BARD:{
// 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 SHADOWKNIGHT:{
// 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:{
// 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:
// Priest
case DRUID:
case SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BEASTLORD:
default:
r_value = 0;
break;
}
break;
}
case RIPOSTE:{
switch (class_) {
// Melee
case WARRIOR:{
// 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:{
// 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:{
// 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:{
// 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:{
// 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 SHADOWKNIGHT:{
// 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:{
// 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 SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
default:
r_value = 0;
break;
}
break;
}
case DODGE:{
switch (class_) {
// Melee
case WARRIOR:{
// 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:{
// 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:{
// 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 SHAMAN:
case CLERIC:{
// 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 PALADIN:
case SHADOWKNIGHT:
case BARD:{
// 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:{
// 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 WIZARD:
case MAGICIAN:
case ENCHANTER:{
// 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;
}
}
// Other
case TAUNT:{
switch (class_) {
// Melee
case WARRIOR:{
// 1 200 200
r_value = ((level*5) + 5);
if (r_value > 200)
r_value = 200;
break;
}
// Priest
// Hybrid
case PALADIN:
case SHADOWKNIGHT:{
// 1 180 180
r_value = ((level*5) + 5);
if (r_value > 180)
r_value = 180;
break;
}
case RANGER:{
// 1 150 150
r_value = ((level*5) + 5);
if (r_value > 150)
r_value = 150;
break;
}
// Pure
// No skill classes
// Melee
case ROGUE:
case MONK:
// Priest
case DRUID:
case SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BEASTLORD:
case BARD:
default: break;
}
}
case DISARM:{
switch (class_) {
// Melee
case WARRIOR:{
// 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 MONK:{
// 27 200 200
r_value = ((level*5) + 5);
if (level < 27)
r_value = 0;
if (r_value > 200)
r_value = 200;
break;
}
// Priest
// Hybrid
case PALADIN:
case SHADOWKNIGHT:{
// 40 70 70
r_value = ((level*5) + 5);
if (level < 40)
r_value = 0;
if (r_value > 70)
r_value = 70;
break;
}
case RANGER:{
// 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 SHAMAN:
case CLERIC:
// Pure
case NECROMANCER:
case WIZARD:
case MAGICIAN:
case ENCHANTER:
// Hybrid
case BARD:
case BEASTLORD:
default: break;
}
}
///////////////////////////////////////////
///////////////////////////////////////////
// Spell Skills
case MEDITATE:
case ABJURE:
case ALTERATION:
case CHANNELING:
case CONJURATION:
case DIVINATION:
case EVOCATION:{
r_value = ((level*5) + 5);
switch(class_){
// Hybrid
case RANGER:{
// 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 PALADIN:
case SHADOWKNIGHT:{
// 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 DRUID:
case SHAMAN:{
// 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 MAGICIAN:
case NECROMANCER:
case WIZARD:{
// 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:{
r_value = 0;
if (level > 9 && skillid == MEDITATE)
r_value = 1;
break;
}
default:
// Unknown class
r_value = 0;
break;
}// Class Switch
}
case SPECIALIZE_ABJURE:
case SPECIALIZE_ALTERATION:
case SPECIALIZE_CONJURATION:
case SPECIALIZE_DIVINATION:
case SPECIALIZE_EVOCATION:
case RESEARCH:{
r_value = ((level*5) + 5);
switch(class_){
// Int caster
case ENCHANTER:
case MAGICIAN:
case NECROMANCER:
case WIZARD:{
// Res 16 200 200
if (level < 16 && skillid == RESEARCH)
r_value = 0;
if (r_value > 0 && skillid == RESEARCH) {
if (r_value > 200)
r_value = 200;
}
if (r_value > 235)
r_value = 235;
// FIXME Only let one SPEC go above what ever limit theres supposed to be
break;
}
default:{
r_value = 0;
break;
}
}// Class Switch
}
case BRASS_INSTRUMENTS:
case SINGING:
case STRINGED_INSTRUMENTS:
case WIND_INSTRUMENTS:
case PERCUSSION_INSTRUMENTS:{
switch(class_){
case BARD:{
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
}
///////////////////////////////////////////
///////////////////////////////////////////
// Class skills
// Rogue
case APPLY_POISON:
case MAKE_POISON:
case PICK_POCKETS:
case BACKSTAB:{
switch (class_) {
// Melee
case ROGUE: {
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
}
// Monk
case FEIGN_DEATH:
case MEND:
case DRAGON_PUNCH:
case EAGLE_STRIKE:
case FLYING_KICK:
case ROUND_KICK:
case TIGER_CLAW:
case BLOCK:{
switch(class_){
case MONK:{
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 BLOCK:{
// 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;
}
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
}
// Shaman
case ALCHEMY:{
switch(class_){
case SHAMAN:{
// 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
}
///////////////////////////////////////////
//////////////////////////////////////////
// Shared skill
// Shared Rogue
case HIDE:
case SNEAK:{
switch(class_){
// True class
case ROGUE:{
break;
}
// Hybrids
case MONK:
case RANGER:
case SHADOWKNIGHT:
case BARD:{
break;
}
default:
r_value = 0;
break;
}// Class Switch
}
case SENSE_TRAPS:
case PICK_LOCK:
case DISARM_TRAPS:{
switch(class_){
// True class
case ROGUE:{
break;
}
// Hybrids
case BARD:{
break;
}
default:
r_value = 0;
break;
}// Class Switch
}
case SAFE_FALL:
case INTIMIDATION:{
switch(class_){
// Melee
case MONK:
case ROGUE:{
break;
}
default:
r_value = 0;
break;
}// Class Switch
}
// Druid/Ranger/Bard
case FORAGE:{
switch(class_) {
case DRUID:
case RANGER:{
if (r_value > 200)
r_value = 200;
break;
}
case BARD:
r_value = 55;
break;
default:
r_value = 50;
break;
}
break;
}
case TRACKING:{
switch(class_){
case RANGER:
case BARD:
case DRUID:
default:
r_value = 0;
break;
}// Class Switch
}
///////////////////////////////////////////
///////////////////////////////////////////
// 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 = 200;
break;
}
/////////////////////////////////////
/////////////////////////////////////
// Gnome
case TINKERING:{
if ( race == GNOME && level > 24 ) {
r_value = ((level*5)+5);
break;
}
r_value = 0;
break;
}
/////////////////////////////////////////
// Common
/////////////////////////////////////////
case BIND_WOUND:{
r_value = 5 + (level*5);
if (level > 50){
// Check for aa and class
}
if (r_value > 200)
r_value = 200;
switch (class_) {
case ENCHANTER:
case MAGICIAN:
case NECROMANCER:
case WIZARD:{
if ( r_value > 100 )
r_value = 100;
}
default: 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;
}
}
return r_value;
}