summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/battle.c2
-rw-r--r--src/map/status.c16
2 files changed, 8 insertions, 10 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index 16187cc46..7b83f5e20 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -4191,7 +4191,7 @@ void battle_set_defaults() {
battle_config.allow_es_magic_pc = 0;
battle_config.skill_caster_check = 1;
- battle_config.sc_castcancel = 0;
+ battle_config.sc_castcancel = BL_NUL;
battle_config.pc_sc_def_rate = 100;
battle_config.mob_sc_def_rate = 100;
battle_config.pc_luk_sc_def = 300;
diff --git a/src/map/status.c b/src/map/status.c
index b5dc06b07..d0c8310e8 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -968,8 +968,9 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
if(sc && sc->count)
{
- if(sc->opt1 >0 && (battle_config.sc_castcancel || flag != 1))
- //When sc do not cancel casting, the spell should come out.
+ if(sc->opt1 >0 && flag != 1)
+ //When sc do not cancel casting, the spell should come out, and when it does, we can never have
+ //a flag == 1 && sc->opt1 case, since cancelling should had been stopped before.
return 0;
if (
@@ -5649,7 +5650,7 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
unit_stop_attack(bl);
skill_stop_dancing(bl);
// Cancel cast when get status [LuzZza]
- if (battle_config.sc_castcancel)
+ if (battle_config.sc_castcancel&bl->type)
unit_skillcastcancel(bl, 0);
case SC_STOP:
case SC_CONFUSION:
@@ -5665,7 +5666,7 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
unit_stop_attack(bl);
break;
case SC_SILENCE:
- if (battle_config.sc_castcancel)
+ if (battle_config.sc_castcancel&bl->type)
unit_skillcastcancel(bl, 0);
break;
}
@@ -6053,11 +6054,8 @@ int status_change_end( struct block_list* bl , int type,int tid )
status_change_end(bl,SC_LONGING,-1);
break;
case SC_NOCHAT:
- if (sd) {
- if (sd->status.manner < 0 && tid != -1)
- sd->status.manner = 0;
- clif_updatestatus(sd,SP_MANNER);
- }
+ if (sd && sd->status.manner < 0 && tid != -1)
+ sd->status.manner = 0;
break;
case SC_SPLASHER:
{