Jump to content

qsa

Members
  • Posts

    289
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by qsa

  1. Description of the bug?

    Implementing auras :

    254 SPELL_AURA_MOD_DISARM_SHIELD

    278 SPELL_AURA_MOD_DISARM_RANGED.

    For which repository revision was the patch created?

    8071

    Well, basically title says it all, implementing two disarm related auras used in various spells.

    I tried to keep the changes to minimal and use already defined methods.

    IsUseEquipedWeapon() had to be used to Unit class ( from Player ), it just more logical place for it.

    Some names are little bit misleading since SPELL_AURA_MOD_DISARM_SHIELD also effects off-hand weapons.

    The aura flags are taken from some patch I've found on my hdd.

    Not sure where it came from or who are the original creators. Thanks guys, guessing those flags is a nasty job :) you made my part so much easier .

    commit b623c1b2113e269338fb01a114dc3930a05dce38
    Author: sixsixnine <[email protected]>
    Date:   Thu Jun 25 18:40:11 2009 +0300
    
       + Implementing auras : 254 SPELL_AURA_MOD_DISARM_SHIELD and 278 SPELL_AURA_MOD_DISARM_RANGED.
       + Moved IsUseEquipedWeapon() to Unit class. ( should be renamed )
    
       Signed-off-by: sixsixnine <[email protected]>
    
    diff --git a/src/game/Player.cpp b/src/game/Player.cpp
    index 5f9d114..77477f9 100644
    --- a/src/game/Player.cpp
    +++ b/src/game/Player.cpp
    @@ -6683,7 +6683,7 @@ void Player::_ApplyItemBonuses(ItemPrototype const *proto, uint8 slot, bool appl
                ApplyFeralAPBonus(feral_bonus, apply);
        }
    
    -    if(!IsUseEquipedWeapon(slot==EQUIPMENT_SLOT_MAINHAND))
    +    if(!IsUseEquipedWeapon(attType))
            return;
    
        if (proto->Delay)
    @@ -8524,7 +8524,7 @@ Item* Player::GetWeaponForAttack(WeaponAttackType attackType, bool useable) cons
        if(!useable)
            return item;
    
    -    if( item->IsBroken() || !IsUseEquipedWeapon(attackType==BASE_ATTACK) )
    +    if( item->IsBroken() || !IsUseEquipedWeapon(attackType) )
            return NULL;
    
        return item;
    @@ -8539,7 +8539,7 @@ Item* Player::GetShield(bool useable) const
        if(!useable)
            return item;
    
    -    if( item->IsBroken())
    +    if( item->IsBroken() || !IsUseEquipedWeapon(OFF_ATTACK))
            return NULL;
    
        return item;
    diff --git a/src/game/Player.h b/src/game/Player.h
    index 5da208a..67849a7 100644
    --- a/src/game/Player.h
    +++ b/src/game/Player.h
    @@ -1117,11 +1117,6 @@ class MANGOS_DLL_SPEC Player : public Unit
            void AddArmorProficiency(uint32 newflag) { m_ArmorProficiency |= newflag; }
            uint32 GetWeaponProficiency() const { return m_WeaponProficiency; }
            uint32 GetArmorProficiency() const { return m_ArmorProficiency; }
    -        bool IsUseEquipedWeapon( bool mainhand ) const
    -        {
    -            // disarm applied only to mainhand weapon
    -            return !IsInFeralForm() && (!mainhand || !HasFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_DISARMED) );
    -        }
            bool IsTwoHandUsed() const
            {
                Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
    diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
    index b27873f..ad677c5 100644
    --- a/src/game/SpellAuras.cpp
    +++ b/src/game/SpellAuras.cpp
    @@ -306,7 +306,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
        &Aura::HandleNULL,                                      //251 SPELL_AURA_MOD_ENEMY_DODGE
        &Aura::HandleNULL,                                      //252 haste all?
        &Aura::HandleNULL,                                      //253 SPELL_AURA_MOD_BLOCK_CRIT_CHANCE
    -    &Aura::HandleNULL,                                      //254 SPELL_AURA_MOD_DISARM_SHIELD disarm Shield
    +    &Aura::HandleAuraModDisarm,                             //254 SPELL_AURA_MOD_DISARM_SHIELD disarm Shield/offhand
        &Aura::HandleNoImmediateEffect,                         //255 SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT    implemented in Unit::SpellDamageBonus
        &Aura::HandleNoReagentUseAura,                          //256 SPELL_AURA_NO_REAGENT_USE Use SpellClassMask for spell select
        &Aura::HandleNULL,                                      //257 SPELL_AURA_MOD_TARGET_RESIST_BY_SPELL_CLASS Use SpellClassMask for spell select
    @@ -330,7 +330,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
        &Aura::HandleNoImmediateEffect,                         //275 SPELL_AURA_MOD_IGNORE_SHAPESHIFT Use SpellClassMask for spell select
        &Aura::HandleNULL,                                      //276 mod damage % mechanic?
        &Aura::HandleNoImmediateEffect,                         //277 SPELL_AURA_MOD_MAX_AFFECTED_TARGETS Use SpellClassMask for spell select
    -    &Aura::HandleNULL,                                      //278 SPELL_AURA_MOD_DISARM_RANGED disarm ranged weapon
    +    &Aura::HandleAuraModDisarm,                             //278 SPELL_AURA_MOD_DISARM_RANGED disarm ranged weapon
        &Aura::HandleNULL,                                      //279 visual effects? 58836 and 57507
        &Aura::HandleNULL,                                      //280 SPELL_AURA_MOD_TARGET_ARMOR_PCT
        &Aura::HandleNULL,                                      //281 SPELL_AURA_MOD_HONOR_GAIN
    @@ -3511,14 +3511,43 @@ void Aura::HandleAuraModDisarm(bool apply, bool Real)
        if(!Real)
            return;
    
    -    if(!apply && m_target->HasAuraType(SPELL_AURA_MOD_DISARM))
    +    if(!apply && m_target->HasAuraType(GetModifier()->m_auraname))
            return;
    
    -    // not sure for it's correctness
    +    uint32 flags = 0;
    +    uint32 field = 0;
    +    WeaponAttackType attack_type = BASE_ATTACK;
    +    uint32 slot = EQUIPMENT_SLOT_OFFHAND;
    +
    +    switch (GetModifier()->m_auraname)
    +    {
    +    case SPELL_AURA_MOD_DISARM:
    +        {
    +            field = UNIT_FIELD_FLAGS;    
    +            flags = UNIT_FLAG_DISARMED;
    +            slot = EQUIPMENT_SLOT_MAINHAND;
    +        }
    +    break;
    +    case SPELL_AURA_MOD_DISARM_SHIELD:
    +        {
    +            field = UNIT_FIELD_FLAGS_2;
    +            flags = UNIT_FLAG2_DISARM_OFFHAND;
    +            attack_type = OFF_ATTACK;
    +        }
    +    break;
    +    case SPELL_AURA_MOD_DISARM_RANGED:
    +        {
    +            field = UNIT_FIELD_FLAGS_2;
    +            flags = UNIT_FLAG2_DISARM_RANGED;
    +            attack_type = OFF_ATTACK;
    +        }
    +    break;
    +    }
    +
        if(apply)
    -        m_target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISARMED);
    +        m_target->SetFlag(field, flags);
        else
    -        m_target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISARMED);
    +        m_target->RemoveFlag(field, flags);
    
        // only at real add/remove aura
        if (m_target->GetTypeId() != TYPEID_PLAYER)
    @@ -3529,11 +3558,14 @@ void Aura::HandleAuraModDisarm(bool apply, bool Real)
            return;
    
        if (apply)
    -        m_target->SetAttackTime(BASE_ATTACK,BASE_ATTACK_TIME);
    +        m_target->SetAttackTime(attack_type, BASE_ATTACK_TIME);
        else
            ((Player *)m_target)->SetRegularAttackTime();
    
    -    m_target->UpdateDamagePhysical(BASE_ATTACK);
    +    if(Item *_item = ((Player*)m_target)->GetItemByPos( INVENTORY_SLOT_BAG_0, slot ))
    +        ((Player*)m_target)->_ApplyItemMods(_item, slot, !apply);
    +
    +    m_target->UpdateDamagePhysical(attack_type);
    }
    
    void Aura::HandleAuraModStun(bool apply, bool Real)
    diff --git a/src/game/StatSystem.cpp b/src/game/StatSystem.cpp
    index a37627f..cae5dc0 100644
    --- a/src/game/StatSystem.cpp
    +++ b/src/game/StatSystem.cpp
    @@ -430,7 +430,7 @@ void Player::CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bo
            weapon_mindamage = lvl*0.85*att_speed;
            weapon_maxdamage = lvl*1.25*att_speed;
        }
    -    else if(!IsUseEquipedWeapon(attType==BASE_ATTACK))      //check if player not in form but still can't use weapon (broken/etc)
    +    else if(!IsUseEquipedWeapon(attType))      //check if player not in form but still can't use weapon (broken/etc)
        {
            weapon_mindamage = BASE_MINDAMAGE;
            weapon_maxdamage = BASE_MAXDAMAGE;
    diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
    index 636c3ff..31fa896 100644
    --- a/src/game/Unit.cpp
    +++ b/src/game/Unit.cpp
    @@ -224,6 +224,9 @@ void Unit::Update( uint32 p_time )
    
    bool Unit::haveOffhandWeapon() const
    {
    +    if (!IsUseEquipedWeapon(OFF_ATTACK))
    +        return false;
    +
        if(GetTypeId() == TYPEID_PLAYER)
            return ((Player*)this)->GetWeaponForAttack(OFF_ATTACK,true);
        else
    @@ -2918,7 +2921,7 @@ float Unit::GetUnitBlockChance() const
        if(GetTypeId() == TYPEID_PLAYER)
        {
            Player const* player = (Player const*)this;
    -        if(player->CanBlock() )
    +        if(player->CanBlock() && player->IsUseEquipedWeapon(OFF_ATTACK))
            {
                Item *tmpitem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
                if(tmpitem && !tmpitem->IsBroken() && tmpitem->GetProto()->Block)
    @@ -11914,7 +11917,7 @@ bool Unit::IsTriggeredAtSpellProcEvent(Unit *pVictim, Aura* aura, SpellEntry con
                else
                    item = ((Player*)this)->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_RANGED);
    
    -            if (!((Player*)this)->IsUseEquipedWeapon(attType==BASE_ATTACK))
    +            if (!IsUseEquipedWeapon(attType))
                    return false;
    
                if(!item || item->IsBroken() || item->GetProto()->Class != ITEM_CLASS_WEAPON || !((1<<item->GetProto()->SubClass) & spellProto->EquippedItemSubClassMask))
    @@ -11924,7 +11927,7 @@ bool Unit::IsTriggeredAtSpellProcEvent(Unit *pVictim, Aura* aura, SpellEntry con
            {
                // Check if player is wearing shield
                Item *item = ((Player*)this)->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
    -            if(!item || item->IsBroken() || item->GetProto()->Class != ITEM_CLASS_ARMOR || !((1<<item->GetProto()->SubClass) & spellProto->EquippedItemSubClassMask))
    +            if(!item || item->IsBroken() || !IsUseEquipedWeapon(OFF_ATTACK) || item->GetProto()->Class != ITEM_CLASS_ARMOR || !((1<<item->GetProto()->SubClass) & spellProto->EquippedItemSubClassMask))
                    return false;
            }
        }
    diff --git a/src/game/Unit.h b/src/game/Unit.h
    index cbfbde3..04d609b 100644
    --- a/src/game/Unit.h
    +++ b/src/game/Unit.h
    @@ -531,6 +531,8 @@ enum UnitFlags2
        UNIT_FLAG2_UNK1             = 0x00000002,               // Hide unit model (show only player equip)
        UNIT_FLAG2_COMPREHEND_LANG  = 0x00000008,
        UNIT_FLAG2_FORCE_MOVE       = 0x00000040,
    +    UNIT_FLAG2_DISARM_OFFHAND   = 0x00000080,
    +    UNIT_FLAG2_DISARM_RANGED    = 0x00000400,
        UNIT_FLAG2_REGENERATE_POWER = 0x00000800
    };
    
    @@ -899,6 +901,24 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
            uint32 getAttackTimer(WeaponAttackType type) const { return m_attackTimer[type]; }
            bool isAttackReady(WeaponAttackType type = BASE_ATTACK) const { return m_attackTimer[type] == 0; }
            bool haveOffhandWeapon() const;
    +        bool IsUseEquipedWeapon( WeaponAttackType attackType ) const
    +        {
    +            bool disarmed = false;
    +            switch(attackType)
    +            {
    +                case BASE_ATTACK:
    +                    disarmed = HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISARMED);
    +                break;
    +                case OFF_ATTACK:
    +                    disarmed = HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_DISARM_OFFHAND);
    +                break;
    +                case RANGED_ATTACK:
    +                    disarmed = HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_DISARM_RANGED);
    +                break;
    +            }
    +
    +            return !IsInFeralForm() && !disarmed;
    +        }
            bool canReachWithAttack(Unit *pVictim) const;
            uint32 m_extraAttacks;
    
    

    http://paste2.org/p/284693

    Take care.

  2. @waza123

    No offense, but do you sometimes read what others keep telling?

    Arthus asked for the server.log output that came together with the GetInstance() crash.

    Also like i told you before and dereka did again: Posting FreezeDetectorRunnable::run crashes makes absolutly no sense without the rest of the crash dump.

    That's not meant to be smartass like, just observations..

    I'm pretty sure those are posted automatically.

    Anyway, adding similar assert. (removed not interesting threads )

    mangos rev : 7973 ( bit old, I know )

    
    warning: Can't read pathname for load map: Input/output error.
    Core was generated by `...r/bin/mangos-worldd'.
    Program terminated with signal 6, Aborted.
    
    Thread 1 (process 21843):
    #0  0x00007f3dcbcf2095 in raise () from /lib/libc.so.6
    No symbol table info available.
    #1  0x00007f3dcbcf3af0 in abort () from /lib/libc.so.6
    No symbol table info available.
    #2  0x00007f3dcbceb2df in __assert_fail () from /lib/libc.so.6
    No symbol table info available.
    #3  0x00000000007c37cf in Bag::StoreItem (this=0x7f3db7bd4560, slot=39 '\\'', 
       pItem=0x7f3da9f6ba60) at ../../../src/game/Bag.cpp:150
       __PRETTY_FUNCTION__ = "void Bag::StoreItem(uint8, Item*, bool)"
    #4  0x00000000006be4e7 in Player::_StoreItem (this=0x7f3db6ff6d70, pos=4903, 
       pItem=0x7f3da9f6ba60, count=1, clone=false, update=255)
       at ../../../src/game/Player.cpp:10359
       pBag = (class Bag *) 0x552d
       bag = 19 '\\023'
       slot = 39 '\\''
       pItem2 = <value optimized out>
    #5  0x00000000006be809 in Player::StoreItem (this=0x7f3db6ff6d70, 
       dest=@0x42dc8f50, pItem=0x7f3da9f6ba60, update=<value optimized out>)
       at ../../../src/game/Player.cpp:10297
       pos = 21843
       count = 4294967295
       lastItem = (class Item *) 0x7f3da9f6ba60
       entry = 2901
    #6  0x00000000006e691d in Player::BuyItemFromVendor (this=0x7f3db6ff6d70, 
       vendorguid=<value optimized out>, item=2901, count=<value optimized out>, 
       bagguid=<value optimized out>, slot=39 '\\'')
       at ../../../src/game/Player.cpp:17445
       it = <value optimized out>
       dest = {<std::_Vector_base<ItemPosCount,std::allocator<ItemPosCount> >> = {
       _M_impl = {<std::allocator<ItemPosCount>> = {<__gnu_cxx::new_allocator<ItemPosCount>> = {<No data fields>}, <No data fields>}, _M_start = 0x7f3da1910b20, 
         _M_finish = 0x7f3da1910b28, 
         _M_end_of_storage = 0x7f3da1910b28}}, <No data fields>}
       pCreature = (class Creature *) 0x7f3dba308ea0
       vItems = <value optimized out>
       vendor_slot = 1
       crItem = (const VendorItem *) 0x7f3dc0ff50f0
       price = 68
    #7  0x00000000007afe45 in WorldSession::Update (this=0x5e20550)
       at ../../../src/game/WorldSession.cpp:207
       packet = (WorldPacket *) 0x7f3da7f1f710
       currTime = <value optimized out>
    #8  0x00000000007a7353 in World::UpdateSessions (this=0xc3ac00, diff=195)
       at ../../../src/game/World.cpp:2717
       next = {_M_cur = 0x7f3db6b14100, _M_ht = 0xc3acb8}
    #9  0x00000000007a7a74 in World::Update (this=0xc3ac00, diff=195)
       at ../../../src/game/World.cpp:1521
    No locals.
    #10 0x0000000000507fad in WorldRunnable::run (this=<value optimized out>)
       at ../../../src/mangosd/WorldRunnable.cpp:65
       diff = 195
       realCurrTime = 309037645
       realPrevTime = <value optimized out>
       prevSleepTime = 50
    #11 0x000000000085f44a in ACE_Based::Thread::ThreadTask (param=0x552d)
       at ../../../src/shared/Threading.cpp:159
    No locals.
    #12 0x00007f3dcc7c23f7 in start_thread () from /lib/libpthread.so.0
    No symbol table info available.
    #13 0x00007f3dcbd97b3d in clone () from /lib/libc.so.6
    No symbol table info available.
    #14 0x0000000000000000 in ?? ()
    No symbol table info available.
    2009-06-24 15:17:14 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 000000000001FDD9 and should be 000000000001FDD9 instead of 000000000001FDD9
    2009-06-24 15:17:15 ERROR:Aura::TriggerSpell: Spell 13810 have 0 in EffectTriggered[1], not handled custom case?
    2009-06-24 15:17:15 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000017322 and should be 0000000000017322 instead of 0000000000017322
    2009-06-24 15:17:15 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000001672 and should be 0000000000001672 instead of 0000000000001672
    2009-06-24 15:17:15 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 000000000002473D and should be 000000000002473D instead of 000000000002473D
    2009-06-24 15:17:17 ERROR:Aura::TriggerSpell: Spell 13810 have 0 in EffectTriggered[1], not handled custom case?
    2009-06-24 15:17:18 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 000000000001620C and should be 000000000001620C instead of 000000000001620C
    2009-06-24 15:17:26 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000016A6D and should be 0000000000016A6D instead of 0000000000016A6D
    2009-06-24 15:17:29 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000011F24 and should be 0000000000011F24 instead of 0000000000011F24
    2009-06-24 15:17:29 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000016F89 and should be 0000000000016F89 instead of 0000000000016F89
    2009-06-24 15:17:29 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 000000000002649A and should be 000000000002649A instead of 000000000002649A
    2009-06-24 15:17:29 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 000000000002413A and should be 000000000002413A instead of 000000000002413A
    2009-06-24 15:17:29 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000015AB4 and should be 0000000000015AB4 instead of 0000000000015AB4
    2009-06-24 15:17:30 ERROR:SESSION: received unexpected opcode CMSG_GUILD_ROSTER (0x0089) the player has not logged in yet
    2009-06-24 15:17:31 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 000000000001620C and should be 000000000001620C instead of 000000000001620C
    2009-06-24 15:17:31 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 00000000000056C3 and should be 00000000000056C3 instead of 00000000000056C3
    2009-06-24 15:17:31 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000017444 and should be 0000000000017444 instead of 0000000000017444
    2009-06-24 15:17:31 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000024B20 and should be 0000000000024B20 instead of 0000000000024B20
    2009-06-24 15:17:31 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000024743 and should be 0000000000024743 instead of 0000000000024743
    2009-06-24 15:17:31 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000026767 and should be 0000000000026767 instead of 0000000000026767
    2009-06-24 15:17:31 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 00000000000036F9 and should be 00000000000036F9 instead of 00000000000036F9
    2009-06-24 15:17:31 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000016FC0 and should be 0000000000016FC0 instead of 0000000000016FC0
    2009-06-24 15:17:31 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000026392 and should be 0000000000026392 instead of 0000000000026392
    2009-06-24 15:17:32 ERROR:SPELL: wrong map (0 instead 530) target coordinates for spell ID 17334
    2009-06-24 15:17:47 ERROR:SPELL: wrong map (530 instead 546) target coordinates for spell ID 35715
    2009-06-24 15:17:53 ERROR:SESSION: received unexpected opcode CMSG_CONTACT_LIST (0x0066) the player has not logged in yet
    2009-06-24 15:17:58 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000016849 and should be 0000000000016849 instead of 0000000000016849
    2009-06-24 15:18:00 ERROR:Summoned pet (Entry: 18201) not have pet stats data in DB
    2009-06-24 15:18:14 ERROR:Auras: Unknown Shapeshift Type: 15
    2009-06-24 15:18:20 ERROR:SCRIPT_COMMAND_FIELD_SET call for wrong field 159 (max count: 148) in object (TypeId: 3).
    2009-06-24 15:18:28 ERROR:Table `game_graveyard_zone` incomplete: Zone 3702 Team 67 does not have a linked graveyard.
    2009-06-24 15:18:34 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000016849 and should be 0000000000016849 instead of 0000000000016849
    2009-06-24 15:18:34 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 000000000002568C and should be 000000000002568C instead of 000000000002568C
    2009-06-24 15:18:34 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 00000000000175C4 and should be 00000000000175C4 instead of 00000000000175C4
    2009-06-24 15:18:54 ERROR:CreatureEventAI: Event 2050102 ACTION_T_UPDATE_TEMPLATE call with param1 == current entry. Creature 20806
    2009-06-24 15:18:59 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000017322 and should be 0000000000017322 instead of 0000000000017322
    2009-06-24 15:19:00 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 0000000000021F30 and should be 0000000000021F30 instead of 0000000000021F30
    2009-06-24 15:19:00 ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is 000000000002473D and should be 000000000002473D instead of 000000000002473D
    2009-06-24 15:19:03 ERROR:Gameobject (GUID: 470300 Entry: 184839) not created: it have not exist entry in `gameobject_template`. Map: 530  (X: 3158.319580 Y: 7050.047363 Z: 161.337982) ang: 5.031782 rotation0: 0.000000 rotation1: 0.000000 rotation2: 0.000000 rotation3: 0.000000
    2009-06-24 15:19:08 ERROR:Gameobject (GUID: 470305 Entry: 184839) not created: it have not exist entry in `gameobject_template`. Map: 530  (X: 3158.244873 Y: 7054.952148 Z: 161.406158) ang: 5.267402 rotation0: 0.000000 rotation1: 0.000000 rotation2: 0.000000 rotation3: 0.000000
    

    EDIT: nevermind, i've been under the rock for awhile, I think this issue was resolved in layer revision. sorry

  3. mangos revision 7940

    Adding some crash logs which are unique after 9704 ( I assume either 7911 or 7929 )

    I'm pretty sure its the buffer changes at 7911 in object.cpp

    Problem may be thats ByteBuffer wont resize properly at reaching reserved capacity?

    We might have this problem before, but since initial buffer was larger ( 10 times ) resize wasn't ever used.

    Or change at UpdateData::BuildPacket/UpdateData::Compress ?

    http://filebeam.com/9e5b0b480131ba1760c6c9213c700a4e

    Take care.

  4. I think I found the problem. My auto-compile script. Apparently I was using non-patched core while using new maps. I totally did not expect it. But apparently they ( new maps ) are loaded "just fine" by old core.

    For now it looks fine. My bad really, sorry :(

    As soon as i gather some proper logs I post them. Sorry again.

    PS: can be nice idea adding check just like for dbc files, preventing load. Just for silly bunnies like me. Im pretty sure extractor version is stored in map file headers.

    PSS: Thanks.

  5. Possibel yopu use old maps that cleary not compatible

    I see same reports for old map code at old interpolation array use.

    Not like this. Adding below about 5 minutes worth of runtime on local (single client) using those maps ( extracted from 308a client ). Extractor used is one compiled locally using the provided patch.

    http://pastebin.com/m3de317c4

    Using the old maps I do get the warning once in a while, but clearly not like this.

    I will re-extract using the extractor added in last rev. and retest, reporting the result.

    Take care.

  6. There are few problems I'v noticed using those maps.

    - Movement generators random/confused etc seems to be almost totally screwed.

    - Blink and alike totally not usable.

    Under valgring I'm getting a lot of "Conditional jump or move depends on uninitialised value(s)" related to various map related calculations.

    My guess is that those maps aren't properly loaded by the server.

    Take care.

  7. What bug does the patch fix? What features does the patch add?

    Vampiric Touch uses old, pre-wotlk formula/trigger spell.

    For which SubVersion revision was the patch created?

    7201

    Who has been writing this patch? Please include either forum user names or email addresses.

    myself ( entire line of code :) )

    diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
    index 4d93544..690fb5e 100644
    --- a/src/game/Unit.cpp
    +++ b/src/game/Unit.cpp
    @@ -5004,10 +5004,8 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
                    if(triggeredByAura->GetCasterGUID() != pVictim->GetGUID())
                        return false;
    
    -                // energize amount
    -                basepoints0 = triggerAmount*damage/100;
    -                pVictim->CastCustomSpell(pVictim,34919,&basepoints0,NULL,NULL,true,castItem,triggeredByAura);
    -                return true;                                // no hidden cooldown
    +                pVictim->CastSpell(pVictim,57669,true,castItem,triggeredByAura);
    +                    return true;                                // no hidden cooldown
                }
                // Divine Aegis
                if (dummySpell->SpellIconID == 2820)
    
    

    Take care.

×
×
  • 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