/* * Ascent MMORPG Server * Copyright (C) 2005-2007 Ascent Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include "StdAfx.h" void WorldSession::HandleDuelAccepted(WorldPacket & recv_data) { if(!_player->IsInWorld()) return; if(_player->DuelingWith == 0) return; _player->m_duelStatus = DUEL_STATUS_INBOUNDS; _player->DuelingWith->m_duelStatus = DUEL_STATUS_INBOUNDS; _player->m_duelState = DUEL_STATE_STARTED; _player->DuelingWith->m_duelState = DUEL_STATE_STARTED; WorldPacket data(SMSG_DUEL_COUNTDOWN, 4); data << uint32(3000); SendPacket(&data); _player->DuelingWith->m_session->SendPacket(&data); _player->m_duelCountdownTimer = 3000; sEventMgr.AddEvent(_player, &Player::DuelCountdown, EVENT_PLAYER_DUEL_COUNTDOWN, 1000, 3,0); } void WorldSession::HandleDuelCancelled(WorldPacket & recv_data) { if(_player->DuelingWith == 0) return; if (_player->m_duelState == DUEL_STATE_STARTED) { _player->DuelingWith->EndDuel(DUEL_WINNER_KNOCKOUT); return; } WorldPacket data(SMSG_DUEL_COMPLETE, 1); data << uint8(0); SendPacket(&data); _player->DuelingWith->m_session->SendPacket(&data); GameObject *arbiter = _player->GetMapMgr() ? _player->GetMapMgr()->GetGameObject(_player->GetUInt32Value(PLAYER_DUEL_ARBITER)) : 0; if(arbiter) { arbiter->RemoveFromWorld(); delete arbiter; } _player->SetUInt64Value(PLAYER_DUEL_ARBITER, 0); _player->DuelingWith->SetUInt64Value(PLAYER_DUEL_ARBITER, 0); _player->SetUInt32Value(PLAYER_DUEL_TEAM, 0); _player->DuelingWith->SetUInt32Value(PLAYER_DUEL_TEAM, 0); _player->DuelingWith->DuelingWith = NULL; _player->DuelingWith = NULL; }