struct SystemInfo
{
uint32 KillStreak;
uint32 LastGUIDKill;
};
UNORDERED_MAP<uint64, SystemInfo> KillingStreak;
class System_OnPvPKill : public PlayerScript
{
public:
System_OnPvPKill() : PlayerScript("System_OnPvPKill") { }
void OnPvPKill(Player *killer, Player *victim)
{
uint32 kGUID;
uint32 vGUID;
kGUID = killer->GetGUID();
vGUID = victim->GetGUID();
if(kGUID == vGUID)
return;
if(KillingStreak[kGUID].LastGUIDKill == vGUID)
return;
KillingStreak[kGUID].KillStreak++;
KillingStreak[vGUID].KillStreak = 0;
KillingStreak[kGUID].LastGUIDKill = vGUID;
KillingStreak[vGUID].LastGUIDKill = 0;
switch(KillingStreak[kGUID].KillStreak)
{
char msg[500];
case 1:
if (victim->GetMoney() > 10000)
{
killer->ModifyMoney(killer->GetMoney() + 10000);
victim->ModifyMoney(-10000);
}
else
{
killer->GetSession()->SendNotification("This player doesn't have enough gold to give!");
}
break;
case 2:
killer->AddItem(49426, 1);
break;
case 3:
killer->AddItem(49426, 1);
break;
case 4:
killer->AddItem(49426, 1);
break;
case 5:
killer->AddItem(49426, 1);
break;
case 6:
killer->AddItem(49426, 1);
break;
case 7:
killer->AddItem(49426, 1);
break;
case 8:
killer->AddItem(49426, 1);
break;
case 9:
killer->AddItem(49426, 1);
break;
case 10:
killer->AddItem(49426, 3);
sprintf(msg, "[PvP System]: %s killed %s and is on a kill streak! ", killer->GetName().c_str(), victim->GetName().c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
break;
case 11:
killer->AddItem(49426, 2);
break;
case 12:
killer->AddItem(49426, 2);
break;
case 13:
killer->AddItem(49426, 2);
break;
case 14:
killer->AddItem(49426, 2);
break;
case 15:
killer->AddItem(49426, 2);
break;
case 16:
killer->AddItem(49426, 2);
break;
case 17:
killer->AddItem(49426, 2);
break;
case 18:
killer->AddItem(49426, 2);
break;
case 19:
killer->AddItem(49426, 2);
break;
case 20:
killer->AddItem(49426, 4);
sprintf(msg, "[PvP System]: %s killed %s and is on a RaMpAgE! ", killer->GetName().c_str(), victim->GetName().c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
break;
case 21:
killer->AddItem(49426, 3);
break;
case 22:
killer->AddItem(49426, 3);
break;
case 23:
killer->AddItem(49426, 3);
break;
case 24:
killer->AddItem(49426, 3);
break;
case 25:
killer->AddItem(49426, 3);
break;
case 26:
killer->AddItem(49426, 3);
break;
case 27:
killer->AddItem(49426, 3);
break;
case 28:
killer->AddItem(49426, 3);
break;
case 29:
killer->AddItem(49426, 3);
break;
case 30:
killer->AddItem(49426, 5);
sprintf(msg, "[PvP System]: %s killed %s and is Unstopable! ", killer->GetName().c_str(), victim->GetName().c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
break;
case 31:
killer->AddItem(49426, 4);
break;
case 32:
killer->AddItem(49426, 4);
break;
case 33:
killer->AddItem(49426, 4);
break;
case 34:
killer->AddItem(49426, 4);
break;
case 35:
killer->AddItem(49426, 4);
break;
case 36:
killer->AddItem(49426, 4);
break;
case 37:
killer->AddItem(49426, 4);
break;
case 38:
killer->AddItem(49426, 4);
break;
case 39:
killer->AddItem(49426, 4);
break;
case 40:
killer->AddItem(49426, 6);
sprintf(msg, "[PvP System]: %s killed %s and is DOMINATING! ", killer->GetName().c_str(), victim->GetName().c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
break;
case 41:
killer->AddItem(49426, 5);
break;
case 42:
killer->AddItem(49426, 5);
break;
case 43:
killer->AddItem(49426, 5);
break;
case 44:
killer->AddItem(49426, 5);
break;
case 45:
killer->AddItem(49426, 5);
break;
case 46:
killer->AddItem(49426, 5);
break;
case 47:
killer->AddItem(49426, 5);
break;
case 48:
killer->AddItem(49426, 5);
break;
case 49:
killer->AddItem(49426, 5);
break;
case 50:
killer->AddItem(49426, 7);
sprintf(msg, "[PvP System]: %s killed %s and is Godlike! ", killer->GetName().c_str(), victim->GetName().c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
KillingStreak[kGUID].KillStreak = 0;
break;
}
}
};
void AddSC_System_OnPvPkill()
{
new System_OnPvPKill;
}