Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Bug Reports

Development::Bug Reports Post detailed bug reports and what you would like to see next in the emu here.

Reply
 
Thread Tools Display Modes
  #1  
Old 08-31-2016, 02:40 PM
Riklin
Hill Giant
 
Join Date: May 2003
Location: Tacoma, WA
Posts: 220
Default Bind Wound skill 200+ not working up to 70%

Server Halls Havoc.

Database version 070_pop

db update version thru 9097

Tested with characters above and below level 50.

I have been testing bind wound and how it works. From what I can tell, bind wound works to repair injuries until your health is 50%+, until you get your bind wound skill over 200. When you attempt to bind wound when your skill is below 200 and your health is above 50%, you get the message "you cannot bind wounds above 50% hitpoints.", "You cannot have your wounds bound above 50% hitpoints".

What the problem is that when your skill is above 200, the message about not binding wounds over 50% still occurs.

I read somewhere that the skill value needs to be above 210. so I tried that. I bound wounds till my skill went to 212. I'm still getting the cannot bind wound with health over 50% message.

I have searched through the rule_values and didn't see anything obvious about this. I even zoned to make sure this issue is not related to zoning.

I have not made any major changes to the database. I removed the defiant armor drops, disabled mercs (in the rules), but that is it.


Why isn't bind wound working up to 70% when your skill is over 200?

Thanks,
Riklin
Reply With Quote
  #2  
Old 08-31-2016, 03:22 PM
ghanja's Avatar
ghanja
Dragon
 
Join Date: Aug 2012
Location: Hershey, PA
Posts: 499
Default

Is the test toon a Monk? Does the test toon have AA's (i.e. First Aid)?

source/zone/client.cpp:
Code:
bool Client::BindWound(Mob *bindmob, bool start, bool fail)
Is where Bind Wound is handled.
Reply With Quote
  #3  
Old 08-31-2016, 03:39 PM
Riklin
Hill Giant
 
Join Date: May 2003
Location: Tacoma, WA
Posts: 220
Default

The main test character is a bard. Whether his level is below 50 or over, it doesn't matter. I'm not trying to test whether the AA pts work, that is different. I am stating for my basic Linux server build, using the database version identified, that it looks like the default settings do not allow characters to bind wound over if their health is over 50%. I did not use GM commands to set the skill. I increased the bind wound skill by using lots and lots of bandages. I even zoned, to confirm whether or not zoning was required before the change took place. In any case, whether it's a bind wound skill of 200+ or 210+, bind wound does not seem to allow bind wound to be done over 50% health. It should work up to 70% health without AAs, when your skill is over 200, but its not for me.
Reply With Quote
  #4  
Old 08-31-2016, 04:01 PM
ghanja's Avatar
ghanja
Dragon
 
Join Date: Aug 2012
Location: Hershey, PA
Posts: 499
Default

Quote:
Originally Posted by Riklin View Post
The main test character is a bard. Whether his level is below 50 or over, it doesn't matter. I'm not trying to test whether the AA pts work, that is different. I am stating for my basic Linux server build, using the database version identified, that it looks like the default settings do not allow characters to bind wound over if their health is over 50%. I did not use GM commands to set the skill. I increased the bind wound skill by using lots and lots of bandages. I even zoned, to confirm whether or not zoning was required before the change took place. In any case, whether it's a bind wound skill of 200+ or 210+, bind wound does not seem to allow bind wound to be done over 50% health. It should work up to 70% health without AAs, when your skill is over 200, but its not for me.
Code:
int maxHPBonus = spellbonuses.MaxBindWound + itembonuses.MaxBindWound +
							 aabonuses.MaxBindWound;
int max_percent = 50 + 10 * maxHPBonus;
So, while you suggest it's (in your words) irrelevant as to whether or not your toon has the AA's, spells or items with effect of 269, those lines says otherwise.

Thus, whether or not you're a Monk too is relevant.

Because a Bard is not a Monk (obviously), and assuming no spells, AA's, etc. (I never mentioned level specifically, but yes I know 51+ for the AA and skill > 200), how I'm reading the code, it doesn't appear to be a "BUG" so much as perhaps not the way things are in live?

But good luck to you....
Reply With Quote
  #5  
Old 08-31-2016, 04:09 PM
ghanja's Avatar
ghanja
Dragon
 
Join Date: Aug 2012
Location: Hershey, PA
Posts: 499
Default

While I don't know what the current Live status is on Bind Wound, "back in the day" it was a Rogue, Warrior or Monk that could go to 70% max (assuming no other modifiers) upon having a Bind Wound of greater than 200.

Code:
					if ((GetClass() == MONK || GetClass() == WARRIOR || GetClass() == ROGUE) && GetSkill(EQEmu::skills::SkillBindWound) > 200) {
						max_percent = 70 + 10 * maxHPBonus;
					}
Would be formula assuming it's still true.
Reply With Quote
  #6  
Old 08-31-2016, 04:18 PM
Maze_EQ
Demi-God
 
