Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Server Code Submissions

Reply
 
Thread Tools Display Modes
  #1  
Old 04-25-2011, 07:26 AM
501st
Sarnak
 
Join Date: Jan 2009
Location: Virginia
Posts: 51
Default LoN Illusion fix

There's a few illusions that, when cast, appear at odd sizes or will not show up as the proper genders instead being set to gender 2 which will cause them to appear as a human male.

This will fix the Kerran illusion (male/female gender dependent upon the gender of the recipient.), the Brownie illusion (same as Kerran plus a size change), the Drachnid illusion (same as Kerran), the two Banshee illusions (default to gender 1), the Spectre/Basilisk/Fairy illusions (size changes) and all of the LoY pirates (really only used for the Halloween illusions however as of right now on Live the gnome and ogre pirates are both clickies and the ogre is also an enchanter illusion so I just added them all in since they are plagued by these same problems anyway)

races.h
line 51-72
Code:
#define FROGLOK			330
#define TROLL_PIRATE	331
#define GNOME_PIRATE	338
#define DARKELF_PIRATE	339
#define OGRE_PIRATE		340
#define HUMAN_PIRATE	341
#define ERUDITE_PIRATE	342
#define CHOKIDAI		356
#define SKELETON_LDON	367
#define BASILISK_DON	436
#define DRACHNID_DODH	461
#define FAIRY_DODH		473
#define SPECTRE_POR		485
#define BANSHEE1		487
#define BANSHEE2		488
#define FROGLOK2		74	// Not sure why /who all reports race as 74 for frogloks
#define DRAKKIN			522 // 32768
#define KERRAN_TBS		562
#define BROWNIE_SOF		568
#define EMU_RACE_NPC	131069 // was 65533
#define EMU_RACE_PET	131070 // was 65534
#define EMU_RACE_UNKNOWN 131071 // was 65535
mob.cpp
line 1368-1397
Code:
int8 Mob::GetDefaultGender(int16 in_race, int8 in_gender) {
//cout << "Gender in:  " << (int)in_gender << endl;
	if ((in_race > 0 && in_race <= GNOME )
		|| in_race == IKSAR || in_race == VAHSHIR || in_race == FROGLOK || in_race == DRAKKIN
		|| in_race == 15 || in_race == 50 || in_race == 57 || in_race == 70 || in_race == 98
		|| in_race == 118 || in_race == TROLL_PIRATE || in_race == OGRE_PIRATE || in_race == GNOME_PIRATE
		|| in_race == DARKELF_PIRATE || in_race == HUMAN_PIRATE || in_race == ERUDITE_PIRATE || in_race == KERRAN_TBS
		|| in_race == DRACHNID_DODH || in_race == BROWNIE_SOF) {
		if (in_gender >= 2) {
			// Female default for PC Races
			return 1;
		}
		else
			return in_gender;
	}
	else if (in_race == 44 || in_race == 52 || in_race == 55 || in_race == 65 || in_race == 67 || in_race == 88 || in_race == 117 || in_race == 127 ||
		in_race == 77 || in_race == 78 || in_race == 81 || in_race == 90 || in_race == 92 || in_race == 93 || in_race == 94 || in_race == 106 || in_race == 112 || in_race == 471) {
		// Male only races
		return 0;

	}
	else if (in_race == 25 || in_race == 56 || in_race == BANSHEE1 || in_race == BANSHEE2) {
		// Female only races
		return 1;
	}
	else {
		// Neutral default for NPC Races
		return 2;
	}
}
spell_effects.cpp
line 1236-1272
Code:
				else {
					SendIllusionPacket
					(
						spell.base[i],
						Mob::GetDefaultGender(spell.base[i], GetGender()),
						spell.base2[i]
					);
					if(spell.base[i] == OGRE || spell.base[i] == BASILISK_DON || spell.base[i] == OGRE_PIRATE){
						SendAppearancePacket(AT_Size, 9);
					}
					else if(spell.base[i] == TROLL || spell.base[i] == SPECTRE_POR || spell.base[i] == TROLL_PIRATE){
						SendAppearancePacket(AT_Size, 8);
					}
					else if(spell.base[i] == VAHSHIR || spell.base[i] == BARBARIAN){
						SendAppearancePacket(AT_Size, 7);
					}
					else if(spell.base[i] == HALF_ELF || spell.base[i] == WOOD_ELF || spell.base[i] == DARK_ELF || spell.base[i] == FROGLOK
						|| spell.base[i] == DARKELF_PIRATE || spell.base[i] == KERRAN_TBS){
						SendAppearancePacket(AT_Size, 5);
					}
					else if(spell.base[i] == DWARF || spell.base[i] == FAIRY_DODH){
						SendAppearancePacket(AT_Size, 4);
					}
					else if(spell.base[i] == HALFLING || spell.base[i] == GNOME || spell.base[i] == GNOME_PIRATE){
						SendAppearancePacket(AT_Size, 3);
					}
					else if(spell.base[i] == WOLF || spell.base[i] == BROWNIE_SOF) {
						SendAppearancePacket(AT_Size, 2);
					}
					else if(spell.base[i] == DRACHNID_DODH || spell.base[i] == BANSHEE1 || spell.base[i] == BANSHEE2 || 
						spell.base[i] == HUMAN_PIRATE || spell.base[i] == ERUDITE_PIRATE){
						SendAppearancePacket(AT_Size, 6);
					}
					else{
						SendAppearancePacket(AT_Size, 6);
					}
				}
