Core/Misc: Defined new summon properties titles

This commit is contained in:
Shauren authored and Ovahlord committed 2020-04-07 18:33:13 +02:00
1 parent 504f05ff6f
commit cb6ce1302b
10 files changed
+70 -68

No files matched your search

+6 -6
View File
@@ -208,13 +208,13 @@ static bool ShouldFollowOnSpawn(SummonPropertiesEntry const* properties)
if (properties->Flags & SUMMON_PROP_FLAG_UNK14)
return false;
switch (properties->Title)
switch (SummonTitle(properties->Title))
{
case SUMMON_TYPE_PET:
case SUMMON_TYPE_GUARDIAN:
case SUMMON_TYPE_GUARDIAN2:
case SUMMON_TYPE_MINION:
case SUMMON_TYPE_MINIPET:
case SummonTitle::Pet:
case SummonTitle::Guardian:
case SummonTitle::Runeblade:
case SummonTitle::Minion:
case SummonTitle::Companion:
return true;
default:
return false;
+2 -1
View File
@@ -593,7 +593,8 @@ enum SummonPropFlags
SUMMON_PROP_FLAG_UNK18 = 0x00020000,
SUMMON_PROP_FLAG_UNK19 = 0x00040000,
SUMMON_PROP_FLAG_UNK20 = 0x00080000,
SUMMON_PROP_FLAG_TOTEM = 0x00100000 // Totems
SUMMON_PROP_FLAG_TOTEM = 0x00100000, // Totems
SUMMON_PROP_FLAG_COMPANION = 0x00200000
};
enum VehicleSeatFlags
+1 -1
View File
@@ -2386,7 +2386,7 @@ struct SummonPropertiesEntry
uint32 ID; // 0
uint32 Control; // 1, 0 - can't be controlled?, 1 - something guardian?, 2 - pet?, 3 - something controllable?, 4 - taxi/mount?
uint32 Faction; // 2, 14 rows > 0
uint32 Title; // 3, see enum
int32 Title; // 3, see enum
int32 Slot; // 4, 0-6
uint32 Flags; // 5
};
@@ -199,17 +199,18 @@ void TempSummon::InitStats(uint32 duration)
if (!m_Properties->Faction)
SetFaction(owner->GetFaction());
switch (m_Properties->Title)
switch (SummonTitle(m_Properties->Title))
{
case SUMMON_TYPE_PET:
case SUMMON_TYPE_GUARDIAN:
case SUMMON_TYPE_GUARDIAN2:
case SUMMON_TYPE_MINION:
case SUMMON_TYPE_VEHICLE:
case SUMMON_TYPE_VEHICLE2:
case SUMMON_TYPE_LIGHTWELL:
case SUMMON_TYPE_TOTEM:
case SUMMON_TYPE_MINIPET:
case SummonTitle::Pet:
case SummonTitle::Guardian:
case SummonTitle::Runeblade:
case SummonTitle::Minion:
case SummonTitle::Vehicle:
case SummonTitle::Mount:
case SummonTitle::Lightwell:
case SummonTitle::Totem:
case SummonTitle::Companion:
break;
default:
SetOwnerGUID(owner->GetGUID());
@@ -303,7 +304,7 @@ Minion::Minion(SummonPropertiesEntry const* properties, Unit* owner, bool isWorl
m_unitTypeMask |= UNIT_MASK_MINION;
m_followAngle = PET_FOLLOW_ANGLE;
if (properties && properties->Title == SUMMON_TYPE_MINIPET)
if (properties && SummonTitle(properties->Title) == SummonTitle::Companion)
m_followAngle = COMPANION_FOLLOW_ANGLE;
/// @todo: Find correct way
@@ -356,7 +357,7 @@ Guardian::Guardian(SummonPropertiesEntry const* properties, Unit* owner, bool is
{
memset(m_statFromOwner, 0, sizeof(float)*MAX_STATS);
m_unitTypeMask |= UNIT_MASK_GUARDIAN;
if (properties && properties->Title == SUMMON_TYPE_PET)
if (properties && SummonTitle(properties->Title) == SummonTitle::Pet)
{
m_unitTypeMask |= UNIT_MASK_CONTROLABLE_GUARDIAN;
InitCharmInfo();
+9 -9
View File
@@ -2056,22 +2056,22 @@ TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropert
case SUMMON_CATEGORY_ALLY:
case SUMMON_CATEGORY_UNK:
{
switch (properties->Title)
switch (SummonTitle(properties->Title))
{
case SUMMON_TYPE_MINION:
case SUMMON_TYPE_GUARDIAN:
case SUMMON_TYPE_GUARDIAN2:
case SummonTitle::Minion:
case SummonTitle::Guardian:
case SummonTitle::Runeblade:
mask = UNIT_MASK_GUARDIAN;
break;
case SUMMON_TYPE_TOTEM:
case SUMMON_TYPE_LIGHTWELL:
case SummonTitle::Totem:
case SummonTitle::Lightwell:
mask = UNIT_MASK_TOTEM;
break;
case SUMMON_TYPE_VEHICLE:
case SUMMON_TYPE_VEHICLE2:
case SummonTitle::Vehicle:
case SummonTitle::Mount:
mask = UNIT_MASK_SUMMON;
break;
case SUMMON_TYPE_MINIPET:
case SummonTitle::Companion:
mask = UNIT_MASK_MINION;
break;
default:
@@ -870,22 +870,22 @@ TempSummon* MapTransport::SummonPassenger(uint32 entry, Position const& pos, Tem
case SUMMON_CATEGORY_ALLY:
case SUMMON_CATEGORY_UNK:
{
switch (properties->Title)
switch (SummonTitle(properties->Title))
{
case SUMMON_TYPE_MINION:
case SUMMON_TYPE_GUARDIAN:
case SUMMON_TYPE_GUARDIAN2:
case SummonTitle::Minion:
case SummonTitle::Guardian:
case SummonTitle::Runeblade:
mask = UNIT_MASK_GUARDIAN;
break;
case SUMMON_TYPE_TOTEM:
case SUMMON_TYPE_LIGHTWELL:
case SummonTitle::Totem:
case SummonTitle::Lightwell:
mask = UNIT_MASK_TOTEM;
break;
case SUMMON_TYPE_VEHICLE:
case SUMMON_TYPE_VEHICLE2:
case SummonTitle::Vehicle:
case SummonTitle::Mount:
mask = UNIT_MASK_SUMMON;
break;
case SUMMON_TYPE_MINIPET:
case SummonTitle::Companion:
mask = UNIT_MASK_MINION;
break;
default:
+2 -2
View File
@@ -6156,7 +6156,7 @@ void Unit::SetMinion(Minion* minion, bool apply)
}
}
if (minion->m_Properties && minion->m_Properties->Title == SUMMON_TYPE_MINIPET)
if (minion->m_Properties && SummonTitle(minion->m_Properties->Title) == SummonTitle::Companion)
SetCritterGUID(minion->GetGUID());
// PvP, FFAPvP
@@ -6187,7 +6187,7 @@ void Unit::SetMinion(Minion* minion, bool apply)
m_Controlled.erase(minion);
if (minion->m_Properties && minion->m_Properties->Title == SUMMON_TYPE_MINIPET)
if (minion->m_Properties && SummonTitle(minion->m_Properties->Title) == SummonTitle::Companion)
if (GetCritterGUID() == minion->GetGUID())
SetCritterGUID(ObjectGuid::Empty);
+15 -15
View File
@@ -3776,22 +3776,22 @@ enum SummonCategory
// uses this category
};
enum SummonType
enum class SummonTitle : int32
{
SUMMON_TYPE_NONE = 0,
SUMMON_TYPE_PET = 1,
SUMMON_TYPE_GUARDIAN = 2,
SUMMON_TYPE_MINION = 3,
SUMMON_TYPE_TOTEM = 4,
SUMMON_TYPE_MINIPET = 5,
SUMMON_TYPE_GUARDIAN2 = 6,
SUMMON_TYPE_WILD2 = 7,
SUMMON_TYPE_WILD3 = 8, // Related to phases and DK prequest line (3.3.5a)
SUMMON_TYPE_VEHICLE = 9,
SUMMON_TYPE_VEHICLE2 = 10, // Oculus and Argent Tournament vehicles (3.3.5a)
SUMMON_TYPE_LIGHTWELL = 11,
SUMMON_TYPE_JEEVES = 12,
SUMMON_TYPE_UNK13 = 13
None = 0,
Pet = 1,
Guardian = 2,
Minion = 3,
Totem = 4,
Companion = 5,
Runeblade = 6,
Construct = 7,
Opponent = 8, // Related to phases and DK prequest line (3.3.5a)
Vehicle = 9,
Mount = 10, // Oculus and Argent Tournament vehicles (3.3.5a)
Lightwell = 11,
Butler = 12,
aka = 13
};
enum EventId
+10 -10
View File
@@ -1875,21 +1875,21 @@ void Spell::EffectSummonType(SpellEffIndex effIndex)
SummonGuardian(effIndex, entry, properties, numSummons, personalSpawn);
break;
}
switch (properties->Title)
switch (SummonTitle(properties->Title))
{
case SUMMON_TYPE_PET:
case SUMMON_TYPE_GUARDIAN:
case SUMMON_TYPE_GUARDIAN2:
case SUMMON_TYPE_MINION:
case SummonTitle::Pet:
case SummonTitle::Guardian:
case SummonTitle::Runeblade:
case SummonTitle::Minion:
SummonGuardian(effIndex, entry, properties, numSummons, personalSpawn);
break;
// Summons a vehicle, but doesn't force anyone to enter it (see SUMMON_CATEGORY_VEHICLE)
case SUMMON_TYPE_VEHICLE:
case SUMMON_TYPE_VEHICLE2:
case SummonTitle::Vehicle:
case SummonTitle::Mount:
summon = m_caster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, m_originalCaster, m_spellInfo->Id, 0, personalSpawn);
break;
case SUMMON_TYPE_LIGHTWELL:
case SUMMON_TYPE_TOTEM:
case SummonTitle::Lightwell:
case SummonTitle::Totem:
{
summon = m_caster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, m_originalCaster, m_spellInfo->Id, 0, personalSpawn);
if (!summon || !summon->IsTotem())
@@ -1906,7 +1906,7 @@ void Spell::EffectSummonType(SpellEffIndex effIndex)
}
break;
}
case SUMMON_TYPE_MINIPET:
case SummonTitle::Companion:
{
summon = m_caster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, m_originalCaster, m_spellInfo->Id, 0, personalSpawn);
if (!summon || !summon->HasUnitTypeMask(UNIT_MASK_MINION))
+3 -3
View File
@@ -5743,11 +5743,11 @@ void SpellMgr::LoadSpellInfoCorrections()
}
if (SummonPropertiesEntry* properties = const_cast<SummonPropertiesEntry*>(sSummonPropertiesStore.LookupEntry(121)))
properties->Title = SUMMON_TYPE_TOTEM;
properties->Title = AsUnderlyingType(SummonTitle::Totem);
if (SummonPropertiesEntry* properties = const_cast<SummonPropertiesEntry*>(sSummonPropertiesStore.LookupEntry(647))) // 52893
properties->Title = SUMMON_TYPE_TOTEM;
properties->Title = AsUnderlyingType(SummonTitle::Totem);
if (SummonPropertiesEntry* properties = const_cast<SummonPropertiesEntry*>(sSummonPropertiesStore.LookupEntry(3069))) // Wild Mushroom
properties->Title = SUMMON_TYPE_MINION;
properties->Title = AsUnderlyingType(SummonTitle::Minion);
if (SummonPropertiesEntry* properties = const_cast<SummonPropertiesEntry*>(sSummonPropertiesStore.LookupEntry(628))) // Hungry Plaguehound
properties->Control = SUMMON_CATEGORY_PET;