Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ScriptPCH.h"
- class Killstreak_System : public PlayerScript
- {
- public:
- Killstreak_System() : PlayerScript("Killstreak_System") {}
- void OnPVPKill(Player * Killer, Player * Victim)
- {
- uint64 KillerGUID = Killer->GetGUID();
- uint64 VictimGUID = Victim->GetGUID();
- struct KillStreak_Info
- {
- uint32 killstreak;
- uint64 lastkill;
- };
- static std::map<uint64, KillStreak_Info> KillStreakData;
- if( KillerGUID == VictimGUID || KillStreakData[KillerGUID].lastkill == VictimGUID )
- return;
- KillStreakData[KillerGUID].killstreak++;
- KillStreakData[KillerGUID].lastkill = VictimGUID;
- KillStreakData[VictimGUID].killstreak = 0;
- KillStreakData[VictimGUID].lastkill = 0;
- if(Victim->HasAura(46804,0))
- {
- Victim->CastSpell(Victim, 69688);
- Victim->removeSpell(46804, false);
- return;
- }
- Victim->DeMorph();
- Victim->RemoveAllAuras();
- switch( KillStreakData[KillerGUID].killstreak )
- {
- char msg[250];
- case 10:
- snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s is on a %u kill streak! UAV activated!", Killer->GetName(), KillStreakData[KillerGUID].killstreak);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->CastSpell(Killer, 19883);
- break;
- case 20:
- snprintf(msg, 250, "|cFF0042FF[Winterfell PvP]:|cFFFF0303%s is on a %u kill streak, growing 100hp stronger!", Killer->GetName(), KillStreakData[KillerGUID].killstreak);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->CastSpell(Killer, 74996);
- Killer->learnSpell(9117, false);
- break;
- case 40:
- switch (rand()%4)
- {
- case 1:
- 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);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->learnSpell(18062, false);
- Killer->learnSpell(13672, false);
- Killer->CastSpell(Killer, 13589);
- Killer->CastSpell(Killer, 38497);
- Killer->CastSpell(Killer, 55761);
- break;
- case 2:
- 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);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->learnSpell(46804, false);
- Killer->CastSpell(Killer, 46804);
- Killer->CastSpell(Killer, 31642);
- break;
- case 3:
- 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);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->CastSpell(Killer, 35923);
- Killer->CastSpell(Killer, 58777);
- Killer->CastSpell(Killer, 58765);
- break;
- case 4:
- 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);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->learnSpell(15805, false);
- Killer->learnSpell(41653, false);
- Killer->CastSpell(Killer, 50549);
- break;
- }
- break;
- }
- switch( KillStreakData[VictimGUID].killstreak )
- {
- char msg[250];
- case 10:
- 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);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->SetHonorPoints(Killer->GetHonorPoints() + 500);
- break;
- case 20:
- 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);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->SetHonorPoints(Killer->GetHonorPoints() + 1000);
- break;
- case 40:
- 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);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->SetArenaPoints(Killer->GetArenaPoints() + 100);
- break;
- case 120:
- 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);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->SetArenaPoints(Killer->GetArenaPoints() + 200);
- break;
- case 160:
- 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);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->SetArenaPoints(Killer->GetArenaPoints() + 400);
- break;
- case 200:
- 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);
- sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
- Killer->SetArenaPoints(Killer->GetArenaPoints() + 800);
- break;
- }
- }
- };
- void AddSC_Killstreak_System()
- {
- new Killstreak_System;
- }
Advertisement
Add Comment
Please, Sign In to add comment