[7460] Fixed possible cheating in rated arena by ressurection after relog.

Fix: Do not allow to remove insignia from players in arena!
Fixed ending arena match when last player of team logs out.

Signed-off-by: Triply <triply@getmangos.com>
This commit is contained in:
Triply 2009-03-14 22:31:10 +01:00
parent e4a5a47178
commit 7dd997617e
3 changed files with 10 additions and 5 deletions

View file

@ -1200,7 +1200,11 @@ void BattleGround::EventPlayerLoggedOut(Player* player)
if( isBattleGround() )
EventPlayerDroppedFlag(player);
else
CheckArenaWinConditions();
{
//1 player is logging out, if it is the last, then end arena!
if( GetAlivePlayersCountByTeam(player->GetTeam()) <= 1 && GetPlayersCountByTeam(GetOtherTeam(player->GetTeam())) )
EndBattleGround(GetOtherTeam(player->GetTeam()));
}
}
}
@ -1668,8 +1672,9 @@ void BattleGround::HandleKillPlayer( Player *player, Player *killer )
}
}
// to be able to remove insignia
player->SetFlag( UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE );
// to be able to remove insignia -- ONLY IN BattleGrounds
if( !isArena() )
player->SetFlag( UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE );
}
// return the player's team based on battlegroundplayer info

View file

@ -4044,7 +4044,7 @@ void Player::CreateCorpse()
flags |= CORPSE_FLAG_HIDE_HELM;
if(HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK))
flags |= CORPSE_FLAG_HIDE_CLOAK;
if(InBattleGround())
if(InBattleGround() && !InArena())
flags |= CORPSE_FLAG_LOOTABLE; // to be able to remove insignia
corpse->SetUInt32Value( CORPSE_FIELD_FLAGS, flags );

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "7459"
#define REVISION_NR "7460"
#endif // __REVISION_NR_H__