From 4328a8e9beba3b67008c3cae6ac91acf7bfa36c6 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Wed, 18 Jul 2012 20:19:16 +0000 Subject: Follow up r16445 performance improvement. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16446 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/battle.c | 43 +++++++++++++------------------------------ 1 file changed, 13 insertions(+), 30 deletions(-) (limited to 'src/map') diff --git a/src/map/battle.c b/src/map/battle.c index 561f9ef53..79e7a00b0 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4801,38 +4801,21 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f if( (s_bl = battle_get_master(src)) == NULL ) s_bl = src; - // Disable PVM for specific groups. - if (src->type&BL_PC && target->type&BL_MOB && src->id && map_id2sd(src->id) != NULL) - { // Source => PC, Target => MOB - if (pc_has_permission(map_id2sd(src->id), PC_PERM_DISABLE_PVM)) - return 0; - } - else if (src->type&BL_HOM && target->type&BL_MOB) - { // Source => HOM, Target => MOB; check the master BL id of homun - struct homun_data *hd = (TBL_HOM*)src; - if (hd != NULL && hd->master->bl.id) - { - if (pc_has_permission(map_id2sd(hd->master->bl.id), PC_PERM_DISABLE_PVM)) - return 0; - } - } - - // Disable PVP - if (src->type&BL_PC && target->type&(BL_PC|BL_HOM) && src->id && map_id2sd(src->id) != NULL) - { // Source => PC, Target => PC - if (pc_has_permission(map_id2sd(src->id), PC_PERM_DISABLE_PVP)) - return 0; - } - else if (src->type&BL_HOM && target->type&(BL_HOM|BL_PC)) - { // Source => HOM, Target => MOB|PC; check the master BL id of homun - struct homun_data *hd = (TBL_HOM*)src; - if (hd != NULL && hd->master->bl.id) - { - if (pc_has_permission(map_id2sd(hd->master->bl.id), PC_PERM_DISABLE_PVP)) - return 0; + if ( s_bl->type == BL_PC ) { + switch( t_bl->type ) { + case BL_MOB: // Source => PC, Target => MOB + if ( pc_has_permission((TBL_PC*)s_bl, PC_PERM_DISABLE_PVM) ) + return 0; + break; + case BL_PC: + if (pc_has_permission((TBL_PC*)s_bl, PC_PERM_DISABLE_PVP)) + return 0; + break; + default:/* anything else goes */ + break; } } - + switch( target->type ) { // Checks on actual target case BL_PC: { struct status_change* sc = status_get_sc(src); -- cgit v1.2.3-70-g09d2