|
@@ -3579,6 +3579,9 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
|
|
case LG_OVERBRAND_PLUSATK:
|
|
|
dmg.dmotion = clif_skill_damage(dsrc,bl,tick,status_get_amotion(src),dmg.dmotion,damage,dmg.div_,skill_id,-1,DMG_SPLASH);
|
|
|
break;
|
|
|
+ case NPC_EARTHQUAKE:
|
|
|
+ dmg.dmotion = clif_skill_damage(src, bl, tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skill_id, -1, DMG_ENDURE);
|
|
|
+ break;
|
|
|
case NPC_DARKPIERCING:
|
|
|
case EL_FIRE_BOMB:
|
|
|
case EL_FIRE_BOMB_ATK:
|
|
@@ -4261,14 +4264,6 @@ static TIMER_FUNC(skill_timerskill){
|
|
|
case BS_HAMMERFALL:
|
|
|
sc_start(src, target, status_skill2sc(skl->skill_id), skl->type, skl->skill_lv, skill_get_time2(skl->skill_id, skl->skill_lv));
|
|
|
break;
|
|
|
- case NPC_EARTHQUAKE:
|
|
|
- if( skl->type > 1 )
|
|
|
- skill_addtimerskill(src,tick+250,src->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag);
|
|
|
- skill_area_temp[0] = map_foreachinallrange(skill_area_sub, src, skill_get_splash(skl->skill_id, skl->skill_lv), BL_CHAR, src, skl->skill_id, skl->skill_lv, tick, BCT_ENEMY, skill_area_sub_count);
|
|
|
- skill_area_temp[1] = src->id;
|
|
|
- skill_area_temp[2] = 0;
|
|
|
- map_foreachinallrange(skill_area_sub, src, skill_get_splash(skl->skill_id, skl->skill_lv), splash_target(src), src, skl->skill_id, skl->skill_lv, tick, skl->flag, skill_castend_damage_id);
|
|
|
- break;
|
|
|
case WZ_WATERBALL:
|
|
|
{
|
|
|
//Get the next waterball cell to consume
|
|
@@ -5110,7 +5105,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|
|
case NJ_HUUMA:
|
|
|
case ASC_METEORASSAULT:
|
|
|
case GS_SPREADATTACK:
|
|
|
- case NPC_EARTHQUAKE:
|
|
|
case NPC_PULSESTRIKE:
|
|
|
case NPC_HELLJUDGEMENT:
|
|
|
case NPC_VAMPIRE_GIFT:
|
|
@@ -5225,9 +5219,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|
|
case MH_XENO_SLASHER:
|
|
|
clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE);
|
|
|
break;
|
|
|
- case NPC_EARTHQUAKE: //FIXME: Isn't EarthQuake a ground skill after all?
|
|
|
- skill_addtimerskill(src,tick+250,src->id,0,0,skill_id,skill_lv,2,flag|BCT_ENEMY|SD_SPLASH|1);
|
|
|
- break;
|
|
|
case NPC_REVERBERATION_ATK:
|
|
|
case NC_ARMSCANNON:
|
|
|
skill_area_temp[1] = 0;
|
|
@@ -7584,7 +7575,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
|
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
|
|
case SR_EARTHSHAKER:
|
|
|
case NC_INFRAREDSCAN:
|
|
|
- case NPC_EARTHQUAKE:
|
|
|
case NPC_VAMPIRE_GIFT:
|
|
|
case NPC_HELLJUDGEMENT:
|
|
|
case NPC_PULSESTRIKE:
|
|
@@ -12445,6 +12435,10 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
|
|
|
skill_unitsetting(src,skill_id,skill_lv,x,y,0);
|
|
|
flag|=1;
|
|
|
break;
|
|
|
+ case NPC_EARTHQUAKE:
|
|
|
+ clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE);
|
|
|
+ skill_unitsetting(src, skill_id, skill_lv, x, y, 0);
|
|
|
+ break;
|
|
|
#ifndef RENEWAL
|
|
|
case HP_BASILICA:
|
|
|
if( sc->data[SC_BASILICA] ) {
|
|
@@ -14445,6 +14439,11 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, t_t
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
+ case UNT_EARTHQUAKE:
|
|
|
+ sg->val1++; // Hit count
|
|
|
+ skill_attack(skill_get_type(sg->skill_id), ss, &unit->bl, bl, sg->skill_id, sg->skill_lv, tick, map_foreachinallrange(skill_area_sub, &unit->bl, skill_get_splash(sg->skill_id, sg->skill_lv), BL_CHAR, &unit->bl, sg->skill_id, sg->skill_lv, tick, BCT_ENEMY, skill_area_sub_count) | (sg->val1 == 1 ? NPC_EARTHQUAKE_FLAG : 0));
|
|
|
+ break;
|
|
|
+
|
|
|
case UNT_ELECTRICSHOCKER:
|
|
|
if( bl->id != ss->id ) {
|
|
|
if( status_change_start(ss, bl,type,10000,sg->skill_lv,sg->group_id,0,0,skill_get_time2(sg->skill_id, sg->skill_lv), SCSTART_NORATEDEF) ) {
|