diff options
-rw-r--r-- | src/map/skill.c | 8 | ||||
-rw-r--r-- | src/map/status.c | 8 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index 8f5df51a2..718bf7faa 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2475,6 +2475,9 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds case HT_LANDMINE: dmg.dmotion = clif_skill_damage(dsrc,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skillid, -1, type); break; + case WZ_SIGHTBLASTER: + dmg.dmotion = clif_skill_damage(src,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skillid, flag&SD_LEVEL?-1:skilllv, 5); + break; case AB_DUPLELIGHT_MELEE: case AB_DUPLELIGHT_MAGIC: dmg.amotion = 300;/* makes the damage value not overlap with previous damage (when displayed by the client) */ @@ -7151,7 +7154,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case SL_SWOO: if (tsce) { - sc_start(src,SC_STUN,100,skilllv,10000); + if(sd) + clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0); + status_change_start(src,SC_STUN,10000,skilllv,0,0,0,10000,8); + status_change_end(bl, SC_SWOO, INVALID_TIMER); break; } case SL_SKA: // [marquis007] diff --git a/src/map/status.c b/src/map/status.c index 2f83caf52..7cf76c56e 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -9783,7 +9783,10 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) case SC_SIGHT: case SC_RUWACH: case SC_SIGHTBLASTER: - map_foreachinrange( status_change_timer_sub, bl, sce->val3, BL_CHAR, bl, sce, type, tick); + if(type == SC_SIGHTBLASTER) + map_foreachinrange( status_change_timer_sub, bl, sce->val3, BL_CHAR|BL_SKILL, bl, sce, type, tick); + else + map_foreachinrange( status_change_timer_sub, bl, sce->val3, BL_CHAR, bl, sce, type, tick); if( --(sce->val2)>0 ){ sce->val4 += 250; // use for Shadow Form 2 seconds checking. @@ -10566,7 +10569,8 @@ int status_change_timer_sub(struct block_list* bl, va_list ap) status_check_skilluse(src, bl, WZ_SIGHTBLASTER, 2)) { skill_attack(BF_MAGIC,src,src,bl,WZ_SIGHTBLASTER,1,tick,0); - if (sce) sce->val2 = 0; //This signals it to end. + if (sce && !(bl->type&BL_SKILL)) //The hit is not counted if it's against a trap + sce->val2 = 0; //This signals it to end. } break; case SC_CLOSECONFINE: |