lavinelu
-
Posts
15 -
Joined
-
Last visited
Never -
Donations
0.00 GBP
Content Type
Profiles
Bug Tracker
Wiki
Release Notes
Forums
Downloads
Blogs
Events
Posts posted by lavinelu
-
-
Restores 2700 to 4500 health. Increased effect for engineers!
What bug does the patch fix? What features does the patch add?
Increased effect for engineers! with 25%
For which repository revision was the patch created?
10401
Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread.
No
Who has been writing this patch? Please include either forum user names or email addresses.
me
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 99e74fe..470f309 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -3352,6 +3352,13 @@ void Spell::EffectHeal(SpellEffectIndex /*eff_idx*/) addhealth += tickheal * tickcount; } + // Runic Healing Injector + else if (m_spellInfo->Id == 67489 && unitTarget->GetTypeId() == TYPEID_PLAYER) + { + Player* player = (Player*)unitTarget; + if (player->HasSkill(SKILL_ENGINERING)) + addhealth *= 1.25; + } // Chain Healing if (m_spellInfo->SpellFamilyName == SPELLFAMILY_SHAMAN && m_spellInfo->SpellFamilyFlags & UI64LIT(0x0000000000000100))
-
Why not?
I really don't it's the task of this function to decide whether auras stack or not.
Basically, this is a very low-level function, and using it directly should be avoided wherever possible. And there's infact only two places outside AddSpellAuraHolder() where it is used, the one just fixed, and Creature::LoadCreaturesAddon() which might need the same fix actually...
thanks for answer, i asked because i put this modification on server and now uptime is 16h, didn't crashed since then and before every 1 - 2 hours was a crash.
-
For the freeze with Desecration + Shapeshift, this is definitely the place where it goes wrong yes.
It has nothing to do with AuraHolder functions going wrong, problem is that multiple DynamicObjects from different effects of same spell have to share SpellAuraHolder in current code design, so this manual fiddling is necessary for now.
You cannot just delete the whole holder, because if spell have more than one effect, second effect will erase first effect etc...
Fix for this specific problem added in [10335]
Lunx3d, here target->AddAuraToModList(Aur); it's ok to have same aura added 2 times or more?
if not can something go wrong if i modify it like this?
@@ -4116,11 +4116,22 @@ bool Unit::AddSpellAuraHolder(SpellAuraHolder *holder) } void Unit::AddAuraToModList(Aura *aura) { if (aura->GetModifier()->m_auraname < TOTAL_AURAS) + { + AuraList::const_iterator iter; + for (iter = m_modAuras[aura->GetModifier()->m_auraname].begin(); iter != m_modAuras[aura->GetModifier()->m_auraname].end(); ++iter) + { + if (aura->GetId() == (*iter)->GetId()) + { + m_modAuras[aura->GetModifier()->m_auraname].remove((*iter)); + break; + } + } m_modAuras[aura->GetModifier()->m_auraname].push_back(aura); + } }
-
i did it in this way but i dont know how the spell system is working and maybe will broke other spells
i think the same spell should not be added 2 times here target->AddAuraToModList(Aur);
@@ -4116,11 +4116,22 @@ bool Unit::AddSpellAuraHolder(SpellAuraHolder *holder) } void Unit::AddAuraToModList(Aura *aura) { if (aura->GetModifier()->m_auraname < TOTAL_AURAS) + { + AuraList::const_iterator iter; + for (iter = m_modAuras[aura->GetModifier()->m_auraname].begin(); iter != m_modAuras[aura->GetModifier()->m_auraname].end(); ++iter) + { + if (aura->GetId() == (*iter)->GetId()) + { + m_modAuras[aura->GetModifier()->m_auraname].remove((*iter)); + break; + } + } m_modAuras[aura->GetModifier()->m_auraname].push_back(aura); + } }
-
lavinelu > I think it's not removed from slowingAuras
it's not removed but it should be removed when you call this function target->RemoveAurasDueToSpellByCancel(aurSpellInfo->Id);
-
i think that when aura is removed it should be remove form slowingAuras list too because this is a pointer or maybe i am wrong
-
- Unit::AuraList const& slowingAuras = target->GetAurasByType(SPELL_AURA_MOD_DECREASE_SPEED); - for (Unit::AuraList::const_iterator iter = slowingAuras.begin(); iter != slowingAuras.end() + for (Unit::AuraList::const_iterator iter = target->GetAurasByType(SPELL_AURA_MOD_DECREASE_SPEED).begin(); iter != target->GetAurasByType(SPELL_AURA_MOD_DECREASE_SPEED).end() { SpellEntry const* aurSpellInfo = (*iter)->GetSpellProto(); uint32 aurMechMask = GetAllSpellMechanicMask(aurSpellInfo); // If spell that caused this aura has Croud Control or Daze effect if((aurMechMask & MECHANIC_NOT_REMOVED_BY_SHAPESHIFT) || // some Daze spells have these parameters instead of MECHANIC_DAZE (skip snare spells) aurSpellInfo->SpellIconID == 15 && aurSpellInfo->Dispel == 0 && (aurMechMask & (1 << (MECHANIC_SNARE-1)))==0) { ++iter; continue; } // All OK, remove aura now target->RemoveAurasDueToSpellByCancel(aurSpellInfo->Id); - iter = slowingAuras.begin(); + iter = target->GetAurasByType(SPELL_AURA_MOD_DECREASE_SPEED).begin(); }
Maybe?
should be checked why this aura is not removed, this code is ok how it is right now.
-
I was refering to the previsious crash, that you fixed in 10319.
For this 2 crashes, here is the reproduction method.
How to reproduce:
1. Create a level 80 NE Druid.
2. Create a level 80 NE DK.
3. Cast .learn all_myclass (with the DK)
4. Cast .max skill (with the DK)
5. /duel and accept between the 2 characters
6. add any weapon on the DK and cast Plague Strike (do not use .cast, cast it as if you were playing)
7. Blood Plague and Desecration will proc
8. Shapeshift into Cat Form (Druid) when desecration has 1 sec before expire
9. Make sure blood plague will expire AFTER desecration.
Crashes 100% on x64. With x32 i tryed for hours and can't understand why it didn't crash. Preutty wird.
here is the problem
for (Unit::AuraList::const_iterator iter = slowingAuras.begin(); iter != slowingAuras.end() { SpellEntry const* aurSpellInfo = (*iter)->GetSpellProto(); uint32 aurMechMask = GetAllSpellMechanicMask(aurSpellInfo); // If spell that caused this aura has Croud Control or Daze effect if((aurMechMask & MECHANIC_NOT_REMOVED_BY_SHAPESHIFT) || // some Daze spells have these parameters instead of MECHANIC_DAZE (skip snare spells) aurSpellInfo->SpellIconID == 15 && aurSpellInfo->Dispel == 0 && (aurMechMask & (1 << (MECHANIC_SNARE-1)))==0) { ++iter; continue; } // All OK, remove aura now target->RemoveAurasDueToSpellByCancel(aurSpellInfo->Id); iter = slowingAuras.begin(); }
its an infinite loop because
target->RemoveAurasDueToSpellByCancel(aurSpellInfo->Id);
is not removing aura i think
-
When you try to loot the gameobject it says "YOU CAN'T OPEN THAT"
if i remove this line
pGameObj->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel() );
it will work but i don't know if this is the right way to fix it thats why i post it on bug reports section
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 5ccab32..6c922a1 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -954,7 +954,6 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx) pGameObj->SetRespawnTime(creatureTarget->GetRespawnTime()-time(NULL)); pGameObj->SetOwnerGUID(m_caster->GetGUID() ); - pGameObj->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel() ); pGameObj->SetSpellId(m_spellInfo->Id); creatureTarget->ForcedDespawn();
-
at least can someone tell me if this crash dump is how it should be?
-
hi,
i just installed dbg and i have a crash really often and i don't know where can be the problem or even if this crash dump is how it should be . If someone can help me i will appreciate it. i have patches from insider42 repo.
thank you
-
GUID in SQL-query not right:
when deleting character by metod=1;
guid always = 0;
in windows only
-
for me
if(GetAllSpellMechanicMask(m_spellProto) & (1 << MECHANIC_BLEED))
didn't worked.
function GetAllSpellMechanicMask is:
inline uint32 GetAllSpellMechanicMask(SpellEntry const* spellInfo)
{
uint32 mask = 0;
if (spellInfo->Mechanic)
mask |= 1 << (spellInfo->Mechanic - 1);
for (int i=0; i< 3; ++i)
if (spellInfo->EffectMechanic)
mask |= 1 << (spellInfo->EffectMechanic-1);
return mask;
}
so i used if(GetAllSpellMechanicMask(m_spellProto) & (1 << (MECHANIC_BLEED - 1)))
it's ok like this?
-
it's ok if i use it like this? i'm begginer with mangos that i ask
+ // Mechanic bleed aura state
+ if(GetAllSpellMechanicMask(m_spellProto) & (1 << MECHANIC_BLEED))
+ m_target->ModifyAuraState(AURA_STATE_MECHANIC_BLEED, true);
// Mechanic bleed aura state
if (m_spellProto->Mechanic == MECHANIC_BLEED)
m_target->ModifyAuraState(AURA_STATE_MECHANIC_BLEED, true);
[BUG] Battle elixir removing Guardian elixir
in OldBug reports
Posted
For example, consuming the normal guardian elixir 'Elixir of Mighty Fortitude' (http://www.wowhead.com/item=40078) removes the battle elixir 'Elixir of Mighty Strength' (http://www.wowhead.com/item=40073) and vice-versa.
i think the problem is from this function IsNoStackAuraDueToAura and should be something like this