@@ -2140,7 +2140,8 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
21402140 dmg.dmotion = clif_skill_damage(dsrc,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skillid, -2, 5); // needs -2(!) as skill level
21412141 break;
21422142 case WL_HELLINFERNO:
2143- dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,1,skillid,-2,6);
2143+ case SR_EARTHSHAKER:
2144+ dmg.dmotion = clif_skill_damage(src, bl, tick, dmg.amotion, dmg.dmotion, damage, 1, skillid, -2, 6);
21442145 break;
21452146 case WL_SOULEXPANSION:
21462147 case WL_COMET:
@@ -7923,21 +7924,28 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
79237924 break;
79247925
79257926 case SR_CURSEDCIRCLE:
7926- if( flag&1 ){
7927- if( is_boss(bl) ) break;
7927+ if (flag&1)
7928+ {
7929+ if (is_boss(bl))
7930+ break;
79287931 if (sc_start2(bl, type, 100, skilllv, src->id, skill_get_time(skillid, skilllv)))
79297932 {
79307933 unit_stop_attack(bl);
79317934 clif_bladestop(src, bl->id, 1);
79327935 map_freeblock_unlock();
79337936 return 1;
79347937 }
7935- }else{
7938+ }
7939+ else
7940+ {
79367941 int count = 0;
7937- clif_skill_nodamage (src, src, skillid, skilllv, sc_start (src, SC_CURSEDCIRCLE_ATKER, 100, skilllv, skill_get_time( skillid,skilllv)) );
7942+ clif_skill_damage (src, bl, tick, status_get_amotion (src), 0, -30000, 1, skillid, skilllv, 6 );
79387943 count = map_forcountinrange(skill_area_sub, src, skill_get_splash(skillid,skilllv), (sd)?sd->spiritball_old:15, // Assume 15 spiritballs in non-charactors
79397944 BL_CHAR, src, skillid, skilllv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id);
7940- if( sd ) pc_delspiritball(sd, count, 0);
7945+ if(sd)
7946+ pc_delspiritball(sd, count, 0);
7947+ clif_skill_nodamage(src, src, skillid, skilllv, sc_start2(src, SC_CURSEDCIRCLE_ATKER, 100, skilllv, count, skill_get_time(skillid,skilllv)));
7948+
79417949 }
79427950 break;
79437951
@@ -7953,16 +7961,23 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
79537961 break;
79547962
79557963 case SR_ASSIMILATEPOWER:
7956- if( flag&1 ){
7964+ if (flag&1)
7965+ {
79577966 i = 0;
7958- if( dstsd && dstsd->spiritball && (sd == dstsd || map_flag_vs(src->m)) && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER ){
7967+ if (dstsd && dstsd->spiritball && (sd == dstsd || map_flag_vs(src->m)) && (dstsd->class_&MAPID_BASEMASK) != MAPID_GUNSLINGER)
7968+ {
79597969 i = dstsd->spiritball; //1%sp per spiritball.
79607970 pc_delspiritball(dstsd, dstsd->spiritball, 0);
79617971 }
7962- if( i ) status_percent_heal(src, 0, i);
7972+ if (i)
7973+ status_percent_heal(src, 0, i);
79637974 clif_skill_nodamage(src, bl, skillid, skilllv, i ? 1:0);
7964- }else
7975+ }
7976+ else
7977+ {
7978+ clif_skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6);
79657979 map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid, skilllv), splash_target(src), src, skillid, skilllv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_nodamage_id);
7980+ }
79667981 break;
79677982
79687983 case SR_POWERVELOCITY:
@@ -9017,11 +9032,15 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
90179032 type = status_skill2sc(skillid);
90189033 sce = (sc && type != -1)?sc->data[type]:NULL;
90199034
9020- if( sc ){ //Status end during cast end.
9021- if( sc->data[SC_CAMOUFLAGE] )
9022- status_change_end(src,SC_CAMOUFLAGE,INVALID_TIMER);
9023- if( sc->data[SC_CURSEDCIRCLE_ATKER] )
9024- status_change_end(src,SC_CURSEDCIRCLE_ATKER,INVALID_TIMER);
9035+ if (sc)
9036+ { //Status end during cast end.
9037+ if (sc->data[SC_CAMOUFLAGE])
9038+ status_change_end(src, SC_CAMOUFLAGE, INVALID_TIMER);
9039+ if (sc->data[SC_CURSEDCIRCLE_ATKER])
9040+ {
9041+ sc->data[SC_CURSEDCIRCLE_ATKER]->val3 = 1;
9042+ status_change_end(src, SC_CURSEDCIRCLE_ATKER, INVALID_TIMER);
9043+ }
90259044 }
90269045
90279046 switch (skillid) { //Skill effect.
@@ -12848,6 +12867,10 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, short
1284812867 case LG_RAGEBURST:
1284912868 req.spiritball = sd->rageball?sd->rageball:1;
1285012869 break;
12870+ case SR_CRESCENTELBOW:
12871+ if (sd->spiritball <= 0)
12872+ req.spiritball = 0; // Only consumes spirit spheres if these are pressent. Is a bug?
12873+ break;
1285112874 case SR_RAMPAGEBLASTER:
1285212875 req.spiritball = sd->spiritball?sd->spiritball:15;
1285312876 break;
0 commit comments