Jump to content

FH3095

Members
  • Posts

    6
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by FH3095

  1. Fix: The client crashes when summoning a warlock-pet for the first time. That happens because Spell::EffectSummonPet doesn't set the class-byte for the pet. Repository: Rev 1153 Authors: Me From 50203cb1a0797d362cd7a9658fc12359e81ccbe0 Mon Sep 17 00:00:00 2001 From: FH <[email protected]> Date: Thu, 28 Apr 2011 16:12:02 +0200 Subject: [PATCH] Fix client-crash while summoning warlock-pet first-time --- src/game/SpellEffects.cpp | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 79590ab..45bcb6e 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -4045,6 +4045,7 @@ void Spell::EffectSummonPet(SpellEffectIndex eff_idx) NewSummon->SetUInt32Value(UNIT_FIELD_PETEXPERIENCE, 0); NewSummon->SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, 1000); NewSummon->SetUInt32Value(UNIT_CREATED_BY_SPELL, m_spellInfo->Id); + NewSummon->SetByteValue(UNIT_FIELD_BYTES_0, 1, CLASS_MAGE); NewSummon->UpdateWalkMode(m_caster); -- 1.7.3.1.msysgit.0
  2. Fix: Lightwell doesn't spawn the gameobject. The reason: The TargetA1 and TargetB1 cause the Spell to search for a gameobject around the selected target. But for successfully finding a gameobject around the target, the spell at least needs to spawn a temporary gameobject and add appropriate information to spell_script_target. Since every targetList is empty, and Spell::HandleEffects is only called when a) There is a Item, Creature or Gameobject in on of the targetLists b) the SpellEffect is SPELL_EFFECT_SEND_EVENT or SPELL_EFFECT_PERSISTENT_AREA_AURA Spell::HandleEffects is never called because Lightwell uses SPELL_EFFECT_TRANS_DOOR. To fix this we could handle SPELL_EFFECT_TRANS_DOOR like SPELL_EFFECT_SEND_EVENT. This isn't the best way to fix that, but it is the only one I could imagine. Revision: s0906 Author: Me From 5aad07c6b3d807560bb532cd56b69e563a112abe Mon Sep 17 00:00:00 2001 From: FH <[email protected]> Date: Fri, 4 Mar 2011 21:24:20 +0100 Subject: [PATCH] Fix lightwell by calling Spell::HandleEffects(0,0,0,...) when Effect==SPELL_EFFECT_TRANS_DOOR and !HaveTargetsForEffect --- src/game/Spell.cpp | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 877194d..ded9c46 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2824,8 +2824,10 @@ void Spell::_handle_immediate_phase() if(m_spellInfo->Effect[j] == 0) continue; - // apply Send Event effect to ground in case empty target lists - if( m_spellInfo->Effect[j] == SPELL_EFFECT_SEND_EVENT && !HaveTargetsForEffect(SpellEffectIndex(j)) ) + // apply Send Event and spawn gameobject effect to ground in case empty target lists + if ((m_spellInfo->Effect[j] == SPELL_EFFECT_SEND_EVENT || + m_spellInfo->Effect[j] == SPELL_EFFECT_TRANS_DOOR) && + !HaveTargetsForEffect(SpellEffectIndex(j))) { HandleEffects(NULL, NULL, NULL, SpellEffectIndex(j)); continue; -- 1.7.3.1.msysgit.0
  3. Fix: Currently Shadow Word: Death deals the damage to the caster every time. It should deal that damage only, when the victim doesn't die. The code to do this is all ok, we only miss a sql-row so that the aura, that is applied to the caster, is triggered which removes the aura from the caster when the victim dies. Repository: Commit d20d45889447c0a5d056 (Revision s0906). Authors: Me DELETE FROM `spell_proc_event` WHERE `entry`=32409; INSERT INTO `spell_proc_event` (`entry`,`procFlags`) VALUES ('32409', '2');
  4. Fix: Fixes the mage-talent Improved Scorch, which wasn't applied to Scorch because SpellMgr::GetSpellAffectMask didn't care about the EffectItemType (which was used as the lower part of spellAffectMask back in 2.4). Repository: Created for commit 5035e0f86090069df1fa (Revision 0901). Authors: Me, after some help and clarification by VladimirMangos. From dd3d7ae2b210dd4f8c673da77f8292a78108e886 Mon Sep 17 00:00:00 2001 From: FH <[email protected]> Date: Thu, 3 Mar 2011 16:50:56 +0100 Subject: [PATCH] Fixed Improved Scorch by using EffectItemType in GetSpellAffectMask --- src/game/Player.cpp | 4 ---- src/game/SpellMgr.cpp | 4 ++-- src/game/SpellMgr.h | 5 +++++ 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 077511c..715df38 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -256,15 +256,11 @@ std::ostringstream& operator<< (std::ostringstream& ss, PlayerTaxi const& taxi) SpellModifier::SpellModifier( SpellModOp _op, SpellModType _type, int32 _value, SpellEntry const* spellEntry, SpellEffectIndex eff, int16 _charges /*= 0*/ ) : op(_op), type(_type), charges(_charges), value(_value), spellId(spellEntry->Id), lastAffected(NULL) { mask = sSpellMgr.GetSpellAffectMask(spellEntry->Id, eff); - if (!mask) - mask = spellEntry->EffectItemType[eff]; } SpellModifier::SpellModifier( SpellModOp _op, SpellModType _type, int32 _value, Aura const* aura, int16 _charges /*= 0*/ ) : op(_op), type(_type), charges(_charges), value(_value), spellId(aura->GetId()), lastAffected(NULL) { mask = sSpellMgr.GetSpellAffectMask(aura->GetId(), aura->GetEffIndex()); - if (!mask) - mask = aura->GetSpellProto()->EffectItemType[aura->GetEffIndex()]; } bool SpellModifier::isAffectedOnSpell( SpellEntry const *spell ) const diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index f65ac3c..da3f317 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -945,14 +945,14 @@ void SpellMgr::LoadSpellAffects() // Spell.dbc have own data for low part of SpellFamilyMask if (spellInfo->EffectItemType[effectId]) { - if (spellInfo->EffectItemType[effectId] == spellAffectMask) + if (static_cast<uint64>(spellInfo->EffectItemType[effectId]) == spellAffectMask) { sLog.outErrorDb("Spell %u listed in `spell_affect` have redundant (same with EffectItemType%d) data for effect index (%u) and not needed, skipped.", entry,effectId+1,effectId); continue; } // 24429 have wrong data in EffectItemType and overwrites by DB, possible bug in client - if (spellInfo->Id!=24429 && spellInfo->EffectItemType[effectId] != spellAffectMask) + if (spellInfo->Id!=24429 && spellInfo->EffectItemType[effectId] != static_cast<uint32>(spellAffectMask)) { sLog.outErrorDb("Spell %u listed in `spell_affect` have different low part from EffectItemType%d for effect index (%u) and not needed, skipped.", entry,effectId+1,effectId); continue; diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index 854cf69..f017bbe 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -757,6 +757,11 @@ class SpellMgr SpellAffectMap::const_iterator itr = mSpellAffectMap.find((spellId<<8) + effectId); if( itr != mSpellAffectMap.end( ) ) return itr->second; + SpellEntry const* spellEntry=sSpellStore.LookupEntry(spellId); + if (spellEntry) + { + return spellEntry->EffectItemType[effectId]; + } return 0; } -- 1.7.3.1.msysgit.0
  5. Nice work! While reading this post, I get some new ideas for my anticheat. Thanks for that. The water breathing was done by sending packets with more than the normal size, so mangos become confused. This is already fixed, as far as I know. Greetings FH
×
×
  • 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