Browse Source

* Follow up fff0437
Added missing 'sc_start' and 'status_change_end'

Lilith- 11 years ago
parent
commit
823c5ae5ae
1 changed files with 11 additions and 3 deletions
  1. 11 3
      src/map/skill.c

+ 11 - 3
src/map/skill.c

@@ -8823,6 +8823,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 								splash = 2;
 								splash = 2;
 							else
 							else
 								splash = 3;
 								splash = 3;
+							if( sc_start(src,bl,SC_SHIELDSPELL_DEF,100,opt,INVALID_TIMER) )
+								status_change_end(bl,SC_SHIELDSPELL_DEF,INVALID_TIMER);
 							clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6);
 							clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6);
 							map_foreachinrange(skill_area_sub,src,splash,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id);
 							map_foreachinrange(skill_area_sub,src,splash,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id);
 							break;
 							break;
@@ -8852,15 +8854,19 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 
 
 					switch( opt ) {
 					switch( opt ) {
 						case 1: // Deals Holy property magic damage around Self.
 						case 1: // Deals Holy property magic damage around Self.
+							if( sc_start(src,bl,SC_SHIELDSPELL_MDEF,100,opt,INVALID_TIMER) )
+								status_change_end(bl,SC_SHIELDSPELL_MDEF,INVALID_TIMER);
 							clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6);
 							clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6);
-							map_foreachinrange(skill_area_sub,src,splash,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|2,skill_castend_damage_id);
+							map_foreachinrange(skill_area_sub, src, splash, BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|2, skill_castend_damage_id);
 							break;
 							break;
 						case 2: // Casts Lex Divina around Self.
 						case 2: // Casts Lex Divina around Self.
-							//sc_start(src,bl,SC_SHIELDSPELL_MDEF,100,opt,INVALID_TIMER);
-							clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6);
+							if( sc_start(src,bl,SC_SHIELDSPELL_MDEF,100,opt,INVALID_TIMER) )
+								status_change_end(bl,SC_SHIELDSPELL_MDEF,INVALID_TIMER);
 							map_foreachinrange(skill_area_sub,src,splash,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_nodamage_id);
 							map_foreachinrange(skill_area_sub,src,splash,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_nodamage_id);
 							break;
 							break;
 						case 3: // Casts Magnificat.
 						case 3: // Casts Magnificat.
+							if( sc_start(src,bl,SC_SHIELDSPELL_MDEF,100,opt,INVALID_TIMER) )
+								status_change_end(bl,SC_SHIELDSPELL_MDEF,INVALID_TIMER);
 							clif_skill_nodamage(src,bl,PR_MAGNIFICAT,skill_lv,sc_start(src,bl,SC_MAGNIFICAT,100,1,sd->bonus.shieldmdef * 30000));
 							clif_skill_nodamage(src,bl,PR_MAGNIFICAT,skill_lv,sc_start(src,bl,SC_MAGNIFICAT,100,1,sd->bonus.shieldmdef * 30000));
 							break;
 							break;
 					}
 					}
@@ -8883,6 +8889,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 								sc_start4(src,bl,SC_SHIELDSPELL_REF,100,opt,val,splash,0,shield->refine * 20000);
 								sc_start4(src,bl,SC_SHIELDSPELL_REF,100,opt,val,splash,0,shield->refine * 20000);
 								break;
 								break;
 							case 3: // Recovers HP depending on Shield refine rate.
 							case 3: // Recovers HP depending on Shield refine rate.
+								if( sc_start(src,bl,SC_SHIELDSPELL_REF,100,opt,INVALID_TIMER) )
+									status_change_end(bl,SC_SHIELDSPELL_REF,INVALID_TIMER);
 								val = sstatus->max_hp * (status_get_lv(src) / 10 + shield->refine) / 100;
 								val = sstatus->max_hp * (status_get_lv(src) / 10 + shield->refine) / 100;
 								status_heal(bl,val,0,2);
 								status_heal(bl,val,0,2);
 								break;
 								break;