SHOW:
|
|
- or go back to the newest paste.
1 | /************************************************************************ | |
2 | * *----------------* | *----------------* | *---------------* * | |
3 | * | Originally |* | *| Edited |* | *| Edited | * | |
4 | * | By |* | *| By |* | *| By | * | |
5 | * | Kjanko |* | *| Tommy |* | *| Rochet2 | * | |
6 | * |------------------|*|---------------------|*|------------------| * | |
7 | ************************************************************************/ | |
8 | ||
9 | #include "ScriptPCH.h" | |
10 | ||
11 | class System_OnKill : public PlayerScript | |
12 | { | |
13 | public: | |
14 | System_OnKill() : PlayerScript("System_OnKill") {} | |
15 | ||
16 | void OnPVPKill(Player * Killer, Player * Victim) | |
17 | { | |
18 | uint64 KillerGUID = Killer->GetGUID(); | |
19 | uint64 VictimGUID = Victim->GetGUID(); | |
20 | ||
21 | struct KillStreak_Info | |
22 | { | |
23 | uint32 killstreak; | |
24 | uint64 lastkill; | |
25 | }; | |
26 | ||
27 | static std::map<uint64, KillStreak_Info> KillStreakData; | |
28 | ||
29 | if( KillerGUID == VictimGUID || KillStreakData[KillerGUID].lastkill == VictimGUID ) | |
30 | return; | |
31 | ||
32 | KillStreakData[KillerGUID].killstreak++; | |
33 | KillStreakData[KillerGUID].lastkill = VictimGUID; | |
34 | KillStreakData[VictimGUID].killstreak = 0; | |
35 | KillStreakData[VictimGUID].lastkill = 0; | |
36 | ||
37 | - | if( KillStreakData[KillerGUID].killstreak % 10 == 0 ) // send killstreak message every 10 kills |
37 | + | if( KillStreakData[KillerGUID].killstreak % 5 == 0 ) // send killstreak message every 10 kills |
38 | { | |
39 | char msg[250]; | |
40 | snprintf(msg, 250, "[PvP System]: %s is on a killstreak of %u!", Killer->GetName(), KillStreakData[KillerGUID].killstreak); | |
41 | sWorld->SendServerMessage(SERVER_MSG_STRING, msg); | |
42 | } | |
43 | ||
44 | - | if( KillStreakData[KillerGUID].killstreak % 20 == 0 ) // reward every 20 kills |
44 | + | if( KillStreakData[KillerGUID].killstreak == 5 || KillStreakData[KillerGUID].killstreak % 10 == 0 ) |
45 | - | Killer->ModifyMoney(100000); // this is the reward in copper, currently 10 gold |
45 | + | Killer->AddItem(25, KillStreakData[KillerGUID].killstreak); // 25 = badge item entry |
46 | ||
47 | if( KillStreakData[KillerGUID].killstreak >= 15 && KillStreakData[KillerGUID].killstreak % 10 == 5 ) | |
48 | Killer->AddItem(26, (KillStreakData[KillerGUID].killstreak-5)/10); // 26 = special badge item entry | |
49 | } | |
50 | }; | |
51 | ||
52 | void AddSC_PvP_System() | |
53 | { | |
54 | new System_OnKill; | |
55 | } |