По информации с офа, когда охотник переключает специализацию, его пет должен убираться с возможностью призыва, а у других классов петы просто удаляются:
Код:
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 80af040..5c98cd3 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -21960,16 +21960,24 @@ void Player::UpdateFallInformationIfNeed( MovementInfo const& minfo,uint16 opcod
SetFallInformation(minfo.GetFallTime(), minfo.GetPos()->z);
}
-void Player::UnsummonPetTemporaryIfAny()
+void Player::UnsummonPetTemporaryIfAny(PetSaveMode mode)
{
Pet* pet = GetPet();
- if(!pet)
+ if (!pet)
return;
- if(!m_temporaryUnsummonedPetNumber && pet->isControlled() && !pet->isTemporarySummoned() )
- m_temporaryUnsummonedPetNumber = pet->GetCharmInfo()->GetPetNumber();
+ switch (mode)
+ {
+ case PET_SAVE_AS_DELETED:
+ m_temporaryUnsummonedPetNumber = 0;
+ break;
+ case PET_SAVE_AS_CURRENT:
+ if (!m_temporaryUnsummonedPetNumber && pet->isControlled() && !pet->isTemporarySummoned() )
+ m_temporaryUnsummonedPetNumber = pet->GetCharmInfo()->GetPetNumber();
- pet->Unsummon(PET_SAVE_AS_CURRENT, this);
+ break;
+ }
+ pet->Unsummon(mode, this);
}
void Player::ResummonPetTemporaryUnSummonedIfAny()
@@ -22332,7 +22340,11 @@ void Player::ActivateSpec(uint8 specNum)
if(specNum >= GetSpecsCount())
return;
- UnsummonPetTemporaryIfAny();
+ PetSaveMode mode = PET_SAVE_AS_DELETED;
+ if (getClass() == CLASS_HUNTER)
+ mode = PET_SAVE_AS_CURRENT;
+
+ UnsummonPetTemporaryIfAny(mode);
// prevent deletion of action buttons by client at spell unlearn or by player while spec change in progress
SendLockActionButtons();
@@ -22437,8 +22449,6 @@ void Player::ActivateSpec(uint8 specNum)
++itr;
}
- ResummonPetTemporaryUnSummonedIfAny();
-
ApplyGlyphs(true);
SendInitialActionButtons();
diff --git a/src/game/Player.h b/src/game/Player.h
index 0ca7ba2..719f17d 100644
--- a/src/game/Player.h
+++ b/src/game/Player.h
@@ -2313,7 +2313,7 @@ class MANGOS_DLL_SPEC Player : public Unit
// Temporarily removed pet cache
uint32 GetTemporaryUnsummonedPetNumber() const { return m_temporaryUnsummonedPetNumber; }
void SetTemporaryUnsummonedPetNumber(uint32 petnumber) { m_temporaryUnsummonedPetNumber = petnumber; }
- void UnsummonPetTemporaryIfAny();
+ void UnsummonPetTemporaryIfAny(PetSaveMode mode = PET_SAVE_AS_CURRENT);
void ResummonPetTemporaryUnSummonedIfAny();
bool IsPetNeedBeTemporaryUnsummoned() const { return !IsInWorld() || !isAlive() || IsMounted() /*+in flight*/; }
Также есть информация, что у пета охотника сбрасываются очки талантов, только я не пойму, в чем прикол каждый раз при переключении специализации перераспределять заново таланты пета, если только прогонять его перед этим.
Этот момент пока не стал делать до получения более подробной информации.
У кого какая есть информация по данной теме?
Какие будут замечания и предложения?