diff options
Diffstat (limited to 'src/server/scripts/Commands')
| -rw-r--r-- | src/server/scripts/Commands/cs_pet.cpp | 35 |
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(); |