spell_effects.cpp
line 3172-3207
Code:
			case SE_IllusionCopy:
			case SE_Illusion:
			{
				SendIllusionPacket(0, GetBaseGender());
				if(GetRace() == OGRE || GetRace() == OGRE_PIRATE){
					SendAppearancePacket(AT_Size, 9);
				}
				else if(GetRace() == TROLL || GetRace() == TROLL_PIRATE){
					SendAppearancePacket(AT_Size, 8);
				}
				else if(GetRace() == VAHSHIR || GetRace() == FROGLOK || GetRace() == BARBARIAN){
					SendAppearancePacket(AT_Size, 7);
				}
				else if(GetRace() == HALF_ELF || GetRace() == WOOD_ELF || GetRace() == DARK_ELF || GetRace() == DARKELF_PIRATE || GetRace() == KERRAN_TBS){
					SendAppearancePacket(AT_Size, 5);
				}
				else if(GetRace() == DWARF){
					SendAppearancePacket(AT_Size, 4);
				}
				else if(GetRace() == HALFLING || GetRace() == GNOME || GetRace() == GNOME_PIRATE){
					SendAppearancePacket(AT_Size, 3);
				}
				else if(GetRace()== BROWNIE_SOF){
					SendAppearancePacket(AT_Size, 2);
				}
				else if(GetRace() == DRACHNID_DODH || GetRace() == HUMAN_PIRATE || GetRace() == ERUDITE_PIRATE){
					SendAppearancePacket(AT_Size, 6);
				}
				else{
					SendAppearancePacket(AT_Size, 6);
				}
				for(int x = 0; x < 7; x++){
					SendWearChange(x);
				}
				break;
			}
-Danyelle
Reply With Quote
  #2  
Old 04-25-2011, 11:30 AM
Akkadius's Avatar
Akkadius
Administrator
 
Join Date: Feb 2009
Location: MN
Posts: 2,071
Default

Create a .diff patch file, it will be much easier for those trying to find out what specifically was changed.

http://tortoisesvn.net/docs/nightly/...dug-patch.html

Post the .diff file here.

PS: Contact me sometime Danyelle
Reply With Quote
  #3  
Old 05-06-2011, 07:28 PM
501st
Sarnak
 
Join Date: Jan 2009
Location: Virginia
Posts: 51
Default

Bah i'm an idiot. Completely forgot about that. Here.

