Core/Spells: Fixed players being able to mount with all transform auras
Closes #11852
This commit is contained in:
@@ -73,6 +73,7 @@ DBCStorage <ChrClassesEntry> sChrClassesStore(ChrClassesEntryfmt);
|
||||
DBCStorage <ChrRacesEntry> sChrRacesStore(ChrRacesEntryfmt);
|
||||
DBCStorage <CinematicSequencesEntry> sCinematicSequencesStore(CinematicSequencesEntryfmt);
|
||||
DBCStorage <CreatureDisplayInfoEntry> sCreatureDisplayInfoStore(CreatureDisplayInfofmt);
|
||||
DBCStorage <CreatureDisplayInfoExtraEntry> sCreatureDisplayInfoExtraStore(CreatureDisplayInfoExtrafmt);
|
||||
DBCStorage <CreatureFamilyEntry> sCreatureFamilyStore(CreatureFamilyfmt);
|
||||
DBCStorage <CreatureModelDataEntry> sCreatureModelDataStore(CreatureModelDatafmt);
|
||||
DBCStorage <CreatureSpellDataEntry> sCreatureSpellDataStore(CreatureSpellDatafmt);
|
||||
@@ -306,6 +307,7 @@ void LoadDBCStores(const std::string& dataPath)
|
||||
LoadDBC(availableDbcLocales, bad_dbc_files, sChrRacesStore, dbcPath, "ChrRaces.dbc");
|
||||
LoadDBC(availableDbcLocales, bad_dbc_files, sCinematicSequencesStore, dbcPath, "CinematicSequences.dbc");
|
||||
LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureDisplayInfoStore, dbcPath, "CreatureDisplayInfo.dbc");
|
||||
LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureDisplayInfoExtraStore, dbcPath, "CreatureDisplayInfoExtra.dbc");
|
||||
LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureFamilyStore, dbcPath, "CreatureFamily.dbc");
|
||||
LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureModelDataStore, dbcPath, "CreatureModelData.dbc");
|
||||
LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureSpellDataStore, dbcPath, "CreatureSpellData.dbc");
|
||||
|
||||
@@ -92,6 +92,7 @@ extern DBCStorage <ChrClassesEntry> sChrClassesStore;
|
||||
extern DBCStorage <ChrRacesEntry> sChrRacesStore;
|
||||
extern DBCStorage <CinematicSequencesEntry> sCinematicSequencesStore;
|
||||
extern DBCStorage <CreatureDisplayInfoEntry> sCreatureDisplayInfoStore;
|
||||
extern DBCStorage <CreatureDisplayInfoExtraEntry> sCreatureDisplayInfoExtraStore;
|
||||
extern DBCStorage <CreatureFamilyEntry> sCreatureFamilyStore;
|
||||
extern DBCStorage <CreatureModelDataEntry> sCreatureModelDataStore;
|
||||
extern DBCStorage <CreatureSpellDataEntry> sCreatureSpellDataStore;
|
||||
|
||||
@@ -690,7 +690,7 @@ struct ChrClassesEntry
|
||||
struct ChrRacesEntry
|
||||
{
|
||||
uint32 RaceID; // 0
|
||||
// 1 unused
|
||||
uint32 Flags; // 1
|
||||
uint32 FactionID; // 2 facton template id
|
||||
// 3 unused
|
||||
uint32 model_m; // 4
|
||||
@@ -736,7 +736,7 @@ struct CreatureDisplayInfoEntry
|
||||
uint32 Displayid; // 0 m_ID
|
||||
uint32 ModelId; // 1 m_modelID
|
||||
// 2 m_soundID
|
||||
// 3 m_extendedDisplayInfoID
|
||||
uint32 ExtraId; // 3 m_extendedDisplayInfoID
|
||||
float scale; // 4 m_creatureModelScale
|
||||
// 5 m_creatureModelAlpha
|
||||
// 6-8 m_textureVariation[3]
|
||||
@@ -749,6 +749,31 @@ struct CreatureDisplayInfoEntry
|
||||
// 15 m_objectEffectPackageID
|
||||
};
|
||||
|
||||
struct CreatureDisplayInfoExtraEntry
|
||||
{
|
||||
//uint32 Id; // 0
|
||||
uint32 Race; // 1
|
||||
uint32 Gender; // 2
|
||||
//uint32 SkinColor; // 3
|
||||
//uint32 FaceType; // 4
|
||||
//uint32 HairType; // 5
|
||||
//uint32 HairStyle; // 6
|
||||
//uint32 FacialHair; // 7
|
||||
//uint32 HelmDisplayId; // 8
|
||||
//uint32 ShoulderDisplayId; // 9
|
||||
//uint32 ShirtDisplayId; // 10
|
||||
//uint32 ChestDisplayId; // 11
|
||||
//uint32 BeltDisplayId; // 12
|
||||
//uint32 LegsDisplayId; // 13
|
||||
//uint32 BootsDisplayId; // 14
|
||||
//uint32 WristDisplayId; // 15
|
||||
//uint32 GlovesDisplayId; // 16
|
||||
//uint32 TabardDisplayId; // 17
|
||||
//uint32 CloakDisplayId; // 18
|
||||
//uint32 CanEquip; // 19
|
||||
//char const* Texture; // 20
|
||||
};
|
||||
|
||||
struct CreatureFamilyEntry
|
||||
{
|
||||
uint32 ID; // 0 m_ID
|
||||
@@ -768,7 +793,7 @@ struct CreatureFamilyEntry
|
||||
struct CreatureModelDataEntry
|
||||
{
|
||||
uint32 Id;
|
||||
//uint32 Flags;
|
||||
uint32 Flags;
|
||||
//char* ModelPath[16]
|
||||
//uint32 Unk1;
|
||||
float Scale; // Used in calculation of unit collision data
|
||||
|
||||
@@ -36,11 +36,12 @@ char const CharStartOutfitEntryfmt[] = "dbbbXiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxx
|
||||
char const CharTitlesEntryfmt[] = "nxssssssssssssssssxssssssssssssssssxi";
|
||||
char const ChatChannelsEntryfmt[] = "nixssssssssssssssssxxxxxxxxxxxxxxxxxx";
|
||||
char const ChrClassesEntryfmt[] = "nxixssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixii";
|
||||
char const ChrRacesEntryfmt[] = "nxixiixixxxxixssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi";
|
||||
char const ChrRacesEntryfmt[] = "niixiixixxxxixssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi";
|
||||
char const CinematicSequencesEntryfmt[] = "nxxxxxxxxx";
|
||||
char const CreatureDisplayInfofmt[] = "nixxfxxxxxxxxxxx";
|
||||
char const CreatureDisplayInfofmt[] = "nixifxxxxxxxxxxx";
|
||||
char const CreatureDisplayInfoExtrafmt[] = "diixxxxxxxxxxxxxxxxxx";
|
||||
char const CreatureFamilyfmt[] = "nfifiiiiixssssssssssssssssxx";
|
||||
char const CreatureModelDatafmt[] = "nxxxfxxxxxxxxxxffxxxxxxxxxxx";
|
||||
char const CreatureModelDatafmt[] = "nixxfxxxxxxxxxxffxxxxxxxxxxx";
|
||||
char const CreatureSpellDatafmt[] = "niiiixxxx";
|
||||
char const CreatureTypefmt[] = "nxxxxxxxxxxxxxxxxxx";
|
||||
char const CurrencyTypesfmt[] = "xnxi";
|
||||
|
||||
@@ -13051,9 +13051,35 @@ bool Unit::IsInFeralForm() const
|
||||
|
||||
bool Unit::IsInDisallowedMountForm() const
|
||||
{
|
||||
ShapeshiftForm form = GetShapeshiftForm();
|
||||
return form != FORM_NONE && form != FORM_BATTLESTANCE && form != FORM_BERSERKERSTANCE && form != FORM_DEFENSIVESTANCE &&
|
||||
form != FORM_SHADOW && form != FORM_STEALTH && form != FORM_UNDEAD;
|
||||
if (ShapeshiftForm form = GetShapeshiftForm())
|
||||
{
|
||||
SpellShapeshiftEntry const* shapeshift = sSpellShapeshiftStore.LookupEntry(form);
|
||||
if (!shapeshift)
|
||||
return true;
|
||||
|
||||
if (!(shapeshift->flags1 & 0x1))
|
||||
return true;
|
||||
}
|
||||
|
||||
if (GetDisplayId() == GetNativeDisplayId())
|
||||
return false;
|
||||
|
||||
CreatureDisplayInfoEntry const* display = sCreatureDisplayInfoStore.LookupEntry(GetDisplayId());
|
||||
if (!display)
|
||||
return true;
|
||||
|
||||
CreatureDisplayInfoExtraEntry const* displayExtra = sCreatureDisplayInfoExtraStore.LookupEntry(display->ExtraId);
|
||||
if (!displayExtra)
|
||||
return true;
|
||||
|
||||
CreatureModelDataEntry const* model = sCreatureModelDataStore.LookupEntry(display->ModelId);
|
||||
ChrRacesEntry const* race = sChrRacesStore.LookupEntry(displayExtra->Race);
|
||||
|
||||
if (model && !(model->Flags & 0x80))
|
||||
if (race && !(race->Flags & 0x4))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*#######################################
|
||||
|
||||
Reference in New Issue
Block a user