From 08d47edb4cd49b4c4fa77085257127c8e2cee74a Mon Sep 17 00:00:00 2001 From: Lance Date: Tue, 30 May 2006 18:13:16 +0000 Subject: [Optimized]: - clif_specialeffect to use the enums. [Improved]: - buildin_specialeffect and buildin_specialeffect2 to accept effect area definition. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6855 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 5 ++++ src/map/atcommand.c | 29 +++++++--------------- src/map/charcommand.c | 2 +- src/map/clif.c | 69 +++++++++++---------------------------------------- src/map/clif.h | 27 ++++++++++++++++++++ src/map/script.c | 8 +++--- src/map/skill.c | 6 ++--- 7 files changed, 63 insertions(+), 83 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 3d7fe3df1..8113d75a2 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,11 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/05/30 + * [Optimized]: + - clif_specialeffect to use the enums. + [Improved]: + - buildin_specialeffect and buildin_specialeffect2 to accept effect area + definition. [Lance] * [Added]: - Visual Studio .NET 2003 includes for mercenary.c [Lance] * Removed the on-die specific code from unit_remove_map and placed it on diff --git a/src/map/atcommand.c b/src/map/atcommand.c index bf0d3e2da..0b9467dea 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -2378,7 +2378,7 @@ int atcommand_die( const char* command, const char* message) { nullpo_retr(-1, sd); - clif_specialeffect(&sd->bl,450,1); + clif_specialeffect(&sd->bl,450,SELF); status_kill(&sd->bl); clif_displaymessage(fd, msg_table[13]); // A pity! You've died. @@ -4827,7 +4827,7 @@ int atcommand_doom( struct map_session_data *pl_sd, **pl_allsd; int i, users; nullpo_retr(-1, sd); - clif_specialeffect(&sd->bl,450,2); + clif_specialeffect(&sd->bl,450,ALL_SAMEMAP); pl_allsd = map_getallusers(&users); for(i = 0; i < users; i++) { if ((pl_sd = pl_allsd[i]) && pl_sd->fd != fd && pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can doom only lower or same gm level @@ -4851,7 +4851,7 @@ int atcommand_doommap( struct map_session_data *pl_sd, **pl_allsd; int i, users; nullpo_retr(-1, sd); - clif_specialeffect(&sd->bl,450,3); + clif_specialeffect(&sd->bl,450,ALL_CLIENT); pl_allsd = map_getallusers(&users); for (i = 0; i < users; i++) { if ((pl_sd = pl_allsd[i]) && pl_sd->fd != fd && sd->bl.m == pl_sd->bl.m && @@ -6808,27 +6808,16 @@ int atcommand_effect( const int fd, struct map_session_data* sd, const char* command, const char* message) { - struct map_session_data *pl_sd, **pl_allsd; - int type = 0, flag = 0, i, users; + int type = 0, flag = 0; nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d %d", &type,&flag) < 2) { clif_displaymessage(fd, "Please, enter at least a option (usage: @effect )."); return -1; } - if(flag <=0){ - clif_specialeffect(&sd->bl, type, flag); - clif_displaymessage(fd, msg_table[229]); // Your effect has changed. - } - else{ - pl_allsd = map_getallusers(&users); - for (i = 0; i < users; i++) { - if ((pl_sd = pl_allsd[i])) { - clif_specialeffect(&pl_sd->bl, type, flag); - clif_displaymessage(pl_sd->fd, msg_table[229]); // Your effect has changed. - } - } - } + + clif_specialeffect(&sd->bl, type, flag); + clif_displaymessage(fd, msg_table[229]); // Your effect has changed. return 0; } @@ -9796,10 +9785,10 @@ int atcommand_size( if(size==1) { sd->state.size=1; - clif_specialeffect(&sd->bl,420,0); + clif_specialeffect(&sd->bl,420,AREA); } else if(size==2) { sd->state.size=2; - clif_specialeffect(&sd->bl,422,0); + clif_specialeffect(&sd->bl,422,AREA); } return 0; diff --git a/src/map/charcommand.c b/src/map/charcommand.c index fc8c12820..610d7880a 100644 --- a/src/map/charcommand.c +++ b/src/map/charcommand.c @@ -890,7 +890,7 @@ charcommand_effect(const int fd, struct map_session_data* sd, if((pl_sd=map_nick2sd((char *) target)) == NULL) return -1; - clif_specialeffect(&pl_sd->bl, type, 0); + clif_specialeffect(&pl_sd->bl, type, AREA); clif_displaymessage(fd, msg_table[229]); // Your effect has changed. return 0; diff --git a/src/map/clif.c b/src/map/clif.c index 3f26df905..677bb3ddd 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -120,33 +120,6 @@ static const int packet_len_table[MAX_PACKET_DB] = { 3, 32, -1, 3, 3, 5, 5, 8, 2, 3, -1, -1, 4,-1, 4 }; -// local define -enum { - ALL_CLIENT, - ALL_SAMEMAP, - AREA, - AREA_WOS, - AREA_WOC, - AREA_WOSC, - AREA_CHAT_WOC, - CHAT, - CHAT_WOS, - CHAT_MAINCHAT, - PARTY, - PARTY_WOS, - PARTY_SAMEMAP, - PARTY_SAMEMAP_WOS, - PARTY_AREA, - PARTY_AREA_WOS, - GUILD, - GUILD_WOS, - GUILD_SAMEMAP, // [Valaris] - GUILD_SAMEMAP_WOS, - GUILD_AREA, - GUILD_AREA_WOS, // end additions [Valaris] - SELF -}; - //Converts item type in case of pet eggs. #define itemtype(a) (a == 7)?4:a @@ -1347,18 +1320,18 @@ int clif_spawn(struct block_list *bl) if (sd->spiritball > 0) clif_spiritball(sd); if(sd->state.size==2) // tiny/big players [Valaris] - clif_specialeffect(bl,423,0); + clif_specialeffect(bl,423,AREA); else if(sd->state.size==1) - clif_specialeffect(bl,421,0); + clif_specialeffect(bl,421,AREA); } break; case BL_MOB: { TBL_MOB *md = ((TBL_MOB*)bl); if(md->special_state.size==2) // tiny/big mobs [Valaris] - clif_specialeffect(&md->bl,423,0); + clif_specialeffect(&md->bl,423,AREA); else if(md->special_state.size==1) - clif_specialeffect(&md->bl,421,0); + clif_specialeffect(&md->bl,421,AREA); } break; } @@ -1599,18 +1572,18 @@ int clif_move(struct block_list *bl) { TBL_PC *sd = ((TBL_PC*)bl); // clif_movepc(sd); if(sd->state.size==2) // tiny/big players [Valaris] - clif_specialeffect(&sd->bl,423,0); + clif_specialeffect(&sd->bl,423,AREA); else if(sd->state.size==1) - clif_specialeffect(&sd->bl,421,0); + clif_specialeffect(&sd->bl,421,AREA); } break; case BL_MOB: { TBL_MOB *md = ((TBL_MOB*)bl); if(md->special_state.size==2) // tiny/big mobs [Valaris] - clif_specialeffect(&md->bl,423,0); + clif_specialeffect(&md->bl,423,AREA); else if(md->special_state.size==1) - clif_specialeffect(&md->bl,421,0); + clif_specialeffect(&md->bl,421,AREA); } break; } @@ -3864,9 +3837,9 @@ void clif_getareachar_char(struct map_session_data* sd,struct block_list *bl) TBL_PC* tsd = (TBL_PC*)bl; clif_getareachar_pc(sd, tsd); if(tsd->state.size==2) // tiny/big players [Valaris] - clif_specialeffect(bl,423,0); + clif_specialeffect(bl,423,AREA); else if(tsd->state.size==1) - clif_specialeffect(bl,421,0); + clif_specialeffect(bl,421,AREA); } break; case BL_NPC: @@ -3879,9 +3852,9 @@ void clif_getareachar_char(struct map_session_data* sd,struct block_list *bl) { TBL_MOB* md = (TBL_MOB*)bl; if(md->special_state.size==2) // tiny/big mobs [Valaris] - clif_specialeffect(bl,423,0); + clif_specialeffect(bl,423,AREA); else if(md->special_state.size==1) - clif_specialeffect(bl,421,0); + clif_specialeffect(bl,421,AREA); } break; } @@ -7753,22 +7726,8 @@ int clif_specialeffect(struct block_list *bl, int type, int flag) WBUFL(buf,2) = bl->id; WBUFL(buf,6) = type; - switch (flag) { - case 4: - clif_send(buf, packet_len_table[0x1f3], bl, AREA_WOS); - break; - case 3: - clif_send(buf, packet_len_table[0x1f3], bl, ALL_CLIENT); - break; - case 2: - clif_send(buf, packet_len_table[0x1f3], bl, ALL_SAMEMAP); - break; - case 1: - clif_send(buf, packet_len_table[0x1f3], bl, SELF); - break; - default: - clif_send(buf, packet_len_table[0x1f3], bl, AREA); - } + clif_send(buf, packet_len_table[0x1f3], bl, flag); + if (disguised(bl)) { WBUFL(buf,2) = -bl->id; clif_send(buf, packet_len_table[0x1f3], bl, SELF); diff --git a/src/map/clif.h b/src/map/clif.h index 5f1412569..da64c733a 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -28,6 +28,33 @@ struct packet_db { short pos[20]; }; +// local define +enum { + ALL_CLIENT, + ALL_SAMEMAP, + AREA, + AREA_WOS, + AREA_WOC, + AREA_WOSC, + AREA_CHAT_WOC, + CHAT, + CHAT_WOS, + CHAT_MAINCHAT, + PARTY, + PARTY_WOS, + PARTY_SAMEMAP, + PARTY_SAMEMAP_WOS, + PARTY_AREA, + PARTY_AREA_WOS, + GUILD, + GUILD_WOS, + GUILD_SAMEMAP, // [Valaris] + GUILD_SAMEMAP_WOS, + GUILD_AREA, + GUILD_AREA_WOS, // end additions [Valaris] + SELF +}; + extern struct packet_db packet_db[MAX_PACKET_VER + 1][MAX_PACKET_DB]; void clif_setip(char*); diff --git a/src/map/script.c b/src/map/script.c index 41d84a92a..1707b59eb 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -669,8 +669,8 @@ struct { {buildin_petskillsupport,"petskillsupport","iiiii"}, // [Skotlex] {buildin_skilleffect,"skilleffect","ii"}, // skill effect [Celest] {buildin_npcskilleffect,"npcskilleffect","iiii"}, // npc skill effect [Valaris] - {buildin_specialeffect,"specialeffect","i"}, // npc skill effect [Valaris] - {buildin_specialeffect2,"specialeffect2","i"}, // skill effect on players[Valaris] + {buildin_specialeffect,"specialeffect","i*"}, // npc skill effect [Valaris] + {buildin_specialeffect2,"specialeffect2","i*"}, // skill effect on players[Valaris] {buildin_nude,"nude",""}, // nude command [Valaris] {buildin_mapwarp,"mapwarp","ssii"}, // Added by RoVeRT {buildin_inittimer,"inittimer",""}, @@ -8646,7 +8646,7 @@ int buildin_specialeffect(struct script_state *st) if(bl==NULL) return 0; - clif_specialeffect(bl,conv_num(st,& (st->stack->stack_data[st->start+2])), 0); + clif_specialeffect(bl,conv_num(st,& (st->stack->stack_data[st->start+2])), ((st->end > st->start+3)?conv_num(st,& (st->stack->stack_data[st->start+3])):AREA)); return 0; } @@ -8658,7 +8658,7 @@ int buildin_specialeffect2(struct script_state *st) if(sd==NULL) return 0; - clif_specialeffect(&sd->bl,conv_num(st,& (st->stack->stack_data[st->start+2])), 0); + clif_specialeffect(&sd->bl,conv_num(st,& (st->stack->stack_data[st->start+2])), ((st->end > st->start+3)?conv_num(st,& (st->stack->stack_data[st->start+3])):AREA)); return 0; } diff --git a/src/map/skill.c b/src/map/skill.c index 41ed65342..79c1e048c 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -5206,7 +5206,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in } do { eff = rand() % 14; - clif_specialeffect(bl, 523 + eff, 0); + clif_specialeffect(bl, 523 + eff, AREA); switch (eff) { case 0: // heals SP to 0 @@ -10106,7 +10106,7 @@ int skill_produce_mix( struct map_session_data *sd, int skill_id, break; default: //Those that don't require a skill? if (skill_produce_db[idx].itemlv==11) //Cooking items. - clif_specialeffect(&sd->bl, 608, 0); + clif_specialeffect(&sd->bl, 608, AREA); break; } } @@ -10146,7 +10146,7 @@ int skill_produce_mix( struct map_session_data *sd, int skill_id, break; default: if (skill_produce_db[idx].itemlv==11) - clif_specialeffect(&sd->bl, 609, 0); + clif_specialeffect(&sd->bl, 609, AREA); } } return 0; -- cgit v1.2.3-70-g09d2