enchan_ko.txt 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. //===== rAthena Script =======================================
  2. //= Kagerou/Oboro Gear Enchants
  3. //===== By: ==================================================
  4. //= Euphy
  5. //===== Current Version: =====================================
  6. //= 1.0
  7. //===== Compatible With: =====================================
  8. //= rAthena Project
  9. //===== Description: =========================================
  10. //= [Official Conversion]
  11. //= Adds enchantments to Kagerou/Oboro gear.
  12. //===== Additional Comments: =================================
  13. //= 1.0 First version. [Euphy]
  14. //============================================================
  15. // Main NPC :: job_ko
  16. //============================================================
  17. que_ng,75,20,3 script Artisan Tene#ko 762,{
  18. disable_items;
  19. mes "[Artisan Tene]";
  20. mes "Hello? I'm Artisan Tene, the most respectful blacksmith of them all.";
  21. next;
  22. mes "[Artisan Tene]";
  23. mes "How may I help you?";
  24. next;
  25. switch(select("Which blacksmith?:I want to add option.:I want to remove option.")) {
  26. case 1:
  27. mes "[Artisan Tene]";
  28. mes "Oh! Sorry, I didn't introduce myself.";
  29. next;
  30. mes "[Artisan Tene]";
  31. mes "I can add or remove options from some weapons and armor at a small price.";
  32. next;
  33. mes "[Artisan Tene]";
  34. mes "Oh! Do you want to know the list of weapons and armor I work on?";
  35. next;
  36. switch(select("Take a look at the weapon list.:Take a look at the armor list.")) {
  37. case 1:
  38. mes "[Artisan Tene]";
  39. mes "Are you interested in the weapon list?";
  40. next;
  41. mes "[Artisan Tene]";
  42. mes "The weapons I work on are ";
  43. mes "^ff0000Raksasa Dagger [1]^000000";
  44. mes "^ff0000Mikatsuki[1]^000000";
  45. mes "^ff0000Huuma Swirling Petal [2]^000000";
  46. mes "^ff0000Huuma Fluttering Snow^000000";
  47. mes "^ff0000Huuma Thunderstorm^000000";
  48. next;
  49. break;
  50. case 2:
  51. mes "[Artisan Tene]";
  52. mes "Are you interested in the armor list?";
  53. next;
  54. mes "[Artisan Tene]";
  55. mes "The armor I work on is";
  56. mes "^ff0000Wolf Armguard [1]^000000";
  57. mes "^ff0000Crescent Armguard [1]^000000";
  58. mes "^ff0000Ninja Scale Armor [1]^000000";
  59. mes "^ff0000Tenebris Latitantes [1]^000000";
  60. mes "^ff0000Special Ninja Suit [1]^000000";
  61. next;
  62. break;
  63. }
  64. mes "[Artisan Tene]";
  65. mes "This is it. I'm still in practice to learn and handle more battlegear.";
  66. next;
  67. mes "[Artisan Tene]";
  68. mes "If you'd like, I can add options to your 4th and 3rd Slots at a small cost.";
  69. close;
  70. case 2:
  71. mes "[Artisan Tene]";
  72. mes "Oh! You need to add an option.";
  73. mes "I use the method of adding options to your 4th and 3rd slots of battlegear equipped.";
  74. next;
  75. mes "[Artisan Tene]";
  76. mes "Since I use a stable and unique way of adding options, there are no risks of ^ff0000'Reset Refine'^000000 or ^ff0000'Losing Cards'^000000 equipped.";
  77. next;
  78. mes "[Artisan Tene]";
  79. mes "But since the costs of materials are high, I only ask for a ^5565AA small cost^000000 for my services with the exception of the material expenses.";
  80. next;
  81. mes "[Artisan Tene]";
  82. mes "Ha ha. I must have talked too much. Which class of equipment do you want to add an option to?";
  83. next;
  84. switch(select("Weapon...:Armor...")) {
  85. case 1:
  86. mes "[Artisan Tene]";
  87. mes "So you want to add an option to your weapon. That will be ^ff0000100,000 Zeny for a 1 time service.^000000";
  88. next;
  89. mes "[Artisan Tene]";
  90. mes "^FF0000Ah! I can add an additional option if you equip a one-handed weapon on your right hand because it is easier for me to work on.^000000";
  91. next;
  92. mes "[Artisan Tene]";
  93. mes "Which weapon do you want to add an option to?";
  94. next;
  95. switch(select("Later...:Raksasa Dagger [1]:Mikatsuki [1]:Huuma Swirling Petal [2]:Huuma Fluttering Snow:Huuma Thunderstorm")) {
  96. case 1:
  97. mes "[Artisan Tene]";
  98. mes "Changed your mind? Very well. Hope to see you later.";
  99. close;
  100. case 2:
  101. set .@equip_id,13076; //Raksasa_Dagger
  102. break;
  103. case 3:
  104. set .@equip_id,13078; //Mikatsuki
  105. break;
  106. case 4:
  107. set .@equip_id,13313; //Huuma_Swirling_Petal
  108. break;
  109. case 5:
  110. set .@equip_id,13314; //Huuma_Fluttering_Snow
  111. break;
  112. case 6:
  113. set .@equip_id,13315; //Huuma_Thunderstorm
  114. break;
  115. }
  116. set .@part, EQI_HAND_R;
  117. break;
  118. case 2:
  119. mes "[Artisan Tene]";
  120. mes "So you want to add an option to your armor. That will be ^ff0000100,000 Zeny for a 1 time service.^000000";
  121. next;
  122. mes "[Artisan Tene]";
  123. mes "Which armor do you want to add an option to?";
  124. next;
  125. switch(select("Later...:Wolf Armguard [1]:Crescent Armguard [1]:Ninja Scale Armor [1]:Tenebris Latitantes [1]:Special Ninja Suit [1]")) {
  126. case 1:
  127. mes "[Artisan Tene]";
  128. mes "Changed your mind? Very well. Hope to see you later.";
  129. close;
  130. case 2:
  131. set .@part, EQI_HAND_L;
  132. set .@equip_id,2172; //Wolf_Armguard
  133. break;
  134. case 3:
  135. set .@part, EQI_HAND_L;
  136. set .@equip_id,2173; //Crescent_Armguard
  137. break;
  138. case 4:
  139. set .@part, EQI_ARMOR;
  140. set .@equip_id,15054; //Ninja_Scale_Armor
  141. break;
  142. case 5:
  143. set .@part, EQI_ARMOR;
  144. set .@equip_id,15055; //Tenebris_Latitantes
  145. break;
  146. case 6:
  147. set .@part, EQI_ARMOR;
  148. set .@equip_id,15056; //Special_Ninja_Suit_
  149. break;
  150. }
  151. break;
  152. }
  153. set .@equip_refine, getequiprefinerycnt(.@part);
  154. setarray .@equip_card[0], getequipcardid(.@part,0),getequipcardid(.@part,1),getequipcardid(.@part,2),getequipcardid(.@part,3);
  155. copyarray .@card[0], .@equip_card[0], 4;
  156. set .@select,1;
  157. break;
  158. case 3:
  159. mes "[Artisan Tene]";
  160. mes "You want to remove an option from your item. You didn't like the option?";
  161. next;
  162. mes "[Artisan Tene]";
  163. mes "Sorry but I'm not experienced enough. You've paid me for nothing.";
  164. next;
  165. mes "[Artisan Tene]";
  166. mes "^ff0000Removing an option will be 100,000 Zeny.^000000 Which option from the list of items do you want to remove?";
  167. next;
  168. switch(select("Later...:Raksasa Dagger [1]:Mikatsuki [1]:Huuma Swirling Petal [2]:Huuma Fluttering Snow:Huuma Thunderstorm:Wolf Armguard [1]:Crescent Armguard [1]:Ninja Scale Armor [1]:Tenebris Latitantes [1]:Special Ninja Suit [1]")) {
  169. case 1:
  170. mes "[Artisan Tene]";
  171. mes "Removing options is expensive, isn't it? Sorry. I will work harder in developing my skills and bring down costs as well.";
  172. close;
  173. case 2:
  174. set .@part, EQI_HAND_R;
  175. set .@equip_id,13076; //Raksasa_Dagger
  176. break;
  177. case 3:
  178. set .@part, EQI_HAND_R;
  179. set .@equip_id,13078; //Mikatsuki
  180. break;
  181. case 4:
  182. set .@part, EQI_HAND_R;
  183. set .@equip_id,13313; //Huuma_Swirling_Petal
  184. break;
  185. case 5:
  186. set .@part, EQI_HAND_R;
  187. set .@equip_id,13314; //Huuma_Fluttering_Snow
  188. break;
  189. case 6:
  190. set .@part, EQI_HAND_R;
  191. set .@equip_id,13315; //Huuma_Thunderstorm
  192. break;
  193. case 7:
  194. set .@part, EQI_HAND_L;
  195. set .@equip_id,2172; //Wolf_Armguard
  196. break;
  197. case 8:
  198. set .@part, EQI_HAND_L;
  199. set .@equip_id,2173; //Crescent_Armguard
  200. break;
  201. case 9:
  202. set .@part, EQI_ARMOR;
  203. set .@equip_id,15054; //Ninja_Scale_Armor
  204. break;
  205. case 10:
  206. set .@part, EQI_ARMOR;
  207. set .@equip_id,15055; //Tenebris_Latitantes
  208. break;
  209. case 11:
  210. set .@part, EQI_ARMOR;
  211. set .@equip_id,15056; //Special_Ninja_Suit_
  212. break;
  213. }
  214. set .@equip_refine, getequiprefinerycnt(.@part);
  215. setarray .@equip_card[0], getequipcardid(.@part,0),getequipcardid(.@part,1),getequipcardid(.@part,2),getequipcardid(.@part,3);
  216. copyarray .@card[0], .@equip_card[0], 4;
  217. mes "[Artisan Tene]";
  218. mes "You want to reset ^44B7BC" + getitemname(.@equip_id) + "^000000?";
  219. next;
  220. mes "[Artisan Tene]";
  221. mes "The cost is the same but I do provide a service to remove only the option on the 3rd slot and leave the 4th slot as is. Are you interested?";
  222. next;
  223. switch(select("Reset only the 3rd Slot.:Reset all.")) {
  224. case 1:
  225. mes "[Artisan Tene]";
  226. mes "Very well. I will reset only your 3rd slot.";
  227. next;
  228. set .@sot03_ck,1;
  229. break;
  230. case 2:
  231. mes "[Artisan Tene]";
  232. mes "Very well. I will reset all slots.";
  233. next;
  234. break;
  235. }
  236. set .@select,2;
  237. break;
  238. }
  239. if (getequipisequiped(.@part) == 0) {
  240. mes "[Artisan Tene]";
  241. mes "You will have to equip all items before ^44B7BC" + getitemname(.@equip_id) + "^000000.";
  242. close;
  243. }
  244. if (Zeny < 100000) { //custom translation
  245. mes "[Artisan Tene]";
  246. mes "I'm sorry, but you don't have enough Zeny!";
  247. next;
  248. mes "[Artisan Tene]";
  249. mes "Our charge is very low, so please bear with me.";
  250. close;
  251. }
  252. if (getequipid(.@part) != .@equip_id) {
  253. mes "[Artisan Tene]";
  254. mes "I don't think this is the equipment you requested.";
  255. next;
  256. mes "[Artisan Tene]";
  257. mes "I cannot work on equipment other than those from my list.";
  258. close;
  259. }
  260. // Initialization
  261. if (.@select == 2) {
  262. if (.@sot03_ck) {// reset only 3rd slot
  263. if (getiteminfo(.@equip_card[2], ITEMINFO_SUBTYPE) != CARD_ENCHANT) { // Armor Enchant System
  264. mes "[Artisan Tene]";
  265. mes "The third slot is is not enchanted. Please check again."; //custom translation
  266. close;
  267. }
  268. set .@equip_card[2],0;
  269. } else {
  270. if (getiteminfo(.@equip_card[3], ITEMINFO_SUBTYPE) != CARD_ENCHANT) { // Armor Enchant System
  271. mes "[Artisan Tene]";
  272. mes "This equipment is is not enchanted. Please check again."; //custom translation
  273. close;
  274. }
  275. set .@equip_card[2],0;
  276. set .@equip_card[3],0;
  277. }
  278. progressbar "ffff00",2;
  279. set Zeny, Zeny - 100000;
  280. // anti-hack
  281. if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@equip_refine))
  282. close;
  283. delequip .@part;
  284. // GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3]
  285. getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];
  286. mes "[Artisan Tene]";
  287. mes "Initialization complete.";
  288. close;
  289. }
  290. // Enchantment
  291. if (.@equip_refine <= 4) set .@ko_type01,1;
  292. else if (.@equip_refine <= 7) set .@ko_type01,2;
  293. else if (.@equip_refine <= 9) set .@ko_type01,3;
  294. else if (.@equip_refine <= 12) set .@ko_type01,4;
  295. else set .@ko_type01,5;
  296. //custom translations
  297. if (getiteminfo(.@equip_card[3], ITEMINFO_SUBTYPE) == CARD_ENCHANT) { // Armor Enchant System
  298. if (getiteminfo(.@equip_card[2], ITEMINFO_SUBTYPE) == CARD_ENCHANT) {
  299. mes "[Artisan Tene]";
  300. mes "This equipment cannot be further enchanted.";
  301. next;
  302. mes "[Artisan Tene]";
  303. mes "If you are not satisfied with the enchantments, I suggest that you initialize.";
  304. close;
  305. } else {
  306. mes "[Artisan Tene]";
  307. mes "The fourth slot has already been enchanted. Shall I enchant the third slot as well?";
  308. next;
  309. if(select("Do it later:Do it now") == 1) {
  310. mes "[Artisan Tene]";
  311. mes "Very well. Hope to see you later.";
  312. close;
  313. }
  314. mes "[Artisan Tene]";
  315. mes "Starting to enchant the third slot.";
  316. next;
  317. set .@ko_type02,2;
  318. }
  319. } else {
  320. mes "[Artisan Tene]";
  321. mes "This equipment is not currently enchanted. Shall I enchant the fourth slot?";
  322. next;
  323. if(select("Do it later:Do it now") == 1) {
  324. mes "[Artisan Tene]";
  325. mes "Very well. Hope to see you later.";
  326. close;
  327. }
  328. mes "[Artisan Tene]";
  329. mes "Starting to enchant the fourth slot.";
  330. next;
  331. set .@ko_type02,1;
  332. }
  333. if (.@ko_type02 == 1) { // slot 4
  334. set .@r, rand(1,1000);
  335. switch (.@ko_type01) {
  336. case 1:
  337. if (.@r <= 200) set .@e_socket04,4786; //Mdef2
  338. else if (.@r <= 350) set .@e_socket04,4787; //Mdef4
  339. else if (.@r <= 450) set .@e_socket04,4788; //Mdef6
  340. else if (.@r <= 500) set .@e_socket04,4789; //Mdef8
  341. else if (.@r <= 700) set .@e_socket04,4791; //Def3
  342. else if (.@r <= 850) set .@e_socket04,4792; //Def6
  343. else if (.@r <= 950) set .@e_socket04,4793; //Def9
  344. else set .@e_socket04,4794; //Def12
  345. set .@enchant, .@e_socket04;
  346. break;
  347. case 2:
  348. if (.@r <= 90) set .@d_socket04,4786; //Mdef2
  349. else if (.@r <= 170) set .@d_socket04,4787; //Mdef4
  350. else if (.@r <= 240) set .@d_socket04,4788; //Mdef6
  351. else if (.@r <= 300) set .@d_socket04,4789; //Mdef8
  352. else if (.@r <= 390) set .@d_socket04,4791; //Def3
  353. else if (.@r <= 470) set .@d_socket04,4792; //Def6
  354. else if (.@r <= 540) set .@d_socket04,4793; //Def9
  355. else if (.@r <= 600) set .@d_socket04,4794; //Def12
  356. else if (.@r <= 660) set .@d_socket04,4700; //Strength1
  357. else if (.@r <= 720) set .@d_socket04,4710; //Inteligence1
  358. else if (.@r <= 780) set .@d_socket04,4740; //Vitality1
  359. else if (.@r <= 840) set .@d_socket04,4720; //Dexterity1
  360. else if (.@r <= 900) set .@d_socket04,4730; //Agility1
  361. else set .@d_socket04,4750; //Luck1
  362. set .@enchant, .@d_socket04;
  363. break;
  364. case 3:
  365. if (.@r <= 90) set .@c_socket04,4700; //Strength1
  366. else if (.@r <= 180) set .@c_socket04,4710; //Inteligence1
  367. else if (.@r <= 270) set .@c_socket04,4740; //Vitality1
  368. else if (.@r <= 360) set .@c_socket04,4720; //Dexterity1
  369. else if (.@r <= 450) set .@c_socket04,4730; //Agility1
  370. else if (.@r <= 600) set .@c_socket04,4750; //Luck1
  371. else if (.@r <= 660) set .@c_socket04,4701; //Strength2
  372. else if (.@r <= 720) set .@c_socket04,4711; //Inteligence2
  373. else if (.@r <= 780) set .@c_socket04,4741; //Vitality2
  374. else if (.@r <= 840) set .@c_socket04,4721; //Dexterity2
  375. else if (.@r <= 900) set .@c_socket04,4731; //Agility2
  376. else set .@c_socket04,4751; //Luck2
  377. set .@enchant, .@c_socket04;
  378. break;
  379. case 4:
  380. if (.@r <= 70) set .@b_socket04,4700; //Strength1
  381. else if (.@r <= 140) set .@b_socket04,4710; //Inteligence1
  382. else if (.@r <= 210) set .@b_socket04,4740; //Vitality1
  383. else if (.@r <= 280) set .@b_socket04,4720; //Dexterity1
  384. else if (.@r <= 350) set .@b_socket04,4730; //Agility1
  385. else if (.@r <= 440) set .@b_socket04,4750; //Luck1
  386. else if (.@r <= 495) set .@b_socket04,4701; //Strength2
  387. else if (.@r <= 550) set .@b_socket04,4711; //Inteligence2
  388. else if (.@r <= 605) set .@b_socket04,4741; //Vitality2
  389. else if (.@r <= 660) set .@b_socket04,4721; //Dexterity2
  390. else if (.@r <= 715) set .@b_socket04,4731; //Agility2
  391. else if (.@r <= 800) set .@b_socket04,4751; //Luck2
  392. else if (.@r <= 860) set .@b_socket04,4795; //HP100
  393. else if (.@r <= 910) set .@b_socket04,4796; //HP200
  394. else if (.@r <= 950) set .@b_socket04,4797; //HP300
  395. else if (.@r <= 980) set .@b_socket04,4800; //SP50
  396. else set .@b_socket04,4801; //SP100
  397. set .@enchant, .@b_socket04;
  398. break;
  399. case 5:
  400. if (.@r <= 59) set .@a_socket04,4701; //Strength2
  401. else if (.@r <= 118) set .@a_socket04,4711; //Inteligence2
  402. else if (.@r <= 177) set .@a_socket04,4741; //Vitality2
  403. else if (.@r <= 236) set .@a_socket04,4721; //Dexterity2
  404. else if (.@r <= 295) set .@a_socket04,4731; //Agility2
  405. else if (.@r <= 354) set .@a_socket04,4751; //Luck2
  406. else if (.@r <= 413) set .@a_socket04,4795; //HP100
  407. else if (.@r <= 472) set .@a_socket04,4796; //HP200
  408. else if (.@r <= 530) set .@a_socket04,4797; //HP300
  409. else if (.@r <= 589) set .@a_socket04,4800; //SP50
  410. else if (.@r <= 648) set .@a_socket04,4801; //SP100
  411. else if (.@r <= 707) set .@a_socket04,4702; //Strength3
  412. else if (.@r <= 765) set .@a_socket04,4712; //Inteligence3
  413. else if (.@r <= 824) set .@a_socket04,4742; //Vitality3
  414. else if (.@r <= 883) set .@a_socket04,4722; //Dexterity3
  415. else if (.@r <= 942) set .@a_socket04,4732; //Agility3
  416. else set .@a_socket04,4752; //Luck3
  417. set .@enchant, .@a_socket04;
  418. break;
  419. }
  420. } else if (.@ko_type02 == 2) { // slot 3
  421. set .@r, rand(1,1000);
  422. switch (.@ko_type01) {
  423. case 1:
  424. if (.@r <= 125) set .@e_socket03,4786; //Mdef2
  425. else if (.@r <= 250) set .@e_socket03,4787; //Mdef4
  426. else if (.@r <= 375) set .@e_socket03,4788; //Mdef6
  427. else if (.@r <= 500) set .@e_socket03,4789; //Mdef8
  428. else if (.@r <= 625) set .@e_socket03,4791; //Def3
  429. else if (.@r <= 750) set .@e_socket03,4792; //Def6
  430. else if (.@r <= 875) set .@e_socket03,4793; //Def9
  431. else set .@e_socket03,4794; //Def12
  432. set .@enchant, .@e_socket03;
  433. break;
  434. case 2:
  435. if (.@r <= 100) set .@d_socket03,4786; //Mdef2
  436. else if (.@r <= 190) set .@d_socket03,4787; //Mdef4
  437. else if (.@r <= 270) set .@d_socket03,4788; //Mdef6
  438. else if (.@r <= 340) set .@d_socket03,4789; //Mdef8
  439. else if (.@r <= 440) set .@d_socket03,4791; //Def3
  440. else if (.@r <= 530) set .@d_socket03,4792; //Def6
  441. else if (.@r <= 610) set .@d_socket03,4793; //Def9
  442. else if (.@r <= 680) set .@d_socket03,4794; //Def12
  443. else if (.@r <= 720) set .@d_socket03,4700; //Strength1
  444. else if (.@r <= 760) set .@d_socket03,4710; //Inteligence1
  445. else if (.@r <= 800) set .@d_socket03,4740; //Vitality1
  446. else if (.@r <= 850) set .@d_socket03,4720; //Dexterity1
  447. else if (.@r <= 880) set .@d_socket03,4730; //Agility1
  448. else set .@d_socket03,4750; //Luck1
  449. set .@enchant, .@d_socket03;
  450. break;
  451. case 3:
  452. if (.@r <= 100) set .@c_socket03,4700; //Strength1
  453. else if (.@r <= 200) set .@c_socket03,4710; //Inteligence1
  454. else if (.@r <= 305) set .@c_socket03,4740; //Vitality1
  455. else if (.@r <= 410) set .@c_socket03,4720; //Dexterity1
  456. else if (.@r <= 500) set .@c_socket03,4730; //Agility1
  457. else if (.@r <= 700) set .@c_socket03,4750; //Luck1
  458. else if (.@r <= 750) set .@c_socket03,4701; //Strength2
  459. else if (.@r <= 780) set .@c_socket03,4711; //Inteligence2
  460. else if (.@r <= 830) set .@c_socket03,4741; //Vitality2
  461. else if (.@r <= 880) set .@c_socket03,4721; //Dexterity2
  462. else if (.@r <= 900) set .@c_socket03,4731; //Agility2
  463. else set .@c_socket03,4751; //Luck2
  464. set .@enchant, .@c_socket03;
  465. break;
  466. case 4:
  467. if (.@r <= 70) set .@b_socket03,4700; //Strength1
  468. else if (.@r <= 160) set .@b_socket03,4710; //Inteligence1
  469. else if (.@r <= 250) set .@b_socket03,4740; //Vitality1
  470. else if (.@r <= 340) set .@b_socket03,4720; //Dexterity1
  471. else if (.@r <= 400) set .@b_socket03,4730; //Agility1
  472. else if (.@r <= 500) set .@b_socket03,4750; //Luck1
  473. else if (.@r <= 540) set .@b_socket03,4701; //Strength2
  474. else if (.@r <= 580) set .@b_socket03,4711; //Inteligence2
  475. else if (.@r <= 625) set .@b_socket03,4741; //Vitality2
  476. else if (.@r <= 670) set .@b_socket03,4721; //Dexterity2
  477. else if (.@r <= 700) set .@b_socket03,4731; //Agility2
  478. else if (.@r <= 800) set .@b_socket03,4751; //Luck2
  479. else if (.@r <= 860) set .@b_socket03,4795; //HP100
  480. else if (.@r <= 900) set .@b_socket03,4796; //HP200
  481. else if (.@r <= 920) set .@b_socket03,4797; //HP300
  482. else if (.@r <= 965) set .@b_socket03,4800; //SP50
  483. else set .@b_socket03,4801; //SP100
  484. set .@enchant, .@b_socket03;
  485. break;
  486. case 5:
  487. if (.@r <= 59) set .@a_socket03,4701; //Strength2
  488. else if (.@r <= 118) set .@a_socket03,4711; //Inteligence2
  489. else if (.@r <= 177) set .@a_socket03,4741; //Vitality2
  490. else if (.@r <= 236) set .@a_socket03,4721; //Dexterity2
  491. else if (.@r <= 295) set .@a_socket03,4731; //Agility2
  492. else if (.@r <= 354) set .@a_socket03,4751; //Luck2
  493. else if (.@r <= 413) set .@a_socket03,4795; //HP100
  494. else if (.@r <= 472) set .@a_socket03,4796; //HP200
  495. else if (.@r <= 530) set .@a_socket03,4797; //HP300
  496. else if (.@r <= 589) set .@a_socket03,4800; //SP50
  497. else if (.@r <= 648) set .@a_socket03,4801; //SP100
  498. else if (.@r <= 707) set .@a_socket03,4702; //Strength3
  499. else if (.@r <= 765) set .@a_socket03,4712; //Inteligence3
  500. else if (.@r <= 824) set .@a_socket03,4742; //Vitality3
  501. else if (.@r <= 883) set .@a_socket03,4722; //Dexterity3
  502. else if (.@r <= 942) set .@a_socket03,4732; //Agility3
  503. else set .@a_socket03,4752; //Luck3
  504. set .@enchant, .@a_socket03;
  505. break;
  506. }
  507. } else {
  508. mes "[Artisan Tene]";
  509. mes "An unknown error has occurred. Please contact customer service. *^_^*";
  510. close;
  511. }
  512. if (.@ko_type02 == 1) {
  513. set .@equip_card[2], .@equip_card[3];
  514. set .@equip_card[3], .@enchant;
  515. } else
  516. set .@equip_card[2], .@enchant;
  517. progressbar "ffff00",2;
  518. set Zeny, Zeny - 100000;
  519. // anti-hack
  520. if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@equip_refine))
  521. close;
  522. delequip .@part;
  523. // GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3]
  524. getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];
  525. mes "[Artisan Tene]";
  526. mes "^44B7BC" + getitemname(.@equip_id) + "^000000";
  527. mes "The equipment has been enchanted."; //custom translation
  528. close;
  529. }