EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Development (https://www.eqemulator.org/forums/forumdisplay.php?f=590)
-   -   Bind wound (https://www.eqemulator.org/forums/showthread.php?t=17965)

mollymillions 02-26-2005 05:40 AM

Bind Wound
 
Here is a fix for the Bind Wound skill caps. According to web sources bind wound should heal 0.25 * bind wound skill until bind wound skill = 200 (e.g. 50 hp when bind wound = 200) and 0.4 * bind wound skill when bind wound skill > 200 (e.g. 80 hp when bind wound = 201).


Heres the raw data for the skill caps:
Code:

Skill,,BRD,CLR,DRU,ENC,MAG,MNK,NEC,PAL,RAN,ROG,SHA,SHD,WAR,WIZ,BST,BZR
Bind Wound,Level,1,1,1,1,1,1,1,10,15,1,1,1,5,1,1,1
Bind Wound,Cap 50,150,200,200,100,100,200,100,200,150,176,200,150,175,100,200,200
Bind Wound,Cap 65,200,201,200,100,100,210,100,210,200,210,200,200,210,100,210,210



[font=Arial]
Source/zone/client.cpp: Line 1938
Code:

if (GetSkill(BIND_WOUND) >= 10) {
        bindhps += GetSkill(BIND_WOUND)*12/100;
}
 
if (bindhps > 30){
        bindhps = 30;
}


-->
Code:

if (GetSkill(BIND_WOUND) >= 200) {
                bindhps += GetSkill(BIND_WOUND)*0.4;
}
else if (GetSkill(BIND_WOUND) >= 10) {
                bindhps += GetSkill(BIND_WOUND)*0.25;
}




Source/zone/maxskill.h: Line 2075
Code:

        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 ENCHANTERGM:
                case MAGICIAN: case MAGICIANGM:
                case NECROMANCER: case NECROMANCERGM:
                case WIZARD: case WIZARDGM:{
                        if ( r_value > 100 )
                        r_value = 100;
                }
                default: break;
        }
        break;
        }


-->
Code:

        case BIND_WOUND:{
        switch(class_){

                case BARD: case BARDGM:{
                r_value = ((level*5)+5);               
                if(level >= 50) {               
                        if(r_value > 210)
                                r_value = 210;
                if(level < 50)
                        if(r_value > 200)
                                r_value = 200;
                break;
                }
                break;
                }

                case CLERIC: case CLERICGM:{
                r_value = ((level*5)+5);                       
                if(level >= 50) {               
                        if(r_value > 201)
                                r_value = 201;
                if(level < 50)
                        if(r_value > 200)
                                r_value = 200;
                break;       
                }
                break;
                }
 
                case DRUID: case DRUIDGM:
                case SHAMAN: case SHAMANGM:{
                r_value = ((level*5) + 5);
                if(r_value > 200)
                        r_value = 200;                       
                break;
                }       

                case MAGICIAN: case MAGICIANGM:
                case ENCHANTER: case ENCHANTERGM:
                case NECROMANCER: case NECROMANCERGM:
                case WIZARD: case WIZARDGM:{
                r_value = ((level*5) + 5);
                        if(r_value > 100)
                        r_value = 100;
                break;
                }

                case BEASTLORD: case BEASTLORDGM:
                case BERSERKER: case BERSERKERGM:
                case MONK: case MONKGM: {
                r_value = ((level*5)+5);                       
                if(level >= 50) {               
                        if(r_value > 210)
                                r_value = 210;
                if(level < 50)
                        if(r_value > 200)
                                r_value = 200;
                break;       
                }
                break;
                }

                case PALADIN: case PALADINGM: {
                if (level > 10)
                        r_value = (((level-10)*5)+5);                       
                        if(level >= 50) {               
                                if(r_value > 210)
                                        r_value = 210;
                        if(level < 50)
                                if(r_value > 200)
                                        r_value = 200;
                        break;       
                        }
                break;
                }

                case RANGER: case RANGERGM: {
                if (level > 15)
                        r_value = (((level-15)*5)+5);                       
                        if(level >= 50) {               
                                if(r_value > 200)
                                        r_value = 200;
                        if(level < 50)
                                if(r_value > 150)
                                        r_value = 150;                                       
                        break;
                        }
                break;
                }
 
                case ROGUE: case ROGUEGM: {
                r_value = ((level*5)+5);                       
                if(level >= 50) {               
                        if(r_value > 210)
                                r_value = 210;
                if(level < 50)
                        if(r_value > 176)
                                r_value = 176;
                break;       
                }
                break;
                }

                case SHADOWKNIGHT: case SHADOWKNIGHTGM: {
                r_value = ((level*5)+5);                       
                if(level >= 50)               
                        if(r_value > 200)
                                r_value = 200;
                if(level < 50)
                        if(r_value > 150)
                                r_value = 150;
                break;       
                }

                case WARRIOR: case WARRIORGM: {
                if (level > 5)
                        r_value = (((level-5)*5)+5);                       
                        if(level >= 50) {               
                                if(r_value > 210)
                                        r_value = 210;
                        if(level < 50)
                                if(r_value > 175)
                                        r_value = 175;                                       
                        break;
                        }
                break;
                }
 
                default: r_value = 0;
                break;
        }
        break;

        }
        case SENSE_HEADING:
        case SWIMMING:
        case ALCOHOL_TOLERANCE:
        case BEGGING:{
        r_value = 5 + (level*5);
        if (r_value > 200)
                r_value = 200;
        break;
        }

