mirror of
https://github.com/mangosfour/server.git
synced 2026-01-01 07:37:07 +00:00
[9354] Add spell efffects for dual spec.
Actual dual spec still not implemented. Credits to EnderGT for original patch. Signed-off-by: hunuza <hunuza@gmail.com>
This commit is contained in:
parent
0bd88dd55a
commit
0f7f7c5ada
9 changed files with 62 additions and 15 deletions
|
|
@ -5634,7 +5634,7 @@ void Player::SendInitialActionButtons() const
|
|||
sLog.outDetail( "Initializing Action Buttons for '%u'", GetGUIDLow() );
|
||||
|
||||
WorldPacket data(SMSG_ACTION_BUTTONS, 1+(MAX_ACTION_BUTTONS*4));
|
||||
data << uint8(0); // can be 0, 1, 2 (talent spec)
|
||||
data << uint8(1); // can be 0, 1, 2 (talent spec)
|
||||
ActionButtonList const& currentActionButtonList = m_actionButtons[m_activeSpec];
|
||||
for(int button = 0; button < MAX_ACTION_BUTTONS; ++button)
|
||||
{
|
||||
|
|
@ -21315,12 +21315,34 @@ void Player::DeleteEquipmentSet(uint64 setGuid)
|
|||
}
|
||||
}
|
||||
|
||||
void Player::ActivateSpec(uint32 specNum)
|
||||
void Player::ActivateSpec(uint8 specNum)
|
||||
{
|
||||
if(GetActiveSpec() == specNum)
|
||||
return;
|
||||
|
||||
resetTalents(true);
|
||||
|
||||
SetActiveSpec(specNum);
|
||||
|
||||
SendInitialActionButtons();
|
||||
|
||||
InitTalentForLevel();
|
||||
}
|
||||
|
||||
void Player::UpdateSpecCount(uint8 count)
|
||||
{
|
||||
uint8 curCount = GetSpecsCount();
|
||||
if(curCount == count)
|
||||
return;
|
||||
|
||||
if(count > curCount)
|
||||
{
|
||||
//TODO: copy current action button set
|
||||
}
|
||||
|
||||
SetSpecsCount(count);
|
||||
|
||||
SendTalentsInfoData(false);
|
||||
}
|
||||
|
||||
void Player::RemoveAtLoginFlag( AtLoginFlags f, bool in_db_also /*= false*/ )
|
||||
|
|
|
|||
|
|
@ -1532,11 +1532,12 @@ class MANGOS_DLL_SPEC Player : public Unit
|
|||
uint32 CalculateTalentsPoints() const;
|
||||
|
||||
// Dual Spec
|
||||
uint32 GetActiveSpec() { return m_activeSpec; }
|
||||
void SetActiveSpec(uint32 spec) { m_activeSpec = spec; }
|
||||
uint32 GetSpecsCount() { return m_specsCount; }
|
||||
void SetSpecsCount(uint32 count) { m_specsCount = count; }
|
||||
void ActivateSpec(uint32 specNum);
|
||||
uint8 GetActiveSpec() { return m_activeSpec; }
|
||||
void SetActiveSpec(uint8 spec) { m_activeSpec = spec; }
|
||||
uint8 GetSpecsCount() { return m_specsCount; }
|
||||
void SetSpecsCount(uint8 count) { m_specsCount = count; }
|
||||
void ActivateSpec(uint8 specNum);
|
||||
void UpdateSpecCount(uint8 count);
|
||||
|
||||
void InitGlyphsForLevel();
|
||||
void SetGlyphSlot(uint8 slot, uint32 slottype) { SetUInt32Value(PLAYER_FIELD_GLYPH_SLOTS_1 + slot, slottype); }
|
||||
|
|
@ -2357,8 +2358,8 @@ class MANGOS_DLL_SPEC Player : public Unit
|
|||
SpellCooldowns m_spellCooldowns;
|
||||
uint32 m_lastPotionId; // last used health/mana potion in combat, that block next potion use
|
||||
|
||||
uint32 m_activeSpec;
|
||||
uint32 m_specsCount;
|
||||
uint8 m_activeSpec;
|
||||
uint8 m_specsCount;
|
||||
|
||||
ActionButtonList m_actionButtons[MAX_TALENT_SPEC_COUNT];
|
||||
|
||||
|
|
|
|||
|
|
@ -328,6 +328,8 @@ class Spell
|
|||
void EffectTitanGrip(uint32 i);
|
||||
void EffectEnchantItemPrismatic(uint32 i);
|
||||
void EffectPlayMusic(uint32 i);
|
||||
void EffectSpecCount(uint32 i);
|
||||
void EffectActivateSpec(uint32 i);
|
||||
|
||||
Spell( Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID = 0, Spell** triggeringContainer = NULL );
|
||||
~Spell();
|
||||
|
|
|
|||
|
|
@ -218,8 +218,8 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
|
|||
&Spell::EffectMilling, //158 SPELL_EFFECT_MILLING milling
|
||||
&Spell::EffectRenamePet, //159 SPELL_EFFECT_ALLOW_RENAME_PET allow rename pet once again
|
||||
&Spell::EffectNULL, //160 SPELL_EFFECT_160 unused
|
||||
&Spell::EffectNULL, //161 SPELL_EFFECT_TALENT_SPEC_COUNT second talent spec (learn/revert)
|
||||
&Spell::EffectNULL, //162 SPELL_EFFECT_TALENT_SPEC_SELECT activate primary/secondary spec
|
||||
&Spell::EffectSpecCount, //161 SPELL_EFFECT_TALENT_SPEC_COUNT second talent spec (learn/revert)
|
||||
&Spell::EffectActivateSpec, //162 SPELL_EFFECT_TALENT_SPEC_SELECT activate primary/secondary spec
|
||||
};
|
||||
|
||||
void Spell::EffectNULL(uint32 /*i*/)
|
||||
|
|
@ -6996,3 +6996,20 @@ void Spell::EffectPlayMusic(uint32 i)
|
|||
data << uint32(soundid);
|
||||
((Player*)unitTarget)->GetSession()->SendPacket(&data);
|
||||
}
|
||||
|
||||
void Spell::EffectSpecCount(uint32 /*eff_idx*/)
|
||||
{
|
||||
if(!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
|
||||
((Player*)unitTarget)->UpdateSpecCount(damage);
|
||||
}
|
||||
|
||||
void Spell::EffectActivateSpec(uint32 /*eff_idx*/)
|
||||
{
|
||||
if(!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
|
||||
// damage = spec + 1
|
||||
((Player*)unitTarget)->ActivateSpec(damage-1);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue