Advertisement
Guest User

Untitled

a guest
Apr 28th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. // Warforged Nightmare area party
  2. enum Misc
  3. {
  4. ITEM_NIGHTMARISH_HITCHING_POST = 112324,
  5. NPC_NIGHTMARISH = 80682,
  6.  
  7. SPELL_NIGHTMARISH_REINS = 162997,
  8. SPELL_WARFORGED_NIGHTMARE = 163024,
  9. };
  10.  
  11. // Nightmarish Hitching Post - 80682
  12. class freakz_npc_nightmarish_hitching_post : public CreatureScript
  13. {
  14. public:
  15. freakz_npc_nightmarish_hitching_post() : CreatureScript("freakz_npc_nightmarish_hitching_post") { }
  16.  
  17. bool OnGossipHello(Player* player, Creature* creature)
  18. {
  19. if (Unit * owner = creature->GetOwner())
  20. {
  21. if (Player * playerOwner = owner->ToPlayer())
  22. {
  23. if (player->IsInRaidWith(playerOwner))
  24. {
  25. {
  26. if (player->IsMounted())
  27. {
  28. creature->AddAura(SPELL_NIGHTMARISH_REINS, player);
  29. }
  30. }
  31. }
  32. }
  33. }
  34.  
  35. player->PlayerTalkClass->SendGossipMenu(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
  36. return true;
  37. }
  38. };
  39.  
  40. // Nightmarish Reins - 162997
  41. class freakz_spell_nightmarish_reins : public SpellScriptLoader
  42. {
  43. public:
  44. freakz_spell_nightmarish_reins() : SpellScriptLoader("freakz_spell_nightmarish_reins") { }
  45.  
  46. class freakz_spell_nightmarish_reins_AuraScript : public AuraScript
  47. {
  48. PrepareAuraScript(freakz_spell_nightmarish_reins_AuraScript);
  49.  
  50. uint32 mount = 55896; // warforged display id
  51.  
  52. void OnApply(AuraEffect const* aurFf, AuraEffectHandleModes mode)
  53. {
  54. if (Player* player = GetTarget()->ToPlayer())
  55. player->SetUInt32Value(UNIT_FIELD_MOUNT_DISPLAY_ID, mount);
  56. }
  57.  
  58. void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
  59. {
  60. if (Player* player = GetTarget()->ToPlayer())
  61. {
  62. std::list<AuraEffect *> const& mountAuras = player->GetAuraEffectsByType(SPELL_AURA_MOUNTED);
  63. for (std::list<AuraEffect *>::const_iterator i = mountAuras.begin(); i != mountAuras.end(); ++i)
  64. {
  65. uint32 creatureEntry = (*i)->GetMiscValue();
  66. if (CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(creatureEntry))
  67. {
  68. uint32 displayId = ObjectMgr::ChooseDisplayId(creatureInfo);
  69. player->SetUInt32Value(UNIT_FIELD_MOUNT_DISPLAY_ID, displayId);
  70. }
  71. }
  72. }
  73. }
  74.  
  75. void Register()
  76. {
  77. OnEffectApply += AuraEffectApplyFn(freakz_spell_nightmarish_reins_AuraScript::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
  78. OnEffectRemove += AuraEffectRemoveFn(freakz_spell_nightmarish_reins_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
  79. }
  80. };
  81.  
  82. AuraScript* GetAuraScript() const
  83. {
  84. return new freakz_spell_nightmarish_reins_AuraScript();
  85. }
  86. };
  87.  
  88. // Warforged Nightmare - 163024
  89. class freakz_spell_warforged_nightmare : public SpellScriptLoader
  90. {
  91. public:
  92. freakz_spell_warforged_nightmare() : SpellScriptLoader("freakz_spell_warforged_nightmare") { }
  93.  
  94. class freakz_spell_warforged_nightmare_SpellScript : public SpellScript
  95. {
  96. PrepareSpellScript(freakz_spell_warforged_nightmare_SpellScript);
  97.  
  98. void HandleAfterCast()
  99. {
  100. if (Player* player = GetCaster()->ToPlayer())
  101. {
  102. if (!player->HasItemCount(ITEM_NIGHTMARISH_HITCHING_POST, 1, true))
  103. player->AddItem(ITEM_NIGHTMARISH_HITCHING_POST, 1);
  104. else
  105. return;
  106. }
  107. }
  108.  
  109. void Register()
  110. {
  111. AfterCast += SpellCastFn(freakz_spell_warforged_nightmare_SpellScript::HandleAfterCast);
  112. }
  113. };
  114.  
  115. SpellScript* GetSpellScript() const
  116. {
  117. return new freakz_spell_warforged_nightmare_SpellScript();
  118. }
  119. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement