diff --git a/Source/Framework/Constants/CliDBConst.cs b/Source/Framework/Constants/CliDBConst.cs index fbc8a75d1..be89cc1ef 100644 --- a/Source/Framework/Constants/CliDBConst.cs +++ b/Source/Framework/Constants/CliDBConst.cs @@ -1557,7 +1557,8 @@ namespace Framework.Constants Unk18 = 0x00020000, Unk19 = 0x00040000, Unk20 = 0x00080000, - Unk21 = 0x00100000 // Totems + Unk21 = 0x00100000, // Totems + Companion = 0x00200000 } public enum TaxiNodeFlags : byte diff --git a/Source/Framework/Constants/ObjectConst.cs b/Source/Framework/Constants/ObjectConst.cs index 0d9fe16dd..a7354f6c7 100644 --- a/Source/Framework/Constants/ObjectConst.cs +++ b/Source/Framework/Constants/ObjectConst.cs @@ -140,22 +140,51 @@ namespace Framework.Constants // uses this category } - public enum SummonType + public enum SummonTitle { None = 0, Pet = 1, Guardian = 2, Minion = 3, Totem = 4, - Minipet = 5, - Guardian2 = 6, - Wild2 = 7, - Wild3 = 8, // Related to phases and DK prequest line (3.3.5a) + Companion = 5, + Runeblade = 6, + Construct = 7, + Opponent = 8, // Related to phases and DK prequest line (3.3.5a) Vehicle = 9, - Vehicle2 = 10, // Oculus and Argent Tournament vehicles (3.3.5a) + Mount = 10, // Oculus and Argent Tournament vehicles (3.3.5a) LightWell = 11, - Jeeves = 12, - Unk13 = 13 + Butler = 12, + Aka = 13, + Gateway = 14, + Hatred = 15, + Statue = 16, + Spirit = 17, + WarBanner = 18, + Heartwarmer = 19, + HiredBy = 20, + PurchasedBy = 21, + Pride = 22, + TwistedImage = 23, + NoodleCart = 24, + InnerDemon = 25, + Bodyguard = 26, + Name = 27, + Squire = 28, + Champion = 29, + TheBetrayer = 30, + EruptingReflection = 31, + HopelessReflection = 32, + MalignantReflection = 33, + WailingReflection = 34, + Assistant = 35, + Enforcer = 36, + Recruit = 37, + Admirer = 38, + EvilTwin = 39, + Greed = 40, + LostMind = 41, + ServantOfNZoth = 44 } public enum SummonerType diff --git a/Source/Game/DataStorage/Structs/S_Records.cs b/Source/Game/DataStorage/Structs/S_Records.cs index f3ce57485..e25dfd17a 100644 --- a/Source/Game/DataStorage/Structs/S_Records.cs +++ b/Source/Game/DataStorage/Structs/S_Records.cs @@ -566,7 +566,7 @@ namespace Game.DataStorage public uint Id; public SummonCategory Control; public uint Faction; - public SummonType Title; + public SummonTitle Title; public int Slot; public SummonPropFlags Flags; } diff --git a/Source/Game/Entities/TemporarySummon.cs b/Source/Game/Entities/TemporarySummon.cs index 1cc0048b2..efb0c3e81 100644 --- a/Source/Game/Entities/TemporarySummon.cs +++ b/Source/Game/Entities/TemporarySummon.cs @@ -378,7 +378,7 @@ namespace Game.Entities m_bonusSpellDamage = 0; UnitTypeMask |= UnitTypeMask.Guardian; - if (properties != null && (properties.Title == SummonType.Pet || properties.Control == SummonCategory.Pet)) + if (properties != null && (properties.Title == SummonTitle.Pet || properties.Control == SummonCategory.Pet)) { UnitTypeMask |= UnitTypeMask.ControlableGuardian; InitCharmInfo(); diff --git a/Source/Game/Entities/Transport.cs b/Source/Game/Entities/Transport.cs index 33d26df55..9f4897f22 100644 --- a/Source/Game/Entities/Transport.cs +++ b/Source/Game/Entities/Transport.cs @@ -420,20 +420,20 @@ namespace Game.Entities { switch (properties.Title) { - case SummonType.Minion: - case SummonType.Guardian: - case SummonType.Guardian2: + case SummonTitle.Minion: + case SummonTitle.Guardian: + case SummonTitle.Runeblade: mask = UnitTypeMask.Guardian; break; - case SummonType.Totem: - case SummonType.LightWell: + case SummonTitle.Totem: + case SummonTitle.LightWell: mask = UnitTypeMask.Totem; break; - case SummonType.Vehicle: - case SummonType.Vehicle2: + case SummonTitle.Vehicle: + case SummonTitle.Mount: mask = UnitTypeMask.Summon; break; - case SummonType.Minipet: + case SummonTitle.Companion: mask = UnitTypeMask.Minion; break; default: diff --git a/Source/Game/Entities/Unit/Unit.Pets.cs b/Source/Game/Entities/Unit/Unit.Pets.cs index d71f99362..add0c11d7 100644 --- a/Source/Game/Entities/Unit/Unit.Pets.cs +++ b/Source/Game/Entities/Unit/Unit.Pets.cs @@ -199,7 +199,7 @@ namespace Game.Entities if (GetMinionGUID().IsEmpty()) SetMinionGUID(minion.GetGUID()); - if (minion.m_Properties != null && minion.m_Properties.Title == SummonType.Minipet) + if (minion.m_Properties != null && minion.m_Properties.Title == SummonTitle.Companion) { SetCritterGUID(minion.GetGUID()); Player thisPlayer = ToPlayer(); @@ -230,7 +230,7 @@ namespace Game.Entities m_Controlled.Remove(minion); - if (minion.m_Properties != null && minion.m_Properties.Title == SummonType.Minipet) + if (minion.m_Properties != null && minion.m_Properties.Title == SummonTitle.Companion) { if (GetCritterGUID() == minion.GetGUID()) SetCritterGUID(ObjectGuid.Empty); diff --git a/Source/Game/Maps/Map.cs b/Source/Game/Maps/Map.cs index abad9b074..3893294b9 100644 --- a/Source/Game/Maps/Map.cs +++ b/Source/Game/Maps/Map.cs @@ -3317,20 +3317,20 @@ namespace Game.Maps { switch (properties.Title) { - case SummonType.Minion: - case SummonType.Guardian: - case SummonType.Guardian2: + case SummonTitle.Minion: + case SummonTitle.Guardian: + case SummonTitle.Runeblade: mask = UnitTypeMask.Guardian; break; - case SummonType.Totem: - case SummonType.LightWell: + case SummonTitle.Totem: + case SummonTitle.LightWell: mask = UnitTypeMask.Totem; break; - case SummonType.Vehicle: - case SummonType.Vehicle2: + case SummonTitle.Vehicle: + case SummonTitle.Mount: mask = UnitTypeMask.Summon; break; - case SummonType.Minipet: + case SummonTitle.Companion: mask = UnitTypeMask.Minion; break; default: diff --git a/Source/Game/Spells/SpellEffects.cs b/Source/Game/Spells/SpellEffects.cs index 06cccdbf6..b27364767 100644 --- a/Source/Game/Spells/SpellEffects.cs +++ b/Source/Game/Spells/SpellEffects.cs @@ -1693,19 +1693,19 @@ namespace Game.Spells } switch (properties.Title) { - case SummonType.Pet: - case SummonType.Guardian: - case SummonType.Guardian2: - case SummonType.Minion: + case SummonTitle.Pet: + case SummonTitle.Guardian: + case SummonTitle.Runeblade: + case SummonTitle.Minion: SummonGuardian(effIndex, entry, properties, numSummons); break; // Summons a vehicle, but doesn't force anyone to enter it (see SUMMON_CATEGORY_VEHICLE) - case SummonType.Vehicle: - case SummonType.Vehicle2: + case SummonTitle.Vehicle: + case SummonTitle.Mount: summon = m_caster.GetMap().SummonCreature(entry, destTarget, properties, (uint)duration, m_originalCaster, m_spellInfo.Id); break; - case SummonType.LightWell: - case SummonType.Totem: + case SummonTitle.LightWell: + case SummonTitle.Totem: { summon = m_caster.GetMap().SummonCreature(entry, destTarget, properties, (uint)duration, m_originalCaster, m_spellInfo.Id, 0, personalSpawn); if (summon == null || !summon.IsTotem()) @@ -1718,7 +1718,7 @@ namespace Game.Spells } break; } - case SummonType.Minipet: + case SummonTitle.Companion: { summon = m_caster.GetMap().SummonCreature(entry, destTarget, properties, (uint)duration, m_originalCaster, m_spellInfo.Id, 0, personalSpawn); if (summon == null || !summon.HasUnitTypeMask(UnitTypeMask.Minion)) diff --git a/Source/Game/Spells/SpellManager.cs b/Source/Game/Spells/SpellManager.cs index 79995c1dd..e68651699 100644 --- a/Source/Game/Spells/SpellManager.cs +++ b/Source/Game/Spells/SpellManager.cs @@ -3025,10 +3025,10 @@ namespace Game.Entities SummonPropertiesRecord properties = CliDB.SummonPropertiesStorage.LookupByKey(121); if (properties != null) - properties.Title = SummonType.Totem; + properties.Title = SummonTitle.Totem; properties = CliDB.SummonPropertiesStorage.LookupByKey(647); // 52893 if (properties != null) - properties.Title = SummonType.Totem; + properties.Title = SummonTitle.Totem; properties = CliDB.SummonPropertiesStorage.LookupByKey(628); if (properties != null) // Hungry Plaguehound properties.Control = SummonCategory.Pet;