Code:
Index: trunk/EQEmuServer/common/classes.cpp
===================================================================
--- trunk/EQEmuServer/common/classes.cpp	(revision 1888)
+++ trunk/EQEmuServer/common/classes.cpp	(working copy)
@@ -21,7 +21,9 @@
 const char* GetEQClassName(int8 class_, int8 level) {
 	switch(class_) {
       case WARRIOR: 
-		 if (level >= 70) 
+		 if (level >= 75) 
+			return "Imperator"; 
+		 else if (level >= 70) 
 			return "Vanquisher"; 
          else if (level >= 65) 
             return "Overlord";   //Baron-Sprite: LEAVE MY CLASSES ALONE.
@@ -34,7 +36,9 @@
          else 
             return "Warrior"; 
       case CLERIC:
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Exemplar";
+		 else if (level >= 70) 
 			return "Prelate"; 
          else if (level >= 65) 
             return "Archon"; 
@@ -47,7 +51,9 @@
          else 
             return "Cleric"; 
       case PALADIN: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Holy Defender";
+		 else if (level >= 70) 
 			return "Lord"; 
          else if (level >= 65) 
             return "Lord Protector"; 
@@ -60,7 +66,9 @@
          else 
             return "Paladin"; 
       case RANGER:
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Huntmaster";
+		 else if (level >= 70) 
 			return "Plainswalker"; 
          else if (level >= 65) 
             return "Forest Stalker"; 
@@ -73,7 +81,9 @@
          else 
             return "Ranger"; 
       case SHADOWKNIGHT:
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Bloodreaver";
+		 else if (level >= 70) 
 			return "Scourge Knight"; 
          else if (level >= 65) 
             return "Dread Lord"; 
@@ -86,7 +96,9 @@
          else 
             return "Shadowknight"; 
       case DRUID:
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Storm Caller";
+		 else if (level >= 70) 
 			return "Natureguard"; 
          else if (level >= 65) 
             return "Storm Warden"; 
@@ -99,7 +111,9 @@
          else 
             return "Druid"; 
       case MONK:
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Ashenhand";
+		 else if (level >= 70) 
 			return "Stone Fist"; 
          else if (level >= 65) 
             return "Transcendent"; 
@@ -112,7 +126,9 @@
          else 
             return "Monk"; 
       case BARD: 
-	     if (level >= 70) 
+	     if (level >= 75)
+			return "Lyricist";
+		 else if (level >= 70) 
 			return "Performer";
          else if (level >= 65) 
             return "Maestro"; 
@@ -125,7 +141,9 @@
          else 
             return "Bard"; 
       case ROGUE: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Shadowblade";
+		 else if (level >= 70) 
 			return "Nemesis"; 
          else if (level >= 65) 
             return "Deceiver"; 
@@ -138,7 +156,9 @@
          else 
             return "Rogue"; 
       case SHAMAN: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Spiritwatcher";
+		 else if (level >= 70) 
 			return "Soothsayer";
          else if (level >= 65) 
             return "Prophet"; 
@@ -151,7 +171,9 @@
          else 
             return "Shaman"; 
       case NECROMANCER: 
-	     if (level >= 70) 
+	     if (level >= 75)
+			return "Deathcaller";
+		 else if (level >= 70) 
 			return "Wraith"; 
          else if (level >= 65) 
             return "Arch Lich"; 
@@ -164,7 +186,9 @@
          else 
             return "Necromancer"; 
       case WIZARD: 
-	     if (level >= 70) 
+	     if (level >= 75)
+			return "Pyromancer";
+		 else if (level >= 70) 
 			return "Grand Arcanist"; 
          else if (level >= 65) 
             return "Arcanist"; 
@@ -177,7 +201,9 @@
          else 
             return "Wizard"; 
       case MAGICIAN: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Grand Summoner";
+		 else if (level >= 70) 
 			return "Arch Magus"; 
          else if (level >= 65) 
             return "Arch Convoker"; 
@@ -185,12 +211,14 @@
             return "Arch Mage"; 
          else if (level >= 55) 
             return "Conjurer"; 
-         if (level >= 51) 
+         else if (level >= 51) 
             return "Elementalist"; 
          else 
             return "Magician"; 
       case ENCHANTER: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Entrancer";
+		 else if (level >= 70) 
 			return "Bedazzler"; 
          else if (level >= 65) 
             return "Coercer"; 
@@ -203,7 +231,9 @@
          else 
             return "Enchanter"; 
       case BEASTLORD: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Frostblood";
+		 else if (level >= 70) 
 			return "Wildblood"; 
          else if (level >= 65) 
             return "Feral Lord"; 
@@ -216,7 +246,9 @@
          else 
             return "Beastlord"; 
 	  case BERSERKER: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Juggernaut";
+		 else if (level >= 70) 
 			return "Ravager"; 
          else if (level >= 65) 
             return "Fury"; 
@@ -229,7 +261,9 @@
          else 
             return "Berserker"; 
 	  case BANKER: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Grand Banker";
+		 else if (level >= 70) 
 			return "Master Banker"; 
          else if (level >= 65) 
             return "Elder Banker"; 
@@ -275,16 +309,22 @@
 			return "Berserker Guildmaster";
 	  case MERCHANT:
 			return "Merchant";
-		case ADVENTURERECRUITER:
+	  case DISCORD_MERCHANT:
+		  return "Discord Merchant";
+	  case ADVENTURERECRUITER:
 			return "Adventure Recruiter";
-		case ADVENTUREMERCHANT:
+	  case ADVENTUREMERCHANT:
 			return "Adventure Merchant";
-		case CORPSE_CLASS:
-			return "Corpse Class";
-		case TRIBUTE_MASTER:
+	  case LDON_TREASURE:
+		    return "Chest";
+	  case TRIBUTE_MASTER:
 			return "Tribute Master";
-		case GUILD_TRIBUTE_MASTER:
+	  case GUILD_TRIBUTE_MASTER:
 			return "Guild Tribute Master";
+	  case ALT_CURRENCY_MERCH:
+		    return "Alternate Currency Merchant";
+	  case MERC_LIASON:
+		    return "Mercenary Liason";
 	  default:
 			return "Unknown";
 	}
Index: trunk/EQEmuServer/common/classes.h
===================================================================
--- trunk/EQEmuServer/common/classes.h	(revision 1888)
+++ trunk/EQEmuServer/common/classes.h	(working copy)
@@ -59,11 +59,12 @@
 #define ADVENTURERECRUITER 60
 #define ADVENTUREMERCHANT 61
 #define LDON_TREASURE 62 //objects you can use /open on first seen in LDONs
-#define CORPSE_CLASS 62	//only seen on Danvi's Corpse in Akheva so far..
 #define TRIBUTE_MASTER	63
 #define GUILD_TRIBUTE_MASTER	64	//not sure
 #define NORRATHS_KEEPERS_MERCHANT 67
 #define DARK_REIGN_MERCHANT 68
+#define ALT_CURRENCY_MERCH 70 //TBS and SoF Merchants (Doubloons. Faycite etc)
+#define MERC_LIASON 71 //Mercenary Merchants.
 #define warrior_1 1
 #define monk_1 64
 #define paladin_1 4
Index: trunk/EQEmuServer/common/races.h
===================================================================
--- trunk/EQEmuServer/common/races.h	(revision 1888)
+++ trunk/EQEmuServer/common/races.h	(working copy)
@@ -49,8 +49,24 @@
 #define CONTROLLED_BOAT 141
 #define IKSAR_SKELETON	161
 #define FROGLOK			330
+#define TROLL_PIRATE	331
+#define GNOME_PIRATE	338
+#define DARKELF_PIRATE	339
+#define OGRE_PIRATE		340
+#define HUMAN_PIRATE	341
+#define ERUDITE_PIRATE	342
+#define CHOKIDAI		356
+#define SKELETON_LDON	367
+#define BASILISK_DON	436
+#define DRACHNID_DODH	461
+#define FAIRY_DODH		473
+#define SPECTRE_POR		485
+#define BANSHEE1		487
+#define BANSHEE2		488
 #define FROGLOK2		74	// Not sure why /who all reports race as 74 for frogloks
 #define DRAKKIN			522 // 32768
+#define KERRAN_TBS		562
+#define BROWNIE_SOF		568
 #define EMU_RACE_NPC	131069 // was 65533
 #define EMU_RACE_PET	131070 // was 65534
 #define EMU_RACE_UNKNOWN 131071 // was 65535
Index: trunk/EQEmuServer/zone/mob.cpp
===================================================================
--- trunk/EQEmuServer/zone/mob.cpp	(revision 1888)
+++ trunk/EQEmuServer/zone/mob.cpp	(working copy)
@@ -1369,7 +1369,10 @@
 //cout << "Gender in:  " << (int)in_gender << endl;
 	if ((in_race > 0 && in_race <= GNOME )
 		|| in_race == IKSAR || in_race == VAHSHIR || in_race == FROGLOK || in_race == DRAKKIN
-		|| in_race == 15 || in_race == 50 || in_race == 57 || in_race == 70 || in_race == 98 || in_race == 118) {
+		|| in_race == 15 || in_race == 50 || in_race == 57 || in_race == 70 || in_race == 98
+		|| in_race == 118 || in_race == TROLL_PIRATE || in_race == OGRE_PIRATE || in_race == GNOME_PIRATE
+		|| in_race == DARKELF_PIRATE || in_race == HUMAN_PIRATE || in_race == ERUDITE_PIRATE || in_race == KERRAN_TBS
+		|| in_race == DRACHNID_DODH || in_race == BROWNIE_SOF) {
 		if (in_gender >= 2) {
 			// Female default for PC Races
 			return 1;
@@ -1383,7 +1386,7 @@
 		return 0;
 
 	}
-	else if (in_race == 25 || in_race == 56) {
+	else if (in_race == 25 || in_race == 56 || in_race == BANSHEE1 || in_race == BANSHEE2) {
 		// Female only races
 		return 1;
 	}
Index: trunk/EQEmuServer/zone/spell_effects.cpp
===================================================================
--- trunk/EQEmuServer/zone/spell_effects.cpp	(revision 1888)
+++ trunk/EQEmuServer/zone/spell_effects.cpp	(working copy)
@@ -1240,27 +1240,32 @@
 						Mob::GetDefaultGender(spell.base[i], GetGender()),
 						spell.base2[i]
 					);
-					if(spell.base[i] == OGRE){
+					if(spell.base[i] == OGRE || spell.base[i] == BASILISK_DON || spell.base[i] == OGRE_PIRATE){
 						SendAppearancePacket(AT_Size, 9);
 					}
-					else if(spell.base[i] == TROLL){
+					else if(spell.base[i] == TROLL || spell.base[i] == SPECTRE_POR || spell.base[i] == TROLL_PIRATE){
 						SendAppearancePacket(AT_Size, 8);
 					}
 					else if(spell.base[i] == VAHSHIR || spell.base[i] == BARBARIAN){
 						SendAppearancePacket(AT_Size, 7);
 					}
-					else if(spell.base[i] == HALF_ELF || spell.base[i] == WOOD_ELF || spell.base[i] == DARK_ELF || spell.base[i] == FROGLOK){
+					else if(spell.base[i] == HALF_ELF || spell.base[i] == WOOD_ELF || spell.base[i] == DARK_ELF || spell.base[i] == FROGLOK
+						|| spell.base[i] == DARKELF_PIRATE || spell.base[i] == KERRAN_TBS){
 						SendAppearancePacket(AT_Size, 5);
 					}
-					else if(spell.base[i] == DWARF){
+					else if(spell.base[i] == DWARF || spell.base[i] == FAIRY_DODH){
 						SendAppearancePacket(AT_Size, 4);
 					}
-					else if(spell.base[i] == HALFLING || spell.base[i] == GNOME){
+					else if(spell.base[i] == HALFLING || spell.base[i] == GNOME || spell.base[i] == GNOME_PIRATE){
 						SendAppearancePacket(AT_Size, 3);
 					}
-					else if(spell.base[i] == WOLF) {
+					else if(spell.base[i] == WOLF || spell.base[i] == BROWNIE_SOF) {
 						SendAppearancePacket(AT_Size, 2);
 					}
+					else if(spell.base[i] == DRACHNID_DODH || spell.base[i] == BANSHEE1 || spell.base[i] == BANSHEE2 || 
+						spell.base[i] == HUMAN_PIRATE || spell.base[i] == ERUDITE_PIRATE){
+						SendAppearancePacket(AT_Size, 6);
+					}
 					else{
 						SendAppearancePacket(AT_Size, 6);
 					}
@@ -3168,24 +3173,30 @@
 			case SE_Illusion:
 			{
 				SendIllusionPacket(0, GetBaseGender());
-				if(GetRace() == OGRE){
+				if(GetRace() == OGRE || GetRace() == OGRE_PIRATE){
 					SendAppearancePacket(AT_Size, 9);
 				}
-				else if(GetRace() == TROLL){
+				else if(GetRace() == TROLL || GetRace() == TROLL_PIRATE){
 					SendAppearancePacket(AT_Size, 8);
 				}
 				else if(GetRace() == VAHSHIR || GetRace() == FROGLOK || GetRace() == BARBARIAN){
 					SendAppearancePacket(AT_Size, 7);
 				}
-				else if(GetRace() == HALF_ELF || GetRace() == WOOD_ELF || GetRace() == DARK_ELF){
+				else if(GetRace() == HALF_ELF || GetRace() == WOOD_ELF || GetRace() == DARK_ELF || GetRace() == DARKELF_PIRATE || GetRace() == KERRAN_TBS){
 					SendAppearancePacket(AT_Size, 5);
 				}
 				else if(GetRace() == DWARF){
 					SendAppearancePacket(AT_Size, 4);
 				}
-				else if(GetRace() == HALFLING || GetRace() == GNOME){
+				else if(GetRace() == HALFLING || GetRace() == GNOME || GetRace() == GNOME_PIRATE){
 					SendAppearancePacket(AT_Size, 3);
 				}
+				else if(GetRace()== BROWNIE_SOF){
+					SendAppearancePacket(AT_Size, 2);
+				}
+				else if(GetRace() == DRACHNID_DODH || GetRace() == HUMAN_PIRATE || GetRace() == ERUDITE_PIRATE){
+					SendAppearancePacket(AT_Size, 6);
+				}
 				else{
 					SendAppearancePacket(AT_Size, 6);
 				}
And just so i'm not bumping this for a completely pointless reason, in addition to the illusion fix this also includes the level 75+ class titles (We only have up to level 70 at the moment. Live stopped at 75 so that would make this the final set.). Adds the alt currency merchant (as used in TBS/SoF/SoD for doubloons, faycite and whatnot.) and the mercenary liason to the class list and removes corpse class (As it's the exact same class as the ldon chest, 62, so it's not really needed)

-Danyelle
Reply With Quote
  #4  
Old 05-07-2011, 02:11 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Thanks Danyelle, I will try to get this tested and committed when I have time unless someone cares to beat me to it (but I doubt it lol).
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #5  
Old 05-27-2011, 04:24 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Here are some updates to this submission that Danyelle PM'd me. Posting them here in case someone wants to commit them before I get to it. Been out on vacation for almost 2 weeks, so it may be a bit before I get all caught up for another look and testing of this.

Code:
Index: trunk/EQEmuServer/common/classes.cpp
===================================================================
--- trunk/EQEmuServer/common/classes.cpp	(revision 1918)
+++ trunk/EQEmuServer/common/classes.cpp	(working copy)
@@ -21,7 +21,9 @@
 const char* GetEQClassName(int8 class_, int8 level) {
 	switch(class_) {
       case WARRIOR: 
-		 if (level >= 70) 
+		 if (level >= 75) 
+			return "Imperator"; 
+		 else if (level >= 70) 
 			return "Vanquisher"; 
          else if (level >= 65) 
             return "Overlord";   //Baron-Sprite: LEAVE MY CLASSES ALONE.
@@ -34,7 +36,9 @@
          else 
             return "Warrior"; 
       case CLERIC:
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Exemplar";
+		 else if (level >= 70) 
 			return "Prelate"; 
          else if (level >= 65) 
             return "Archon"; 
@@ -47,7 +51,9 @@
          else 
             return "Cleric"; 
       case PALADIN: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Holy Defender";
+		 else if (level >= 70) 
 			return "Lord"; 
          else if (level >= 65) 
             return "Lord Protector"; 
@@ -60,7 +66,9 @@
          else 
             return "Paladin"; 
       case RANGER:
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Huntmaster";
+		 else if (level >= 70) 
 			return "Plainswalker"; 
          else if (level >= 65) 
             return "Forest Stalker"; 
@@ -73,7 +81,9 @@
          else 
             return "Ranger"; 
       case SHADOWKNIGHT:
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Bloodreaver";
+		 else if (level >= 70) 
 			return "Scourge Knight"; 
          else if (level >= 65) 
             return "Dread Lord"; 
@@ -86,7 +96,9 @@
          else 
             return "Shadowknight"; 
       case DRUID:
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Storm Caller";
+		 else if (level >= 70) 
 			return "Natureguard"; 
          else if (level >= 65) 
             return "Storm Warden"; 
@@ -99,7 +111,9 @@
          else 
             return "Druid"; 
       case MONK:
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Ashenhand";
+		 else if (level >= 70) 
 			return "Stone Fist"; 
          else if (level >= 65) 
             return "Transcendent"; 
@@ -112,7 +126,9 @@
          else 
             return "Monk"; 
       case BARD: 
-	     if (level >= 70) 
+	     if (level >= 75)
+			return "Lyricist";
+		 else if (level >= 70) 
 			return "Performer";
          else if (level >= 65) 
             return "Maestro"; 
@@ -125,7 +141,9 @@
          else 
             return "Bard"; 
       case ROGUE: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Shadowblade";
+		 else if (level >= 70) 
 			return "Nemesis"; 
          else if (level >= 65) 
             return "Deceiver"; 
@@ -138,7 +156,9 @@
          else 
             return "Rogue"; 
       case SHAMAN: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Spiritwatcher";
+		 else if (level >= 70) 
 			return "Soothsayer";
          else if (level >= 65) 
             return "Prophet"; 
@@ -151,7 +171,9 @@
          else 
             return "Shaman"; 
       case NECROMANCER: 
-	     if (level >= 70) 
+	     if (level >= 75)
+			return "Deathcaller";
+		 else if (level >= 70) 
 			return "Wraith"; 
          else if (level >= 65) 
             return "Arch Lich"; 
@@ -164,7 +186,9 @@
          else 
             return "Necromancer"; 
       case WIZARD: 
-	     if (level >= 70) 
+	     if (level >= 75)
+			return "Pyromancer";
+		 else if (level >= 70) 
 			return "Grand Arcanist"; 
          else if (level >= 65) 
             return "Arcanist"; 
@@ -177,7 +201,9 @@
          else 
             return "Wizard"; 
       case MAGICIAN: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Grand Summoner";
+		 else if (level >= 70) 
 			return "Arch Magus"; 
          else if (level >= 65) 
             return "Arch Convoker"; 
@@ -185,12 +211,14 @@
             return "Arch Mage"; 
          else if (level >= 55) 
             return "Conjurer"; 
-         if (level >= 51) 
+         else if (level >= 51) 
             return "Elementalist"; 
          else 
             return "Magician"; 
       case ENCHANTER: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Entrancer";
+		 else if (level >= 70) 
 			return "Bedazzler"; 
          else if (level >= 65) 
             return "Coercer"; 
@@ -203,7 +231,9 @@
          else 
             return "Enchanter"; 
       case BEASTLORD: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Frostblood";
+		 else if (level >= 70) 
 			return "Wildblood"; 
          else if (level >= 65) 
             return "Feral Lord"; 
@@ -216,7 +246,9 @@
          else 
             return "Beastlord"; 
 	  case BERSERKER: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Juggernaut";
+		 else if (level >= 70) 
 			return "Ravager"; 
          else if (level >= 65) 
             return "Fury"; 
@@ -229,7 +261,9 @@
          else 
             return "Berserker"; 
 	  case BANKER: 
-		 if (level >= 70) 
+		 if (level >= 75)
+			return "Grand Banker";
+		 else if (level >= 70) 
 			return "Master Banker"; 
          else if (level >= 65) 
             return "Elder Banker"; 
@@ -275,16 +309,22 @@
 			return "Berserker Guildmaster";
 	  case MERCHANT:
 			return "Merchant";
-		case ADVENTURERECRUITER:
+	  case DISCORD_MERCHANT:
+		  return "Discord Merchant";
+	  case ADVENTURERECRUITER:
 			return "Adventure Recruiter";
-		case ADVENTUREMERCHANT:
+	  case ADVENTUREMERCHANT:
 			return "Adventure Merchant";
-		case CORPSE_CLASS:
-			return "Corpse Class";
-		case TRIBUTE_MASTER:
+	  case LDON_TREASURE:
+		    return "Chest";
+	  case TRIBUTE_MASTER:
 			return "Tribute Master";
-		case GUILD_TRIBUTE_MASTER:
+	  case GUILD_TRIBUTE_MASTER:
 			return "Guild Tribute Master";
+	  case ALT_CURRENCY_MERCH:
+		    return "Alternate Currency Merchant";
+	  case MERC_LIASON:
+		    return "Mercenary Liason";
 	  default:
 			return "Unknown";
 	}
Index: trunk/EQEmuServer/common/classes.h
===================================================================
--- trunk/EQEmuServer/common/classes.h	(revision 1918)
+++ trunk/EQEmuServer/common/classes.h	(working copy)
@@ -59,11 +59,12 @@
 #define ADVENTURERECRUITER 60
 #define ADVENTUREMERCHANT 61
 #define LDON_TREASURE 62 //objects you can use /open on first seen in LDONs
-#define CORPSE_CLASS 62	//only seen on Danvi's Corpse in Akheva so far..
 #define TRIBUTE_MASTER	63
 #define GUILD_TRIBUTE_MASTER	64	//not sure
 #define NORRATHS_KEEPERS_MERCHANT 67
 #define DARK_REIGN_MERCHANT 68
+#define ALT_CURRENCY_MERCH 70 //TBS and SoF Merchants (Doubloons. Faycite etc)
+#define MERC_LIASON 71 //Mercenary Merchants.
 #define warrior_1 1
 #define monk_1 64
 #define paladin_1 4
Index: trunk/EQEmuServer/common/races.h
===================================================================
--- trunk/EQEmuServer/common/races.h	(revision 1918)
+++ trunk/EQEmuServer/common/races.h	(working copy)
@@ -39,6 +39,7 @@
 #define BEAR			43
 #define SKELETON		60
 #define TIGER			63
+#define FROGLOK2		74	// Not sure why /who all reports race as 74 for frogloks
 #define ELEMENTAL		75
 #define ALLIGATOR		91
 #define EYE_OF_ZOMM		108
@@ -49,8 +50,33 @@
 #define CONTROLLED_BOAT 141
 #define IKSAR_SKELETON	161
 #define FROGLOK			330
-#define FROGLOK2		74	// Not sure why /who all reports race as 74 for frogloks
+#define TROLL_PIRATE	331
+#define GNOME_PIRATE	338
+#define DARKELF_PIRATE	339
+#define OGRE_PIRATE		340
+#define HUMAN_PIRATE	341
+#define ERUDITE_PIRATE	342
+#define CHOKIDAI		356
+#define SKELETON_LDON	367
+#define GOLEM_LDON		374
+#define PYRILEN			408
+#define GELIDRAN		417
+#define BASILISK_DON	436
+#define SPIDER_DON		440
+#define KOBOLD_DODH		455
+#define GNOMEWORK		457
+#define DRACHNID_DODH	461
+#define SHILISKIN		467
+#define FAIRY_DODH		473
+#define SPECTRE_POR		485
+#define BANSHEE1		487
+#define BANSHEE2		488
+#define SCRYKIN			495
+#define CENTAUR_TSS		521
 #define DRAKKIN			522 // 32768
+#define GNOLL_TSS		524
+#define KERRAN_TBS		562
+#define BROWNIE_SOF		568
 #define EMU_RACE_NPC	131069 // was 65533
 #define EMU_RACE_PET	131070 // was 65534
 #define EMU_RACE_UNKNOWN 131071 // was 65535
Index: trunk/EQEmuServer/zone/mob.cpp
===================================================================
--- trunk/EQEmuServer/zone/mob.cpp	(revision 1918)
+++ trunk/EQEmuServer/zone/mob.cpp	(working copy)
@@ -1370,7 +1370,10 @@
 //cout << "Gender in:  " << (int)in_gender << endl;
 	if ((in_race > 0 && in_race <= GNOME )
 		|| in_race == IKSAR || in_race == VAHSHIR || in_race == FROGLOK || in_race == DRAKKIN
-		|| in_race == 15 || in_race == 50 || in_race == 57 || in_race == 70 || in_race == 98 || in_race == 118) {
+		|| in_race == 15 || in_race == 50 || in_race == 57 || in_race == 70 || in_race == 98
+		|| in_race == 118 || in_race == TROLL_PIRATE || in_race == OGRE_PIRATE || in_race == GNOME_PIRATE
+		|| in_race == DARKELF_PIRATE || in_race == HUMAN_PIRATE || in_race == ERUDITE_PIRATE || in_race == KERRAN_TBS
+		|| in_race == DRACHNID_DODH || in_race == BROWNIE_SOF) {
 		if (in_gender >= 2) {
 			// Female default for PC Races
 			return 1;
@@ -1384,7 +1387,7 @@
 		return 0;
 
 	}
-	else if (in_race == 25 || in_race == 56) {
+	else if (in_race == 25 || in_race == 56 || in_race == BANSHEE1 || in_race == BANSHEE2) {
 		// Female only races
 		return 1;
 	}
Index: trunk/EQEmuServer/zone/pets.cpp
===================================================================
--- trunk/EQEmuServer/zone/pets.cpp	(revision 1918)
+++ trunk/EQEmuServer/zone/pets.cpp	(working copy)
@@ -324,9 +324,9 @@
 			npc_type->texture = 2;
 			break;
 		case IKSAR: 
-			npc_type->race = WOLF; 
+			npc_type->race = CHOKIDAI; 
 			npc_type->texture = 0; 
-			npc_type->gender = 1; 
+			npc_type->gender = 2; 
 			npc_type->size *= 2.0f;
 			npc_type->luclinface = 0;
 			break;
@@ -370,6 +370,8 @@
 			npc_type->size = monster->size;
 			npc_type->texture = monster->texture;
 			npc_type->gender = monster->gender;
+			npc_type->luclinface = monster->luclinface;
+			npc_type->helmtexture = monster->helmtexture;
 		}
 		else {
 			LogFile->write(EQEMuLog::Error, "Error loading NPC data for monster summoning pet (NPC ID %d)", monsterid);
Index: trunk/EQEmuServer/zone/spell_effects.cpp
===================================================================
--- trunk/EQEmuServer/zone/spell_effects.cpp	(revision 1918)
+++ trunk/EQEmuServer/zone/spell_effects.cpp	(working copy)
@@ -1237,27 +1237,37 @@
 						Mob::GetDefaultGender(spell.base[i], GetGender()),
 						spell.base2[i]
 					);
-					if(spell.base[i] == OGRE){
+					if(spell.base[i] == SPIDER_DON){
+						SendAppearancePacket(AT_Size, 10);
+					}
+					else if(spell.base[i] == OGRE || spell.base[i] == BASILISK_DON || spell.base[i] == OGRE_PIRATE){
 						SendAppearancePacket(AT_Size, 9);
 					}
-					else if(spell.base[i] == TROLL){
+					else if(spell.base[i] == TROLL || spell.base[i] == SPECTRE_POR || spell.base[i] == TROLL_PIRATE || spell.base[i] == GOLEM_LDON){
 						SendAppearancePacket(AT_Size, 8);
 					}
-					else if(spell.base[i] == VAHSHIR || spell.base[i] == BARBARIAN){
+					else if(spell.base[i] == VAHSHIR || spell.base[i] == BARBARIAN || spell.base[i] == SCRYKIN || spell.base[i] == CENTAUR_TSS
+						|| spell.base[i] == SHILISKIN || spell.base[i] == PYRILEN || spell.base[i] == GELIDRAN || spell.base[i] == GNOLL_TSS 
+						|| spell.base[i] == KOBOLD_DODH){
 						SendAppearancePacket(AT_Size, 7);
 					}
-					else if(spell.base[i] == HALF_ELF || spell.base[i] == WOOD_ELF || spell.base[i] == DARK_ELF || spell.base[i] == FROGLOK){
+					else if(spell.base[i] == HALF_ELF || spell.base[i] == WOOD_ELF || spell.base[i] == DARK_ELF || spell.base[i] == FROGLOK
+						|| spell.base[i] == DARKELF_PIRATE || spell.base[i] == KERRAN_TBS || spell.base[i] == GNOMEWORK){
 						SendAppearancePacket(AT_Size, 5);
 					}
-					else if(spell.base[i] == DWARF){
+					else if(spell.base[i] == DWARF || spell.base[i] == FAIRY_DODH || spell.base[i] == WOLF || spell.base[i] == WOLF_ELEMENTAL){
 						SendAppearancePacket(AT_Size, 4);
 					}
-					else if(spell.base[i] == HALFLING || spell.base[i] == GNOME){
+					else if(spell.base[i] == HALFLING || spell.base[i] == GNOME || spell.base[i] == GNOME_PIRATE){
 						SendAppearancePacket(AT_Size, 3);
 					}
-					else if(spell.base[i] == WOLF) {
+					else if(spell.base[i] == BROWNIE_SOF) {
 						SendAppearancePacket(AT_Size, 2);
 					}
+					else if(spell.base[i] == DRACHNID_DODH || spell.base[i] == BANSHEE1 || spell.base[i] == BANSHEE2 || 
+						spell.base[i] == HUMAN_PIRATE || spell.base[i] == ERUDITE_PIRATE){
+						SendAppearancePacket(AT_Size, 6);
+					}
 					else{
 						SendAppearancePacket(AT_Size, 6);
 					}
@@ -3165,24 +3175,30 @@
 			case SE_Illusion:
 			{
 				SendIllusionPacket(0, GetBaseGender());
-				if(GetRace() == OGRE){
+				if(GetRace() == OGRE || GetRace() == OGRE_PIRATE){
 					SendAppearancePacket(AT_Size, 9);
 				}
-				else if(GetRace() == TROLL){
+				else if(GetRace() == TROLL || GetRace() == TROLL_PIRATE){
 					SendAppearancePacket(AT_Size, 8);
 				}
 				else if(GetRace() == VAHSHIR || GetRace() == FROGLOK || GetRace() == BARBARIAN){
 					SendAppearancePacket(AT_Size, 7);
 				}
-				else if(GetRace() == HALF_ELF || GetRace() == WOOD_ELF || GetRace() == DARK_ELF){
+				else if(GetRace() == HALF_ELF || GetRace() == WOOD_ELF || GetRace() == DARK_ELF || GetRace() == DARKELF_PIRATE || GetRace() == KERRAN_TBS){
 					SendAppearancePacket(AT_Size, 5);
 				}
 				else if(GetRace() == DWARF){
 					SendAppearancePacket(AT_Size, 4);
 				}
-				else if(GetRace() == HALFLING || GetRace() == GNOME){
+				else if(GetRace() == HALFLING || GetRace() == GNOME || GetRace() == GNOME_PIRATE){
 					SendAppearancePacket(AT_Size, 3);
 				}
+				else if(GetRace()== BROWNIE_SOF){
+					SendAppearancePacket(AT_Size, 2);
+				}
+				else if(GetRace() == DRACHNID_DODH || GetRace() == HUMAN_PIRATE || GetRace() == ERUDITE_PIRATE){
+					SendAppearancePacket(AT_Size, 6);
+				}
 				else{
 					SendAppearancePacket(AT_Size, 6);
 				}
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
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:25 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