|
@@ -3959,6 +3959,14 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data)
|
|
case BS_HAMMERFALL:
|
|
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));
|
|
sc_start(src, target, status_skill2sc(skl->skill_id), skl->type, skl->skill_lv, skill_get_time2(skl->skill_id, skl->skill_lv));
|
|
break;
|
|
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_foreachinrange(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_foreachinrange(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:
|
|
case WZ_WATERBALL:
|
|
{
|
|
{
|
|
//Get the next waterball cell to consume
|
|
//Get the next waterball cell to consume
|
|
@@ -4658,6 +4666,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|
case NJ_HUUMA:
|
|
case NJ_HUUMA:
|
|
case ASC_METEORASSAULT:
|
|
case ASC_METEORASSAULT:
|
|
case GS_SPREADATTACK:
|
|
case GS_SPREADATTACK:
|
|
|
|
+ case NPC_EARTHQUAKE:
|
|
case NPC_PULSESTRIKE:
|
|
case NPC_PULSESTRIKE:
|
|
case NPC_HELLJUDGEMENT:
|
|
case NPC_HELLJUDGEMENT:
|
|
case NPC_VAMPIRE_GIFT:
|
|
case NPC_VAMPIRE_GIFT:
|
|
@@ -4741,6 +4750,9 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|
case MH_XENO_SLASHER:
|
|
case MH_XENO_SLASHER:
|
|
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);
|
|
break;
|
|
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 WM_REVERBERATION_MELEE:
|
|
case WM_REVERBERATION_MELEE:
|
|
case WM_REVERBERATION_MAGIC:
|
|
case WM_REVERBERATION_MAGIC:
|
|
skill_area_temp[1] = 0;
|
|
skill_area_temp[1] = 0;
|
|
@@ -4765,7 +4777,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|
skill_area_temp[0] = map_foreachinrange(skill_area_sub, bl, (skill_id == AS_SPLASHER)?1:skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, BCT_ENEMY, skill_area_sub_count);
|
|
skill_area_temp[0] = map_foreachinrange(skill_area_sub, bl, (skill_id == AS_SPLASHER)?1:skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, BCT_ENEMY, skill_area_sub_count);
|
|
|
|
|
|
// recursive invocation of skill_castend_damage_id() with flag|1
|
|
// recursive invocation of skill_castend_damage_id() with flag|1
|
|
- if (battle_config.skill_wall_check)
|
|
|
|
|
|
+ if (battle_config.skill_wall_check && skill_id != NPC_EARTHQUAKE)
|
|
map_foreachinshootrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), starget, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id);
|
|
map_foreachinshootrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), starget, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id);
|
|
else
|
|
else
|
|
map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), starget, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id);
|
|
map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), starget, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id);
|
|
@@ -6841,6 +6853,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
|
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
|
case SR_EARTHSHAKER:
|
|
case SR_EARTHSHAKER:
|
|
case NC_INFRAREDSCAN:
|
|
case NC_INFRAREDSCAN:
|
|
|
|
+ case NPC_EARTHQUAKE:
|
|
case NPC_VAMPIRE_GIFT:
|
|
case NPC_VAMPIRE_GIFT:
|
|
case NPC_HELLJUDGEMENT:
|
|
case NPC_HELLJUDGEMENT:
|
|
case NPC_PULSESTRIKE:
|
|
case NPC_PULSESTRIKE:
|
|
@@ -11588,7 +11601,6 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
|
|
#ifdef RENEWAL
|
|
#ifdef RENEWAL
|
|
case NJ_HUUMA:
|
|
case NJ_HUUMA:
|
|
#endif
|
|
#endif
|
|
- case NPC_EARTHQUAKE:
|
|
|
|
case NPC_EVILLAND:
|
|
case NPC_EVILLAND:
|
|
case RA_ELECTRICSHOCKER:
|
|
case RA_ELECTRICSHOCKER:
|
|
case RA_CLUSTERBOMB:
|
|
case RA_CLUSTERBOMB:
|
|
@@ -12759,9 +12771,6 @@ struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 skill_
|
|
|
|
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- case NPC_EARTHQUAKE:
|
|
|
|
- clif_skill_damage(src, src, gettick(), status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SKILL);
|
|
|
|
- break;
|
|
|
|
case GC_POISONSMOKE:
|
|
case GC_POISONSMOKE:
|
|
if( !(sc && sc->data[SC_POISONINGWEAPON]) )
|
|
if( !(sc && sc->data[SC_POISONINGWEAPON]) )
|
|
return NULL;
|
|
return NULL;
|
|
@@ -13523,11 +13532,6 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, uns
|
|
skill_delunit(unit);
|
|
skill_delunit(unit);
|
|
break;
|
|
break;
|
|
|
|
|
|
- case UNT_EARTHQUAKE:
|
|
|
|
- skill_attack(BF_MAGIC, ss, &unit->bl, bl, sg->skill_id, sg->skill_lv, tick,
|
|
|
|
- map_foreachinrange(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));
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
case UNT_SKIDTRAP: {
|
|
case UNT_SKIDTRAP: {
|
|
//Knockback away from position of user during placement [Playtester]
|
|
//Knockback away from position of user during placement [Playtester]
|
|
skill_blown(&unit->bl,bl,skill_get_blewcount(sg->skill_id,sg->skill_lv),
|
|
skill_blown(&unit->bl,bl,skill_get_blewcount(sg->skill_id,sg->skill_lv),
|