Index: src/map/itemdb.h =================================================================== --- src/map/itemdb.h (revision 17273) +++ src/map/itemdb.h (working copy) @@ -88,7 +88,7 @@ struct item_data { uint16 nameid; char name[ITEM_NAME_LENGTH],jname[ITEM_NAME_LENGTH]; - + //Do not add stuff between value_buy and view_id (see how getiteminfo works) int value_buy; int value_sell; @@ -176,6 +176,7 @@ #define itemdb_range(n) itemdb_search(n)->range #define itemdb_slot(n) itemdb_search(n)->slot #define itemdb_available(n) (itemdb_search(n)->flag.available) +#define itemdb_traderight(n) (itemdb_search(n)->flag.trade_restriction) #define itemdb_viewid(n) (itemdb_search(n)->view_id) #define itemdb_autoequip(n) (itemdb_search(n)->flag.autoequip) #define itemdb_is_rune(n) (n >= ITEMID_NAUTHIZ && n <= ITEMID_HAGALAZ) @@ -210,8 +211,8 @@ #define itemdb_canpartnertrade(item, gmlv, gmlv2) itemdb_isrestricted(item, gmlv, gmlv2, itemdb_canpartnertrade_sub) #define itemdb_cansell(item, gmlv) itemdb_isrestricted(item, gmlv, 0, itemdb_cansell_sub) #define itemdb_cancartstore(item, gmlv) itemdb_isrestricted(item, gmlv, 0, itemdb_cancartstore_sub) -#define itemdb_canstore(item, gmlv) itemdb_isrestricted(item, gmlv, 0, itemdb_canstore_sub) -#define itemdb_canguildstore(item, gmlv) itemdb_isrestricted(item , gmlv, 0, itemdb_canguildstore_sub) +#define itemdb_canstore(item, gmlv) itemdb_isrestricted(item, gmlv, 0, itemdb_canstore_sub) +#define itemdb_canguildstore(item, gmlv) itemdb_isrestricted(item , gmlv, 0, itemdb_canguildstore_sub) #define itemdb_canmail(item, gmlv) itemdb_isrestricted(item , gmlv, 0, itemdb_canmail_sub) #define itemdb_canauction(item, gmlv) itemdb_isrestricted(item , gmlv, 0, itemdb_canauction_sub) Index: src/map/skill.c =================================================================== --- src/map/skill.c (revision 17273) +++ src/map/skill.c (working copy) @@ -14026,9 +14026,10 @@ if( time < 0 ) return 0; - if(bl->type == BL_MOB) - fixed = 0; //mob as no fixed time - else if( fixed == 0 ){ + if( bl->type == BL_MOB ) + return (int)time; + + if( fixed == 0 ){ fixed = (int)time * 20 / 100; // fixed time time = time * 80 / 100; // variable time }else if( fixed < 0 ) // no fixed cast time Index: src/map/battle.c =================================================================== --- src/map/battle.c (revision 17273) +++ src/map/battle.c (working copy) @@ -3460,7 +3460,7 @@ #ifdef RENEWAL if( flag.cri ){ - ATK_ADDRATE( sd->bonus.crit_atk_rate >= 100 ? sd->bonus.crit_atk_rate - 60 : 40 ); + ATK_ADDRATE( sd->bonus.crit_atk_rate >= 100 ? sd->bonus.crit_atk_rate - 60 : 40 ); } #endif @@ -5939,6 +5939,7 @@ { "item_restricted_consumption_type", &battle_config.item_restricted_consumption_type,1, 0, 1, }, { "max_walk_path", &battle_config.max_walk_path, 17, 1, MAX_WALKPATH, }, { "item_enabled_npc", &battle_config.item_enabled_npc, 1, 0, 1, }, + { "item_floritem_chk", &battle_config.item_onfloor, 1, 0, 1, }, }; #ifndef STATS_OPT_OUT /** Index: src/map/battle.h =================================================================== --- src/map/battle.h (revision 17273) +++ src/map/battle.h (working copy) @@ -485,6 +485,7 @@ int item_restricted_consumption_type; int max_walk_path; int item_enabled_npc; + int item_onfloor; //wheater or not use pop item on map if inventory full and nodrop on or not (like aegis) } battle_config; void do_init_battle(void); Index: src/map/map.c =================================================================== --- src/map/map.c (revision 17273) +++ src/map/map.c (working copy) @@ -1429,6 +1429,12 @@ nullpo_ret(item_data); + if(battle_config.item_onfloor && map[m].flag.nodrop){ + if(itemdb_traderight(item_data->nameid)&1){ //can't be dropped + return 0; + } + } + if(!map_searchrandfreecell(m,&x,&y,flags&2?1:0)) return 0; r=rnd(); Index: src/common/msg_conf.c =================================================================== --- src/common/msg_conf.c (revision 17273) +++ src/common/msg_conf.c (working copy) @@ -12,11 +12,11 @@ */ const char* _msg_txt(int msg_number,int size, char ** msg_table) { - if (msg_number >= 0 && msg_number < size && - msg_table[msg_number] != NULL && msg_table[msg_number][0] != '\0') + if (msg_number >= 0 && msg_number < size && + msg_table[msg_number] != NULL && msg_table[msg_number][0] != '\0') return msg_table[msg_number]; - return "??"; + return "??"; } @@ -67,9 +67,9 @@ * Destroy msg_table (freeup mem) */ void _do_final_msg(int size, char ** msg_table){ - int i; - for (i = 0; i < size; i++) - aFree(msg_table[i]); + int i; + for (i = 0; i < size; i++) + aFree(msg_table[i]); } /* @@ -99,13 +99,13 @@ switch(langtype){ case 0: return "English (ENG)"; case 1: return "Russkiy (RUS)"; //transliteration - case 2: return "Español (SPN)"; + case 2: return "Espanol (SPN)"; case 3: return "Deutsch (GRM)"; - case 4: return "Hànyu (CHN)"; //transliteration + case 4: return "Hanyu (CHN)"; //transliteration case 5: return "Bahasa Malaysia (MAL)"; case 6: return "Bahasa Indonesia (IDN)"; - case 7: return "Français (FRN)"; - case 8: return "Português Brasileiro (POR)"; + case 7: return "Francais (FRN)"; + case 8: return "Portugues Brasileiro (POR)"; default: return "??"; } }