Merge branch 'master' into refactor/StatusChangeDisplay

This commit is contained in:
Jey 2017-09-29 02:16:51 +02:00
commit a73da61129
17 changed files with 665 additions and 33 deletions

View File

@ -18,6 +18,10 @@
// config to adjust how this will affect players)
pk_mode: 0
// Displays a message when the player enters a pk zone.
// Only during pk_mode (Note 1)
pk_mode_mes: yes
// Manner/karma system configuration. Specifies how does negative manner
// (red no chat bubble) affects players (add as needed):
// 0: No penalties.

View File

@ -423,7 +423,7 @@
404: War of Emperium SE is currently in progress.
405: War of Emperium SE has been ended.
406: War of Emperium SE is currently not in progress.
//407 free
//407: free
//chrif related
408: Need disconnection to perform change-sex request...
409: Your sex has been changed (need disconnection by the server)...
@ -1662,5 +1662,9 @@
1501: Spying on the %s clan.
1502: Incorrect clan name/ID.
// PK Mode msgs
1503: You've entered a PK Zone.
1504: You've entered a PK Zone (safe until level %d).
//Custom translations
//import: conf/msg_conf/import/map_msg_eng_conf.txt

View File

@ -2110,7 +2110,7 @@
2904,Naqsh,Naqsi,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ skill "BS_MAXIMIZE",5; skill "BS_WEAPONPERFECT",5; skill "WL_RECOGNIZEDSPELL",5; skill "ECL_SNOWFLIP",1; skill "ECL_PEONYMAMY",1; skill "ECL_SADAGUI",1; skill "ECL_SEQUOIADUST",1; bonus2 bSkillCooldown,"WL_RECOGNIZEDSPELL",-180000; bonus bDelayRate,-100; },{},{}
2905,Super_Ora_Ora,Super Ora Ora,4,0,,1000,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{},{},{}
2906,Happy_Gauntlet,Happy Gauntlet,4,20,,1000,,3,,1,0xFFFFFFFF,63,2,136,,70,0,0,{ bonus bMdef,3; },{},{}
2907,Buwaya_Tattoo,Bawaya Agimat Tattoo,4,20,,100,,0,,0,0xFFFFFFFF,63,2,136,,1,0,0,{ bonus bMatkRate,7; bonus bVariableCastrate,-7; },{},{}
2907,Buwaya_Tattoo,Bawaya Agimat Tattoo,4,20,,100,,0,,0,0xFFFFFFFF,63,2,136,,1,0,0,{ bonus bMatkRate,7; bonus bFixedCastrate,-7; },{},{}
2908,Light_Ring,Light Ring,4,20,,100,,0,,1,0xFFFFFFFF,63,2,136,,0,0,0,{},{},{}
2909,Darkness_Ring,Darkness Ring,4,20,,100,,0,,1,0xFFFFFFFF,63,2,136,,0,0,0,{},{},{}
2910,Bakonawa_Tattoo,Bakunawa Agimat Tattoo,4,20,,100,,0,,0,0xFFFFFFFF,63,2,136,,1,0,0,{ bonus2 bAddClass,Class_All,7; bonus bAspdRate,10; },{},{}

View File

@ -2760,6 +2760,9 @@ Valid information types are:
REFINE_ZENY_COST - Zeny
REFINE_MATERIAL_ID - Material Item ID
This function will return -1 on failure. The function fails if the cost type
is invalid or if there is no item in the equipment slot.
---------------------------------------
*getareadropitem("<map name>",<x1>,<y1>,<x2>,<y2>,<item>)
@ -3868,10 +3871,13 @@ by default green
---------------------------------------
*showscript "<message>"{,<GID>};
*showscript "<message>"{,<GID>, <flag>};
Makes attached player or GID says a message like shouting a skill name, the message
will be seen to everyone around but not in chat window.
flag: Specify target
AREA - Message is sent to players in the vicinity of the source (default).
SELF - Message is sent only to player attached.
---------------------------------------
@ -6534,6 +6540,8 @@ The options are:
1 = The buy window
2 = The sell window
Note: The <option> parameter only works on the 'shop' type NPC.
A shop called with this command will trigger the labels "OnBuyItem" and "OnSellItem"
(as long as an npcshop* command is executed from that NPC, see note below). These
labels, if used, will replace how the shop handles the buying and selling of items,

View File

