From e4b701cabab7e08855a7f1433ea7c696ffa481a8 Mon Sep 17 00:00:00 2001 From: megamage Date: Sat, 18 Oct 2008 19:59:34 -0500 Subject: [svn] Add Unit::GetObjectInWorld function to get object by guid without providing reference. Small change in SummonGameObject. Fix a bug that player can not click summoned najentus spine (must let target summon gameobject). --HG-- branch : trunk --- .../scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp | 3 ++- src/game/Object.cpp | 6 ++++-- src/game/Unit.h | 4 ++++ 3 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp index 6e2f20394d5..6bf64ba0036 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp @@ -216,7 +216,8 @@ struct TRINITY_DLL_DECL boss_najentusAI : public ScriptedAI m_creature->CastSpell(target, SPELL_IMPALING_SPINE, true); m_creature->SetInFront(m_creature->getVictim()); SpineTargetGUID = target->GetGUID(); - m_creature->SummonGameObject(GOBJECT_SPINE, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), m_creature->GetOrientation(), 0, 0, 0, 0, 30); + //must let target summon, otherwise you cannot click the spine + target->SummonGameObject(GOBJECT_SPINE, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), m_creature->GetOrientation(), 0, 0, 0, 0, 30); switch(rand()%2) { diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 881e4d2515a..a64ef9fa744 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -1452,8 +1452,10 @@ GameObject* WorldObject::SummonGameObject(uint32 entry, float x, float y, float if(!go->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT),entry,map,x,y,z,ang,rotation0,rotation1,rotation2,rotation3,100,1)) return NULL; go->SetRespawnTime(respawnTime); - go->SetSpawnedByDefault(false); // do not save respawn time - go->SetOwnerGUID(GetGUID()); + if(GetTypeId()==TYPEID_PLAYER || GetTypeId()==TYPEID_UNIT) //not sure how to handle this + ((Unit*)this)->AddGameObject(go); + else + go->SetSpawnedByDefault(false); map->Add(go); return go; diff --git a/src/game/Unit.h b/src/game/Unit.h index 4410dd45b72..fa6e2cdf111 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1218,6 +1218,10 @@ class TRINITY_DLL_SPEC Unit : public WorldObject void addFollower(FollowerReference* pRef) { m_FollowingRefManager.insertFirst(pRef); } void removeFollower(FollowerReference* /*pRef*/ ) { /* nothing to do yet */ } static Unit* GetUnit(WorldObject& object, uint64 guid); + template static T* GetObjectInWorld(uint64 guid, T* /*fake*/) + { + return ObjectAccessor::GetObjectInWorld(uint64 guid, T* /*fake*/) + } MotionMaster* GetMotionMaster() { return &i_motionMaster; } -- cgit v1.2.3