aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts/Commands')
-rw-r--r--src/server/scripts/Commands/cs_pet.cpp35
1 files changed, 10 insertions, 25 deletions
diff --git a/src/server/scripts/Commands/cs_pet.cpp b/src/server/scripts/Commands/cs_pet.cpp
index c1fae85621b..417eaebfffa 100644
--- a/src/server/scripts/Commands/cs_pet.cpp
+++ b/src/server/scripts/Commands/cs_pet.cpp
@@ -91,42 +91,27 @@ public:
}
// Everything looks OK, create new pet
- Pet* pet = new Pet(player, HUNTER_PET);
- if (!pet->CreateBaseAtCreature(creatureTarget))
- {
- delete pet;
- handler->PSendSysMessage("Error 1");
- return false;
- }
+ Pet* pet = player->CreateTamedPetFrom(creatureTarget);
+ // "kill" original creature
creatureTarget->DespawnOrUnsummon();
- creatureTarget->SetHealth(0); // just for nice GM-mode view
- pet->SetGuidValue(UNIT_FIELD_CREATEDBY, player->GetGUID());
- pet->SetFaction(player->GetFaction());
-
- if (!pet->InitStatsForLevel(creatureTarget->GetLevel()))
- {
- TC_LOG_ERROR("misc", "InitStatsForLevel() in EffectTameCreature failed! Pet deleted.");
- handler->PSendSysMessage("Error 2");
- delete pet;
- return false;
- }
+ uint8 level = (creatureTarget->GetLevel() < (player->GetLevel() - 5)) ? (player->GetLevel() - 5) : player->GetLevel();
// prepare visual effect for levelup
- pet->SetUInt32Value(UNIT_FIELD_LEVEL, creatureTarget->GetLevel()-1);
-
- pet->GetCharmInfo()->SetPetNumber(sObjectMgr->GeneratePetNumber(), true);
- // this enables pet details window (Shift+P)
- pet->InitPetCreateSpells();
- pet->SetFullHealth();
+ pet->SetUInt32Value(UNIT_FIELD_LEVEL, level - 1);
+ // add to world
pet->GetMap()->AddToMap(pet->ToCreature());
// visual effect for levelup
- pet->SetUInt32Value(UNIT_FIELD_LEVEL, creatureTarget->GetLevel());
+ pet->SetUInt32Value(UNIT_FIELD_LEVEL, level);
+ // caster have pet now
player->SetMinion(pet, true);
+
+ pet->InitTalentForLevel();
+
pet->SavePetToDB(PET_SAVE_AS_CURRENT);
player->PetSpellInitialize();