3rd_trader.txt 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. //===== rAthena Script =======================================
  2. //= 3rd Item Seller
  3. //===== By: ==================================================
  4. //= Masao, Mercurial
  5. //===== Current Version: =====================================
  6. //= 1.5
  7. //===== Compatible With: =====================================
  8. //= rAthena Project
  9. //===== Description: =========================================
  10. //= [Official Conversion]
  11. //= Sells some 3rd Job related items:
  12. //= - Poison Herbs, Rune Stones, Rare Herbs, Points
  13. //===== Additional Comments: =================================
  14. //= 1.0 First Version.
  15. //= 1.1 Optimized Poison Herb Salesman NPC
  16. //= 1.2 Optimized and standardized. [Euphy]
  17. //= 1.3 Added Malangdo/Mora Points NPC. [Euphy]
  18. //= 1.4 Updated to match the official scripts. [Euphy]
  19. //= 1.5 Added Izlude duplicates. [Euphy]
  20. //= 1.5a Remove useless array & misc. [Capuche]
  21. //============================================================
  22. // Poison Herb Merchants (Guillotine Cross) :: poison_herb_3rd_trader
  23. //============================================================
  24. - script ::phs -1,{
  25. if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
  26. mes "- Wait a minute !! -";
  27. mes "- Currently you're carrying -";
  28. mes "- too many items with you. -";
  29. mes "- Please try again -";
  30. mes "- after you lose some weight. -";
  31. close;
  32. }
  33. mes "[Poison Herb Merchant]";
  34. mes "I am the professional";
  35. mes "Poison Herb merchant.";
  36. mes "Each Herb costs 4,000 zeny.";
  37. mes "What would you like?";
  38. next;
  39. .@i = select("Nerium:Rantana:Makulata:Seratum:Scopolia:Amoena:Poison Kit:Cancel")-1;
  40. mes "[Poison Herb Merchant]";
  41. if (.@i < 6) {
  42. .@item = 7932+.@i;
  43. .@price = 4000;
  44. .@max = 2000;
  45. } else if (.@i == 6) {
  46. .@item = 7931;
  47. .@price = 5000;
  48. .@max = 500;
  49. mes "Each Poison Kit costs 5,000 zeny.";
  50. } else {
  51. mes "Well, I see. Come back again~!";
  52. close;
  53. }
  54. mes "How many do you want?";
  55. mes "You can only buy a maximum of '"+.@max+"' ea.";
  56. mes "Enter '0' if you want to cancel.";
  57. next;
  58. input .@amount;
  59. if (.@amount == 0) {
  60. mes "[Poison Herb Merchant]";
  61. mes "You've cancelled the trade.";
  62. close;
  63. }
  64. if (.@amount > .@max) {
  65. mes "[Poison Herb Merchant]";
  66. mes "The number must be less than "+callfunc("F_InsertComma",.@max)+"!";
  67. close;
  68. }
  69. .@total = .@amount * .@price;
  70. if (Zeny < .@total) {
  71. mes "[Poison Herb Merchant]";
  72. mes "You don't have enough money.";
  73. mes "Check how much money you have first.";
  74. close;
  75. }
  76. Zeny = Zeny - .@total;
  77. getitem .@item, .@amount;
  78. mes "[Poison Herb Merchant]";
  79. mes "Thank you. Come back again~!";
  80. close;
  81. }
  82. job3_guil01,79,96,3 duplicate(phs) Poison Herb Merchant 4_F_YUNYANG
  83. morocc,193,100,4 duplicate(phs) Poison Herb Merchant#moc 4_F_YUNYANG
  84. lhz_in02,16,205,4 duplicate(phs) Poison Herb Merchant#lhz 4_F_YUNYANG
  85. // Rune Stone Merchants (Rune Knight) :: rune_3rd_trader
  86. //============================================================
  87. - script ::runesale -1,{
  88. if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
  89. mes "- Wait a minute !! -";
  90. mes "- Currently you're carrying -";
  91. mes "- too many items with you. -";
  92. mes "- Please try again -";
  93. mes "- after you lose some weight. -";
  94. close;
  95. }
  96. mes "[Rune Merchant]";
  97. mes "Hey, do you need Runes?!";
  98. mes "I sell all sorts of Rune Stones!";
  99. mes "What would you like?";
  100. next;
  101. .@i = select("Buy high-quality Rune Stones.:Buy ordinary Rune Stones.");
  102. mes "[Rune Merchant]";
  103. if (.@i == 1) {
  104. mes "High-quality Runes!";
  105. mes "They cost 2,500 zeny each!";
  106. .@item = 12734; //Runstone_Quality
  107. .@price = 2500;
  108. } else {
  109. mes "Ordinary Rune Stones?";
  110. mes "They cost 1,000 zeny each!";
  111. .@item = 12737; //Runstone_Ordinary
  112. .@price = 1000;
  113. }
  114. mes "Tell me how many you want,";
  115. mes "and remember, you can only";
  116. mes "buy a maximum of '2000' ea.";
  117. next;
  118. input .@amount;
  119. if (.@amount == 0) {
  120. mes "[Rune Merchant]";
  121. mes "You're not buying? Please leave!";
  122. close;
  123. }
  124. if (.@amount > 2000) {
  125. mes "[Rune Merchant]";
  126. mes "The number must be less than 2,000!";
  127. close;
  128. }
  129. .@total = .@amount * .@price;
  130. if (Zeny < .@total) {
  131. mes "[Rune Merchant]";
  132. mes "Zeny! Zeny!";
  133. mes "You don't have enough money.";
  134. mes "Check how much money you have first.";
  135. close;
  136. }
  137. if (!checkweight(.@item,.@amount)) {
  138. mes "[Rune Merchant]";
  139. mes "It doesn't seem like you are able to carry it all, why are you trying it?!";
  140. close;
  141. }
  142. Zeny = Zeny - .@total;
  143. getitem .@item, .@amount;
  144. mes "[Rune Merchant]";
  145. mes "Thank you.";
  146. mes "Please come back again~!";
  147. close;
  148. }
  149. job3_rune01,90,62,3 duplicate(runesale) Rune Merchant#job3 4_M_YURI
  150. prontera,168,228,3 duplicate(runesale) Rune Merchant#prt 4_M_YURI
  151. // Rare Herb Merchants (Guillotine Cross) :: rare_herb_3rd_trader
  152. //============================================================
  153. job3_guil01,91,93,3 script Rare Herb Collector 1_M_03,{
  154. if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
  155. mes "- Wait a minute !! -";
  156. mes "- Currently you're carrying -";
  157. mes "- too many items with you. -";
  158. mes "- Please try again -";
  159. mes "- after you lose some weight. -";
  160. close;
  161. }
  162. if (Class == Job_Guillotine_Cross || Class == Job_Guillotine_Cross_T || Class == Job_Baby_Cross) {
  163. mes "[Rare Poison Herb Collector]";
  164. mes "I wander around the world and collect rare poison herbs. Recently, I started dealing in the herb called Izidor. If you are interested, you can buy them.";
  165. next;
  166. .@i = select("How can I buy them?:Exchange it for Animal Blood:Exchange it for a Bitter Herb:Exchange it for a Deadly Noxious Herb:Exchange it for a Frozen Rose:Exchange it for Ment:Exchange it for Hinalle")-2;
  167. if (.@i == -1) {
  168. mes "[Rare Poison Herb Collector]";
  169. mes "You can buy them for 10,000 zeny and one of these rare items, Animal Blood, Bitter Herb, Deadly Noxious Herb, Frozen Rose, Ment or an Hinalle.";
  170. next;
  171. mes "[Rare Poison Herb Collector]";
  172. mes "Why do I ask money? That's just to pay a little respect to a collector like me. Ha ha ha...";
  173. close;
  174. } else {
  175. setarray .@exchange[0],702,621,631,749,605,703;
  176. .@item = .@exchange[.@i];
  177. .@price = 10000;
  178. mes "[Rare Poison Herb Collector]";
  179. mes "How many do you want?";
  180. mes "You can only buy a maximum of '2000' ea.";
  181. mes "Enter '0' if you want to cancel.";
  182. next;
  183. input .@amount;
  184. if (.@amount == 0) {
  185. mes "[Rare Poison Herb Collector]";
  186. mes "You've cancelled the trade.";
  187. close;
  188. }
  189. if (.@amount > 2000) {
  190. mes "[Rare Poison Herb Collector]";
  191. mes "The number must be less than 2,000!";
  192. close;
  193. }
  194. .@total = .@amount * .@price;
  195. if (countitem(.@item) < .@amount || Zeny < .@total) {
  196. mes "[Rare Poison Herb Collector]";
  197. mes "Hey, come back when you have all the requirements for the exchange.";
  198. close;
  199. }
  200. mes "[Rare Poison Herb Collector]";
  201. mes "Good. I've received the money and the special item.";
  202. delitem .@item, .@amount;
  203. Zeny = Zeny - .@total;
  204. getitem 709, .@amount; //Izidor
  205. close;
  206. }
  207. }
  208. mes "[Rare Poison Herb Collector]";
  209. mes "I wander around the world and collect rare poison herbs. But I don't feel like selling my herbs to a person like you... ha ha ha...";
  210. close;
  211. }
  212. // Point Merchants (Sorcerer) :: point_3rd_trader
  213. //============================================================
  214. - script ::pss -1,{
  215. if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
  216. mes "- Wait a minute !! -";
  217. mes "- Currently you're carrying -";
  218. mes "- too many items with you. -";
  219. mes "- Please try again -";
  220. mes "- after you lose some weight. -";
  221. close;
  222. }
  223. mes "[Point Merchant]";
  224. mes "Hello. I'm selling a catalyst called ^FF0000Points^000000 for Sorcerers. What would you like?";
  225. next;
  226. .@i = select("Scarlet Points - 200z:Lime Green Points - 200z:Indigo Points - 200z:Yellow Wish Points - 200z:Cancel")-1;
  227. mes "[Point Merchant]";
  228. if (.@i == 4) {
  229. mes "You can't find the stuff you need?";
  230. close;
  231. }
  232. setarray .@itemid[0],6360,6363,6361,6362;
  233. setarray .@color$[0],"Scarlet","Lime Green","Indigo","Yellow Wish";
  234. mes "You have chosen "+.@color$[.@i]+" Points.";
  235. mes "How many do you want?";
  236. mes "If you want to cancel, enter 0.";
  237. next;
  238. input .@amount;
  239. mes "[Point Merchant]";
  240. if (.@amount == 0) {
  241. mes "You've cancelled the trade.";
  242. close;
  243. }
  244. if (Zeny < .@amount*200) {
  245. mes "You don't seem to have enough money.";
  246. close;
  247. }
  248. if (!checkweight(.@itemid[.@i],.@amount)) {
  249. mes "You don't have enough space in your inventory to buy this amount.";
  250. close;
  251. }
  252. Zeny = Zeny-(.@amount*200);
  253. getitem .@itemid[.@i],.@amount;
  254. mes "Thank you very much. See you~!";
  255. close;
  256. }
  257. gef_tower,105,172,5 duplicate(pss) Point Merchant#Sorcerer 8_F_GIRL
  258. prt_in,131,66,0 duplicate(pss) Point Merchant#Prontera 8_F_GIRL
  259. alberta,105,52,7 duplicate(pss) Point Merchant#Alberta 8_F_GIRL
  260. aldebaran,133,114,5 duplicate(pss) Point Merchant#Aldebaran 8_F_GIRL
  261. comodo,193,159,5 duplicate(pss) Point Merchant#Comodo 8_F_GIRL
  262. geffen,129,49,5 duplicate(pss) Point Merchant#Geffen 8_F_GIRL
  263. izlude,138,163,5 duplicate(pss) Point Merchant#Izlude 8_F_GIRL // Old coordinates: izlude (135,121)
  264. izlude_a,138,163,5 duplicate(pss) Point Merchant#Izlude_a 8_F_GIRL
  265. izlude_b,138,163,5 duplicate(pss) Point Merchant#Izlude_b 8_F_GIRL
  266. izlude_c,138,163,5 duplicate(pss) Point Merchant#Izlude_c 8_F_GIRL
  267. izlude_d,138,163,5 duplicate(pss) Point Merchant#Izlude_d 8_F_GIRL
  268. malangdo,214,163,5 duplicate(pss) Point Merchant#Malangdo 8_F_GIRL
  269. mora,115,118,3 duplicate(pss) Point Merchant#Mora 8_F_GIRL
  270. ra_in01,256,273,3 duplicate(pss) Point Merchant#Rachel 8_F_GIRL
  271. veins,202,128,5 duplicate(pss) Point Merchant#Veins 8_F_GIRL
  272. dicastes01,207,200,5 duplicate(pss) Point Merchant#Dicastes 8_F_GIRL
  273. manuk,261,206,3 duplicate(pss) Point Merchant#Manuk 8_F_GIRL
  274. splendide,207,160,5 duplicate(pss) Point Merchant#Splendide 8_F_GIRL
  275. mid_camp,224,237,3 duplicate(pss) Point Merchant#Midgard 8_F_GIRL