Merge branch 'master' into academie

This commit is contained in:
Atemo 2015-11-24 18:01:09 +01:00
commit 9b13351817
30 changed files with 602 additions and 266 deletions

View File

@ -237,3 +237,8 @@ mob_size_influence: no
// Default (most official): mob - 220, boss - 1
mob_icewall_walk_block: 75
boss_icewall_walk_block: 0
// Should HP bars be shown for monsters?
// 2012-04-04aRagexeRE or higher client required.
monster_hp_bars_info: yes

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: Invalid amount of parameters.
//407 free
//chrif related
408: Need disconnection to perform change-sex request...
409: Your sex has been changed (need disconnection by the server)...

View File

@ -412,7 +412,7 @@
404: 攻城戰第二版正在進行中
405: 攻城戰第二版結束了
406: 攻城戰第二版尚未開始
407: Invalid amount of parameters.
//407 free
//chrif related
408: 需要斷線以更改性別
409: 你的性別已更改(你將會被伺服器中斷連線)

View File

@ -420,7 +420,7 @@
404: War of Emperium SE en cours.
405: War of Emperium SE est terminée.
406: War of Emperium SE n'est pas en cours.
407: Invalid amount of parameters.
//407 free
//chrif related
408: Besoin de vous déconnecter pour effectuer la demande de changement de sexe...
409: Changement de sexe (le serveur a besoin de vous déconnecter)...

View File

@ -403,7 +403,7 @@
404: War of Emperium SE ist derzeitig im Gange.
405: War of Emperium SE wurde Beendet.
406: War of Emperium SE ist derzeitig nicht im Gange.
407: Invalid amount of parameters.
//407 free
// Homunculus messages
450: Du hast bereitz ein Homunculus

View File

@ -423,7 +423,7 @@
404: War of Emperium SE saat ini sedang berjalan.
405: War of Emperium SE telah dimulai.
406: War of Emperium SE saat ini sedang tidak berjalan.
407: Invalid amount of parameters.
//407 free
//berkaitan dengan chrif
408: Dibutuhkan pemutusan koneksi untuk melakukan permintaan ubah jenis kelamin ...
409: Jenis kelaminmu telah diganti (membutuhkan pemutusan koneksi oleh server) ...

View File

@ -410,7 +410,7 @@
404: A Guerra do Emperium SE já está em progresso.
405: A Guerra do Emperium SE terminou!
406: A Guerra do Emperium SE ainda não foi iniciada.
407: Invalid amount of parameters.
//407 free
//Mensagens relacionadas ao chrif
408: É preciso desconectar-se para que o pedido de mudança de sexo seja processado...
409: O seu sexo foi alterado (é preciso desconectar-se do servidor)...

View File

@ -420,7 +420,7 @@
404: Война за Империум 2.0 уже идёт.
405: Война за Империум 2.0 окончена.
406: Война за Империум 2.0 в текущее время не идёт.
407: Invalid amount of parameters.
//407 free
//chrif related
408: Необходимо отключение для выполнения запроса на смену пола...
409: Ваш пол был изменен (необходимо отключение от сервера)...

View File

@ -411,7 +411,7 @@
404: Hay una Guerra del Emperium de la 2ª edición en marcha.
405: Ha finalizado la Guerra del Emperium de la 2ª edición.
406: No hay ninguna Guerra del Emperium de la 2ª edición en marcha.
407: Invalid amount of parameters.
//407 free
//Mensajes de chrif
408: Necesitas desconectarte para realizar el cambio de sexo.
409: Has cambiado de sexo (necesitas desconectarte y volver a entrar)

View File

@ -418,7 +418,7 @@
404: War of Emperium SE ∂턺㎎彖拈睾撫尸∏橘旅.
405: War of Emperium SE 芽蟯뵀<E89FAF>.
406: War of Emperium SE 幄巍닻롭㎾믹쬔嵬묄넓밌<EB8493>.
407: Invalid amount of parameters.
//407 free
//chrif related
408: 들系둘뇟櫓夕羸皐듣滾묀櫓닒仙瀆⌒창梱뼜㏅안 ...
409: ㅨ념닻沼큘宣휸촹쨘췌睾 (들系둘뇟櫓夕羸皐듣繫納奭惇荑璿稿<E792BF>)...

View File

