summaryrefslogtreecommitdiff
path: root/src/map/clif.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/clif.c')
-rw-r--r--src/map/clif.c44
1 files changed, 42 insertions, 2 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index 25b53686a..13d4ebe8f 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -1255,6 +1255,18 @@ static void clif_spiritball_single(int fd, struct map_session_data *sd)
WFIFOSET(fd, packet_len(0x1e1));
}
+/*==========================================
+ * Kagerou/Oboro amulet spirit
+ *------------------------------------------*/
+static void clif_talisman_single(int fd, struct map_session_data *sd, short type)
+{
+ WFIFOHEAD(fd, packet_len(0x08cf));
+ WFIFOW(fd,0)=0x08cf;
+ WFIFOL(fd,2)=sd->bl.id;
+ WFIFOW(fd,6)=type;
+ WFIFOW(fd,8)=sd->talisman[type];
+ WFIFOSET(fd, packet_len(0x08cf));
+}
/*==========================================
* Run when player changes map / refreshes
@@ -1348,6 +1360,7 @@ int clif_spawn(struct block_list *bl)
case BL_PC:
{
TBL_PC *sd = ((TBL_PC*)bl);
+ int i;
if (sd->spiritball > 0)
clif_spiritball(sd);
if(sd->state.size==2) // tiny/big players [Valaris]
@@ -1360,6 +1373,10 @@ int clif_spawn(struct block_list *bl)
//New Mounts are not complaint to the original method, so we gotta tell this guy that he is mounting.
clif_status_load_notick(&sd->bl,SI_ALL_RIDING,2,1,0,0);
}
+ for(i = 1; i < 5; i++){
+ if( sd->talisman[i] > 0 )
+ clif_talisman(sd, i);
+ }
#ifdef NEW_CARTS
if( sd->sc.data[SC_PUSH_CART] )
clif_status_load_notick(&sd->bl, SI_ON_PUSH_CART, 2, sd->sc.data[SC_PUSH_CART]->val1, 0, 0);
@@ -4031,6 +4048,10 @@ static void clif_getareachar_pc(struct map_session_data* sd,struct map_session_d
if(dstsd->spiritball > 0)
clif_spiritball_single(sd->fd, dstsd);
+ for(i = 1; i < 5; i++){
+ if( dstsd->talisman[i] > 0 )
+ clif_talisman_single(sd->fd, dstsd, i);
+ }
if( dstsd->sc.option&OPTION_MOUNTING ) {
//New Mounts are not complaint to the original method, so we gotta tell this guy that I'm mounting.
clif_status_load_single(sd->fd,dstsd->bl.id,SI_ALL_RIDING,2,1,0,0);
@@ -8195,6 +8216,7 @@ void clif_message(struct block_list* bl, const char* msg)
// refresh the client's screen, getting rid of any effects
void clif_refresh(struct map_session_data *sd)
{
+ int i;
nullpo_retv(sd);
clif_changemap(sd,sd->mapindex,sd->bl.x,sd->bl.y);
@@ -8213,6 +8235,10 @@ void clif_refresh(struct map_session_data *sd)
clif_updatestatus(sd,SP_LUK);
if (sd->spiritball)
clif_spiritball_single(sd->fd, sd);
+ for(i = 1; i < 5; i++){
+ if( sd->talisman[i] > 0 )
+ clif_talisman_single(sd->fd, sd, i);
+ }
if (sd->vd.cloth_color)
clif_refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF);
if(merc_is_hom_active(sd->hd))
@@ -16123,7 +16149,21 @@ void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) {
skill_select_menu(sd,RFIFOL(fd,2),RFIFOW(fd,6));
clif_menuskill_clear(sd);
}
+/*==========================================
+ * Kagerou/Oboro amulet spirit
+ *------------------------------------------*/
+void clif_talisman(struct map_session_data *sd,short type)
+{
+ unsigned char buf[8];
+
+ nullpo_retv(sd);
+ WBUFW(buf,0)=0x08cf;
+ WBUFL(buf,2)=sd->bl.id;
+ WBUFW(buf,6)=type;
+ WBUFW(buf,8)=sd->talisman[type];
+ clif_send(buf,packet_len(0x08cf),&sd->bl,AREA);
+}
/// Move Item from or to Personal Tab (CZ_WHATSOEVER) [FE]
/// 0907 <index>.W
///
@@ -16549,7 +16589,7 @@ static int packetdb_readdb(void)
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,
//#0x08C0
- 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, 10,
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,
@@ -16557,7 +16597,7 @@ 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,
};
struct {
void (*func)(int, struct map_session_data *);