Browse Source

- High-Jump is usable everywhere now, except that on maps where it previously failed, now will just make you jump in place.
- Fixed TK_RUN as per packets provided by AuronX.
- Corrected Ki Explosion to have range 1 and to take your weapon's element.


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

skotlex 18 years ago
parent
commit
0cedd1e5f4
6 changed files with 32 additions and 20 deletions
  1. 3 0
      Changelog-Trunk.txt
  2. 2 0
      db/Changelog.txt
  3. 2 2
      db/skill_db.txt
  4. 19 16
      src/map/skill.c
  5. 3 2
      src/map/status.h
  6. 3 0
      src/map/unit.c

+ 3 - 0
Changelog-Trunk.txt

@@ -5,6 +5,9 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 
 2006/09/18
+	* High-Jump is usable everywhere now, except that on maps where it
+	  previously failed, now will just make you jump in place. [Skotlex]
+	* Fixed TK_RUN as per packets provided by AuronX. [Skotlex]
 	* Moved the equipment/card resistances to status ailments outside of
 	  status_get_sc_def, so that they are applied only to rate, not duration.
 	  [Skotlex]

+ 2 - 0
db/Changelog.txt

@@ -20,6 +20,8 @@
 
 =========================
 09/18
+	* Corrected Ki Explosion to have range 1 and to take your weapon's element.
+	  [Skotlex]
 	* Fixing Holden combo not draining sp correctly [Playtester]
 	* Added official Rachel Sanctuary mob stats [Playtester]
 	* Fixed the order of mob skills thanks to [Leon] [Playtester]

+ 2 - 2
db/skill_db.txt

@@ -1,7 +1,7 @@
 //id,range,hit,inf,pl,nk,splash,max,list_num,castcancel,cast_defence_rate,inf2,maxcount,skill_type,blow_count
 // 01 ID
 // 02 range (combo skills do not check for range when used, if 0 and skill is 
-//    not inf = 4, use base weapon's range)
+//    not inf = 4, use attack range)
 // 03 hit (8- repeated hitting, 6- single-hit)
 // 04 inf (0- passive, 1- enemy, 2- place, 4- self, 16- friend, 32- trap)
 // 05 pl attributes (0- nothing, 1- water, 2- earth, 3- fire, 4- wind,
@@ -585,7 +585,7 @@
 1013,0,6,4,0,3,2,1,0,no,0,1,0,weapon,0	//BS_GREED#Greed#
 1014,0,6,4,6,3,14,1,0,yes,0,1,0,magic,0	//PR_REDEMPTIO#Redemptio#
 1015,9,6,16,0,1,0,1,1,no,0,1025,0,weapon,0	//MO_KITRANSLATION#Ki Translation#
-1016,0,6,1,0,2,1,1,1,no,0,1,0,weapon,5	//MO_BALKYOUNG#Ki Explosion#
+1016,-1,6,1,-1,2,1,1,1,no,0,1,0,weapon,5	//MO_BALKYOUNG#Ki Explosion#
 1017,9,6,1,2,1,0,1,1,yes,0,1,0,magic,0	//SA_ELEMENTGROUND#Elemental Change Earth#
 1018,9,6,1,3,1,0,1,1,yes,0,1,0,magic,0	//SA_ELEMENTFIRE#Elemental Change Fire#
 1019,9,6,1,4,1,0,1,1,yes,0,1,0,magic,0	//SA_ELEMENTWIND#Elemental Change Wind#

+ 19 - 16
src/map/skill.c

@@ -883,13 +883,6 @@ int skillnotok (int skillid, struct map_session_data *sd)
 				return 1;
 			}
 			return 0;
-		case TK_HIGHJUMP:
-			if(map[m].flag.noteleport && !map_flag_vs(m))
-		  	{	//Can't be used on noteleport maps, except for vs maps [Skotlex]
-				clif_skill_fail(sd,skillid,0,0);
-				return 1;
-			}
-			break;
 		case WE_CALLPARTNER:
 		case WE_CALLPARENT:
 		case WE_CALLBABY:
@@ -4162,13 +4155,17 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 		clif_skill_nodamage(src,bl,skillid,-1,i); //Hide skill-scream animation.
 		break;
 	case TK_RUN:
-			if (tsc && tsc->data[type].timer != -1)
-				i = status_change_end(bl, type, -1);
-			else
-				i = sc_start4(bl,type,100,skilllv,unit_getdir(bl),0,0,0);
-//			If the client receives a skill-use packet inmediately before
-//			a walkok packet, it will discard the walk packet! [Skotlex]
-//			clif_skill_nodamage(src,bl,skillid,skilllv,i);
+			if (tsc && tsc->data[type].timer != -1) 
+				clif_skill_nodamage(src,bl,skillid,skilllv,
+					status_change_end(bl, type, -1));
+			else {
+				clif_skill_nodamage(src,bl,skillid,skilllv,
+					sc_start4(bl,type,100,skilllv,unit_getdir(bl),0,0,0));
+//				If the client receives a skill-use packet inmediately before
+//				a walkok packet, it will discard the walk packet! [Skotlex]
+//				So aegis has to resend the walk ok.
+				if (sd) clif_walkok(sd);
+			}
 		break;
 	case AS_CLOAKING:
 		if(tsc && tsc->data[type].timer!=-1 )
@@ -4680,8 +4677,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 		{
 			int x,y, dir = unit_getdir(src);
 
-			x = src->x + dirx[dir]*skilllv*2;
-			y = src->y + diry[dir]*skilllv*2;
+		  	//Fails on noteleport maps, except for vs maps [Skotlex]
+			if(map[src->m].flag.noteleport && !map_flag_vs(src->m)) {
+				x = src->x;
+				y = src->y;
+			} else {
+				x = src->x + dirx[dir]*skilllv*2;
+				y = src->y + diry[dir]*skilllv*2;
+			}
 			
 			clif_skill_nodamage(src,bl,TK_HIGHJUMP,skilllv,1);
 			if(map_getcell(src->m,x,y,CELL_CHKPASS)) {

+ 3 - 2
src/map/status.h

@@ -353,13 +353,14 @@ enum {
 	SI_JOINTBEAT		= 125,
 	SI_DEVOTION		= 130,
 	SI_STEELBODY		= 132,
-	//134 - Soullink-like effect which makes the character get wavy.
+	SI_RUN			= 133,
+	SI_BUMP			= 134,
 	SI_READYSTORM		= 135,
 	SI_READYDOWN		= 137,
 	SI_READYTURN		= 139,
 	SI_READYCOUNTER		= 141,
 	SI_DODGE		= 143,
-	SI_RUN		= 144,
+	//SI_RUN		= 144,  //is not RUN. need info on what this is.
 	SI_SPURT			= 145,
 	SI_SHADOWWEAPON		= 146,
 	SI_ADRENALINE2		= 147,

+ 3 - 0
src/map/unit.c

@@ -386,8 +386,11 @@ int unit_run(struct block_list *bl)
 
 	if(to_x == bl->x && to_y == bl->y) {
 		//If you can't run forward, you must be next to a wall, so bounce back. [Skotlex]
+		clif_status_change(bl, SI_BUMP, 1);
 		status_change_end(bl,SC_RUN,-1);
 		skill_blown(bl,bl,skill_get_blewcount(TK_RUN,sc->data[SC_RUN].val1)|0x10000);
+		clif_fixpos(bl); //Why is a clif_slide (skill_blown) AND a fixpos needed? Ask Aegis.
+		clif_status_change(bl, SI_BUMP, 0);
 		return 0;
 	}
 	unit_walktoxy(bl, to_x, to_y, 1);