|
@@ -5060,6 +5060,24 @@ void clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, unsigned
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/// List of skills that have cooldown (ZC_SKILL_POSTDELAY_LIST).
|
|
|
|
+/// 043e <len>.W <skill ID>.W <tick>.L
|
|
|
|
+/// NOTE: This will tell the client which skills are currently in cooldown when a player logs on
|
|
|
|
+/// and display them in the shortcut bar. [Rytech]
|
|
|
|
+void clif_skill_cooldown_list(struct map_session_data *sd, uint16 skill_id, unsigned int tick)
|
|
|
|
+{
|
|
|
|
+#if PACKETVER >= 20081112
|
|
|
|
+ unsigned char buf[8];
|
|
|
|
+
|
|
|
|
+ nullpo_retv(sd);
|
|
|
|
+
|
|
|
|
+ WBUFW(buf,0) = 0x43e;
|
|
|
|
+ WBUFW(buf,2) = packet_len(0x43e);
|
|
|
|
+ WBUFW(buf,4) = skill_id;
|
|
|
|
+ WBUFL(buf,6) = tick;
|
|
|
|
+ clif_send(buf,packet_len(0x43e),&sd->bl,SELF);
|
|
|
|
+#endif
|
|
|
|
+}
|
|
|
|
|
|
/// Skill attack effect and damage.
|
|
/// Skill attack effect and damage.
|
|
/// 0114 <skill id>.W <src id>.L <dst id>.L <tick>.L <src delay>.L <dst delay>.L <damage>.W <level>.W <div>.W <type>.B (ZC_NOTIFY_SKILL)
|
|
/// 0114 <skill id>.W <src id>.L <dst id>.L <tick>.L <src delay>.L <dst delay>.L <damage>.W <level>.W <div>.W <type>.B (ZC_NOTIFY_SKILL)
|
|
@@ -5074,8 +5092,12 @@ int clif_skill_damage(struct block_list *src,struct block_list *dst,unsigned int
|
|
nullpo_ret(dst);
|
|
nullpo_ret(dst);
|
|
|
|
|
|
type = clif_calc_delay(type,div,damage,ddelay);
|
|
type = clif_calc_delay(type,div,damage,ddelay);
|
|
- sc = status_get_sc(dst);
|
|
|
|
- if(sc && sc->count) {
|
|
|
|
|
|
+
|
|
|
|
+#if PACKETVER >= 20131223
|
|
|
|
+ if( type == 6 ) type = 8;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+ if( ( sc = status_get_sc(dst) ) && sc->count ) {
|
|
if(sc->data[SC_HALLUCINATION] && damage)
|
|
if(sc->data[SC_HALLUCINATION] && damage)
|
|
damage = damage*(sc->data[SC_HALLUCINATION]->val2) + rnd()%100;
|
|
damage = damage*(sc->data[SC_HALLUCINATION]->val2) + rnd()%100;
|
|
}
|
|
}
|
|
@@ -17373,6 +17395,41 @@ void clif_crimson_marker(struct map_session_data *sd, struct block_list *bl, boo
|
|
clif_send(buf, len, &sd->bl, SELF);
|
|
clif_send(buf, len, &sd->bl, SELF);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/// [Ind/Hercules]
|
|
|
|
+void clif_showscript(struct block_list* bl, const char* message) {
|
|
|
|
+ char buf[256];
|
|
|
|
+ size_t len;
|
|
|
|
+ nullpo_retv(bl);
|
|
|
|
+
|
|
|
|
+ if(!message)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ len = strlen(message)+1;
|
|
|
|
+
|
|
|
|
+ if( len > sizeof(buf)-8 ) {
|
|
|
|
+ ShowWarning("clif_showscript: Truncating too long message '%s' (len=%d).\n", message, len);
|
|
|
|
+ len = sizeof(buf)-8;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ WBUFW(buf,0) = 0x8b3;
|
|
|
|
+ WBUFW(buf,2) = (len+8);
|
|
|
|
+ WBUFL(buf,4) = bl->id;
|
|
|
|
+ safestrncpy((char *) WBUFP(buf,8), message, len);
|
|
|
|
+ clif_send((unsigned char *) buf, WBUFW(buf,2), bl, ALL_CLIENT);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/// [Ind/Hercules]
|
|
|
|
+void clif_party_leaderchanged(struct map_session_data *sd, int prev_leader_aid, int new_leader_aid) {
|
|
|
|
+ unsigned char buf[10];
|
|
|
|
+
|
|
|
|
+ nullpo_retv(sd);
|
|
|
|
+
|
|
|
|
+ WBUFW(buf,0) = 0x7fc;
|
|
|
|
+ WBUFL(buf,2) = prev_leader_aid;
|
|
|
|
+ WBUFL(buf,6) = new_leader_aid;
|
|
|
|
+ clif_send(buf,packet_len(0x7fc),&sd->bl,PARTY);
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* !TODO: Special item that obtained, must be broadcasted by this packet
|
|
* !TODO: Special item that obtained, must be broadcasted by this packet
|
|
* 07fd ?? (ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN)
|
|
* 07fd ?? (ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN)
|
|
@@ -17670,7 +17727,7 @@ void 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,
|
|
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, 0, 0, 0, 0, 0, 0, 8, 0, 25,
|
|
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 25,
|
|
//#0x0440
|
|
//#0x0440
|
|
10, 4, -1, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0,
|
|
10, 4, -1, 0, 0, 0, 14, 0, 0, 0, 6, 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,
|
|
@@ -17749,7 +17806,7 @@ void packetdb_readdb(void)
|
|
6, 2, -1, 4, 4, 4, 4, 8, 8,268, 6, 8, 6, 54, 30, 54,
|
|
6, 2, -1, 4, 4, 4, 4, 8, 8,268, 6, 8, 6, 54, 30, 54,
|
|
#endif
|
|
#endif
|
|
0, 15, 8, 6, -1, 8, 8, 32, -1, 5, 0, 0, 0, 0, 0, 0,
|
|
0, 15, 8, 6, -1, 8, 8, 32, -1, 5, 0, 0, 0, 0, 0, 0,
|
|
- 0, 0, 0, 0, 0, 0, 14, -1, -1, -1, 8, 25, 0, 0, 26, 0,
|
|
|
|
|
|
+ 0, 0, 0, 0, 0, 0, 14, -1, -1, -1, 8, 25, 10, 0, 26, 0,
|
|
//#0x0800
|
|
//#0x0800
|
|
#if PACKETVER < 20091229
|
|
#if PACKETVER < 20091229
|
|
-1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 20,
|
|
-1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 20,
|
|
@@ -17772,7 +17829,7 @@ void 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,
|
|
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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
|
+ 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
//#0x08C0
|
|
//#0x08C0
|
|
0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 10,
|
|
0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 10,
|
|
9, 7, 10, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
9, 7, 10, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|