@ -1895,9 +1895,10 @@ packet_keys: 0x3F094C49,0x55F86C1E,0x58AA359A // [Shakto]
0x099b,8 //maptypeproperty2
// New Packets
0x08ff,24 // ZC_EFST_SET_ENTER
0x0984,28 // ZC_EFST_SET_ENTER2
0x099f,22 // ZC_SKILL_ENTRY4
0x08C8,34 // ZC_NOTIFY_ACT3
0x08ff,24 // ZC_EFST_SET_ENTER
0x0984,28 // ZC_EFST_SET_ENTER2
0x099f,22 // ZC_SKILL_ENTRY4
//2013-05-15aRagexe (Yommy)
packet_ver: 35
@ -2326,7 +2327,13 @@ packet_keys: 0x631C511C,0x111C111C,0x111C111C // [Shakto]
0x09D6,-1,npcmarketpurchase,2:4:6
0x09D7,-1
0x09D8,2,npcmarketclosed,0
0x09DF,7
// New Packet
0x097A,-1 // ZC_ALL_QUEST_LIST2
0x09DB,-1 // ZC_NOTIFY_MOVEENTRY10
0x09DC,-1 // ZC_NOTIFY_NEWENTRY10
0x09DD,-1 // ZC_NOTIFY_STANDENTRY10
0x09DF,7 // ZC_ACK_WHISPER02
//2014-10-16Ragexe
packet_ver: 50
@ -2361,20 +2368,24 @@ packet_keys: 0x2DFF467C,0x444B37EE,0x2C1B634F // [YomRawr]
0x0364,5,hommenu,2:4
0x0936,36,storagepassword,0
0x09DF,7
0x0A00,269
0x0A01,3,hotkeyrowshift,2
// New packet
0x0A00,269 // ZC_SHORTCUT_KEY_LIST_V3
0x0A01,3,hotkeyrowshift,2 // CZ_SHORTCUTKEYBAR_ROTATE
0x0A02,4 // ZC_DRESSROOM_OPEN
0x09F7,75 // ZC_PROPERTY_HOMUN_2
// Roulette System [Yommy]
0x0A19,2,rouletteopen,0 // HEADER_CZ_REQ_OPEN_ROULETTE
0x0A1A,23 // HEADER_ZC_ACK_OPEN_ROULETTE
0x0A1B,2,rouletteinfo,0 // HEADER_CZ_REQ_ROULETTE_INFO
0x0A1C,-1 // HEADER_ZC_ACK_ROULETTE_INFO
0x0A1D,2,rouletteclose,0 // HEADER_CZ_REQ_CLOSE_ROULETTE
0x0A1E,3 // HEADER_ZC_ACK_CLOSE_ROULETTE
0x0A1F,2,roulettegenerate,0 // HEADER_CZ_REQ_GENERATE_ROULETTE
0x0A20,21 // HEADER_ZC_ACK_GENERATE_ROULETTE
0x0A21,3,rouletterecvitem,2 // HEADER_CZ_RECV_ROULETTE_ITEM
0x0A22,5 // HEADER_ZC_RECV_ROULETTE_ITEM
0x0A19,2,rouletteopen,0 // CZ_REQ_OPEN_ROULETTE
0x0A1A,23 // ZC_ACK_OPEN_ROULETTE
0x0A1B,2,rouletteinfo,0 // CZ_REQ_ROULETTE_INFO
0x0A1C,-1 // ZC_ACK_ROULETTE_INFO
0x0A1D,2,rouletteclose,0 // CZ_REQ_CLOSE_ROULETTE
0x0A1E,3 // ZC_ACK_CLOSE_ROULETTE
0x0A1F,2,roulettegenerate,0 // CZ_REQ_GENERATE_ROULETTE
0x0A20,21 // ZC_ACK_GENERATE_ROULETTE
0x0A21,3,rouletterecvitem,2 // CZ_RECV_ROULETTE_ITEM
0x0A22,5 // ZC_RECV_ROULETTE_ITEM
//2014-10-22bRagexe
packet_ver: 51
@ -2410,30 +2421,98 @@ packet_keys: 0x290551EA,0x2B952C75,0x2D67669B // [YomRawr]
0x094e,6,takeitem,2
0x0955,18,bookingregreq,2:4:6
0x096a,6,getcharnamerequest,2
0x09e7,3
0x09e8,11
0x09ea,11
0x09eb,-1
0x09ed,3
0x09ee,11
0x09f1,11
0x09f2,12
0x09f3,11
0x09f9,143
0x0a03,2
0x0a04,6
0x0a05,49
0x0a06,6
0x0a07,9
0x0a08,26
0x0a09,45
0x0a0a,47
0x0a0b,47
0x0a0c,56
0x0a0d,-1
0x0a13,26
0x0A18,14 // HEADER_ZC_ACCEPT_ENTER3
0x0a24,66
// New Packet
0x0A18,14 // ZC_ACCEPT_ENTER3
0x0A23,-1 // ZC_ALL_ACH_LIST
0x0A24,66 // ZC_ACH_UPDATE
0x0A28,3 // ZC_ACK_OPENSTORE2
0x09FD,-1 // ZC_NOTIFY_MOVEENTRY11
0x09FE,-1 // ZC_NOTIFY_NEWENTRY11
0x09FF,-1 // ZC_NOTIFY_STANDENTRY11
//0x09F8,-1 // ZC_ALL_QUEST_LIST3
//2015-05-13aRagexe
packet_ver: 52
packet_keys: 0x62C86D09,0x75944F17,0x112C133D // [YomRawr]
0x0369,7,actionrequest,2:6
0x083C,10,useskilltoid,2:4:6
0x0437,5,walktoxy,2
0x035F,6,ticksend,2
0x0924,5,changedir,2:4
0x0958,6,takeitem,2
0x0885,6,dropitem,2:4
0x0879,8,movetokafra,2:4
0x0864,8,movefromkafra,2:4
0x0438,10,useskilltopos,2:4:6:8
0x0366,90,useskilltoposinfo,2:4:6:8:10
0x096A,6,getcharnamerequest,2
0x0368,6,solvecharname,2
0x0838,12,searchstoreinfolistitemclick,2:6:10
0x0835,2,searchstoreinfonextpage,0
0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15
0x0811,-1,reqtradebuyingstore,2:4:8:12
0x0360,6,reqclickbuyingstore,2
0x022D,2,reqclosebuyingstore,0
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
0x0883,18,bookingregreq,2:4:6
// 0x02C4,8 CZ_JOIN_BATTLE_FIELD
0x0960,-1, itemlistwindowselected,2:4:8:12
0x0363,19,wanttoconnection,2:6:10:14:18
0x094A,26,partyinvite2,2
// 0x0927,4 CZ_GANGSI_RANK
0x08A8,26,friendslistadd,2
0x0817,5,hommenu,2:4
0x0923,36,storagepassword,2:4:20
// RODEX Mail system
0x09E7,3 // ZC_NOTIFY_UNREADMAIL
0x09E8,11,dull,0 // CZ_OPEN_MAILBOX
0x09E9,2,dull,0 // CZ_CLOSE_MAILBOX
0x09EA,11,dull,0 // CZ_REQ_READ_MAIL
0x09EB,-1 // ZC_ACK_READ_MAIL
0x09EC,-1,dull,0 // CZ_REQ_WRITE_MAIL
0x0A2E,6,dull,0 // CZ_REQ_CHANGE_TITLE
0x09ED,3 // ZC_ACK_WRITE_MAIL
0x09EE,11,dull,0 // CZ_REQ_NEXT_MAIL_LIST
0x09EF,11,dull,0 // CZ_REQ_REFRESH_MAIL_LIST
0x09F0,-1 // ZC_ACK_MAIL_LIST
0x09F1,11,dull,0 // CZ_REQ_ZENY_FROM_MAIL
0x09F2,12 // ZC_ACK_ZENY_FROM_MAIL
0x09F3,11,dull,0 // CZ_REQ_ITEM_FROM_MAIL
0x09F4,12 // ZC_ACK_ITEM_FROM_MAIL
0x09F5,11,dull,0 // CZ_REQ_DELETE_MAIL
0x09F6,11 // ZC_ACK_DELETE_MAIL
0x0A03,2,dull,0 // CZ_REQ_CANCEL_WRITE_MAIL
0x0A04,6,dull,0 // CZ_REQ_ADD_ITEM_TO_MAIL
0x0A05,53 // ZC_ACK_ADD_ITEM_TO_MAIL
0x0A06,6,dull,0 // CZ_REQ_REMOVE_ITEM_MAIL
0x0A07,9 // ZC_ACK_REMOVE_ITEM_MAIL
0x0A08,26,dull,0 // CZ_REQ_OPEN_WRITE_MAIL
0x0A12,27 // ZC_ACK_OPEN_WRITE_MAIL
0x0A32,2 // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
0x0A13,26,dull,0 // CZ_CHECK_RECEIVE_CHARACTER_NAME
0x0A14,10 // ZC_CHECK_RECEIVE_CHARACTER_NAME
// New EquipPackets Support
0x0A09,45 // ZC_ADD_EXCHANGE_ITEM3
0x0A0A,47 // ZC_ADD_ITEM_TO_STORE3
0x0A0B,47 // ZC_ADD_ITEM_TO_CART3
0x0A0C,56 // ZC_ITEM_PICKUP_ACK_V6
0x0A0D,-1 // ZC_INVENTORY_ITEMLIST_EQUIP_V6
0x0A0F,-1 // ZC_CART_ITEMLIST_EQUIP_V6
0x0A10,-1 // ZC_STORE_ITEMLIST_EQUIP_V6
0x0A2D,-1 // ZC_EQUIPWIN_MICROSCOPE_V6
// Title System
0x0A2E,6,dull,0 // CZ_REQ_CHANGE_TITLE
0x0A2F,7 // ZC_ACK_CHANGE_TITLE
0x0A30,106 // ZC_ACK_REQNAMEALL2
// Pet Evolution System
0x09FB,-1,dull,0 // CZ_PET_EVOLUTION
0x09FC,6 // ZC_PET_EVOLUTION_RESULT
//Add new packets here
//packet_ver: 52
//packet_ver: 53

