View Single Post
  #189  
Old 02-17-2009, 07:27 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I made some changes to the source so it can recognize the new Drakkin race. I haven't looked around much at what else might need to be changed yet though. So far, $race in perl scripts seems to report properly for Drakkin now instead of reporting unknown.

It looks like the reason that weapons and other items aren't working properly for Drakkin is because the source isn't set to handle the Drakkin race properly yet. I added this last night:

Code:
#define human_1			1
#define barbarian_1		2
#define erudite_1		4
#define woodelf_1		8
#define highelf_1		16
#define darkelf_1		32
#define halfelf_1		64
#define dwarf_1			128
#define troll_1			256
#define ogre_1			512
#define halfling_1		1024
#define gnome_1			2048
#define iksar_1			4096
#define vahshir_1		8192
#define rall_1			16384 //guessing this is froglok?
#define drakkin_1		32768
From looking at item stats on 13th floor and adding up the races on items, it seems like 32768 should be the correct number for the Drakkin race. ALL/ALL items should be set to 65535 and it seems like most already are. I did notice that it looks like GeorgeS item editor may have been using a value of 131071 for ALL/ALL items at some point. I think that should still work properly, but that may be the source of some issues. If so, I think it would probably be safe to convert all race fields in the items table from 131071 to 65535. I think the main thing is that something else needs to be changed in the source so that the server knows that Drakkins are a player race and that items with 32768 in them should be usable by Drakkins.

For the issues with Item Slot Numbers being re-arranged in SoF, the slots are defined here:

/common/eq_constants.h
Code:
	////////////////////////
	// Equip slots
	////////////////////////
	
	SLOT_CHARM		= 0,
	SLOT_EAR01		= 1,
	SLOT_HEAD		= 2,
	SLOT_FACE		= 3,
	SLOT_EAR02		= 4,
	SLOT_NECK		= 5,
	SLOT_SHOULDER	= 6,
	SLOT_ARMS		= 7,
	SLOT_BACK		= 8,
	SLOT_BRACER01	= 9,
	SLOT_BRACER02	= 10,
	SLOT_RANGE		= 11,
	SLOT_HANDS		= 12,
	SLOT_PRIMARY	= 13,
	SLOT_SECONDARY	= 14,
	SLOT_RING01		= 15,
	SLOT_RING02		= 16,
	SLOT_CHEST		= 17,
	SLOT_LEGS		= 18,
	SLOT_FEET		= 19,
	SLOT_WAIST		= 20,
	SLOT_AMMO		= 21,
	
	////////////////////////
	// All other slots
	////////////////////////
	SLOT_PERSONAL_BEGIN = 22,
	SLOT_PERSONAL_END = 29,
	
	SLOT_CURSOR		= 30,
	
	SLOT_CURSOR_END	= (sint16)0xFFFE,	// Last item on cursor queue
	// Cursor bag slots are 331->340 (10 slots)
	
	// Personal Inventory Slots
	// Slots 1 through 8 are slots 22->29
	// Inventory bag slots are 251->330 (10 slots per bag)
Is there some way we can do an IF check that would use different lists depending on the expansion that the client is using? If so, then all we should have to do is do another IF check on usable slots for ammo items and convert 21 to 22.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 02-18-2009 at 03:58 AM..
Reply With Quote