@ -15,12 +15,12 @@
mes "Do you want to refine a shadow item? Pick yer poison!";
next;
setarray .@indices[1], EQI_SHADOW_ARMOR, EQI_SHADOW_WEAPON, EQI_SHADOW_SHIELD, EQI_SHADOW_SHOES, EQI_SHADOW_ACC_R, EQI_SHADOW_ACC_L;
for(.@i = 1; .@i <= EQI_SHADOW_ACC_L; .@i++)
.@indlen = getarraysize(.@indices) - 1;
for(.@i = 1; .@i <= .@indlen; .@i++)
.@menu$ = .@menu$ + (getequipisequiped(.@indices[.@i]) ? getequipname(.@indices[.@i]) : F_getpositionname(.@indices[.@i]) +"-[Not equipped]") +":";
.@menu$ = .@menu$ + "Refine info";
.@part = .@indices[select(.@menu$)];
if (.@part == EQI_SHADOW_ACC_L + 1) { // Refine info
.@choice = select(.@menu$);
if (.@choice == .@indlen + 1) { // Refine info
mes "[Shadow Blacksmith]";
mes "When a shadow item is refined, it gains extra bonuses very much like normal items.";
next;
@ -35,6 +35,15 @@
mes "HD ores can be used for gear that is at least refine level +7 and will prevent breaking as long as you stay talking to me.";
close;
}
.@part = .@indices[.@choice];
if (!getequipisequiped(.@part)) {
mes "[Shadow Blacksmith]";
mes "There's nothing here!";
close;
}
while(1) {
mes "[Shadow Blacksmith]";
mes "I require " + callfunc("F_InsertComma", .@zeny_cost) + " zeny as a fee for EACH refine attempt.";
@ -84,7 +93,7 @@
.@choose = .@material[.@option-1];
if (!countitem(.@choose)) {
mes "[Shadow Blacksmith]";
mes "You do not have enough "+ getitemname(.@choose) +" / "+ getitemname(.@choose) +".";
mes "You do not have enough "+ getitemname(.@choose) +".";
close;
}
if (Zeny < .@zeny_cost) {
@ -140,4 +149,4 @@
}
//moc_paraup,45,185,5 duplicate(ShadowBlacksmith) Shadow Blacksmith#eden1 4_F_JOB_BLACKSMITH // Commented out until it's added to the map index
prt_in,59,54,3 duplicate(ShadowBlacksmith) Shadow Blacksmith#itemmall 4_F_JOB_BLACKSMITH
prt_in,61,54,3 duplicate(ShadowBlacksmith) Shadow Blacksmith#itemmall 4_F_JOB_BLACKSMITH

View File

@ -2142,7 +2142,7 @@ REPLACE INTO `item_db_re` VALUES (2903,'Morpheus\'s_Armlet_','Morpheus\'s Armlet
REPLACE INTO `item_db_re` VALUES (2904,'Naqsh','Naqsi',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'skill "BS_MAXIMIZE",5; skill "BS_WEAPONPERFECT",5; skill "WL_RECOGNIZEDSPELL",5; skill "ECL_SNOWFLIP",1; skill "ECL_PEONYMAMY",1; skill "ECL_SADAGUI",1; skill "ECL_SEQUOIADUST",1; bonus2 bSkillCooldown,"WL_RECOGNIZEDSPELL",-180000; bonus bDelayRate,-100;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (2905,'Super_Ora_Ora','Super Ora Ora',4,0,NULL,1000,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (2906,'Happy_Gauntlet','Happy Gauntlet',4,20,NULL,1000,NULL,3,NULL,1,0xFFFFFFFF,63,2,136,NULL,'70',0,0,'bonus bMdef,3;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (2907,'Buwaya_Tattoo','Bawaya Agimat Tattoo',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'1',0,0,'bonus bMatkRate,7; bonus bVariableCastrate,-7;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (2907,'Buwaya_Tattoo','Bawaya Agimat Tattoo',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'1',0,0,'bonus bMatkRate,7; bonus bFixedCastrate,-7;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (2908,'Light_Ring','Light Ring',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'0',0,0,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (2909,'Darkness_Ring','Darkness Ring',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'0',0,0,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (2910,'Bakonawa_Tattoo','Bakunawa Agimat Tattoo',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'1',0,0,'bonus2 bAddClass,Class_All,7; bonus bAspdRate,10;',NULL,NULL);

View File

@ -1763,9 +1763,21 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p)
buf = WBUFP(buffer,0);
WBUFL(buf,0) = p->char_id;
#if PACKETVER >= 20170830
WBUFQ(buf,4) = u64min((uint64)p->base_exp, INT64_MAX);
offset += 4;
buf = WBUFP(buffer, offset);
#else
WBUFL(buf,4) = umin(p->base_exp, INT32_MAX);
#endif
WBUFL(buf,8) = p->zeny;
#if PACKETVER >= 20170830
WBUFQ(buf,12) = u64min((uint64)p->job_exp, INT64_MAX);
offset += 4;
buf = WBUFP(buffer, offset);
#else
WBUFL(buf,12) = umin(p->job_exp, INT32_MAX);
#endif
WBUFL(buf,16) = p->job_level;
WBUFL(buf,20) = 0; // probably opt1
WBUFL(buf,24) = 0; // probably opt2

View File

@ -8182,6 +8182,7 @@ static const struct _battle_data {
{ "equip_self_break_rate", &battle_config.equip_self_break_rate, 100, 0, INT_MAX, },
{ "equip_skill_break_rate", &battle_config.equip_skill_break_rate, 100, 0, INT_MAX, },
{ "pk_mode", &battle_config.pk_mode, 0, 0, 2, },
{ "pk_mode_mes", &battle_config.pk_mode_mes, 1, 0, 1, },
{ "pk_level_range", &battle_config.pk_level_range, 0, 0, INT_MAX, },
{ "manner_system", &battle_config.manner_system, 0xFFF, 0, 0xFFF, },
{ "pet_equip_required", &battle_config.pet_equip_required, 0, 0, 1, },

View File

@ -349,6 +349,7 @@ extern struct Battle_Config
int multi_level_up;
int max_exp_gain_rate; //Max amount of exp bar % you can get in one go.
int pk_mode;
int pk_mode_mes;
int pk_level_range;
int manner_system; // end additions [Valaris]

View File

@ -3141,6 +3141,7 @@ static int clif_hpmeter(struct map_session_data *sd)
/// 0121 <current count>.W <max count>.W <current weight>.L <max weight>.L (ZC_NOTIFY_CARTITEM_COUNTINFO)
/// 013a <atk range>.W (ZC_ATTACK_RANGE)
/// 0141 <status id>.L <base status>.L <plus status>.L (ZC_COUPLESTATUS)
/// 0acb <var id>.W <value>.Q (ZC_LONGPAR_CHANGE2)
/// TODO: Extract individual packets.
/// FIXME: Packet lengths from packet_len(cmd)
void clif_updatestatus(struct map_session_data *sd,int type)
@ -3257,6 +3258,28 @@ void clif_updatestatus(struct map_session_data *sd,int type)
WFIFOW(fd,0)=0xb1;
WFIFOL(fd,4)=sd->status.zeny;
break;
#if PACKETVER >= 20170830
case SP_BASEEXP:
WFIFOW(fd,0)=0xacb;
WFIFOQ(fd,4)=sd->status.base_exp;
len = packet_len(0xacb);
break;
case SP_JOBEXP:
WFIFOW(fd,0)=0xacb;
WFIFOQ(fd,4)=sd->status.job_exp;
len = packet_len(0xacb);
break;
case SP_NEXTBASEEXP:
WFIFOW(fd,0)=0xacb;
WFIFOQ(fd,4)=pc_nextbaseexp(sd);
len = packet_len(0xacb);
break;
case SP_NEXTJOBEXP:
WFIFOW(fd,0)=0xacb;
WFIFOQ(fd,4)=pc_nextjobexp(sd);
len = packet_len(0xacb);
break;
#else
case SP_BASEEXP:
WFIFOW(fd,0)=0xb1;
WFIFOL(fd,4)=sd->status.base_exp;
@ -3273,6 +3296,7 @@ void clif_updatestatus(struct map_session_data *sd,int type)
WFIFOW(fd,0)=0xb1;
WFIFOL(fd,4)=pc_nextjobexp(sd);
break;
#endif
/**
* SP_U<STAT> are used to update the amount of points necessary to increase that stat
@ -10010,6 +10034,28 @@ static bool clif_process_message(struct map_session_data* sd, bool whisperFormat
return true;
}
/**
* Displays a message if the player enters a PK Zone (during pk_mode)
* @param sd: Player data
*/
inline void clif_pk_mode_message(struct map_session_data * sd)
{
if (battle_config.pk_mode && battle_config.pk_mode_mes &&
sd && map[sd->bl.m].flag.pvp) {
if( (int)sd->status.base_level < battle_config.pk_min_level ) {
char output[CHAT_SIZE_MAX];
// 1504: You've entered a PK Zone (safe until level %d).
safesnprintf(output, CHAT_SIZE_MAX, msg_txt(sd,1504),
battle_config.pk_min_level);
clif_showscript(&sd->bl, output, SELF);
} else {
// 1503: You've entered a PK Zone.
clif_showscript(&sd->bl, msg_txt(sd,1503), SELF);
}
}
return;
}
// ---------------------
// clif_parse_wanttoconnect
// ---------------------
@ -10445,6 +10491,8 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
// Instances do not need their own channels
if( channel_config.map_tmpl.name != NULL && (channel_config.map_tmpl.opt&CHAN_OPT_AUTOJOIN) && !map[sd->bl.m].flag.chmautojoin && !map[sd->bl.m].instance_id )
channel_mjoin(sd); //join new map
clif_pk_mode_message(sd);
} else if (sd->guild && (battle_config.guild_notice_changemap == 2 || guild_notice))
clif_guild_notice(sd); // Displays at end
@ -17238,8 +17286,9 @@ void clif_party_show_picker(struct map_session_data * sd, struct item * item_dat
}
/** Display gained exp (ZC_NOTIFY_EXP).
* 07f6 <account id>.L <amount>.L <var id>.W <exp type>.W
/** Display gained exp.
* 07f6 <account id>.L <amount>.L <var id>.W <exp type>.W (ZC_NOTIFY_EXP)
* 0acc <account id>.L <amount>.Q <var id>.W <exp type>.W (ZC_NOTIFY_EXP2)
* amount: INT32_MIN ~ INT32_MAX
* var id:
* SP_BASEEXP, SP_JOBEXP
@ -17255,18 +17304,30 @@ void clif_party_show_picker(struct map_session_data * sd, struct item * item_dat
void clif_displayexp(struct map_session_data *sd, unsigned int exp, char type, bool quest, bool lost)
{
int fd;
int offset;
#if PACKETVER >= 20170830
int cmd = 0xacc;
#else
int cmd = 0x7f6;
#endif
nullpo_retv(sd);
fd = sd->fd;
WFIFOHEAD(fd, packet_len(0x7f6));
WFIFOW(fd,0) = 0x7f6;
WFIFOHEAD(fd, packet_len(cmd));
WFIFOW(fd,0) = cmd;
WFIFOL(fd,2) = sd->bl.id;
#if PACKETVER >= 20170830
WFIFOQ(fd,6) = (int64)u64min((uint64)exp, INT_MAX) * (lost ? -1 : 1);
offset = 4;
#else
WFIFOL(fd,6) = (int)umin(exp, INT_MAX) * (lost ? -1 : 1);
WFIFOW(fd,10) = type;
WFIFOW(fd,12) = (quest && type != SP_JOBEXP) ? 1 : 0; // NOTE: Somehow JobEXP always in yellow color
WFIFOSET(fd,packet_len(0x7f6));
offset = 0;
#endif
WFIFOW(fd,10+offset) = type;
WFIFOW(fd,12+offset) = (quest && type != SP_JOBEXP) ? 1 : 0; // NOTE: Somehow JobEXP always in yellow color
WFIFOSET(fd,packet_len(cmd));
}
@ -18738,7 +18799,7 @@ void clif_notify_bindOnEquip(struct map_session_data *sd, int n) {
* [Ind/Hercules]
* 08b3 <Length>.W <id>.L <message>.?B (ZC_SHOWSCRIPT)
**/
void clif_showscript(struct block_list* bl, const char* message) {
void clif_showscript(struct block_list* bl, const char* message, enum send_target flag) {
char buf[256];
size_t len;
nullpo_retv(bl);
@ -18757,7 +18818,7 @@ void clif_showscript(struct block_list* bl, const char* message) {
WBUFW(buf,2) = (uint16)(len+8);
WBUFL(buf,4) = bl->id;
safestrncpy(WBUFCP(buf,8), message, len);
clif_send((unsigned char *) buf, WBUFW(buf,2), bl, AREA);
clif_send((unsigned char *) buf, WBUFW(buf,2), bl, flag);
}
/**

View File

@ -1038,7 +1038,7 @@ void clif_update_rankingpoint(struct map_session_data *sd, int rankingtype, int
void clif_crimson_marker(struct map_session_data *sd, struct block_list *bl, bool remove);
void clif_showscript(struct block_list* bl, const char* message);
void clif_showscript(struct block_list* bl, const char* message, enum send_target flag);
void clif_party_leaderchanged(struct map_session_data *sd, int prev_leader_aid, int new_leader_aid);
void clif_account_name(int fd, uint32 account_id, const char* accname);

View File

@ -181,17 +181,25 @@
packet_keys(0x3C6447A8,0x032170D7,0x6490476C);
#elif PACKETVER == 20151014 // 2015-10-14bRagexeRE
packet_keys(0x402728A8,0x5D0E309F,0x240018FD);
#elif PACKETVER == 20151022 // 2015-10-22aRagexeRE
packet_keys(0x0311104D,0x46C326D6,0x00E82720);
#elif PACKETVER == 20151028 // 2015-10-28cRagexeRE
packet_keys(0x45B945B9,0x45B945B9,0x45B945B9);
#elif PACKETVER == 20151029 // 2015-10-29aRagexe
packet_keys(0x45B945B9,0x45B945B9,0x45B945B9);
#elif PACKETVER == 20151104 // 2015-11-04aRagexe
packet_keys(0x4C17382A,0x7ED174C9,0x29961E4F);
#elif PACKETVER == 20151111 // 2015-11-11aRagexeRE
packet_keys(0x46097C77,0x5F193871,0x29140A21);
#elif PACKETVER == 20151118 // 2015-11-18aRagexeRE
packet_keys(0x734C3241,0x6E846F34,0x731C06D6);
#elif PACKETVER == 20151125 // 2015-11-25dRagexeRE
packet_keys(0x237446C0,0x5EFB343A,0x0EDF06C5);
#elif PACKETVER == 20151202 // 2015-12-02bRagexeRE
packet_keys(0x4EDE52DE,0x52DE52DE,0x52DE52DE);
#elif PACKETVER == 20151216 // 2015-12-16aRagexe
#elif PACKETVER == 20151209 // 2015-12-09aRagexeRE
packet_keys(0x652C5898,0x7A351FB3,0x67EA2886);
#elif PACKETVER == 20151216 // 2015-12-16aRagexeRE
packet_keys(0x25DD643D,0x61AC39DE,0x77A8206D);
#elif PACKETVER == 20151223 // 2015-12-23bRagexeRE
packet_keys(0x347D68D0,0x2C705320,0x7B4A199D);
@ -245,7 +253,7 @@
packet_keys(0x062C5C26,0x6CF47E82,0x4DD53480);
#elif PACKETVER == 20160622 // 2016-06-22aRagexeRE
packet_keys(0x426548AB,0x5C0F5DD4,0x03022710);
#elif PACKETVER == 20160630 // 2016-06-30aRagexeRE
#elif PACKETVER == 20160629 || PACKETVER == 20160630 // 2016-06-29aRagexeRE or 2016-06-30aRagexeRE
packet_keys(0x0DF31CCC,0x54281606,0x5C4C6855);
#elif PACKETVER == 20160706 // 2016-07-06cRagexeRE
packet_keys(0x33A766D0,0x743F04F8,0x0FA0276C);
@ -277,7 +285,7 @@
packet_keys(0x34882F11,0x7C870E70,0x7E61350D);
#elif PACKETVER == 20161026 // 2016-10-26bRagexeRE
packet_keys(0x2CB86AE6,0x7D12660E,0x1B004DEB);
#elif PACKETVER == 20161103 // 2016-11-03aRagexeRE
#elif PACKETVER == 20161102 || PACKETVER == 20161103 // 2016-11-02aRagexeRE or 2016-11-03aRagexeRE
packet_keys(0x76725C17,0x72FE4EC1,0x07A91BFD);
#elif PACKETVER == 20161109 // 2016-11-09bRagexeRE
packet_keys(0x0A5277C0,0x2DB17506,0x0E8F26DA);
@ -345,6 +353,29 @@
packet_keys(0x155F34EC,0x2D943FA9,0x3D9170EB);
#elif PACKETVER == 20170628 // 2017-06-28bRagexeRE
packet_keys(0x04691C86,0x43C210E2,0x2FE277E2);
#elif PACKETVER == 20170705 // 2017-07-05aRagexeRE
packet_keys(0x7EB000AE,0x02FB1DBC,0x5CB131E6);
#elif PACKETVER == 20170712 // 2017-07-12bRagexeRE
packet_keys(0x2C3C202C,0x3F2C2F2C,0x2F2C2F2C);
#elif PACKETVER == 20170719 // 2017-07-19aRagexeRE
packet_keys(0x46465C88,0x10116F66,0x200866F9);
#elif PACKETVER == 20170726 // 2017-07-26cRagexeRE
packet_keys(0x102F23DB,0x7E767751,0x3BC172EF);
#elif PACKETVER == 20170801 // 2017-08-01aRagexeRE
packet_keys(0x26B52A7F,0x5377619D,0x4F580AC4);
//#elif PACKETVER == 20170809 // 2017-08-09cRagexeRE
#elif PACKETVER == 20170816 // 2017-08-16dRagexeRE
packet_keys(0x78914673,0x3F8B7634,0x55B814BC);
#elif PACKETVER == 20170823 // 2017-08-23aRagexeRE
packet_keys(0x22677205,0x393D1002,0x58DC6BB4);
#elif PACKETVER == 20170830 // 2017-08-30bRagexeRE
packet_keys(0x1D49592B,0x00970C17,0x1E640103);
#elif PACKETVER == 20170906 // 2017-09-06cRagexeRE
packet_keys(0x7DEF7677,0x351F36E6,0x52303485);
#elif PACKETVER == 20170913 // 2017-09-13bRagexeRE
packet_keys(0x7A645935,0x1DA05062,0x5A7A4C43);
#elif PACKETVER == 20170920 // 2017-09-20bRagexeRE
packet_keys(0x53024DA5,0x04EC212D,0x0BF87CD4);
#elif PACKETVER > 20110817
#error Unsupported packet version.
#endif

View File

@ -2346,4 +2346,10 @@
packet(0x0ABD,10);
#endif
// 2017-08-30bRagexeRE
#if PACKETVER >= 20170830
packet(0x0ACB,12);
packet(0x0ACC,18);
#endif
#endif /* _CLIF_PACKETDB_H_ */

View File

@ -1058,6 +1058,37 @@
parseable_packet(0x095e,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0961,6,clif_parse_GetCharNameRequest,2);
parseable_packet(0x0964,19,clif_parse_WantToConnection,2,6,10,14,18);
// 2015-10-22aRagexeRE
#elif PACKETVER == 20151022
parseable_packet(0x023B,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x02C4,36,clif_parse_StoragePassword,0);
parseable_packet(0x035F,6,clif_parse_TickSend,2);
parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x0361,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0362,6,clif_parse_DropItem,2,4);
//parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4);
parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0368,6,clif_parse_SolveCharName,2);
parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6);
//parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0437,5,clif_parse_WalkToXY,2);
parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x07E4,6,clif_parse_TakeItem,2);
parseable_packet(0x07EC,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x086A,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x091D,5,clif_parse_HomMenu,2,4);
parseable_packet(0x0940,26,clif_parse_PartyInvite2,2);
parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2);
// 2015-10-28cRagexeRE
#elif PACKETVER == 20151028
parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4);
@ -1151,6 +1182,37 @@
parseable_packet(0x093A,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x0940,36,clif_parse_StoragePassword,2,4,20);
parseable_packet(0x0964,6,clif_parse_TakeItem,2);
// 2015-11-11aRagexeRE
#elif PACKETVER == 20151111
parseable_packet(0x02C4,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x035F,6,clif_parse_TickSend,2);
parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x0362,5,clif_parse_HomMenu,2,4);
parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0368,6,clif_parse_SolveCharName,2);
parseable_packet(0x0369,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0437,5,clif_parse_WalkToXY,2);
parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8);
//parseable_packet(0x0802,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0815,26,clif_parse_PartyInvite2,2);
parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x085D,-1,clif_parse_ItemListWindowSelected,2,4,8,8,12);
parseable_packet(0x0862,6,clif_parse_DropItem,2,4);
parseable_packet(0x0871,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x0885,7,clif_parse_ActionRequest,2,6);
parseable_packet(0x089C,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0942,18,clif_parse_PartyBookingRegisterReq,2,4,6);
parseable_packet(0x094A,6,clif_parse_TakeItem,2);
//parseable_packet(0x0958,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0966,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x0967,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x0969,36,clif_parse_StoragePassword,2,4,20);
parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2);
// 2015-11-18aRagexeRE
#elif PACKETVER == 20151118
parseable_packet(0x022d,6,clif_parse_TickSend,2);
@ -1182,6 +1244,37 @@
//parseable_packet(0x0957,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x095c,18,clif_parse_PartyBookingRegisterReq,2,4,6);
parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2);
// 2015-11-25dRagexeRE
#elif PACKETVER == 20151125
parseable_packet(0x0361,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x0365,5,clif_parse_WalkToXY,2);
parseable_packet(0x0366,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x0368,-1,clif_parse_ItemListWindowSelected,2,4,8,8,12);
parseable_packet(0x0438,6,clif_parse_TakeItem,2);
parseable_packet(0x0802,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x0838,18,clif_parse_PartyBookingRegisterReq,2,4,6);
parseable_packet(0x085E,6,clif_parse_GetCharNameRequest,2);
parseable_packet(0x085F,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0863,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0883,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0884,36,clif_parse_StoragePassword,2,4,20);
//parseable_packet(0x0885,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x088C,6,clif_parse_TickSend,2);
parseable_packet(0x088D,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x0899,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x089C,7,clif_parse_ActionRequest,2,6);
parseable_packet(0x089F,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x08A9,6,clif_parse_DropItem,2,4);
parseable_packet(0x08AD,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0920,6,clif_parse_SolveCharName,2);
parseable_packet(0x092A,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x092E,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x0939,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x093E,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x0951,5,clif_parse_HomMenu,2,4);
parseable_packet(0x0956,26,clif_parse_PartyInvite2,2);
//parseable_packet(0x0957,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0959,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
// 2015-12-02bRagexeRE
#elif PACKETVER == 20151202
parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4);
@ -1213,6 +1306,38 @@
parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x0870,36,clif_parse_StoragePassword,2,4,20);
parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2);
// 2015-12-09aRagexeRE
#elif PACKETVER == 20151209
parseable_packet(0x0365,5,clif_parse_WalkToXY,2);
parseable_packet(0x0369,6,clif_parse_SolveCharName,2);
parseable_packet(0x07E4,26,clif_parse_PartyInvite2,2);
parseable_packet(0x07EC,6,clif_parse_TakeItem,2);
parseable_packet(0x0811,6,clif_parse_TickSend,2);
parseable_packet(0x0819,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x085B,36,clif_parse_StoragePassword,2,4,20);
parseable_packet(0x085D,6,clif_parse_GetCharNameRequest,2);
parseable_packet(0x085E,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x0861,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x0866,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0875,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x087A,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x087F,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x088E,10,clif_parse_UseSkillToId,2,4,6);
//parseable_packet(0x088F,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0894,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x08A1,5,clif_parse_HomMenu,2,4);
parseable_packet(0x0920,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x092D,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x0930,6,clif_parse_DropItem,2,4);
parseable_packet(0x0932,-1,clif_parse_ItemListWindowSelected,2,4,8,8,12);
parseable_packet(0x093B,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0948,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x094A,18,clif_parse_PartyBookingRegisterReq,2,4,6);
parseable_packet(0x0956,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
//parseable_packet(0x095C,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0961,7,clif_parse_ActionRequest,2,6);
parseable_packet(0x0964,26,clif_parse_FriendsListAdd,2);
// 2015-12-16aRagexeRE
#elif PACKETVER == 20151216
parseable_packet(0x022D,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0361,6,clif_parse_ReqClickBuyingStore,2);
@ -2049,8 +2174,8 @@
parseable_packet(0x0959,6,clif_parse_GetCharNameRequest,2);
parseable_packet(0x0965,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0969,6,clif_parse_DropItem,2,4);
// 2016-06-30aRagexeRE
#elif PACKETVER == 20160630
// 2016-06-29aRagexeRE or 2016-06-30aRagexeRE
#elif PACKETVER == 20160629 || PACKETVER == 20160630
parseable_packet(0x0202,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x022d,5,clif_parse_WalkToXY,2);
//parseable_packet(0x035f,4,NULL,0); // CZ_GANGSI_RANK
@ -2545,8 +2670,8 @@
parseable_packet(0x095c,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x095e,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0962,5,clif_parse_ChangeDir,2,4);
// 2016-11-03aRagexeRE
#elif PACKETVER == 20161103
// 2016-11-02aRagexeRE or 2016-11-03aRagexeRE
#elif PACKETVER == 20161102 || PACKETVER == 20161103
parseable_packet(0x0361,8,clif_parse_MoveFromKafra,2,4);
//parseable_packet(0x0367,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0436,7,clif_parse_ActionRequest,2,6);
@ -3599,6 +3724,349 @@
parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x0863,36,clif_parse_StoragePassword,0);
parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2);
// 2017-07-05aRagexeRE
#elif PACKETVER == 20170705
parseable_packet(0x0202,36,clif_parse_StoragePassword,0);
parseable_packet(0x02C4,18,clif_parse_PartyBookingRegisterReq,2,4);
parseable_packet(0x035F,6,clif_parse_TickSend,2);
parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0368,6,clif_parse_SolveCharName,2);
parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6);
parseable_packet(0x0437,5,clif_parse_WalkToXY,2);
parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x0879,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0886,26,clif_parse_FriendsListAdd,2);
//parseable_packet(0x088D,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x088E,26,clif_parse_PartyInvite2,2);
parseable_packet(0x089A,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x089D,6,clif_parse_DropItem,2,4);
parseable_packet(0x091A,5,clif_parse_ChangeDir,2,4);
//parseable_packet(0x092F,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0930,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x0932,6,clif_parse_TakeItem,2);
parseable_packet(0x0934,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x094C,5,clif_parse_HomMenu,2,4);
parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2);
// 2017-07-12bRagexeRE
#elif PACKETVER == 20170712
parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x022D,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x023B,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x035F,6,clif_parse_TickSend,2);
parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x0361,5,clif_parse_HomMenu,2,4);
parseable_packet(0x0362,6,clif_parse_DropItem,2,4);
//parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4);
parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0368,6,clif_parse_SolveCharName,2);
parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6);
//parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0437,5,clif_parse_WalkToXY,2);
parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x07E4,6,clif_parse_TakeItem,2);
parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0802,26,clif_parse_PartyInvite2,2);
parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x0944,36,clif_parse_StoragePassword,0);
parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2);
// 2017-07-19aRagexeRE
#elif PACKETVER == 20170719
parseable_packet(0x022D,7,clif_parse_ActionRequest,2,6);
parseable_packet(0x0367,2,clif_parse_ReqCloseBuyingStore,0);
//parseable_packet(0x0368,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0369,5,clif_parse_HomMenu,2,4);
parseable_packet(0x07E4,6,clif_parse_GetCharNameRequest,2);
parseable_packet(0x085A,6,clif_parse_TickSend,2);
parseable_packet(0x085E,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x0863,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x086E,26,clif_parse_PartyInvite2,2);
parseable_packet(0x087D,6,clif_parse_TakeItem,2);
parseable_packet(0x0881,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0882,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x0885,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x0891,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x0898,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x089A,36,clif_parse_StoragePassword,0);
parseable_packet(0x089D,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x08A6,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x08A8,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x091B,6,clif_parse_DropItem,2,4);
parseable_packet(0x091F,6,clif_parse_SolveCharName,2);
parseable_packet(0x092C,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x092E,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x092F,18,clif_parse_PartyBookingRegisterReq,2,4);
parseable_packet(0x093D,5,clif_parse_WalkToXY,2);
//parseable_packet(0x093E,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0944,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0946,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x0966,8,clif_parse_MoveToKafra,2,4);
// 2017-07-26cRagexeRE
#elif PACKETVER == 20170726
parseable_packet(0x0363,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x0364,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0366,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x0369,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x0438,26,clif_parse_PartyInvite2,2);
parseable_packet(0x0838,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0873,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x0874,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x0878,7,clif_parse_ActionRequest,2,6);
//parseable_packet(0x0881,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0888,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x088E,5,clif_parse_WalkToXY,2);
//parseable_packet(0x08A3,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x08A7,36,clif_parse_StoragePassword,0);
parseable_packet(0x08AA,6,clif_parse_GetCharNameRequest,2);
parseable_packet(0x08AB,6,clif_parse_TakeItem,2);
parseable_packet(0x08AC,6,clif_parse_TickSend,2);
parseable_packet(0x091D,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x091E,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x091F,5,clif_parse_HomMenu,2,4);
parseable_packet(0x0921,6,clif_parse_SolveCharName,2);
parseable_packet(0x0923,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0943,6,clif_parse_DropItem,2,4);
parseable_packet(0x094F,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x0950,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x0952,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0954,18,clif_parse_PartyBookingRegisterReq,2,4);
parseable_packet(0x095A,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0963,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
// 2017-08-01aRagexeRE
#elif PACKETVER == 20170801
parseable_packet(0x022D,6,clif_parse_DropItem,2,4);
parseable_packet(0x0281,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x035F,6,clif_parse_TickSend,2);
parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x0361,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x0362,5,clif_parse_HomMenu,2,4);
//parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4);
parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0368,6,clif_parse_SolveCharName,2);
parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6);
parseable_packet(0x0437,5,clif_parse_WalkToXY,2);
parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x07E4,6,clif_parse_TakeItem,2);
parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0802,26,clif_parse_PartyInvite2,2);
parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x087D,36,clif_parse_StoragePassword,0);
//parseable_packet(0x08A6,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x094F,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x095A,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2);
// 2017-08-09cRagexeRE
//#elif PACKETVER == 20170809
// 2017-08-16dRagexeRE
#elif PACKETVER == 20170816
parseable_packet(0x022D,6,clif_parse_GetCharNameRequest,2);
parseable_packet(0x035F,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x0361,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x0362,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0438,7,clif_parse_ActionRequest,2,6);
parseable_packet(0x085A,6,clif_parse_SolveCharName,2);
parseable_packet(0x0862,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x0864,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x087E,6,clif_parse_TakeItem,2);
parseable_packet(0x0881,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0882,36,clif_parse_StoragePassword,0);
//parseable_packet(0x0884,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0888,18,clif_parse_PartyBookingRegisterReq,2,4);
parseable_packet(0x0889,6,clif_parse_TickSend,2);
parseable_packet(0x08A3,26,clif_parse_FriendsListAdd,2);
//parseable_packet(0x08A7,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x08A9,5,clif_parse_WalkToXY,2);
parseable_packet(0x08AC,5,clif_parse_HomMenu,2,4);
parseable_packet(0x091C,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x0921,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x0925,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x092C,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x093A,26,clif_parse_PartyInvite2,2);
parseable_packet(0x093D,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x0940,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x0941,6,clif_parse_DropItem,2,4);
parseable_packet(0x0950,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0959,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0960,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
// 2017-08-23aRagexeRE
#elif PACKETVER == 20170823
parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x035F,6,clif_parse_TickSend,2);
parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x0361,26,clif_parse_PartyInvite2,2);
parseable_packet(0x0362,6,clif_parse_DropItem,2,4);
//parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4);
parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0368,6,clif_parse_SolveCharName,2);
parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6);
//parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0437,5,clif_parse_WalkToXY,2);
parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x07E4,6,clif_parse_TakeItem,2);
parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0802,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x086C,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x086D,36,clif_parse_StoragePassword,0);
parseable_packet(0x08AC,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x095B,5,clif_parse_HomMenu,2,4);
parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2);
// 2017-08-30bRagexeRE
#elif PACKETVER == 20170830
parseable_packet(0x0281,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x02C4,6,clif_parse_TakeItem,2);
parseable_packet(0x0363,18,clif_parse_PartyBookingRegisterReq,2,4);
//parseable_packet(0x0364,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0860,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0865,5,clif_parse_WalkToXY,2);
parseable_packet(0x086A,26,clif_parse_PartyInvite2,2);
//parseable_packet(0x0875,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0884,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x0885,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0888,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x0897,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x0899,6,clif_parse_DropItem,2,4);
parseable_packet(0x089A,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x089E,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x08A2,36,clif_parse_StoragePassword,0);
parseable_packet(0x08A8,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x091E,6,clif_parse_TickSend,2);
parseable_packet(0x0921,5,clif_parse_HomMenu,2,4);
parseable_packet(0x0925,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x092E,6,clif_parse_GetCharNameRequest,2);
parseable_packet(0x0939,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x093E,7,clif_parse_ActionRequest,2,6);
parseable_packet(0x0940,6,clif_parse_SolveCharName,2);
parseable_packet(0x0942,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x0943,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x0947,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0951,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x0959,10,clif_parse_UseSkillToPos,2,4,6,8);
// 2017-09-06cRagexeRE
#elif PACKETVER == 20170906
//parseable_packet(0x0202,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0281,36,clif_parse_StoragePassword,0);
parseable_packet(0x02C4,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x035F,6,clif_parse_TickSend,2);
parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x0366,26,clif_parse_PartyInvite2,2);
parseable_packet(0x0368,6,clif_parse_SolveCharName,2);
parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6);
parseable_packet(0x0437,5,clif_parse_WalkToXY,2);
parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x0802,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x0860,6,clif_parse_DropItem,2,4);
parseable_packet(0x0866,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
//parseable_packet(0x086C,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x087B,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x08A2,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x08A3,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x08A7,18,clif_parse_PartyBookingRegisterReq,2,4);
parseable_packet(0x091A,6,clif_parse_TakeItem,2);
parseable_packet(0x091E,5,clif_parse_HomMenu,2,4);
parseable_packet(0x0953,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2);
parseable_packet(0x0281,6,clif_parse_GetCharNameRequest,2);
// 2017-09-13bRagexeRE
#elif PACKETVER == 20170913
parseable_packet(0x035F,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x0437,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x07E4,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x0817,7,clif_parse_ActionRequest,2,6);
parseable_packet(0x0835,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x085A,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0860,6,clif_parse_TakeItem,2);
parseable_packet(0x0865,26,clif_parse_PartyInvite2,2);
parseable_packet(0x0866,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x088C,5,clif_parse_HomMenu,2,4);
parseable_packet(0x0890,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x0891,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x0892,36,clif_parse_StoragePassword,0);
parseable_packet(0x08A6,6,clif_parse_ReqClickBuyingStore,2);
//parseable_packet(0x08A7,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x08AA,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x08AB,18,clif_parse_PartyBookingRegisterReq,2,4);
parseable_packet(0x08AC,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x08AD,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x091B,6,clif_parse_TickSend,2);
parseable_packet(0x091D,6,clif_parse_DropItem,2,4);
//parseable_packet(0x091E,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0920,2,clif_parse_SearchStoreInfoNextPage,0);
parseable_packet(0x0923,5,clif_parse_WalkToXY,2);
parseable_packet(0x0925,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x0927,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x095A,10,clif_parse_UseSkillToPos,2,4,6,8);
parseable_packet(0x095C,6,clif_parse_SolveCharName,2);
// 2017-09-20bRagexeRE
#elif PACKETVER == 20170920
parseable_packet(0x0369,6,clif_parse_TakeItem,2);
parseable_packet(0x0436,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
parseable_packet(0x07EC,8,clif_parse_MoveFromKafra,2,4);
parseable_packet(0x085A,5,clif_parse_WalkToXY,2);
parseable_packet(0x0861,26,clif_parse_FriendsListAdd,2);
parseable_packet(0x0862,10,clif_parse_UseSkillToId,2,4,6);
parseable_packet(0x0864,36,clif_parse_StoragePassword,0);
parseable_packet(0x0865,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
parseable_packet(0x086A,26,clif_parse_PartyInvite2,2);
parseable_packet(0x086C,6,clif_parse_DropItem,2,4);
parseable_packet(0x0874,2,clif_parse_ReqCloseBuyingStore,0);
//parseable_packet(0x0875,4,NULL,0); // CZ_GANGSI_RANK
parseable_packet(0x0889,6,clif_parse_GetCharNameRequest,2);
parseable_packet(0x088E,6,clif_parse_TickSend,2);
parseable_packet(0x089B,7,clif_parse_ActionRequest,2,6);
parseable_packet(0x0919,10,clif_parse_UseSkillToPos,2,4,6,8);
//parseable_packet(0x091E,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
parseable_packet(0x0921,6,clif_parse_SolveCharName,2);
parseable_packet(0x0923,19,clif_parse_WantToConnection,2,6,10,14,18);
parseable_packet(0x0926,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x092E,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
parseable_packet(0x0937,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
parseable_packet(0x0939,5,clif_parse_ChangeDir,2,4);
parseable_packet(0x0945,18,clif_parse_PartyBookingRegisterReq,2,4);
parseable_packet(0x094C,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
parseable_packet(0x095D,5,clif_parse_HomMenu,2,4);
parseable_packet(0x0961,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x0966,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
parseable_packet(0x096A,2,clif_parse_SearchStoreInfoNextPage,0);
#endif
#endif /* _CLIF_SHUFFLE_H_ */

View File

@ -6410,7 +6410,7 @@ int pc_follow_timer(int tid, unsigned int tick, int id, intptr_t data)
sd->followtimer = INVALID_TIMER;
tbl = map_id2bl(sd->followtarget);
if (tbl == NULL || pc_isdead(sd) || status_isdead(tbl))
if (tbl == NULL || pc_isdead(sd))
{
pc_stop_following(sd);
return 0;

View File

@ -19718,7 +19718,7 @@ unsigned short script_instancegetid(struct script_state* st)
struct guild *gd = NULL;
struct clan *cd = NULL;
if (script_rid2sd(sd)) {
if ((sd = map_id2sd(st->rid))) {
if (sd->instance_id)
instance_id = sd->instance_id;
if (instance_id == 0 && sd->status.party_id && (pd = party_search(sd->status.party_id)) != NULL && pd->instance_id)
@ -22083,12 +22083,16 @@ BUILDIN_FUNC(getvar) {
/**
* Display script message
* showscript "<message>"{,<GID>};
* showscript "<message>"{,<GID>,<flag>};
* @param flag: Specify target
* AREA - Message is sent to players in the vicinity of the source (default).
* SELF - Message is sent only to player attached.
**/
BUILDIN_FUNC(showscript) {
struct block_list *bl = NULL;
const char *msg = script_getstr(st,2);
int id = 0;
send_target target = AREA;
if (script_hasdata(st,3)) {
id = script_getnum(st,3);
@ -22104,7 +22108,15 @@ BUILDIN_FUNC(showscript) {
return SCRIPT_CMD_FAILURE;
}
clif_showscript(bl, msg);
if (script_hasdata(st, 4)) {
target = static_cast<send_target>(script_getnum(st, 4));
if (target == SELF && map_id2sd(bl->id) == NULL) {
ShowWarning("script: showscript: self can't be used for non-players objects.\n");
return SCRIPT_CMD_FAILURE;
}
}
clif_showscript(bl, msg, target);
script_pushint(st,1);
return SCRIPT_CMD_SUCCESS;
@ -23565,6 +23577,7 @@ BUILDIN_FUNC(achievementupdate) {
/**
* Get an equipment's refine cost
* getequiprefinecost(<equipment slot>,<type>,<information>{,<char id>})
* returns -1 on fail
*/
BUILDIN_FUNC(getequiprefinecost) {
int i = -1, slot, type, info;
@ -23579,9 +23592,19 @@ BUILDIN_FUNC(getequiprefinecost) {
return SCRIPT_CMD_FAILURE;
}
if (type < 0 || type >= REFINE_COST_MAX) {
script_pushint(st, -1);
return SCRIPT_CMD_SUCCESS;
}
if (equip_index_check(slot))
i = pc_checkequip(sd, equip_bitmask[slot]);
if (i < 0) {
script_pushint(st, -1);
return SCRIPT_CMD_SUCCESS;
}
int weapon_lv = sd->inventory_data[i]->wlv;
if (sd->inventory_data[i]->type == IT_SHADOWGEAR) {
if (sd->inventory_data[i]->equip == EQP_SHADOW_WEAPON)
@ -24178,7 +24201,7 @@ struct script_function buildin_func[] = {
BUILDIN_DEF(npcshopupdate,"sii?"),
BUILDIN_DEF(getattachedrid,""),
BUILDIN_DEF(getvar,"vi"),
BUILDIN_DEF(showscript,"s?"),
BUILDIN_DEF(showscript,"s??"),
BUILDIN_DEF(ignoretimeout,"i?"),
BUILDIN_DEF(geteleminfo,"i?"),
BUILDIN_DEF(setquestinfo_level,"iii"),

View File

@ -2712,7 +2712,11 @@ static int skill_magic_reflect(struct block_list* src, struct block_list* bl, in
return 0;
// Kaite reflection - Does not bypass Boss check
if( sc->data[SC_KAITE] && (src->type == BL_PC || status_get_lv(src) <= 80) ) {
if( sc->data[SC_KAITE] && (src->type == BL_PC || status_get_lv(src) <= 80)
#ifdef RENEWAL
&& type // Does not reflect AoE
#endif
) {
// Kaite only works against non-players if they are low-level.
// Kyomu doesn't disable Kaite, but the "skill fail chance" part of Kyomu applies to it.
clif_specialeffect(bl, 438, AREA);