mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
1901 lines
40 KiB
C++
1901 lines
40 KiB
C++
#include "../common/races.h"
|
|
#include "../common/classes.h"
|
|
#include "../zone/skills.h"
|
|
|
|
uint8 MaxSkillTable(uint16 skillid, uint16 race, uint16 eqclass, uint16 level);
|
|
/* TODO:
|
|
Load MaxSkillTable function into ram as a really big matrix:
|
|
MaxSkillTable[skillid][race][eqclass][level]
|
|
|
|
in preperation for that, dont put anything that wont work in
|
|
that table into MaxSkillTable (ie, AA checks, skill values that
|
|
depend on other skill values, etc), put it into MaxSkill instead
|
|
*/
|
|
uint8 MaxSkill(uint16 skillid, uint16 race, uint16 eqclass, uint16 level) {
|
|
uint8 ret = MaxSkillTable(skillid, race, eqclass, level);
|
|
return ret;
|
|
}
|
|
|
|
/* SPECIAL VALUES:
|
|
level:
|
|
0 = "skill level at character create"
|
|
TODO: catch levels > 65 (ie, npcs)
|
|
race:
|
|
NPCs will always have their skills maxed, and often ignore class
|
|
restrictions, accomplished by the special values below.
|
|
EMU_RACE_NPC
|
|
EMU_RACE_PET
|
|
EMU_RACE_UNKNOWN
|
|
return value:
|
|
TODO: Find out the specal values for the client for "your class/race doesnt have this skill" and
|
|
"must put one point in at GM", etc
|
|
|
|
*/
|
|
uint8 MaxSkillTable(uint16 skillid, uint16 race, uint16 eqclass, uint16 level) {
|
|
uint16 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 (eqclass) {
|
|
// Pure melee classes
|
|
case WARRIOR: case WARRIORGM: {
|
|
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: case MONKGM: {
|
|
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: case ROGUEGM: {
|
|
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;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// Melee Weapon/ Hand to Hand
|
|
// Priest classes
|
|
//////////////////////////////////////////////////////////////
|
|
case CLERIC: case CLERICGM:{
|
|
r_value = 4 + (level*4);
|
|
if ( r_value > 175 ){
|
|
r_value = 175;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND:{
|
|
if ( r_value > 75 )
|
|
r_value = 75;
|
|
break;
|
|
}
|
|
case PIERCING:
|
|
case _1H_SLASHING:
|
|
case _2H_SLASHING: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case DRUID: case DRUIDGM:{
|
|
r_value = 4 + (level*4);
|
|
if ( r_value > 175 ){
|
|
r_value = 175;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND:{
|
|
if ( r_value > 75 )
|
|
r_value = 75;
|
|
}
|
|
case PIERCING:
|
|
case _2H_SLASHING:{
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case SHAMAN: case SHAMANGM:{
|
|
r_value = 4 + (level*4);
|
|
if ( r_value > 200 ){
|
|
r_value = 200;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND: {
|
|
if ( r_value > 75 )
|
|
r_value = 75;
|
|
}
|
|
case _1H_SLASHING:
|
|
case _2H_SLASHING:{
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Melee Weapon/ Hand to Hand
|
|
// Hybrids
|
|
//////////////////////////////////////////////////////////
|
|
case RANGER: case RANGERGM:{
|
|
r_value = 5 + (level*5);
|
|
if ( level > 50 ) {
|
|
if ( r_value > 250 )
|
|
r_value = 250;
|
|
|
|
switch (skillid) {
|
|
case PIERCING: {
|
|
if ( r_value > 240 )
|
|
r_value = 240;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
else if ( level < 51 ) {
|
|
if ( r_value > 200 )
|
|
r_value = 200;
|
|
}
|
|
switch (skillid) {
|
|
case HAND_TO_HAND:{
|
|
if ( r_value > 100 )
|
|
r_value = 100;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:{
|
|
r_value = 5 + (level*5);
|
|
if ( level > 50 ){
|
|
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: case BARDGM: {
|
|
r_value = 5 + (level*5);
|
|
if ( level > 51 && r_value > 225 )
|
|
r_value = 225;
|
|
if ( level < 51 && r_value > 200 )
|
|
r_value = 200;
|
|
switch (skillid) {
|
|
case HAND_TO_HAND:{
|
|
if ( r_value > 100 )
|
|
r_value = 100;
|
|
break;
|
|
}
|
|
case _2H_BLUNT:
|
|
case _2H_SLASHING:{
|
|
r_value = 0;
|
|
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
|
|
case BEASTLORD: case BEASTLORDGM:{
|
|
r_value = 4 + (level*4);
|
|
if ( level > 51 ){
|
|
if ( r_value > 225 && 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;
|
|
}
|
|
|
|
// Melee Weapon/ Hand to Hand
|
|
// Pure casters
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:{
|
|
r_value = 3 + (level*3);
|
|
if ( r_value > 110 )
|
|
r_value = 110;
|
|
switch (skillid) {
|
|
case HAND_TO_HAND:{
|
|
if ( r_value > 75 )
|
|
r_value = 75;
|
|
break;
|
|
}
|
|
case _1H_SLASHING:
|
|
case _2H_SLASHING:{
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// end switch(eqclass)
|
|
break;
|
|
} // end case weapon skills
|
|
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// Combat non weapon
|
|
/////////////////////////////////////////////////////////////
|
|
|
|
// Attack
|
|
case OFFENSE: {
|
|
switch (eqclass) {
|
|
// Melee
|
|
case WARRIOR: case WARRIORGM:
|
|
case ROGUE: case ROGUEGM:{
|
|
// 210 252 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
}
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
break;
|
|
}
|
|
case MONK: case MONKGM:{
|
|
// 230 252 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 230)
|
|
r_value = 230;
|
|
}
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
break;
|
|
}
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:{
|
|
// 200 200 4*level+4
|
|
r_value = ((level*4) + 4);
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD: case BEASTLORDGM:{
|
|
// 200 252 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
break;
|
|
}
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:
|
|
case BARD: case BARDGM:{
|
|
// 200 225 5*level+5
|
|
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 225)
|
|
r_value = 225;
|
|
break;
|
|
}
|
|
case RANGER: case RANGERGM:{
|
|
// 210 252 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
}
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
break;
|
|
}
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:{
|
|
// 140 140 level*4
|
|
r_value = (level*4);
|
|
if (r_value > 140)
|
|
r_value = 140;
|
|
break;
|
|
}
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
} // end switch (eqclass)
|
|
break;
|
|
} // end case OFFENSE
|
|
case THROWING: {
|
|
switch (eqclass) {
|
|
// Melee
|
|
case ROGUE: case ROGUEGM:{
|
|
// 220 250
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 220)
|
|
r_value = 220;
|
|
}
|
|
if (r_value > 250)
|
|
r_value = 250;
|
|
break;
|
|
}
|
|
case WARRIOR: case WARRIORGM:
|
|
case MONK: case MONKGM:{
|
|
// 113 200
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 113)
|
|
r_value = 113;
|
|
}
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD: case BEASTLORDGM:
|
|
case BARD: case BARDGM:
|
|
case RANGER: case RANGERGM:{
|
|
// 113
|
|
r_value = ((level*5) + 5);
|
|
if ( r_value > 113 )
|
|
r_value = 113;
|
|
break;
|
|
}
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:{
|
|
// 75
|
|
r_value = ((level*3) + 3);
|
|
if ( r_value > 75 )
|
|
r_value = 75;
|
|
break;
|
|
}
|
|
// No skill classes
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
} // end switch (eqclass)
|
|
break;
|
|
} // end case THROWING:
|
|
case ARCHERY: {
|
|
switch (eqclass) {
|
|
// Melee
|
|
case ROGUE: case ROGUEGM:
|
|
case WARRIOR: case WARRIORGM:{
|
|
// 200 240
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 && r_value > 200)
|
|
r_value = 200;
|
|
if (r_value > 240)
|
|
r_value = 240;
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:{
|
|
// 75 75
|
|
r_value = ((level*5) + 5);
|
|
if ( r_value > 75 )
|
|
r_value = 75;
|
|
break;
|
|
}
|
|
case RANGER: case RANGERGM:{
|
|
// 240 240
|
|
r_value = ((level*5) + 5);
|
|
if ( r_value > 240 )
|
|
r_value = 240;
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
case MONK: case MONKGM:
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
// Hybrid
|
|
case BEASTLORD: case BEASTLORDGM:
|
|
case BARD: case BARDGM:
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
} // end switch (eqclass)
|
|
break;
|
|
} // end case ARCHERY:
|
|
case DOUBLE_ATTACK: {
|
|
switch (eqclass) {
|
|
// Melee
|
|
case ROGUE: case ROGUEGM:{
|
|
// 16 200 240
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 16 )
|
|
r_value = 0;
|
|
if ( level < 51 ) {
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 240)
|
|
r_value = 240;
|
|
break;
|
|
}
|
|
case WARRIOR: case WARRIORGM:{
|
|
// 15 205 245
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 15 )
|
|
r_value = 0;
|
|
if ( level < 51 ) {
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 245)
|
|
r_value = 245;
|
|
break;
|
|
}
|
|
case MONK: case MONKGM:{
|
|
// 15 210 250
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 15 )
|
|
r_value = 0;
|
|
if ( level < 51 ) {
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
}
|
|
if (r_value > 250)
|
|
r_value = 250;
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:{
|
|
// 20 200 235
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 20 )
|
|
r_value = 0;
|
|
if ( level < 51 ) {
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 235)
|
|
r_value = 235;
|
|
break;
|
|
}
|
|
case RANGER: case RANGERGM:{
|
|
// 20 200 245
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 20 )
|
|
r_value = 0;
|
|
if ( level < 51 ) {
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 245)
|
|
r_value = 245;
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
// Hybrid
|
|
case BEASTLORD: case BEASTLORDGM:
|
|
case BARD: case BARDGM:
|
|
default: {
|
|
r_value = 0;
|
|
|
|
break;
|
|
}
|
|
} // end switch (eqclass)
|
|
break;
|
|
} // end case DOUBLE_ATTACK:
|
|
case DUEL_WIELD: {
|
|
switch (eqclass) {
|
|
// Melee
|
|
case MONK: case MONKGM:{
|
|
// 1 252 252
|
|
r_value = level*7; // This can't be right can it?
|
|
break;
|
|
}
|
|
case WARRIOR: case WARRIORGM:
|
|
case ROGUE: case ROGUEGM: {
|
|
// 15 210 245
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 15 )
|
|
r_value = 0;
|
|
if ( level < 51 ) {
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
}
|
|
if (r_value > 245)
|
|
r_value = 245;
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD: case BEASTLORDGM:
|
|
// 17 210 245
|
|
case RANGER: case RANGERGM:{
|
|
// 17 210 245
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 17 )
|
|
r_value = 0;
|
|
if ( level < 51 ) {
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
}
|
|
if (r_value > 245)
|
|
r_value = 245;
|
|
break;
|
|
}
|
|
case BARD: case BARDGM:{
|
|
// 17 210 210
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 17 )
|
|
r_value = 0;
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
break;
|
|
}
|
|
// No skill classes
|
|
// Melee
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
// Hybrid
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// end Class switch
|
|
break;
|
|
} // end case DUEL_WIELD:
|
|
case KICK: {
|
|
switch (eqclass) {
|
|
// Melee
|
|
case WARRIOR: case WARRIORGM:{
|
|
// 1 149 210
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 149)
|
|
r_value = 149;
|
|
}
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
break;
|
|
}
|
|
case MONK: case MONKGM:{
|
|
// 1 200 250
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 250)
|
|
r_value = 250;
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case RANGER: case RANGERGM:{
|
|
// 5 149 205
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 5 )
|
|
r_value = 0;
|
|
if ( level < 51 ) {
|
|
if (r_value > 149)
|
|
r_value = 149;
|
|
}
|
|
if (r_value > 205)
|
|
r_value = 205;
|
|
break;
|
|
}
|
|
case BEASTLORD: case BEASTLORDGM:{
|
|
// 5 180 230
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 5 )
|
|
r_value = 0;
|
|
if ( level < 51 ) {
|
|
if (r_value > 180)
|
|
r_value = 180;
|
|
}
|
|
if (r_value > 230)
|
|
r_value = 230;
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
case ROGUE: case ROGUEGM:
|
|
// Melee
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
// Hybrid
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:
|
|
case BARD: case BARDGM:
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
} // end switch(eqclass)
|
|
break;
|
|
} // end case KICK:
|
|
///////////
|
|
// FIXME Where is slam?
|
|
// Quagmire: Slam = bash w/ race check
|
|
case BASH:{
|
|
r_value = ((level*5)+5);
|
|
switch (eqclass) {
|
|
// Melee
|
|
case WARRIOR: case WARRIORGM:{
|
|
// 6 220 240
|
|
if (level < 6)
|
|
r_value = 0;
|
|
if (level < 51 && r_value > 220)
|
|
r_value = 220;
|
|
if (r_value > 240)
|
|
r_value = 240;
|
|
break;
|
|
}
|
|
// Priest
|
|
case CLERIC: case CLERICGM:{
|
|
// 25 180 200
|
|
if (level < 25)
|
|
r_value = 0;
|
|
if (level < 51 && r_value > 180)
|
|
r_value = 180;
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:{
|
|
// 6 175 200
|
|
if (level < 6)
|
|
r_value = 0;
|
|
if (level < 51 && r_value > 175)
|
|
r_value = 175;
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
case MONK: case MONKGM:
|
|
case ROGUE: case ROGUEGM:
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
// Hybrid
|
|
case BEASTLORD: case BEASTLORDGM:
|
|
case RANGER: case RANGERGM:
|
|
case BARD: case BARDGM:{
|
|
switch (race) {
|
|
case BARBARIAN:
|
|
case TROLL:
|
|
case OGRE:{
|
|
r_value = 50;
|
|
break;
|
|
}
|
|
default: {
|
|
break;
|
|
}
|
|
} // end switch (race)
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
} // end case BASH:
|
|
/////////////////////////////////////
|
|
/////////////////////////////////////
|
|
// Defensive skills
|
|
case DEFENSE:{
|
|
switch (eqclass) {
|
|
// Melee
|
|
case WARRIOR: case WARRIORGM:{
|
|
// 210 252 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
}
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
break;
|
|
}
|
|
case ROGUE: case ROGUEGM:{
|
|
// 200 252 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
break;
|
|
}
|
|
case MONK: case MONKGM:{
|
|
// 230 252 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 230)
|
|
r_value = 230;
|
|
}
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
break;
|
|
}
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:{
|
|
// 200 200 4*level+4
|
|
r_value = ((level*4) + 4);
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD: case BEASTLORDGM:{
|
|
// 210 252 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
}
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
break;
|
|
}
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:{
|
|
// 210 252 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
}
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
break;
|
|
}
|
|
case BARD: case BARDGM:{
|
|
// 200 252 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 51 ) {
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
}
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
break;
|
|
}
|
|
case RANGER: case RANGERGM:{
|
|
// 200 200 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:{
|
|
// 145 145 level*4
|
|
r_value = (level*4);
|
|
if (r_value > 140)
|
|
r_value = 140;
|
|
break;
|
|
}
|
|
default: {
|
|
break;
|
|
}
|
|
} // end switch(eqclass)
|
|
break;
|
|
} // end case DEFENSE:
|
|
case PARRY:{
|
|
switch (eqclass) {
|
|
// Melee
|
|
case ROGUE: case ROGUEGM:{
|
|
// 12 200 230
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 12 )
|
|
r_value = 0;
|
|
if (r_value > 200 && level < 51 )
|
|
r_value = 200;
|
|
if (r_value > 230)
|
|
r_value = 230;
|
|
break;
|
|
}
|
|
case WARRIOR: case WARRIORGM:{
|
|
// 10 200 230
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 10 )
|
|
r_value = 0;
|
|
if (r_value > 200 && level < 51 )
|
|
r_value = 200;
|
|
if (r_value > 230)
|
|
r_value = 230;
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BARD: case BARDGM:{
|
|
// 53 0 75
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 53 )
|
|
r_value = 0;
|
|
if (r_value > 75)
|
|
r_value = 75;
|
|
break;
|
|
}
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:{
|
|
// 17 175 205
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 17 )
|
|
r_value = 0;
|
|
if (r_value > 175 && level < 51 )
|
|
r_value = 175;
|
|
if (r_value > 205)
|
|
r_value = 205;
|
|
break;
|
|
}
|
|
case RANGER: case RANGERGM:{
|
|
// 18 185 220
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 18 )
|
|
r_value = 0;
|
|
if (r_value > 185 && level < 51 )
|
|
r_value = 185;
|
|
if (r_value > 220)
|
|
r_value = 220;
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
case MONK: case MONKGM:
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
// Hybrid
|
|
case BEASTLORD: case BEASTLORDGM:
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
} // end switch (eqclass)
|
|
break;
|
|
} // end case PARRY:
|
|
case RIPOSTE:{
|
|
switch (eqclass) {
|
|
// Melee
|
|
case WARRIOR: case WARRIORGM:{
|
|
// 25 200 225
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 25 )
|
|
r_value = 0;
|
|
if (r_value > 200 && level < 51 )
|
|
r_value = 200;
|
|
if (r_value > 225)
|
|
r_value = 225;
|
|
break;
|
|
}
|
|
case ROGUE: case ROGUEGM:{
|
|
// 30 200 225
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 30 )
|
|
r_value = 0;
|
|
if (r_value > 200 && level < 51 )
|
|
r_value = 200;
|
|
if (r_value > 225)
|
|
r_value = 225;
|
|
break;
|
|
}
|
|
case MONK: case MONKGM:{
|
|
// 35 200 225
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 35 )
|
|
r_value = 0;
|
|
if (r_value > 200 && level < 51 )
|
|
r_value = 200;
|
|
if (r_value > 225)
|
|
r_value = 225;
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD: case BEASTLORDGM:{
|
|
// 40 150 185
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 40 )
|
|
r_value = 0;
|
|
if (r_value > 150 && level < 51 )
|
|
r_value = 150;
|
|
if (r_value > 185)
|
|
r_value = 185;
|
|
break;
|
|
}
|
|
case BARD: case BARDGM:{
|
|
// 58 75 75
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 58 )
|
|
r_value = 0;
|
|
if (r_value > 75)
|
|
r_value = 75;
|
|
break;
|
|
}
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:{
|
|
// 30 175 200
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 30 )
|
|
r_value = 0;
|
|
if (r_value > 175 && level < 51 )
|
|
r_value = 175;
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
case RANGER: case RANGERGM:{
|
|
// 35 150 150
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 35 )
|
|
r_value = 0;
|
|
if (r_value > 150)
|
|
r_value = 150;
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
// Hybrid
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
} // end switch (eqclass)
|
|
break;
|
|
} // end case RIPOSTE:
|
|
case DODGE:{
|
|
switch (eqclass) {
|
|
// Melee
|
|
case WARRIOR: case WARRIORGM:{
|
|
// 6 140 175
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 6 )
|
|
r_value = 0;
|
|
if (r_value > 140 && level < 51 )
|
|
r_value = 140;
|
|
if (r_value > 175)
|
|
r_value = 175;
|
|
break;
|
|
}
|
|
case ROGUE: case ROGUEGM:{
|
|
// 4 150 210
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 4 )
|
|
r_value = 0;
|
|
if (r_value > 150 && level < 51 )
|
|
r_value = 150;
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
break;
|
|
}
|
|
case MONK: case MONKGM:{
|
|
// 1 200 230
|
|
r_value = ((level*5) + 5);
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
if (r_value > 230)
|
|
r_value = 230;
|
|
break;
|
|
}
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:{
|
|
// 15 75 75 4*level+4
|
|
r_value = ((level*4) + 4);
|
|
if ( level < 15 )
|
|
r_value = 0;
|
|
if (r_value > 75)
|
|
r_value = 75;
|
|
break;
|
|
}
|
|
// Hybrid
|
|
case BEASTLORD: case BEASTLORDGM:
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:
|
|
case BARD: case BARDGM:{
|
|
// 10 125 155 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 10 )
|
|
r_value = 0;
|
|
if (r_value > 125 && level < 51 )
|
|
r_value = 125;
|
|
if (r_value > 155)
|
|
r_value = 155;
|
|
break;
|
|
}
|
|
|
|
case RANGER: case RANGERGM:{
|
|
// 8 137 170 5*level+5
|
|
r_value = ((level*5) + 5);
|
|
if ( level < 8 )
|
|
r_value = 0;
|
|
if (r_value > 137 && level < 51 )
|
|
r_value = 137;
|
|
if (r_value > 170)
|
|
r_value = 170;
|
|
break;
|
|
}
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:{
|
|
// 22 75 75 3*level+3
|
|
r_value = ((level*3) + 3);
|
|
if ( level < 22 )
|
|
r_value = 0;
|
|
if (r_value > 75)
|
|
r_value = 75;
|
|
break;
|
|
}
|
|
// No skill classes
|
|
// Melee
|
|
// Priest
|
|
// Pure
|
|
// Hybrid
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
} // end switch (eqclass)
|
|
break;
|
|
} // end case DODGE:
|
|
// Other
|
|
case TAUNT:{
|
|
switch (eqclass) {
|
|
// Melee
|
|
case WARRIOR: case WARRIORGM:{
|
|
// 1 200 200
|
|
r_value = ((level*5) + 5);
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
// Priest
|
|
// Hybrid
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:{
|
|
// 1 180 180
|
|
r_value = ((level*5) + 5);
|
|
if (r_value > 180)
|
|
r_value = 180;
|
|
break;
|
|
}
|
|
case RANGER: case RANGERGM:{
|
|
// 1 150 150
|
|
r_value = ((level*5) + 5);
|
|
if (r_value > 150)
|
|
r_value = 150;
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
case ROGUE: case ROGUEGM:
|
|
case MONK: case MONKGM:
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
// Hybrid
|
|
case BEASTLORD: case BEASTLORDGM:
|
|
case BARD: case BARDGM:
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
} // end swtich (eqclass)
|
|
break;
|
|
} // end case TAUNT:
|
|
|
|
case DISARM:{
|
|
switch (eqclass) {
|
|
// Melee
|
|
case WARRIOR: case WARRIORGM:{
|
|
// 35 200 200
|
|
r_value = ((level*5) + 5);
|
|
if (level < 35)
|
|
r_value = 0;
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
case ROGUE: case ROGUEGM:
|
|
case MONK: case MONKGM:{
|
|
// 27 200 200
|
|
r_value = ((level*5) + 5);
|
|
if (level < 27)
|
|
r_value = 0;
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
// Priest
|
|
// Hybrid
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:{
|
|
// 40 70 70
|
|
r_value = ((level*5) + 5);
|
|
if (level < 40)
|
|
r_value = 0;
|
|
if (r_value > 70)
|
|
r_value = 70;
|
|
break;
|
|
}
|
|
case RANGER: case RANGERGM:{
|
|
// 35 55 55
|
|
r_value = ((level*5) + 5);
|
|
if (level < 35)
|
|
r_value = 0;
|
|
if (r_value > 55)
|
|
r_value = 55;
|
|
break;
|
|
}
|
|
// Pure
|
|
// No skill classes
|
|
// Melee
|
|
// Priest
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:
|
|
case CLERIC: case CLERICGM:
|
|
// Pure
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
// Hybrid
|
|
case BARD: case BARDGM:
|
|
case BEASTLORD: case BEASTLORDGM:
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
} // end switch (eqclass)
|
|
break;
|
|
} // end case DISARM:
|
|
///////////////////////////////////////////
|
|
///////////////////////////////////////////
|
|
// Spell Skills
|
|
case MEDITATE:
|
|
case ABJURE:
|
|
|
|
case ALTERATION:
|
|
case CHANNELING:
|
|
case CONJURATION:
|
|
case DIVINATION:
|
|
|
|
case EVOCATION:{
|
|
r_value = ((level*5) + 5);
|
|
switch(eqclass){
|
|
// Hybrid
|
|
case RANGER: case RANGERGM:{
|
|
// 9 235 235
|
|
// Channel 9 200 215
|
|
// Med 12 185 235
|
|
if (level < 9)
|
|
r_value = 0;
|
|
if (level < 12 && skillid == MEDITATE)
|
|
r_value = 0;
|
|
if (r_value > 0 && skillid == CHANNELING) {
|
|
if ( level < 51 && r_value > 200)
|
|
r_value = 200;
|
|
if (r_value > 215)
|
|
r_value = 215;
|
|
}
|
|
if (r_value > 0 && skillid == MEDITATE) {
|
|
if ( level < 51 && r_value > 185)
|
|
r_value = 185;
|
|
if (r_value > 235)
|
|
r_value = 235;
|
|
}
|
|
break;
|
|
}
|
|
case BEASTLORD: case BEASTLORDGM:
|
|
case PALADIN: case PALADINGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:{
|
|
// 9 235 235
|
|
// Channel 9 200 220
|
|
// Med 12 185 235
|
|
if (level < 9)
|
|
r_value = 0;
|
|
if (level < 12 && skillid == MEDITATE)
|
|
r_value = 0;
|
|
if (r_value > 0 && skillid == CHANNELING) {
|
|
if ( level < 51 && r_value > 185)
|
|
r_value = 185;
|
|
if (r_value > 220)
|
|
r_value = 220;
|
|
}
|
|
if (r_value > 0 && skillid == MEDITATE) {
|
|
if ( level < 51 && r_value > 185)
|
|
r_value = 185;
|
|
if (r_value > 235)
|
|
r_value = 235;
|
|
}
|
|
break;
|
|
}
|
|
// Priest
|
|
case CLERIC: case CLERICGM:
|
|
case DRUID: case DRUIDGM:
|
|
case SHAMAN: case SHAMANGM:{
|
|
// 1 235 235
|
|
// Channel 4 200 220
|
|
// Med 8 235 252
|
|
if (level < 4 && skillid == CHANNELING)
|
|
r_value = 0;
|
|
if (level < 8 && skillid == MEDITATE)
|
|
r_value = 0;
|
|
if (r_value > 0 && skillid == CHANNELING) {
|
|
if ( level < 51 && r_value > 200)
|
|
r_value = 200;
|
|
if (r_value > 220)
|
|
r_value = 220;
|
|
}
|
|
if (r_value > 0 && skillid == MEDITATE) {
|
|
if ( level < 51 && r_value > 235)
|
|
r_value = 235;
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
// Int caster
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:{
|
|
// 1 235 235
|
|
// Channel 1 200 220
|
|
// Med 4 235 252
|
|
if (level < 4 && skillid == MEDITATE)
|
|
r_value = 0;
|
|
if (r_value > 0 && skillid == CHANNELING) {
|
|
if ( level < 51 && r_value > 200)
|
|
r_value = 200;
|
|
if (r_value > 220)
|
|
r_value = 220;
|
|
}
|
|
if (r_value > 0 && skillid == MEDITATE) {
|
|
if ( level < 51 && r_value > 235)
|
|
r_value = 235;
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
}
|
|
break;
|
|
}
|
|
case BARD: case BARDGM:{
|
|
r_value = 0;
|
|
if (level > 9 && skillid == MEDITATE)
|
|
r_value = 1;
|
|
break;
|
|
}
|
|
default: {
|
|
// Unknown class
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// Class Switch
|
|
break;
|
|
} // end spell skills
|
|
|
|
case SPECIALIZE_ABJURE:
|
|
case SPECIALIZE_ALTERATION:
|
|
case SPECIALIZE_CONJURATION:
|
|
case SPECIALIZE_DIVINATION:
|
|
case SPECIALIZE_EVOCATION:
|
|
case RESEARCH:{
|
|
r_value = ((level*5) + 5);
|
|
switch(eqclass){
|
|
// Int caster
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:{
|
|
// Res 16 200 200
|
|
if (level < 16 && 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
|
|
break;
|
|
} // end specilize & research skills
|
|
|
|
case BRASS_INSTRUMENTS:
|
|
case SINGING:
|
|
case STRINGED_INSTRUMENTS:
|
|
case WIND_INSTRUMENTS:
|
|
case PERCUSSION_INSTRUMENTS:{
|
|
switch(eqclass){
|
|
case BARD: case BARDGM:{
|
|
r_value = ((level*5) + 5);
|
|
if (level < 5 && skillid == PERCUSSION_INSTRUMENTS){
|
|
r_value = 0;
|
|
}
|
|
if (level < 8 && skillid == STRINGED_INSTRUMENTS){
|
|
r_value = 0;
|
|
}
|
|
if (level < 11 && skillid == BRASS_INSTRUMENTS){
|
|
r_value = 0;
|
|
}
|
|
if (level < 14 && skillid == WIND_INSTRUMENTS){
|
|
r_value = 0;
|
|
}
|
|
if (r_value > 235)
|
|
r_value = 235;
|
|
break;
|
|
}
|
|
default: {
|
|
r_value = 0;
|
|
}
|
|
break;
|
|
}// Class Switch
|
|
break;
|
|
} // bard song skills
|
|
///////////////////////////////////////////
|
|
///////////////////////////////////////////
|
|
// Class skills
|
|
// Rogue
|
|
case APPLY_POISON:
|
|
case MAKE_POISON:
|
|
case PICK_POCKETS:
|
|
case BACKSTAB:{
|
|
switch (eqclass) {
|
|
// Melee
|
|
case ROGUE: case ROGUEGM: {
|
|
r_value = ((level*5) + 5);
|
|
switch (skillid){
|
|
case APPLY_POISON:{
|
|
// 18 200 200
|
|
if (level < 18)
|
|
r_value = 0;
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
case MAKE_POISON:{
|
|
// 20 200 250
|
|
if (level < 20)
|
|
r_value = 0;
|
|
if (level < 51 && r_value > 200)
|
|
r_value = 200;
|
|
if (r_value > 250)
|
|
r_value = 250;
|
|
break;
|
|
}
|
|
case PICK_POCKETS:{
|
|
// 7 200 210
|
|
if (level < 7)
|
|
r_value = 0;
|
|
if (level < 51 && r_value > 200)
|
|
r_value = 200;
|
|
if (r_value > 210)
|
|
r_value = 210;
|
|
break;
|
|
}
|
|
case BACKSTAB:{
|
|
// 10 200 225
|
|
if (level < 10)
|
|
r_value = 0;
|
|
if (level < 51 && r_value > 200)
|
|
r_value = 200;
|
|
if (r_value > 225)
|
|
r_value = 225;
|
|
break;
|
|
}
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
} // end switch (skillid)
|
|
break;
|
|
} // end case ROGUE: case ROGUEGM:
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// Class Switch
|
|
break;
|
|
} // end rogue skills
|
|
// Monk
|
|
case FEIGN_DEATH:
|
|
case MEND:
|
|
case DRAGON_PUNCH:
|
|
case EAGLE_STRIKE:
|
|
case FLYING_KICK:
|
|
case ROUND_KICK:
|
|
case TIGER_CLAW:
|
|
case BLOCKSKILL:{
|
|
switch(eqclass){
|
|
case MONK: case MONKGM:{
|
|
r_value = ((level*5) + 5);
|
|
switch (skillid){
|
|
case MEND:{
|
|
// 1 200 200
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
case ROUND_KICK:{
|
|
// 5 200 225
|
|
if (level < 5)
|
|
r_value = 0;
|
|
if (level < 51 && r_value > 200)
|
|
r_value = 200;
|
|
if (r_value > 225)
|
|
r_value = 225;
|
|
break;
|
|
}
|
|
case TIGER_CLAW:{
|
|
// 10 200 225
|
|
if (level < 10)
|
|
r_value = 0;
|
|
if (level < 51 && r_value > 200)
|
|
r_value = 200;
|
|
if (r_value > 225)
|
|
r_value = 225;
|
|
break;
|
|
}
|
|
case BLOCKSKILL:{
|
|
// 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;
|
|
}
|
|
} // end switch (skillid)
|
|
break;
|
|
} // end case MONK: case MONKGM:
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// Class Switch
|
|
break;
|
|
} // end monk skills
|
|
// Shaman
|
|
case ALCHEMY:{
|
|
switch(eqclass){
|
|
case SHAMAN: case SHAMANGM:{
|
|
// 25 130 180
|
|
r_value = ((level*5) + 5);
|
|
if (level < 25)
|
|
r_value = 0;
|
|
if (level < 51 && r_value > 130)
|
|
r_value = 130;
|
|
if (r_value > 180)
|
|
r_value = 180;
|
|
break;
|
|
}
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// Class Switch
|
|
break;
|
|
} // end case ALCHEMY:
|
|
///////////////////////////////////////////
|
|
//////////////////////////////////////////
|
|
// Shared skill
|
|
// Shared Rogue
|
|
case HIDE:
|
|
case SNEAK:{
|
|
switch(eqclass){
|
|
// True class
|
|
case ROGUE: case ROGUEGM:{
|
|
break;
|
|
}
|
|
// Hybrids
|
|
case MONK: case MONKGM:
|
|
case RANGER: case RANGERGM:
|
|
case SHADOWKNIGHT: case SHADOWKNIGHTGM:
|
|
case BARD: case BARDGM:{
|
|
break;
|
|
}
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// Class Switch
|
|
} // end sneak/hide
|
|
case SENSE_TRAPS:
|
|
case PICK_LOCK:
|
|
case DISARM_TRAPS:{
|
|
switch(eqclass){
|
|
// True class
|
|
case ROGUE: case ROGUEGM:{
|
|
break;
|
|
}
|
|
// Hybrids
|
|
case BARD: case BARDGM:{
|
|
break;
|
|
}
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// Class Switch
|
|
break;
|
|
} // end case SENSE_TRAPS/PICK_LOCK/DISARM_TRAPS
|
|
case SAFE_FALL:
|
|
case INTIMIDATION:{
|
|
switch(eqclass){
|
|
// Melee
|
|
case MONK: case MONKGM:
|
|
case ROGUE: case ROGUEGM:{
|
|
break;
|
|
}
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// Class Switch
|
|
break;
|
|
} // end SAFE_FALL/INTIMIDATION
|
|
// Druid/Ranger/Bard
|
|
case FORAGE:{
|
|
switch(eqclass) {
|
|
case DRUID: case DRUIDGM:
|
|
case RANGER: case RANGERGM:{
|
|
if (r_value > 200)
|
|
r_value = 200;
|
|
break;
|
|
}
|
|
case BARD: case BARDGM: {
|
|
r_value = 55;
|
|
break;
|
|
}
|
|
default: {
|
|
r_value = 00;
|
|
break;
|
|
}
|
|
} // end switch (eqclass)
|
|
break;
|
|
} // end case FORAGE:
|
|
case TRACKING:{
|
|
switch(eqclass){
|
|
case RANGER: case RANGERGM:
|
|
case BARD: case BARDGM:
|
|
case DRUID: case DRUIDGM: {
|
|
}
|
|
default: {
|
|
r_value = 0;
|
|
break;
|
|
}
|
|
}// Class Switch
|
|
} // end case TRACKING
|
|
///////////////////////////////////////////
|
|
///////////////////////////////////////////
|
|
// 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;
|
|
} // end case TINKERING:
|
|
|
|
/////////////////////////////////////////
|
|
// 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 (eqclass) {
|
|
case ENCHANTER: case ENCHANTERGM:
|
|
case MAGICIAN: case MAGICIANGM:
|
|
case NECROMANCER: case NECROMANCERGM:
|
|
case WIZARD: case WIZARDGM:{
|
|
if ( r_value > 100 )
|
|
r_value = 100;
|
|
}
|
|
default: {
|
|
break;
|
|
}
|
|
} // end switch (eqclass)
|
|
break;
|
|
} // end case BIND_WOUND:
|
|
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;
|
|
}
|
|
} // end switch (skillid)
|
|
// NO skill may go over 252
|
|
if (r_value > 252)
|
|
r_value = 252;
|
|
return r_value;
|
|
}
|