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