Jump to content

Arthorius

Members
  • Posts

    10
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by Arthorius

  1. added checks for attempt to remove command|reaction buttons
  2. player can't drop action buttons from bar, only spell buttons.
  3. yes, this patch fixes this bug.
  4. Player can move spell to action slot(1-3,8-10) and action to spell slot (4-7). Therefore it is necessary to save all slots on the action bar.
  5. What bug does the patch fix? What features does the patch add? fix pet action bar saving and loading. For which repository revision was the patch created? 8967 Who has been writing this patch? Please include either forum user names or email addresses. Arthorius http://filebeam.com/e3189d1f61705b159e2f9f9ab3b66b40 diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index 1a9af67..063a00d 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -414,8 +414,7 @@ void Pet::SavePetToDB(PetSaveMode mode) << curmana << ", " << GetPower(POWER_HAPPINESS) << ", '"; - // save only spell slots from action bar - for(uint32 i = ACTION_BAR_INDEX_PET_SPELL_START; i < ACTION_BAR_INDEX_PET_SPELL_END; ++i) + for(uint32 i = ACTION_BAR_INDEX_START; i < ACTION_BAR_INDEX_END; ++i) { ss << uint32(m_charmInfo->GetActionBarEntry(i)->GetType()) << " " << uint32(m_charmInfo->GetActionBarEntry(i)->GetAction()) << " "; diff --git a/src/game/PetHandler.cpp b/src/game/PetHandler.cpp index 57b0489..4d6c2b3 100644 --- a/src/game/PetHandler.cpp +++ b/src/game/PetHandler.cpp @@ -341,6 +341,12 @@ void WorldSession::HandlePetSetAction( WorldPacket & recv_data ) if(position >= MAX_UNIT_ACTION_BAR_INDEX) return; + // in the normal case, comand and reaction buttons can only be moved, not removed + // at moving count ==2, at removing count == 1 + // ignore attempt to remove command|reaction buttons (not possible at normal case) + if((act_state == ACT_COMMAND || act_state == ACT_REACTION) && count == 1) + return; + //if it's act for spell (en/disable/cast) and there is a spell given (0 = remove spell) which pet doesn't know, don't add if(!((act_state == ACT_ENABLED || act_state == ACT_DISABLED || act_state == ACT_PASSIVE) && spell_id && !pet->HasSpell(spell_id))) { diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index b5112b6..ed15152 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -11631,12 +11631,12 @@ void CharmInfo::LoadPetActionBar(const std::string& data ) Tokens tokens = StrSplit(data, " "); - if (tokens.size() != (ACTION_BAR_INDEX_PET_SPELL_END-ACTION_BAR_INDEX_PET_SPELL_START)*2) + if (tokens.size() != (ACTION_BAR_INDEX_END-ACTION_BAR_INDEX_START)*2) return; // non critical, will reset to default int index; Tokens::iterator iter; - for(iter = tokens.begin(), index = ACTION_BAR_INDEX_PET_SPELL_START; index < ACTION_BAR_INDEX_PET_SPELL_END; ++iter, ++index ) + for(iter = tokens.begin(), index = ACTION_BAR_INDEX_START; index < ACTION_BAR_INDEX_END; ++iter, ++index ) { // use unsigned cast to avoid sign negative format use at long-> ActiveStates (int) conversion uint8 type = atol((*iter).c_str());
  6. What bug does the patch fix? What features does the patch add? Implement Call of the Elements, Call of the Ancestors, Call of the Spirits For which repository revision was the patch created? 8967 Who has been writing this patch? Please include either forum user names or email addresses. Arthorius http://filebeam.com/b07d6a41c23d318fb6b947a81c198d27 diff --git a/src/game/Player.cpp b/src/game/Player.cpp index e89b34f..5872cc6 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -5667,6 +5667,15 @@ void Player::removeActionButton(uint8 button) sLog.outDetail( "Action Button '%u' Removed from Player '%u'", button, GetGUIDLow() ); } +uint32 Player::GetActionByActionButton(uint8 button) +{ + ActionButtonList::iterator buttonItr = m_actionButtons.find(button); + if (buttonItr==m_actionButtons.end()) + return 0; + + return buttonItr->second.GetAction(); +} + bool Player::SetPosition(float x, float y, float z, float orientation, bool teleport) { // prevent crash when a bad coord is sent by the client diff --git a/src/game/Player.h b/src/game/Player.h index e1b4a27..718d497 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1657,6 +1657,7 @@ class MANGOS_DLL_SPEC Player : public Unit ActionButton* addActionButton(uint8 button, uint32 action, uint8 type); void removeActionButton(uint8 button); void SendInitialActionButtons() const; + uint32 GetActionByActionButton(uint8 button); PvPInfo pvpInfo; void UpdatePvP(bool state, bool ovrride=false); diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index 9052f38..d91af78 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -624,7 +624,7 @@ enum SpellEffects SPELL_EFFECT_SELF_RESURRECT = 94, SPELL_EFFECT_SKINNING = 95, SPELL_EFFECT_CHARGE = 96, - SPELL_EFFECT_97 = 97, + SPELL_EFFECT_SUMMON_ALL_TOTEMS = 97, SPELL_EFFECT_KNOCK_BACK = 98, SPELL_EFFECT_DISENCHANT = 99, SPELL_EFFECT_INEBRIATE = 100, diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index a130bfc..419c7b4 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -494,6 +494,10 @@ void Spell::FillTargetMap() if(IsAreaAuraEffect(m_spellInfo->Effect[i])) AddUnitTarget(m_caster, i); + // SPELL_EFFECT_SUMMON_ALL_TOTEMS not have any implicit target + if(m_spellInfo->Effect[i] == SPELL_EFFECT_SUMMON_ALL_TOTEMS) + AddUnitTarget(m_caster, i); + std::list<Unit*> tmpUnitMap; // TargetA/TargetB dependent from each other, we not switch to full support this dependences diff --git a/src/game/Spell.h b/src/game/Spell.h index 0965114..2666fd5 100644 --- a/src/game/Spell.h +++ b/src/game/Spell.h @@ -304,6 +304,7 @@ class Spell void EffectPlayerPull(uint32 i); void EffectDispelMechanic(uint32 i); void EffectSummonDeadPet(uint32 i); + void EffectSummonAllTotems(uint32 i); void EffectDestroyAllTotems(uint32 i); void EffectDurabilityDamage(uint32 i); void EffectSkill(uint32 i); diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index c899656..e79d5ab 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -154,7 +154,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]= &Spell::EffectSelfResurrect, // 94 SPELL_EFFECT_SELF_RESURRECT &Spell::EffectSkinning, // 95 SPELL_EFFECT_SKINNING &Spell::EffectCharge, // 96 SPELL_EFFECT_CHARGE - &Spell::EffectUnused, // 97 SPELL_EFFECT_97 + &Spell::EffectSummonAllTotems, // 97 SPELL_EFFECT_SUMMON_ALL_TOTEMS &Spell::EffectKnockBack, // 98 SPELL_EFFECT_KNOCK_BACK &Spell::EffectDisEnchant, // 99 SPELL_EFFECT_DISENCHANT &Spell::EffectInebriate, //100 SPELL_EFFECT_INEBRIATE @@ -6540,6 +6540,31 @@ void Spell::EffectSummonDeadPet(uint32 /*i*/) pet->SavePetToDB(PET_SAVE_AS_CURRENT); } +void Spell::EffectSummonAllTotems(uint32 i) +{ + if(m_caster->GetTypeId() != TYPEID_PLAYER) + return; + + switch(m_spellInfo->Id) + { + case 66842: // Call of the Elements + case 66843: // Call of the Ancestors + case 66844: // Call of the Spirits + { + for(int32 slot = 0; slot != MAX_TOTEM; ++slot) + { + uint8 button = m_spellInfo->EffectMiscValue[i]+slot+132; + uint32 spell_id = ((Player*)m_caster)->GetActionByActionButton(button); + if(spell_id) + m_caster->CastSpell(unitTarget,spell_id,true); + } + break; + } + default: + break; + } +} + void Spell::EffectDestroyAllTotems(uint32 /*i*/) { int32 mana = 0;
  7. What bug does the patch fix? What features does the patch add? Implement 4 pieces bonus For which SubVersion revision was the patch created? 5734 Is there a thread in the bug report section? If yes, please add a link to the thread. http://mangosproject.org/trac/ticket/3012 Who has been writing this patch? Please include either forum user names or email addresses. Arthorius Index: src/game/Unit.cpp =================================================================== --- src/game/Unit.cpp (revision 5734) +++ src/game/Unit.cpp (working copy) @@ -5050,6 +5050,14 @@ CastCustomSpell(this, 39373, &healamount, NULL, NULL, true, castItem, triggeredByAura); return; } + // Vestments of Faith (Priest Tier 3) - 4 pieces bonus + case 28809: + { + if (!pVictim || !pVictim->isAlive()) + return; + CastSpell(pVictim,28810,true,castItem,triggeredByAura,triggeredByAura->GetCasterGUID()); + return; + } } //Prayer of Mending
  8. http://www.wowwiki.com/Seal_of_Justice The Seal of Justice must stun the enemy about 4-5 times a minute. It's 2 times a minute now. UPDATE `spell_proc_event` SET `ppmRate`=5 WHERE `entry` IN (20164,31895);
×
×
  • 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