Advertisement
Guest User

Untitled

a guest
Jul 19th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.77 KB | None | 0 0
  1. class spell_darkmoon_firework_achievement: public SpellScriptLoader
  2. {
  3.     public:
  4.         spell_darkmoon_firework_achievement() : SpellScriptLoader("spell_darkmoon_firework_achievement") { }
  5.  
  6.         class spell_darkmoon_firework_achievement_SpellScript : public SpellScript
  7.         {
  8.             PrepareSpellScript(spell_darkmoon_firework_achievement_SpellScript);
  9.  
  10.             enum eZoneId
  11.             {
  12.                 DalaranLegion   = 7202,
  13.                 DalaranTLK      = 4395,
  14.                 Darnassus       = 1657,
  15.                 Exodar          = 3557,
  16.                 Ironforge       = 1537,
  17.                 Shattrath       = 3703,
  18.                 Stormwind       = 1519,
  19.                
  20.                 Silvermoon      = 3487,
  21.                 Orgrimmar       = 1637,
  22.                 ThunderBluff    = 1638,
  23.                 Undercity       = 1497
  24.             }
  25.            
  26.  
  27.             void HandleScriptEffect(SpellEffIndex /*effIndex*/)
  28.             {
  29.                 Unit* caster = GetCaster();
  30.                
  31.                 if(Player* p_Player = caster->ToPlayer())
  32.                 {
  33.                    
  34.                     uint32 criteriaId = 0;
  35.                     switch(p_Player->GetZoneId())
  36.                     {
  37.                         case eZoneId::DalaranLegion:
  38.                         case eZoneId::DalaranTLK:
  39.                             criteriaId = p_Player->GetTeam() == HORDE ? 20517 : 20578;
  40.                             break;
  41.                         case eZoneId::Darnassus:
  42.                             criteriaId = 20575;
  43.                             break;
  44.                         case eZoneId::Exodar:
  45.                             criteriaId = 20576;
  46.                             break;
  47.                         case eZoneId::Ironforge:
  48.                             criteriaId = 20574;
  49.                             break;
  50.                         case eZoneId::Shattrath:
  51.                             criteriaId = p_Player->GetTeam() == HORDE ? 20519 : 20577;
  52.                             break;
  53.                         case eZoneId::Stormwind:
  54.                             criteriaId = 20579;
  55.                             break;
  56.                         case eZoneId::Orgrimmar:
  57.                             criteriaId = 20518;
  58.                             break;
  59.                         case eZoneId::Silvermoon:
  60.                             criteriaId = 20521;
  61.                             break;
  62.                         case eZoneId::ThunderBluff:
  63.                             criteriaId = 20520;
  64.                             break;
  65.                         case eZoneId::Undercity:
  66.                             criteriaId = 20522;
  67.                             break;
  68.                         default:
  69.                             break;
  70.                     }
  71.                    
  72.                     if(criteriaId == 0)
  73.                         return;
  74.                    
  75.                     if(const AchievementCriteriaEntry* criteria = sAchievementCriteriaStore.LookupEntry(criteriaId))
  76.                     {
  77.                         p_Player->GetAchievementMgr().SetCriteriaProgress(criteria, 1, p_Player);
  78.  
  79.                          AchievementEntry const *achievement = sAchievementStore.LookupEntry(criteria->referredAchievement);
  80.  
  81.                         if (p_Player->GetAchievementMgr().IsCompletedAchievement(achievement))
  82.                             p_Player->GetAchievementMgr().CompletedAchievement(achievement);
  83.                     }
  84.                 }
  85.             }
  86.  
  87.             void Register() override
  88.             {
  89.                 OnEffectHitTarget += SpellEffectFn(spell_darkmoon_firework_achievement_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_DUMMY);
  90.             }
  91.         };
  92.  
  93.         SpellScript* GetSpellScript() const override
  94.         {
  95.             return new spell_darkmoon_firework_achievement_SpellScript();
  96.         }
  97. };
  98.  
  99.  
  100.  
  101. new spell_darkmoon_firework_achievement();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement