summaryrefslogtreecommitdiff
path: root/src/map/battle.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/battle.c')
-rw-r--r--src/map/battle.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index e1cb5859c..53d5e6ac8 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -4352,11 +4352,16 @@ 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;
- switch( target->type )
- { // Checks on actual target
- case BL_PC:
- if (((TBL_PC*)target)->invincible_timer != INVALID_TIMER || pc_isinvisible((TBL_PC*)target))
- return -1; //Cannot be targeted yet.
+ switch( target->type ) { // Checks on actual target
+ case BL_PC: {
+ struct status_change* sc = status_get_sc(src);
+ if (((TBL_PC*)target)->invincible_timer != INVALID_TIMER || pc_isinvisible((TBL_PC*)target))
+ return -1; //Cannot be targeted yet.
+ if( sc && sc->count ) {
+ if( sc->data[SC_VOICEOFSIREN] && sc->data[SC_VOICEOFSIREN]->val2 == target->id )
+ return -1;
+ }
+ }
break;
case BL_MOB:
if((((TBL_MOB*)target)->special_state.ai == 2 || //Marine Spheres