1. diff --git a/src/game/ScriptMgr.cpp b/src/game/ScriptMgr.cpp
  2. index d0f2b67..8af181f 100644
  3. --- a/src/game/ScriptMgr.cpp
  4. +++ b/src/game/ScriptMgr.cpp
  5. @@ -727,6 +727,7 @@ void ScriptMgr::LoadScripts(ScriptMapMapName& scripts, const char* tablename)
  6. }
  7. case SCRIPT_COMMAND_SET_FLY: // 39
  8. case SCRIPT_COMMAND_DESPAWN_GO: // 40
  9. + case SCRIPT_COMMAND_RESPAWN_SELF: // 41
  10. break;
  11. default:
  12. {
  13. @@ -1023,7 +1024,7 @@ bool ScriptAction::GetScriptProcessTargets(WorldObject* pOrigSource, WorldObject
  14. {
  15. Creature* pCreatureBuddy = NULL;
  16. - MaNGOS::NearestCreatureEntryWithLiveStateInObjectRangeCheck u_check(*pSearcher, m_script->buddyEntry, true, false, m_script->searchRadiusOrGuid, true);
  17. + 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);
  18. MaNGOS::CreatureLastSearcher<MaNGOS::NearestCreatureEntryWithLiveStateInObjectRangeCheck> searcher(pCreatureBuddy, u_check);
  19. if (m_script->data_flags & SCRIPT_FLAG_BUDDY_IS_PET)
  20. @@ -1986,6 +1987,14 @@ bool ScriptAction::HandleScriptStep()
  21. ((GameObject*)pTarget)->SetLootState(GO_JUST_DEACTIVATED);
  22. break;
  23. }
  24. + case SCRIPT_COMMAND_RESPAWN_SELF: // 41
  25. + {
  26. + if (LogIfNotCreature(pTarget))
  27. + break;
  28. +
  29. + ((Creature*)pTarget)->Respawn();
  30. + break;
  31. + }
  32. default:
  33. sLog.outErrorDb(" DB-SCRIPTS: Process table `%s` id %u, command %u unknown command used.", m_table, m_script->id, m_script->command);
  34. break;
  35. diff --git a/src/game/ScriptMgr.h b/src/game/ScriptMgr.h
  36. index ef89c4f..3ec177b 100644
  37. --- a/src/game/ScriptMgr.h
  38. +++ b/src/game/ScriptMgr.h
  39. @@ -121,6 +121,7 @@ enum ScriptCommand // resSource, resTar
  40. // datalong = bool 0=off, 1=on
  41. // data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL set/unset byte flag UNIT_BYTE1_FLAG_FLY_ANIM
  42. SCRIPT_COMMAND_DESPAWN_GO = 40, // resTarget = GameObject
  43. + SCRIPT_COMMAND_RESPAWN_SELF = 41, // resSource = Creature
  44. };
  45. #define MAX_TEXT_ID 4 // used for SCRIPT_COMMAND_TALK, SCRIPT_COMMAND_EMOTE, SCRIPT_COMMAND_CAST_SPELL, SCRIPT_COMMAND_TERMINATE_SCRIPT
  46. @@ -134,8 +135,9 @@ enum ScriptInfoDataFlags
  47. SCRIPT_FLAG_COMMAND_ADDITIONAL = 0x08, // command dependend
  48. SCRIPT_FLAG_BUDDY_BY_GUID = 0x10, // take the buddy by guid
  49. SCRIPT_FLAG_BUDDY_IS_PET = 0x20, // buddy is a pet
  50. + SCRIPT_FLAG_BUDDY_IS_DEAD = 0X40, // buddy is dead
  51. };
  52. -#define MAX_SCRIPT_FLAG_VALID (2 * SCRIPT_FLAG_BUDDY_IS_PET - 1)
  53. +#define MAX_SCRIPT_FLAG_VALID (2 * SCRIPT_FLAG_BUDDY_IS_DEAD - 1)
  54. struct ScriptInfo
  55. {
  56. @@ -375,6 +377,7 @@ struct ScriptInfo
  57. } fly;
  58. // datalong unsed // SCRIPT_COMMAND_DESPAWN_GO (40)
  59. + // datalong unsed // SCRIPT_COMMAND_RESPAWN_SELF (41)
  60. struct
  61. {