summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-08-01 01:17:46 +0000
committershennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-08-01 01:17:46 +0000
commitecfd02c5e01fbf567d4b1694daafe0281418c6f1 (patch)
treea78d3e087b6439c9276349f65e94e2df880764b0
parent181aa8fe1ab62d5eb89b8c4478a48afa28b6c311 (diff)
downloadhercules-ecfd02c5e01fbf567d4b1694daafe0281418c6f1.tar.gz
hercules-ecfd02c5e01fbf567d4b1694daafe0281418c6f1.tar.bz2
hercules-ecfd02c5e01fbf567d4b1694daafe0281418c6f1.tar.xz
hercules-ecfd02c5e01fbf567d4b1694daafe0281418c6f1.zip
Fixed bugreport:6380 Snap/Body Relocation animation, super ultra special thanks to emong.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16541 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--db/packet_db.txt1
-rw-r--r--src/map/clif.c21
-rw-r--r--src/map/clif.h2
-rw-r--r--src/map/skill.c11
4 files changed, 27 insertions, 8 deletions
diff --git a/db/packet_db.txt b/db/packet_db.txt
index a7360006a..56164d378 100644
--- a/db/packet_db.txt
+++ b/db/packet_db.txt
@@ -1645,6 +1645,7 @@ packet_ver: 27
0x088a,6,getcharnamerequest,2
0x0838,6,solvecharname,2
0x0439,8,useitem,2:4
+0x08d2,10
// 2011-11-02aRagexe
packet_ver: 28
diff --git a/src/map/clif.c b/src/map/clif.c
index d7de80247..f5d371c70 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -16096,7 +16096,7 @@ int clif_status_load_notick(struct block_list *bl,int type,int flag,int val1, in
WBUFL(buf,17) = val2;
WBUFL(buf,21) = val3;
- clif_send(buf,packet_len(WBUFW(buf,0)),bl,AREA);
+ clif_send(buf,packet_len(0x043f),bl,AREA);
return 0;
}
//Notifies FD of ID's type
@@ -16174,14 +16174,16 @@ void clif_talisman(struct map_session_data *sd,short type)
void clif_parse_MoveItem(int fd, struct map_session_data *sd) {
#if PACKETVER >= 20111122
int index;
-
+
+ /* can't move while dead. */
if(pc_isdead(sd)) {
return;
}
+
index = RFIFOW(fd,2)-2;
if (index < 0 || index >= MAX_INVENTORY)
return;
- if (sd->status.inventory[index].favorite && sd->status.inventory[index].favorite == 1)
+ if ( sd->status.inventory[index].favorite )
sd->status.inventory[index].favorite = 0;
else
sd->status.inventory[index].favorite = 1;
@@ -16203,6 +16205,17 @@ void clif_favorite_item(struct map_session_data* sd, unsigned short index) {
WFIFOSET(fd,packet_len(0x908));
}
+void clif_snap( struct block_list *bl, short x, short y ) {
+ unsigned char buf[10];
+
+ WBUFW(buf,0) = 0x8d2;
+ WBUFL(buf,2) = bl->id;
+ WBUFW(buf,6) = x;
+ WBUFW(buf,8) = y;
+
+ clif_send(buf,packet_len(0x8d2),bl,AREA);
+}
+
/*==========================================
* Main client packet processing function
*------------------------------------------*/
@@ -16590,7 +16603,7 @@ static int packetdb_readdb(void)
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
//#0x08C0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
//#0x0900
diff --git a/src/map/clif.h b/src/map/clif.h
index ef404cee5..1c768138a 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -738,6 +738,8 @@ void clif_elemental_updatestatus(struct map_session_data *sd, int type);
void clif_talisman(struct map_session_data *sd, short type);
+void clif_snap( struct block_list *bl, short x, short y );
+
/**
* Color Table
**/
diff --git a/src/map/skill.c b/src/map/skill.c
index 0b2d91287..966910c33 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -9543,14 +9543,17 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
case MO_BODYRELOCATION:
if (unit_movepos(src, x, y, 1, 1)) {
+#if PACKETVER >= 20111005
+ clif_snap(src, src->x, src->y);
+#else
clif_skill_poseffect(src,skillid,skilllv,src->x,src->y,tick);
-// clif_slide(src, src->x, src->y); //Poseffect is the one that makes the char snap on the client...
- if (sd) skill_blockpc_start (sd, MO_EXTREMITYFIST, 2000);
+#endif
+ if (sd)
+ skill_blockpc_start (sd, MO_EXTREMITYFIST, 2000);
}
break;
case NJ_SHADOWJUMP:
- if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground )
- { //You don't move on GVG grounds.
+ if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground ) { //You don't move on GVG grounds.
unit_movepos(src, x, y, 1, 0);
clif_slide(src,x,y);
}