View Single Post
  #1  
Old 02-16-2003, 11:49 PM
Bigpull
Discordant
 
Join Date: Feb 2003
Posts: 305
Default Client::MaxSkill()

Old
Code:
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
Code:
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;
}
Reply With Quote