Jump to content

Gameobject Respawn Doesn't Work In Some Cases


Guest Naxxgucky

Recommended Posts

Hi everyone!

We just found a problem with the respawn of gameobjects.

There are some objects, we could not find a rule or scheme for it, that don't respawn after their given respawntime.

Most famous objects are the chests of the druid water form.

Although the respawn time is over they don't respawn at all.

Only after sever restart they appear once. But once lootet they stay despawned.

We tried it to set the respawntime to differnt time values vorm 1 second to 10 minutes but useless.

Other gameobjects respawn as meant to do...

Does anybody know this bug? Or has it something to do with the UDB settings of the object?

It's kind of anoying to place all the druids the items into their inventory.

But their are also other objects.

We just implementet a custom server event with four almost identical gobjects, they just have different loot, the rest is equal.

Three of them respawn, the fourth stays despawned...

No idea why...

(and of couse I used the search function... :( )

Link to comment
Share on other sites

not sure if its related to your problem, but i have noticed a bug with respawning spellcaster GOs (they just do not respawn or respawn randomly). anywy here is my fix for it, maybe it helps you (around line 380 in GameObject.cpp -- sorry i cant supply a .patch file right now):

                case GO_JUST_DEACTIVATED:
               {
                       //if Gameobject should cast spell, then this, but some GOs (type = 10) should be destroyed
                       if (GetGoType() == GAMEOBJECT_TYPE_GOOBER)
                       {
                               uint32 spellId = GetGOInfo()->goober.spellId;

                               if(spellId)
                               {
                                       std::set<uint32>::iterator it = m_unique_users.begin();
                                       std::set<uint32>::iterator end = m_unique_users.end();
                                       for (; it != end; it++)
                                       {
                                               Unit* owner = Unit::GetUnit(*this, uint64(*it));
                                               if (owner) owner->CastSpell(owner, spellId, false);
                                       }

                                       m_unique_users.clear();
                                       m_usetimes = 0;
                               }
                               //any return here in case battleground traps
                       }
                       // -- SPELLCASTER RESPAWN FIX BELOW --
                       // FG: fix for proper respawning of charged spellcaster GOs
                       else if(GetGoType() == GAMEOBJECT_TYPE_SPELLCASTER)
                       {
                               m_usetimes = 0;
                       }
                       // -- SPELLCASTER RESPAWN FIX ABOVE --

                       if(GetOwnerGUID())
                       {
                               m_respawnTime = 0;
                               Delete();
                               return;
                       }

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use