enchan_upg.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. //===== rAthena Script =======================================
  2. //= Upgrade Weapon Enchants
  3. //===== By: ==================================================
  4. //= Skorm
  5. //===== Current Version: =====================================
  6. //= 1.1
  7. //===== Compatible With: =====================================
  8. //= rAthena Project
  9. //===== Description: =========================================
  10. //= [Official Conversion]
  11. //= Adds enchantments to Upgrade weapons.
  12. //===== Additional Comments: =================================
  13. //= 1.0 First version.
  14. //= 1.1 Standardizing, grammar and bug fixes. [Euphy]
  15. //============================================================
  16. // Main NPC :: 201105_luk_enc
  17. //============================================================
  18. prt_in,28,73,3 script Devil Enchant Master#prq 63,{
  19. disable_items;
  20. if (checkweight(1201,1) == 0) {
  21. mes "You are carrying too many items, please reduce it and come back again!";
  22. close;
  23. }
  24. if (MaxWeight - Weight < 10000) {
  25. mes "You are over the weight limit, please reduce it and come back again!";
  26. close;
  27. }
  28. mes "[Devil Enchant Master]";
  29. mes "Yes?";
  30. mes "You are looking for me?";
  31. next;
  32. switch(select("This is the first time seeing you!:I heard that you are the best!:Please initialize the enchant.")) {
  33. case 1:
  34. mes "[Devil Enchant Master]";
  35. mes "Ha ha ha~ Of course, I am not the kind of person that simply deals with people.";
  36. next;
  37. mes "[Devil Enchant Master]";
  38. mes "Including you! Even if you offer me plenty of money, I will not simply enchant for you!!";
  39. next;
  40. mes "[Devil Enchant Master]";
  41. mes "Have you seen my title? Very few people have this title for a reason!";
  42. next;
  43. mes "[Devil Enchant Master]";
  44. mes "I will only enchant if you bring an ^0000ffEnchant Book^000000 along!";
  45. next;
  46. mes "[Devil Enchant Master]";
  47. mes "Else, I will not enchant for you....";
  48. close;
  49. case 2:
  50. if (!countitem(6484)) {
  51. mes "[Devil Enchant Master]";
  52. mes "Are you listening to me? I will only do for you if you bring the Enchant Book!";
  53. close;
  54. }
  55. set .@select,1;
  56. break;
  57. case 3:
  58. mes "[Devil Enchant Master]";
  59. if (Zeny < 100000) {
  60. mes "Initializing will cost 100,000 zeny. It seems you do not have enough zeny...";
  61. close;
  62. }
  63. mes "Initializing will cost 100,000 zeny and confirming whether the weapon is enchanted!";
  64. next;
  65. if (select("Let me think about it.:Initialize it now!") == 1) {
  66. mes "[Devil Enchant Master]";
  67. mes "Come back after you have confirmed!";
  68. close;
  69. }
  70. set .@select,2;
  71. break;
  72. }
  73. set .@part, EQI_HAND_R;
  74. mes "[Devil Enchant Master]";
  75. if (!getequipisequiped(.@part)) {
  76. mes "Are you trying to remove the enchanted equipment?";
  77. close;
  78. }
  79. setarray .@equip_card[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3);
  80. if (!getequipisequiped(.@part)) {
  81. mes "It is dangerous to remove equipment during enchant process!";
  82. close;
  83. }
  84. set .@equip_id, getequipid(.@part);
  85. set .@item$, "|1292|1394|1491|1585|2015|13071|13115|16019|18112|21000|";
  86. if (!compare(.@item$,"|"+.@equip_id+"|")) {
  87. mes "I don't want to touch your equipment now!";
  88. close;
  89. }
  90. if (.@select == 1) {
  91. if (!countitem(6484)) {
  92. mes "Are you listening to me? I will only do for you if you bring the Enchant Book!";
  93. close;
  94. }
  95. mes "Which type of effect do you want to enchant?";
  96. next;
  97. switch(select("Let me think about it.:Physical Series:Magical Series")) {
  98. case 1:
  99. mes "[Devil Enchant Master]";
  100. mes "Come back again after you change your mind!";
  101. close;
  102. case 2:
  103. set .@enc_type,1;
  104. break;
  105. case 3:
  106. set .@enc_type,2;
  107. break;
  108. }
  109. mes "[Devil Enchant Master]";
  110. if (.@equip_card[3]) {
  111. mes "This equipment has been enchanted! You need to initialize first before you want to enchant it again.";
  112. close;
  113. }
  114. mes "The enchant process might fail, and ^ff0000it will reduce partial refine level^000000, but the slotted card and weapon will not be broken! Are you sure you want to continue?";
  115. next;
  116. if (select("Next time!:Start now!") == 1) {
  117. mes "[Devil Enchant Master]";
  118. mes "Come back again after you have decided!";
  119. close;
  120. }
  121. if (.@equip_card[3]) {
  122. mes "[Devil Enchant Master]";
  123. mes "It seems there's a problem, let me take a look.";
  124. close;
  125. }
  126. if (.@enc_type == 1) { // Physical Series
  127. set .@i, rand(1,1300);
  128. if (.@i < 51) set .@enchant,4734; //Agility5
  129. else if (.@i < 76) set .@enchant,4735; //Agility6
  130. else if (.@i < 88) set .@enchant,4736; //Agility7
  131. else if (.@i < 93) set .@enchant,4737; //Agility8
  132. else if (.@i < 95) set .@enchant,4738; //Agility9
  133. else if (.@i < 96) set .@enchant,4739; //Agility10
  134. else if (.@i < 146) set .@enchant,4724; //Dexterity5
  135. else if (.@i < 171) set .@enchant,4725; //Dexterity6
  136. else if (.@i < 183) set .@enchant,4726; //Dexterity7
  137. else if (.@i < 188) set .@enchant,4727; //Dexterity8
  138. else if (.@i < 190) set .@enchant,4728; //Dexterity9
  139. else if (.@i < 191) set .@enchant,4729; //Dexterity10
  140. else if (.@i < 291) set .@enchant,4704; //Strength5
  141. else if (.@i < 341) set .@enchant,4705; //Strength6
  142. else if (.@i < 366) set .@enchant,4706; //Strength7
  143. else if (.@i < 378) set .@enchant,4707; //Strength8
  144. else if (.@i < 383) set .@enchant,4708; //Strength9
  145. else if (.@i < 384) set .@enchant,4709; //Strength10
  146. else if (.@i < 434) set .@enchant,4754; //Luck5
  147. else if (.@i < 459) set .@enchant,4755; //Luck6
  148. else if (.@i < 471) set .@enchant,4756; //Luck7
  149. else if (.@i < 476) set .@enchant,4757; //Luck8
  150. else if (.@i < 478) set .@enchant,4758; //Luck9
  151. else if (.@i < 479) set .@enchant,4759; //Luck10
  152. else if (.@i < 679) set .@enchant,4744; //Vitality5
  153. else if (.@i < 779) set .@enchant,4745; //Vitality6
  154. else if (.@i < 829) set .@enchant,4746; //Vitality7
  155. else if (.@i < 854) set .@enchant,4747; //Vitality8
  156. else if (.@i < 866) set .@enchant,4748; //Vitality9
  157. else if (.@i < 867) set .@enchant,4749; //Vitality10
  158. else if (.@i < 967) set .@enchant,4808; //Fighting_Spirit4
  159. else if (.@i < 992) set .@enchant,4820; //Fighting_Spirit5
  160. else if (.@i < 1092) set .@enchant,4835; //Expert_Archer4
  161. else if (.@i < 1117) set .@enchant,4836; //Expert_Archer5
  162. else if (.@i < 1217) set .@enchant,4835; //Expert_Archer4
  163. else if (.@i < 1242) set .@enchant,4836; //Expert_Archer5
  164. else set .@enchant,0;
  165. } else if (.@enc_type == 2) { // Magical Series
  166. set .@i, rand(1,1200);
  167. if (.@i < 51) set .@enchant,4714; //Inteligence5
  168. else if (.@i < 76) set .@enchant,4715; //Inteligence6
  169. else if (.@i < 88) set .@enchant,4716; //Inteligence7
  170. else if (.@i < 93) set .@enchant,4717; //Inteligence8
  171. else if (.@i < 95) set .@enchant,4718; //Inteligence9
  172. else if (.@i < 96) set .@enchant,4719; //Inteligence10
  173. else if (.@i < 146) set .@enchant,4724; //Dexterity5
  174. else if (.@i < 171) set .@enchant,4725; //Dexterity6
  175. else if (.@i < 183) set .@enchant,4726; //Dexterity7
  176. else if (.@i < 188) set .@enchant,4727; //Dexterity8
  177. else if (.@i < 190) set .@enchant,4728; //Dexterity9
  178. else if (.@i < 191) set .@enchant,4729; //Dexterity10
  179. else if (.@i < 291) set .@enchant,4734; //Agility5
  180. else if (.@i < 341) set .@enchant,4735; //Agility6
  181. else if (.@i < 366) set .@enchant,4736; //Agility7
  182. else if (.@i < 378) set .@enchant,4737; //Agility8
  183. else if (.@i < 383) set .@enchant,4738; //Agility9
  184. else if (.@i < 384) set .@enchant,4739; //Agility10
  185. else if (.@i < 484) set .@enchant,4754; //Luck5
  186. else if (.@i < 534) set .@enchant,4755; //Luck6
  187. else if (.@i < 559) set .@enchant,4756; //Luck7
  188. else if (.@i < 571) set .@enchant,4757; //Luck8
  189. else if (.@i < 576) set .@enchant,4758; //Luck9
  190. else if (.@i < 577) set .@enchant,4759; //Luck10
  191. else if (.@i < 777) set .@enchant,4744; //Vitality5
  192. else if (.@i < 877) set .@enchant,4745; //Vitality6
  193. else if (.@i < 927) set .@enchant,4746; //Vitality7
  194. else if (.@i < 952) set .@enchant,4747; //Vitality8
  195. else if (.@i < 964) set .@enchant,4748; //Vitality9
  196. else if (.@i < 969) set .@enchant,4749; //Vitality10
  197. else if (.@i < 1069) set .@enchant,4812; //Spell4
  198. else if (.@i < 1094) set .@enchant,4826; //Spell5
  199. else if (.@i < 1119) set .@enchant,4761; //Matk2
  200. else if (.@i < 1124) set .@enchant,4806; //Matk3
  201. else set .@enchant,0;
  202. } else {
  203. mes "[Devil Enchant Master]";
  204. mes "Hmm! This item is having a problem, please check it again!";
  205. close;
  206. }
  207. mes "[Devil Enchant Master]";
  208. if (.@equip_card[3]) {
  209. mes "This item has been enchanted!";
  210. close;
  211. }
  212. if (!countitem(6484)) {
  213. mes "Are you listening to me? I will only do for you if you bring the Enchant Book!";
  214. close;
  215. }
  216. set .@equip_refine, getequiprefinerycnt(.@part);
  217. if (.@enchant == 0) {
  218. specialeffect EF_SHIELDCHARGE;
  219. mes "Oh! Unbelievable!! It failed!! Please come again!";
  220. set .@lost_refine, rand(0,.@equip_refine);
  221. set .@equip_refine, .@equip_refine - .@lost_refine;
  222. } else {
  223. specialeffect EF_REPAIRWEAPON;
  224. mes "The slot ^9900004^000000 has been enchanted!";
  225. }
  226. delitem 6484,1; //Enchant_Book
  227. // anti-hack
  228. if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) ||
  229. callfunc("F_IsEquipCardHack", .@part, .@equip_card[0], .@equip_card[1], .@equip_card[2], .@equip_card[3]))
  230. close;
  231. delequip .@part;
  232. // GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@enchant
  233. getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@enchant;
  234. if (.@lost_refine) {
  235. next;
  236. mes "[Devil Enchant Master]";
  237. mes "The failure has reduced the refine by "+callfunc("F_InsertPlural",.@lost_refine,"level")+"! Don't be depressed!";
  238. }
  239. close;
  240. } else if (.@select == 2) {
  241. if (Zeny < 100000) {
  242. mes "You need to bring some money to initialize!!";
  243. close;
  244. }
  245. if (.@equip_card[3] < 4700) { // Armor Enchant System
  246. mes "This item is not enchanted!";
  247. close;
  248. }
  249. if (!getequipisequiped(.@part)) {
  250. mes "Are you unequipping now?";
  251. close;
  252. }
  253. specialeffect EF_REPAIRWEAPON;
  254. mes "I initialized the enchant effects.";
  255. set Zeny, Zeny - 100000;
  256. // anti-hack
  257. if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) ||
  258. callfunc("F_IsEquipCardHack", .@part, .@equip_card[0], .@equip_card[1], .@equip_card[2], .@equip_card[3]))
  259. close;
  260. set .@equip_refine, getequiprefinerycnt(.@part);
  261. delequip .@part;
  262. // GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] 0
  263. getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],0;
  264. close;
  265. } else {
  266. mes "It seems you have chosen the wrong job??";
  267. close;
  268. }
  269. }