Jump to content

Quriq14

Members
  • Posts

    10
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Quriq14's Achievements

Member

Member (2/3)

0

Reputation

  1. * What bug does the patch fix? What features does the patch add? Item owner is not switched when returning an expired mail with items, so the new receiver can't see them. Removed also redundant check. * For which repository revision was the patch created? 10859 * Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. Not found any. diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 0281510..0fac2ba 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -5509,7 +5509,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) delete resultItems; } //if it is mail from AH, it shouldn't be returned, but deleted - if (m->messageType != MAIL_NORMAL || m->messageType == MAIL_AUCTION || (m->checked & (MAIL_CHECK_MASK_COD_PAYMENT | MAIL_CHECK_MASK_RETURNED))) + if (m->messageType != MAIL_NORMAL || (m->checked & (MAIL_CHECK_MASK_COD_PAYMENT | MAIL_CHECK_MASK_RETURNED))) { // mail open and then not returned for(std::vector<MailItemInfo>::iterator itr2 = m->items.begin(); itr2 != m->items.end(); ++itr2) @@ -5520,6 +5520,11 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) //mail will be returned: CharacterDatabase.PExecute("UPDATE mail SET sender = '%u', receiver = '%u', expire_time = '" UI64FMTD "', deliver_time = '" UI64FMTD "',cod m->receiverGuid.GetCounter(), m->sender, (uint64)(basetime + 30*DAY), (uint64)basetime, MAIL_CHECK_MASK_RETURNED, m->messageID); + for (std::vector<MailItemInfo>::iterator itr2 = m->items.begin(); itr2 != m->items.end(); ++itr2) + { + CharacterDatabase.PExecute("UPDATE mail_items SET receiver = %u WHERE item_guid = '%u'", m->sender, itr2->item_guid); + CharacterDatabase.PExecute("UPDATE item_instance SET owner_guid = %u WHERE guid = '%u'", m->sender, itr2->item_guid); + } delete m; continue; }
  2. Death Coil involves three different spells: a main spell, one for heal and one for damage (find "Death Coil" inside SpellEffects.cpp). I was simply trying to make the glyph be procced only by one of them. Thank you for reviewing, anyway. I'll try to find something better.
  3. On 10577, this seems to work also (DB only): update spell_proc_event set SpellFamilyMaskA0 = 0x80000000,SpellFamilyMaskA1 = 0x80000000,SpellFamilyMaskA2 = 0x80000000 where entry=58677;
  4. What bug does the patch fix? What features does the patch add? This adds Arathi Basin to BGTypeToWeekendHolidayId and WeekendHolidayIdToBGType. Otherwise, Arathi Call to Arms won't work. For which repository revision was the patch created? 10380 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. Not found any. Who has been writing this patch? Please include either forum user names or email addresses. Quriq14 diff --git a/src/game/BattleGroundMgr.cpp b/src/game/BattleGroundMgr.cpp index a9d1bbd..6c98e04 100644 --- a/src/game/BattleGroundMgr.cpp +++ b/src/game/BattleGroundMgr.cpp @@ -2054,6 +2054,7 @@ HolidayIds BattleGroundMgr::BGTypeToWeekendHolidayId(BattleGroundTypeId bgTypeId case BATTLEGROUND_EY: return HOLIDAY_CALL_TO_ARMS_EY; case BATTLEGROUND_WS: return HOLIDAY_CALL_TO_ARMS_WS; case BATTLEGROUND_SA: return HOLIDAY_CALL_TO_ARMS_SA; + case BATTLEGROUND_AB: return HOLIDAY_CALL_TO_ARMS_AB; default: return HOLIDAY_NONE; } } @@ -2066,6 +2067,7 @@ BattleGroundTypeId BattleGroundMgr::WeekendHolidayIdToBGType(HolidayIds holiday) case HOLIDAY_CALL_TO_ARMS_EY: return BATTLEGROUND_EY; case HOLIDAY_CALL_TO_ARMS_WS: return BATTLEGROUND_WS; case HOLIDAY_CALL_TO_ARMS_SA: return BATTLEGROUND_SA; + case HOLIDAY_CALL_TO_ARMS_AB: return BATTLEGROUND_AB; default: return BATTLEGROUND_TYPE_NONE; } }
  5. What's the reason of this change? @@ -4257,7 +4300,7 @@ SpellCastResult Spell::CheckCast(bool strict) { // check cooldowns to prevent cheating (ignore passive spells, that client side visual only) if (m_caster->GetTypeId()==TYPEID_PLAYER && !(m_spellInfo->Attributes & SPELL_ATTR_PASSIVE) && - ((Player*)m_caster)->HasSpellCooldown(m_spellInfo->Id)) + ((Player*)m_caster)->HasSpellCooldown(m_spellInfo->Id) && !m_caster->isIgnoreUnitState(m_spellInfo)) { if(m_triggeredByAuraSpell) None of the spells with aura 262 should remove the cooldown, I think. For example, this one (Juggernaut) increases it.
  6. What bug does the patch fix? What features does the patch add? MovementInform is not always called by WaypointMovementGenerator. Vector i_hasDone is filled with "true" values but never reset to "false". - Changed the vector i_hasDone to a simple boolean value (Couldn't find a reason for the vector. Maybe performance with some compilers?). - Solved initialization issue by setting i_hasDone to "false" at every waypoint. For which repository revision was the patch created? 9891 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. Not found any. But some SD2 bugs of Nazan may depend on this. Note: most changes are caused by re-indentation. http://pastebin.com/sW0eFDzS
  7. I'll try again to explain my idea. A bug is here (MotionMaster.cpp, line 40): MotionMaster::Initialize() { // clear ALL movement generators (including default) while(!empty()) { MovementGenerator *curr = top(); pop(); curr->Finalize(*i_owner); if( !isStatic( curr ) ) delete curr; } There aren't checks about the flag MMCF_UPDATE, so the reset of MotionMaster is never delayed. Instead of "delete curr;" it should be like: if (m_cleanFlag & MMCF_UPDATE) // need delayed? { if (!m_expList) m_expList = new ExpireList(); m_expList->push_back(curr); } else delete curr;
  8. I think the cause may be some use of method MotionMaster::Initialize(), that reloads WaypointMovementGenerator. It is an unsafe function (deletes every MG without the checks of Clear() or MovementExpired()), so should be called only in safe places. This doesn't happen, for example, here or here: Map.cpp, line 1026: // teleport it to respawn point (like normal respawn if player see) if(CreatureCellRelocation(c,resp_cell)) { c->Relocate(resp_x, resp_y, resp_z, resp_o); c->GetMotionMaster()->Initialize(); // prevent possible problems with default move generators c->SetNeedNotify(); return true; } else return false; There may be other points in code.
  9. What bug does the patch fix? What features does the patch add? All EVENT_T_TIMER_OOC are wrongly reset by EnterCombat function and processed, in some cases, when the creature evades. This patch avoids this (EVENT_T_TIMER_OOC are already reset in Reset()). This will fix the Acid script for npc Balos Jacken. For which repository revision was the patch created? 9100 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. Not found any. diff --git a/src/game/CreatureEventAI.cpp b/src/game/CreatureEventAI.cpp index 62b7483..a5b98ac 100644 --- a/src/game/CreatureEventAI.cpp +++ b/src/game/CreatureEventAI.cpp @@ -927,6 +927,8 @@ void CreatureEventAI::EnterCombat(Unit *enemy) if ((*i).UpdateRepeatTimer(m_creature,event.timer.initialMin,event.timer.initialMax)) (*i).Enabled = true; break; + case EVENT_T_TIMER_OOC: + break; //All normal events need to be re-enabled and their time set to 0 default: (*i).Enabled = true;
  10. The double application of SpellPower seems strange to me, too. I made a new patch, removing that line: diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 4bc5393..32b4260 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2770,22 +2770,20 @@ void Spell::EffectHealthLeech(uint32 i) sLog.outDebug("HealthLeech :%i", damage); - float multiplier = m_spellInfo->EffectMultipleValue[i]; - - if (Player *modOwner = m_caster->GetSpellModOwner()) - modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_MULTIPLE_VALUE, multiplier); - - int32 new_damage = int32(damage*multiplier); + int32 new_damage = damage; uint32 curHealth = unitTarget->GetHealth(); new_damage = m_caster->SpellNonMeleeDamageLog(unitTarget, m_spellInfo->Id, new_damage ); if (curHealth < new_damage) new_damage = curHealth; + float multiplier = m_spellInfo->EffectMultipleValue[i]; + + if (Player *modOwner = m_caster->GetSpellModOwner()) + modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_MULTIPLE_VALUE, multiplier); + + new_damage = int32(new_damage*multiplier); if (m_caster->isAlive()) - { - new_damage = m_caster->SpellHealingBonus(m_caster, m_spellInfo, new_damage, HEAL); m_caster->DealHeal(m_caster, uint32(new_damage), m_spellInfo); - } } void Spell::DoCreateItem(uint32 i, uint32 itemtype) This patch is running on my server (500+ users) since I posted it on this forum, and no reports about the affected spells appeared on our bugtracker.
×
×
  • 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