Advertisement
Lighta

ra_quickfix_r17332

May 23rd, 2013
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 36.00 KB | None | 0 0
  1. Index: src/config/core.h
  2. ===================================================================
  3. --- src/config/core.h   (revision 17331)
  4. +++ src/config/core.h   (working copy)
  5. @@ -29,7 +29,7 @@
  6.  
  7.  /// Uncomment to disable rAthena's anonymous stat report
  8.  /// We kindly ask you to consider keeping it enabled, it helps us improve rAthena.
  9. -//#define STATS_OPT_OUT
  10. +//define STATS_OPT_OUT
  11.  
  12.  /// uncomment to enable query_sql script command and mysql logs to function on it's own thread
  13.  /// be aware this feature is under tests and you should use at your own risk, we however
  14. Index: src/map/map.c
  15. ===================================================================
  16. --- src/map/map.c   (revision 17332)
  17. +++ src/map/map.c   (working copy)
  18. @@ -3594,6 +3594,7 @@
  19.     do_final_elemental();
  20.     do_final_cashshop();
  21.     do_final_channel(); //should be called after final guild
  22. +   do_final_vending();
  23.  
  24.     map_db->destroy(map_db, map_db_final);
  25.  
  26. @@ -3900,6 +3901,7 @@
  27.     do_init_unit();
  28.     do_init_battleground();
  29.     do_init_duel();
  30. +   do_init_vending();
  31.  
  32.     npc_event_do_oninit();  // Init npcs (OnInit)
  33.  
  34. Index: src/map/status.c
  35. ===================================================================
  36. --- src/map/status.c    (revision 17332)
  37. +++ src/map/status.c    (working copy)
  38. @@ -163,9 +163,9 @@
  39.     }
  40.  
  41.     if( StatusSkillChangeTable[sc] == 0 )
  42. -       StatusSkillChangeTable[sc] = skill_id;
  43. +       StatusSkillChangeTable[sc] = skill_id;
  44.     if( StatusIconChangeTable[sc] == SI_BLANK )
  45. -       StatusIconChangeTable[sc] = icon;
  46. +       StatusIconChangeTable[sc] = icon;
  47.     StatusChangeFlagTable[sc] |= flag;
  48.  
  49.     if( SkillStatusChangeTable[idx] == SC_NONE )
  50. @@ -954,6 +954,7 @@
  51.     StatusChangeFlagTable[SC_SPCOST_RATE] |= SCB_ALL;
  52.     StatusChangeFlagTable[SC_WALKSPEED] |= SCB_SPEED;
  53.     StatusChangeFlagTable[SC_ITEMSCRIPT] |= SCB_ALL;
  54. +   StatusChangeFlagTable[SC_SLOWDOWN] |= SCB_SPEED;
  55.     // Cash Items
  56.     StatusChangeFlagTable[SC_FOOD_STR_CASH] = SCB_STR;
  57.     StatusChangeFlagTable[SC_FOOD_AGI_CASH] = SCB_AGI;
  58. @@ -2069,8 +2070,8 @@
  59.                     status->max_hp = 10 * (100 * (ud->skill_lv + 2) + homblvl);
  60.                     status->batk = 100 * (ud->skill_lv+5) / 2;
  61.                     status->def = 10 * (100 * (ud->skill_lv+2) + homblvl);
  62. -                   //    status->aspd_rate = 10 * (2 * (20 - ud->skill_lv) - homblvl/10);
  63. -                   //    status->aspd_rate = max(100,status->aspd_rate);
  64. +                   //status->aspd_rate = 10 * (2 * (20 - ud->skill_lv) - homblvl/10);
  65. +                   //status->aspd_rate = max(100,status->aspd_rate);
  66.                     break;
  67.                 }
  68.             }
  69. @@ -4376,7 +4377,7 @@
  70.     if(sc->data[SC_KYOUGAKU])
  71.         vit -= sc->data[SC_KYOUGAKU]->val2;
  72.  
  73. -   if(sc->data[SC_STRIPARMOR])
  74. +   if(sc->data[SC_STRIPARMOR] && bl->type != BL_PC)
  75.         vit -= vit * sc->data[SC_STRIPARMOR]->val2/100;
  76.  
  77.     return (unsigned short)cap_value(vit,0,USHRT_MAX);
  78. @@ -4430,10 +4431,12 @@
  79.     if(sc->data[SC_KYOUGAKU])
  80.         int_ -= sc->data[SC_KYOUGAKU]->val2;
  81.  
  82. -   if(sc->data[SC_STRIPHELM])
  83. -       int_ -= int_ * sc->data[SC_STRIPHELM]->val2/100;
  84. -   if(sc->data[SC__STRIPACCESSORY])
  85. -       int_ -= int_ * sc->data[SC__STRIPACCESSORY]->val2 / 100;
  86. +   if(bl->type != BL_PC){
  87. +       if(sc->data[SC_STRIPHELM])
  88. +           int_ -= int_ * sc->data[SC_STRIPHELM]->val2/100;
  89. +       if(sc->data[SC__STRIPACCESSORY])
  90. +           int_ -= int_ * sc->data[SC__STRIPACCESSORY]->val2 / 100;
  91. +   }
  92.  
  93.     return (unsigned short)cap_value(int_,0,USHRT_MAX);
  94.  }
  95. @@ -4488,7 +4491,7 @@
  96.     if(sc->data[SC_KYOUGAKU])
  97.         dex -= sc->data[SC_KYOUGAKU]->val2;
  98.  
  99. -   if(sc->data[SC__STRIPACCESSORY])
  100. +   if(sc->data[SC__STRIPACCESSORY]  && bl->type != BL_PC)
  101.         dex -= dex * sc->data[SC__STRIPACCESSORY]->val2 / 100;
  102.  
  103.     return (unsigned short)cap_value(dex,0,USHRT_MAX);
  104. @@ -4534,7 +4537,7 @@
  105.     if(sc->data[SC_LAUDARAMUS])
  106.         luk += 4 + sc->data[SC_LAUDARAMUS]->val1;
  107.  
  108. -   if(sc->data[SC__STRIPACCESSORY])
  109. +   if(sc->data[SC__STRIPACCESSORY] && bl->type != BL_PC)
  110.         luk -= luk * sc->data[SC__STRIPACCESSORY]->val2 / 100;
  111.     if(sc->data[SC_BANANA_BOMB])
  112.         luk -= luk * sc->data[SC_BANANA_BOMB]->val1 / 100;
  113. @@ -4672,7 +4675,7 @@
  114.         watk += watk * sc->data[SC_FLEET]->val3/100;
  115.     if(sc->data[SC_CURSE])
  116.         watk -= watk * 25/100;
  117. -   if(sc->data[SC_STRIPWEAPON])
  118. +   if(sc->data[SC_STRIPWEAPON]  && bl->type != BL_PC)
  119.         watk -= watk * sc->data[SC_STRIPWEAPON]->val2/100;
  120.     if(sc->data[SC__ENERVATION])
  121.         watk -= watk * sc->data[SC__ENERVATION]->val2 / 100;
  122. @@ -4978,7 +4981,7 @@
  123.         def >>=1;
  124.     if(sc->data[SC_PROVOKE] && bl->type != BL_PC) // Provoke doesn't alter player defense->
  125.         def -= def * sc->data[SC_PROVOKE]->val4/100;
  126. -   if(sc->data[SC_STRIPSHIELD])
  127. +   if(sc->data[SC_STRIPSHIELD] && bl->type != BL_PC) //Player doesn't have def reduction only equip removed
  128.         def -= def * sc->data[SC_STRIPSHIELD]->val2/100;
  129.     if (sc->data[SC_FLING])
  130.         def -= def * (sc->data[SC_FLING]->val2)/100;
  131. Index: src/map/buyingstore.c
  132. ===================================================================
  133. --- src/map/buyingstore.c   (revision 17332)
  134. +++ src/map/buyingstore.c   (working copy)
  135. @@ -12,6 +12,7 @@
  136.  #include "clif.h"  // clif_buyingstore_*
  137.  #include "log.h"  // log_pick_pc, log_zeny
  138.  #include "pc.h"  // struct map_session_data
  139. +#include "chrif.h"
  140.  
  141.  
  142.  /// constants (client-side restrictions)
  143. @@ -379,6 +380,11 @@
  144.         clif_buyingstore_update_item(pl_sd, nameid, amount);
  145.     }
  146.  
  147. +   if( save_settings&128 ) {
  148. +       chrif_save(sd, 0);
  149. +       chrif_save(pl_sd, 0);
  150. +   }
  151. +  
  152.     // check whether or not there is still something to buy
  153.     ARR_FIND( 0, pl_sd->buyingstore.slots, i, pl_sd->buyingstore.items[i].amount != 0 );
  154.     if( i == pl_sd->buyingstore.slots )
  155. Index: src/map/unit.c
  156. ===================================================================
  157. --- src/map/unit.c  (revision 17332)
  158. +++ src/map/unit.c  (working copy)
  159. @@ -170,14 +170,13 @@
  160.     }
  161.     if(msd){ //if there is a master
  162.         int *msd_tid = unit_get_masterteleport_timer(sbl);
  163. -       if(msd_tid == NULL) return 0;
  164.  
  165.         if (!check_distance_bl(&msd->bl, sbl, MAX_MER_DISTANCE)) {
  166. -           if(*msd_tid == INVALID_TIMER)
  167. +           if(*msd_tid == INVALID_TIMER || *msd_tid == 0)
  168.                 *msd_tid = add_timer(gettick()+3000,unit_teleport_timer,sbl->id,BL_MER);
  169.         }
  170.         else {
  171. -           if(*msd_tid != INVALID_TIMER)
  172. +           if(*msd_tid && *msd_tid != INVALID_TIMER)
  173.                 delete_timer(*msd_tid,unit_teleport_timer);
  174.             *msd_tid = INVALID_TIMER; //cancel recall
  175.         }
  176. @@ -253,7 +252,6 @@
  177.     ud->walktimer = INVALID_TIMER;
  178.  
  179.     if(sd) {
  180. -       struct block_list *sbl; //slave bl
  181.         if( sd->touching_id )
  182.             npc_touchnext_areanpc(sd,false);
  183.         if(map_getcell(bl->m,x,y,CELL_CHKNPC)) {
  184. Index: src/map/clif.c
  185. ===================================================================
  186. --- src/map/clif.c  (revision 17332)
  187. +++ src/map/clif.c  (working copy)
  188. @@ -1378,12 +1378,12 @@
  189.  {
  190.     struct status_data *status;
  191.     unsigned char buf[128];
  192. -   int m_class;
  193. +   int htype;
  194.  
  195.     nullpo_retv(hd);
  196.  
  197.     status  = &hd->battle_status;
  198. -   m_class = hom_class2mapid(hd->homunculus.class_);
  199. +   htype = hom_class2type(hd->homunculus.class_);
  200.  
  201.     memset(buf,0,packet_len(0x22e));
  202.     WBUFW(buf,0)=0x22e;
  203. @@ -1420,10 +1420,18 @@
  204.         WBUFW(buf,57)=status->max_sp;
  205.     }
  206.     WBUFL(buf,59)=hd->homunculus.exp;
  207. -   if( ((m_class&HOM_REG) && hd->homunculus.level >= battle_config.hom_max_level) || ((m_class&HOM_S) && hd->homunculus.level >= battle_config.hom_S_max_level) )
  208. -       WBUFL(buf,63)=0;
  209. -   else
  210. -       WBUFL(buf,63)=hd->exp_next;
  211. +   WBUFL(buf,63)=hd->exp_next;
  212. +   switch( htype ) {
  213. +       case HT_REG:
  214. +       case HT_EVO:
  215. +           if( hd->homunculus.level >= battle_config.hom_max_level )
  216. +               WBUFL(buf,63)=0;
  217. +           break;
  218. +       case HT_S:
  219. +           if( hd->homunculus.level >= battle_config.hom_S_max_level )
  220. +               WBUFL(buf,63)=0;
  221. +           break;
  222. +   }
  223.     WBUFW(buf,67)=hd->homunculus.skillpts;
  224.     WBUFW(buf,69)=status_get_range(&hd->bl);
  225.     clif_send(buf,packet_len(0x22e),&sd->bl,SELF);
  226. @@ -11579,7 +11587,7 @@
  227.  /// 0100
  228.  void clif_parse_LeaveParty(int fd, struct map_session_data *sd)
  229.  {
  230. -   if(map[sd->bl.m].flag.partylock) { //part locked.
  231. +   if(map[sd->bl.m].flag.partylock) {// Party locked.
  232.         clif_displaymessage(fd, msg_txt(sd,227));
  233.         return;
  234.     }
  235. @@ -11591,7 +11599,7 @@
  236.  /// 0103 <account id>.L <char name>.24B
  237.  void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd)
  238.  {
  239. -   if(map[sd->bl.m].flag.partylock) { //party locked.
  240. +   if(map[sd->bl.m].flag.partylock) {// Party locked.
  241.         clif_displaymessage(fd, msg_txt(sd,227));
  242.         return;
  243.     }
  244. Index: src/map/chrif.c
  245. ===================================================================
  246. --- src/map/chrif.c (revision 17332)
  247. +++ src/map/chrif.c (working copy)
  248. @@ -1550,16 +1550,17 @@
  249.     return 0;
  250.  }
  251.  
  252. -void chrif_send_report(char* buf, int len) {
  253. +int chrif_send_report(char* buf, int len) {
  254.  
  255.  #ifndef STATS_OPT_OUT
  256. +   chrif_check(-1);
  257.     WFIFOHEAD(char_fd,len + 2);
  258.     WFIFOW(char_fd,0) = 0x3008;
  259.     memcpy(WFIFOP(char_fd,2), buf, len);
  260.     WFIFOSET(char_fd,len + 2);
  261.     flush_fifo(char_fd); /* ensure it's sent now. */
  262.  #endif
  263. -
  264. +   return 0;
  265.  }
  266.  
  267.  /**
  268. @@ -1601,7 +1602,7 @@
  269.   *------------------------------------------*/
  270.  int do_init_chrif(void) {
  271.     if(sizeof(struct mmo_charstatus) > 0xFFFF){
  272. -       ShowError("mmo_charstatus size = %d is too big to be transmit\n",
  273. +       ShowError("mmo_charstatus size = %d is too big to be transmitted.\n",
  274.             sizeof(struct mmo_charstatus));
  275.         exit(EXIT_FAILURE);
  276.     }
  277. Index: src/map/chrif.h
  278. ===================================================================
  279. --- src/map/chrif.h (revision 17331)
  280. +++ src/map/chrif.h (working copy)
  281. @@ -59,7 +59,7 @@
  282.  int chrif_divorce(int partner_id1, int partner_id2);
  283.  
  284.  int chrif_removefriend(int char_id, int friend_id);
  285. -void chrif_send_report(char* buf, int len);
  286. +int chrif_send_report(char* buf, int len);
  287.  
  288.  int do_final_chrif(void);
  289.  int do_init_chrif(void);
  290. Index: src/map/homunculus.c
  291. ===================================================================
  292. --- src/map/homunculus.c    (revision 17331)
  293. +++ src/map/homunculus.c    (working copy)
  294. @@ -56,6 +56,18 @@
  295.     return NULL;
  296.  }
  297.  
  298. +enum homun_type hom_class2type(int class_) {
  299. +   int mid = hom_class2mapid(class_);
  300. +   if(mid&(HOM_REG|HOM_EVO))
  301. +       return HT_EVO;
  302. +   else if(mid&(HOM_REG))
  303. +       return HT_REG;
  304. +   else if(mid&(HOM_S))
  305. +       return HT_S;
  306. +   else //invalid type
  307. +       return -1;
  308. +}
  309. +
  310.  int hom_class2mapid(int hom_class)
  311.  {
  312.     switch(hom_class)
  313. Index: src/map/atcommand.c
  314. ===================================================================
  315. --- src/map/atcommand.c (revision 17332)
  316. +++ src/map/atcommand.c (working copy)
  317. @@ -3773,8 +3773,8 @@
  318.     if (map[m_id].flag.town)
  319.         clif_displaymessage(fd, msg_txt(sd,1042)); // Town Map
  320.     if (map[m_id].flag.restricted){
  321. -       sprintf(atcmd_output, msg_txt(sd,1106),map[m_id].zone);
  322. -       clif_displaymessage(fd, atcmd_output); //restricted
  323. +       sprintf(atcmd_output, msg_txt(sd,1106),map[m_id].zone); // Restricted (zone %d)
  324. +       clif_displaymessage(fd, atcmd_output);
  325.     }
  326.  
  327.     if (battle_config.autotrade_mapflag == map[m_id].flag.autotrade)
  328. @@ -3783,8 +3783,8 @@
  329.         clif_displaymessage(fd, msg_txt(sd,1044)); // Autotrade Disabled
  330.  
  331.     if (map[m_id].flag.battleground){
  332. -       sprintf(atcmd_output, msg_txt(sd,1106),map[m_id].zone);
  333. -       clif_displaymessage(fd, atcmd_output); // Battlegrounds ON type=%d
  334. +       sprintf(atcmd_output, msg_txt(sd,1045),map[m_id].flag.battleground); // Battlegrounds ON (type %d)
  335. +       clif_displaymessage(fd, atcmd_output);
  336.     }
  337.     strcpy(atcmd_output,msg_txt(sd,1046)); // PvP Flags:
  338.     if (map[m_id].flag.pvp)
  339. Index: src/map/homunculus.h
  340. ===================================================================
  341. --- src/map/homunculus.h    (revision 17332)
  342. +++ src/map/homunculus.h    (working copy)
  343. @@ -70,7 +70,6 @@
  344.  
  345.  #define HOM_EVO 0x100 //256
  346.  #define HOM_S 0x200 //512
  347. -
  348.  #define HOM_REG 0x1000 //4096
  349.  
  350.  enum {
  351. @@ -91,6 +90,11 @@
  352.     MAPID_DIETER,
  353.     MAPID_ELANOR,
  354.  };
  355. +enum homun_type {
  356. +   HT_REG  = 0x1,
  357. +   HT_EVO  = 0x2,
  358. +   HT_S    = 0x4,
  359. +};
  360.  
  361.  #define homdb_checkid(id) (id >=  HM_CLASS_BASE && id <= HM_CLASS_MAX)
  362.  
  363. @@ -100,6 +104,7 @@
  364.  int merc_hom_recv_data(int account_id, struct s_homunculus *sh, int flag); //albator
  365.  struct view_data* merc_get_hom_viewdata(int class_);
  366.  int hom_class2mapid(int hom_class);
  367. +enum homun_type hom_class2type(int class_);
  368.  void merc_damage(struct homun_data *hd);
  369.  int merc_hom_dead(struct homun_data *hd);
  370.  void merc_hom_skillup(struct homun_data *hd,uint16 skill_id);
  371. Index: src/map/skill.c
  372. ===================================================================
  373. --- src/map/skill.c (revision 17332)
  374. +++ src/map/skill.c (working copy)
  375. @@ -5194,9 +5194,10 @@
  376.         break;
  377.     case SA_INSTANTDEATH:
  378.         clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
  379. -       status_set_hp(bl,1,0);
  380. +       status_kill(src);
  381.         break;
  382.     case SA_QUESTION:
  383. +       clif_emotion(src,E_WHAT);
  384.     case SA_GRAVITY:
  385.         clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
  386.         break;
  387. @@ -9601,7 +9602,7 @@
  388.  
  389.     //Skill failed.
  390.     if (ud->skill_id == MO_EXTREMITYFIST && sd && !(sc && sc->data[SC_FOGWALL]))
  391. -   {   //When Asura fails... (except when it fails from Fog of Wall)
  392. +   {   //When Asura fails... (except when it fails from Wall of Fog)
  393.         //Consume SP/spheres
  394.         skill_consume_requirement(sd,ud->skill_id, ud->skill_lv,1);
  395.         status_set_sp(src, 0, 0);
  396. Index: src/map/searchstore.c
  397. ===================================================================
  398. --- src/map/searchstore.c   (revision 17331)
  399. +++ src/map/searchstore.c   (working copy)
  400. @@ -12,8 +12,7 @@
  401.  
  402.  
  403.  /// failure constants for clif functions
  404. -enum e_searchstore_failure
  405. -{
  406. +enum e_searchstore_failure {
  407.     SSI_FAILED_NOTHING_SEARCH_ITEM         = 0,  // "No matching stores were found."
  408.     SSI_FAILED_OVER_MAXCOUNT               = 1,  // "There are too many results. Please enter more detailed search term."
  409.     SSI_FAILED_SEARCH_CNT                  = 2,  // "You cannot search anymore."
  410. @@ -22,15 +21,13 @@
  411.  };
  412.  
  413.  
  414. -enum e_searchstore_searchtype
  415. -{
  416. +enum e_searchstore_searchtype {
  417.     SEARCHTYPE_VENDING      = 0,
  418.     SEARCHTYPE_BUYING_STORE = 1,
  419.  };
  420.  
  421.  
  422. -enum e_searchstore_effecttype
  423. -{
  424. +enum e_searchstore_effecttype {
  425.     EFFECTTYPE_NORMAL = 0,
  426.     EFFECTTYPE_CASH   = 1,
  427.     EFFECTTYPE_MAX
  428. @@ -90,15 +87,12 @@
  429.  }
  430.  
  431.  
  432. -bool searchstore_open(struct map_session_data* sd, unsigned int uses, unsigned short effect)
  433. -{
  434. -   if( !battle_config.feature_search_stores || sd->searchstore.open )
  435. -   {
  436. +bool searchstore_open(struct map_session_data* sd, unsigned int uses, unsigned short effect) {
  437. +   if( !battle_config.feature_search_stores || sd->searchstore.open ) {
  438.         return false;
  439.     }
  440.  
  441. -   if( !uses || effect >= EFFECTTYPE_MAX )
  442. -   {// invalid input
  443. +   if( !uses || effect >= EFFECTTYPE_MAX ) {// invalid input
  444.         return false;
  445.     }
  446.  
  447. @@ -116,63 +110,53 @@
  448.  {
  449.     unsigned int i;
  450.     struct map_session_data* pl_sd;
  451. -   struct s_mapiterator* iter;
  452. +   struct DBIterator *iter;
  453.     struct s_search_store_search s;
  454.     searchstore_searchall_t store_searchall;
  455.     time_t querytime;
  456.  
  457. -   if( !battle_config.feature_search_stores )
  458. -   {
  459. +   if( !battle_config.feature_search_stores ) {
  460.         return;
  461.     }
  462.  
  463. -   if( !sd->searchstore.open )
  464. -   {
  465. +   if( !sd->searchstore.open ) {
  466.         return;
  467.     }
  468.  
  469. -   if( ( store_searchall = searchstore_getsearchallfunc(type) ) == NULL )
  470. -   {
  471. +   if( ( store_searchall = searchstore_getsearchallfunc(type) ) == NULL ) {
  472.         ShowError("searchstore_query: Unknown search type %u (account_id=%d).\n", (unsigned int)type, sd->bl.id);
  473.         return;
  474.     }
  475.  
  476.     time(&querytime);
  477.  
  478. -   if( sd->searchstore.nextquerytime > querytime )
  479. -   {
  480. +   if( sd->searchstore.nextquerytime > querytime ) {
  481.         clif_search_store_info_failed(sd, SSI_FAILED_LIMIT_SEARCH_TIME);
  482.         return;
  483.     }
  484.  
  485. -   if( !sd->searchstore.uses )
  486. -   {
  487. +   if( !sd->searchstore.uses ) {
  488.         clif_search_store_info_failed(sd, SSI_FAILED_SEARCH_CNT);
  489.         return;
  490.     }
  491.  
  492.     // validate lists
  493. -   for( i = 0; i < item_count; i++ )
  494. -   {
  495. -       if( !itemdb_exists(itemlist[i]) )
  496. -       {
  497. +   for( i = 0; i < item_count; i++ ) {
  498. +       if( !itemdb_exists(itemlist[i]) ) {
  499.             ShowWarning("searchstore_query: Client resolved item %hu is not known.\n", itemlist[i]);
  500.             clif_search_store_info_failed(sd, SSI_FAILED_NOTHING_SEARCH_ITEM);
  501.             return;
  502.         }
  503.     }
  504. -   for( i = 0; i < card_count; i++ )
  505. -   {
  506. -       if( !itemdb_exists(cardlist[i]) )
  507. -       {
  508. +   for( i = 0; i < card_count; i++ ) {
  509. +       if( !itemdb_exists(cardlist[i]) ) {
  510.             ShowWarning("searchstore_query: Client resolved card %hu is not known.\n", cardlist[i]);
  511.             clif_search_store_info_failed(sd, SSI_FAILED_NOTHING_SEARCH_ITEM);
  512.             return;
  513.         }
  514.     }
  515.  
  516. -   if( max_price < min_price )
  517. -   {
  518. +   if( max_price < min_price ) {
  519.         swap(min_price, max_price);
  520.     }
  521.  
  522. @@ -194,26 +178,23 @@
  523.     s.card_count = card_count;
  524.     s.min_price  = min_price;
  525.     s.max_price  = max_price;
  526. -   iter         = mapit_geteachpc();
  527. +   DBMap *vending_db = vending_getdb();
  528. +   iter         = db_iterator(vending_db);
  529.  
  530. -   for( pl_sd = (struct map_session_data*)mapit_first(iter); mapit_exists(iter);  pl_sd = (struct map_session_data*)mapit_next(iter) )
  531. -   {
  532. -       if( sd == pl_sd )
  533. -       {// skip own shop, if any
  534. +   for( pl_sd = dbi_first(iter); dbi_exists(iter);  pl_sd = dbi_next(iter) ) {
  535. +       if( sd == pl_sd ) {// skip own shop, if any
  536.             continue;
  537.         }
  538.  
  539. -       if( !store_searchall(pl_sd, &s) )
  540. -       {// exceeded result size
  541. +       if( !store_searchall(pl_sd, &s) ) {// exceeded result size
  542.             clif_search_store_info_failed(sd, SSI_FAILED_OVER_MAXCOUNT);
  543.             break;
  544.         }
  545.     }
  546.  
  547. -   mapit_free(iter);
  548. +   dbi_destroy(iter);
  549.  
  550. -   if( sd->searchstore.count )
  551. -   {
  552. +   if( sd->searchstore.count ) {
  553.         // reclaim unused memory
  554.         sd->searchstore.items = (struct s_search_store_info_item*)aRealloc(sd->searchstore.items, sizeof(struct s_search_store_info_item)*sd->searchstore.count);
  555.  
  556. @@ -222,9 +203,7 @@
  557.  
  558.         // one page displayed
  559.         sd->searchstore.pages++;
  560. -   }
  561. -   else
  562. -   {
  563. +   } else {
  564.         // cleanup
  565.         searchstore_clear(sd);
  566.  
  567. @@ -238,10 +217,8 @@
  568.  
  569.  
  570.  /// checks whether or not more results are available for the client
  571. -bool searchstore_querynext(struct map_session_data* sd)
  572. -{
  573. -   if( sd->searchstore.count && ( sd->searchstore.count-1 )/SEARCHSTORE_RESULTS_PER_PAGE < sd->searchstore.pages )
  574. -   {
  575. +bool searchstore_querynext(struct map_session_data* sd) {
  576. +   if( sd->searchstore.count && ( sd->searchstore.count-1 )/SEARCHSTORE_RESULTS_PER_PAGE < sd->searchstore.pages ) {
  577.         return true;
  578.     }
  579.  
  580. @@ -249,8 +226,7 @@
  581.  }
  582.  
  583.  
  584. -void searchstore_next(struct map_session_data* sd)
  585. -{
  586. +void searchstore_next(struct map_session_data* sd) {
  587.     if( !battle_config.feature_search_stores || !sd->searchstore.open || sd->searchstore.count <= sd->searchstore.pages*SEARCHSTORE_RESULTS_PER_PAGE )
  588.     {// nothing (more) to display
  589.         return;
  590. @@ -264,12 +240,10 @@
  591.  }
  592.  
  593.  
  594. -void searchstore_clear(struct map_session_data* sd)
  595. -{
  596. +void searchstore_clear(struct map_session_data* sd) {
  597.     searchstore_clearremote(sd);
  598.  
  599. -   if( sd->searchstore.items )
  600. -   {// release results
  601. +   if( sd->searchstore.items ) {// release results
  602.         aFree(sd->searchstore.items);
  603.         sd->searchstore.items = NULL;
  604.     }
  605. @@ -279,10 +253,8 @@
  606.  }
  607.  
  608.  
  609. -void searchstore_close(struct map_session_data* sd)
  610. -{
  611. -   if( sd->searchstore.open )
  612. -   {
  613. +void searchstore_close(struct map_session_data* sd) {
  614. +   if( sd->searchstore.open ) {
  615.         searchstore_clear(sd);
  616.  
  617.         sd->searchstore.uses = 0;
  618. @@ -291,29 +263,25 @@
  619.  }
  620.  
  621.  
  622. -void searchstore_click(struct map_session_data* sd, int account_id, int store_id, unsigned short nameid)
  623. -{
  624. +void searchstore_click(struct map_session_data* sd, int account_id, int store_id, unsigned short nameid) {
  625.     unsigned int i;
  626.     struct map_session_data* pl_sd;
  627.     searchstore_search_t store_search;
  628.  
  629. -   if( !battle_config.feature_search_stores || !sd->searchstore.open || !sd->searchstore.count )
  630. -   {
  631. +   if( !battle_config.feature_search_stores || !sd->searchstore.open || !sd->searchstore.count ) {
  632.         return;
  633.     }
  634.  
  635.     searchstore_clearremote(sd);
  636.  
  637.     ARR_FIND( 0, sd->searchstore.count, i,  sd->searchstore.items[i].store_id == store_id && sd->searchstore.items[i].account_id == account_id && sd->searchstore.items[i].nameid == nameid );
  638. -   if( i == sd->searchstore.count )
  639. -   {// no such result, crafted
  640. +   if( i == sd->searchstore.count ) {// no such result, crafted
  641.         ShowWarning("searchstore_click: Received request with item %hu of account %d, which is not part of current result set (account_id=%d, char_id=%d).\n", nameid, account_id, sd->bl.id, sd->status.char_id);
  642.         clif_search_store_info_failed(sd, SSI_FAILED_SSILIST_CLICK_TO_OPEN_STORE);
  643.         return;
  644.     }
  645.  
  646. -   if( ( pl_sd = map_id2sd(account_id) ) == NULL )
  647. -   {// no longer online
  648. +   if( ( pl_sd = map_id2sd(account_id) ) == NULL ) {// no longer online
  649.         clif_search_store_info_failed(sd, SSI_FAILED_SSILIST_CLICK_TO_OPEN_STORE);
  650.         return;
  651.     }
  652. @@ -326,23 +294,18 @@
  653.  
  654.     store_search = searchstore_getsearchfunc(sd->searchstore.type);
  655.  
  656. -   if( !store_search(pl_sd, nameid) )
  657. -   {// item no longer being sold/bought
  658. +   if( !store_search(pl_sd, nameid) ) {// item no longer being sold/bought
  659.         clif_search_store_info_failed(sd, SSI_FAILED_SSILIST_CLICK_TO_OPEN_STORE);
  660.         return;
  661.     }
  662.  
  663. -   switch( sd->searchstore.effect )
  664. -   {
  665. +   switch( sd->searchstore.effect ) {
  666.         case EFFECTTYPE_NORMAL:
  667.             // display coords
  668.  
  669. -           if( sd->bl.m != pl_sd->bl.m )
  670. -           {// not on same map, wipe previous marker
  671. +           if( sd->bl.m != pl_sd->bl.m ) {// not on same map, wipe previous marker
  672.                 clif_search_store_info_click_ack(sd, -1, -1);
  673. -           }
  674. -           else
  675. -           {
  676. +           } else {
  677.                 clif_search_store_info_click_ack(sd, pl_sd->bl.x, pl_sd->bl.y);
  678.             }
  679.  
  680. @@ -368,15 +331,13 @@
  681.  
  682.  
  683.  /// checks whether or not sd has opened account_id's shop remotely
  684. -bool searchstore_queryremote(struct map_session_data* sd, int account_id)
  685. -{
  686. +bool searchstore_queryremote(struct map_session_data* sd, int account_id) {
  687.     return (bool)( sd->searchstore.open && sd->searchstore.count && sd->searchstore.remote_id == account_id );
  688.  }
  689.  
  690.  
  691.  /// removes range-check bypassing for remotely opened stores
  692. -void searchstore_clearremote(struct map_session_data* sd)
  693. -{
  694. +void searchstore_clearremote(struct map_session_data* sd) {
  695.     sd->searchstore.remote_id = 0;
  696.  }
  697.  
  698. @@ -386,8 +347,7 @@
  699.  {
  700.     struct s_search_store_info_item* ssitem;
  701.  
  702. -   if( sd->searchstore.count >= (unsigned int)battle_config.searchstore_maxresults )
  703. -   {// no more
  704. +   if( sd->searchstore.count >= (unsigned int)battle_config.searchstore_maxresults ) {// no more
  705.         return false;
  706.     }
  707.  
  708. Index: src/map/searchstore.h
  709. ===================================================================
  710. --- src/map/searchstore.h   (revision 17331)
  711. +++ src/map/searchstore.h   (working copy)
  712. @@ -7,8 +7,7 @@
  713.  #define SEARCHSTORE_RESULTS_PER_PAGE 10
  714.  
  715.  /// information about the search being performed
  716. -struct s_search_store_search
  717. -{
  718. +struct s_search_store_search {
  719.     struct map_session_data* search_sd;  // sd of the searching player
  720.     const unsigned short* itemlist;
  721.     const unsigned short* cardlist;
  722. @@ -18,8 +17,7 @@
  723.     unsigned int max_price;
  724.  };
  725.  
  726. -struct s_search_store_info_item
  727. -{
  728. +struct s_search_store_info_item {
  729.     int store_id;
  730.     int account_id;
  731.     char store_name[MESSAGE_SIZE];
  732. @@ -30,8 +28,7 @@
  733.     unsigned char refine;
  734.  };
  735.  
  736. -struct s_search_store_info
  737. -{
  738. +struct s_search_store_info {
  739.     unsigned int count;
  740.     struct s_search_store_info_item* items;
  741.     unsigned int pages;  // amount of pages already sent to client
  742. Index: src/map/vending.c
  743. ===================================================================
  744. --- src/map/vending.c   (revision 17331)
  745. +++ src/map/vending.c   (working copy)
  746. @@ -21,7 +21,11 @@
  747.  #include <string.h>
  748.  
  749.  static int vending_nextid = 0;
  750. +static DBMap *vending_db;
  751.  
  752. +DBMap * vending_getdb(){
  753. +   return vending_db;
  754. +}
  755.  /// Returns an unique vending shop id.
  756.  static int vending_getuid(void)
  757.  {
  758. @@ -35,10 +39,10 @@
  759.  {
  760.     nullpo_retv(sd);
  761.  
  762. -   if( sd->state.vending )
  763. -   {
  764. +   if( sd->state.vending ) {
  765.         sd->state.vending = false;
  766.         clif_closevendingboard(&sd->bl, 0);
  767. +       idb_remove(vending_db, sd->status.char_id);
  768.     }
  769.  }
  770.  
  771. @@ -80,8 +84,7 @@
  772.     if( vsd == NULL || !vsd->state.vending || vsd->bl.id == sd->bl.id )
  773.         return; // invalid shop
  774.  
  775. -   if( vsd->vender_id != uid )
  776. -   {// shop has changed
  777. +   if( vsd->vender_id != uid ) { // shop has changed
  778.         clif_buyvending(sd, 0, 0, 6);  // store information was incorrect
  779.         return;
  780.     }
  781. @@ -102,8 +105,7 @@
  782.     // some checks
  783.     z = 0.; // zeny counter
  784.     w = 0;  // weight counter
  785. -   for( i = 0; i < count; i++ )
  786. -   {
  787. +   for( i = 0; i < count; i++ ) {
  788.         short amount = *(uint16*)(data + 4*i + 0);
  789.         short idx    = *(uint16*)(data + 4*i + 2);
  790.         idx -= 2;
  791. @@ -134,8 +136,7 @@
  792.  
  793.         }
  794.         w += itemdb_weight(vsd->status.cart[idx].nameid) * amount;
  795. -       if( w + sd->weight > sd->max_weight )
  796. -       {
  797. +       if( w + sd->weight > sd->max_weight ) {
  798.             clif_buyvending(sd, idx, amount, 2); // you can not buy, because overweight
  799.             return;
  800.         }
  801. @@ -173,8 +174,7 @@
  802.         z -= z * (battle_config.vending_tax/10000.);
  803.     pc_getzeny(vsd, (int)z, LOG_TYPE_VENDING, sd);
  804.  
  805. -   for( i = 0; i < count; i++ )
  806. -   {
  807. +   for( i = 0; i < count; i++ ) {
  808.         short amount = *(uint16*)(data + 4*i + 0);
  809.         short idx    = *(uint16*)(data + 4*i + 2);
  810.         idx -= 2;
  811. @@ -186,8 +186,7 @@
  812.         clif_vendingreport(vsd, idx, amount);
  813.  
  814.         //print buyer's name
  815. -       if( battle_config.buyer_name )
  816. -       {
  817. +       if( battle_config.buyer_name ) {
  818.             char temp[256];
  819.             sprintf(temp, msg_txt(sd,265), sd->status.name);
  820.             clif_disp_onlyself(vsd,temp,strlen(temp));
  821. @@ -195,13 +194,11 @@
  822.     }
  823.  
  824.     // compact the vending list
  825. -   for( i = 0, cursor = 0; i < vsd->vend_num; i++ )
  826. -   {
  827. +   for( i = 0, cursor = 0; i < vsd->vend_num; i++ ) {
  828.         if( vsd->vending[i].amount == 0 )
  829.             continue;
  830.  
  831. -       if( cursor != i ) // speedup
  832. -       {
  833. +       if( cursor != i ) { // speedup
  834.             vsd->vending[cursor].index = vsd->vending[i].index;
  835.             vsd->vending[cursor].amount = vsd->vending[i].amount;
  836.             vsd->vending[cursor].value = vsd->vending[i].value;
  837. @@ -212,19 +209,16 @@
  838.     vsd->vend_num = cursor;
  839.  
  840.     //Always save BOTH: buyer and customer
  841. -   if( save_settings&2 )
  842. -   {
  843. +   if( save_settings&2 ) {
  844.         chrif_save(sd,0);
  845.         chrif_save(vsd,0);
  846.     }
  847.  
  848.     //check for @AUTOTRADE users [durf]
  849. -   if( vsd->state.autotrade )
  850. -   {
  851. +   if( vsd->state.autotrade ) {
  852.         //see if there is anything left in the shop
  853.         ARR_FIND( 0, vsd->vend_num, i, vsd->vending[i].amount > 0 );
  854. -       if( i == vsd->vend_num )
  855. -       {
  856. +       if( i == vsd->vend_num ) {
  857.             //Close Vending (this was automatically done by the client, we have to do it manually for autovenders) [Skotlex]
  858.             vending_closevending(vsd);
  859.             map_quit(vsd);  //They have no reason to stay around anymore, do they?
  860. @@ -246,8 +240,7 @@
  861.  
  862.     vending_skill_lvl = pc_checkskill(sd, MC_VENDING);
  863.     // skill level and cart check
  864. -   if( !vending_skill_lvl || !pc_iscarton(sd) )
  865. -   {
  866. +   if( !vending_skill_lvl || !pc_iscarton(sd) ) {
  867.         clif_skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0);
  868.         return;
  869.     }
  870. @@ -261,8 +254,7 @@
  871.  
  872.     // filter out invalid items
  873.     i = 0;
  874. -   for( j = 0; j < count; j++ )
  875. -   {
  876. +   for( j = 0; j < count; j++ ) {
  877.         short index        = *(uint16*)(data + 8*j + 0);
  878.         short amount       = *(uint16*)(data + 8*j + 2);
  879.         unsigned int value = *(uint32*)(data + 8*j + 4);
  880. @@ -288,8 +280,7 @@
  881.     if( i != j )
  882.         clif_displaymessage (sd->fd, msg_txt(sd,266)); //"Some of your items cannot be vended and were removed from the shop."
  883.  
  884. -   if( i == 0 )
  885. -   {   // no valid item found
  886. +   if( i == 0 ) { // no valid item found
  887.         clif_skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0); // custom reply packet
  888.         return;
  889.     }
  890. @@ -301,22 +292,21 @@
  891.  
  892.     clif_openvending(sd,sd->bl.id,sd->vending);
  893.     clif_showvendingboard(&sd->bl,message,0);
  894. +
  895. +   idb_put(vending_db, sd->vender_id, sd);
  896.  }
  897.  
  898.  
  899.  /// Checks if an item is being sold in given player's vending.
  900. -bool vending_search(struct map_session_data* sd, unsigned short nameid)
  901. -{
  902. +bool vending_search(struct map_session_data* sd, unsigned short nameid) {
  903.     int i;
  904.  
  905. -   if( !sd->state.vending )
  906. -   {// not vending
  907. +   if( !sd->state.vending ) { // not vending
  908.         return false;
  909.     }
  910.  
  911.     ARR_FIND( 0, sd->vend_num, i, sd->status.cart[sd->vending[i].index].nameid == (short)nameid );
  912. -   if( i == sd->vend_num )
  913. -   {// not found
  914. +   if( i == sd->vend_num ) { // not found
  915.         return false;
  916.     }
  917.  
  918. @@ -326,46 +316,36 @@
  919.  
  920.  /// Searches for all items in a vending, that match given ids, price and possible cards.
  921.  /// @return Whether or not the search should be continued.
  922. -bool vending_searchall(struct map_session_data* sd, const struct s_search_store_search* s)
  923. -{
  924. +bool vending_searchall(struct map_session_data* sd, const struct s_search_store_search* s) {
  925.     int i, c, slot;
  926.     unsigned int idx, cidx;
  927.     struct item* it;
  928.  
  929. -   if( !sd->state.vending )
  930. -   {// not vending
  931. +   if( !sd->state.vending ) // not vending
  932.         return true;
  933. -   }
  934.  
  935. -   for( idx = 0; idx < s->item_count; idx++ )
  936. -   {
  937. +   for( idx = 0; idx < s->item_count; idx++ ) {
  938.         ARR_FIND( 0, sd->vend_num, i, sd->status.cart[sd->vending[i].index].nameid == (short)s->itemlist[idx] );
  939. -       if( i == sd->vend_num )
  940. -       {// not found
  941. +       if( i == sd->vend_num ) {// not found
  942.             continue;
  943.         }
  944.         it = &sd->status.cart[sd->vending[i].index];
  945.  
  946. -       if( s->min_price && s->min_price > sd->vending[i].value )
  947. -       {// too low price
  948. +       if( s->min_price && s->min_price > sd->vending[i].value ) {// too low price
  949.             continue;
  950.         }
  951.  
  952. -       if( s->max_price && s->max_price < sd->vending[i].value )
  953. -       {// too high price
  954. +       if( s->max_price && s->max_price < sd->vending[i].value ) {// too high price
  955.             continue;
  956.         }
  957.  
  958. -       if( s->card_count )
  959. -       {// check cards
  960. -           if( itemdb_isspecial(it->card[0]) )
  961. -           {// something, that is not a carded
  962. +       if( s->card_count ) {// check cards
  963. +           if( itemdb_isspecial(it->card[0]) ) {// something, that is not a carded
  964.                 continue;
  965.             }
  966.             slot = itemdb_slot(it->nameid);
  967.  
  968. -           for( c = 0; c < slot && it->card[c]; c ++ )
  969. -           {
  970. +           for( c = 0; c < slot && it->card[c]; c ++ ) {
  971.                 ARR_FIND( 0, s->card_count, cidx, s->cardlist[cidx] == it->card[c] );
  972.                 if( cidx != s->card_count )
  973.                 {// found
  974. @@ -373,8 +353,7 @@
  975.                 }
  976.             }
  977.  
  978. -           if( c == slot || !it->card[c] )
  979. -           {// no card match
  980. +           if( c == slot || !it->card[c] ) {// no card match
  981.                 continue;
  982.             }
  983.         }
  984. @@ -387,3 +366,11 @@
  985.  
  986.     return true;
  987.  }
  988. +void do_final_vending(void) {
  989. +   db_destroy(vending_db);
  990. +}
  991. +
  992. +void do_init_vending(void) {
  993. +   vending_db = idb_alloc(DB_OPT_BASE);
  994. +   vending_nextid = 0;
  995. +}
  996. Index: src/map/mercenary.h
  997. ===================================================================
  998. --- src/map/mercenary.h (revision 17331)
  999. +++ src/map/mercenary.h (working copy)
  1000. @@ -42,11 +42,11 @@
  1001.     struct s_mercenary mercenary;
  1002.     char blockskill[MAX_SKILL];
  1003.  
  1004. +   int masterteleport_timer;
  1005.     struct map_session_data *master;
  1006.     int contract_timer;
  1007. -  
  1008. +
  1009.     unsigned devotion_flag : 1;
  1010. -   unsigned int masterteleport_timer;
  1011.  };
  1012.  
  1013.  bool merc_class(int class_);
  1014. Index: src/map/vending.h
  1015. ===================================================================
  1016. --- src/map/vending.h   (revision 17331)
  1017. +++ src/map/vending.h   (working copy)
  1018. @@ -15,6 +15,10 @@
  1019.     unsigned int value; //at wich price
  1020.  };
  1021.  
  1022. +DBMap * vending_getdb();
  1023. +void do_final_vending(void);
  1024. +void do_init_vending(void);
  1025. +
  1026.  void vending_closevending(struct map_session_data* sd);
  1027.  void vending_openvending(struct map_session_data* sd, const char* message, const uint8* data, int count);
  1028.  void vending_vendinglistreq(struct map_session_data* sd, int id);
  1029. Index: src/char/char.c
  1030. ===================================================================
  1031. --- src/char/char.c (revision 17332)
  1032. +++ src/char/char.c (working copy)
  1033. @@ -1919,10 +1919,9 @@
  1034.     return 106+offset;
  1035.  }
  1036.  
  1037. -
  1038. -
  1039. +//----------------------------------------
  1040.  // Tell client how many pages, kRO sends 17 (Yommy)
  1041. -
  1042. +//----------------------------------------
  1043.  void char_charlist_notify( int fd, struct char_session_data* sd ){
  1044.     WFIFOHEAD(fd, 6);
  1045.     WFIFOW(fd, 0) = 0x9a0;
  1046. @@ -1938,7 +1937,6 @@
  1047.     WFIFOSET(fd,4);
  1048.  }
  1049.  
  1050. -/* Made Possible by Yommy~! <3 */
  1051.  void mmo_char_send099d(int fd, struct char_session_data *sd) {
  1052.     WFIFOHEAD(fd,4 + (MAX_CHARS*MAX_CHAR_BUF));
  1053.     WFIFOW(fd,0) = 0x99d;
  1054. @@ -1997,13 +1995,13 @@
  1055.  }
  1056.  
  1057.  void mmo_char_send(int fd, struct char_session_data* sd){
  1058. -    #if PACKETVER >= 20130000
  1059. +#if PACKETVER >= 20130000
  1060.     mmo_char_send082d(fd,sd);
  1061.     char_charlist_notify(fd,sd);
  1062.     char_block_character(fd,sd);
  1063. -    #else
  1064. +#else
  1065.     mmo_char_send006b(fd,sd);
  1066. -    #endif
  1067. +#endif
  1068.  }
  1069.  
  1070.  int char_married(int pl1, int pl2)
  1071. Index: src/common/mapindex.c
  1072. ===================================================================
  1073. --- src/common/mapindex.c   (revision 17332)
  1074. +++ src/common/mapindex.c   (working copy)
  1075. @@ -168,7 +168,7 @@
  1076.     fclose(fp);
  1077.  
  1078.     if( !strdb_iget(mapindex_db, MAP_DEFAULT) ) {
  1079. -       ShowError("mapindex_init: MAP_DEFAULT '%s' not found in cache! update mapindex.h MAP_DEFAULT var!!!\n",MAP_DEFAULT);
  1080. +       ShowError("mapindex_init: MAP_DEFAULT '%s' not found in cache! Update MAP_DEFAULT in mapindex.h!\n",MAP_DEFAULT);
  1081.     }
  1082.  }
  1083.  
  1084. Index: src/common/mapindex.h
  1085. ===================================================================
  1086. --- src/common/mapindex.h   (revision 17332)
  1087. +++ src/common/mapindex.h   (working copy)
  1088. @@ -47,7 +47,7 @@
  1089.  #define MAP_MALAYA "malaya"
  1090.  #define MAP_ECLAGE "eclage"
  1091.  
  1092. -// When a map index search fails, return results from what map? default:prontera
  1093. +// When a map index search fails, return results from what map?
  1094.  #define MAP_DEFAULT MAP_PRONTERA
  1095.  #define MAP_DEFAULT_X 150
  1096.  #define MAP_DEFAULT_Y 150
  1097. Index: conf/msg_conf/map_msg_idn.conf
  1098. ===================================================================
  1099. --- conf/msg_conf/map_msg_idn.conf  (revision 17331)
  1100. +++ conf/msg_conf/map_msg_idn.conf  (working copy)
  1101. @@ -449,9 +449,29 @@
  1102.  463: Pengaturan bahasa telah dimuat ulang.
  1103.  464: ---- Bahasa yang tersedia:
  1104.  
  1105. +480: ----- Player yang ada di Map -----
  1106. +481: Player '%s' (sesi #%d) | Lokasi: %d,%d
  1107. +482: ----- NPC yang ada di Map -----
  1108. +483: ----- Ruang Chat yang ada di Map -----
  1109. +484: Chat: %s | Player: %s | Lokasi: %d %d
  1110. +485:    User: %d/%d | Password: %s | Publik: %s
  1111. +486: Ya
  1112. +487: Tidak
  1113. +488: Harap masukkan setidaknya 1 opsi (Penggunaan: @mapinfo <0-3> <map>).
  1114. +489: NPC %d: %s::%s | Arah: %s | Sprite: %d | Lokasi: %d %d
  1115. +490: NPC %d: %s | Arah: %s | Sprite: %d | Lokasi: %d %d
  1116. +491: Utara
  1117. +492: Barat Laut
  1118. +493: Barat
  1119. +494: Barat Daya
  1120. +495: Selatan
  1121. +496: Tenggara
  1122. +497: Timur
  1123. +498: Timur Laut
  1124. +499: Tidak diketahui
  1125. +
  1126.  // Pesan-pesan untuk keperluan lain (Bukan untuk perintah GM)
  1127.  // ----------------------------------------
  1128. -
  1129.  //500 kosong
  1130.  501: Batas akun kamu adalah: %d-%m-%Y %H:%M:%S.
  1131.  502: Mode siang diaktifkan.
  1132. @@ -846,7 +866,7 @@
  1133.  1042: Kota
  1134.  1043: Autotrade diaktifkan
  1135.  1044: Autotrade dinonaktifkan
  1136. -1045: Battleground ON
  1137. +1045: Battleground ON (tipe %d)
  1138.  1046: PvP Flags:
  1139.  1047: Pvp ON |
  1140.  1048: NoGuild |
  1141. @@ -899,27 +919,15 @@
  1142.  1095: NoMVPLoot |
  1143.  1096: PartyLock |
  1144.  1097: GuildLock |
  1145. -1098: ----- Player yang ada di Map -----
  1146. -1099: Player '%s' (sesi #%d) | Lokasi: %d,%d
  1147. -1100: ----- NPC yang ada di Map -----
  1148. -1101: Utara
  1149. -1102: Barat Laut
  1150. -1103: Barat
  1151. -1104: Barat Daya
  1152. -1105: Selatan
  1153. -1106: Tenggara
  1154. -1107: Timur
  1155. -1108: Timur Laut
  1156. -1109: Utara
  1157. -1110: Tidak diketahui
  1158. -1111: NPC %d: %s | Arah: %s | Sprite: %d | Lokasi: %d %d
  1159. -1112: NPC %d: %s::%s | Arah: %s | Sprite: %d | Lokasi: %d %d
  1160. -1113: ----- Ruang Chat yang ada di Map -----
  1161. -1114: Chat: %s | Player: %s | Lokasi: %d %d
  1162. -1115:    User: %d/%d | Password: %s | Publik: %s
  1163. -1116: Ya
  1164. -1117: Tidak
  1165. -1118: Harap masukkan setidaknya 1 opsi (Penggunaan: @mapinfo <0-3> <map>).
  1166. +1098: Loadevent |
  1167. +1099: Src4instance |
  1168. +1100: Chmautojoin |
  1169. +1101: nousecart |
  1170. +1102: noitemconsumption |
  1171. +1103: nosumstarmiracle |
  1172. +1104: nomineeffect |
  1173. +1105: nolockon |
  1174. +1106: Restricted (zone %d)
  1175.  
  1176.  // @mount
  1177.  1119: Kamu sudah menaiki seekor naga.
  1178. Index: conf/msg_conf/map_msg.conf
  1179. ===================================================================
  1180. --- conf/msg_conf/map_msg.conf  (revision 17332)
  1181. +++ conf/msg_conf/map_msg.conf  (working copy)
  1182. @@ -868,7 +868,7 @@
  1183.  1042: Town Map
  1184.  1043: Autotrade Enabled
  1185.  1044: Autotrade Disabled
  1186. -1045: Battlegrounds ON type=%d
  1187. +1045: Battlegrounds ON (type %d)
  1188.  1046: PvP Flags:
  1189.  1047: Pvp ON |
  1190.  1048: NoGuild |
  1191. @@ -929,7 +929,7 @@
  1192.  1103: nosumstarmiracle |
  1193.  1104: nomineeffect |
  1194.  1105: nolockon |
  1195. -1106: Restricted zone=%d
  1196. +1106: Restricted (zone %d)
  1197.  
  1198.  // @mount
  1199.  1119: You have mounted your Dragon.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement