3921 | | if(m_caster->getClass() == CLASS_HUNTER) |
3922 | | { |
3923 | | // cast finish successfully |
3924 | | //SendChannelUpdate(0); |
3925 | | finish(); |
3926 | | |
3927 | | Pet* pet = new Pet(HUNTER_PET); |
3928 | | |
3929 | | if(!pet->CreateBaseAtCreature(creatureTarget)) |
3930 | | { |
3931 | | delete pet; |
3932 | | return; |
3933 | | } |
3934 | | |
3935 | | creatureTarget->setDeathState(JUST_DIED); |
3936 | | creatureTarget->RemoveCorpse(); |
3937 | | creatureTarget->SetHealth(0); // just for nice GM-mode view |
3938 | | |
3939 | | pet->SetUInt64Value(UNIT_FIELD_SUMMONEDBY, m_caster->GetGUID()); |
3940 | | pet->SetUInt64Value(UNIT_FIELD_CREATEDBY, m_caster->GetGUID()); |
3941 | | pet->SetUInt32Value(UNIT_FIELD_FACTIONTEMPLATE,m_caster->getFaction()); |
3942 | | pet->SetUInt32Value(UNIT_CREATED_BY_SPELL, m_spellInfo->Id); |
3943 | | |
3944 | | if(!pet->InitStatsForLevel(creatureTarget->getLevel())) |
3945 | | { |
3946 | | sLog.outError("ERROR: InitStatsForLevel() in EffectTameCreature failed! Pet deleted."); |
3947 | | delete pet; |
3948 | | return; |
3949 | | } |
3950 | | |
3951 | | // prepare visual effect for levelup |
3952 | | pet->SetUInt32Value(UNIT_FIELD_LEVEL,creatureTarget->getLevel()-1); |
3953 | | |
3954 | | pet->GetCharmInfo()->SetPetNumber(objmgr.GeneratePetNumber(), true); |
3955 | | // this enables pet details window (Shift+P) |
3956 | | pet->AIM_Initialize(); |
3957 | | pet->InitPetCreateSpells(); |
3958 | | pet->SetHealth(pet->GetMaxHealth()); |
3959 | | |
3960 | | MapManager::Instance().GetMap(pet->GetMapId(), pet)->Add((Creature*)pet); |
3961 | | |
3962 | | // visual effect for levelup |
3963 | | pet->SetUInt32Value(UNIT_FIELD_LEVEL,creatureTarget->getLevel()); |
3964 | | |
3965 | | if(m_caster->GetTypeId() == TYPEID_PLAYER) |
3966 | | { |
3967 | | m_caster->SetPet(pet); |
3968 | | pet->SavePetToDB(PET_SAVE_AS_CURRENT); |
3969 | | ((Player*)m_caster)->PetSpellInitialize(); |
3970 | | } |
| 3921 | if(m_caster->getClass() != CLASS_HUNTER) |
| 3922 | return; |
| 3923 | |
| 3924 | // cast finish successfully |
| 3925 | //SendChannelUpdate(0); |
| 3926 | finish(); |
| 3927 | |
| 3928 | Pet* pet = m_caster->CreateTamedPetFrom(creatureTarget,m_spellInfo->Id); |
| 3929 | |
| 3930 | // kill original creature |
| 3931 | creatureTarget->setDeathState(JUST_DIED); |
| 3932 | creatureTarget->RemoveCorpse(); |
| 3933 | creatureTarget->SetHealth(0); // just for nice GM-mode view |
| 3934 | |
| 3935 | // prepare visual effect for levelup |
| 3936 | pet->SetUInt32Value(UNIT_FIELD_LEVEL,creatureTarget->getLevel()-1); |
| 3937 | |
| 3938 | // add to world |
| 3939 | MapManager::Instance().GetMap(pet->GetMapId(), pet)->Add((Creature*)pet); |
| 3940 | |
| 3941 | // visual effect for levelup |
| 3942 | pet->SetUInt32Value(UNIT_FIELD_LEVEL,creatureTarget->getLevel()); |
| 3943 | |
| 3944 | // caster have pet now |
| 3945 | m_caster->SetPet(pet); |
| 3946 | |
| 3947 | if(m_caster->GetTypeId() == TYPEID_PLAYER) |
| 3948 | { |
| 3949 | pet->SavePetToDB(PET_SAVE_AS_CURRENT); |
| 3950 | ((Player*)m_caster)->PetSpellInitialize(); |