aboutsummaryrefslogtreecommitdiff
path: root/src/game/TemporarySummon.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-05-06 13:34:11 -0500
committermegamage <none@none>2009-05-06 13:34:11 -0500
commitfa1dcd16cf8bc09cd0c0878020b59e7128e71d09 (patch)
tree46062e99b9b8494520351b83e8f71a8e77e2a818 /src/game/TemporarySummon.cpp
parent5d3a64517eff8db5781f299ece29a338b6e2f7a2 (diff)
*Update summon system.
--HG-- branch : trunk
Diffstat (limited to 'src/game/TemporarySummon.cpp')
-rw-r--r--src/game/TemporarySummon.cpp59
1 files changed, 36 insertions, 23 deletions
diff --git a/src/game/TemporarySummon.cpp b/src/game/TemporarySummon.cpp
index 034bf492e1c..170e590fd9c 100644
--- a/src/game/TemporarySummon.cpp
+++ b/src/game/TemporarySummon.cpp
@@ -166,7 +166,7 @@ void TempSummon::Update( uint32 diff )
Creature::Update( diff );
}
-void TempSummon::InitSummon(uint32 duration)
+void TempSummon::InitStats(uint32 duration)
{
assert(!isPet());
@@ -176,28 +176,12 @@ void TempSummon::InitSummon(uint32 duration)
if(m_type == TEMPSUMMON_MANUAL_DESPAWN)
m_type = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN;
- Unit* owner = GetSummoner();
- if(owner)
- {
- if(owner->GetTypeId()==TYPEID_UNIT && ((Creature*)owner)->IsAIEnabled)
- ((Creature*)owner)->AI()->JustSummoned(this);
-
- if(GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER && m_spells[0])
- {
- setFaction(owner->getFaction());
- if(m_spells[1] && GetMap()->IsHeroic())
- CastSpell(this, m_spells[1], false, 0, 0, m_summonerGUID);
- else
- CastSpell(this, m_spells[0], false, 0, 0, m_summonerGUID);
- }
- }
-
if(!m_Properties)
return;
if(uint32 slot = m_Properties->Slot)
{
- if(owner)
+ if(Unit *owner = GetSummoner())
{
if(owner->m_SummonSlot[slot] && owner->m_SummonSlot[slot] != GetGUID())
{
@@ -213,6 +197,25 @@ void TempSummon::InitSummon(uint32 duration)
setFaction(m_Properties->Faction);
}
+void TempSummon::InitSummon()
+{
+ Unit* owner = GetSummoner();
+ if(owner)
+ {
+ if(owner->GetTypeId()==TYPEID_UNIT && ((Creature*)owner)->IsAIEnabled)
+ ((Creature*)owner)->AI()->JustSummoned(this);
+
+ if(GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER && m_spells[0])
+ {
+ setFaction(owner->getFaction());
+ if(m_spells[1] && GetMap()->IsHeroic())
+ CastSpell(this, m_spells[1], false, 0, 0, m_summonerGUID);
+ else
+ CastSpell(this, m_spells[0], false, 0, 0, m_summonerGUID);
+ }
+ }
+}
+
void TempSummon::SetTempSummonType(TempSummonType type)
{
m_type = type;
@@ -264,9 +267,9 @@ Minion::Minion(SummonPropertiesEntry const *properties, Unit *owner) : TempSummo
m_summonMask |= SUMMON_MASK_MINION;
}
-void Minion::InitSummon(uint32 duration)
+void Minion::InitStats(uint32 duration)
{
- TempSummon::InitSummon(duration);
+ TempSummon::InitStats(duration);
SetReactState(REACT_PASSIVE);
@@ -276,6 +279,16 @@ void Minion::InitSummon(uint32 duration)
m_owner->SetMinion(this, true);
}
+void Minion::InitSummon()
+{
+ TempSummon::InitSummon();
+
+ if(m_owner->GetTypeId() == TYPEID_PLAYER
+ && m_owner->GetMinionGUID() == GetGUID()
+ && !m_owner->GetCharmGUID())
+ ((Player*)m_owner)->CharmSpellInitialize();
+}
+
void Minion::RemoveFromWorld()
{
if(!IsInWorld())
@@ -292,12 +305,12 @@ Guardian::Guardian(SummonPropertiesEntry const *properties, Unit *owner) : Minio
InitCharmInfo();
}
-void Guardian::InitSummon(uint32 duration)
+void Guardian::InitStats(uint32 duration)
{
+ Minion::InitStats(duration);
+
if(m_owner->GetTypeId() == TYPEID_PLAYER)
m_charmInfo->InitCharmCreateSpells();
- Minion::InitSummon(duration);
-
SetReactState(REACT_AGGRESSIVE);
}