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