mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 00:18:43 +01:00
*Fix a crash caused by charm/possess spells.
--HG-- branch : trunk
This commit is contained in:
@@ -410,12 +410,23 @@ SpellSpecific GetSpellSpecific(uint32 spellId)
|
||||
return SPELL_ASPECT;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
if( spellInfo->Effect[i] == SPELL_EFFECT_APPLY_AURA && (
|
||||
spellInfo->EffectApplyAuraName[i] == SPELL_AURA_TRACK_CREATURES ||
|
||||
spellInfo->EffectApplyAuraName[i] == SPELL_AURA_TRACK_RESOURCES ||
|
||||
spellInfo->EffectApplyAuraName[i] == SPELL_AURA_TRACK_STEALTHED ) )
|
||||
return SPELL_TRACKER;
|
||||
for(int i = 0; i < 3; ++i)
|
||||
{
|
||||
if(spellInfo->Effect[i] == SPELL_EFFECT_APPLY_AURA)
|
||||
{
|
||||
switch(spellInfo->EffectApplyAuraName[i])
|
||||
{
|
||||
case SPELL_AURA_TRACK_CREATURES:
|
||||
case SPELL_AURA_TRACK_RESOURCES:
|
||||
case SPELL_AURA_TRACK_STEALTHED:
|
||||
return SPELL_TRACKER;
|
||||
case SPELL_AURA_MOD_CHARM:
|
||||
case SPELL_AURA_MOD_POSSESS_PET:
|
||||
case SPELL_AURA_MOD_POSSESS:
|
||||
return SPELL_CHARM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// elixirs can have different families, but potion most ofc.
|
||||
if(SpellSpecific sp = spellmgr.GetSpellElixirSpecific(spellInfo->Id))
|
||||
@@ -455,6 +466,7 @@ bool IsSingleFromSpellSpecificPerTarget(uint32 spellSpec1,uint32 spellSpec2)
|
||||
case SPELL_WELL_FED:
|
||||
case SPELL_DRINK:
|
||||
case SPELL_FOOD:
|
||||
case SPELL_CHARM:
|
||||
return spellSpec1==spellSpec2;
|
||||
case SPELL_BATTLE_ELIXIR:
|
||||
return spellSpec2==SPELL_BATTLE_ELIXIR
|
||||
|
||||
@@ -288,7 +288,8 @@ enum SpellSpecific
|
||||
SPELL_WARLOCK_CORRUPTION= 17,
|
||||
SPELL_WELL_FED = 18,
|
||||
SPELL_DRINK = 19,
|
||||
SPELL_FOOD = 20
|
||||
SPELL_FOOD = 20,
|
||||
SPELL_CHARM = 21,
|
||||
};
|
||||
|
||||
#define SPELL_LINKED_MAX_SPELLS 200000
|
||||
|
||||
@@ -12969,9 +12969,6 @@ void Unit::SetCharmedOrPossessedBy(Unit* charmer, bool possess)
|
||||
if(GetTypeId() == TYPEID_PLAYER)
|
||||
((Player*)this)->StopCastingCharm();
|
||||
|
||||
// Charmed stop being charmed
|
||||
RemoveCharmAuras();
|
||||
|
||||
// Set charmed
|
||||
charmer->SetCharm(this);
|
||||
SetCharmerGUID(charmer->GetGUID());
|
||||
|
||||
Reference in New Issue
Block a user