[font=Arial]

[font=Arial](Also, I am 99% sure that all classes can bind wound up to 70% from level one nowdays, but I am not positive so I haven

fathernitwit 02-27-2005 11:59 AM

good work. I stuck this in my code, it'll get in eventually... I just synced up yesterday, so it will prolly be a while.

also, I noticed a flaw in your conditionals:
Code:

                case BARD: case BARDGM:{
                r_value = ((level*5)+5);               
                if(level >= 50) {               
                        if(r_value > 210)
                                r_value = 210;
                if(level < 50)
                        if(r_value > 200)
                                r_value = 200;
                break;
                }
                break;
                }

has a spare {} floating around which alters the logic, it should be:
Code:

                case BARD: case BARDGM:{
                r_value = ((level*5)+5);
                if(level >= 50) {
                        if(r_value > 210)
                                r_value = 210;
                } else {
                        if(r_value > 200)
                                r_value = 200;
                }
                break;
                }


resulting in:
Code:

case BIND_WOUND:{
        switch(class_){
                case BARD: case BARDGM:{
                r_value = ((level*5)+5);
                if(level >= 50) {
                        if(r_value > 210)
                                r_value = 210;
                } else {
                        if(r_value > 200)
                                r_value = 200;
                }
                break;
                }
                case CLERIC: case CLERICGM:{
                r_value = ((level*5)+5);                       
                if(level >= 50) {
                        if(r_value > 201)
                                r_value = 201;
                } else {
                        if(r_value > 200)
                                r_value = 200;
                }
                break;
                }
 
                case DRUID: case DRUIDGM:
                case SHAMAN: case SHAMANGM:{
                r_value = ((level*5) + 5);
                if(r_value > 200)
                        r_value = 200;                       
                break;
                }       
                case MAGICIAN: case MAGICIANGM:
                case ENCHANTER: case ENCHANTERGM:
                case NECROMANCER: case NECROMANCERGM:
                case WIZARD: case WIZARDGM:{
                  r_value = ((level*5) + 5);
                  if(r_value > 100)
                        r_value = 100;
                break;
                }
                case BEASTLORD: case BEASTLORDGM:
                case BERSERKER: case BERSERKERGM:
                case MONK: case MONKGM: {
                r_value = ((level*5)+5);                       
                if(level >= 50) {
                        if(r_value > 210)
                                r_value = 210;
                } else {
                        if(r_value > 200)
                                r_value = 200;
                }
                break;
                }
                case PALADIN: case PALADINGM: {
                  if (level > 10) {
                        r_value = (((level-10)*5)+5);                       
                        if(level >= 50) {
                                if(r_value > 210)
                                        r_value = 210;
                        } else {
                                if(r_value > 200)
                                        r_value = 200;
                        }
                  }
                  break;
                }
                case RANGER: case RANGERGM: {
                  if (level > 15) {
                        r_value = (((level-15)*5)+5);                       
                        if(level >= 50) {
                                if(r_value > 200)
                                        r_value = 200;
                        } else {
                                if(r_value > 150)
                                        r_value = 150;
                        }
                  }
                  break;
                }
 
                case ROGUE: case ROGUEGM: {
                r_value = ((level*5)+5);                       
                if(level >= 50) {
                        if(r_value > 210)
                                r_value = 210;
                } else {
                        if(r_value > 176)
                                r_value = 176;
                }
                break;
                }
                case SHADOWKNIGHT: case SHADOWKNIGHTGM: {
                r_value = ((level*5)+5);                       
                if(level >= 50) {               
                        if(r_value > 200)
                                r_value = 200;
                } else {
                        if(r_value > 150)
                                r_value = 150;
                }
                break;
                }
                case WARRIOR: case WARRIORGM: {
                if (level > 5) {
                        r_value = (((level-5)*5)+5);                       
                        if(level >= 50) {
                                if(r_value > 210)
                                        r_value = 210;
                        } else {
                                if(r_value > 175)
                                        r_value = 175;
                        }
                }
                break;
                }
 
                default: r_value = 0;
                break;
        }
        break;
        }


mollymillions 02-27-2005 02:34 PM

Also

if (GetSkill(BIND_WOUND) >= 200) {


should be

if (GetSkill(BIND_WOUND) > 200) {


All times are GMT -4. The time now is 05:34 AM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.