PDA

View Full Version : Bind wound


mollymillions
02-26-2005, 05:40 AM
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:

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



Source/zone/client.cpp: Line 1938

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

if (bindhps > 30){
bindhps = 30;
}
-->

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

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;
}

-->

[font=Verdana] 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:
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:

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:
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) {