aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/DuelHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/DuelHandler.cpp')
-rw-r--r--src/server/game/Handlers/DuelHandler.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/src/server/game/Handlers/DuelHandler.cpp b/src/server/game/Handlers/DuelHandler.cpp
index edbf1d9fdc8..902090750ff 100644
--- a/src/server/game/Handlers/DuelHandler.cpp
+++ b/src/server/game/Handlers/DuelHandler.cpp
@@ -25,49 +25,49 @@
void WorldSession::HandleDuelAcceptedOpcode(WorldPacket& recvPacket)
{
- ObjectGuid guid;
- Player* player;
- Player* plTarget;
-
- recvPacket >> guid;
-
- if (!GetPlayer()->duel) // ignore accept from duel-sender
+ Player* player = GetPlayer();
+ if (!player->duel || player == player->duel->Initiator || player->duel->State != DUEL_STATE_CHALLENGED)
return;
- player = GetPlayer();
- plTarget = player->duel->opponent;
+ ObjectGuid guid;
+ recvPacket >> guid;
- if (player == player->duel->initiator || !plTarget || player == plTarget || player->duel->startTime != 0 || plTarget->duel->startTime != 0)
+ Player* target = player->duel->Opponent;
+ if (target->GetGuidValue(PLAYER_DUEL_ARBITER) != guid)
return;
//TC_LOG_DEBUG("network", "WORLD: Received CMSG_DUEL_ACCEPTED");
TC_LOG_DEBUG("network", "Player 1 is: %u (%s)", player->GetGUID().GetCounter(), player->GetName().c_str());
- TC_LOG_DEBUG("network", "Player 2 is: %u (%s)", plTarget->GetGUID().GetCounter(), plTarget->GetName().c_str());
+ TC_LOG_DEBUG("network", "Player 2 is: %u (%s)", target->GetGUID().GetCounter(), target->GetName().c_str());
time_t now = GameTime::GetGameTime();
- player->duel->startTimer = now;
- plTarget->duel->startTimer = now;
+ player->duel->StartTime = now + 3;
+ target->duel->StartTime = now + 3;
+
+ player->duel->State = DUEL_STATE_COUNTDOWN;
+ target->duel->State = DUEL_STATE_COUNTDOWN;
player->SendDuelCountdown(3000);
- plTarget->SendDuelCountdown(3000);
+ target->SendDuelCountdown(3000);
}
void WorldSession::HandleDuelCancelledOpcode(WorldPacket& recvPacket)
{
TC_LOG_DEBUG("network", "WORLD: Received CMSG_DUEL_CANCELLED");
+ Player* player = GetPlayer();
+
ObjectGuid guid;
recvPacket >> guid;
// no duel requested
- if (!GetPlayer()->duel)
+ if (!player->duel || player->duel->State == DUEL_STATE_COMPLETED)
return;
// player surrendered in a duel using /forfeit
- if (GetPlayer()->duel->startTime != 0)
+ if (GetPlayer()->duel->State == DUEL_STATE_IN_PROGRESS)
{
GetPlayer()->CombatStopWithPets(true);
- if (GetPlayer()->duel->opponent)
- GetPlayer()->duel->opponent->CombatStopWithPets(true);
+ GetPlayer()->duel->Opponent->CombatStopWithPets(true);
GetPlayer()->CastSpell(GetPlayer(), 7267, true); // beg
GetPlayer()->DuelComplete(DUEL_WON);