summaryrefslogtreecommitdiff
path: root/src/map/battle.c
diff options
context:
space:
mode:
authorshennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-07-18 20:19:16 +0000
committershennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-07-18 20:19:16 +0000
commit4328a8e9beba3b67008c3cae6ac91acf7bfa36c6 (patch)
tree391fb88e294826a3231bb50d453b9187494c9310 /src/map/battle.c
parentd049046dc121866bc7c2d62bf5773adf05335870 (diff)
downloadhercules-4328a8e9beba3b67008c3cae6ac91acf7bfa36c6.tar.gz
hercules-4328a8e9beba3b67008c3cae6ac91acf7bfa36c6.tar.bz2
hercules-4328a8e9beba3b67008c3cae6ac91acf7bfa36c6.tar.xz
hercules-4328a8e9beba3b67008c3cae6ac91acf7bfa36c6.zip
Follow up r16445 performance improvement.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16446 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/battle.c')
-rw-r--r--src/map/battle.c43
1 files changed, 13 insertions, 30 deletions
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);