Advertisement
Squishyyy

Potion Refining! 2

Dec 26th, 2011
459
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 16.25 KB | None | 0 0
  1. Index: db/item_db.txt
  2. ===================================================================
  3. --- db/item_db.txt  (revision 15050)
  4. +++ db/item_db.txt  (working copy)
  5. @@ -5,11 +5,11 @@
  6.  //
  7.  // Healing Items
  8.  //=============================================================
  9. -501,Red_Potion,Red Potion,0,50,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(45,65),0; },{},{}
  10. -502,Orange_Potion,Orange Potion,0,200,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(105,145),0; },{},{}
  11. -503,Yellow_Potion,Yellow Potion,0,550,,130,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(175,235),0; },{},{}
  12. -504,White_Potion,White Potion,0,1200,,150,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(325,405),0; },{},{}
  13. -505,Blue_Potion,Blue Potion,0,5000,,150,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal 0,rand(40,60); },{},{}
  14. +501,Red_Potion,Red Potion,0,50,,70,,,,,0xFFFFFFFF,7,2,,5,1,1,,{ itemheal rand(45,65),0; },{},{}
  15. +502,Orange_Potion,Orange Potion,0,200,,100,,,,,0xFFFFFFFF,7,2,,,1,1,,{ itemheal rand(105,145),0; },{},{}
  16. +503,Yellow_Potion,Yellow Potion,0,550,,130,,,,,0xFFFFFFFF,7,2,,6,1,1,,{ itemheal rand(175,235),0; },{},{}
  17. +504,White_Potion,White Potion,0,1200,,150,,,,,0xFFFFFFFF,7,2,,7,1,1,,{ itemheal rand(325,405),0; },{},{}
  18. +505,Blue_Potion,Blue Potion,0,5000,,150,,,,,0xFFFFFFFF,7,2,,8,1,1,,{ itemheal 0,rand(40,60); },{},{}
  19.  506,Green_Potion,Green Potion,0,40,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_end SC_Poison; sc_end SC_Silence; sc_end SC_Blind; sc_end SC_Confusion; },{},{}
  20.  507,Red_Herb,Red Herb,0,18,,30,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(18,28),0; },{},{}
  21.  508,Yellow_Herb,Yellow Herb,0,40,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(38,58),0; },{},{}
  22. Index: db/refine_db.txt
  23. ===================================================================
  24. --- db/refine_db.txt    (revision 15050)
  25. +++ db/refine_db.txt    (working copy)
  26. @@ -8,3 +8,11 @@
  27.    3, 5,6, 100,100,100,100,100,100, 60, 40, 20, 20, // Lv.2 Weapons
  28.    5, 8,5, 100,100,100,100,100, 60, 50, 20, 20, 20, // Lv.3 Weapons
  29.    7,13,4, 100,100,100,100, 60, 40, 40, 20, 20, 10, // Lv.4 Weapons
  30. +//==================================================================
  31. +// - Potion Refining -
  32. +// By Squishyyy
  33. +// EffeciencyBonus for safe upgrade,EffeciencyBonus after safe limit,SafeLimit,Lv1,Lv2,Lv3...
  34. +100,100,4, 100,100,100,100, 60, 40, 40, 20, 20, 10,    // Red Potions lv 5
  35. +100,100,4, 100,100,100,100, 60, 40, 40, 20, 20, 10,    // Yellow Potions lv 6
  36. +100,100,4, 100,100,100,100, 60, 40, 40, 20, 20, 10,    // White Potions lv 7
  37. +100,100,4, 100,100,100,100, 60, 40, 40, 20, 20, 10,    // Blue Potions lv 8
  38. \ No newline at end of file
  39. Index: db/skill_db.txt
  40. ===================================================================
  41. --- db/skill_db.txt (revision 15050)
  42. +++ db/skill_db.txt (working copy)
  43. @@ -642,7 +642,9 @@
  44.  //697,9,6,4,0,0x1,0,1,1,yes,0,0x2,0,magic,0,   ALL_REVERSEORCISH,Reverse Orcish
  45.  698,0,6,4,0,0x01,0,1,1,no,0,0x2,0,none,0,      ALL_WEWISH,Christmas Carol
  46.  //699,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,       ALL_SONKRAN,ALL_SONKRAN
  47. +999,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0, CR_POTIONREFINE,Potion Refine
  48.  
  49. +
  50.  1001,9,6,1,-1,0,0,1,1,no,0,0x1,0,weapon,0, KN_CHARGEATK,Charge Attack
  51.  1002,0,6,4,0,0x1,0,1,0,no,0,0x1,0,weapon,2,    CR_SHRINK,Shrink
  52.  1003,0,0,0,0,0,0,1,0,no,0,0x1,0,weapon,0,  AS_SONICACCEL,Sonic Acceleration
  53. Index: db/skill_require_db.txt
  54. ===================================================================
  55. --- db/skill_require_db.txt (revision 15050)
  56. +++ db/skill_require_db.txt (working copy)
  57. @@ -436,6 +436,8 @@
  58.  
  59.  698,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0  //ALL_WEWISH#Christmas Carol
  60.  
  61. +999,0,0,5,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0  //CR_POTIONREFINE#Potion Refine
  62. +
  63.  1001,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    //KN_CHARGEATK#ƒ`ƒƒ?[ƒWƒAƒ^ƒbƒN#
  64.  1002,0,0,15,0,0,0,99,0,0,shield,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0  //CR_SHRINK#ƒVƒ…ƒŠƒ“ƒN#
  65.  1004,0,0,15,0,0,0,99,2,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    //AS_VENOMKNIFE#ƒxƒiƒ€ƒiƒCƒt#
  66. Index: db/skill_tree.txt
  67. ===================================================================
  68. --- db/skill_tree.txt   (revision 15050)
  69. +++ db/skill_tree.txt   (working copy)
  70. @@ -1303,6 +1303,7 @@
  71.  4019,479,5,234,5,235,5,236,5,237,5,0,0 //CR_FULLPROTECTION#Full Protection#
  72.  4019,490,10,229,5,230,5,0,0,0,0,0,0 //CR_ACIDDEMONSTRATION#Acid Demonstration#
  73.  4019,491,2,0,0,0,0,0,0,0,0,0,0 //CR_CULTIVATION#Cultivation#
  74. +4019,999,10,228,5,0,0,0,0,0,0,0,0 //CR_REFINEPOTION#Potion Refine#
  75.  4019,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
  76.  4019,446,1,0,0,0,0,0,0,0,0,0,0 //AM_BERSERKPITCHER#Berserk Pitcher#
  77.  4019,496,1,228,10,0,0,0,0,0,0,0,0  //AM_TWILIGHT1#Twilight Alchemy 1#
  78. Index: src/map/clif.c
  79. ===================================================================
  80. --- src/map/clif.c  (revision 15050)
  81. +++ src/map/clif.c  (working copy)
  82. @@ -5500,8 +5500,49 @@
  83.     int fd;
  84.     int skilllv;
  85.     int wlv;
  86. +// int ref;
  87.     int refine_item[5];
  88.  
  89. +   nullpo_retr(0, sd);
  90. +   skilllv = pc_checkskill(sd,CR_POTIONREFINE);
  91. +   fd=sd->fd;
  92. +
  93. +   refine_item[0] = pc_search_inventory(sd,507);
  94. +   refine_item[1] = pc_search_inventory(sd,508);
  95. +   refine_item[2] = pc_search_inventory(sd,509);
  96. +   refine_item[3] = pc_search_inventory(sd,510);
  97. +
  98. +   WFIFOHEAD(fd, MAX_INVENTORY * 13 + 4);
  99. +   WFIFOW(fd,0)=0x221;
  100. +   for(i=c=0;i<MAX_INVENTORY;i++){
  101. +       if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].refine < skilllv &&
  102. +           sd->status.inventory[i].identify && (sd->status.inventory[i].nameid >= 501 && sd->status.inventory[i].nameid < 506) &&
  103. +           (wlv=itemdb_wlv(sd->status.inventory[i].nameid)) >=0){
  104. +           WFIFOW(fd,c*13+ 4)=i+2;
  105. +           WFIFOW(fd,c*13+ 6)=sd->status.inventory[i].nameid;
  106. +           WFIFOW(fd,c*13+ 8)=0; //TODO: Wonder what are these for? Perhaps ID of weapon's crafter if any?
  107. +           WFIFOW(fd,c*13+10)=0;
  108. +           WFIFOB(fd,c*13+12)=c;
  109. +           c++;
  110. +       }
  111. +   }
  112. +   WFIFOW(fd,2)=c*13+4;
  113. +   WFIFOSET(fd,WFIFOW(fd,2));
  114. +   if (c > 0) {
  115. +       sd->menuskill_id = CR_POTIONREFINE;
  116. +       sd->menuskill_val = skilllv;
  117. +   }
  118. +   return 0;
  119. +}
  120. +
  121. +int clif_equip_refine_list(struct map_session_data *sd)
  122. +{
  123. +   int i,c;
  124. +   int fd;
  125. +   int skilllv;
  126. +   int wlv;
  127. +   int refine_item[5];
  128. +
  129.     nullpo_ret(sd);
  130.  
  131.     skilllv = pc_checkskill(sd,WS_WEAPONREFINE);
  132. @@ -5517,7 +5558,8 @@
  133.     WFIFOW(fd,0)=0x221;
  134.     for(i=c=0;i<MAX_INVENTORY;i++){
  135.         if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].refine < skilllv &&
  136. -           sd->status.inventory[i].identify && (wlv=itemdb_wlv(sd->status.inventory[i].nameid)) >=1 &&
  137. +           sd->status.inventory[i].identify &&  !(sd->status.inventory[i].nameid >= 501 && sd->status.inventory[i].nameid < 506) &&
  138. +           (wlv=itemdb_wlv(sd->status.inventory[i].nameid)) >=1 &&
  139.             refine_item[wlv]!=-1 && !(sd->status.inventory[i].equip&0x0022)){
  140.             WFIFOW(fd,c*13+ 4)=i+2;
  141.             WFIFOW(fd,c*13+ 6)=sd->status.inventory[i].nameid;
  142. @@ -10357,7 +10399,7 @@
  143.  {
  144.     int idx;
  145.  
  146. -   if (sd->menuskill_id != WS_WEAPONREFINE) //Packet exploit?
  147. +   if (sd->menuskill_id != WS_WEAPONREFINE && sd->menuskill_id != CR_POTIONREFINE) //Packet exploit?
  148.         return;
  149.     if (pc_istrading(sd)) {
  150.         //Make it fail to avoid shop exploits where you sell something different than you see.
  151. @@ -10366,10 +10408,17 @@
  152.         return;
  153.     }
  154.     idx = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]);
  155. +   if (sd->menuskill_id == WS_WEAPONREFINE)
  156. +   {
  157.     skill_weaponrefine(sd, idx-2);
  158.     sd->menuskill_val = sd->menuskill_id = 0;
  159. +   }
  160. +   else if (sd->menuskill_id == CR_POTIONREFINE)
  161. +   {
  162. +   skill_potionrefine(sd, idx-2);
  163. +   sd->menuskill_val = sd->menuskill_id = 0;
  164. +   }
  165.  }
  166. -
  167.  /*==========================================
  168.   *
  169.   *------------------------------------------*/
  170. @@ -14316,7 +14365,7 @@
  171.  ///   0: Displays 'value' for 5 seconds.
  172.  ///   1: Incremental counter (1 tick/second), negated 'value' specifies start value (e.g. using -10 lets the counter start at 10).
  173.  ///   2: Decremental counter (1 tick/second), negated 'value' specifies start value (does not stop when reaching 0, but overflows).
  174. -///   3: Decremental counter (1 tick/second), 'value' specifies start value (stops when reaching 0, displays at most 2 digits).
  175. +///   3: Decremental counter (2 ticks/second), 'value' specifies start value (stops when reaching 0, displays at most 2 digits).
  176.  /// value:
  177.  ///   Except for type 3 it is interpreted as seconds for displaying as DD:HH:MM:SS, HH:MM:SS, MM:SS or SS (leftmost '00' is not displayed).
  178.  void clif_showdigit(struct map_session_data* sd, unsigned char type, int value)
  179. Index: src/map/clif.h
  180. ===================================================================
  181. --- src/map/clif.h  (revision 15050)
  182. +++ src/map/clif.h  (working copy)
  183. @@ -384,6 +384,7 @@
  184.  int clif_item_identified(struct map_session_data *sd,int idx,int flag);
  185.  int clif_item_repair_list(struct map_session_data *sd, struct map_session_data *dstsd);
  186.  int clif_item_repaireffect(struct map_session_data *sd, int nameid, int flag);
  187. +int clif_equip_refine_list(struct map_session_data *sd);
  188.  int clif_item_refine_list(struct map_session_data *sd);
  189.  
  190.  int clif_item_skill(struct map_session_data *sd,int skillid,int skilllv);
  191. Index: src/map/itemdb.c
  192. ===================================================================
  193. --- src/map/itemdb.c    (revision 15050)
  194. +++ src/map/itemdb.c    (working copy)
  195. @@ -371,7 +371,8 @@
  196.       case IT_ARMOR:
  197.       case IT_PETEGG:
  198.       case IT_PETARMOR:
  199. -         return 0;
  200. +     case IT_HEALING:
  201. +           return 0;
  202.       default:
  203.           return 1;
  204.    }
  205. Index: src/map/pc.c
  206. ===================================================================
  207. --- src/map/pc.c    (revision 15050)
  208. +++ src/map/pc.c    (working copy)
  209. @@ -6207,8 +6207,9 @@
  210.   *------------------------------------------*/
  211.  int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp)
  212.  {
  213. -   int i, bonus;
  214. -
  215. +   int i, index, bonus;
  216. +   for(index = 0; index < ARRAYLENGTH(sd->status.inventory) && sd->status.inventory[index].refine; index++)
  217. +       {
  218.     if(hp) {
  219.         bonus = 100 + (sd->battle_status.vit<<1)
  220.             + pc_checkskill(sd,SM_RECOVERY)*10
  221. @@ -6216,6 +6217,20 @@
  222.         // A potion produced by an Alchemist in the Fame Top 10 gets +50% effect [DracoRPG]
  223.         if (potion_flag > 1)
  224.             bonus += bonus*(potion_flag-1)*50/100;
  225. +      
  226. +       if(sd->inventory_data[index]->type == IT_HEALING) {
  227. +           int r,wlv = sd->inventory_data[index]->wlv;
  228. +           struct item *id=&sd->status.inventory[index];
  229. +          
  230. +           if (wlv >= MAX_REFINE_BONUS)
  231. +               wlv = MAX_REFINE_BONUS - 1;
  232. +           bonus = (r=sd->status.inventory[index].refine)*potionrefinebonus[wlv][0];
  233. +           if((r-=potionrefinebonus[wlv][2])>0) //Overrefine bonus.
  234. +               id->refine = r*potionrefinebonus[wlv][0];
  235. +           bonus += bonus;
  236. +           }
  237. +       }
  238. +
  239.         //All item bonuses.
  240.         bonus += sd->itemhealrate2;
  241.         //Item Group bonuses
  242. Index: src/map/skill.c
  243. ===================================================================
  244. --- src/map/skill.c (revision 15050)
  245. +++ src/map/skill.c (working copy)
  246. @@ -4324,9 +4324,13 @@
  247.     // Weapon Refining [Celest]
  248.     case WS_WEAPONREFINE:
  249.         if(sd)
  250. +           clif_equip_refine_list(sd);
  251. +       break;
  252. +   // Potion Refining (Squishyyy)
  253. +   case CR_POTIONREFINE:
  254. +       if(sd)
  255.             clif_item_refine_list(sd);
  256.         break;
  257. -
  258.     case MC_VENDING:
  259.         if(sd)
  260.         {   //Prevent vending of GMs with unnecessary Level to trade/drop. [Skotlex]
  261. @@ -9338,7 +9342,7 @@
  262.  void skill_weaponrefine (struct map_session_data *sd, int idx)
  263.  {
  264.     int i = 0, ep = 0, per;
  265. -   int material[5] = { 0, 1010, 1011, 984, 984 };
  266. +   int material[5] = { 985, 1010, 1011, 984, 984 };
  267.     struct item *item;
  268.  
  269.     nullpo_retv(sd);
  270. @@ -9403,7 +9408,61 @@
  271.         }
  272.     }
  273.  }
  274. +//==========================================
  275. +/* Potion Refine - Squishyyy
  276. +*------------------------------------------*/
  277. +void skill_potionrefine (struct map_session_data *sd, int idx)
  278. +{
  279. +   int i = 0, ep = 0, per;
  280. +   int material[4] = { 507, 508, 509, 510 };
  281. +   struct item *item;
  282.  
  283. +   nullpo_retv(sd);
  284. +
  285. +   if (idx >= 0 && idx < MAX_INVENTORY)
  286. +   {
  287. +       struct item_data *ditem = sd->inventory_data[idx];
  288. +       item = &sd->status.inventory[idx];
  289. +
  290. +       if(item->nameid > 0 && ditem->type == IT_HEALING)
  291. +       {
  292. +           if( item->refine >= sd->menuskill_val
  293. +           ||  item->refine >= MAX_REFINE      // if it's no longer refineable
  294. +       //||  ditem->flag.no_refine     // if the item isn't refinable
  295. +           ||  (i = pc_search_inventory(sd, material [ditem->wlv-5])) < 0 )
  296. +           {
  297. +               clif_skill_fail(sd,sd->menuskill_id,0,0);
  298. +               return;
  299. +           }
  300. +
  301. +           per = percentrefinery [ditem->wlv][(int)item->refine];
  302. +           per += (((signed int)sd->status.job_level)-50)/2;
  303. +
  304. +           pc_delitem(sd, i, 1, 0, 0);
  305. +           if (per > rand() % 100) {
  306. +               item->refine++;
  307. +               if(item->equip) {
  308. +                   ep = item->equip;
  309. +                   pc_unequipitem(sd,idx,3);
  310. +               }
  311. +               clif_refine(sd->fd,0,idx,item->refine);
  312. +               clif_delitem(sd,idx,1,3);
  313. +               clif_additem(sd,idx,1,0);
  314. +               if (ep)
  315. +                   pc_equipitem(sd,idx,ep);
  316. +               clif_misceffect(&sd->bl,3);
  317. +           } else {
  318. +               item->refine = 0;
  319. +               if(item->equip)
  320. +                   pc_unequipitem(sd,idx,3);
  321. +               clif_refine(sd->fd,1,idx,item->refine);
  322. +               pc_delitem(sd,idx,1,0,2);
  323. +               clif_misceffect(&sd->bl,2);
  324. +               clif_emotion(&sd->bl, E_OMG);
  325. +           }
  326. +       }
  327. +   }
  328. +}
  329.  /*==========================================
  330.   *
  331.   *------------------------------------------*/
  332. Index: src/map/skill.h
  333. ===================================================================
  334. --- src/map/skill.h (revision 15050)
  335. +++ src/map/skill.h (working copy)
  336. @@ -319,6 +319,7 @@
  337.  void skill_repairweapon(struct map_session_data *sd, int idx);
  338.  void skill_identify(struct map_session_data *sd,int idx);
  339.  void skill_weaponrefine(struct map_session_data *sd,int idx); // [Celest]
  340. +void skill_potionrefine(struct map_session_data *sd,int idx); //Squishyyy
  341.  int skill_autospell(struct map_session_data *md,int skillid);
  342.  
  343.  int skill_calc_heal(struct block_list *src, struct block_list *target, int skill_id, int skill_lv, bool heal);
  344. @@ -994,6 +995,7 @@
  345.     ALL_REVERSEORCISH,
  346.     ALL_WEWISH,
  347.     ALL_SONKRAN,
  348. +   CR_POTIONREFINE = 999,
  349.  
  350.     KN_CHARGEATK = 1001,
  351.     CR_SHRINK,
  352. @@ -1321,6 +1323,7 @@
  353.     RETURN_TO_ELDICASTES,
  354.     ALL_BUYING_STORE,
  355.  
  356. +
  357.     HLIF_HEAL = 8001,
  358.     HLIF_AVOID,
  359.     HLIF_BRAIN,
  360. Index: src/map/status.c
  361. ===================================================================
  362. --- src/map/status.c    (revision 15050)
  363. +++ src/map/status.c    (working copy)
  364. @@ -53,7 +53,8 @@
  365.  static int sp_coefficient[CLASS_COUNT];
  366.  static int aspd_base[CLASS_COUNT][MAX_WEAPON_TYPE];    //[blackhole89]
  367.  static int refinebonus[MAX_REFINE_BONUS][3];   // ¸˜Bƒ{[ƒiƒXƒe[ƒuƒ‹(refine_db.txt)
  368. -int percentrefinery[5][MAX_REFINE+1];  // ¸˜B¬Œ÷—¦(refine_db.txt)
  369. +int potionrefinebonus[MAX_REFINE_BONUS][3];//potion refining - Squishyyy
  370. +int percentrefinery[10][MAX_REFINE+1]; // ¸˜B¬Œ÷—¦(refine_db.txt)
  371.  static int atkmods[3][MAX_WEAPON_TYPE];    // •ŠíATKƒTƒCƒYC³(size_fix.txt)
  372.  static char job_bonus[CLASS_COUNT][MAX_LEVEL];
  373.  
  374. @@ -614,9 +615,10 @@
  375.  {
  376.     if (lv >= 0 && lv < 5 && type >= 0 && type < 3)
  377.         return refinebonus[lv][type];
  378. +   if (lv >= 0 && lv < 5 && type == 0)
  379. +       return potionrefinebonus[lv][type];
  380.     return 0;
  381.  }
  382. -
  383.  //Sets HP to given value. Flag is the flag passed to status_heal in case
  384.  //final value is higher than current (use 2 to make a healing effect display
  385.  //on players) It will always succeed (overrides Berserk block), but it can't kill.
  386. @@ -7817,7 +7819,8 @@
  387.         percentrefinery[i][j]=0; //Slot MAX+1 always has 0% success chance [Skotlex]
  388.         refinebonus[i][0]=0;  // stats per safe-upgrade
  389.         refinebonus[i][1]=0;  // stats after safe-limit
  390. -       refinebonus[i][2]=10;  // safe limit
  391. +       refinebonus[i][2]=0;  // safe limit
  392. +       refinebonus[i][3]=10;
  393.     }
  394.  
  395.     // read databases
  396. Index: src/map/status.h
  397. ===================================================================
  398. --- src/map/status.h    (revision 15050)
  399. +++ src/map/status.h    (working copy)
  400. @@ -13,7 +13,7 @@
  401.  
  402.  //Use this to refer the max refinery level [Skotlex]
  403.  #define MAX_REFINE 10
  404. -#define MAX_REFINE_BONUS 5
  405. +#define MAX_REFINE_BONUS 6
  406.  
  407.  extern unsigned long StatusChangeFlagTable[];
  408.  
  409. @@ -930,7 +930,8 @@
  410.  extern int current_equip_item_index;
  411.  extern int current_equip_card_id;
  412.  
  413. -extern int percentrefinery[5][MAX_REFINE+1]; //The last slot always has a 0% success chance [Skotlex]
  414. +extern int percentrefinery[10][MAX_REFINE+1]; //The last slot always has a 0% success chance [Skotlex]
  415. +extern int potionrefinebonus[MAX_REFINE_BONUS][3];
  416.  
  417.  //Mode definitions to clear up code reading. [Skotlex]
  418.  enum e_mode
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement