aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMihapro <miha.penger@siol.net>2013-05-10 20:39:15 +0200
committerMihapro <miha.penger@siol.net>2013-05-11 22:12:11 +0200
commit090951ba71eef0b27ff6d4c152f79c417f0ab3f0 (patch)
treed1ae739381e44fcdc6525ae8e10fb3a38e34d8f6 /src
parentf04bddcbd0cb7ca5bbef8bf7fea061c7d704a22f (diff)
Core/Players: Cast Summon Pet on first login, relocate created pets
*Casts a proper Summon Pet spell on a hunter logging in for the first time (depending on his race). *Relocates created tamed pets before they're added to map.
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp23
-rw-r--r--src/server/game/Spells/SpellEffects.cpp5
2 files changed, 28 insertions, 0 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 90b8ae93661..8ad49724b2e 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -1089,8 +1089,31 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
}
if (pCurrChar->HasAtLoginFlag(AT_LOGIN_FIRST))
+ {
pCurrChar->RemoveAtLoginFlag(AT_LOGIN_FIRST);
+ if (pCurrChar->getClass() == CLASS_HUNTER)
+ {
+ static uint32 const HunterCreatePetSpells[MAX_RACES] =
+ {
+ 0, /* None */ 79597, /* Human - Young Wolf */
+ 79598, /* Orc - Young Boar */ 79593, /* Dwarf - Young Bear */
+ 79602, /* Night Elf - Young Cat */ 79600, /* Undead - Young Widow */
+ 79603, /* Tauren - Young Tallstrider */ 0, /* Gnome */
+ 79599, /* Troll - Young Raptor */ 79595, /* Goblin - Young Crab */
+ 79594, /* Blood Elf - Young Dragonhawk */ 79601, /* Draenei - Young Moth */
+ 0, /* Fel Orc */ 0, /* Naga */
+ 0, /* Broken */ 0, /* Skeleton */
+ 0, /* Vrykul */ 0, /* Tuskarr */
+ 0, /* Forest Troll */ 0, /* Taunka */
+ 0, /* Northrend Skeleton */ 0, /* Ice Troll */
+ 79596, /* Worgen - Young Mastiff */
+ };
+
+ pCurrChar->CastSpell(pCurrChar, HunterCreatePetSpells[pCurrChar->getRace()], true);
+ }
+ }
+
// show time before shutdown if shutdown planned.
if (sWorld->IsShuttingDown())
sWorld->ShutdownMsg(true, pCurrChar);
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index b62dc1c62ab..0266b98ecfb 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -5460,6 +5460,11 @@ void Spell::EffectCreateTamedPet(SpellEffIndex effIndex)
if (!pet)
return;
+ // relocate
+ float px, py, pz;
+ unitTarget->GetClosePoint(px, py, pz, pet->GetObjectSize(), PET_FOLLOW_DIST, pet->GetFollowAngle());
+ pet->Relocate(px, py, pz, unitTarget->GetOrientation());
+
// add to world
pet->GetMap()->AddToMap(pet->ToCreature());