diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Object.cpp | 3 | ||||
-rw-r--r-- | src/game/Spell.cpp | 2 | ||||
-rw-r--r-- | src/game/Unit.cpp | 5 | ||||
-rw-r--r-- | src/game/World.cpp | 3 |
4 files changed, 11 insertions, 2 deletions
diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 834c958e662..5a4d5d126f4 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -1482,6 +1482,9 @@ Creature* WorldObject::SummonCreature(uint32 id, float x, float y, float z, floa if(GetTypeId()==TYPEID_UNIT && ((Creature*)this)->AI()) ((Creature*)this)->AI()->JustSummoned(pCreature); + if(pCreature->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER && pCreature->m_spells[0]) + pCreature->CastSpell(pCreature, pCreature->m_spells[0], true, 0, 0, GetGUID()); + //return the creature therewith the summoner has access to it return pCreature; } diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 41d79e5203c..512c5533885 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -926,7 +926,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target) if(int32 spell_triggered = spellmgr.GetSpellLinked(m_spellInfo->Id, 1)) { if(spell_triggered > 0) - m_caster->CastSpell(unit, spell_triggered, true); + unit->CastSpell(unit, spell_triggered, true/*, 0, 0, m_caster->GetGUID()*/); else unit->RemoveAurasDueToSpell(-spell_triggered); } diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 2dae05b5411..3fed7edc22e 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -8571,7 +8571,10 @@ bool Unit::isVisibleForOrDetect(Unit const* u, bool detect, bool inVisibleList) else { // Units far than max visible distance for creature or not in our map are not visible too - if (!IsWithinDistInMap(u,World::GetMaxVisibleDistanceForCreature()+(inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f))) + // Active unit should always be visibile + if (!IsWithinDistInMap(u, u->isActive() + ? (MAX_VISIBILITY_DISTANCE - (inVisibleList ? 0.0f : World::GetVisibleUnitGreyDistance())) + : (World::GetMaxVisibleDistanceForCreature() + (inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f)))) return false; } } diff --git a/src/game/World.cpp b/src/game/World.cpp index 45070615f4d..6a0da7fc90a 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -1096,6 +1096,9 @@ void World::SetInitialWorldSettings() sLog.outString( "Loading spell extra attributes...(TODO)" ); spellmgr.LoadSpellExtraAttr(); + sLog.outString( "Loading linked spells..." ); + spellmgr.LoadSpellLinked(); + sLog.outString( "Loading player Create Info & Level Stats..." ); objmgr.LoadPlayerInfo(); |