Parcourir la source

- Changed the state of Asura back to explosionspirits, added a hardcoded move_enable check when invoking Asura and NOT while in BladeStop or a Combo.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6552 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex il y a 19 ans
Parent
commit
03ac2b977e
3 fichiers modifiés avec 37 ajouts et 50 suppressions
  1. 3 0
      Changelog-Trunk.txt
  2. 1 1
      db/skill_require_db.txt
  3. 33 49
      src/map/skill.c

+ 3 - 0
Changelog-Trunk.txt

@@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2006/05/10
+	* Changed the state of Asura back to explosionspirits, added a hardcoded
+	  move_enable check when invoking Asura and NOT while in BladeStop or a
+	  Combo. [Skotlex]
 	* Added back SC_XMAS to status.c, it got lost sometime during all the
 	  previous reworkings. [Skotlex]
 	* Changed wedding costumes to use setoption rather than changebase.

+ 1 - 1
db/skill_require_db.txt

@@ -193,7 +193,7 @@
 268,0,0,1,0,50,0,99,0,0,none,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MO_STEELBODY#金剛#
 269,0,0,10,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,0,0,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MO_BLADESTOP#白刃取り#
 270,0,0,15,0,0,0,99,0,0,none,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MO_EXPLOSIONSPIRITS#爆裂波動#
-271,0,0,1,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,0,0,move_enable,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MO_EXTREMITYFIST#阿修羅覇凰拳#
+271,0,0,1,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,0,0,explosionspirits,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MO_EXTREMITYFIST#阿修羅覇凰拳#
 272,0,0,11:12:13:14:15,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MO_CHAINCOMBO#連打掌#
 273,0,0,11:12:13:14:15,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,0,0,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MO_COMBOFINISH#猛龍拳#
 

+ 33 - 49
src/map/skill.c

@@ -2625,54 +2625,38 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl,int s
 	
 	case KN_CHARGEATK:
 	case MO_EXTREMITYFIST:	/* ˆ¢?C—…”e–PŒ? */
+		if (skillid == MO_EXTREMITYFIST && sc && sc->count)
 		{
-			if (skillid == MO_EXTREMITYFIST && sc && sc->count)
-			{
-				if (sc->data[SC_EXPLOSIONSPIRITS].timer != -1)
-					status_change_end(src, SC_EXPLOSIONSPIRITS, -1);
-				if (sc->data[SC_BLADESTOP].timer != -1)
-					status_change_end(src,SC_BLADESTOP,-1);
-			}
-			if(!check_distance_bl(src, bl, 2)) { //Need to move to target.
-				int dx,dy;
-
-				dx = bl->x - src->x;
-				dy = bl->y - src->y;
-				if(dx > 0) dx++;
-				else if(dx < 0) dx--;
-				if (dy > 0) dy++;
-				else if(dy < 0) dy--;
-
-				if (skillid == KN_CHARGEATK) //Store distance in flag [Skotlex]
-					flag = distance_bl(src, bl);
-				
-				if (!unit_movepos(src, src->x+dx, src->y+dy, 1, 1)) {
-					if (sd) clif_skill_fail(sd,skillid,0,0);
-					break;
-				}
-				clif_slide(src,src->x,src->y);
-				if (skillid != MO_EXTREMITYFIST || battle_check_target(src, bl, BCT_ENEMY) > 0) //Check must be done here because EF should be broken this way.. [Skotlex]
-					skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
-				else if (sd)
-					clif_skill_fail(sd,skillid,0,0);
-				/* Should be uneeded as you "slide", not run to the target.
-				struct unit_data *ud;
-				ud = unit_bl2ud(src);
-				if (ud) {
-					if(dx < 0) dx = -dx;
-					if(dy < 0) dy = -dy;
-					if(dy > dx) dx = dy;
-					dy = status_get_speed(src);
-					ud->attackabletime = tick + 100 + dy*dx;
-					unit_set_walkdelay(src, tick, 100 + dy*dx, 1);
-					if(DIFF_TICK(ud->canact_tick,ud->canmove_tick)<0)
-						ud->canact_tick = ud->canmove_tick;
-				}
-				*/
+			if (sc->data[SC_EXPLOSIONSPIRITS].timer != -1)
+				status_change_end(src, SC_EXPLOSIONSPIRITS, -1);
+			if (sc->data[SC_BLADESTOP].timer != -1)
+				status_change_end(src,SC_BLADESTOP,-1);
+		}
+		if(!check_distance_bl(src, bl, 2)) { //Need to move to target.
+			int dx,dy;
+
+			dx = bl->x - src->x;
+			dy = bl->y - src->y;
+			if(dx > 0) dx++;
+			else if(dx < 0) dx--;
+			if (dy > 0) dy++;
+			else if(dy < 0) dy--;
+
+			if (skillid == KN_CHARGEATK) //Store distance in flag [Skotlex]
+				flag = distance_bl(src, bl);
+			
+			if (!unit_movepos(src, src->x+dx, src->y+dy, 1, 1)) {
+				if (sd) clif_skill_fail(sd,skillid,0,0);
+				break;
 			}
-			else //Assume minimum distance of 1 for Charge.
-				skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,skillid == KN_CHARGEATK?1:flag);
+			clif_slide(src,src->x,src->y);
+			if (skillid != MO_EXTREMITYFIST || battle_check_target(src, bl, BCT_ENEMY) > 0) //Check must be done here because EF should be broken this way.. [Skotlex]
+				skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
+			else if (sd)
+				clif_skill_fail(sd,skillid,0,0);
 		}
+		else //Assume minimum distance of 1 for Charge.
+			skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,skillid == KN_CHARGEATK?1:flag);
 		break;
 
 	/* •?ŠíŒn”Í??U?ƒXƒLƒ‹ */
@@ -7767,10 +7751,6 @@ int skill_check_condition(struct map_session_data *sd,int skill, int lv, int typ
 	case MO_EXTREMITYFIST:					// ˆ¢?C—…”e–PŒ?
 //		if(sd->sc.data[SC_EXTREMITYFIST].timer != -1) //To disable Asura during the 5 min skill block uncomment this...
 //			return 0;
-		if(sd->sc.data[SC_EXPLOSIONSPIRITS].timer == -1) {
-			clif_skill_fail(sd,skill,0,0);
-			return 0;
-		}
 		if(sd->sc.data[SC_BLADESTOP].timer!=-1)
 			spiritball--;
 		else if (sd->sc.data[SC_COMBO].timer != -1) {
@@ -7781,6 +7761,10 @@ int skill_check_condition(struct map_session_data *sd,int skill, int lv, int typ
 			else if (sd->sc.data[SC_COMBO].val1 == CH_CHAINCRUSH)
 				spiritball = sd->spiritball?sd->spiritball:1;
 			//It should consume whatever is left as long as it's at least 1.
+		} else if(!unit_can_move(&sd->bl))
+	  	{	//Placed here as ST_MOVE_ENABLE should not apply if rooted or on a combo. [Skotlex]
+			clif_skill_fail(sd,skill,0,0);
+			return 0;
 		}
 		break;