- diff --git a/src/game/ScriptMgr.cpp b/src/game/ScriptMgr.cpp
- index d0f2b67..8af181f 100644
- --- a/src/game/ScriptMgr.cpp
- +++ b/src/game/ScriptMgr.cpp
- @@ -727,6 +727,7 @@ void ScriptMgr::LoadScripts(ScriptMapMapName& scripts, const char* tablename)
- }
- case SCRIPT_COMMAND_SET_FLY: // 39
- case SCRIPT_COMMAND_DESPAWN_GO: // 40
- + case SCRIPT_COMMAND_RESPAWN_SELF: // 41
- break;
- default:
- {
- @@ -1023,7 +1024,7 @@ bool ScriptAction::GetScriptProcessTargets(WorldObject* pOrigSource, WorldObject
- {
- Creature* pCreatureBuddy = NULL;
- - MaNGOS::NearestCreatureEntryWithLiveStateInObjectRangeCheck u_check(*pSearcher, m_script->buddyEntry, true, false, m_script->searchRadiusOrGuid, true);
- + MaNGOS::NearestCreatureEntryWithLiveStateInObjectRangeCheck u_check(*pSearcher, m_script->buddyEntry, m_script->data_flags & SCRIPT_FLAG_BUDDY_IS_DEAD ? false : true, m_script->data_flags & SCRIPT_FLAG_BUDDY_IS_DEAD ? true : false, m_script->searchRadiusOrGuid, true);
- MaNGOS::CreatureLastSearcher<MaNGOS::NearestCreatureEntryWithLiveStateInObjectRangeCheck> searcher(pCreatureBuddy, u_check);
- if (m_script->data_flags & SCRIPT_FLAG_BUDDY_IS_PET)
- @@ -1986,6 +1987,14 @@ bool ScriptAction::HandleScriptStep()
- ((GameObject*)pTarget)->SetLootState(GO_JUST_DEACTIVATED);
- break;
- }
- + case SCRIPT_COMMAND_RESPAWN_SELF: // 41
- + {
- + if (LogIfNotCreature(pTarget))
- + break;
- +
- + ((Creature*)pTarget)->Respawn();
- + break;
- + }
- default:
- sLog.outErrorDb(" DB-SCRIPTS: Process table `%s` id %u, command %u unknown command used.", m_table, m_script->id, m_script->command);
- break;
- diff --git a/src/game/ScriptMgr.h b/src/game/ScriptMgr.h
- index ef89c4f..3ec177b 100644
- --- a/src/game/ScriptMgr.h
- +++ b/src/game/ScriptMgr.h
- @@ -121,6 +121,7 @@ enum ScriptCommand // resSource, resTar
- // datalong = bool 0=off, 1=on
- // data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL set/unset byte flag UNIT_BYTE1_FLAG_FLY_ANIM
- SCRIPT_COMMAND_DESPAWN_GO = 40, // resTarget = GameObject
- + SCRIPT_COMMAND_RESPAWN_SELF = 41, // resSource = Creature
- };
- #define MAX_TEXT_ID 4 // used for SCRIPT_COMMAND_TALK, SCRIPT_COMMAND_EMOTE, SCRIPT_COMMAND_CAST_SPELL, SCRIPT_COMMAND_TERMINATE_SCRIPT
- @@ -134,8 +135,9 @@ enum ScriptInfoDataFlags
- SCRIPT_FLAG_COMMAND_ADDITIONAL = 0x08, // command dependend
- SCRIPT_FLAG_BUDDY_BY_GUID = 0x10, // take the buddy by guid
- SCRIPT_FLAG_BUDDY_IS_PET = 0x20, // buddy is a pet
- + SCRIPT_FLAG_BUDDY_IS_DEAD = 0X40, // buddy is dead
- };
- -#define MAX_SCRIPT_FLAG_VALID (2 * SCRIPT_FLAG_BUDDY_IS_PET - 1)
- +#define MAX_SCRIPT_FLAG_VALID (2 * SCRIPT_FLAG_BUDDY_IS_DEAD - 1)
- struct ScriptInfo
- {
- @@ -375,6 +377,7 @@ struct ScriptInfo
- } fly;
- // datalong unsed // SCRIPT_COMMAND_DESPAWN_GO (40)
- + // datalong unsed // SCRIPT_COMMAND_RESPAWN_SELF (41)
- struct
- {