MalangdoCulvert.txt 37 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037
  1. //===== rAthena Script =======================================
  2. //= Malangdo Culvert
  3. //===== By: ==================================================
  4. //= Euphy
  5. //===== Current Version: =====================================
  6. //= 1.1
  7. //===== Compatible With: =====================================
  8. //= rAthena Project
  9. //===== Description: =========================================
  10. //= [Official Conversion]
  11. //= Clean the culverts and defeat the Coelacanth.
  12. //= Daily and weekly quests are available.
  13. //= Contains a normal mode and hard mode.
  14. //===== Additional Comments: =================================
  15. //= 1.0 First version. [Euphy]
  16. //= Letters "n" and "h" in NPC names indicate difficulty.
  17. //= 1.0a There is no minimum party size on official servers.
  18. //= 1.0b Fixed incorrect use of 'close'. [Joseph]
  19. //= 1.1 Instance system rewrite. [Euphy]
  20. //============================================================
  21. // Quest NPCs :: mal_yong
  22. //============================================================
  23. mal_in01,172,28,2 script Albo#mal 561,{
  24. if (checkweight(1201,1) == 0) {
  25. mes "You have too many kinds of objects. Try to continue after reducing those objects.";
  26. close;
  27. }
  28. if (MaxWeight - Weight < 1000) {
  29. mes "You have too many heavy objects. Try to continue after reducing your weight.";
  30. close;
  31. }
  32. if (BaseLevel < 90) {
  33. mes "[Albo]";
  34. mes "Who are you?";
  35. mes "We don't need a weaking!!";
  36. close;
  37. }
  38. setarray .@quests[0],12271,12272,12273,12274;
  39. setarray .@names$[0],
  40. "General Culvert Daily Service","^990000Hard Culvert Daily Service^000000",
  41. "General Culvert Weekly Service","^990000Hard Culvert Weekly Service^000000";
  42. set .@menu$,"Why are doing this job?:";
  43. for(set .@i,0; .@i<4; set .@i,.@i+1) {
  44. if (checkquest(.@quests[.@i],PLAYTIME) > -1) {
  45. set .@status[.@i],2;
  46. set .@menu$, .@menu$+"^aaaaaa- There is no new task -^000000:";
  47. } else if (.@i%2 && BaseLevel < 140) {
  48. set .@status[.@i],0;
  49. set .@menu$, .@menu$+"^aaaaaaCan't take this job because level is too low^000000:";
  50. } else {
  51. set .@status[.@i],1;
  52. set .@menu$, .@menu$+.@names$[.@i]+":";
  53. }
  54. }
  55. mes "[Albo]";
  56. mes "We crossed the sea!";
  57. mes "We are great heroes of Culvert! We do not forgive the seafood that aims at Culvert!";
  58. next;
  59. set .@i, select(.@menu$)-1;
  60. if (.@i == 0) {
  61. mes "[Albo]";
  62. mes "We used to be the henchmen of Mr. Missing! We almost became guards of such a historic site.";
  63. next;
  64. mes "[Albo]";
  65. mes "However, when sea water flooded all precious the resources, my dream... all my dreams melted away...";
  66. next;
  67. mes "[Albo]";
  68. mes "We do not forgive the seafood that invaded our territory. I'll eat them with spicy paste!!!";
  69. next;
  70. mes "^0000ffAlbo's voice shakes with anger. He smacked his lips when he mentioned spicy paste.^000000";
  71. close;
  72. }
  73. switch(.@status[.@i-1]) {
  74. case 0:
  75. mes "[Albo]";
  76. mes "That task is really hard for you, so I can't tell you about it. Why don't you find another one?";
  77. close;
  78. case 1:
  79. break;
  80. case 2:
  81. mes "[Albo]";
  82. mes "I'm sorry. There is no new task yet! If I find any work, I'll tell you so!";
  83. close;
  84. }
  85. switch(.@i) {
  86. case 1: // General Culvert Daily Service
  87. switch(rand(1,6)) {
  88. case 1: callsub L_GiveQuest,.@i,12255,12271,"Deep Sea Crab";
  89. case 2: callsub L_GiveQuest,.@i,12256,12271,"Deep Sea Marse";
  90. case 3: callsub L_GiveQuest,.@i,12257,12271,"Deep Sea Vadon";
  91. case 4: callsub L_GiveQuest,.@i,12258,12271,"Deep Sea Shellfish";
  92. case 5: callsub L_GiveQuest,.@i,12259,12271,"Deep Sea Kukre";
  93. case 6: callsub L_GiveQuest,.@i,12260,12271,"Deep Sea Cornutus";
  94. }
  95. case 2: // Hard Culvert Daily Service
  96. switch(rand(1,6)) {
  97. case 1: callsub L_GiveQuest,.@i,12261,12272,"Deep Sea Marc";
  98. case 2: callsub L_GiveQuest,.@i,12262,12272,"Deep Sea Sword Fish";
  99. case 3: callsub L_GiveQuest,.@i,12263,12272,"Deep Sea Strouf";
  100. case 4: callsub L_GiveQuest,.@i,12264,12272,"Deep Sea Anolian";
  101. case 5: callsub L_GiveQuest,.@i,12265,12272,"Deep Sea Obeanue";
  102. case 6: callsub L_GiveQuest,.@i,12266,12272,"Deep Sea Kapha";
  103. }
  104. case 3: // General Culvert Weekly Service
  105. switch(rand(1,2)) {
  106. case 1: callsub L_GiveQuest,.@i,12267,12273,"Weird Coelacanth";
  107. case 2: callsub L_GiveQuest,.@i,12268,12273,"Gloomy Coelacanth";
  108. }
  109. case 4: // Hard Culvert Weekly Service
  110. switch(rand(1,2)) {
  111. case 1: callsub L_GiveQuest,.@i,12269,12274,"Violent Coelacanth";
  112. case 2: callsub L_GiveQuest,.@i,12270,12274,"Mutant Coelacanth";
  113. }
  114. default:
  115. mes "[Albo]";
  116. mes "Uh!? Where is the task? Let me find that quickly. You must speak with Madeca!";
  117. close;
  118. }
  119. end;
  120. // callsub L_GiveQuest,.@i,<quest 1>,<quest 2>,<monster>;
  121. L_GiveQuest:
  122. setquest getarg(1);
  123. setquest getarg(2);
  124. mes "[Albo]";
  125. mes "Today, the heroes of Culvert!";
  126. mes "We raise our voices and set a date for the extermination of ^0000ff"+getarg(3)+"^000000!";
  127. next;
  128. mes "[Albo]";
  129. switch(getarg(0)) {
  130. case 1:
  131. case 2:
  132. mes "Come on, heroes! Don't be afraid of them! Just go on, since it's a one-day mission!";
  133. break;
  134. case 3:
  135. mes "I'll give you one week to finish this job! Terminate all of them in Culvert Dungeon, Normal Mode!";
  136. break;
  137. case 4:
  138. mes "I'll give you one week to finish this job! Terminate all of them in Culvert Dungeon, Hard Mode!";
  139. break;
  140. }
  141. next;
  142. mes "You received a request for the Extermination of ^005500"+getarg(3)+"^000000. If you need more details, please check the quest window.";
  143. close;
  144. }
  145. mal_in01,172,26,2 script Madeca#mal 544,{
  146. if (checkweight(1201,1) == 0) {
  147. mes "You have too many kinds of objects. Try to continue after reducing those objects.";
  148. close;
  149. }
  150. if (MaxWeight - Weight < 1000) {
  151. mes "You have too many heavy objects. Try to continue after reducing your weight.";
  152. close;
  153. }
  154. if (BaseLevel < 90) {
  155. mes "[Madeca]";
  156. mes "Karrrrrrr!!";
  157. mes "Let's have some bad seafood that can be boiled or grilled!";
  158. next;
  159. mes "[Madeca]";
  160. mes "Who are you? You are such a totterer. Even seaweed could kill you!";
  161. close;
  162. }
  163. mes "[Madeca]";
  164. mes "Oh?";
  165. mes "You're the one who took care of my big brother Albo's request. It was a hard job!";
  166. next;
  167. set .@i, select("What are you doing here?:General Culvert Daily Service Compensation:Hard Culvert Daily Service Compensation:General Culvert Weekly Service Compensation:Hard Culvert Weekly Service Compensation")-1;
  168. if (.@i == 0) {
  169. mes "[Madeca]";
  170. mes "I'm here to help my big brother Albo!";
  171. next;
  172. mes "[Madeca]";
  173. mes "We provide precious materials to humans who make sludge out of the bad seafood in the Culverts!";
  174. next;
  175. mes "[Madeca]";
  176. mes "We provide A~B Grade Coins as compensation for daily service, and the precious Sea God's Wrath as compensation for weekly service.";
  177. next;
  178. mes "[Madeca]";
  179. mes "If you take care of big brother Albo's request, I will see you very often. So, let's stay close!";
  180. close;
  181. }
  182. mes "[Madeca]";
  183. mes "I can't give you compensation for an expired request, so let me check if any of yours have expired.";
  184. next;
  185. specialeffect2 EF_SPHERE;
  186. progressbar "0xFFFF00",3;
  187. specialeffect2 EF_STEAL;
  188. switch(.@i) {
  189. case 1: // General Culvert Daily Service
  190. if (checkquest(12271,PLAYTIME) == 2)
  191. callsub L_EraseQuest,12255,12256,12257,12258,12259,12260,12271;
  192. else {
  193. // Reward: 2x B Grade Coin
  194. callsub L_CheckQuest,12255,"Deep Sea Crab",6419,2;
  195. callsub L_CheckQuest,12256,"Deep Sea Marse",6419,2;
  196. callsub L_CheckQuest,12257,"Deep Sea Vadon",6419,2;
  197. callsub L_CheckQuest,12258,"Deep Sea Shellfish",6419,2;
  198. callsub L_CheckQuest,12259,"Deep Sea Kukre",6419,2;
  199. callsub L_CheckQuest,12260,"Deep Sea Cornutus",6419,2;
  200. }
  201. break;
  202. case 2: // Hard Culvert Daily Service
  203. if (checkquest(12272,PLAYTIME) == 2)
  204. callsub L_EraseQuest,12261,12262,12263,12264,12265,12266,12272;
  205. else {
  206. // Reward: 1x A Grade Coin
  207. callsub L_CheckQuest,12261,"Deep Sea Marc",6418,1;
  208. callsub L_CheckQuest,12262,"Deep Sea Sword Fish",6418,1;
  209. callsub L_CheckQuest,12263,"Deep Sea Strouf",6418,1;
  210. callsub L_CheckQuest,12264,"Deep Sea Anolian",6418,1;
  211. callsub L_CheckQuest,12265,"Deep Sea Obeaune",6418,1;
  212. callsub L_CheckQuest,12266,"Deep Sea Kapha",6418,1;
  213. }
  214. break;
  215. case 3: // General Culvert Weekly Service
  216. if (checkquest(12273,PLAYTIME) == 2)
  217. callsub L_EraseQuest,12267,12268,12273;
  218. else {
  219. // Reward: 1x Sea God's Wrath
  220. callsub L_CheckQuest,12267,"Weird Coelacanth",6423,1;
  221. callsub L_CheckQuest,12268,"Gloomy Coelacanth",6423,1;
  222. }
  223. break;
  224. case 4: // Hard Culvert Weekly Service
  225. if (checkquest(12274,PLAYTIME) == 2)
  226. callsub L_EraseQuest,12269,12270,12274;
  227. else {
  228. // Reward: 5x Sea God's Wrath
  229. callsub L_CheckQuest,12269,"Violent Coelacanth",6423,5;
  230. callsub L_CheckQuest,12270,"Mutant Coelacanth",6423,5;
  231. }
  232. break;
  233. default:
  234. mes "[Madeca]";
  235. mes "Something is wrong. Please check this again!";
  236. close;
  237. }
  238. mes "[Madeca]";
  239. mes "I don't see any completed mission!";
  240. close;
  241. L_EraseQuest:
  242. for(set .@j,0; .@j<getargcount(); set .@j,.@j+1) {
  243. if (checkquest(getarg(.@j)) > -1)
  244. erasequest getarg(.@j);
  245. }
  246. mes "[Madeca]";
  247. mes "Um, I'm sorry. You exceeded the time limit, so I can't give you any payment.";
  248. close;
  249. // callsub L_CheckQuest,<quest ID>,<monster>,<reward item ID>,<reward item amount>;
  250. L_CheckQuest:
  251. if (checkquest(getarg(0),HUNTING) == 2) {
  252. mes "[Madeca]";
  253. mes "You've punished ^0000ff"+getarg(1)+"^000000!";
  254. mes "Here's your pay!";
  255. erasequest getarg(0);
  256. specialeffect2 EF_STEAL;
  257. getitem getarg(2),getarg(3);
  258. close;
  259. }
  260. return;
  261. }
  262. // Instance Creation :: pump
  263. //============================================================
  264. mal_in01,160,34,4 script Missing, the Cleaner 545,{
  265. if (BaseLevel < 90) {
  266. mes "[Missing, the Cleaner]";
  267. mes "Are you talking to me?!";
  268. next;
  269. mes "[Missing, the Cleaner]";
  270. mes "I'm not sure what made you come here but you can't enter!";
  271. mes "Tomas' orders...";
  272. next;
  273. mes "^770099You must be Base level 90 to enter.^000000";
  274. close;
  275. }
  276. if (in_canal_n == 0) {
  277. mes "[Missing, the Cleaner]";
  278. mes "(trembling)";
  279. next;
  280. mes "^660066This cat looks like it's in bad shape. It is slightly trembling.^000000";
  281. next;
  282. if(select("Pet the cat:Are you ok?") == 1) {
  283. mes "[Missing, the Cleaner]";
  284. mes "Are you talking to me?!";
  285. next;
  286. mes "^660066A trembling cat is looking up at you.^000000";
  287. close;
  288. }
  289. mes "[Missing, the Cleaner]";
  290. mes "Achoo!";
  291. next;
  292. mes "[Missing, the Cleaner]";
  293. mes "We have had many issues during the";
  294. mes "cleaning of the culverts. But a";
  295. mes "cat's gotta do it...";
  296. next;
  297. select("What culvert are you cleaning?");
  298. mes "[Missing, the Cleaner]";
  299. mes "It might look unfamiliar for an";
  300. mes "outsider, but actually this place";
  301. mes "is made to keep souvenirs and";
  302. mes "luxurious things.";
  303. next;
  304. mes "[Missing, the Cleaner]";
  305. mes "After there was a big trembling on";
  306. mes "this island, things started leaking";
  307. mes "around here. So that's why I became";
  308. mes "a cleaner here, though I used";
  309. mes "to be a manager.";
  310. next;
  311. mes "^660066The cat looks like it's been crying...^000000";
  312. next;
  313. mes "[Missing, the Cleaner]";
  314. mes "There is a culvert along this way";
  315. mes "to the basement. There are many bad";
  316. mes "guys who hurt me. I am tired of";
  317. mes "fighting with them so many times a";
  318. mes "day!";
  319. next;
  320. mes "[Missing, the Cleaner]";
  321. mes "Ohh! You touched my fur!";
  322. mes "My fur is falling out... it's all";
  323. mes "those guys' fault~";
  324. next;
  325. mes "^660066You just now notice that the cat's fur is missing in some places.^000000";
  326. next;
  327. select("Why don't you just quit!");
  328. mes "[Missing, the Cleaner]";
  329. mes "I still have to make a living, don't I?";
  330. next;
  331. mes "[Missing, the Cleaner]";
  332. mes "Sometimes I can get a lucky box,";
  333. mes "or even better, I can get cans...";
  334. next;
  335. if(select("Okay, cheers!:I will help if possible...") == 1) {
  336. mes "[Missing, the Cleaner]";
  337. mes "Thank you. I am going back to pour the water!";
  338. close;
  339. }
  340. mes "[Missing, the Cleaner]";
  341. mes "(turns down his voice)";
  342. mes "If you really want to help, come closer!";
  343. next;
  344. select("(get in closer)");
  345. mes "[Missing, the Cleaner]";
  346. mes "Not everyone can be an assistant";
  347. mes "here. But I can't help choosing";
  348. mes "anyone at the moment...";
  349. next;
  350. mes "[Missing, the Cleaner]";
  351. mes "If you want to go down here, let me get this code.";
  352. next;
  353. mes "^660066The cat scribbles a memo for code to you.^000000";
  354. next;
  355. select("Open the memo.");
  356. mes "^660000Aragam insulted me.^000000";
  357. next;
  358. mes "[Missing, the Cleaner]";
  359. mes "You must be here with friends";
  360. mes "because you can't go in alone! And";
  361. mes "the password code will be from the";
  362. mes "party leader!";
  363. next;
  364. mes "[Missing, the Cleaner]";
  365. mes "What is also important is you must";
  366. mes "have a Seagod Protection with you.";
  367. next;
  368. mes "[Missing, the Cleaner]";
  369. mes "Don't forget! I will not open the";
  370. mes "door if you do not have Seagod Protection!";
  371. set in_canal_n,1;
  372. close;
  373. }
  374. if (countitem(6436) == 0) {
  375. mes "[Missing, the Cleaner]";
  376. mes "You don't look like you have Seagod Protection. I can't open door at the moment!";
  377. close;
  378. }
  379. set .@party_id,getcharid(1);
  380. set .@md_name$,"Culvert";
  381. if (!.@party_id) {
  382. mes "^0000ffYou have to organize a party of";
  383. mes "more than 1 member or be a member";
  384. mes "of the party and come back.^000000";
  385. close;
  386. }
  387. set .@playtime, checkquest(12254,PLAYTIME);
  388. if (.@playtime == -1) {
  389. if (is_party_leader() == true) {
  390. mes "[Missing, the Cleaner]";
  391. mes "Ummm? What's up? Tell me the password if you're the leader!";
  392. next;
  393. switch(select("No... nothing.:Aragam insulted me.:Enter the Culvert.")) {
  394. case 1:
  395. mes "[Missing, the Cleaner]";
  396. mes "What a rookie.";
  397. close;
  398. case 2:
  399. if (instance_create(.@md_name$) < 0) {
  400. mes "Party name: "+getpartyname(.@party_id);
  401. mes "Party leader: "+strcharinfo(0);
  402. mes "^0000ff"+.@md_name$+"^000000 - Reservation Failed!";
  403. close;
  404. }
  405. mes "^3333FF"+.@md_name$+"^000000 - Reserving";
  406. mes "After making the reservation, you";
  407. mes "have to select Enter the Culvert.";
  408. close;
  409. case 3:
  410. callsub L_Enter,0;
  411. }
  412. }
  413. if(select("Enter Culvert:Cancel") == 2)
  414. end;
  415. callsub L_Enter,1;
  416. } else if (.@playtime == 0 || .@playtime == 1) {
  417. mes "You can enter the Culvert if the gate is open.";
  418. next;
  419. if(select("Enter Culvert:Cancel") == 2)
  420. close;
  421. callsub L_Enter,0;
  422. } else if (.@playtime == 2) {
  423. mes "^0000ffThe gate to the Culvert is open again.^000000";
  424. erasequest 12254;
  425. close;
  426. }
  427. end;
  428. L_Enter:
  429. switch(instance_enter("Culvert")) {
  430. case IE_OTHER:
  431. mes "An unknown error has occurred.";
  432. close;
  433. case IE_NOINSTANCE:
  434. mes "The gate to the Culvert is still closed.";
  435. mes "You must wait until you are able to enter or find a party leader who can create the instance.";
  436. close;
  437. case IE_NOMEMBER:
  438. mes "Only party members can participate.";
  439. close;
  440. case IE_OK:
  441. mapannounce "mal_in01", strcharinfo(0)+" of the party "+getpartyname(getcharid(1))+" is entering the Culvert.",bc_map,"0x00ff99";
  442. if (checkquest(12254) == -1) setquest 12254;
  443. //warp "1@pump",63,98;
  444. if (getarg(0) == 0) close;
  445. else end;
  446. }
  447. }
  448. // Instance: Common Scripts
  449. //============================================================
  450. 1@pump,63,100,4 script Missing, the Cleaner#0 545,{
  451. if (is_party_leader() == false) {
  452. mes "[Missing, the Cleaner]";
  453. mes "I am trying to have a conversation with your leader now. Please don't disturb and wait!";
  454. close;
  455. }
  456. mes "[Missing, the Cleaner]";
  457. mes "This is the underground culvert where you will clean with your friends!";
  458. next;
  459. mes "[Missing, the Cleaner]";
  460. mes "I'll open the door first. By the way, do you know how to fight?";
  461. next;
  462. switch(select("I'm pretty good at delivering bread.:I know how to fight.:^ffffffGive me the diamond.^000000")) {
  463. case 1:
  464. mes "[Missing, the Cleaner]";
  465. mes "Ok then, I'll let you clean the culverts here as usual! I will prepare at the right-hand corner, please follow me!";
  466. next;
  467. if(select("Wait! I changed my mind!:As you wish~") == 1) {
  468. mes "[Missing, the Cleaner]";
  469. mes "Huh? Not ready yet? Talk to me again when you're ready.";
  470. close;
  471. }
  472. set 'party_id,getcharid(1);
  473. mapannounce instance_mapname("1@pump"),"Missing: Move toward the 3 o'clock direction and wait for my next order!",bc_map,"0xff88ff",FW_NORMAL,15;
  474. disablenpc instance_npcname("Missing, the Cleaner#0");
  475. enablenpc instance_npcname("Missing, the Cleaner#n");
  476. close;
  477. case 2:
  478. if (BaseLevel < 140) {
  479. mes "[Missing, the Cleaner]";
  480. mes "Hmmm... Missing thinks you're weak! Tell me the truth!!";
  481. close;
  482. }
  483. mes "[Missing, the Cleaner]";
  484. mes "Huh? You have some fighting skills? Well, then, there is one place I wasn't able to clean... why don't you go there?!";
  485. next;
  486. mes "[Missing, the Cleaner]";
  487. mes "I must tell you that it's been such a long~~ time since we've cleaned that place, so anyone under level 140 cannot even enter! Are you sure you still want to go?";
  488. next;
  489. if(select("Wait! I changed my mind!:Sure, I'm prepared already~") == 1) {
  490. mes "[Missing, the Cleaner]";
  491. mes "Hmm? Talk to me again when you're ready.";
  492. close;
  493. }
  494. set 'party_id,getcharid(1);
  495. mapannounce instance_mapname("1@pump"),"Missing: I'll go in first, so follow me! I'll open up a gate at the 3 o'clock direction!",bc_map,"0xff88ff",FW_NORMAL,15;
  496. disablenpc instance_npcname("Missing, the Cleaner#0");
  497. enablenpc instance_npcname("Culvert Entrance#i");
  498. close;
  499. case 3:
  500. mes "[Missing, the Cleaner]";
  501. mes "I told you not to play with me~!";
  502. close;
  503. }
  504. end;
  505. }
  506. 1@pump,84,105,0 script Culvert Entrance#i 45,3,3,{
  507. end;
  508. OnInstanceInit:
  509. disablenpc instance_npcname("Culvert Entrance#i");
  510. disablenpc instance_npcname("Culvert Entrance#n"); // disable warp out
  511. end;
  512. OnTouch:
  513. if (BaseLevel >= 140)
  514. warp instance_mapname("2@pump"),38,88;
  515. else
  516. warp instance_mapname("1@pump"),74,105;
  517. end;
  518. }
  519. function script F_mal_missing {
  520. mes "[Missing, the Cleaner]";
  521. mes "I will tell you how to clean shortly. Can you see the culverts around you?";
  522. next;
  523. if(select("What culverts??:Yes, I see them.") == 1) {
  524. mes "[Missing, the Cleaner]";
  525. mes "Huh? Is this your first time seeing culverts? You'll see many buried machines in the ground. You may look around and come back!";
  526. close;
  527. }
  528. mes "[Missing, the Cleaner]";
  529. mes "That's right! Those culverts are very important! We must clean the culverts to prevent seaweed from blocking them. This is what we, cleaners, do!";
  530. next;
  531. mes "[Missing, the Cleaner]";
  532. mes "Watch out! Some monsters will be after you while you're cleaning the culverts! But do not yield to them!";
  533. next;
  534. mes "[Missing, the Cleaner]";
  535. mes "And... NEVER let 6 seaweeds stack! Up to 5 is acceptable! If there are 6, I'll drag you out of here!!";
  536. next;
  537. mes "[Missing, the Cleaner]";
  538. mes "I don't care if you get help from your friends or not. I want you to clean up all culverts! Don't forget! I will watch you and give you instructions. Just do what I said!!";
  539. next;
  540. if (is_party_leader() == false) {
  541. mes "[Missing, the Cleaner]";
  542. mes "Once your leader finishes preparing, it will begin, so get your hearts ready for it!!";
  543. close;
  544. }
  545. mes "[Missing, the Cleaner]";
  546. mes "So, are you ready to clean now?";
  547. next;
  548. switch(select("Wait! Not yet!:Let's start!")) {
  549. case 1:
  550. mes "[Missing, the Cleaner]";
  551. mes "Huh? Not ready yet? Then talk to me when you're ready.";
  552. close;
  553. case 2:
  554. mes "[Missing, the Cleaner]";
  555. mes "OK! Now it begins!";
  556. return;
  557. }
  558. }
  559. // Instance: Normal Mode :: in_pump1
  560. //============================================================
  561. 1@pump,84,105,4 script Missing, the Cleaner#nf 545,{
  562. mes "[Missing, the Cleaner]";
  563. mes "I have the cleaning job for 40 years and I've never seen such a terrible team!!";
  564. next;
  565. mes "[Missing, the Cleaner]";
  566. mes "I see seaweed everywhere because you're wiggling! All the culverts will be blocked with seaweed!";
  567. next;
  568. if (is_party_leader() == false) {
  569. mes "[Missing, the Cleaner]";
  570. mes "Once your leader finishes preparing, settlement will be decided so get your hearts ready for it!!";
  571. close;
  572. }
  573. mes "[Missing, the Cleaner]";
  574. mes "If you got some guts to challenge again, I'll give you another chance! What's your choice going to be!?";
  575. next;
  576. switch(select("Wait! Not yet!:Okay, let's start again!")) {
  577. case 1:
  578. mes "[Missing, the Cleaner]";
  579. mes "You're still slow! Talk to me again whenever your're ready.";
  580. close;
  581. case 2:
  582. mes "[Missing, the Cleaner]";
  583. mes "Ok! Let's start now!";
  584. set .@i$, charat(strnpcinfo(2),0);
  585. enablenpc instance_npcname("Missing, the Cleaner#"+.@i$);
  586. donpcevent instance_npcname("Missing, the Cleaner#"+.@i$)+"::OnStart";
  587. disablenpc instance_npcname("Culvert Entrance#"+.@i$);
  588. disablenpc instance_npcname("Missing, the Cleaner#"+.@i$+"o");
  589. donpcevent instance_npcname("Monster Hole#"+.@i$)+"::OnClear";
  590. disablenpc instance_npcname(strnpcinfo(0));
  591. close;
  592. }
  593. close;
  594. OnInstanceInit:
  595. disablenpc instance_npcname(strnpcinfo(0));
  596. end;
  597. }
  598. 1@pump,84,105,4 script Missing, the Cleaner#n 545,{
  599. callfunc "F_mal_missing";
  600. donpcevent instance_npcname("Missing, the Cleaner#n")+"::OnStart";
  601. close;
  602. OnInstanceInit:
  603. disablenpc instance_npcname("Missing, the Cleaner#n");
  604. end;
  605. OnStart:
  606. killmonster instance_mapname("1@pump"),instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead";
  607. disablenpc instance_npcname("Missing, the Cleaner#n");
  608. initnpctimer;
  609. end;
  610. OnAddSeaweed:
  611. set .@map$, instance_mapname("1@pump");
  612. areamonster .@map$,55,99,61,105,"Contaminated Seaweed",2191,1,instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead";
  613. set .@mob_dead_num, mobcount(.@map$,instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead");
  614. if (.@mob_dead_num >= 6)
  615. donpcevent instance_npcname("Missing, the Cleaner#n")+"::OnFail";
  616. else
  617. mapannounce .@map$,"Contaminated Seaweed: "+.@mob_dead_num+" stem",bc_map,"0xff3333",FW_NORMAL,20;
  618. end;
  619. OnMyMobDead:
  620. end;
  621. OnFail:
  622. stopnpctimer;
  623. donpcevent instance_npcname("Monster Hole#n")+"::OnClear";
  624. set .@map$, instance_mapname("1@pump");
  625. killmonster .@map$,instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead";
  626. enablenpc instance_npcname("Missing, the Cleaner#nf");
  627. mapannounce .@map$,"What is this!! Seaweed is all over the culverts! You're done with cleaning! Get out!!",bc_map,"0xff88ff",FW_NORMAL,15;
  628. disablenpc instance_npcname("Missing, the Cleaner#n");
  629. end;
  630. OnTimer100:
  631. mapannounce instance_mapname("1@pump"),"First culvert will be opened in 5 sec. Cleaner can find the opened drain and click to start cleaning.",bc_map,"0x00ffcc",FW_NORMAL,15;
  632. end;
  633. OnTimer5500:
  634. mapannounce instance_mapname("1@pump"),"The one who's in charge of cleaning the culvert cannot move or be attacked until the casting is over.",bc_map,"0x00ffcc",FW_NORMAL,15;
  635. donpcevent instance_npcname("Monster Hole#n")+"::OnSpawn";
  636. end;
  637. OnTimer45000:
  638. OnTimer95000:
  639. OnTimer145000:
  640. OnTimer195000:
  641. OnTimer245000:
  642. OnTimer295000:
  643. OnTimer345000:
  644. OnTimer395000:
  645. OnTimer445000:
  646. mapannounce instance_mapname("1@pump"),"Next culvert will be opened in 5 sec. Please hurry up and find the position of the next culvert.",bc_map,"0x00ffcc",FW_NORMAL,15;
  647. end;
  648. OnTimer50000:
  649. OnTimer100000:
  650. OnTimer150000:
  651. donpcevent instance_npcname("Monster Hole#n")+"::OnSpawn";
  652. end;
  653. OnTimer200000:
  654. OnTimer250000:
  655. OnTimer300000:
  656. OnTimer350000:
  657. OnTimer400000:
  658. OnTimer450000:
  659. set .@mob_dead_num, mobcount(instance_mapname("1@pump"),instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead");
  660. if (.@mob_dead_num >= 6)
  661. donpcevent instance_npcname("Missing, the Cleaner#n")+"::OnFail";
  662. else
  663. donpcevent instance_npcname("Monster Hole#n")+"::OnSpawn";
  664. end;
  665. OnTimer515000:
  666. set .@map$, instance_mapname("1@pump");
  667. set .@mob_dead_num, mobcount(.@map$,instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead");
  668. mapannounce .@map$,"Contaminated Seaweed: "+.@mob_dead_num+" stem. Missing will come and inspect the results of the cleaning soon.",bc_map,"0xff3333",FW_NORMAL,20;
  669. end;
  670. OnTimer520000:
  671. stopnpctimer;
  672. set .@mob_dead_num, mobcount(instance_mapname("1@pump"),instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead");
  673. if (.@mob_dead_num >= 6)
  674. donpcevent instance_npcname("Missing, the Cleaner#n")+"::OnFail";
  675. else
  676. donpcevent instance_npcname("Boss Creation#n")+"::OnEnable";
  677. end;
  678. }
  679. 1@pump,1,1,4 script Monster Hole#n -1,{
  680. end;
  681. OnSpawn:
  682. set .@i$, charat(strnpcinfo(2),0);
  683. if (.@i$ == "n")
  684. set .@n,6;
  685. else if (.@i$ == "h")
  686. set .@n,10;
  687. donpcevent instance_npcname("#Culvert_"+.@i$+rand(1,.@n))+"::OnEnable";
  688. end;
  689. OnClear:
  690. set .@i$, charat(strnpcinfo(2),0);
  691. if (.@i$ == "n")
  692. set .@n,6;
  693. else if (.@i$ == "h")
  694. set .@n,10;
  695. for(set .@i,1; .@i<=.@n; set .@i,.@i+1)
  696. donpcevent instance_npcname("#Culvert_"+.@i$+.@n)+"::OnClear";
  697. end;
  698. }
  699. 1@pump,36,111,4 script #Culvert_n1 844,14,14,{ //temporary workaround for ALL_SAMEMAP
  700. progressbar "0xFFFF00",10;
  701. stopnpctimer;
  702. disablenpc instance_npcname(strnpcinfo(0));
  703. end;
  704. OnInstanceInit:
  705. disablenpc instance_npcname(strnpcinfo(0));
  706. end;
  707. OnEnable:
  708. enablenpc instance_npcname(strnpcinfo(0));
  709. set .@label$, instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
  710. set .@map$, instance_mapname("1@pump");
  711. set .@index, atoi(charat(strnpcinfo(2),9));
  712. switch(.@index) {
  713. case 1: setarray .@c[0],32,107,40,115; break;
  714. case 2: setarray .@c[0],64,120,72,128; break;
  715. case 3: setarray .@c[0],76,110,84,118; break;
  716. case 4: setarray .@c[0],36,76,44,84; break;
  717. case 5: setarray .@c[0],71,76,79,84; break;
  718. case 6: setarray .@c[0],54,97,62,105; break;
  719. }
  720. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Crab",2176,rand(1,3),.@label$;
  721. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Marse",2175,rand(1,3),.@label$;
  722. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Vadon",2174,rand(1,3),.@label$;
  723. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Shellfish",2178,rand(1,3),.@label$;
  724. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Kukre",2179,rand(1,3),.@label$;
  725. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Cornutus",2177,rand(1,3),.@label$;
  726. specialeffect EF_MAPPILLAR2,ALL_SAMEMAP; //currently broken
  727. getmapxy(.@map$,.@x,.@y,BL_NPC);
  728. getpartymember 'party_id,2;
  729. copyarray .@partymemberaid[0],$@partymemberaid[0],$@partymembercount;
  730. for(set .@i,0; .@i<$@partymembercount; set .@i,.@i+1) {
  731. if (attachrid(.@partymemberaid[.@i])) {
  732. if (strcharinfo(3) == .@map$)
  733. viewpoint 0,.@x,.@y,.@index,0xFFFF00;
  734. detachrid;
  735. }
  736. }
  737. initnpctimer;
  738. end;
  739. OnMyMobDead:
  740. end;
  741. OnClear:
  742. stopnpctimer;
  743. killmonster instance_mapname("1@pump"),instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
  744. end;
  745. OnTimer49500: //OnTimer50000 clashes with the timer in "Missing, the Cleaner#h".
  746. donpcevent instance_npcname("Missing, the Cleaner#n")+"::OnAddSeaweed";
  747. donpcevent instance_npcname(strnpcinfo(0))+"::OnClear";
  748. disablenpc instance_npcname(strnpcinfo(0));
  749. end;
  750. OnTouch:
  751. specialeffect EF_MAPPILLAR2;
  752. end;
  753. }
  754. 1@pump,68,124,4 duplicate(#Culvert_n1) #Culvert_n2 844,14,14
  755. 1@pump,80,114,4 duplicate(#Culvert_n1) #Culvert_n3 844,14,14
  756. 1@pump,40,80,4 duplicate(#Culvert_n1) #Culvert_n4 844,14,14
  757. 1@pump,75,80,4 duplicate(#Culvert_n1) #Culvert_n5 844,14,14
  758. 1@pump,58,101,4 duplicate(#Culvert_n1) #Culvert_n6 844,14,14
  759. 1@pump,1,1,4 script Boss Creation#n -1,{
  760. end;
  761. OnInstanceInit:
  762. disablenpc instance_npcname(strnpcinfo(0));
  763. end;
  764. OnEnable:
  765. enablenpc instance_npcname(strnpcinfo(0));
  766. initnpctimer;
  767. end;
  768. OnTimer100:
  769. set .@i$, charat(strnpcinfo(2),0);
  770. if (.@i$ == "n")
  771. mapannounce instance_mapname("1@pump"),"Hmm! That wasn't so bad!",bc_map,"0xff88ff",FW_NORMAL,15;
  772. else if (.@i$ == "h")
  773. mapannounce instance_mapname("2@pump"),"Hmm! You guys are pretty good!!",bc_map,"0xff88ff",FW_NORMAL,15;
  774. end;
  775. OnTimer5000:
  776. mapannounce strnpcinfo(4),"Let's pack up and go... WHAT!!?",bc_map,"0xff88ff",FW_NORMAL,15;
  777. end;
  778. OnTimer10000:
  779. mapannounce strnpcinfo(4),"I sense something strange!! Don't loosen up-- prepare for a fight!!",bc_map,"0xff88ff",FW_NORMAL,15;
  780. end;
  781. OnTimer20000:
  782. stopnpctimer;
  783. set .@i$, charat(strnpcinfo(2),0);
  784. set .@label$, instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
  785. if (rand(1,100) > 50) {
  786. if (.@i$ == "n")
  787. monster instance_mapname("1@pump"),0,0,"Weird Coelacanth",2188,1,.@label$;
  788. else if (.@i$ == "h")
  789. monster instance_mapname("2@pump"),0,0,"Mutant Coelacanth",2189,1,.@label$;
  790. mapannounce strnpcinfo(4),"Something big inside the abyss appears with a huge noise.",bc_map,"0x00ffcc",FW_NORMAL,15;
  791. } else {
  792. if (.@i$ == "n")
  793. monster instance_mapname("1@pump"),0,0,"Gloomy Coelacanth",2187,1,.@label$;
  794. else if (.@i$ == "h")
  795. monster instance_mapname("2@pump"),0,0,"Violent Coelacanth",2190,1,.@label$;
  796. mapannounce strnpcinfo(4),"Something savage inside the abyss appears with a huge noise.",bc_map,"0x00ffcc",FW_NORMAL,15;
  797. }
  798. end;
  799. OnMyMobDead:
  800. if (mobcount(strnpcinfo(4),instance_npcname(strnpcinfo(0))+"::OnMyMobDead") < 1) {
  801. mapannounce strnpcinfo(4),"You've destroyed all monsters in the culverts. There are trophies lying on the ground, please look for them.",bc_map,"0xffff00",FW_NORMAL,15;
  802. set .@i$, charat(strnpcinfo(2),0);
  803. set .@map$, strnpcinfo(4);
  804. enablenpc instance_npcname("Culvert Entrance#"+.@i$);
  805. enablenpc instance_npcname("Missing, the Cleaner#"+.@i$+"o");
  806. if (.@i$ == "n") {
  807. for(set .@i,0; .@i<10; set .@i,.@i+1) {
  808. set .@j, rand(1,6401);
  809. if (.@j < 5001) set .@item,12636; //Malang_Sp_Can
  810. else if (.@j < 5501) set .@item,12615; //Low_Coin_Pocket
  811. else if (.@j < 6001) set .@item,12621; //Egrade_Pocket
  812. else if (.@j < 6201) set .@item,12620; //Dgrade_Pocket
  813. else if (.@j < 6401) set .@item,12623; //High_Weapon_Box
  814. else continue;
  815. makeitem .@item,1,.@map$,rand(40,77),rand(87,120);
  816. }
  817. } else if (.@i$ == "h") {
  818. for(set .@i,0; .@i<10; set .@i,.@i+1) {
  819. set .@j, rand(1,5001);
  820. if (.@j < 2001) set .@item,12615; //Low_Coin_Pocket
  821. else if (.@j < 3001) set .@item,12621; //Egrade_Pocket
  822. else if (.@j < 4001) set .@item,12620; //Dgrade_Pocket
  823. else if (.@j < 4501) set .@item,12619; //Cgrade_Pocket
  824. else if (.@j < 5001) set .@item,12623; //High_Weapon_Box
  825. else continue;
  826. makeitem .@item,1,.@map$,rand(40,77),rand(87,120);
  827. }
  828. }
  829. } else
  830. mapannounce strnpcinfo(4),"There are still monsters alive.",bc_map,"0x00ff99",FW_NORMAL,20;
  831. end;
  832. }
  833. 1@pump,84,105,4 script Missing, the Cleaner#no 545,{
  834. set .@i$, charat(strnpcinfo(2),0);
  835. if (.@i$ == "n") {
  836. mes "[Missing, the Cleaner]";
  837. mes "I was very surprised!!";
  838. next;
  839. mes "[Missing, the Cleaner]";
  840. mes "That funny-looking fish seems to be one of Coelacanths living around here. This is my first time seeing one coming here alone!";
  841. next;
  842. mes "[Missing, the Cleaner]";
  843. mes "I'll clean up the remains. Go pack and leave! Enterance is located on the other side, look for it!";
  844. next;
  845. } else if (.@i$ == "h") {
  846. mes "[Missing, the Cleaner]";
  847. mes "You've destroyed an immense monster!";
  848. next;
  849. mes "[Missing, the Cleaner]";
  850. mes "The one you destroyed was among the variety of Coelacanths. Others have tried to destroy them but failed.";
  851. next;
  852. mes "[Missing, the Cleaner]";
  853. mes "I'll clean up the remains. You go ahead to get trophies and leave!";
  854. next;
  855. }
  856. mes "[Missing, the Cleaner]";
  857. mes "One more thing! DO NOT TALK to ANYONE about what you've seen here today!!";
  858. next;
  859. mes "[Missing, the Cleaner]";
  860. mes "If Tomas closes this down, we will lose our jobs!";
  861. close;
  862. OnInstanceInit:
  863. disablenpc instance_npcname(strnpcinfo(0));
  864. end;
  865. }
  866. 1@pump,32,100,0 warp2 Culvert Entrance#n 3,3,mal_in01,161,32
  867. //MD_Putmob "1@pump" 0 0 0 0 20 HYDRA 0 0 2
  868. 1@pump,1,1,4 script Hydra#n -1,{
  869. OnInstanceInit:
  870. monster strnpcinfo(4),0,0,"Hydra",1068,20;
  871. end;
  872. }
  873. // Instance: Hard Mode :: in_pump2
  874. //============================================================
  875. 2@pump,39,88,4 duplicate(Missing, the Cleaner#nf) Missing, the Cleaner#hf 545
  876. 2@pump,39,88,4 script Missing, the Cleaner#h 545,{
  877. callfunc "F_mal_missing";
  878. donpcevent instance_npcname("Missing, the Cleaner#h")+"::OnStart";
  879. close;
  880. OnStart:
  881. killmonster instance_mapname("2@pump"),instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead";
  882. disablenpc instance_npcname("Missing, the Cleaner#h");
  883. initnpctimer;
  884. end;
  885. OnAddSeaweed:
  886. set .@map$, instance_mapname("2@pump");
  887. areamonster .@map$,75,78,85,88,"Contaminated Seaweed",2191,1,instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead";
  888. set .@mob_dead_num, mobcount(.@map$,instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead");
  889. if (.@mob_dead_num >= 6)
  890. donpcevent instance_npcname("Missing, the Cleaner#h")+"::OnFail";
  891. else
  892. mapannounce .@map$,"Proliferous Contaminated Seaweed: "+.@mob_dead_num+" stem",bc_map,"0xff3333",FW_NORMAL,20;
  893. end;
  894. OnMyMobDead:
  895. end;
  896. OnFail:
  897. stopnpctimer;
  898. donpcevent instance_npcname("Monster Hole#h")+"::OnClear";
  899. set .@map$, instance_mapname("2@pump");
  900. killmonster .@map$, instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead";
  901. enablenpc instance_npcname("Missing, the Cleaner#hf");
  902. mapannounce .@map$,"What is this!! Seaweed is all over the culverts! You're done with cleaning! Get out!!",bc_map,"0xff88ff",FW_NORMAL,15;
  903. disablenpc instance_npcname("Missing, the Cleaner#h");
  904. end;
  905. OnTimer100:
  906. mapannounce instance_mapname("2@pump"),"First culvert will be opened in 5 sec. Cleaner can find the opened drain and click to start cleaning.",bc_map,"0x00ffcc",FW_NORMAL,15;
  907. end;
  908. OnTimer5500:
  909. mapannounce instance_mapname("2@pump"),"The one who's in charge of cleaning the culvert cannot move or be attacked until the casting is over.",bc_map,"0x00ffcc",FW_NORMAL,15;
  910. donpcevent instance_npcname("Monster Hole#h")+"::OnSpawn";
  911. end;
  912. OnTimer35000:
  913. OnTimer75000:
  914. OnTimer115000:
  915. OnTimer155000:
  916. OnTimer195000:
  917. OnTimer235000:
  918. OnTimer275000:
  919. OnTimer315000:
  920. OnTimer355000:
  921. mapannounce instance_mapname("2@pump"),"Next culvert will be opened in 5 sec. Please hurry up and find the position of the next culvert.",bc_map,"0x00ffcc",FW_NORMAL,15;
  922. end;
  923. OnTimer40000:
  924. OnTimer80000:
  925. OnTimer120000:
  926. donpcevent instance_npcname("Monster Hole#h")+"::OnSpawn";
  927. end;
  928. OnTimer160000:
  929. OnTimer200000:
  930. OnTimer240000:
  931. OnTimer280000:
  932. OnTimer320000:
  933. OnTimer360000:
  934. set .@mob_dead_num, mobcount(instance_mapname("2@pump"),instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead");
  935. if (.@mob_dead_num >= 6)
  936. donpcevent instance_npcname("Missing, the Cleaner#h")+"::OnFail";
  937. else
  938. donpcevent instance_npcname("Monster Hole#h")+"::OnSpawn";
  939. end;
  940. OnTimer420000:
  941. mapannounce instance_mapname("2@pump"),"It seems Missing will come and inspect the results of the cleaning soon. Shall we clean up the mess around here?",bc_map,"0xff3333",FW_NORMAL,20;
  942. end;
  943. OnTimer425000:
  944. stopnpctimer;
  945. set .@mob_dead_num, mobcount(instance_mapname("2@pump"),instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead");
  946. if (.@mob_dead_num >= 6)
  947. donpcevent instance_npcname("Missing, the Cleaner#h")+"::OnFail";
  948. else
  949. donpcevent instance_npcname("Boss Creation#h")+"::OnEnable";
  950. end;
  951. }
  952. 2@pump,53,114,4 script #Culvert_h1 844,14,14,{ //temporary workaround for ALL_SAMEMAP
  953. progressbar "0xFFFF00",15;
  954. stopnpctimer;
  955. disablenpc instance_npcname(strnpcinfo(0));
  956. end;
  957. OnInstanceInit:
  958. disablenpc instance_npcname(strnpcinfo(0));
  959. end;
  960. OnEnable:
  961. enablenpc instance_npcname(strnpcinfo(0));
  962. set .@label$, instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
  963. set .@map$, instance_mapname("2@pump");
  964. set .@index, atoi(substr(strnpcinfo(2),9,getstrlen(strnpcinfo(2))-1));
  965. switch(.@index) {
  966. case 1: setarray .@c[0],49,110,57,118; break;
  967. case 2: setarray .@c[0],75,105,83,113; break;
  968. case 3: setarray .@c[0],110,110,118,118; break;
  969. case 4: setarray .@c[0],94,94,102,102; break;
  970. case 5: setarray .@c[0],58,92,66,100; break;
  971. case 6: setarray .@c[0],53,66,61,74; break;
  972. case 7: setarray .@c[0],43,45,51,53; break;
  973. case 8: setarray .@c[0],77,59,85,67; break;
  974. case 9: setarray .@c[0],96,70,104,78; break;
  975. case 10: setarray .@c[0],111,46,119,54; break;
  976. }
  977. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Marc",2182,rand(2,3),.@label$;
  978. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Sword Fish",2181,rand(2,3),.@label$;
  979. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Strouf",2180,rand(2,3),.@label$;
  980. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Mutant Anolian",2183,rand(2,3),.@label$;
  981. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Obeaune",2184,rand(2,3),.@label$;
  982. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Metamorphous Kapha",2185,rand(2,3),.@label$;
  983. specialeffect EF_MAPPILLAR2,ALL_SAMEMAP; //currently broken
  984. initnpctimer;
  985. end;
  986. OnMyMobDead:
  987. end;
  988. OnClear:
  989. stopnpctimer;
  990. killmonster instance_mapname("2@pump"),instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
  991. end;
  992. OnTimer39500: //OnTimer40000 clashes with the timer in "Missing, the Cleaner#h".
  993. donpcevent instance_npcname("Missing, the Cleaner#h")+"::OnAddSeaweed";
  994. donpcevent instance_npcname(strnpcinfo(0))+"::OnClear";
  995. disablenpc instance_npcname(strnpcinfo(0));
  996. end;
  997. OnTouch:
  998. specialeffect EF_MAPPILLAR2;
  999. end;
  1000. }
  1001. 2@pump,79,109,4 duplicate(#Culvert_h1) #Culvert_h2 844,14,14
  1002. 2@pump,114,114,4 duplicate(#Culvert_h1) #Culvert_h3 844,14,14
  1003. 2@pump,98,98,4 duplicate(#Culvert_h1) #Culvert_h4 844,14,14
  1004. 2@pump,62,96,4 duplicate(#Culvert_h1) #Culvert_h5 844,14,14
  1005. 2@pump,57,70,4 duplicate(#Culvert_h1) #Culvert_h6 844,14,14
  1006. 2@pump,47,49,4 duplicate(#Culvert_h1) #Culvert_h7 844,14,14
  1007. 2@pump,81,63,4 duplicate(#Culvert_h1) #Culvert_h8 844,14,14
  1008. 2@pump,100,74,4 duplicate(#Culvert_h1) #Culvert_h9 844,14,14
  1009. 2@pump,115,50,4 duplicate(#Culvert_h1) #Culvert_h10 844,14,14
  1010. 2@pump,1,1,4 duplicate(Monster Hole#n) Monster Hole#h -1
  1011. 2@pump,1,1,4 duplicate(Boss Creation#n) Boss Creation#h -1
  1012. 2@pump,39,88,4 duplicate(Missing, the Cleaner#no) Missing, the Cleaner#ho 545
  1013. 2@pump,38,100,0 duplicate(Culvert Entrance#n) Culvert Entrance#h 3,3
  1014. //MD_Putmob "2@pump" 0 0 0 0 20 HYDRA 0 0 2
  1015. 2@pump,1,1,4 duplicate(Hydra#n) Hydra#h -1