[Visual] During flightpath and update maps you loose your flight

Issue #1202 invalid
job bais
created an issue

When you take for example a FP from shattrath to falcon watch on a certain time when you enter hellfire peninsula you loose your windrider and you swim mid air to your destination.

i thought that it was fixed by the changes branch that was merged 2 days ago, since it existed before that time, but now that i have updated my core its still the same.

Comments (11)

  1. job bais reporter

    zaffy i use latest as mentioned. Lord, the way to reproduce, i wish i had a cam prog on my mac to make a vid, since its rather easy. make a horde char, make sure he has shattrath as FP and falcon watch and few others, then take from shattrath to falcon watch the FP halfway somewhere the windrider dismounts, i even hear the sound!!!! you swim to the FP.

  2. Zaffy

    I'm sorry. I can't reproduce all works fine for me. It looks exactly like the bug that was fixed. Areyou sure you have the latest rev compiled and installed?

  3. job bais reporter

    zaffy im 100% positive that i have as latest revision the commit which says:

    [Core/Cleanup] Remove ratio from UpdateSpeed and use SetSpeed instead. Cleanup duplicate and unused variables in UpdateSpeed function.

    that is AFTER the change branch got inserted.

  4. job bais reporter

    hope this is what you ask zaffy, and no i dont want to argue as well, it might be related to something else that i have it and others dont ( client?? )

    void InstanceMap::Update(const uint32& t_diff)
    {
        Map::Update(t_diff);
    
        if (i_data)
            i_data->Update(t_diff);
    }
    
    void InstanceMap::RemoveFromMap(Player* player, bool remove)
    {
        sLog.outDetail("MAP: Removing player '%s' from instance '%u' of map '%s' before relocating to another map", player->GetName(), GetInstanceId(), GetMapName());
        //if last player set unload timer
        if (!m_unloadTimer && m_mapRefManager.getSize() == 1)
            m_unloadTimer = m_unloadWhenEmpty ? MIN_UNLOAD_DELAY : std::max(sWorld.getConfig(CONFIG_INSTANCE_UNLOAD_DELAY), (uint32)MIN_UNLOAD_DELAY);
        Map::RemoveFromMap(player, remove);
        // for normal instances schedule the reset after all players have left
        SetResetSchedule(true);
    }
    
    void InstanceMap::CreateInstanceData(bool load)
    {
        if (i_data != NULL)
            return;
    
        InstanceTemplate const* mInstance = sObjectMgr.GetInstanceTemplate(GetId());
        if (mInstance)
        {
            i_script_id = mInstance->script_id;
            i_data = sScriptMgr.CreateInstanceData(this);
        }
    
  5. job bais reporter

    oeps wrong part

    void Map::Update(const uint32& t_diff)
    {
        m_dyn_tree.update(t_diff);
    
        // update active cells around players and active objects
        resetMarkedCells();
    
        Oregon::ObjectUpdater updater(t_diff);
        // for creature
        TypeContainerVisitor<Oregon::ObjectUpdater, GridTypeMapContainer  > grid_object_update(updater);
        // for pets
        TypeContainerVisitor<Oregon::ObjectUpdater, WorldTypeMapContainer > world_object_update(updater);
    
        // the player iterator is stored in the map object
        // to make sure calls to Map::RemoveFromMap don't invalidate it
        for (m_mapRefIter = m_mapRefManager.begin(); m_mapRefIter != m_mapRefManager.end(); ++m_mapRefIter)
        {
            Player* player = m_mapRefIter->getSource();
    
            if (!player || !player->IsInWorld())
                continue;
    
            player->Update(t_diff);
    VisitNearbyCellsOf(player, grid_object_update, world_object_update);
    
            // Handle updates for creatures in combat with player and are more than 60 yards away
            if (player->IsInCombat())
            {
                std::vector<Creature*> updateList;
                HostileReference* ref = player->getHostileRefManager().getFirst();
    
                while (ref)
                {
                    if (Unit* unit = ref->getSource()->getOwner())
                        if (unit->ToCreature() && unit->GetMapId() == player->GetMapId() && !unit->IsWithinDistInMap(player, GetVisibilityRange(), false))
                            updateList.push_back(unit->ToCreature());
    
                    ref = ref->next();
                }
    
                // Process deferred update list for player
                for (Creature* c : updateList)
                    VisitNearbyCellsOf(c, grid_object_update, world_object_update);
            }
        }
    
  6. job bais reporter

    Zaffy and lord, my sincere apology for my bumping and annoying you, i found out what my problem was... my restarter of my core was stuck and after update it didnt kill the core correctly so when i fired it up it was still running the old core.. im sorry for the hassle.

    This can be closed..

  7. Log in to comment