diff options
Diffstat (limited to 'src')
5 files changed, 31 insertions, 10 deletions
diff --git a/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp b/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp index 13fcc0cb512..86b2bae5d5a 100644 --- a/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp +++ b/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp @@ -59,7 +59,7 @@ TC_API_EXPORT EnumText EnumUtils<CreatureFlagsExtra>::ToString(CreatureFlagsExtr case CREATURE_FLAG_EXTRA_UNUSED_25: return { "CREATURE_FLAG_EXTRA_UNUSED_25", "CREATURE_FLAG_EXTRA_UNUSED_25", "" }; case CREATURE_FLAG_EXTRA_UNUSED_26: return { "CREATURE_FLAG_EXTRA_UNUSED_26", "CREATURE_FLAG_EXTRA_UNUSED_26", "" }; case CREATURE_FLAG_EXTRA_UNUSED_27: return { "CREATURE_FLAG_EXTRA_UNUSED_27", "CREATURE_FLAG_EXTRA_UNUSED_27", "" }; - case CREATURE_FLAG_EXTRA_DUNGEON_BOSS: return { "CREATURE_FLAG_EXTRA_DUNGEON_BOSS", "CREATURE_FLAG_EXTRA_DUNGEON_BOSS", "creature is a dungeon boss (SET DYNAMICALLY, DO NOT ADD IN DB)" }; + case CREATURE_FLAG_EXTRA_DUNGEON_BOSS: return { "CREATURE_FLAG_EXTRA_DUNGEON_BOSS", "CREATURE_FLAG_EXTRA_DUNGEON_BOSS", "creature is a dungeon boss" }; case CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING: return { "CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING", "CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING", "creature ignore pathfinding" }; case CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK: return { "CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK", "CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK", "creature is immune to knockback effects" }; case CREATURE_FLAG_EXTRA_UNUSED_31: return { "CREATURE_FLAG_EXTRA_UNUSED_31", "CREATURE_FLAG_EXTRA_UNUSED_31", "" }; diff --git a/src/server/game/Entities/Item/enuminfo_ItemDefines.cpp b/src/server/game/Entities/Item/enuminfo_ItemDefines.cpp index d186091229b..c5f91ead4b3 100644 --- a/src/server/game/Entities/Item/enuminfo_ItemDefines.cpp +++ b/src/server/game/Entities/Item/enuminfo_ItemDefines.cpp @@ -149,12 +149,13 @@ TC_API_EXPORT EnumText EnumUtils<InventoryResult>::ToString(InventoryResult valu case EQUIP_ERR_REAGENTBAG_WRONG_SLOT: return { "EQUIP_ERR_REAGENTBAG_WRONG_SLOT", "EQUIP_ERR_REAGENTBAG_WRONG_SLOT", "Reagent Bags can only be placed in the reagent bag slot." }; case EQUIP_ERR_SLOT_ONLY_REAGENTBAG: return { "EQUIP_ERR_SLOT_ONLY_REAGENTBAG", "EQUIP_ERR_SLOT_ONLY_REAGENTBAG", "Only Reagent Bags can be placed in the reagent bag slot." }; case EQUIP_ERR_REAGENTBAG_ITEM_TYPE: return { "EQUIP_ERR_REAGENTBAG_ITEM_TYPE", "EQUIP_ERR_REAGENTBAG_ITEM_TYPE", "Only Reagents can be placed in Reagent Bags." }; + case EQUIP_ERR_CANT_BULK_SELL_ITEM_WITH_REFUND: return { "EQUIP_ERR_CANT_BULK_SELL_ITEM_WITH_REFUND", "EQUIP_ERR_CANT_BULK_SELL_ITEM_WITH_REFUND", "Items that can be refunded can't be bulk sold." }; default: throw std::out_of_range("value"); } } template <> -TC_API_EXPORT size_t EnumUtils<InventoryResult>::Count() { return 118; } +TC_API_EXPORT size_t EnumUtils<InventoryResult>::Count() { return 119; } template <> TC_API_EXPORT InventoryResult EnumUtils<InventoryResult>::FromIndex(size_t index) @@ -279,6 +280,7 @@ TC_API_EXPORT InventoryResult EnumUtils<InventoryResult>::FromIndex(size_t index case 115: return EQUIP_ERR_REAGENTBAG_WRONG_SLOT; case 116: return EQUIP_ERR_SLOT_ONLY_REAGENTBAG; case 117: return EQUIP_ERR_REAGENTBAG_ITEM_TYPE; + case 118: return EQUIP_ERR_CANT_BULK_SELL_ITEM_WITH_REFUND; default: throw std::out_of_range("index"); } } @@ -406,6 +408,7 @@ TC_API_EXPORT size_t EnumUtils<InventoryResult>::ToIndex(InventoryResult value) case EQUIP_ERR_REAGENTBAG_WRONG_SLOT: return 115; case EQUIP_ERR_SLOT_ONLY_REAGENTBAG: return 116; case EQUIP_ERR_REAGENTBAG_ITEM_TYPE: return 117; + case EQUIP_ERR_CANT_BULK_SELL_ITEM_WITH_REFUND: return 118; default: throw std::out_of_range("value"); } } @@ -485,12 +488,15 @@ TC_API_EXPORT EnumText EnumUtils<SellResult>::ToString(SellResult value) case SELL_ERR_UNK: return { "SELL_ERR_UNK", "SELL_ERR_UNK", "nothing appears..." }; case SELL_ERR_ONLY_EMPTY_BAG: return { "SELL_ERR_ONLY_EMPTY_BAG", "SELL_ERR_ONLY_EMPTY_BAG", "You can only do that with empty bags." }; case SELL_ERR_CANT_SELL_TO_THIS_MERCHANT: return { "SELL_ERR_CANT_SELL_TO_THIS_MERCHANT", "SELL_ERR_CANT_SELL_TO_THIS_MERCHANT", "You cannot sell items to this merchant." }; + case SELL_ERR_MUST_REPAIR_DURABILITY: return { "SELL_ERR_MUST_REPAIR_DURABILITY", "SELL_ERR_MUST_REPAIR_DURABILITY", "You must repair that item's durability to use it." }; + case SELL_ERR_VENDOR_REFUSE_SCRAPPABLE_AZERITE: return { "SELL_ERR_VENDOR_REFUSE_SCRAPPABLE_AZERITE", "SELL_ERR_VENDOR_REFUSE_SCRAPPABLE_AZERITE", "The merchant doesn't want that item. Bring it to the Scrapper to extract Titan Residuum." }; + case SELL_ERR_INTERNAL_BAG_ERROR: return { "SELL_ERR_INTERNAL_BAG_ERROR", "SELL_ERR_INTERNAL_BAG_ERROR", "Internal Bag Error" }; default: throw std::out_of_range("value"); } } template <> -TC_API_EXPORT size_t EnumUtils<SellResult>::Count() { return 7; } +TC_API_EXPORT size_t EnumUtils<SellResult>::Count() { return 10; } template <> TC_API_EXPORT SellResult EnumUtils<SellResult>::FromIndex(size_t index) @@ -504,6 +510,9 @@ TC_API_EXPORT SellResult EnumUtils<SellResult>::FromIndex(size_t index) case 4: return SELL_ERR_UNK; case 5: return SELL_ERR_ONLY_EMPTY_BAG; case 6: return SELL_ERR_CANT_SELL_TO_THIS_MERCHANT; + case 7: return SELL_ERR_MUST_REPAIR_DURABILITY; + case 8: return SELL_ERR_VENDOR_REFUSE_SCRAPPABLE_AZERITE; + case 9: return SELL_ERR_INTERNAL_BAG_ERROR; default: throw std::out_of_range("index"); } } @@ -520,6 +529,9 @@ TC_API_EXPORT size_t EnumUtils<SellResult>::ToIndex(SellResult value) case SELL_ERR_UNK: return 4; case SELL_ERR_ONLY_EMPTY_BAG: return 5; case SELL_ERR_CANT_SELL_TO_THIS_MERCHANT: return 6; + case SELL_ERR_MUST_REPAIR_DURABILITY: return 7; + case SELL_ERR_VENDOR_REFUSE_SCRAPPABLE_AZERITE: return 8; + case SELL_ERR_INTERNAL_BAG_ERROR: return 9; default: throw std::out_of_range("value"); } } diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 54b90231206..edcf30d293a 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -687,7 +687,7 @@ enum SpellAttr7 : uint32 { SPELL_ATTR7_UNK0 = 0x00000001, // TITLE Unknown attribute 0@Attr7 SPELL_ATTR7_IGNORE_DURATION_MODS = 0x00000002, // TITLE Ignore duration modifiers - SPELL_ATTR7_REACTIVATE_AT_RESURRECT = 0x00000004, // TITLE Reactivate at resurrect (client only) + SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD = 0x00000004, // TITLE Disable Aura While Dead SPELL_ATTR7_IS_CHEAT_SPELL = 0x00000008, // TITLE Is cheat spell DESCRIPTION Cannot cast if caster doesn't have UnitFlag2 & UNIT_FLAG2_ALLOW_CHEAT_SPELLS SPELL_ATTR7_UNK4 = 0x00000010, // TITLE Unknown attribute 4@Attr7 DESCRIPTION Soulstone related? SPELL_ATTR7_SUMMON_TOTEM = 0x00000020, // TITLE Summons player-owned totem diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp index 52bdc2be059..1887aaa6d2d 100644 --- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp +++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp @@ -1179,7 +1179,7 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr7>::ToString(SpellAttr7 value) { case SPELL_ATTR7_UNK0: return { "SPELL_ATTR7_UNK0", "Unknown attribute 0@Attr7", "" }; case SPELL_ATTR7_IGNORE_DURATION_MODS: return { "SPELL_ATTR7_IGNORE_DURATION_MODS", "Ignore duration modifiers", "" }; - case SPELL_ATTR7_REACTIVATE_AT_RESURRECT: return { "SPELL_ATTR7_REACTIVATE_AT_RESURRECT", "Reactivate at resurrect (client only)", "" }; + case SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD: return { "SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD", "Disable Aura While Dead", "" }; case SPELL_ATTR7_IS_CHEAT_SPELL: return { "SPELL_ATTR7_IS_CHEAT_SPELL", "Is cheat spell", "Cannot cast if caster doesn't have UnitFlag2 & UNIT_FLAG2_ALLOW_CHEAT_SPELLS" }; case SPELL_ATTR7_UNK4: return { "SPELL_ATTR7_UNK4", "Unknown attribute 4@Attr7", "Soulstone related?" }; case SPELL_ATTR7_SUMMON_TOTEM: return { "SPELL_ATTR7_SUMMON_TOTEM", "Summons player-owned totem", "" }; @@ -1223,7 +1223,7 @@ TC_API_EXPORT SpellAttr7 EnumUtils<SpellAttr7>::FromIndex(size_t index) { case 0: return SPELL_ATTR7_UNK0; case 1: return SPELL_ATTR7_IGNORE_DURATION_MODS; - case 2: return SPELL_ATTR7_REACTIVATE_AT_RESURRECT; + case 2: return SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD; case 3: return SPELL_ATTR7_IS_CHEAT_SPELL; case 4: return SPELL_ATTR7_UNK4; case 5: return SPELL_ATTR7_SUMMON_TOTEM; @@ -1264,7 +1264,7 @@ TC_API_EXPORT size_t EnumUtils<SpellAttr7>::ToIndex(SpellAttr7 value) { case SPELL_ATTR7_UNK0: return 0; case SPELL_ATTR7_IGNORE_DURATION_MODS: return 1; - case SPELL_ATTR7_REACTIVATE_AT_RESURRECT: return 2; + case SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD: return 2; case SPELL_ATTR7_IS_CHEAT_SPELL: return 3; case SPELL_ATTR7_UNK4: return 4; case SPELL_ATTR7_SUMMON_TOTEM: return 5; @@ -2528,13 +2528,15 @@ TC_API_EXPORT EnumText EnumUtils<SpellCastResult>::ToString(SpellCastResult valu case SPELL_FAILED_CANT_BE_RECRAFTED: return { "SPELL_FAILED_CANT_BE_RECRAFTED", "SPELL_FAILED_CANT_BE_RECRAFTED", "" }; case SPELL_FAILED_PASSIVE_REPLACED: return { "SPELL_FAILED_PASSIVE_REPLACED", "SPELL_FAILED_PASSIVE_REPLACED", "" }; case SPELL_FAILED_CANT_FLY_HERE: return { "SPELL_FAILED_CANT_FLY_HERE", "SPELL_FAILED_CANT_FLY_HERE", "" }; + case SPELL_FAILED_DRAGONRIDING_RIDING_REQUIREMENT: return { "SPELL_FAILED_DRAGONRIDING_RIDING_REQUIREMENT", "SPELL_FAILED_DRAGONRIDING_RIDING_REQUIREMENT", "" }; + case SPELL_FAILED_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN: return { "SPELL_FAILED_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN", "SPELL_FAILED_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN", "" }; case SPELL_FAILED_UNKNOWN: return { "SPELL_FAILED_UNKNOWN", "SPELL_FAILED_UNKNOWN", "" }; default: throw std::out_of_range("value"); } } template <> -TC_API_EXPORT size_t EnumUtils<SpellCastResult>::Count() { return 320; } +TC_API_EXPORT size_t EnumUtils<SpellCastResult>::Count() { return 322; } template <> TC_API_EXPORT SpellCastResult EnumUtils<SpellCastResult>::FromIndex(size_t index) @@ -2860,7 +2862,9 @@ TC_API_EXPORT SpellCastResult EnumUtils<SpellCastResult>::FromIndex(size_t index case 316: return SPELL_FAILED_CANT_BE_RECRAFTED; case 317: return SPELL_FAILED_PASSIVE_REPLACED; case 318: return SPELL_FAILED_CANT_FLY_HERE; - case 319: return SPELL_FAILED_UNKNOWN; + case 319: return SPELL_FAILED_DRAGONRIDING_RIDING_REQUIREMENT; + case 320: return SPELL_FAILED_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN; + case 321: return SPELL_FAILED_UNKNOWN; default: throw std::out_of_range("index"); } } @@ -3189,7 +3193,9 @@ TC_API_EXPORT size_t EnumUtils<SpellCastResult>::ToIndex(SpellCastResult value) case SPELL_FAILED_CANT_BE_RECRAFTED: return 316; case SPELL_FAILED_PASSIVE_REPLACED: return 317; case SPELL_FAILED_CANT_FLY_HERE: return 318; - case SPELL_FAILED_UNKNOWN: return 319; + case SPELL_FAILED_DRAGONRIDING_RIDING_REQUIREMENT: return 319; + case SPELL_FAILED_ITEM_MOD_APPEARANCE_GROUP_ALREADY_KNOWN: return 320; + case SPELL_FAILED_UNKNOWN: return 321; default: throw std::out_of_range("value"); } } diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index b8095cab43c..6c48b5cb247 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -2475,6 +2475,9 @@ void UnitAura::Remove(AuraRemoveMode removeMode) void UnitAura::FillTargetMap(std::unordered_map<Unit*, uint32>& targets, Unit* caster) { + if (GetSpellInfo()->HasAttribute(SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD) && !GetUnitOwner()->IsAlive()) + return; + Unit* ref = caster; if (!ref) ref = GetUnitOwner(); |