mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 00:48:56 +01:00
Core/Spells: Implement SPELL_EFFECT_WMO_CHANGE, patch by Heisenberg
Closes issue 4984. --HG-- branch : trunk
This commit is contained in:
@@ -399,6 +399,7 @@ class Spell
|
||||
void EffectRedirectThreat(SpellEffIndex effIndex);
|
||||
void EffectWMODamage(SpellEffIndex effIndex);
|
||||
void EffectWMORepair(SpellEffIndex effIndex);
|
||||
void EffectWMOChange(SpellEffIndex effIndex);
|
||||
void EffectActivateRune(SpellEffIndex effIndex);
|
||||
void EffectCreateTamedPet(SpellEffIndex effIndex);
|
||||
void EffectDiscoverTaxi(SpellEffIndex effIndex);
|
||||
|
||||
@@ -153,7 +153,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
|
||||
&Spell::EffectActivateObject, // 86 SPELL_EFFECT_ACTIVATE_OBJECT
|
||||
&Spell::EffectWMODamage, // 87 SPELL_EFFECT_WMO_DAMAGE
|
||||
&Spell::EffectWMORepair, // 88 SPELL_EFFECT_WMO_REPAIR
|
||||
&Spell::EffectUnused, // 89 SPELL_EFFECT_WMO_CHANGE // 0 intact // 1 damaged // 2 destroyed // 3 rebuilding
|
||||
&Spell::EffectWMOChange, // 89 SPELL_EFFECT_WMO_CHANGE // 0 intact // 1 damaged // 2 destroyed // 3 rebuilding
|
||||
&Spell::EffectKillCreditPersonal, // 90 SPELL_EFFECT_KILL_CREDIT Kill credit but only for single person
|
||||
&Spell::EffectUnused, // 91 SPELL_EFFECT_THREAT_ALL one spell: zzOLDBrainwash
|
||||
&Spell::EffectEnchantHeldItem, // 92 SPELL_EFFECT_ENCHANT_HELD_ITEM
|
||||
@@ -6767,6 +6767,36 @@ void Spell::EffectWMORepair(SpellEffIndex /*effIndex*/)
|
||||
gameObjTarget->Rebuild();
|
||||
}
|
||||
|
||||
void Spell::EffectWMOChange(SpellEffIndex effIndex)
|
||||
{
|
||||
if (gameObjTarget && gameObjTarget->GetGoType() == GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING)
|
||||
{
|
||||
Unit* caster = m_originalCaster;
|
||||
if (!caster)
|
||||
return;
|
||||
|
||||
int ChangeType = m_spellInfo->EffectMiscValue[effIndex];
|
||||
switch (ChangeType)
|
||||
{
|
||||
case 0: // intact
|
||||
if (gameObjTarget->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED))
|
||||
gameObjTarget->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED);
|
||||
if (gameObjTarget->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED))
|
||||
gameObjTarget->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED);
|
||||
break;
|
||||
case 1: // damaged
|
||||
gameObjTarget->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED);
|
||||
break;
|
||||
case 2: // destroyed
|
||||
gameObjTarget->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED);
|
||||
break;
|
||||
case 3: // rebuild
|
||||
gameObjTarget->Rebuild();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Spell::SummonGuardian(uint32 i, uint32 entry, SummonPropertiesEntry const *properties)
|
||||
{
|
||||
Unit *caster = m_originalCaster;
|
||||
|
||||
Reference in New Issue
Block a user