From 1b73b82ea629ff1e69fc2d6094c27e9e32229a84 Mon Sep 17 00:00:00 2001 From: skotlex Date: Tue, 7 Nov 2006 16:17:01 +0000 Subject: - Fixed map_foreachiddb and map_foreachpc so they don't encapsulate the variable arguments into a double va_arg list. Thanks to the Ultra Mage for the tip. - Cleaned up the clif_hate/mob_info functions with the correct fields/usage as explained by Rayce. - Implemented clif_feel_hate_reset packet to properly display the Angel of the Sun/Moon/Stars, thanks again to Rayce for the relevant information. - LP will again block all land-stuff from being placed down on top of it for the exception of Song/Dance/Encores. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9162 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/clif.c | 53 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 18 deletions(-) (limited to 'src/map/clif.c') diff --git a/src/map/clif.c b/src/map/clif.c index f5ba4101f..710d7a06e 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8020,36 +8020,40 @@ int clif_party_xy_remove(struct map_session_data *sd) /*========================================== * Info about Star Glaldiator save map [Komurka] + * type: 1: Information, 0: Map registered *------------------------------------------ */ -void clif_feel_info(struct map_session_data *sd, int feel_level) +void clif_feel_info(struct map_session_data *sd, unsigned char feel_level, unsigned char type) { int fd=sd->fd; WFIFOHEAD(fd,packet_len_table[0x20e]); WFIFOW(fd,0)=0x20e; memcpy(WFIFOP(fd,2),mapindex_id2name(sd->feel_map[feel_level].index), MAP_NAME_LENGTH); WFIFOL(fd,26)=sd->bl.id; - WFIFOW(fd,30)=0x100+feel_level; + WFIFOB(fd,30)=feel_level; + WFIFOB(fd,31)=type?1:0; WFIFOSET(fd, packet_len_table[0x20e]); } /*========================================== * Info about Star Glaldiator hate mob [Komurka] + * type: 1: Register mob, 0: Information. *------------------------------------------ */ -void clif_hate_mob(struct map_session_data *sd, int type,int mob_id) +void clif_hate_info(struct map_session_data *sd, unsigned char hate_level,int class_, unsigned char type) { int fd=sd->fd; WFIFOHEAD(fd,packet_len_table[0x20e]); WFIFOW(fd,0)=0x20e; - if (pcdb_checkid(mob_id)) - strncpy(WFIFOP(fd,2),job_name(mob_id), NAME_LENGTH); - else if (mobdb_checkid(mob_id)) - strncpy(WFIFOP(fd,2),mob_db(mob_id)->jname, NAME_LENGTH); + if (pcdb_checkid(class_)) + strncpy(WFIFOP(fd,2),job_name(class_), NAME_LENGTH); + else if (mobdb_checkid(class_)) + strncpy(WFIFOP(fd,2),mob_db(class_)->jname, NAME_LENGTH); else //Really shouldn't happen... malloc_tsetdword(WFIFOP(fd,2), 0, NAME_LENGTH); WFIFOL(fd,26)=sd->bl.id; - WFIFOW(fd,30)=0xa00+type; + WFIFOB(fd,30)=hate_level; + WFIFOB(fd,31)=type?10:11; //Register/Info WFIFOSET(fd, packet_len_table[0x20e]); } @@ -8057,14 +8061,31 @@ void clif_hate_mob(struct map_session_data *sd, int type,int mob_id) * Info about TaeKwon Do TK_MISSION mob [Skotlex] *------------------------------------------ */ -void clif_mission_mob(struct map_session_data *sd, unsigned short mob_id, unsigned short progress) +void clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char progress) { int fd=sd->fd; WFIFOHEAD(fd,packet_len_table[0x20e]); WFIFOW(fd,0)=0x20e; strncpy(WFIFOP(fd,2),mob_db(mob_id)->jname, NAME_LENGTH); WFIFOL(fd,26)=mob_id; - WFIFOW(fd,30)=0x1400+progress; //Message to display + WFIFOB(fd,30)=progress; //Message to display + WFIFOB(fd,31)=20; + WFIFOSET(fd, packet_len_table[0x20e]); +} + +/*========================================== + * Feel/Hate reset (thanks to Rayce) [Skotlex] + *------------------------------------------ + */ +void clif_feel_hate_reset(struct map_session_data *sd) +{ + int fd=sd->fd; + WFIFOHEAD(fd,packet_len_table[0x20e]); + WFIFOW(fd,0)=0x20e; + malloc_tsetdword(WFIFOP(fd,2), 0, NAME_LENGTH); //Blank name as all was reset. + WFIFOL(fd,26)=sd->bl.id; + WFIFOB(fd,30)=0; //Feel/hate level: irrelevant + WFIFOB(fd,31)=30; WFIFOSET(fd, packet_len_table[0x20e]); } @@ -11491,14 +11512,10 @@ void clif_parse_FeelSaveOk(int fd,struct map_session_data *sd) sd->feel_map[i].m = sd->bl.m; pc_setglobalreg(sd,feel_var[i],map[sd->bl.m].index); - clif_misceffect2(&sd->bl, 0x1b0); - clif_misceffect2(&sd->bl, 0x21f); - WFIFOHEAD(fd,packet_len_table[0x20e]); - WFIFOW(fd,0)=0x20e; - memcpy(WFIFOP(fd,2),map[sd->bl.m].name, MAP_NAME_LENGTH); - WFIFOL(fd,26)=sd->bl.id; - WFIFOW(fd,30)=i; - WFIFOSET(fd, packet_len_table[0x20e]); +//Are these really needed? Shouldn't they show up automatically from the feel save packet? +// clif_misceffect2(&sd->bl, 0x1b0); +// clif_misceffect2(&sd->bl, 0x21f); + clif_feel_info(sd, i, 0); sd->menuskill_lv = sd->menuskill_id = 0; } -- cgit v1.2.3-70-g09d2