| 1 | #include "OutdoorPvPHP.h" |
|---|
| 2 | #include "OutdoorPvP.h" |
|---|
| 3 | #include "OutdoorPvPMgr.h" |
|---|
| 4 | #include "Player.h" |
|---|
| 5 | #include "WorldPacket.h" |
|---|
| 6 | #include "World.h" |
|---|
| 7 | #include "ObjectMgr.h" |
|---|
| 8 | #include "Language.h" |
|---|
| 9 | |
|---|
| 10 | const uint32 HP_LANG_LOOSE_A[HP_TOWER_NUM] = {LANG_OPVP_HP_LOOSE_BROKENHILL_A,LANG_OPVP_HP_LOOSE_OVERLOOK_A,LANG_OPVP_HP_LOOSE_STADIUM_A}; |
|---|
| 11 | |
|---|
| 12 | const uint32 HP_LANG_LOOSE_H[HP_TOWER_NUM] = {LANG_OPVP_HP_LOOSE_BROKENHILL_H,LANG_OPVP_HP_LOOSE_OVERLOOK_H,LANG_OPVP_HP_LOOSE_STADIUM_H}; |
|---|
| 13 | |
|---|
| 14 | const uint32 HP_LANG_CAPTURE_A[HP_TOWER_NUM] = {LANG_OPVP_HP_CAPTURE_BROKENHILL_A,LANG_OPVP_HP_CAPTURE_OVERLOOK_A,LANG_OPVP_HP_CAPTURE_STADIUM_A}; |
|---|
| 15 | |
|---|
| 16 | const uint32 HP_LANG_CAPTURE_H[HP_TOWER_NUM] = {LANG_OPVP_HP_CAPTURE_BROKENHILL_H,LANG_OPVP_HP_CAPTURE_OVERLOOK_H,LANG_OPVP_HP_CAPTURE_STADIUM_H}; |
|---|
| 17 | |
|---|
| 18 | OutdoorPvPObjectiveHP::OutdoorPvPObjectiveHP(OutdoorPvP *pvp,OutdoorPvPHPTowerType type) |
|---|
| 19 | : OutdoorPvPObjective(pvp), m_TowerType(type) |
|---|
| 20 | { |
|---|
| 21 | AddCapturePoint(HPCapturePoints[type].entry, |
|---|
| 22 | HPCapturePoints[type].map, |
|---|
| 23 | HPCapturePoints[type].x, |
|---|
| 24 | HPCapturePoints[type].y, |
|---|
| 25 | HPCapturePoints[type].z, |
|---|
| 26 | HPCapturePoints[type].o, |
|---|
| 27 | HPCapturePoints[type].rot0, |
|---|
| 28 | HPCapturePoints[type].rot1, |
|---|
| 29 | HPCapturePoints[type].rot2, |
|---|
| 30 | HPCapturePoints[type].rot3); |
|---|
| 31 | AddObject(type, |
|---|
| 32 | HPTowerFlags[type].entry, |
|---|
| 33 | HPTowerFlags[type].map, |
|---|
| 34 | HPTowerFlags[type].x, |
|---|
| 35 | HPTowerFlags[type].y, |
|---|
| 36 | HPTowerFlags[type].z, |
|---|
| 37 | HPTowerFlags[type].o, |
|---|
| 38 | HPTowerFlags[type].rot0, |
|---|
| 39 | HPTowerFlags[type].rot1, |
|---|
| 40 | HPTowerFlags[type].rot2, |
|---|
| 41 | HPTowerFlags[type].rot3); |
|---|
| 42 | } |
|---|
| 43 | |
|---|
| 44 | OutdoorPvPHP::OutdoorPvPHP() |
|---|
| 45 | { |
|---|
| 46 | m_TypeId = OUTDOOR_PVP_HP; |
|---|
| 47 | } |
|---|
| 48 | |
|---|
| 49 | bool OutdoorPvPHP::SetupOutdoorPvP() |
|---|
| 50 | { |
|---|
| 51 | m_AllianceTowersControlled = 0; |
|---|
| 52 | m_HordeTowersControlled = 0; |
|---|
| 53 | // add the zones affected by the pvp buff |
|---|
| 54 | for(int i = 0; i < OutdoorPvPHPBuffZonesNum; ++i) |
|---|
| 55 | sOutdoorPvPMgr.AddZone(OutdoorPvPHPBuffZones[i],this); |
|---|
| 56 | |
|---|
| 57 | m_OutdoorPvPObjectives.insert(new OutdoorPvPObjectiveHP(this,HP_TOWER_BROKEN_HILL)); |
|---|
| 58 | |
|---|
| 59 | m_OutdoorPvPObjectives.insert(new OutdoorPvPObjectiveHP(this,HP_TOWER_OVERLOOK)); |
|---|
| 60 | |
|---|
| 61 | m_OutdoorPvPObjectives.insert(new OutdoorPvPObjectiveHP(this,HP_TOWER_STADIUM)); |
|---|
| 62 | |
|---|
| 63 | return true; |
|---|
| 64 | } |
|---|
| 65 | |
|---|
| 66 | void OutdoorPvPHP::HandlePlayerEnterZone(Player * plr, uint32 zone) |
|---|
| 67 | { |
|---|
| 68 | // add buffs |
|---|
| 69 | if(plr->GetTeam() == ALLIANCE) |
|---|
| 70 | { |
|---|
| 71 | if(m_AllianceTowersControlled >=3) |
|---|
| 72 | plr->CastSpell(plr,AllianceBuff,true); |
|---|
| 73 | } |
|---|
| 74 | else |
|---|
| 75 | { |
|---|
| 76 | if(m_HordeTowersControlled >=3) |
|---|
| 77 | plr->CastSpell(plr,HordeBuff,true); |
|---|
| 78 | } |
|---|
| 79 | OutdoorPvP::HandlePlayerEnterZone(plr,zone); |
|---|
| 80 | } |
|---|
| 81 | |
|---|
| 82 | void OutdoorPvPHP::HandlePlayerLeaveZone(Player * plr, uint32 zone) |
|---|
| 83 | { |
|---|
| 84 | // remove buffs |
|---|
| 85 | if(plr->GetTeam() == ALLIANCE) |
|---|
| 86 | { |
|---|
| 87 | plr->RemoveAurasDueToSpell(AllianceBuff); |
|---|
| 88 | } |
|---|
| 89 | else |
|---|
| 90 | { |
|---|
| 91 | plr->RemoveAurasDueToSpell(HordeBuff); |
|---|
| 92 | } |
|---|
| 93 | OutdoorPvP::HandlePlayerLeaveZone(plr, zone); |
|---|
| 94 | } |
|---|
| 95 | |
|---|
| 96 | bool OutdoorPvPHP::Update(uint32 diff) |
|---|
| 97 | { |
|---|
| 98 | bool changed = false; |
|---|
| 99 | if(changed = OutdoorPvP::Update(diff)) |
|---|
| 100 | { |
|---|
| 101 | if(m_AllianceTowersControlled == 3) |
|---|
| 102 | BuffTeam(ALLIANCE); |
|---|
| 103 | else if(m_HordeTowersControlled == 3) |
|---|
| 104 | BuffTeam(HORDE); |
|---|
| 105 | else |
|---|
| 106 | BuffTeam(NULL); |
|---|
| 107 | SendUpdateWorldState(HP_UI_TOWER_COUNT_A, m_AllianceTowersControlled); |
|---|
| 108 | SendUpdateWorldState(HP_UI_TOWER_COUNT_H, m_HordeTowersControlled); |
|---|
| 109 | } |
|---|
| 110 | return changed; |
|---|
| 111 | } |
|---|
| 112 | |
|---|
| 113 | void OutdoorPvPHP::SendRemoveWorldStates(Player *plr) |
|---|
| 114 | { |
|---|
| 115 | plr->SendUpdateWorldState(HP_UI_TOWER_DISPLAY_A,0); |
|---|
| 116 | plr->SendUpdateWorldState(HP_UI_TOWER_DISPLAY_H,0); |
|---|
| 117 | plr->SendUpdateWorldState(HP_UI_TOWER_COUNT_H,0); |
|---|
| 118 | plr->SendUpdateWorldState(HP_UI_TOWER_COUNT_A,0); |
|---|
| 119 | plr->SendUpdateWorldState(HP_UI_TOWER_SLIDER_N,0); |
|---|
| 120 | plr->SendUpdateWorldState(HP_UI_TOWER_SLIDER_POS,0); |
|---|
| 121 | plr->SendUpdateWorldState(HP_UI_TOWER_SLIDER_DISPLAY,0); |
|---|
| 122 | for(int i = 0; i < HP_TOWER_NUM; ++i) |
|---|
| 123 | { |
|---|
| 124 | plr->SendUpdateWorldState(HP_MAP_N[i],0); |
|---|
| 125 | plr->SendUpdateWorldState(HP_MAP_A[i],0); |
|---|
| 126 | plr->SendUpdateWorldState(HP_MAP_H[i],0); |
|---|
| 127 | } |
|---|
| 128 | } |
|---|
| 129 | |
|---|
| 130 | void OutdoorPvPHP::FillInitialWorldStates(WorldPacket &data) |
|---|
| 131 | { |
|---|
| 132 | data << uint32(HP_UI_TOWER_DISPLAY_A) << uint32(1); |
|---|
| 133 | data << uint32(HP_UI_TOWER_DISPLAY_H) << uint32(1); |
|---|
| 134 | data << uint32(HP_UI_TOWER_COUNT_A) << uint32(m_AllianceTowersControlled); |
|---|
| 135 | data << uint32(HP_UI_TOWER_COUNT_H) << uint32(m_HordeTowersControlled); |
|---|
| 136 | data << uint32(HP_UI_TOWER_SLIDER_DISPLAY) << uint32(0); |
|---|
| 137 | data << uint32(HP_UI_TOWER_SLIDER_POS) << uint32(50); |
|---|
| 138 | data << uint32(HP_UI_TOWER_SLIDER_N) << uint32(100); |
|---|
| 139 | for(OutdoorPvPObjectiveSet::iterator itr = m_OutdoorPvPObjectives.begin(); itr != m_OutdoorPvPObjectives.end(); ++itr) |
|---|
| 140 | { |
|---|
| 141 | (*itr)->FillInitialWorldStates(data); |
|---|
| 142 | } |
|---|
| 143 | } |
|---|
| 144 | |
|---|
| 145 | bool OutdoorPvPObjectiveHP::Update(uint32 diff) |
|---|
| 146 | { |
|---|
| 147 | // if status changed: |
|---|
| 148 | if(OutdoorPvPObjective::Update(diff)) |
|---|
| 149 | { |
|---|
| 150 | if(m_OldState != m_State) |
|---|
| 151 | { |
|---|
| 152 | uint32 field = 0; |
|---|
| 153 | switch(m_OldState) |
|---|
| 154 | { |
|---|
| 155 | case OBJECTIVESTATE_NEUTRAL: |
|---|
| 156 | field = HP_MAP_N[m_TowerType]; |
|---|
| 157 | break; |
|---|
| 158 | case OBJECTIVESTATE_ALLIANCE: |
|---|
| 159 | field = HP_MAP_A[m_TowerType]; |
|---|
| 160 | if(((OutdoorPvPHP*)m_PvP)->m_AllianceTowersControlled) |
|---|
| 161 | ((OutdoorPvPHP*)m_PvP)->m_AllianceTowersControlled--; |
|---|
| 162 | sWorld.SendZoneText(OutdoorPvPHPBuffZones[0],objmgr.GetTrinityStringForDBCLocale(HP_LANG_LOOSE_A[m_TowerType])); |
|---|
| 163 | break; |
|---|
| 164 | case OBJECTIVESTATE_HORDE: |
|---|
| 165 | field = HP_MAP_H[m_TowerType]; |
|---|
| 166 | if(((OutdoorPvPHP*)m_PvP)->m_HordeTowersControlled) |
|---|
| 167 | ((OutdoorPvPHP*)m_PvP)->m_HordeTowersControlled--; |
|---|
| 168 | sWorld.SendZoneText(OutdoorPvPHPBuffZones[0],objmgr.GetTrinityStringForDBCLocale(HP_LANG_LOOSE_H[m_TowerType])); |
|---|
| 169 | break; |
|---|
| 170 | case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE: |
|---|
| 171 | field = HP_MAP_N[m_TowerType]; |
|---|
| 172 | break; |
|---|
| 173 | case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE: |
|---|
| 174 | field = HP_MAP_N[m_TowerType]; |
|---|
| 175 | break; |
|---|
| 176 | case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE: |
|---|
| 177 | field = HP_MAP_A[m_TowerType]; |
|---|
| 178 | break; |
|---|
| 179 | case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE: |
|---|
| 180 | field = HP_MAP_H[m_TowerType]; |
|---|
| 181 | break; |
|---|
| 182 | } |
|---|
| 183 | |
|---|
| 184 | // send world state update |
|---|
| 185 | if(field) |
|---|
| 186 | { |
|---|
| 187 | m_PvP->SendUpdateWorldState(field, 0); |
|---|
| 188 | field = 0; |
|---|
| 189 | } |
|---|
| 190 | uint32 artkit = 21; |
|---|
| 191 | uint32 artkit2 = HP_TowerArtKit_N[m_TowerType]; |
|---|
| 192 | switch(m_State) |
|---|
| 193 | { |
|---|
| 194 | case OBJECTIVESTATE_NEUTRAL: |
|---|
| 195 | field = HP_MAP_N[m_TowerType]; |
|---|
| 196 | break; |
|---|
| 197 | case OBJECTIVESTATE_ALLIANCE: |
|---|
| 198 | field = HP_MAP_A[m_TowerType]; |
|---|
| 199 | artkit = 2; |
|---|
| 200 | artkit2 = HP_TowerArtKit_A[m_TowerType]; |
|---|
| 201 | if(((OutdoorPvPHP*)m_PvP)->m_AllianceTowersControlled<3) |
|---|
| 202 | ((OutdoorPvPHP*)m_PvP)->m_AllianceTowersControlled++; |
|---|
| 203 | sWorld.SendZoneText(OutdoorPvPHPBuffZones[0],objmgr.GetTrinityStringForDBCLocale(HP_LANG_CAPTURE_A[m_TowerType])); |
|---|
| 204 | break; |
|---|
| 205 | case OBJECTIVESTATE_HORDE: |
|---|
| 206 | field = HP_MAP_H[m_TowerType]; |
|---|
| 207 | artkit = 1; |
|---|
| 208 | artkit2 = HP_TowerArtKit_H[m_TowerType]; |
|---|
| 209 | if(((OutdoorPvPHP*)m_PvP)->m_HordeTowersControlled<3) |
|---|
| 210 | ((OutdoorPvPHP*)m_PvP)->m_HordeTowersControlled++; |
|---|
| 211 | sWorld.SendZoneText(OutdoorPvPHPBuffZones[0],objmgr.GetTrinityStringForDBCLocale(HP_LANG_CAPTURE_H[m_TowerType])); |
|---|
| 212 | break; |
|---|
| 213 | case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE: |
|---|
| 214 | field = HP_MAP_N[m_TowerType]; |
|---|
| 215 | break; |
|---|
| 216 | case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE: |
|---|
| 217 | field = HP_MAP_N[m_TowerType]; |
|---|
| 218 | break; |
|---|
| 219 | case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE: |
|---|
| 220 | field = HP_MAP_A[m_TowerType]; |
|---|
| 221 | artkit = 2; |
|---|
| 222 | artkit2 = HP_TowerArtKit_A[m_TowerType]; |
|---|
| 223 | break; |
|---|
| 224 | case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE: |
|---|
| 225 | field = HP_MAP_H[m_TowerType]; |
|---|
| 226 | artkit = 1; |
|---|
| 227 | artkit2 = HP_TowerArtKit_H[m_TowerType]; |
|---|
| 228 | break; |
|---|
| 229 | } |
|---|
| 230 | |
|---|
| 231 | GameObject* flag = HashMapHolder<GameObject>::Find(m_CapturePoint); |
|---|
| 232 | GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[m_TowerType]); |
|---|
| 233 | if(flag) |
|---|
| 234 | { |
|---|
| 235 | flag->SetGoArtKit(artkit); |
|---|
| 236 | flag->SendUpdateObjectToAllExcept(NULL); |
|---|
| 237 | } |
|---|
| 238 | if(flag2) |
|---|
| 239 | { |
|---|
| 240 | flag2->SetGoArtKit(artkit2); |
|---|
| 241 | flag2->SendUpdateObjectToAllExcept(NULL); |
|---|
| 242 | } |
|---|
| 243 | |
|---|
| 244 | // send world state update |
|---|
| 245 | if(field) |
|---|
| 246 | m_PvP->SendUpdateWorldState(field, 1); |
|---|
| 247 | |
|---|
| 248 | // complete quest objective |
|---|
| 249 | if(m_State == OBJECTIVESTATE_ALLIANCE || m_State == OBJECTIVESTATE_HORDE) |
|---|
| 250 | SendObjectiveComplete(HP_CREDITMARKER[m_TowerType], 0); |
|---|
| 251 | } |
|---|
| 252 | |
|---|
| 253 | if(m_ShiftPhase != m_OldPhase) |
|---|
| 254 | { |
|---|
| 255 | SendUpdateWorldState(HP_UI_TOWER_SLIDER_N, m_NeutralValue); |
|---|
| 256 | // send these updates to only the ones in this objective |
|---|
| 257 | uint32 phase = (uint32)ceil(( m_ShiftPhase + m_ShiftMaxPhase) / ( 2 * m_ShiftMaxPhase ) * 100.0f); |
|---|
| 258 | SendUpdateWorldState(HP_UI_TOWER_SLIDER_POS, phase); |
|---|
| 259 | // send this too, sometimes the slider disappears, dunno why :( |
|---|
| 260 | SendUpdateWorldState(HP_UI_TOWER_SLIDER_DISPLAY, 1); |
|---|
| 261 | } |
|---|
| 262 | return true; |
|---|
| 263 | } |
|---|
| 264 | return false; |
|---|
| 265 | } |
|---|
| 266 | |
|---|
| 267 | void OutdoorPvPObjectiveHP::FillInitialWorldStates(WorldPacket &data) |
|---|
| 268 | { |
|---|
| 269 | switch(m_State) |
|---|
| 270 | { |
|---|
| 271 | case OBJECTIVESTATE_ALLIANCE: |
|---|
| 272 | case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE: |
|---|
| 273 | data << uint32(HP_MAP_N[m_TowerType]) << uint32(0); |
|---|
| 274 | data << uint32(HP_MAP_A[m_TowerType]) << uint32(1); |
|---|
| 275 | data << uint32(HP_MAP_H[m_TowerType]) << uint32(0); |
|---|
| 276 | break; |
|---|
| 277 | case OBJECTIVESTATE_HORDE: |
|---|
| 278 | case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE: |
|---|
| 279 | data << uint32(HP_MAP_N[m_TowerType]) << uint32(0); |
|---|
| 280 | data << uint32(HP_MAP_A[m_TowerType]) << uint32(0); |
|---|
| 281 | data << uint32(HP_MAP_H[m_TowerType]) << uint32(1); |
|---|
| 282 | break; |
|---|
| 283 | case OBJECTIVESTATE_NEUTRAL: |
|---|
| 284 | case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE: |
|---|
| 285 | case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE: |
|---|
| 286 | default: |
|---|
| 287 | data << uint32(HP_MAP_N[m_TowerType]) << uint32(1); |
|---|
| 288 | data << uint32(HP_MAP_A[m_TowerType]) << uint32(0); |
|---|
| 289 | data << uint32(HP_MAP_H[m_TowerType]) << uint32(0); |
|---|
| 290 | break; |
|---|
| 291 | } |
|---|
| 292 | } |
|---|
| 293 | |
|---|
| 294 | bool OutdoorPvPObjectiveHP::HandlePlayerEnter(Player *plr) |
|---|
| 295 | { |
|---|
| 296 | if(OutdoorPvPObjective::HandlePlayerEnter(plr)) |
|---|
| 297 | { |
|---|
| 298 | plr->SendUpdateWorldState(HP_UI_TOWER_SLIDER_DISPLAY, 1); |
|---|
| 299 | uint32 phase = (uint32)ceil(( m_ShiftPhase + m_ShiftMaxPhase) / ( 2 * m_ShiftMaxPhase ) * 100.0f); |
|---|
| 300 | plr->SendUpdateWorldState(HP_UI_TOWER_SLIDER_POS, phase); |
|---|
| 301 | plr->SendUpdateWorldState(HP_UI_TOWER_SLIDER_N, m_NeutralValue); |
|---|
| 302 | return true; |
|---|
| 303 | } |
|---|
| 304 | return false; |
|---|
| 305 | } |
|---|
| 306 | |
|---|
| 307 | void OutdoorPvPObjectiveHP::HandlePlayerLeave(Player *plr) |
|---|
| 308 | { |
|---|
| 309 | plr->SendUpdateWorldState(HP_UI_TOWER_SLIDER_DISPLAY, 0); |
|---|
| 310 | OutdoorPvPObjective::HandlePlayerLeave(plr); |
|---|
| 311 | } |
|---|
| 312 | |
|---|
| 313 | void OutdoorPvPHP::BuffTeam(uint32 team) |
|---|
| 314 | { |
|---|
| 315 | if(team == ALLIANCE) |
|---|
| 316 | { |
|---|
| 317 | for(std::set<uint64>::iterator itr = m_PlayerGuids[0].begin(); itr != m_PlayerGuids[0].end(); ++itr) |
|---|
| 318 | { |
|---|
| 319 | if(Player * plr = objmgr.GetPlayer(*itr)) |
|---|
| 320 | if(plr->IsInWorld()) plr->CastSpell(plr,AllianceBuff,true); |
|---|
| 321 | } |
|---|
| 322 | for(std::set<uint64>::iterator itr = m_PlayerGuids[1].begin(); itr != m_PlayerGuids[1].end(); ++itr) |
|---|
| 323 | { |
|---|
| 324 | if(Player * plr = objmgr.GetPlayer(*itr)) |
|---|
| 325 | if(plr->IsInWorld()) plr->RemoveAurasDueToSpell(HordeBuff); |
|---|
| 326 | } |
|---|
| 327 | } |
|---|
| 328 | else if(team == HORDE) |
|---|
| 329 | { |
|---|
| 330 | for(std::set<uint64>::iterator itr = m_PlayerGuids[1].begin(); itr != m_PlayerGuids[1].end(); ++itr) |
|---|
| 331 | { |
|---|
| 332 | if(Player * plr = objmgr.GetPlayer(*itr)) |
|---|
| 333 | if(plr->IsInWorld()) plr->CastSpell(plr,HordeBuff,true); |
|---|
| 334 | } |
|---|
| 335 | for(std::set<uint64>::iterator itr = m_PlayerGuids[0].begin(); itr != m_PlayerGuids[0].end(); ++itr) |
|---|
| 336 | { |
|---|
| 337 | if(Player * plr = objmgr.GetPlayer(*itr)) |
|---|
| 338 | if(plr->IsInWorld()) plr->RemoveAurasDueToSpell(AllianceBuff); |
|---|
| 339 | } |
|---|
| 340 | } |
|---|
| 341 | else |
|---|
| 342 | { |
|---|
| 343 | for(std::set<uint64>::iterator itr = m_PlayerGuids[0].begin(); itr != m_PlayerGuids[0].end(); ++itr) |
|---|
| 344 | { |
|---|
| 345 | if(Player * plr = objmgr.GetPlayer(*itr)) |
|---|
| 346 | if(plr->IsInWorld()) plr->RemoveAurasDueToSpell(AllianceBuff); |
|---|
| 347 | } |
|---|
| 348 | for(std::set<uint64>::iterator itr = m_PlayerGuids[1].begin(); itr != m_PlayerGuids[1].end(); ++itr) |
|---|
| 349 | { |
|---|
| 350 | if(Player * plr = objmgr.GetPlayer(*itr)) |
|---|
| 351 | if(plr->IsInWorld()) plr->RemoveAurasDueToSpell(HordeBuff); |
|---|
| 352 | } |
|---|
| 353 | } |
|---|
| 354 | } |
|---|
| 355 | |
|---|
| 356 | void OutdoorPvPHP::HandleKillImpl(Player *plr, Unit * killed) |
|---|
| 357 | { |
|---|
| 358 | if(killed->GetTypeId() != TYPEID_PLAYER) |
|---|
| 359 | return; |
|---|
| 360 | |
|---|
| 361 | if(plr->GetTeam() == ALLIANCE && ((Player*)killed)->GetTeam() != ALLIANCE) |
|---|
| 362 | plr->CastSpell(plr,AlliancePlayerKillReward,true); |
|---|
| 363 | else if(plr->GetTeam() == HORDE && ((Player*)killed)->GetTeam() != HORDE) |
|---|
| 364 | plr->CastSpell(plr,HordePlayerKillReward,true); |
|---|
| 365 | } |
|---|
| 366 | |
|---|
| 367 | bool OutdoorPvPObjectiveHP::HandleCapturePointEvent(Player *plr, uint32 eventId) |
|---|
| 368 | { |
|---|
| 369 | if(eventId == HP_CapturePointEvent_Enter[m_TowerType]) |
|---|
| 370 | { |
|---|
| 371 | this->HandlePlayerEnter(plr); |
|---|
| 372 | return true; |
|---|
| 373 | } |
|---|
| 374 | else if(eventId == HP_CapturePointEvent_Leave[m_TowerType]) |
|---|
| 375 | { |
|---|
| 376 | this->HandlePlayerLeave(plr); |
|---|
| 377 | return true; |
|---|
| 378 | } |
|---|
| 379 | return false; |
|---|
| 380 | } |
|---|