MichaelCrow

[trinity] Custom Killstreak

May 30th, 2012
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.52 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2.  
  3. class Killstreak_System : public PlayerScript
  4. {
  5.     public:
  6.         Killstreak_System() : PlayerScript("Killstreak_System") {}
  7.  
  8.     void OnPVPKill(Player * Killer, Player * Victim)
  9.     {
  10.         uint64 KillerGUID = Killer->GetGUID();
  11.         uint64 VictimGUID = Victim->GetGUID();
  12.  
  13.         struct KillStreak_Info
  14.         {
  15.             uint32 killstreak;
  16.             uint64 lastkill;
  17.         };
  18.  
  19.         static std::map<uint64, KillStreak_Info> KillStreakData;
  20.  
  21.         if( KillerGUID == VictimGUID || KillStreakData[KillerGUID].lastkill == VictimGUID )
  22.             return;
  23.  
  24.         KillStreakData[KillerGUID].killstreak++;
  25.         KillStreakData[KillerGUID].lastkill = VictimGUID;
  26.         KillStreakData[VictimGUID].killstreak = 0;
  27.         KillStreakData[VictimGUID].lastkill = 0;
  28.             if(Victim->HasAura(46804,0))
  29.                 {
  30.                     Victim->CastSpell(Victim, 69688);
  31.                     Victim->removeSpell(46804, false);
  32.                     return;
  33.                 }
  34.         Victim->DeMorph();
  35.         Victim->RemoveAllAuras();
  36.    
  37.         switch( KillStreakData[KillerGUID].killstreak )
  38.         {
  39.             char msg[250];
  40.             case 10:
  41.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s is on a %u kill streak! UAV activated!", Killer->GetName(), KillStreakData[KillerGUID].killstreak);
  42.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  43.                 Killer->CastSpell(Killer, 19883);
  44.                 break;
  45.  
  46.             case 20:
  47.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s is on a %u kill streak, growing 100hp stronger!", Killer->GetName(), KillStreakData[KillerGUID].killstreak);
  48.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  49.                 Killer->CastSpell(Killer, 74996);
  50.                 Killer->learnSpell(9117, false);
  51.                 break;
  52.  
  53.             case 40:
  54.             switch (rand()%4)
  55.                 {
  56.                 case 1:
  57.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s is on a %u kill streak and has the Aspect of Air!", Killer->GetName(), KillStreakData[KillerGUID].killstreak);
  58.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  59.                 Killer->learnSpell(18062, false);
  60.                 Killer->learnSpell(13672, false);
  61.                 Killer->CastSpell(Killer, 13589);
  62.                 Killer->CastSpell(Killer, 38497);
  63.                 Killer->CastSpell(Killer, 55761);
  64.                     break;
  65.                 case 2:
  66.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s is on a %u kill streak and has the Aspect of Fire!", Killer->GetName(), KillStreakData[KillerGUID].killstreak);
  67.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  68.                 Killer->learnSpell(46804, false);
  69.                 Killer->CastSpell(Killer, 46804);
  70.                 Killer->CastSpell(Killer, 31642);
  71.                     break;
  72.                 case 3:
  73.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s is on a %u kill streak and has the Aspect of Water!", Killer->GetName(), KillStreakData[KillerGUID].killstreak);
  74.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  75.                 Killer->CastSpell(Killer, 35923);
  76.                 Killer->CastSpell(Killer, 58777);
  77.                 Killer->CastSpell(Killer, 58765);
  78.                     break;
  79.                 case 4:
  80.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s is on a %u kill streak and has the Aspect of Earth!", Killer->GetName(), KillStreakData[KillerGUID].killstreak);
  81.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  82.                 Killer->learnSpell(15805, false);
  83.                 Killer->learnSpell(41653, false);
  84.                 Killer->CastSpell(Killer, 50549);
  85.                     break;
  86.                 }      
  87.             break;
  88.                
  89.         }
  90.        
  91.         switch( KillStreakData[VictimGUID].killstreak )
  92.         {
  93.             char msg[250];
  94.             case 10:
  95.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s has ended %s's streak of %u, earning 500 honor points!", Killer->GetName(), Victim->GetName(), KillStreakData[VictimGUID].killstreak);
  96.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  97.                 Killer->SetHonorPoints(Killer->GetHonorPoints() + 500);
  98.                 break;
  99.             case 20:
  100.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s has ended %s's streak of %u, earning 1000 honor points!", Killer->GetName(), Victim->GetName(), KillStreakData[VictimGUID].killstreak);
  101.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  102.                 Killer->SetHonorPoints(Killer->GetHonorPoints() + 1000);
  103.                 break;
  104.                
  105.             case 40:
  106.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s has ended %s's streak of %u, earning 100 arena points!", Killer->GetName(), Victim->GetName(), KillStreakData[VictimGUID].killstreak);
  107.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  108.                 Killer->SetArenaPoints(Killer->GetArenaPoints() + 100);
  109.                 break;
  110.             case 120:
  111.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s has ended %s's streak of %u, earning 200 arena points!", Killer->GetName(), Victim->GetName(), KillStreakData[VictimGUID].killstreak);
  112.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  113.                 Killer->SetArenaPoints(Killer->GetArenaPoints() + 200);
  114.                 break;
  115.             case 160:
  116.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s has ended %s's streak of %u, earning 400 arena points!", Killer->GetName(), Victim->GetName(), KillStreakData[VictimGUID].killstreak);
  117.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  118.                 Killer->SetArenaPoints(Killer->GetArenaPoints() + 400);
  119.                 break;
  120.             case 200:
  121.                 snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s has ended %s's streak of %u, earning 800 arena points!", Killer->GetName(), Victim->GetName(), KillStreakData[VictimGUID].killstreak);
  122.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  123.                 Killer->SetArenaPoints(Killer->GetArenaPoints() + 800);
  124.                 break;
  125.         }
  126.        
  127.     }
  128. };
  129.  
  130. void AddSC_Killstreak_System()
  131. {
  132.     new Killstreak_System;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment