Browse Source

- Fixed wizard sightblaster skill which was not knocking back traps. (bugreport:144)
- Fixed soul linker Swoo(Eswoo) skill to make proper application of stun to caster and target when the second is shrunkened.(bugreport:6157)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17008 54d463be-8e91-2dee-dedb-b68131a5f0ec

markzd 12 năm trước cách đây
mục cha
commit
b99e879dfc
2 tập tin đã thay đổi với 13 bổ sung3 xóa
  1. 7 1
      src/map/skill.c
  2. 6 2
      src/map/status.c

+ 7 - 1
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]

+ 6 - 2
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: