From 1f2c14189bc029af3045de816290d3e488ee9c32 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Mon, 20 Aug 2012 11:59:22 +0000 Subject: Added support for the new monster purple hp bar packet (packetver >= 20120404), make sure to toggle /monsterhp in the client to show the bar. Special Thanks to EvilPuncker and scriptor for the packet structure git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16669 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/clif.c | 21 ++++++++++++++++++++- src/map/clif.h | 1 + src/map/mob.c | 7 ++++++- 3 files changed, 27 insertions(+), 2 deletions(-) (limited to 'src/map') diff --git a/src/map/clif.c b/src/map/clif.c index d97959b49..9ee0a27bf 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -16221,6 +16221,19 @@ void clif_snap( struct block_list *bl, short x, short y ) { clif_send(buf,packet_len(0x8d2),bl,AREA); } +void clif_monster_hp_bar( struct mob_data* md, int fd ) { +#if PACKETVER >= 20120404 + WFIFOHEAD(fd,packet_len(0x977)); + + WFIFOW(fd,0) = 0x977; + WFIFOL(fd,2) = md->bl.id; + WFIFOL(fd,6) = md->status.hp; + WFIFOL(fd,10) = md->status.max_hp; + + WFIFOSET(fd,packet_len(0x977)); +#endif +} + /*========================================== * Main client packet processing function *------------------------------------------*/ @@ -16615,7 +16628,13 @@ static int packetdb_readdb(void) 0, 0, 0, 0, 0, 0, 0, 0, 5, 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, 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, + //#0x0940 + 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, + }; struct { void (*func)(int, struct map_session_data *); diff --git a/src/map/clif.h b/src/map/clif.h index 385c1d4aa..d31fb59fe 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -739,6 +739,7 @@ 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 ); +void clif_monster_hp_bar( struct mob_data* md, int fd ); /** * Color Table diff --git a/src/map/mob.c b/src/map/mob.c index 18b514616..14a520ab8 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2081,10 +2081,15 @@ void mob_damage(struct mob_data *md, struct block_list *src, int damage) if (battle_config.show_mob_info&3) clif_charnameack (0, &md->bl); - + if (!src) return; +#if PACKETVER >= 20120404 + if( src->type == BL_PC && !(md->status.mode&MD_BOSS) ) + clif_monster_hp_bar(md, ((TBL_PC*)src)->fd); +#endif + if( md->special_state.ai == 2 ) {//LOne WOlf explained that ANYONE can trigger the marine countdown skill. [Skotlex] md->state.alchemist = 1; mobskill_use(md, gettick(), MSC_ALCHEMIST); -- cgit v1.2.3-60-g2f50