enchan_verus.txt 52 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415
  1. //===== rAthena Script =======================================
  2. //= Enchants and exchange NPCs.
  3. //===== Description: =========================================
  4. //= [Official Conversion]
  5. //= Exchangers and enchanters NPCs on Verus.
  6. //===== Additional Comments: =================================
  7. //= 1.0 Added NPCs coming along Charleston instance. [Capuche]
  8. //= 1.1 Added Excellion Wing/Suit trader and enchant NPCs. [Capuche]
  9. //============================================================
  10. // Charleston
  11. verus04,69,108,5 script Mass Charleston#1 4_F_CHARLESTON01,{
  12. if (!checkweight(1201,1) || (MaxWeight - Weight) < 1000) {
  13. mes "^ff0000You have carried too many items, please reduce it and come back later.^000000";
  14. close;
  15. }
  16. cutin "dalle01.bmp",2;
  17. if (countitem(6752) < 10) {
  18. if (isbegin_quest(13186) == 0) {
  19. mes "[Mass Charleston]";
  20. mes "I don't know where you can find Charleston Components,";
  21. next;
  22. mes "[Mass Charleston]";
  23. mes "but if you have 10 or more, then I can exchange them with factory products.";
  24. close3;
  25. }
  26. mes "[Mass Charleston]";
  27. mes "A series of trials and errors was made before the mass version of Charleston was developed.";
  28. next;
  29. mes "[Mass Charleston]";
  30. mes "I don't mean to depreciate myself, but mass versions are mass versions; they're cost-effective and practical, but never as good as the high-end versions.";
  31. next;
  32. mes "[Mass Charleston]";
  33. mes "Some Charlestons, especially in the development stage, are equipped with more advanced features. To study them, I need more components.";
  34. next;
  35. mes "[Mass Charleston]";
  36. mes "If you have 10 or more Charleston Components, then I can exchange them with factory products.";
  37. close3;
  38. }
  39. mes "[Mass Charleston]";
  40. mes "You got some nice parts on you! Would you like to exchange it with the goods produced in the factory?";
  41. next;
  42. mes "[Mass Charleston]";
  43. mes "Is a collection of Charleston advantages in a commodity, but can not be sold separately, IF bring good parts can be exchanged for you.";
  44. next;
  45. .@s = select( "Quit.", "Exchange Reinforced parts", "Exchange Supplementary device" ) - 2;
  46. if (.@s == -1) {
  47. mes "[Mass Charleston]";
  48. mes "I'll see you next time!";
  49. close3;
  50. }
  51. setarray .@job_aft$[0], "Reinforced parts", "Supplementary device";
  52. mes "[Mass Charleston]";
  53. mes "Which part of " + .@job_aft$[.@s] + " do you want to select?";
  54. next;
  55. switch(.@s) {
  56. case 0:
  57. setarray .@item[0],
  58. 20733, // Upgrade_Part_Engine
  59. 22044, // Upgrade_Part_Booster
  60. 2996; // Upgrade_Part_Gun_Barrel
  61. break;
  62. case 1:
  63. setarray .@item[0],
  64. 20732, // Supplement_Part_Con
  65. 22043, // Supplement_Part_Agi
  66. 2995; // Supplement_Part_Dex
  67. break;
  68. default:
  69. mes "[Mass Charleston]";
  70. mes "I'll see you next time!";
  71. close;
  72. }
  73. // custom translation from here
  74. .@index = select( "Quit.", getitemname(.@item[0]) + " (garment)", getitemname(.@item[1]) + " (Shoes)", getitemname(.@item[2]) + " (Accessory)" ) - 2;
  75. if (.@index == -1) {
  76. mes "[Mass Charleston]";
  77. mes "I'll see you next time!";
  78. close3;
  79. }
  80. if (countitem(6752) < 10) {
  81. mes "[Mass Charleston]";
  82. mes "If you find enough Charleston parts, can you come to me again?";
  83. close3;
  84. }
  85. delitem 6752,10; // Charleston_Parts
  86. getitem .@item[.@index],1;
  87. mes "[Mass Charleston]";
  88. mes "Exchanged 10 " + getitemname(6752) + " for " + .@job_aft$[.@s] + ". If you find more part, come to me again!";
  89. close3;
  90. }
  91. verus04,71,106,5 script Mass Charleston#2 4_F_CHARLESTON01,{
  92. disable_items;
  93. if (!checkweight(1201,1)) {
  94. mes "You have too many types of items. Lighten your inventory first.";
  95. close;
  96. }
  97. if ((MaxWeight - Weight) < 10000) {
  98. mes "The items in your inventory are weighing you down. Lighten your weight first.";
  99. close;
  100. }
  101. cutin "dalle01.bmp",2;
  102. mes "[Mass Charleston]";
  103. mes "I can upgrade the Charleston Factory products. Let me know if you're interested.";
  104. next;
  105. switch( select( "More information.", "Add abilities to your product.", "Reset product." ) ) {
  106. case 1:
  107. mes "[Mass Charleston]";
  108. mes "Each Upgrade/resetting attempt costs 100,000 zeny and 1 Charleston Component.";
  109. next;
  110. mes "[Mass Charleston]";
  111. mes "I also provide a wider selection of Upgrade options for Charleston Equipment at ^ff0000+9^000000 or above.";
  112. next;
  113. mes "[Mass Charleston]";
  114. mes "Rest assured, my Upgrade technology does not involve accidental damage on the item's Upgrade level or equipped cards.";
  115. close3;
  116. case 2:
  117. .@type_action = 1;
  118. .@string$ = "Upgrading";
  119. break;
  120. case 3:
  121. .@type_action = 2;
  122. .@string$ = "Resetting";
  123. break;
  124. }
  125. if (Zeny < 100000 || countitem(6752) < 1) {
  126. mes "[Mass Charleston]";
  127. mes "" + .@string$ + " a Charleston product costs 1 Charleston Component and 100,000 zeny. Please know that all the expenses go into " + strtolower(.@string$) + " your product.";
  128. close3;
  129. }
  130. mes "[Mass Charleston]";
  131. mes "Please make sure you're equipped with the Equipment you want to upgrade.";
  132. next;
  133. .@s = select( "Let me go equip it.", "Footgear", "Garment", "Clothes", "Accessory" ) - 2;
  134. if (.@s == -1) {
  135. mes "[Mass Charleston]";
  136. mes "Sure, please come back after you do.";
  137. close3;
  138. }
  139. if (Zeny < 100000 || countitem(6752) < 1) {
  140. mes "[Mass Charleston]";
  141. mes "Things needed for commodity upgrades seem inadequate!";
  142. close3;
  143. }
  144. setarray .@eq_num[0], EQI_SHOES, EQI_GARMENT, EQI_ARMOR, EQI_ACC_R;
  145. .@part = .@eq_num[.@s];
  146. .@item_id = getequipid(.@part);
  147. .@refine = getequiprefinerycnt(.@part);
  148. setarray .@card_saved[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3);
  149. copyarray .@card[0], .@card_saved[0], 4;
  150. switch(.@item_id) {
  151. case -1:
  152. mes "[Mass Charleston]";
  153. mes "Because it is a customized upgrade be sure to wear equipment.";
  154. close3;
  155. case 15111: // Upgrade_Part_Plate
  156. .@en_type = 3;
  157. .@en_type_9 = 1;
  158. .@max_slot = 1;
  159. break;
  160. case 20733: // Upgrade_Part_Engine
  161. .@en_type = 4;
  162. .@en_type_9 = 5;
  163. .@max_slot = 1;
  164. break;
  165. case 22044: // Upgrade_Part_Booster
  166. .@en_type = 6;
  167. .@en_type_9 = 7;
  168. .@max_slot = 1;
  169. break;
  170. case 2996: // Upgrade_Part_Gun_Barrel
  171. .@en_type = 8;
  172. .@en_type_9 = 8;
  173. .@max_slot = 2;
  174. break;
  175. case 15110: // Supplement_Part_Str
  176. .@en_type = 3;
  177. .@en_type_9 = 2;
  178. .@max_slot = 1;
  179. break;
  180. case 20732: // Supplement_Part_Con
  181. .@en_type = 4;
  182. .@en_type_9 = 5;
  183. .@max_slot = 1;
  184. break;
  185. case 22043: // Supplement_Part_Agi
  186. .@en_type = 6;
  187. .@en_type_9 = 7;
  188. .@max_slot = 1;
  189. break;
  190. case 2995: // Supplement_Part_Dex
  191. .@en_type = 8;
  192. .@en_type_9 = 8;
  193. .@max_slot = 2;
  194. break;
  195. default:
  196. mes "[Mass Charleston]";
  197. mes "^990099" + getequipname(.@part) + "^000000??";
  198. mes "I'm not interested in this Equipment.";
  199. close3;
  200. }
  201. switch(.@type_action) {
  202. case 1: // Add abilities
  203. if (.@refine >= 9) {
  204. setarray .@menu_en_type$[1],
  205. "Attack enhancement",
  206. "Defense enhancement",
  207. "Acceleration enhancements",
  208. "Garment upgrade",
  209. "Advanced Garment upgrade",
  210. "Shoes upgrade",
  211. "Advanced Shoes upgrade",
  212. "Accessory upgrade";
  213. if (.@menu_en_type$[.@en_type] == "" || .@menu_en_type$[.@en_type_9] == "") {
  214. mes "[Mass Charleston]";
  215. mes "Something's not right!";
  216. close3;
  217. }
  218. mes "[Mass Charleston]";
  219. mes "This is a considerable level of enhanced equipment, this type can give enhanced expansion performance, choose from the following series of desirable to strengthen it!";
  220. next;
  221. if (select( .@menu_en_type$[.@en_type], .@menu_en_type$[.@en_type_9] ) == 2)
  222. .@en_type = .@en_type_9;
  223. }
  224. if (.@card[3] < 1 && .@max_slot < 4) {
  225. .@slot = 4;
  226. mes "[Mass Charleston]";
  227. mes "I'll be Upgrading the first ability. The existing Upgrade level and cards will not be damaged. Do you want to continue?";
  228. next;
  229. if (select( "I'll come back later.", "Continue." ) == 1) {
  230. mes "[Mass Charleston]";
  231. mes "No problem. Come back if you change your mind.";
  232. close3;
  233. }
  234. }
  235. else if (.@card[2] < 1 && .@max_slot < 3) {
  236. .@slot = 3;
  237. mes "[Mass Charleston]";
  238. mes "I'll be Upgrading the second ability. The existing Upgrade level and cards will not be damaged.";
  239. next;
  240. mes "[Mass Charleston]";
  241. mes "Though there is a slight chance of failure, in which case the existing Upgrade level will be reset. What would you like to do?";
  242. next;
  243. if (select( "I'll come back later.", "Continue." ) == 1) {
  244. mes "[Mass Charleston]";
  245. mes "No problem. Come back if you change your mind.";
  246. close3;
  247. }
  248. }
  249. else if (.@card[1] < 1 && .@max_slot < 2) {
  250. .@slot = 2;
  251. mes "[Mass Charleston]";
  252. mes "I'll be Upgrading the 3rd ability. This highest Upgrade stage incurs a chance of ^990000destroying the Equipment or resetting its existing Upgrade level.^000000 Do you want to continue?";
  253. next;
  254. if (select( "I'll come back later.", "Continue." ) == 1) {
  255. mes "[Mass Charleston]";
  256. mes "No problem. Come back if you change your mind.";
  257. close3;
  258. }
  259. }
  260. else if (.@card[0] < 1 && .@max_slot < 1)
  261. .@slot = 1;
  262. else {
  263. cutin "dalle02.bmp",2;
  264. mes "[Mass Charleston]";
  265. mes "This Equipment is Upgraded to the maximum level. Please bring something else.";
  266. close3;
  267. }
  268. switch(.@en_type) {
  269. case 1:
  270. if (.@slot == 4) {
  271. .@en_brk1 = 1;
  272. .@en_brk2 = 100;
  273. }
  274. else if (.@slot == 3) {
  275. .@en_brk1 = 101;
  276. .@en_brk2 = 200;
  277. }
  278. else if (.@slot == 2) {
  279. .@en_brk1 = 101;
  280. .@en_brk2 = 300;
  281. }
  282. else {
  283. mes "[Mass Charleston]";
  284. mes "An unknown error has occurred.";
  285. close3;
  286. }
  287. .@r = rand( .@en_brk1, .@en_brk2 );
  288. if (.@r < 11) .@en_name = 4700; // Strength1
  289. else if (.@r < 21) .@en_name = 4720; // Dexterity1
  290. else if (.@r < 36) .@en_name = 4832; // Expert_Archer1
  291. else if (.@r < 51) .@en_name = 4811; // Fighting_Spirit1
  292. else if (.@r < 61) .@en_name = 4701; // Strength2
  293. else if (.@r < 71) .@en_name = 4721; // Dexterity2
  294. else if (.@r < 86) .@en_name = 4833; // Expert_Archer2
  295. else if (.@r < 101) .@en_name = 4810; // Fighting_Spirit2
  296. else if (.@r < 111) .@en_name = 4700; // Strength1
  297. else if (.@r < 121) .@en_name = 4720; // Dexterity1
  298. else if (.@r < 132) .@en_name = 4832; // Expert_Archer1
  299. else if (.@r < 143) .@en_name = 4811; // Fighting_Spirit1
  300. else if (.@r < 151) .@en_name = 4701; // Strength2
  301. else if (.@r < 159) .@en_name = 4721; // Dexterity2
  302. else if (.@r < 167) .@en_name = 4833; // Expert_Archer2
  303. else if (.@r < 175) .@en_name = 4810; // Fighting_Spirit2
  304. else if (.@r < 182) .@en_name = 4702; // Strength3
  305. else if (.@r < 189) .@en_name = 4722; // Dexterity3
  306. else if (.@r < 190) .@en_name = 4834; // Expert_Archer3
  307. else if (.@r < 191) .@en_name = 4809; // Fighting_Spirit3
  308. else if (.@r < 201) .@en_name = 0;
  309. else if (.@r < 207) .@en_name = 4700; // Strength1
  310. else if (.@r < 213) .@en_name = 4720; // Dexterity1
  311. else if (.@r < 221) .@en_name = 4832; // Expert_Archer1
  312. else if (.@r < 229) .@en_name = 4811; // Fighting_Spirit1
  313. else if (.@r < 238) .@en_name = 4701; // Strength2
  314. else if (.@r < 247) .@en_name = 4721; // Dexterity2
  315. else if (.@r < 260) .@en_name = 4810; // Fighting_Spirit2
  316. else if (.@r < 273) .@en_name = 4833; // Expert_Archer2
  317. else if (.@r < 280) .@en_name = 4702; // Strength3
  318. else if (.@r < 287) .@en_name = 4722; // Dexterity3
  319. else if (.@r < 289) .@en_name = 4834; // Expert_Archer3
  320. else if (.@r < 291) .@en_name = 4809; // Fighting_Spirit3
  321. else if (.@r < 296) .@en_name = 0;
  322. else if (.@r < 301) .@en_name = 9;
  323. else .@en_name = 0;
  324. break;
  325. case 2:
  326. if (.@slot == 4) {
  327. .@en_brk1 = 1;
  328. .@en_brk2 = 100;
  329. }
  330. else if (.@slot == 3) {
  331. .@en_brk1 = 101;
  332. .@en_brk2 = 200;
  333. }
  334. else if (.@slot == 2) {
  335. .@en_brk1 = 101;
  336. .@en_brk2 = 310;
  337. }
  338. else {
  339. mes "[Mass Charleston]";
  340. mes "An unknown error has occurred.";
  341. close3;
  342. }
  343. .@r = rand( .@en_brk1, .@en_brk2 );
  344. if (.@r < 11) .@en_name = 4740; // Vitality1
  345. else if (.@r < 21) .@en_name = 4791; // Def3
  346. else if (.@r < 36) .@en_name = 4933; // Tolerance_Not1
  347. else if (.@r < 51) .@en_name = 4861; // MHP1
  348. else if (.@r < 61) .@en_name = 4741; // Vitality2
  349. else if (.@r < 71) .@en_name = 4792; // Def6
  350. else if (.@r < 86) .@en_name = 4934; // Tolerance_Not2
  351. else if (.@r < 101) .@en_name = 4862; // MHP2
  352. else if (.@r < 111) .@en_name = 4740; // Vitality1
  353. else if (.@r < 121) .@en_name = 4791; // Def3
  354. else if (.@r < 132) .@en_name = 4933; // Tolerance_Not1
  355. else if (.@r < 143) .@en_name = 4861; // MHP1
  356. else if (.@r < 151) .@en_name = 4741; // Vitality2
  357. else if (.@r < 159) .@en_name = 4792; // Def6
  358. else if (.@r < 167) .@en_name = 4934; // Tolerance_Not2
  359. else if (.@r < 173) .@en_name = 4862; // MHP2
  360. else if (.@r < 179) .@en_name = 4742; // Vitality3
  361. else if (.@r < 185) .@en_name = 4793; // Def9
  362. else if (.@r < 188) .@en_name = 4935; // Tolerance_Not3
  363. else if (.@r < 191) .@en_name = 4867; // MHP3
  364. else if (.@r < 201) .@en_name = 0;
  365. else if (.@r < 207) .@en_name = 4740; // Vitality1
  366. else if (.@r < 213) .@en_name = 4791; // Def3
  367. else if (.@r < 221) .@en_name = 4933; // Tolerance_Not1
  368. else if (.@r < 229) .@en_name = 4861; // MHP1
  369. else if (.@r < 238) .@en_name = 4741; // Vitality2
  370. else if (.@r < 247) .@en_name = 4792; // Def6
  371. else if (.@r < 258) .@en_name = 4934; // Tolerance_Not2
  372. else if (.@r < 269) .@en_name = 4862; // MHP2
  373. else if (.@r < 276) .@en_name = 4742; // Vitality3
  374. else if (.@r < 283) .@en_name = 4793; // Def9
  375. else if (.@r < 287) .@en_name = 4867; // MHP3
  376. else if (.@r < 291) .@en_name = 4935; // Tolerance_Not3
  377. else if (.@r < 296) .@en_name = 0;
  378. else if (.@r < 301) .@en_name = 9;
  379. else .@en_name = 0;
  380. break;
  381. case 3:
  382. if (.@slot == 4) {
  383. .@en_brk1 = 1;
  384. .@en_brk2 = 100;
  385. }
  386. else if (.@slot == 3) {
  387. .@en_brk1 = 101;
  388. .@en_brk2 = 200;
  389. }
  390. else if (.@slot == 2) {
  391. .@en_brk1 = 101;
  392. .@en_brk2 = 310;
  393. }
  394. else {
  395. mes "[Mass Charleston]";
  396. mes "An unknown error has occurred.";
  397. close3;
  398. }
  399. .@r = rand( .@en_brk1, .@en_brk2 );
  400. if (.@r < 11) .@en_name = 4860; // Evasion3
  401. else if (.@r < 21) .@en_name = 4750; // Luck1
  402. else if (.@r < 36) .@en_name = 4869; // Attack_Delay_1
  403. else if (.@r < 51) .@en_name = 4730; // Agility1
  404. else if (.@r < 61) .@en_name = 4762; // Evasion6
  405. else if (.@r < 71) .@en_name = 4751; // Luck2
  406. else if (.@r < 86) .@en_name = 4872; // Attack_Delay_2
  407. else if (.@r < 101) .@en_name = 4731; // Agility2
  408. else if (.@r < 111) .@en_name = 4860; // Evasion3
  409. else if (.@r < 121) .@en_name = 4750; // Luck1
  410. else if (.@r < 132) .@en_name = 4869; // Attack_Delay_1
  411. else if (.@r < 143) .@en_name = 4730; // Agility1
  412. else if (.@r < 151) .@en_name = 4762; // Evasion6
  413. else if (.@r < 159) .@en_name = 4751; // Luck2
  414. else if (.@r < 166) .@en_name = 4872; // Attack_Delay_2
  415. else if (.@r < 173) .@en_name = 4731; // Agility2
  416. else if (.@r < 180) .@en_name = 4763; // Evasion12
  417. else if (.@r < 187) .@en_name = 4752; // Luck3
  418. else if (.@r < 191) .@en_name = 4732; // Agility3
  419. else if (.@r < 201) .@en_name = 0;
  420. else if (.@r < 207) .@en_name = 4860; // Evasion3
  421. else if (.@r < 213) .@en_name = 4750; // Luck1
  422. else if (.@r < 221) .@en_name = 4869; // Attack_Delay_1
  423. else if (.@r < 229) .@en_name = 4730; // Agility1
  424. else if (.@r < 239) .@en_name = 4762; // Evasion6
  425. else if (.@r < 249) .@en_name = 4751; // Luck2
  426. else if (.@r < 261) .@en_name = 4872; // Attack_Delay_2
  427. else if (.@r < 273) .@en_name = 4731; // Agility2
  428. else if (.@r < 280) .@en_name = 4763; // Evasion12
  429. else if (.@r < 287) .@en_name = 4752; // Luck3
  430. else if (.@r < 291) .@en_name = 4732; // Agility3
  431. else if (.@r < 296) .@en_name = 0;
  432. else if (.@r < 301) .@en_name = 9;
  433. else .@en_name = 0;
  434. break;
  435. case 4:
  436. if (.@slot == 4) {
  437. .@en_brk1 = 1;
  438. .@en_brk2 = 100;
  439. }
  440. else if (.@slot == 3) {
  441. .@en_brk1 = 101;
  442. .@en_brk2 = 200;
  443. }
  444. else if (.@slot == 2) {
  445. .@en_brk1 = 101;
  446. .@en_brk2 = 310;
  447. }
  448. else {
  449. mes "[Mass Charleston]";
  450. mes "An unknown error has occurred.";
  451. close3;
  452. }
  453. .@r = rand( .@en_brk1, .@en_brk2 );
  454. if (.@r < 8) .@en_name = 4700; // Strength1
  455. else if (.@r < 17) .@en_name = 4701; // Strength2
  456. else if (.@r < 24) .@en_name = 4720; // Dexterity1
  457. else if (.@r < 33) .@en_name = 4721; // Dexterity2
  458. else if (.@r < 40) .@en_name = 4730; // Agility1
  459. else if (.@r < 47) .@en_name = 4731; // Agility2
  460. else if (.@r < 54) .@en_name = 4740; // Vitality1
  461. else if (.@r < 63) .@en_name = 4741; // Vitality2
  462. else if (.@r < 69) .@en_name = 4750; // Luck1
  463. else if (.@r < 77) .@en_name = 4751; // Luck2
  464. else if (.@r < 83) .@en_name = 4710; // Inteligence1
  465. else if (.@r < 91) .@en_name = 4711; // Inteligence2
  466. else if (.@r < 101) .@en_name = 4832; // Expert_Archer1
  467. else if (.@r < 111) .@en_name = 4700; // Strength1
  468. else if (.@r < 121) .@en_name = 4701; // Strength2
  469. else if (.@r < 131) .@en_name = 4720; // Dexterity1
  470. else if (.@r < 141) .@en_name = 4721; // Dexterity2
  471. else if (.@r < 149) .@en_name = 4730; // Agility1
  472. else if (.@r < 158) .@en_name = 4731; // Agility2
  473. else if (.@r < 164) .@en_name = 4740; // Vitality1
  474. else if (.@r < 170) .@en_name = 4741; // Vitality2
  475. else if (.@r < 177) .@en_name = 4750; // Luck1
  476. else if (.@r < 184) .@en_name = 4751; // Luck2
  477. else if (.@r < 187) .@en_name = 4710; // Inteligence1
  478. else if (.@r < 190) .@en_name = 4711; // Inteligence2
  479. else if (.@r < 192) .@en_name = 4832; // Expert_Archer1
  480. else if (.@r < 201) .@en_name = 0;
  481. else if (.@r < 207) .@en_name = 4700; // Strength1
  482. else if (.@r < 213) .@en_name = 4701; // Strength2
  483. else if (.@r < 220) .@en_name = 4720; // Dexterity1
  484. else if (.@r < 227) .@en_name = 4721; // Dexterity2
  485. else if (.@r < 237) .@en_name = 4730; // Agility1
  486. else if (.@r < 247) .@en_name = 4731; // Agility2
  487. else if (.@r < 257) .@en_name = 4740; // Vitality1
  488. else if (.@r < 267) .@en_name = 4741; // Vitality2
  489. else if (.@r < 271) .@en_name = 4750; // Luck1
  490. else if (.@r < 276) .@en_name = 4751; // Luck2
  491. else if (.@r < 281) .@en_name = 4710; // Inteligence1
  492. else if (.@r < 286) .@en_name = 4711; // Inteligence2
  493. else if (.@r < 291) .@en_name = 4832; // Expert_Archer1
  494. else if (.@r < 296) .@en_name = 0;
  495. else if (.@r < 301) .@en_name = 9;
  496. else .@en_name = 0;
  497. break;
  498. case 5:
  499. if (.@slot == 4) {
  500. .@en_brk1 = 1;
  501. .@en_brk2 = 100;
  502. }
  503. else if (.@slot == 3) {
  504. .@en_brk1 = 101;
  505. .@en_brk2 = 200;
  506. }
  507. else if (.@slot == 2) {
  508. .@en_brk1 = 101;
  509. .@en_brk2 = 310;
  510. }
  511. else {
  512. mes "[Mass Charleston]";
  513. mes "An unknown error has occurred.";
  514. close3;
  515. }
  516. .@r = rand( .@en_brk1, .@en_brk2 );
  517. if (.@r < 9) .@en_name = 4701; // Strength2
  518. else if (.@r < 16) .@en_name = 4702; // Strength3
  519. else if (.@r < 25) .@en_name = 4721; // Dexterity2
  520. else if (.@r < 32) .@en_name = 4722; // Dexterity3
  521. else if (.@r < 41) .@en_name = 4731; // Agility2
  522. else if (.@r < 46) .@en_name = 4732; // Agility3
  523. else if (.@r < 55) .@en_name = 4741; // Vitality2
  524. else if (.@r < 62) .@en_name = 4742; // Vitality3
  525. else if (.@r < 70) .@en_name = 4751; // Luck2
  526. else if (.@r < 76) .@en_name = 4752; // Luck3
  527. else if (.@r < 84) .@en_name = 4711; // Inteligence2
  528. else if (.@r < 90) .@en_name = 4712; // Inteligence3
  529. else if (.@r < 95) .@en_name = 4832; // Expert_Archer1
  530. else if (.@r < 101) .@en_name = 4833; // Expert_Archer2
  531. else if (.@r < 111) .@en_name = 4701; // Strength2
  532. else if (.@r < 121) .@en_name = 4702; // Strength3
  533. else if (.@r < 131) .@en_name = 4721; // Dexterity2
  534. else if (.@r < 141) .@en_name = 4722; // Dexterity3
  535. else if (.@r < 149) .@en_name = 4731; // Agility2
  536. else if (.@r < 157) .@en_name = 4732; // Agility3
  537. else if (.@r < 163) .@en_name = 4741; // Vitality2
  538. else if (.@r < 169) .@en_name = 4742; // Vitality3
  539. else if (.@r < 176) .@en_name = 4751; // Luck2
  540. else if (.@r < 183) .@en_name = 4752; // Luck3
  541. else if (.@r < 185) .@en_name = 4711; // Inteligence2
  542. else if (.@r < 187) .@en_name = 4712; // Inteligence3
  543. else if (.@r < 189) .@en_name = 4833; // Expert_Archer2
  544. else if (.@r < 191) .@en_name = 4834; // Expert_Archer3
  545. else if (.@r < 201) .@en_name = 0;
  546. else if (.@r < 207) .@en_name = 4701; // Strength2
  547. else if (.@r < 213) .@en_name = 4702; // Strength3
  548. else if (.@r < 220) .@en_name = 4721; // Dexterity2
  549. else if (.@r < 227) .@en_name = 4722; // Dexterity3
  550. else if (.@r < 237) .@en_name = 4731; // Agility2
  551. else if (.@r < 247) .@en_name = 4732; // Agility3
  552. else if (.@r < 257) .@en_name = 4741; // Vitality2
  553. else if (.@r < 261) .@en_name = 4742; // Vitality3
  554. else if (.@r < 266) .@en_name = 4751; // Luck2
  555. else if (.@r < 271) .@en_name = 4752; // Luck3
  556. else if (.@r < 276) .@en_name = 4711; // Inteligence2
  557. else if (.@r < 281) .@en_name = 4712; // Inteligence3
  558. else if (.@r < 286) .@en_name = 4832; // Expert_Archer1
  559. else if (.@r < 291) .@en_name = 4833; // Expert_Archer2
  560. else if (.@r < 296) .@en_name = 0;
  561. else if (.@r < 301) .@en_name = 9;
  562. else .@en_name = 0;
  563. break;
  564. case 6:
  565. if (.@slot == 4) {
  566. .@en_brk1 = 1;
  567. .@en_brk2 = 100;
  568. }
  569. else if (.@slot == 3) {
  570. .@en_brk1 = 101;
  571. .@en_brk2 = 200;
  572. }
  573. else if (.@slot == 2) {
  574. .@en_brk1 = 101;
  575. .@en_brk2 = 310;
  576. }
  577. else {
  578. mes "[Mass Charleston]";
  579. mes "An unknown error has occurred.";
  580. close3;
  581. }
  582. .@r = rand( .@en_brk1, .@en_brk2 );
  583. if (.@r < 11) .@en_name = 4700; // Strength1
  584. else if (.@r < 21) .@en_name = 4701; // Strength2
  585. else if (.@r < 31) .@en_name = 4720; // Dexterity1
  586. else if (.@r < 41) .@en_name = 4721; // Dexterity2
  587. else if (.@r < 51) .@en_name = 4730; // Agility1
  588. else if (.@r < 61) .@en_name = 4731; // Agility2
  589. else if (.@r < 71) .@en_name = 4740; // Vitality1
  590. else if (.@r < 81) .@en_name = 4741; // Vitality2
  591. else if (.@r < 91) .@en_name = 4869; // Attack_Delay_1
  592. else if (.@r < 101) .@en_name = 4815; // Spell1
  593. else if (.@r < 111) .@en_name = 4700; // Strength1
  594. else if (.@r < 121) .@en_name = 4701; // Strength2
  595. else if (.@r < 132) .@en_name = 4720; // Dexterity1
  596. else if (.@r < 143) .@en_name = 4721; // Dexterity2
  597. else if (.@r < 151) .@en_name = 4730; // Agility1
  598. else if (.@r < 159) .@en_name = 4731; // Agility2
  599. else if (.@r < 169) .@en_name = 4740; // Vitality1
  600. else if (.@r < 179) .@en_name = 4741; // Vitality2
  601. else if (.@r < 185) .@en_name = 4869; // Attack_Delay_1
  602. else if (.@r < 191) .@en_name = 4815; // Spell1
  603. else if (.@r < 201) .@en_name = 0;
  604. else if (.@r < 209) .@en_name = 4700; // Strength1
  605. else if (.@r < 217) .@en_name = 4701; // Strength2
  606. else if (.@r < 225) .@en_name = 4720; // Dexterity1
  607. else if (.@r < 233) .@en_name = 4721; // Dexterity2
  608. else if (.@r < 244) .@en_name = 4730; // Agility1
  609. else if (.@r < 255) .@en_name = 4731; // Agility2
  610. else if (.@r < 265) .@en_name = 4740; // Vitality1
  611. else if (.@r < 275) .@en_name = 4741; // Vitality2
  612. else if (.@r < 283) .@en_name = 4869; // Attack_Delay_1
  613. else if (.@r < 291) .@en_name = 4815; // Spell1
  614. else if (.@r < 296) .@en_name = 0;
  615. else if (.@r < 301) .@en_name = 9;
  616. else .@en_name = 0;
  617. break;
  618. case 7:
  619. if (.@slot == 4) {
  620. .@en_brk1 = 1;
  621. .@en_brk2 = 100;
  622. }
  623. else if (.@slot == 3) {
  624. .@en_brk1 = 101;
  625. .@en_brk2 = 200;
  626. }
  627. else if (.@slot == 2) {
  628. .@en_brk1 = 101;
  629. .@en_brk2 = 310;
  630. }
  631. else {
  632. mes "[Mass Charleston]";
  633. mes "An unknown error has occurred.";
  634. close3;
  635. }
  636. .@r = rand( .@en_brk1, .@en_brk2 );
  637. if (.@r < 11) .@en_name = 4702; // Strength3
  638. else if (.@r < 21) .@en_name = 4701; // Strength2
  639. else if (.@r < 31) .@en_name = 4722; // Dexterity3
  640. else if (.@r < 41) .@en_name = 4721; // Dexterity2
  641. else if (.@r < 51) .@en_name = 4732; // Agility3
  642. else if (.@r < 61) .@en_name = 4731; // Agility2
  643. else if (.@r < 71) .@en_name = 4742; // Vitality3
  644. else if (.@r < 81) .@en_name = 4741; // Vitality2
  645. else if (.@r < 86) .@en_name = 4869; // Attack_Delay_1
  646. else if (.@r < 91) .@en_name = 4872; // Attack_Delay_2
  647. else if (.@r < 96) .@en_name = 4815; // Spell1
  648. else if (.@r < 101) .@en_name = 4814; // Spell2
  649. else if (.@r < 111) .@en_name = 4702; // Strength3
  650. else if (.@r < 121) .@en_name = 4701; // Strength2
  651. else if (.@r < 132) .@en_name = 4722; // Dexterity3
  652. else if (.@r < 143) .@en_name = 4721; // Dexterity2
  653. else if (.@r < 151) .@en_name = 4732; // Agility3
  654. else if (.@r < 159) .@en_name = 4731; // Agility2
  655. else if (.@r < 169) .@en_name = 4742; // Vitality3
  656. else if (.@r < 179) .@en_name = 4741; // Vitality2
  657. else if (.@r < 182) .@en_name = 4869; // Attack_Delay_1
  658. else if (.@r < 185) .@en_name = 4815; // Spell1
  659. else if (.@r < 188) .@en_name = 4872; // Attack_Delay_2
  660. else if (.@r < 191) .@en_name = 4814; // Spell2
  661. else if (.@r < 201) .@en_name = 0;
  662. else if (.@r < 209) .@en_name = 4702; // Strength3
  663. else if (.@r < 217) .@en_name = 4701; // Strength2
  664. else if (.@r < 225) .@en_name = 4722; // Dexterity3
  665. else if (.@r < 233) .@en_name = 4721; // Dexterity2
  666. else if (.@r < 244) .@en_name = 4732; // Agility3
  667. else if (.@r < 255) .@en_name = 4731; // Agility2
  668. else if (.@r < 265) .@en_name = 4742; // Vitality3
  669. else if (.@r < 275) .@en_name = 4741; // Vitality2
  670. else if (.@r < 279) .@en_name = 4869; // Attack_Delay_1
  671. else if (.@r < 283) .@en_name = 4815; // Spell1
  672. else if (.@r < 287) .@en_name = 4872; // Attack_Delay_2
  673. else if (.@r < 291) .@en_name = 4814; // Spell2
  674. else if (.@r < 296) .@en_name = 0;
  675. else if (.@r < 301) .@en_name = 9;
  676. else .@en_name = 0;
  677. break;
  678. case 8:
  679. if (.@slot == 4) {
  680. .@en_brk1 = 1;
  681. .@en_brk2 = 100;
  682. }
  683. else if (.@slot == 3) {
  684. .@en_brk1 = 1;
  685. .@en_brk2 = 111;
  686. }
  687. else if (.@slot == 2) {
  688. .@en_brk1 = 1;
  689. .@en_brk2 = 111;
  690. }
  691. else {
  692. mes "[Mass Charleston]";
  693. mes "An unknown error has occurred.";
  694. close3;
  695. }
  696. .@r = rand( .@en_brk1, .@en_brk2 );
  697. if (.@r < 11) .@en_name = 4700; // Strength1
  698. else if (.@r < 21) .@en_name = 4701; // Strength2
  699. else if (.@r < 31) .@en_name = 4720; // Dexterity1
  700. else if (.@r < 41) .@en_name = 4721; // Dexterity2
  701. else if (.@r < 50) .@en_name = 4730; // Agility1
  702. else if (.@r < 59) .@en_name = 4731; // Agility2
  703. else if (.@r < 69) .@en_name = 4740; // Vitality1
  704. else if (.@r < 79) .@en_name = 4741; // Vitality2
  705. else if (.@r < 89) .@en_name = 4710; // Inteligence1
  706. else if (.@r < 99) .@en_name = 4711; // Inteligence2
  707. else if (.@r < 100) .@en_name = 4869; // Attack_Delay_1
  708. else if (.@r < 101) .@en_name = 4815; // Spell1
  709. else .@en_name = 0;
  710. break;
  711. default:
  712. mes "[Mass Charleston]";
  713. mes "An unknown error has occurred.";
  714. close3;
  715. }
  716. if (Zeny < 100000 || countitem(6752) < 1) {
  717. mes "[Mass Charleston]";
  718. mes "Things needed for commodity upgrades seem inadequate!";
  719. close3;
  720. }
  721. // anti-hack
  722. if (callfunc("F_IsEquipIDHack", .@part, .@item_id) ||
  723. callfunc("F_IsEquipCardHack", .@part, .@card_saved[0], .@card_saved[1], .@card_saved[2], .@card_saved[3]) ||
  724. callfunc("F_IsEquipRefineHack", .@part, .@refine)) {
  725. mes "[Mass Charleston]";
  726. mes "An unknown error has occurred.";
  727. close3;
  728. }
  729. .@card[.@slot-1] = .@en_name;
  730. delitem 6752,1; // Charleston_Parts
  731. Zeny -= 100000;
  732. delequip .@part;
  733. switch(.@en_name) {
  734. case 0:
  735. cutin "dalle02.bmp",2;
  736. specialeffect2 EF_SHIELDCHARGE;
  737. mes "[Mass Charleston]";
  738. mes "Since the balance of power does not match, the given existing ability has been destroyed. It is unfortunate but please try again next time.";// unknown text
  739. getitem2 .@item_id,1,1,.@refine,0, .@card[0], .@card[1], .@card[2], .@card[3];
  740. close3;
  741. case 9:
  742. cutin "dalle04.bmp",2;
  743. specialeffect2 EF_SUI_EXPLOSION;
  744. mes "[Mass Charleston]";
  745. mes "This!";
  746. mes "I'm sorry but the equipment has been destroyed.";// unknown text
  747. close3;
  748. default:
  749. specialeffect2 EF_REPAIRWEAPON;
  750. mes "[Mass Charleston]";
  751. mes "^990000Socket" + .@slot + "^000000 will be Upgrade.";
  752. getitem2 .@item_id,1,1,.@refine,0, .@card[0], .@card[1], .@card[2], .@card[3];
  753. close3;
  754. }
  755. case 2: // Reset
  756. // Note: the NPC doesn't check if the equipment is already enhanced
  757. if (getiteminfo(.@card[0], ITEMINFO_SUBTYPE) == CARD_ENCHANT) .@card[0] = 0;
  758. if (getiteminfo(.@card[1], ITEMINFO_SUBTYPE) == CARD_ENCHANT) .@card[1] = 0;
  759. if (getiteminfo(.@card[2], ITEMINFO_SUBTYPE) == CARD_ENCHANT) .@card[2] = 0;
  760. if (getiteminfo(.@card[3], ITEMINFO_SUBTYPE) == CARD_ENCHANT) .@card[3] = 0;
  761. specialeffect2 EF_REPAIRWEAPON;
  762. mes "[Mass Charleston]";
  763. mes "Reset the product's abilities.";
  764. delitem 6752,1; // Charleston_Parts
  765. Zeny -= 100000;
  766. delequip .@part;
  767. getitem2 .@item_id,1,1,.@refine,0, .@card[0], .@card[1], .@card[2], .@card[3];
  768. close3;
  769. dfault:
  770. mes "[Mass Charleston]";
  771. mes "An unknown error has occurred.";
  772. close3;
  773. }
  774. end;
  775. }
  776. verus04,63,112,4 script Mass Charleston#3 4_F_CHARLESTON01,{
  777. if (!checkweight(1201,1) || (MaxWeight - Weight) < 1000) {
  778. mes "^ff0000You have carried too many items, please reduce it and come back later.^000000";
  779. close;
  780. }
  781. cutin "dalle03.bmp",2;
  782. mes "[Mass Charleston]";
  783. mes "Eh, do I have a customer? Activating Salesman mode...";
  784. next;
  785. cutin "dalle01.bmp",2;
  786. mes "[Mass Charleston]";
  787. mes "Charleston Factory's best-selling items: ^FF0000Upgrade Part Plate^000000 and ^FF0000Supplement Part Str^000000 now on sale!";
  788. next;
  789. mes "[Mass Charleston]";
  790. mes "For only ^FF00003,999,999^000000 zeny! Get yourself the ultra-performance action gears!";
  791. next;
  792. mes "[Mass Charleston]";
  793. mes "Also available is the ^FF0000Pilebuncker^000000 ^FF0000Upgrade^000000 service!";
  794. next;
  795. switch( select( "Talk.", "Exchange Upgrade Parts.", "Exchange Supplementary devices.", "Upgrade Pilebuncker." ) ) {
  796. case 1:
  797. if (isbegin_quest(13186) == 0) {
  798. mes "[Mass Charleston]";
  799. mes "The Charleston Factory shut down, but its technology and products remain with us.";
  800. next;
  801. mes "[Mass Charleston]";
  802. mes "Oh, haven't you heard the news? Oops, my bad. Please forget I said that.";
  803. close3;
  804. }
  805. cutin "dalle03.bmp",2;
  806. mes "[Mass Charleston]";
  807. mes "I'm a mass version Charleston. I wasn't even given a serial number. Who knows how many copies of me were made? It could be a hundred, maybe even a thousand.";
  808. next;
  809. mes "[Mass Charleston]";
  810. mes "The original Charleston is standing over there, but...";
  811. next;
  812. mes "[Mass Charleston]";
  813. mes "By the time Charlestons 1 and 2 escaped the factory, they're severely damaged. The battle that took place that day was incredible.";
  814. next;
  815. mes "[Mass Charleston]";
  816. mes "I can still remember Charlestons 1 and 2 destroying Dr. Ve's numerous creatures like it was yesterday.";
  817. next;
  818. mes "[Mass Charleston]";
  819. mes "They also destroyed the mass version Charlestons modified by Dr. Ve to his bidding.";
  820. next;
  821. mes "[Mass Charleston]";
  822. mes "Of course there are others--like us here working on product upgrades--that were lucky enough to escape Dr. Ve's clutches and meet Charleston 1, who saved us all.";
  823. next;
  824. mes "[Mass Charleston]";
  825. mes "After escaping with the modified Charleston 3, we came here.";
  826. next;
  827. mes "[Mass Charleston]";
  828. mes "Just so you know, this place was already in shambles when we arrived. We had nothing to do with its destruction. Perhaps...";
  829. next;
  830. mes "[Mass Charleston]";
  831. mes "Sorry I sidetracked. Anyway, this is the problem.";
  832. next;
  833. mes "[Mass Charleston]";
  834. mes "Charlestons 1 and 2 were destroyed to a point of impairment. They tried to repair each other, to no avail.";
  835. next;
  836. mes "[Mass Charleston]";
  837. mes "They realized they're damaged beyond repair. They salvaged however many parts they could, and built one body with one OS.";
  838. next;
  839. mes "[Mass Charleston]";
  840. mes "And that's the newly built body. They blamed themselves for the destruction of the factory, and wanted to fix it. I'm afraid their data is corrupted or missing important memory.";
  841. next;
  842. mes "[Mass Charleston]";
  843. mes "The characteristics of the data show more traits of Charleston 2, while the access method of the OS is more similar to that of Charleston 1. Charleston 1 always was the more sentimental one.";
  844. next;
  845. mes "[Mass Charleston]";
  846. mes "I don't know if the new Charleston is Charleston 1 or 2. I can't even tell what it misses or remembers the most.";
  847. next;
  848. mes "[Mass Charleston]";
  849. mes "She keeps blaming herself for losing her data, for letting down her friends. Every time we try to console her,";
  850. next;
  851. mes "[Mass Charleston]";
  852. mes "she would say she doesn't have the heart or brain to remember or know. I wonder if she knows";
  853. next;
  854. mes "[Mass Charleston]";
  855. mes "that the memories of Humans fade and get distorted or glorified with time.";
  856. next;
  857. mes "[Mass Charleston]";
  858. mes "And that Humans learn from their mistakes and failures. I read that from those paper memory devices called ^FF0000books^000000 in the factory.";
  859. next;
  860. mes "[Mass Charleston]";
  861. mes "There was a small study in the ^FF0000south wing of the factory^000000. Later, it was turned into a robot development room.";
  862. next;
  863. mes "[Mass Charleston]";
  864. mes "Maybe the Charleston is more like the Humans than the rest of us. I just hope she doesn't have to be so sad.";
  865. next;
  866. mes "[Mass Charleston]";
  867. mes "I feel so congested in the OS that I ranted. Perhaps I need to defragment my memory.";
  868. close3;
  869. case 2:
  870. mes "[Mass Charleston]";
  871. mes "Upgrade Part Plate";
  872. mes "Class: Armor, indestructible.";
  873. mes "-10% damage from Small and Medium monsters.";
  874. mes "-10% damage from Large monsters when Upgraded to +7.";
  875. mes "Additional -5% damage from Small and Medium monsters when Upgraded to +9.";
  876. next;
  877. mes "[Mass Charleston]";
  878. mes "Weight: 300";
  879. mes "Required Level: 100";
  880. callsub S_Buy, 15111; // Upgrade_Part_Plate
  881. case 3:
  882. mes "[Mass Charleston]";
  883. mes "Supplement Part Str";
  884. mes "ATK+ 5%!";
  885. mes "Additional ATK +1% every 4 Upgrade levels.";
  886. mes "Use with Vitality/Agility/Dexterity supplementary devices for best results.";
  887. next;
  888. mes "[Mass Charleston]";
  889. mes "Weight: 200";
  890. mes "Required Level: 100";
  891. callsub S_Buy, 15110; // Supplement_Part_Str
  892. case 4:
  893. mes "[Mass Charleston]";
  894. mes "The last masterpiece of the Charleston Factory! You'll never find such fine Equipment anywhere else.";
  895. next;
  896. mes "[Mass Charleston]";
  897. mes "To Upgrade Pilebuncker,";
  898. mes "^FF00001 Pilebuncker^000000,";
  899. mes "^FF0000300 Dented Iron Plates^000000,";
  900. mes "and ^FF000015 Broken Engines^000000 are required.";
  901. next;
  902. switch( select( "Pilebuncker S", "Pilebuncker P", "Pilebuncker T" ) ) {
  903. case 1:
  904. mes "[Mass Charleston]";
  905. mes "Pilebuncker S";
  906. mes "Class: Blunt Weapon";
  907. mes "ATK: 400";
  908. mes "Attack Speed bonus every 2 Upgrade levels.";
  909. next;
  910. mes "[Mass Charleston]";
  911. mes "Weight: 300";
  912. mes "Weapon Level: 4";
  913. mes "Required Level: 130";
  914. mes "Mechanic only. Comes with 1 Card socket.";
  915. .@item_id = 16030; // Pilebuncker_S
  916. break;
  917. case 2:
  918. mes "[Mass Charleston]";
  919. mes "Pilebuncker P";
  920. mes "Class: Blunt Weapon";
  921. mes "ATK: 450";
  922. mes "ATK +5 every Upgrade level.";
  923. next;
  924. mes "[Mass Charleston]";
  925. mes "Weight: 400";
  926. mes "Weapon Level: 4";
  927. mes "Required Level: 130";
  928. mes "Mechanic only.";
  929. .@item_id = 16031; // Pilebuncker_P
  930. break;
  931. case 3:
  932. mes "[Mass Charleston]";
  933. mes "Pilebuncker T";
  934. mes "Class: Blunt Weapon";
  935. mes "ATK: 400";
  936. mes "SP cost -1% every Upgrade level.";
  937. next;
  938. mes "[Mass Charleston]";
  939. mes "Weight: 350";
  940. mes "Weapon Level: 4";
  941. mes "Required Level: 130";
  942. mes "Mechanic only. Comes with 1 Card socket.";
  943. .@item_id = 16032; // Pilebuncker_T
  944. break;
  945. }
  946. break;
  947. }
  948. next;
  949. mes "[Mass Charleston]";
  950. mes "Do you really want to Upgrade ^FF0000" + getitemname(.@item_id) + "^000000?";
  951. next;
  952. if (select( "I suggest you reconsider.", "Buy." ) == 1) {
  953. mes "[Mass Charleston]";
  954. mes "It's a good buy, but you still need to make your decision carefully.";
  955. close;
  956. }
  957. if (countitem(6751) > 299 && countitem(6750) > 14 && countitem(1549) > 0) {
  958. mes "[Mass Charleston]";
  959. mes "You won't regret it! She's a Charleston factory!";
  960. delitem 6751,300; // Distorted_Iron_Plate
  961. delitem 6750,15; // Wrong_Engine
  962. delitem 1549,1; // Pilebuncker
  963. getitem .@item_id,1;
  964. close3;
  965. }
  966. mes "[Mass Charleston]";
  967. mes "Not enough materials for the Upgrade.";
  968. close3;
  969. S_Buy:
  970. .@item_id = getarg(0);
  971. mes "^FF0000Mechanic only^000000";
  972. mes "^FF0000Price: 3,999,999 zeny^000000";
  973. next;
  974. mes "[Mass Charleston]";
  975. mes "Do you really want to buy ^FF0000" + getitemname(.@item_id) + "^000000?";
  976. next;
  977. if (select( "I suggest you reconsider.", "Buy." ) == 1) {
  978. mes "[Mass Charleston]";
  979. mes "It's a good buy, but you still need to make your decision carefully.";
  980. close3;
  981. }
  982. //if (Zeny >= 3999998) {// typo?
  983. if (Zeny >= 3999999) {
  984. mes "[Mass Charleston]";
  985. mes "You won't regret it! She's a Charleston factory!";
  986. Zeny -= 3999999;
  987. getitem .@item_id,1;
  988. close3;
  989. }
  990. mes "[Mass Charleston]";
  991. mes "Good commodity value is not uncommon, please confirm your pocket depth!";
  992. close3;
  993. }
  994. // Excellion
  995. verus04,161,222,4 script Grandpa picking up scrap iron 1_M_HOF,{
  996. switch( isbegin_quest(12368) ) {
  997. case 0:
  998. mes "[Grandpa picking up scrap iron]";
  999. mes "There are two pieces of scrap iron I see the value of not Fibonacci to pick up and sell to the recycling bin, the result is not willing to deal with me.";
  1000. next;
  1001. mes "[Grandpa picking up scrap iron]";
  1002. mes "Because it's not iron? Each resource recycling are not willing to buy, is nerve-racking!";
  1003. close;
  1004. case 1:
  1005. mes "[Grandpa picking up scrap iron]";
  1006. mes "Hey! Did you just talk to that piece of junk? Or am I losing my sight?";
  1007. close;
  1008. case 2:
  1009. mes "[Grandpa picking up scrap iron]";
  1010. mes "Oh, my God! That can't be sold to the Recycle Bin!";
  1011. close;
  1012. }
  1013. }
  1014. verus04,163,219,4 script PLUTO_09#pa0829 4_SCR_AT_ROBOTS,{
  1015. disable_items;
  1016. if (checkweight(1201,1) == 0 || (MaxWeight - Weight) < 10000) {
  1017. mes "^ff0000You have carried too many items, please reduce it and come back later.^000000";
  1018. close;
  1019. }
  1020. if (isbegin_quest(12368) < 2) {
  1021. mes "^0000ffAlthough the LCD still dim, but does not seem to work anymore.^000000";
  1022. close;
  1023. }
  1024. mes "^0000ffWhen the strange dinosaur pattern appears, go to the introduction screen.^000000";
  1025. next;
  1026. mes "[PLUTO_09]";
  1027. mes "" + strcharinfo(0) + ",";
  1028. mes "Hello. How can I help you?";
  1029. next;
  1030. switch( select( "Note", "Old Fuel and Huge Metal Scrap to exchange for gear.", "Design drawings for the production of Enchantment" ) ) {
  1031. case 1:
  1032. mes "^0000ffDinosaur forward screen appears and a description of the cute girl voice.^000000";
  1033. next;
  1034. mes "[PLUTO_09]";
  1035. mes "This is 100 years since the genesis of the new PLUTO_09.";
  1036. next;
  1037. mes "[PLUTO_09]";
  1038. mes "Bring Huge Metal Scrap and Old Fuel can help you make useful to you Equipment Oh~";
  1039. next;
  1040. mes "[PLUTO_09]";
  1041. mes "Do you want to make enchantment equipment? You bring the tank! I can make enchant with a design for you. Oh, good luck.";
  1042. next;
  1043. mes "[PLUTO_09]";
  1044. mes "This is the Tyrannosaurus rex that appeared in the dinosaur fairy tale, very beautiful... (Continue to appear boring dinosaur story)";
  1045. next;
  1046. mes "^0000ffIn this introduction to the screen, presumed that the psychological state of the robot maker is extremely unstable.^000000";
  1047. close;
  1048. case 2:
  1049. setarray .@id[0],20773,15128; // Excelion_Wing, Excelion_Suit
  1050. mes "[PLUTO_09]";
  1051. mes "Production equipment needs ^0000ff10 Huge Metal Scrap and 5 Old Fuel^000000.";
  1052. next;
  1053. switch( select( "Quit.", "Making the " + getitemname(.@id[0]), "Making the " + getitemname(.@id[1]) ) ) {
  1054. case 1:
  1055. mes "^0000ffDinosaurs gazed at the picture here after staying a bit closed.^000000";
  1056. close;
  1057. case 2:
  1058. .@item_id = .@id[0];
  1059. break;
  1060. case 3:
  1061. .@item_id = .@id[1];
  1062. break;
  1063. }
  1064. if (countitem(6961) < 10 || countitem(6962) < 5) {
  1065. mes "[PLUTO_09]";
  1066. mes "I have already talked about the production equipment needs ^0000ff10 " + getitemname(6961) + " and 5 " + getitemname(6962) + "^000000, you don't have enough.";
  1067. close;
  1068. }
  1069. specialeffect EF_SPELLBREAKER;
  1070. delitem 6962,5;// OldTank
  1071. delitem 6961,10;// LargeScrap
  1072. getitem .@item_id,1;
  1073. mes "[PLUTO_09]";
  1074. mes "Your equipment is ready. Let's see if it fits.";
  1075. close;
  1076. case 3:
  1077. while(1) {
  1078. if (countitem(6962) < 5)
  1079. .@string$ = "^aaaaaaInsufficient fuel for making design drawings.^000000";
  1080. else
  1081. .@string$ = "Production design (^ff0000 success rate 30%^000000)";
  1082. mes "[PLUTO_09]";
  1083. mes "If you give me 5 " + getitemname(6962) + ", I can do the production of design drawings look!";
  1084. mes "----------";
  1085. mes "^0000ffLittle dinosaur running around on the screen.^000000";
  1086. next;
  1087. if (select( "Quit.", .@string$ ) == 1) {
  1088. mes "^0000ffIt's over after showing that the dinosaurs are stuffing themselves.^000000";
  1089. close;
  1090. }
  1091. .@fail = false;
  1092. .@reac_rnd = rand(1,10000);
  1093. if (.@reac_rnd < 26) .@en_name = 6977; // Reactor_A_STR_
  1094. else if (.@reac_rnd < 51) .@en_name = 6978; // Reactor_A_INT_
  1095. else if (.@reac_rnd < 251) .@en_name = 6979; // Reactor_A_DEF_
  1096. else if (.@reac_rnd < 326) .@en_name = 6981; // Reactor_A_ATK_
  1097. else if (.@reac_rnd < 401) .@en_name = 6982; // Reactor_A_MATK_
  1098. else if (.@reac_rnd < 601) .@en_name = 6980; // Reactor_A_AVOI_
  1099. else if (.@reac_rnd < 801) .@en_name = 6983; // Reactor_A_MHP_
  1100. else if (.@reac_rnd < 1001) .@en_name = 6984; // Reactor_A_MSP_
  1101. else if (.@reac_rnd < 1151) .@en_name = 6986; // Reactor_A_ASPD_
  1102. else if (.@reac_rnd < 1401) .@en_name = 6975; // Reactor_Cure_201_
  1103. else if (.@reac_rnd < 1551) .@en_name = 6976; // Reactor_Cure_202_
  1104. else if (.@reac_rnd < 1751) .@en_name = 6973; // Reactor_Cure_101_
  1105. else if (.@reac_rnd < 1851) .@en_name = 6974; // Reactor_Cure_102_
  1106. else if (.@reac_rnd < 1901) .@en_name = 6985; // Reactor_A_FROZ_
  1107. else if (.@reac_rnd < 2101) .@en_name = 6970; // Reactor_T_WATER_
  1108. else if (.@reac_rnd < 2301) .@en_name = 6971; // Reactor_T_GROUND_
  1109. else if (.@reac_rnd < 2501) .@en_name = 6969; // Reactor_T_FIRE_
  1110. else if (.@reac_rnd < 2701) .@en_name = 6972; // Reactor_T_WIND_
  1111. else if (.@reac_rnd < 2776) .@en_name = 6966; // Reactor_P_WATER_
  1112. else if (.@reac_rnd < 2851) .@en_name = 6967; // Reactor_P_GROUND_
  1113. else if (.@reac_rnd < 2926) .@en_name = 6965; // Reactor_P_FIRE_
  1114. else if (.@reac_rnd < 3001) .@en_name = 6968; // Reactor_P_WIND_
  1115. else {
  1116. .@fail = true;
  1117. .@reac_rnd2 = rand(1,13000);
  1118. if (.@reac_rnd2 < 2)
  1119. .@en_name = 969; // Gold
  1120. else if (.@reac_rnd2 < 1002)
  1121. .@en_name = 999; // Steel
  1122. else if (.@reac_rnd2 < 3002)
  1123. .@en_name = 998; // Iron
  1124. else if (.@reac_rnd2 < 8002)
  1125. .@en_name = 1002; // Iron_Ore
  1126. else
  1127. .@en_name = 7054; // Brigan
  1128. }
  1129. if (countitem(6962) < 5)
  1130. mes "^0000ffThe picture shows the dinosaur silently looking at the empty bowl, it may be an error message when the material is insufficient!^000000";
  1131. else {
  1132. specialeffect EF_SPELLBREAKER;
  1133. delitem 6962,5;// OldTank
  1134. getitem .@en_name,1;
  1135. mes "[PLUTO_09]";
  1136. if (.@fail)
  1137. mes "What a pity, the design failed.";
  1138. else
  1139. mes "Great, the design was made.";
  1140. }
  1141. next;
  1142. }
  1143. end;
  1144. default:
  1145. mes "^0000ffA screen showing howling that a dinosaur may not understand the command.^000000";
  1146. close;
  1147. }
  1148. end;
  1149. }
  1150. verus04,165,217,4 script MARS_01#pa0829 4_SCR_MT_ROBOTS,{
  1151. disable_items;
  1152. if (checkweight(1201,1) == 0 || (MaxWeight - Weight) < 10000) {
  1153. mes "^ff0000You have carried too many items, please reduce it and come back later.^000000";
  1154. close;
  1155. }
  1156. switch( isbegin_quest(12368) ) {
  1157. case 0:
  1158. mes "Blurred LCD screen may be frightened or happy and intense shaking, perhaps due to lack of power and can not complete the presentation.";
  1159. next;
  1160. if (select( "Just ignore it.", "Press every button." ) == 1) {
  1161. mes "It may be a pre-scrap robot that is common everywhere and doesn't require much attention.";
  1162. close;
  1163. }
  1164. mes "[?????]";
  1165. mes "Hello! I'm MARS_01, an exploration robot. Currently, I have entered hibernation mode to save power. The related functions are set as follows.";
  1166. next;
  1167. if (select( "Interrupt the machine", "Supply of fuel" ) == 1) {
  1168. mes "The robot re-enters hibernation mode after a faint sound.";
  1169. close;
  1170. }
  1171. mes "[MARS_01]";
  1172. mes "We are super power robot, as long as the old oil 1 will let me and the companion PLUTO has more than 90% of the power.";
  1173. next;
  1174. mes "[MARS_01]";
  1175. mes "If you find Old Fuel, please insert the fuel into the mouth of the bottom of the screen, so you can lift the hibernation mode.";
  1176. setquest 12368; // Operate the old robot
  1177. close;
  1178. case 1:
  1179. if (countitem(6962) < 1) {
  1180. mes "[MARS_01]";
  1181. mes "If you find 1 " + getitemname(6962) + ", please insert the fuel into the mouth of the bottom of the screen, so you can lift the hibernation mode.";
  1182. close;
  1183. }
  1184. mes "Maybe we ran out of power when we went looking for fuel. should we put in the fuel?";
  1185. next;
  1186. if (select( "Quit.", "Put in the fuel" ) == 1) {
  1187. mes "The old robot may be running out of power and not responding at all.";
  1188. close;
  1189. }
  1190. mes "When the fuel is put in, the sound screen opens.";
  1191. npctalk "Whoa, whoa?! It moves!!!", "Grandpa picking up scrap iron";
  1192. next;
  1193. mes "[MARS_01]";
  1194. mes "Start the inspection system and confirm the damage of each part.";
  1195. next;
  1196. mes "[MARS_01]";
  1197. mes "Power meter 10%, dashboard normal, body skeleton 13%, perform mining operations well.";
  1198. next;
  1199. mes "[MARS_01]";
  1200. mes "Pluto_09 began to inject energy for mining auxiliary robot.";
  1201. npctalk "Energy response confirmed. It's working.", "PLUTO_09#pa0829";
  1202. next;
  1203. mes "[MARS_01]";
  1204. mes "Thank you for getting me started, I will reset the person who started me to be a manager.";
  1205. next;
  1206. select("Enter a name.");
  1207. mes "[MARS_01]";
  1208. mes "" + strcharinfo(0) + ",";
  1209. mes "Hello! The fuel has been fully charged.";
  1210. delitem 6962,1;// OldTank
  1211. completequest 12368;
  1212. close;
  1213. case 2:
  1214. break;
  1215. }
  1216. mes "[MARS_01]";
  1217. mes "" + strcharinfo(0) + ",";
  1218. mes "Hello! Can I help you?";
  1219. next;
  1220. switch( select( "Note", "Enhanced " + getitemname(20773), "Enhanced " + getitemname(15128) ) ) { // Excelion_Wing, Excelion_Suit
  1221. case 1:
  1222. mes "^0000ffSoon the instructions again.^000000";
  1223. next;
  1224. mes "[MARS_01]";
  1225. mes "While waiting for the new owner, we continue to update to the latest version.";
  1226. next;
  1227. mes "[MARS_01]";
  1228. mes "If you bring aak Seri Wong propulsion wing, aak Seri Wong jacket equipment and strengthen the design, I will strengthen the equipment according to the design.";
  1229. next;
  1230. mes "[MARS_01]";
  1231. mes "According to the standard design drawings of the operation, the equipment will not be damaged during the process, but the number of maximum upgrade will change depending on the type of equipment.";
  1232. next;
  1233. mes "[MARS_01]";
  1234. mes "Welcome back again~";
  1235. close;
  1236. case 2:
  1237. .@part = EQI_GARMENT;
  1238. break;
  1239. case 3:
  1240. .@part = EQI_ARMOR;
  1241. break;
  1242. }
  1243. // <item ID required>, <item enchant ID>, <max number of this enchant on armor>, <max number of this enchant on garment>, <enchant on first slot only>
  1244. setarray .@list[0],
  1245. 6965, 4970, 1,0,3, // Reactor_P_FIRE_ Reactor_P_FIRE
  1246. 6966, 4971, 1,0,3, // Reactor_P_WATER_ Reactor_P_WATER
  1247. 6967, 4972, 1,0,3, // Reactor_P_GROUND_ Reactor_P_GROUND
  1248. 6968, 4973, 1,0,3, // Reactor_P_WIND_ Reactor_P_WIND
  1249. 6969, 4974, 0,3,0, // Reactor_T_FIRE_ Reactor_T_FIRE
  1250. 6970, 4975, 0,3,0, // Reactor_T_WATER_ Reactor_T_WATER
  1251. 6971, 4976, 0,3,0, // Reactor_T_GROUND_ Reactor_T_GROUND
  1252. 6972, 4977, 0,3,0, // Reactor_T_WIND_ Reactor_T_WIND
  1253. 6973, 4978, 3,3,0, // Reactor_Cure_101_ Reactor_Cure_101
  1254. 6974, 4979, 3,3,0, // Reactor_Cure_102_ Reactor_Cure_102
  1255. 6975, 4980, 3,3,0, // Reactor_Cure_201_ Reactor_Cure_201
  1256. 6976, 4981, 3,3,0, // Reactor_Cure_202_ Reactor_Cure_202
  1257. 6977, 4982, 1,0,0, // Reactor_A_STR_ Reactor_A_STR
  1258. 6978, 4983, 1,0,0, // Reactor_A_INT_ Reactor_A_INT
  1259. 6979, 4984, 3,3,0, // Reactor_A_DEF_ Reactor_A_DEF
  1260. 6980, 4985, 1,1,0, // Reactor_A_AVOI_ Reactor_A_AVOI
  1261. 6981, 4986, 3,3,0, // Reactor_A_ATK_ Reactor_A_ATK
  1262. 6982, 4987, 3,3,0, // Reactor_A_MATK_ Reactor_A_MATK
  1263. 6983, 4988, 3,3,0, // Reactor_A_MHP_ Reactor_A_MHP
  1264. 6984, 4989, 3,3,0, // Reactor_A_MSP_ Reactor_A_MSP
  1265. 6985, 4990, 1,0,0, // Reactor_A_FROZ_ Reactor_A_FROZ
  1266. 6986, 4991, 1,1,0; // Reactor_A_ASPD_ Reactor_A_ASPD
  1267. .@size = getarraysize(.@list);
  1268. for ( .@i = 0; .@i < .@size; .@i += 5 ) {
  1269. if (countitem(.@list[.@i]) < 1)
  1270. .@menu$ += sprintf( "^aaaaaa%s (Missing)^000000:", getitemname(.@list[.@i]) );
  1271. else
  1272. .@menu$ += sprintf( "%s:", getitemname(.@list[.@i]) );
  1273. }
  1274. mes "[MARS_01]";
  1275. mes "" + strcharinfo(0) + ",";
  1276. mes "Choose the enchant you want to use!";
  1277. next;
  1278. .@s = select("Quit.:" + .@menu$) - 2;
  1279. if (.@s < 0) {
  1280. mes "[MARS_01]";
  1281. mes "So far.";
  1282. close;
  1283. }
  1284. .@s *= 5;
  1285. .@item_req = .@list[.@s];
  1286. .@item_enchant_id = .@list[.@s+1];
  1287. .@first_slot_only = .@list[.@s+4];
  1288. .@equip_id = getequipid(.@part);
  1289. .@equip_refine = getequiprefinerycnt(.@part);
  1290. setarray .@card[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3);
  1291. if (countitem(.@item_req) < 1) {
  1292. mes "[MARS_01]";
  1293. mes "So far.";
  1294. close;
  1295. }
  1296. if (.@part == EQI_ARMOR)
  1297. .@max_num_enchant = .@list[.@s+2];
  1298. else if (.@part == EQI_GARMENT)
  1299. .@max_num_enchant = .@list[.@s+3];
  1300. else {
  1301. mes "[MARS_01]";
  1302. mes "Please contact the administrator.";
  1303. close;
  1304. }
  1305. // anti-hack
  1306. 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)) {
  1307. mes "[MARS_01]";
  1308. mes "Did you remove your gear?";
  1309. close;
  1310. }
  1311. if (.@card[0] > 0 && .@item_enchant_id == .@card[0]) { .@slot_sum++; }
  1312. if (.@card[1] > 0 && .@item_enchant_id == .@card[1]) { .@slot_sum++; }
  1313. if (.@card[2] > 0 && .@item_enchant_id == .@card[2]) { .@slot_sum++; }
  1314. if (.@card[3] > 0 && .@item_enchant_id == .@card[3]) { .@slot_sum++; }
  1315. if (.@max_num_enchant < 1) {
  1316. mes "[MARS_01]";
  1317. mes "The design you choose is incompatible with the equipment.";
  1318. close;
  1319. }
  1320. if (.@first_slot_only > 0 && .@card[3] != 0) {
  1321. mes "[MARS_01]";
  1322. mes "This design is only for the first time to strengthen the use, but the equipment has other performance, please use other design to strengthen it!";
  1323. close;
  1324. }
  1325. if (.@slot_sum >= .@max_num_enchant) {
  1326. mes "[MARS_01]";
  1327. mes "The maximum number of enchants is " + .@max_num_enchant + ". The item has reached the upper limit.";
  1328. close;
  1329. }
  1330. if (.@card[1] != 0) {
  1331. mes "[MARS_01]";
  1332. mes "The number of equipment has reached the limit.";
  1333. close;
  1334. }
  1335. // anti-hack
  1336. 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)) {
  1337. mes "[MARS_01]";
  1338. mes "Please pay special attention if the equipment will be removed.";
  1339. close;
  1340. }
  1341. switch( .@equip_id ) {
  1342. case 20773: // Excelion_Wing
  1343. case 15128: // Excelion_Suit
  1344. break;
  1345. default:
  1346. mes "[MARS_01]";
  1347. mes "The product does not have a serial number, does not meet the specifications of the product can not be strengthened.";
  1348. close;
  1349. }
  1350. mes "[MARS_01]^0000ff";
  1351. mes "Choose " + getequipname(.@part) + " + " + getitemname(.@item_req) + ",";
  1352. mes "^000000------------------";
  1353. mes "Your selected design can be upgraded to the equipment limit ^0000ff" + .@max_num_enchant + " the same design, ^000000so far, enhanced ^0000ff" + .@slot_sum + " times^000000, do you want to continue?";
  1354. next;
  1355. if (select( "I'll think about it...", "Go on." ) == 1) {
  1356. mes "[MARS_01]";
  1357. mes "Come back next time you need me~";
  1358. close;
  1359. }
  1360. // anti-hack
  1361. 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))
  1362. close;
  1363. if (.@card[3] == 0) {
  1364. .@enchant_count = 1;
  1365. .@card[3] = .@item_enchant_id;
  1366. }
  1367. else if (.@card[2] == 0) {
  1368. .@enchant_count = 2;
  1369. .@card[2] = .@item_enchant_id;
  1370. }
  1371. else if (.@card[1] == 0) {
  1372. .@enchant_count = 3;
  1373. .@card[1] = .@item_enchant_id;
  1374. }
  1375. else {
  1376. mes "[MARS_01]";
  1377. mes "The equipment has reached the upper limit of strengthening Hello!";
  1378. close;
  1379. }
  1380. specialeffect2 EF_REPAIRWEAPON;
  1381. mes "[MARS_01]";
  1382. if (.@enchant_count < 5)
  1383. mes "The first equipment has been upgraded ^990000" + .@enchant_count + " times^000000.";
  1384. else
  1385. mes "For additional performance equipment^990000 ^000000 upgrade."; // never displayed
  1386. delitem .@item_req, 1;
  1387. delequip .@part;
  1388. getitem2 .@equip_id,1,1,.@equip_refine,0,.@card[0],.@card[1],.@card[2],.@card[3];
  1389. close;
  1390. }