diff options
Diffstat (limited to 'src/map/clif.c')
-rw-r--r-- | src/map/clif.c | 66 |
1 files changed, 26 insertions, 40 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index 5dde04300..9a796b659 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -3384,7 +3384,9 @@ int clif_storageclose(struct map_session_data *sd) *------------------------------------------*/ static void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* dstsd) { - int len; + int gmlvl; + int i; + if(dstsd->chatID) { struct chat_data *cd; @@ -3400,10 +3402,17 @@ static void clif_getareachar_pc(struct map_session_data* sd,struct map_session_d clif_spiritball_single(sd->fd, dstsd); if((sd->status.party_id && dstsd->status.party_id == sd->status.party_id) || //Party-mate, or hpdisp setting. - (battle_config.disp_hpmeter && (len = pc_isGM(sd)) >= battle_config.disp_hpmeter && len >= pc_isGM(dstsd)) + (battle_config.disp_hpmeter && (gmlvl = pc_isGM(sd)) >= battle_config.disp_hpmeter && gmlvl >= pc_isGM(dstsd)) ) clif_hpmeter_single(sd->fd, dstsd->bl.id, dstsd->battle_status.hp, dstsd->battle_status.max_hp); + // display links to devoted chars for crusader + ARR_FIND( 0, 5, i, sd->devotion[i] == dstsd->bl.id ); + if( i < 5 ) clif_devotion(sd, sd); + // display links to devoted chars for others + ARR_FIND( 0, 5, i, dstsd->devotion[i] > 0 ); + if( i < 5 ) clif_devotion(dstsd, sd); + // pvp circle for duel [LuzZza] //if(dstsd->duel_group) // clif_specialeffect(&dstsd->bl, 159, 4); @@ -5283,7 +5292,7 @@ void clif_vendingreport(struct map_session_data* sd, int index, int amount) } /// Result of organizing a party. -/// S 00FA <result>.B +/// R 00FA <result>.B /// /// result=0 : opens party window and shows MsgStringTable[77]="party successfully organized" /// result=1 : MsgStringTable[78]="party name already exists" @@ -5888,49 +5897,26 @@ int clif_autospell(struct map_session_data *sd,int skilllv) } /*========================================== - * ディボーションの青い糸 + * Devotion's visual effect + * S 01cf <devoter id>.L { <devotee id>.L }[5] <max distance>.W *------------------------------------------*/ -int clif_devotion(struct map_session_data *sd) +void clif_devotion(struct map_session_data *sd, struct map_session_data *tsd) { unsigned char buf[56]; - int i,n; - - nullpo_retr(0, sd); - - WBUFW(buf,0)=0x1cf; - WBUFL(buf,2)=sd->bl.id; - for(i=0,n=0;i<5;i++) { - if (!sd->devotion[i]) - continue; - WBUFL(buf,6+4*n)=sd->devotion[i]; - n++; - } - for(;n<5;n++) - WBUFL(buf,6+4*n)=0; - - WBUFB(buf,26)=8; - WBUFB(buf,27)=0; - - clif_send(buf,packet_len(0x1cf),&sd->bl,AREA); - return 0; -} + int i; -int clif_marionette(struct block_list *src, struct block_list *target) -{ - unsigned char buf[56]; - int n; + nullpo_retv(sd); - WBUFW(buf,0)=0x1cf; - WBUFL(buf,2)=src->id; - for(n=0;n<5;n++) - WBUFL(buf,6+4*n)=0; - if (target) //The target goes on the second slot. - WBUFL(buf,6+4) = target->id; - WBUFB(buf,26)=8; - WBUFB(buf,27)=0; + WBUFW(buf,0) = 0x1cf; + WBUFL(buf,2) = sd->bl.id; + for( i = 0; i < 5; i++ ) + WBUFL(buf,6+4*i) = sd->devotion[i]; + WBUFW(buf,26) = skill_get_range2(&sd->bl,CR_DEVOTION,pc_checkskill(sd,CR_DEVOTION)); // ignored - clif_send(buf,packet_len(0x1cf),src,AREA); - return 0; + if( tsd ) + clif_send(buf,packet_len(0x1cf),&tsd->bl,SELF); + else + clif_send(buf,packet_len(0x1cf),&sd->bl,AREA); } /*========================================== |