Join Date: Mar 2012
Posts: 1,106
Default

I'd listen to Ghanja.


Code:
Bandage your wounds to heal some damage. At 200 skill or below, the formula is 1 HP per 4 points of Bind Wound, for a max of 50 HP at 200 skill. At 201 skill or above, the formula is 1 HP per 2.5 points of Bind Wound, for a max of 84 HP at 210 skill.
Note: All classes that can exceed 200 Bind Wound can bind to 70% after exceeding 200 skill, otherwise bind wound can only heal you to 50% health. Consumes a Aloe Swatch or Bandages when used.
Code:
Warrior (Max 210)
Monk (Max 210)
Rogue (Max 210)
Ranger (Max 200)
Bard (Max 200)
Paladin (Max 200)
Shadow Knight (Max 200)
Shaman (Max 200)
Cleric (Max 200)
Druid (Max 200)
Enchanter (Max 100)
Magician (Max 100)
Necromancer (Max 100)
Wizard (Max 100)


KEY WORD = EXCEED
Code:
Warrior (Max 210)
Monk (Max 210)
Rogue (Max 210)
Code:
 					if (GetClass() == MONK && GetSkill(EQEmu::skills::SkillBindWound) > 200) {
					max_percent = mod_bindwound_percent(max_percent, bindmob);
You are wrong OP.

Should prolly test apples to apples.

I do agree theres an issue in the source, but it's 100% different than whatever you tested.
__________________
"No, thanks, man. I don't want you fucking up my life, too."

Skype:
Comerian1
Reply With Quote
  #7  
Old 08-31-2016, 05:37 PM
Riklin
Hill Giant
 
Join Date: May 2003
Location: Tacoma, WA
Posts: 220
Default

Written communication sucks sometimes.

The reason I said whether or not it was a bard was irrelevant was because I could get my bind wound skill over 200! Again, and I want to stress this, I have not modified the database beyond removing defiant/combatant's/adept's drops and making sure mercs are turned off. I have done absolutely nothing involving skill caps!

To prove my point, I just ran a simple sql query:
select * from eq.skill_caps where skillid = 9 and level = 50;

The results I get are for each class (1 thru 16) at level 50, the skill cap for skill 9 (which should be bind wound) is all the same - 275! That means every class can get their bind wound skill up to 275 at level 50!

I used the database source file of peqbeta_2015-08-12-02_01.tar.gz.

I am stating that version of the database seems to support the bind wound skill going over 200, without increasing the bind wound skill to support up to 70% health.

Using Underfoot client, btw...

Doing another test with a WARRIOR this time...
create new character,
set level to 45 (#level 45) skills ui shows skill cap of 250 for Bind Wound,
summon many stacks of bandages (#summon 13009 20),
set bind wound skill to 197 (#setskill 9 197),
damage self to set health below 50% (#damage 1000) as needed
keep using bind wound until skill increases over 200 (yeah this takes awhile...)
keep damaging self below 50% until skill is over 200, then more bind wound,
Got the cannot bind wounds above 50% message with bind wound skill of 201!
Zoned to make sure this is not something that requires zoning before it works.
Same thing - cannot bind wounds above 50%.
Continued bind wound until skill got up to 211. Got the same message - "You cannot bind wounds above 50% hitpoints."

These are the steps I used to test this...

IIRC, if skills go above what the client seems to support, skills turn yellow on the Skills ui window. They are not yellow, so the client does not appear to be the limiter.


I am able to get bind wound skill up to over 210 at level 45 on the bard and the warrior. Neither can bind wounds beyond 50%, which is the reason I am asking for confirmation that this is normal. I do not believe it should work this way. My understanding is that if you can get your bind wound skill to over 200, then you should be able to bind wounds up to 70% health, which I cannot do.

That is what I am stating.
Reply With Quote
  #8  
Old 08-31-2016, 06:08 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

Pretty sure the answer was already given..


One of the issues with fixing this is having to deal with non-advanceable classes already having a '> 200' bind wounds skill.

If you can advance those classes past 200, then the skill-up code needs to be checked and modified as well.

Currently, the only class coded to use the 70% max is Monk.

Based on that, and the observation of your non-Monk characters being able to skill-up past 200, the most viable course of action is to add additional
cases for those classes that should be allowed to use the 70% rule.


If anyone can provide those classes, I could commit a fix for this..otherwise, it'll have to wait until I can research it, or another dev has time to.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #9  
Old 08-31-2016, 06:24 PM
Drajor's Avatar
Drajor
Developer
 
Join Date: Nov 2012
Location: Halas
Posts: 355
Default

How I would solve this;
- There are two specific limits, 50% and 70%. You need to determine where these values are checked.
- Drop a break point in the function that handles the BW packet to determine whether the client is blocking BW usage in various circumstances. If it is not blocking then the solution is easy. Modify the server code the suit your desired limits / skill level requirements.
- If the client is blocking it becomes more complicated. You will need to determine how the client checks 'context' for BW usage. Depending on your dev skills you can either try combinations of skill caps, level, AA etc. Or you can locate the code in the client with a disassembler and work out what it is checking.

The answer to where the limits are checked is not always one or the other. Sometimes the server implements mirror checks to the client, sometimes these checks match and sometimes they don't. Sometimes the server checks things the client doesn't. Have fun
__________________
Drajor regards you indifferently -- what would you like your tombstone to say?
Reply With Quote
  #10  
Old 08-31-2016, 06:46 PM
Maze_EQ
Demi-God
 
Join Date: Mar 2012
Posts: 1,106
Default

Quote:
Originally Posted by Uleat View Post
Pretty sure the answer was already given..


One of the issues with fixing this is having to deal with non-advanceable classes already having a '> 200' bind wounds skill.

If you can advance those classes past 200, then the skill-up code needs to be checked and modified as well.

Currently, the only class coded to use the 70% max is Monk.

Based on that, and the observation of your non-Monk characters being able to skill-up past 200, the most viable course of action is to add additional
cases for those classes that should be allowed to use the 70% rule.


If anyone can provide those classes, I could commit a fix for this..otherwise, it'll have to wait until I can research it, or another dev has time to.

Sorry for the huge quote. But basically add


Code:
|| GetClass==WARRIOR || GetClass==ROGUE
Just recompiled nagafens and works fine.
__________________
"No, thanks, man. I don't want you fucking up my life, too."

Skype:
Comerian1
Reply With Quote
  #11  
Old 08-31-2016, 07:19 PM
Riklin
Hill Giant
 
Join Date: May 2003
Location: Tacoma, WA
Posts: 220
Default

I repeated the test I had previously done with the bard and the warrior, with a monk this time. The monk can indeed go above 50% immediately upon gaining a bind wound skill of 201. So your assumptions about Monks being different are confirmed.

Everquest clients have a skillcaps text file (e.g. c:\everquest\resources\SkillCaps.txt)

This seems to indicate that the current source has the database set up correctly, but the code is likely supporting an older version of the source.

Around May 3rd 2004, the Bind Wound ability was modified so that all classes could bind wounds up to 70%. To do that, the skill caps were reset. It works the same way for all classes now. Get your bind wound skill over 200 and you too can bind wound up to 70%. Get the First Aid AAs and you can bind wound up to 100%.

So, all that needs changing is the code needs modified to work for all classes.
Reply With Quote
  #12  
Old 08-31-2016, 09:37 PM
Riklin
Hill Giant
 
Join Date: May 2003
Location: Tacoma, WA
Posts: 220
Default

To be thorough, here is the exact quote from the patch notes dated May 5 2004:

HP Regen
- All characters should now regenerate HP faster when sitting. The longer you sit, the faster you regenerate!
- You will not receive increased regen while under the effects of a DOT or while feigned.
- You can now bandage yourself up to 70% of your HP. Folks with the appropriate AA abilities can bandage above 70%.
- You can now bandage while sitting.

Here is the link, if you want to check my work...:
http://everquest.allakhazam.com/hist...es-2004-1.html
Reply With Quote
  #13  
Old 08-31-2016, 10:14 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

I checked out that link and it does look like it's valid data.


I still need some info on the scaling rate before I can make any changes.

Will have to look into both AA's as well..
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #14  
Old 09-01-2016, 12:22 PM
Riklin
Hill Giant
 
Join Date: May 2003
Location: Tacoma, WA
Posts: 220
Default

I think it uniformly works based on a ratio of 4 skill points equaling 1 hitpoint, per bandage/bind wound attempt, with a minimum of 1 hitpoint healed. That is supported by people saying they can bind up to around 86 hp per bandage. For all lvl 50 characters, with bind wound skill maxed (max skill at 50 is 275) would heal for 68 points (depending on rounding).

Last edited by Riklin; 09-01-2016 at 02:41 PM.. Reason: corrected typo - ration vs ratio...
Reply With Quote
  #15  
Old 09-02-2016, 06:24 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

Here is the function with some reworked code: http://wiki.eqemulator.org/i?Module=...Paste=JxyFgjSx (30-day lease)


As far a scaling, I am really looking for anything outside of the nominal 4:1 ratio.

(I have the max percent and bonus hp accounted for.)


In the info you provided, there was a discrepancy (or typo) in the numbers.

You said observed has been 86..but, the calculated was 68 - which is a difference of 18.

If this is not a typo, 18 can be arrived at by taking the binders level and dividing by 3.

This would give you a level range of 54-56 (18.000, 18.333, 18.666, respectively.)


Also, I don't have any info on a 'minimum' heal amount, if there are bonus ranges/caps or if there any other factors.

Finding plausible information on this skill is almost impossible...


The code is simple and I have tested the basic operation.

I still need to test with AA and items mods (spells should be ok if both of those work.)


EDIT: Updated linked code..
__________________
Uleat of Bertoxxulous

Compilin' Dirty

Last edited by Uleat; 09-02-2016 at 09:09 PM..
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 04:56 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3