diff options
-rw-r--r-- | db/packet_db.txt | 1 | ||||
-rw-r--r-- | src/map/clif.c | 21 | ||||
-rw-r--r-- | src/map/clif.h | 1 | ||||
-rw-r--r-- | src/map/mob.c | 7 |
4 files changed, 28 insertions, 2 deletions
diff --git a/db/packet_db.txt b/db/packet_db.txt index 56164d378..bd88ca8a9 100644 --- a/db/packet_db.txt +++ b/db/packet_db.txt @@ -1756,6 +1756,7 @@ packet_ver: 30 0x0908,5 0x08D7,28,battlegroundreg,2:4 //Added to prevent disconnections 0x08CF,10 //Amulet spirits +0x0977,14 //Monster HP Bar //Add new packets here //packet_ver: 31
\ No newline at end of file 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); |