View File

@ -9803,7 +9803,7 @@
19751,C_Light_Darkness_Crown,Costume Light Darkness Crown,4,10,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,988,{},{},{}
19752,C_Shelter_Wing_Ears,Costume Shelter Wing Ears,4,10,,300,,3,,0,0xFFFFFFFF,63,2,2048,,1,,990,{},{},{}
19764,C_Monster_Card,Costume Monster Card,4,10,,0,,,,0,0xFFFFFFFF,63,2,4096,,,,526,{ bonus2 bExpAddRace,RC_All,10; },{},{}
19765,C_Wing_Angels_Ears,Costume Wing Angels Ears,4,10,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,158,{ bonus2 bExpAddRace,RC_All,10; },{},{}
19765,C_Wing_Angels_Ears,Costume Wing Angels Ears,4,10,,0,,,,0,0xFFFFFFFF,63,2,2048,,1,1,158,{ bonus2 bExpAddRace,RC_All,10; },{},{}
19767,C_Home_Cherry_Blossom,Costume Home Cherry Blossom,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,602,{},{},{}
19768,C_Sakura_Coronet,Costume Sakura Coronet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,645,{},{},{}
19772,C_Honeybee_Hat,Costume Honeybee Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,709,{},{},{}

View File

@ -9834,7 +9834,7 @@ REPLACE INTO `item_db_re` VALUES (19750,'C_Saint_Frill_Ribbon','Costume Saint Fr
REPLACE INTO `item_db_re` VALUES (19751,'C_Light_Darkness_Crown','Costume Light Darkness Crown',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,988,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (19752,'C_Shelter_Wing_Ears','Costume Shelter Wing Ears',4,10,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',NULL,990,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (19764,'C_Monster_Card','Costume Monster Card',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,4096,NULL,NULL,NULL,526,'bonus2 bExpAddRace,RC_All,10;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (19765,'C_Wing_Angels_Ears','Costume Wing Angels Ears',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,158,'bonus2 bExpAddRace,RC_All,10;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (19765,'C_Wing_Angels_Ears','Costume Wing Angels Ears',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',1,158,'bonus2 bExpAddRace,RC_All,10;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (19767,'C_Home_Cherry_Blossom','Costume Home Cherry Blossom',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,602,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (19768,'C_Sakura_Coronet','Costume Sakura Coronet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,645,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (19772,'C_Honeybee_Hat','Costume Honeybee Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,709,NULL,NULL,NULL);

View File

@ -5,6 +5,30 @@ UPDATE `inventory` SET `card0` = 256 WHERE `card0` = -256;
UPDATE `mail` SET `card0` = 256 WHERE `card0` = -256;
UPDATE `storage` SET `card0` = 256 WHERE `card0` = -256;
UPDATE `auction` SET `card1` = (65536 + `card1`) WHERE `card1` < 0 AND `card0` IN(254,255);
UPDATE `auction` SET `card2` = (65536 + `card2`) WHERE `card2` < 0 AND `card0` IN(254,255);
UPDATE `auction` SET `card3` = (65536 + `card3`) WHERE `card3` < 0 AND `card0` IN(254,255);
UPDATE `cart_inventory` SET `card1` = (65536 + `card1`) WHERE `card1` < 0 AND `card0` IN(254,255);
UPDATE `cart_inventory` SET `card2` = (65536 + `card2`) WHERE `card2` < 0 AND `card0` IN(254,255);
UPDATE `cart_inventory` SET `card3` = (65536 + `card3`) WHERE `card3` < 0 AND `card0` IN(254,255);
UPDATE `guild_storage` SET `card1` = (65536 + `card1`) WHERE `card1` < 0 AND `card0` IN(254,255);
UPDATE `guild_storage` SET `card2` = (65536 + `card2`) WHERE `card2` < 0 AND `card0` IN(254,255);
UPDATE `guild_storage` SET `card3` = (65536 + `card3`) WHERE `card3` < 0 AND `card0` IN(254,255);
UPDATE `inventory` SET `card1` = (65536 + `card1`) WHERE `card1` < 0 AND `card0` IN(254,255);
UPDATE `inventory` SET `card2` = (65536 + `card2`) WHERE `card2` < 0 AND `card0` IN(254,255);
UPDATE `inventory` SET `card3` = (65536 + `card3`) WHERE `card3` < 0 AND `card0` IN(254,255);
UPDATE `mail` SET `card1` = (65536 + `card1`) WHERE `card1` < 0 AND `card0` IN(254,255);
UPDATE `mail` SET `card2` = (65536 + `card2`) WHERE `card2` < 0 AND `card0` IN(254,255);
UPDATE `mail` SET `card3` = (65536 + `card3`) WHERE `card3` < 0 AND `card0` IN(254,255);
UPDATE `storage` SET `card1` = (65536 + `card1`) WHERE `card1` < 0 AND `card0` IN(254,255);
UPDATE `storage` SET `card2` = (65536 + `card2`) WHERE `card2` < 0 AND `card0` IN(254,255);
UPDATE `storage` SET `card3` = (65536 + `card3`) WHERE `card3` < 0 AND `card0` IN(254,255);
ALTER TABLE `auction` MODIFY `nameid` smallint(5) unsigned NOT NULL default '0';
ALTER TABLE `auction` MODIFY `card0` smallint(5) unsigned NOT NULL default '0';
ALTER TABLE `auction` MODIFY `card1` smallint(5) unsigned NOT NULL default '0';

View File

@ -1,5 +1,9 @@
UPDATE `picklog` SET `card0` = 256 WHERE `card0` = -256;
UPDATE `picklog` SET `card1` = (65536 + `card1`) WHERE `card1` < 0 AND `card0` IN(254,255);
UPDATE `picklog` SET `card2` = (65536 + `card2`) WHERE `card2` < 0 AND `card0` IN(254,255);
UPDATE `picklog` SET `card3` = (65536 + `card3`) WHERE `card3` < 0 AND `card0` IN(254,255);
ALTER TABLE `picklog` MODIFY `nameid` smallint(5) unsigned NOT NULL default '0';
ALTER TABLE `picklog` MODIFY `card0` smallint(5) unsigned NOT NULL default '0';
ALTER TABLE `picklog` MODIFY `card1` smallint(5) unsigned NOT NULL default '0';

View File

@ -369,11 +369,13 @@ void chclif_mmo_char_send(int fd, struct char_session_data* sd){
ShowInfo("sd->version = %d\n",sd->version);
if(sd->version >= date2version(20130000) ){
chclif_mmo_send082d(fd,sd);
chclif_mmo_send006b(fd,sd);
chclif_charlist_notify(fd,sd);
chclif_block_character(fd,sd);
}
} else
chclif_mmo_send006b(fd,sd);
//@FIXME dump from kro doesn't show 6b transmission
chclif_mmo_send006b(fd,sd);
if(sd->version >= date2version(20060819) )
chclif_block_character(fd,sd);
}
/*

View File

@ -382,7 +382,8 @@ uint32 date2version(int date) {
//else if(date < 20140613) return 47;
//else if(date < 20141016) return 48;
else if(date < 20141022) return 50;
else if(date >= 20141022) return 51;
else if(date < 20150513) return 51;
else if(date >= 20150513) return 52;
else return 30; //default
}

View File

@ -578,10 +578,7 @@ ACMD_FUNC(jump)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (sscanf(message, "%6hd %6hd", &x, &y) != 2) {
clif_displaymessage(fd, msg_txt(sd,407));
return -1;
}
sscanf(message, "%6hd %6hd", &x, &y);
if (map[sd->bl.m].flag.noteleport && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
clif_displaymessage(fd, msg_txt(sd,248)); // You are not authorized to warp from your current map.
@ -1145,10 +1142,7 @@ ACMD_FUNC(heal)
int hp = 0, sp = 0; // [Valaris] thanks to fov
nullpo_retr(-1, sd);
if (sscanf(message, "%11d %11d", &hp, &sp) != 2) {
clif_displaymessage(fd, msg_txt(sd,407));
return -1;
}
sscanf(message, "%11d %11d", &hp, &sp);
// some overflow checks
if( hp == INT_MIN ) hp++;

View File

@ -8175,6 +8175,7 @@ static const struct _battle_data {
{ "homunculus_evo_intimacy_reset", &battle_config.homunculus_evo_intimacy_reset, 1000, 0, INT_MAX, },
{ "monster_loot_search_type", &battle_config.monster_loot_search_type, 1, 0, 1, },
{ "feature.roulette", &battle_config.feature_roulette, 1, 0, 1, },
{ "monster_hp_bars_info", &battle_config.monster_hp_bars_info, 1, 0, 1, },
};
#ifndef STATS_OPT_OUT

View File

@ -591,6 +591,7 @@ extern struct Battle_Config
int homunculus_evo_intimacy_reset;
int monster_loot_search_type;
int feature_roulette;
int monster_hp_bars_info;
} battle_config;
void do_init_battle(void);

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,7 @@ struct party_booking_ad_info;
enum { // packet DB
MIN_PACKET_DB = 0x064,
MAX_PACKET_DB = 0xAFF,
MAX_PACKET_VER = 51,
MAX_PACKET_VER = 52,
MAX_PACKET_POS = 20,
};
@ -968,4 +968,6 @@ void clif_merge_item_open(struct map_session_data *sd);
void clif_broadcast_obtain_special_item(const char *char_name, unsigned short nameid, unsigned short container, enum BROADCASTING_SPECIAL_ITEM_OBTAIN type, const char *srcname);
void clif_dressing_room(struct map_session_data *sd, int view);
#endif /* _CLIF_H_ */

View File

@ -514,6 +514,11 @@ int hom_levelup(struct homun_data *hd)
APPLY_HOMUN_LEVEL_STATWEIGHT();
// Needed to update skill list for mutated homunculus so unlocked skills will appear when the needed level is reached.
status_calc_homunculus(hd,0);
clif_hominfo(hd->master,hd,0);
clif_homskillinfoblock(hd->master);
if ( hd->master && battle_config.homunculus_show_growth ) {
char output[256] ;
sprintf(output,

View File

@ -1783,6 +1783,11 @@ int map_quit(struct map_session_data *sd) {
status_change_end(&sd->bl, SC_READYCOUNTER, INVALID_TIMER);
status_change_end(&sd->bl, SC_CBC, INVALID_TIMER);
status_change_end(&sd->bl, SC_EQC, INVALID_TIMER);
// Remove visuals effect from headgear
status_change_end(&sd->bl, SC_MOONSTAR, INVALID_TIMER);
status_change_end(&sd->bl, SC_SUPER_STAR, INVALID_TIMER);
status_change_end(&sd->bl, SC_STRANGELIGHTS, INVALID_TIMER);
status_change_end(&sd->bl, SC_DECORATION_OF_MUSIC, INVALID_TIMER);
if (battle_config.debuff_on_logout&1) { //Remove negative buffs
status_change_end(&sd->bl, SC_ORCISH, INVALID_TIMER);
status_change_end(&sd->bl, SC_STRIPWEAPON, INVALID_TIMER);

View File

@ -2176,7 +2176,7 @@ void mob_damage(struct mob_data *md, struct block_list *src, int damage)
return;
#if PACKETVER >= 20120404
if( !(md->status.mode&MD_BOSS) ){
if( !(md->status.mode&MD_BOSS) && battle_config.monster_hp_bars_info){
int i;
for(i = 0; i < DAMAGELOG_SIZE; i++){ // must show hp bar to all char who already hit the mob.
struct map_session_data *sd = map_charid2sd(md->dmglog[i].id);
@ -2957,7 +2957,7 @@ void mob_heal(struct mob_data *md,unsigned int heal)
if (battle_config.show_mob_info&3)
clif_charnameack (0, &md->bl);
#if PACKETVER >= 20120404
if( !(md->status.mode&MD_BOSS) ){
if( !(md->status.mode&MD_BOSS) && battle_config.monster_hp_bars_info){
int i;
for(i = 0; i < DAMAGELOG_SIZE; i++)// must show hp bar to all char who already hit the mob.
if( md->dmglog[i].id ) {

View File

@ -107,7 +107,7 @@ enum actor_classes
#define MAX_NPC_CLASS 1000
// New NPC range
#define MAX_NPC_CLASS2_START 10000
#define MAX_NPC_CLASS2_END 10114
#define MAX_NPC_CLASS2_END 10174
//Checks if a given id is a valid npc id. [Skotlex]
//Since new npcs are added all the time, the max valid value is the one before the first mob (Scorpion = 1001)

View File

@ -536,6 +536,17 @@ void pc_rental_expire(struct map_session_data *sd, int i)
}
break;
}
// Remove visuals effect from headgear
if( &sd->sc && sd->sc.data[SC_MOONSTAR] )
status_change_end(&sd->bl, SC_MOONSTAR, INVALID_TIMER);
if( &sd->sc && sd->sc.data[SC_SUPER_STAR] )
status_change_end(&sd->bl, SC_SUPER_STAR, INVALID_TIMER);
if( &sd->sc && sd->sc.data[SC_DECORATION_OF_MUSIC] )
status_change_end(&sd->bl, SC_DECORATION_OF_MUSIC, INVALID_TIMER);
if( &sd->sc && sd->sc.data[SC_STRANGELIGHTS] )
status_change_end(&sd->bl, SC_STRANGELIGHTS, INVALID_TIMER);
clif_rental_expired(sd->fd, i, sd->status.inventory[i].nameid);
pc_delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_OTHER);
}

View File

@ -8408,7 +8408,7 @@ BUILDIN_FUNC(getequipid)
if( i < 0 )
{
script_pushint(st,-1);
return SCRIPT_CMD_FAILURE;
return SCRIPT_CMD_SUCCESS;
}
item = sd->inventory_data[i];
@ -11168,6 +11168,8 @@ BUILDIN_FUNC(getstatus)
if( timer )
{// return the amount of time remaining
script_pushint(st, timer->tick - gettick());
} else {
script_pushint(st, -1);
}
}
break;

View File

@ -13611,42 +13611,42 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, uns
case UNT_ZENKAI_WATER:
switch (rnd()%2 + 1) {
case 1:
sc_start(ss, bl, SC_FREEZE, sg->val1*5, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
sc_start(ss, bl, SC_FREEZE, sg->val1*5, sg->skill_lv, skill_get_time(sg->skill_id, sg->skill_lv));
break;
case 2:
sc_start(ss, bl, SC_FREEZING, sg->val1*5, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
sc_start(ss, bl, SC_FREEZING, sg->val1*5, sg->skill_lv, skill_get_time(sg->skill_id, sg->skill_lv));
break;
}
break;
case UNT_ZENKAI_LAND:
switch (rnd()%2 + 1) {
case 1:
sc_start2(ss, bl, SC_STONE, sg->val1*5, sg->skill_lv, ss->id, skill_get_time2(sg->skill_id, sg->skill_lv));
sc_start2(ss, bl, SC_STONE, sg->val1*5, sg->skill_lv, ss->id, skill_get_time(sg->skill_id, sg->skill_lv));
break;
case 2:
sc_start2(ss, bl, SC_POISON, sg->val1*5, sg->skill_lv, ss->id, skill_get_time2(sg->skill_id, sg->skill_lv));
sc_start2(ss, bl, SC_POISON, sg->val1*5, sg->skill_lv, ss->id, skill_get_time(sg->skill_id, sg->skill_lv));
break;
}
break;
case UNT_ZENKAI_FIRE:
sc_start4(ss, bl, SC_BURNING, sg->val1*5, sg->skill_lv, 1000, ss->id, 0, skill_get_time2(sg->skill_id, sg->skill_lv));
sc_start4(ss, bl, SC_BURNING, sg->val1*5, sg->skill_lv, 1000, ss->id, 0, skill_get_time(sg->skill_id, sg->skill_lv));
break;
case UNT_ZENKAI_WIND:
switch (rnd()%3 + 1) {
case 1:
sc_start(ss, bl, SC_SLEEP, sg->val1*5, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
sc_start(ss, bl, SC_SLEEP, sg->val1*5, sg->skill_lv, skill_get_time(sg->skill_id, sg->skill_lv));
break;
case 2:
sc_start(ss, bl, SC_SILENCE, sg->val1*5, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
sc_start(ss, bl, SC_SILENCE, sg->val1*5, sg->skill_lv, skill_get_time(sg->skill_id, sg->skill_lv));
break;
case 3:
sc_start(ss, bl, SC_DEEPSLEEP, sg->val1*5, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
sc_start(ss, bl, SC_DEEPSLEEP, sg->val1*5, sg->skill_lv, skill_get_time(sg->skill_id, sg->skill_lv));
break;
}
break;
}
} else
sc_start2(ss, bl,type,100,sg->val1,sg->val2,skill_get_time2(sg->skill_id, sg->skill_lv));
sc_start2(ss, bl,type,100,sg->val1,sg->val2,skill_get_time(sg->skill_id, sg->skill_lv));
break;
case UNT_LAVA_SLIDE:
@ -15897,11 +15897,11 @@ int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint16
if (sc->data[SC_POEMBRAGI])
reduce_cast_rate += sc->data[SC_POEMBRAGI]->val2;
if (sc->data[SC_IZAYOI])
VARCAST_REDUCTION(-50);
VARCAST_REDUCTION(50);
if (sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 3 && skill_get_type(skill_id) == BF_MAGIC && skill_get_ele(skill_id, skill_lv) == ELE_WATER)
VARCAST_REDUCTION(30); //Reduces 30% Variable Cast Time of magic Water spells.
if (sc->data[SC_TELEKINESIS_INTENSE])
VARCAST_REDUCTION(sc->data[SC_TELEKINESIS_INTENSE]->val4);
VARCAST_REDUCTION(sc->data[SC_TELEKINESIS_INTENSE]->val2);
// Multiplicative Fixed CastTime values
if (sc->data[SC_SECRAMENT])
fixcast_r = max(fixcast_r, sc->data[SC_SECRAMENT]->val2);

View File

@ -823,6 +823,8 @@ void initChangeTables(void)
set_sc_with_vfx_noskill( SC_MOONSTAR , SI_MOONSTAR , SCB_NONE );
set_sc_with_vfx_noskill( SC_SUPER_STAR , SI_SUPER_STAR , SCB_NONE );
set_sc_with_vfx_noskill( SC_ALL_RIDING , SI_ALL_RIDING , SCB_SPEED );
set_sc_with_vfx_noskill( SC_STRANGELIGHTS , SI_STRANGELIGHTS , SCB_NONE );
set_sc_with_vfx_noskill( SC_DECORATION_OF_MUSIC , SI_DECORATION_OF_MUSIC , SCB_NONE );
/* Storing the target job rather than simply SC_SPIRIT simplifies code later on */
SkillStatusChangeTable[skill_get_index(SL_ALCHEMIST)] = (sc_type)MAPID_ALCHEMIST,
@ -5622,7 +5624,7 @@ static signed short status_calc_critical(struct block_list *bl, struct status_ch
return cap_value(critical,10,SHRT_MAX);
if (sc->data[SC_INCCRI])
critical += sc->data[SC_INCCRI]->val1;
critical += sc->data[SC_INCCRI]->val2;
if (sc->data[SC_CRIFOOD])
critical += sc->data[SC_CRIFOOD]->val1;
if (sc->data[SC_EXPLOSIONSPIRITS])
@ -7714,7 +7716,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
if( !sc )
return 0; // Unable to receive status changes
if( status_isdead(bl) && type != SC_NOCHAT ) // SC_NOCHAT should work even on dead characters
if( status_isdead(bl) && ( type != SC_NOCHAT && type != SC_JAILED ) ) // SC_NOCHAT and SC_JAILED should work even on dead characters
return 0;
if( bl->type == BL_MOB) {
@ -10122,7 +10124,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
val4 = tick / tick_time;
break;
case SC_TELEKINESIS_INTENSE:
val2 = val4 = 10 * val1; // sp consum / casttime reduc %
val2 = 10 * val1; // sp consum / casttime reduc %
val3 = 40 * val1; // magic dmg bonus
break;
case SC_OFFERTORIUM: