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 03-04-2008, 05:35 AM
LordKahel
Fire Beetle
 
Join Date: Sep 2007
Posts: 22
Default Lore augments no longer count for lore once slotted

It seem that once a LORE augment get slotted it no longer count when checking for duplicate items.

The problem seem to be in Item.cpp

Code:
sint16 Inventory::_HasItem(map<sint16, ItemInst*>& bucket, uint32 item_id, uint8 quantity)
{
	iter_inst it;
	iter_contents itb;
	ItemInst* inst = NULL;
	uint8 quantity_found = 0;
	
	// Check item: After failed checks, check bag contents (if bag)
	for (it=bucket.begin(); it!=bucket.end(); it++) {
		inst = it->second;
		if (inst && (inst->GetID() == item_id)) {
			quantity_found += (inst->GetCharges()<=0) ? 1 : inst->GetCharges();
			if (quantity_found >= quantity)
				return it->first;
		}
		
		// Go through bag, if bag
		if (inst && inst->IsType(ItemClassContainer)) {
			
			for (itb=inst->_begin(); itb!=inst->_end(); itb++) {
				ItemInst* baginst = itb->second;
				if (baginst->GetID() == item_id) {
					quantity_found += (baginst->GetCharges()<=0) ? 1 : baginst->GetCharges();
					if (quantity_found >= quantity)
						return Inventory::CalcSlotId(it->first, itb->first);
				}
			}
		}
	}
	
	// Not found
	return SLOT_INVALID;
}
This method that goes thru the items does not seem to check the augments slots for each item it checks.


It would need somethign like this to check the augments slots:
Code:
int i;
for(i = 0; i < MAX_AUGMENT_SLOTS; i++) {
    if (inst->GetAugmentItemID(i) == item_id) 
      quantity_found++; // Only one augment per slot.
}
The only problem i see is what SLOT to return if a augment is found slotted in a item. Maybe a generic constant SLOT_AUGMENT, that would work for CheckLoreConflict but i don't know if it will break anything else.
Reply With Quote
  #2  
Old 03-04-2008, 11:37 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I have noticed this on my server as well. For now, I am planning to remove augs that would be very unbalancing if used on multiple items when they should be lore. Like for example, an aug with shielding is insanely overpowering if you can have 10+ of them all stacking. If shielding had a cap, that wouldn't really be an issue, but since it doesn't atm, it is a pretty big issue.

This would definitely be a nice update to get in a future release. I am not sure how it would effect items that already have LORE augs. I imagine either all augs accept 1 would get deleted, or they would all remain, but if you took the item with a lore aug off, you couldn't put it back on until you removed the aug.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #3  
Old 03-04-2008, 02:23 PM
gernblan
Discordant
 
Join Date: Aug 2006
Posts: 394
Default

They would PROBABLY remain, as I think the lore checking is only done when you are sealing or placing the item in it's character slot. IF they took the lore aug'd item off then tried to put it back on, they may get an error, but for those who already have end-game gear and have stacked augments to the sky,. as long as they do not touch those items, they should still be able to get away with the exploit.

Some method of deleting all but one of each lore augment on characters would need to be devised.

OR perhaps a renumber of those augments to a different ID, making them all go "poof". Then replacing in the lootdrops the new IDs. That would be a painful nerf for players though, but will only really hammer on those who were exploiting the heck out of this in the first place.

It can also leave a potential mess in the inventory tables - tons of items floating out there in the inventory tables that no longer exist.

Any way you look at this, it's a mess.

But it NEEDS to be fixed asap.

Server balance is impossible with bugs like this.
__________________
--
Keelyeh
Owner, ServerOp and Developer
Jest 4 Server
Linux (Jest3 runs on Fedora, our Dev servers usually run on Ubuntu and/or Gentoo), OC-12 Connection = Hella Fast
Reply With Quote
  #4  
Old 03-04-2008, 08:55 PM
AndMetal
Developer
 
Join Date: Mar 2007
Location: Ohio
Posts: 648
Default

IMO, you can do one of 3 ways (all non-code related, just DB related):
  1. Leave it in (grandfathered in if you will)
  2. Put together a list of everyone who has the duplicates, and deal with them on a case-by-case basis
  3. Remove the augments completely from the item if they are Lore duplicates (maybe put it on the cursor when they log back in)

1 is easy enough, because you don't have to do anything.

2 is a little more difficult, but not impossible. It would basically involve joining a few tables to see if the itemid in the augment fields are lore items. I was running over a few queries, and wasn't able to easily find what I was looking for, but it's not impossible.

3 is just taking 2 a step further, and actually making the changes. It would mainly involve changing the SELECT query to an UPDATE query, possibly even using a subquery.
__________________
GM-Impossible of 'A work in progress'
A non-legit PEQ DB server
How to create your own non-legit server

My Contributions to the Wiki
Reply With Quote
  #5  
Old 03-06-2008, 07:43 AM
LordKahel
Fire Beetle
 
Join Date: Sep 2007
Posts: 22
Default

Ok i worked and tested a fix for this problem . You can find it in the code submissions forum.

Code submission fix


--
Pyronis / Kahel
Dev - Jest 3 Server
Reply With Quote
Reply


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 03:50 PM.


 

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