|
@@ -5652,7 +5652,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|
|
case BO_ACIDIFIED_ZONE_WIND:
|
|
|
case BO_ACIDIFIED_ZONE_FIRE:
|
|
|
case TR_ROSEBLOSSOM_ATK:
|
|
|
- case TR_METALIC_FURY:
|
|
|
case ABC_FROM_THE_ABYSS_ATK:
|
|
|
case EM_ELEMENTAL_BUSTER_FIRE:
|
|
|
case EM_ELEMENTAL_BUSTER_WATER:
|
|
@@ -5847,11 +5846,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|
|
if (bl->type == BL_PC)// Place single cell AoE if hitting a player.
|
|
|
skill_castend_pos2(src, bl->x, bl->y, skill_id, skill_lv, tick, 0);
|
|
|
break;
|
|
|
- case TR_METALIC_FURY:
|
|
|
- clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
|
|
- if (tsc && tsc->getSCE(SC_SOUNDBLEND))
|
|
|
- skill_area_temp[0] = 1 + rnd()%4;
|
|
|
- break;
|
|
|
case MT_RUSH_QUAKE:
|
|
|
// Jump to the target before attacking.
|
|
|
if( skill_check_unit_movepos( 5, src, bl->x, bl->y, 0, 1 ) ){
|
|
@@ -5881,6 +5875,24 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
+ case TR_METALIC_FURY:
|
|
|
+ {
|
|
|
+ if (flag & 1) {
|
|
|
+ clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
|
|
+ skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
|
|
|
+ } else {
|
|
|
+ int area = skill_get_splash(skill_id, skill_lv);
|
|
|
+ int count = map_forcountinarea(skill_check_bl_sc,bl->m,bl->x - area,bl->y - area,bl->x + area,bl->y + area,5,BL_MOB,SC_SOUNDBLEND);
|
|
|
+ if (count > 0){
|
|
|
+ map_foreachinarea(skill_area_sub, bl->m, bl->x - area, bl->y - area, bl->x + area, bl->y + area, BL_CHAR,
|
|
|
+ src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill_castend_damage_id);
|
|
|
+ } else{
|
|
|
+ clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
|
|
+ skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
//Place units around target
|
|
|
case NJ_BAKUENRYU:
|
|
@@ -16994,6 +17006,28 @@ static bool skill_check_condition_sc_required(map_session_data *sd, unsigned sho
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+* Check SC of BL
|
|
|
+* @param sc
|
|
|
+* @param skill_id
|
|
|
+* @return 1 if condition is met, 0 otherwise
|
|
|
+**/
|
|
|
+
|
|
|
+int skill_check_bl_sc(struct block_list *target, va_list ap) {
|
|
|
+
|
|
|
+ nullpo_ret(target);
|
|
|
+
|
|
|
+ int sc_id = va_arg(ap,int);
|
|
|
+
|
|
|
+ status_change *sc = status_get_sc(target);
|
|
|
+
|
|
|
+ if (sc && sc->getSCE(sc_id))
|
|
|
+ return 1;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* Check skill condition when cast begin
|
|
|
* For ammo, only check if the skill need ammo
|