MalangdoCulvert.txt 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044
  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 (getcharid(0) == getpartyleader(.@party_id,2)) {
  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 3:
  431. mes "An unknown error has occurred.";
  432. close;
  433. case 2:
  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 1:
  438. mes "Only party members can participate.";
  439. close;
  440. case 0:
  441. mapannounce "mal_in01", strcharinfo(0)+" of the party "+getpartyname(.@party_id)+" 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 (getcharid(0) != getpartyleader(getcharid(1),2)) {
  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. end;
  511. OnTouch:
  512. if (BaseLevel >= 140)
  513. warp instance_mapname("2@pump"),38,88;
  514. else
  515. warp instance_mapname("1@pump"),74,105;
  516. end;
  517. }
  518. function script F_mal_missing {
  519. mes "[Missing, the Cleaner]";
  520. mes "I will tell you how to clean shortly. Can you see the culverts around you?";
  521. next;
  522. if(select("What culverts??:Yes, I see them.") == 1) {
  523. mes "[Missing, the Cleaner]";
  524. 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!";
  525. close;
  526. }
  527. mes "[Missing, the Cleaner]";
  528. 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!";
  529. next;
  530. mes "[Missing, the Cleaner]";
  531. mes "Watch out! Some monsters will be after you while you're cleaning the culverts! But do not yield to them!";
  532. next;
  533. mes "[Missing, the Cleaner]";
  534. mes "And... NEVER let 6 seaweeds stack! Up to 5 is acceptable! If there are 6, I'll drag you out of here!!";
  535. next;
  536. mes "[Missing, the Cleaner]";
  537. 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!!";
  538. next;
  539. if (getcharid(0) != getpartyleader(getcharid(1),2)) {
  540. mes "[Missing, the Cleaner]";
  541. mes "Once your leader finishes preparing, it will begin, so get your hearts ready for it!!";
  542. close;
  543. }
  544. mes "[Missing, the Cleaner]";
  545. mes "So, are you ready to clean now?";
  546. next;
  547. switch(select("Wait! Not yet!:Let's start!")) {
  548. case 1:
  549. mes "[Missing, the Cleaner]";
  550. mes "Huh? Not ready yet? Then talk to me when you're ready.";
  551. close;
  552. case 2:
  553. mes "[Missing, the Cleaner]";
  554. mes "OK! Now it begins!";
  555. return;
  556. }
  557. }
  558. // Instance: Normal Mode :: in_pump1
  559. //============================================================
  560. 1@pump,84,105,4 script Missing, the Cleaner#nf 545,{
  561. mes "[Missing, the Cleaner]";
  562. mes "I have the cleaning job for 40 years and I've never seen such a terrible team!!";
  563. next;
  564. mes "[Missing, the Cleaner]";
  565. mes "I see seaweed everywhere because you're wiggling! All the culverts will be blocked with seaweed!";
  566. next;
  567. if (getcharid(0) != getpartyleader(getcharid(1),2)) {
  568. mes "[Missing, the Cleaner]";
  569. mes "Once your leader finishes preparing, settlement will be decided so get your hearts ready for it!!";
  570. close;
  571. }
  572. mes "[Missing, the Cleaner]";
  573. mes "If you got some guts to challenge again, I'll give you another chance! What's your choice going to be!?";
  574. next;
  575. switch(select("Wait! Not yet!:Okay, let's start again!")) {
  576. case 1:
  577. mes "[Missing, the Cleaner]";
  578. mes "You're still slow! Talk to me again whenever your're ready.";
  579. close;
  580. case 2:
  581. mes "[Missing, the Cleaner]";
  582. mes "Ok! Let's start now!";
  583. set .@i$, charat(strnpcinfo(2),0);
  584. enablenpc instance_npcname("Missing, the Cleaner#"+.@i$);
  585. donpcevent instance_npcname("Missing, the Cleaner#"+.@i$)+"::OnStart";
  586. disablenpc instance_npcname("Culvert Entrance#"+.@i$);
  587. disablenpc instance_npcname("Missing, the Cleaner#"+.@i$+"o");
  588. donpcevent instance_npcname("Monster Hole#"+.@i$)+"::OnClear";
  589. disablenpc instance_npcname(strnpcinfo(0));
  590. close;
  591. }
  592. close;
  593. OnInstanceInit:
  594. disablenpc instance_npcname(strnpcinfo(0));
  595. end;
  596. }
  597. 1@pump,84,105,4 script Missing, the Cleaner#n 545,{
  598. callfunc "F_mal_missing";
  599. donpcevent instance_npcname("Missing, the Cleaner#n")+"::OnStart";
  600. close;
  601. OnInstanceInit:
  602. disablenpc instance_npcname("Missing, the Cleaner#n");
  603. end;
  604. OnStart:
  605. killmonster instance_mapname("1@pump"),instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead";
  606. disablenpc instance_npcname("Missing, the Cleaner#n");
  607. initnpctimer;
  608. end;
  609. OnAddSeaweed:
  610. set .@map$, instance_mapname("1@pump");
  611. areamonster .@map$,55,99,61,105,"Contaminated Seaweed",2191,1,instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead";
  612. set .@mob_dead_num, mobcount(.@map$,instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead");
  613. if (.@mob_dead_num >= 6)
  614. donpcevent instance_npcname("Missing, the Cleaner#n")+"::OnFail";
  615. else
  616. mapannounce .@map$,"Contaminated Seaweed: "+.@mob_dead_num+" stem",bc_map,"0xff3333",FW_NORMAL,20;
  617. end;
  618. OnMyMobDead:
  619. end;
  620. OnFail:
  621. stopnpctimer;
  622. donpcevent instance_npcname("Monster Hole#n")+"::OnClear";
  623. set .@map$, instance_mapname("1@pump");
  624. killmonster .@map$,instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead";
  625. enablenpc instance_npcname("Missing, the Cleaner#nf");
  626. mapannounce .@map$,"What is this!! Seaweed is all over the culverts! You're done with cleaning! Get out!!",bc_map,"0xff88ff",FW_NORMAL,15;
  627. disablenpc instance_npcname("Missing, the Cleaner#n");
  628. end;
  629. OnTimer100:
  630. 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;
  631. end;
  632. OnTimer5500:
  633. 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;
  634. donpcevent instance_npcname("Monster Hole#n")+"::OnSpawn";
  635. end;
  636. OnTimer45000:
  637. OnTimer95000:
  638. OnTimer145000:
  639. OnTimer195000:
  640. OnTimer245000:
  641. OnTimer295000:
  642. OnTimer345000:
  643. OnTimer395000:
  644. OnTimer445000:
  645. 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;
  646. end;
  647. OnTimer50000:
  648. OnTimer100000:
  649. OnTimer150000:
  650. donpcevent instance_npcname("Monster Hole#n")+"::OnSpawn";
  651. end;
  652. OnTimer200000:
  653. OnTimer250000:
  654. OnTimer300000:
  655. OnTimer350000:
  656. OnTimer400000:
  657. OnTimer450000:
  658. set .@mob_dead_num, mobcount(instance_mapname("1@pump"),instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead");
  659. if (.@mob_dead_num >= 6)
  660. donpcevent instance_npcname("Missing, the Cleaner#n")+"::OnFail";
  661. else
  662. donpcevent instance_npcname("Monster Hole#n")+"::OnSpawn";
  663. end;
  664. OnTimer515000:
  665. set .@map$, instance_mapname("1@pump");
  666. set .@mob_dead_num, mobcount(.@map$,instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead");
  667. 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;
  668. end;
  669. OnTimer520000:
  670. stopnpctimer;
  671. set .@mob_dead_num, mobcount(instance_mapname("1@pump"),instance_npcname("Missing, the Cleaner#n")+"::OnMyMobDead");
  672. if (.@mob_dead_num >= 6)
  673. donpcevent instance_npcname("Missing, the Cleaner#n")+"::OnFail";
  674. else
  675. donpcevent instance_npcname("Boss Creation#n")+"::OnEnable";
  676. end;
  677. }
  678. 1@pump,1,1,4 script Monster Hole#n -1,{
  679. end;
  680. OnSpawn:
  681. set .@i$, charat(strnpcinfo(2),0);
  682. if (.@i$ == "n")
  683. set .@n,6;
  684. else if (.@i$ == "h")
  685. set .@n,10;
  686. donpcevent instance_npcname("#Culvert_"+.@i$+rand(1,.@n))+"::OnEnable";
  687. end;
  688. OnClear:
  689. set .@i$, charat(strnpcinfo(2),0);
  690. if (.@i$ == "n")
  691. set .@n,6;
  692. else if (.@i$ == "h")
  693. set .@n,10;
  694. for(set .@i,1; .@i<=.@n; set .@i,.@i+1)
  695. donpcevent instance_npcname("#Culvert_"+.@i$+.@n)+"::OnClear";
  696. end;
  697. }
  698. 1@pump,36,111,4 script #Culvert_n1 844,14,14,{ //temporary workaround for ALL_SAMEMAP
  699. progressbar "0xFFFF00",10;
  700. stopnpctimer;
  701. disablenpc instance_npcname(strnpcinfo(0));
  702. end;
  703. OnInstanceInit:
  704. disablenpc instance_npcname(strnpcinfo(0));
  705. end;
  706. OnEnable:
  707. enablenpc instance_npcname(strnpcinfo(0));
  708. set .@label$, instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
  709. set .@map$, instance_mapname("1@pump");
  710. set .@index, atoi(charat(strnpcinfo(2),9));
  711. switch(.@index) {
  712. case 1: setarray .@c[0],32,107,40,115; break;
  713. case 2: setarray .@c[0],64,120,72,128; break;
  714. case 3: setarray .@c[0],76,110,84,118; break;
  715. case 4: setarray .@c[0],36,76,44,84; break;
  716. case 5: setarray .@c[0],71,76,79,84; break;
  717. case 6: setarray .@c[0],54,97,62,105; break;
  718. }
  719. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Crab",2176,rand(1,3),.@label$;
  720. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Marse",2175,rand(1,3),.@label$;
  721. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Vadon",2174,rand(1,3),.@label$;
  722. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Shellfish",2178,rand(1,3),.@label$;
  723. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Kukre",2179,rand(1,3),.@label$;
  724. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Cornutus",2177,rand(1,3),.@label$;
  725. specialeffect EF_MAPPILLAR2,ALL_SAMEMAP; //currently broken
  726. getmapxy(.@map$,.@x,.@y,1);
  727. getpartymember 'party_id,2;
  728. copyarray .@partymemberaid[0],$@partymemberaid[0],$@partymembercount;
  729. for(set .@i,0; .@i<$@partymembercount; set .@i,.@i+1) {
  730. if (attachrid(.@partymemberaid[.@i])) {
  731. if (strcharinfo(3) == .@map$)
  732. viewpoint 0,.@x,.@y,.@index,0xFFFF00;
  733. detachrid;
  734. }
  735. }
  736. initnpctimer;
  737. end;
  738. OnMyMobDead:
  739. end;
  740. OnClear:
  741. stopnpctimer;
  742. killmonster instance_mapname("1@pump"),instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
  743. end;
  744. OnTimer49500: //OnTimer50000 clashes with the timer in "Missing, the Cleaner#h".
  745. donpcevent instance_npcname("Missing, the Cleaner#n")+"::OnAddSeaweed";
  746. donpcevent instance_npcname(strnpcinfo(0))+"::OnClear";
  747. disablenpc instance_npcname(strnpcinfo(0));
  748. end;
  749. OnTouch:
  750. specialeffect EF_MAPPILLAR2;
  751. end;
  752. }
  753. 1@pump,68,124,4 duplicate(#Culvert_n1) #Culvert_n2 844,14,14
  754. 1@pump,80,114,4 duplicate(#Culvert_n1) #Culvert_n3 844,14,14
  755. 1@pump,40,80,4 duplicate(#Culvert_n1) #Culvert_n4 844,14,14
  756. 1@pump,75,80,4 duplicate(#Culvert_n1) #Culvert_n5 844,14,14
  757. 1@pump,58,101,4 duplicate(#Culvert_n1) #Culvert_n6 844,14,14
  758. 1@pump,1,1,4 script Boss Creation#n -1,{
  759. end;
  760. OnInstanceInit:
  761. disablenpc instance_npcname(strnpcinfo(0));
  762. end;
  763. OnEnable:
  764. enablenpc instance_npcname(strnpcinfo(0));
  765. initnpctimer;
  766. end;
  767. OnTimer100:
  768. set .@i$, charat(strnpcinfo(2),0);
  769. if (.@i$ == "n")
  770. mapannounce instance_mapname("1@pump"),"Hmm! That wasn't so bad!",bc_map,"0xff88ff",FW_NORMAL,15;
  771. else if (.@i$ == "h")
  772. mapannounce instance_mapname("2@pump"),"Hmm! You guys are pretty good!!",bc_map,"0xff88ff",FW_NORMAL,15;
  773. end;
  774. OnTimer5000:
  775. mapannounce strnpcinfo(4),"Let's pack up and go... WHAT!!?",bc_map,"0xff88ff",FW_NORMAL,15;
  776. end;
  777. OnTimer10000:
  778. mapannounce strnpcinfo(4),"I sense something strange!! Don't loosen up-- prepare for a fight!!",bc_map,"0xff88ff",FW_NORMAL,15;
  779. end;
  780. OnTimer20000:
  781. stopnpctimer;
  782. set .@i$, charat(strnpcinfo(2),0);
  783. set .@label$, instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
  784. if (rand(1,100) > 50) {
  785. if (.@i$ == "n")
  786. monster instance_mapname("1@pump"),0,0,"Weird Coelacanth",2188,1,.@label$;
  787. else if (.@i$ == "h")
  788. monster instance_mapname("2@pump"),0,0,"Mutant Coelacanth",2189,1,.@label$;
  789. mapannounce strnpcinfo(4),"Something big inside the abyss appears with a huge noise.",bc_map,"0x00ffcc",FW_NORMAL,15;
  790. } else {
  791. if (.@i$ == "n")
  792. monster instance_mapname("1@pump"),0,0,"Gloomy Coelacanth",2187,1,.@label$;
  793. else if (.@i$ == "h")
  794. monster instance_mapname("2@pump"),0,0,"Violent Coelacanth",2190,1,.@label$;
  795. mapannounce strnpcinfo(4),"Something savage inside the abyss appears with a huge noise.",bc_map,"0x00ffcc",FW_NORMAL,15;
  796. }
  797. end;
  798. OnMyMobDead:
  799. if (mobcount(strnpcinfo(4),instance_npcname(strnpcinfo(0))+"::OnMyMobDead") < 1) {
  800. 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;
  801. set .@i$, charat(strnpcinfo(2),0);
  802. set .@map$, strnpcinfo(4);
  803. enablenpc instance_npcname("Culvert Entrance#"+.@i$);
  804. enablenpc instance_npcname("Missing, the Cleaner#"+.@i$+"o");
  805. if (.@i$ == "n") {
  806. for(set .@i,0; .@i<10; set .@i,.@i+1) {
  807. set .@j, rand(1,6401);
  808. if (.@j < 5001) set .@item,12636; //Malang_Sp_Can
  809. else if (.@j < 5501) set .@item,12615; //Low_Coin_Pocket
  810. else if (.@j < 6001) set .@item,12621; //Egrade_Pocket
  811. else if (.@j < 6201) set .@item,12620; //Dgrade_Pocket
  812. else if (.@j < 6401) set .@item,12623; //High_Weapon_Box
  813. else continue;
  814. makeitem .@item,1,.@map$,rand(40,77),rand(87,120);
  815. }
  816. } else if (.@i$ == "h") {
  817. for(set .@i,0; .@i<10; set .@i,.@i+1) {
  818. set .@j, rand(1,5001);
  819. if (.@j < 2001) set .@item,12615; //Low_Coin_Pocket
  820. else if (.@j < 3001) set .@item,12621; //Egrade_Pocket
  821. else if (.@j < 4001) set .@item,12620; //Dgrade_Pocket
  822. else if (.@j < 4501) set .@item,12619; //Cgrade_Pocket
  823. else if (.@j < 5001) set .@item,12623; //High_Weapon_Box
  824. else continue;
  825. makeitem .@item,1,.@map$,rand(40,77),rand(87,120);
  826. }
  827. }
  828. } else
  829. mapannounce strnpcinfo(4),"There are still monsters alive.",bc_map,"0x00ff99",FW_NORMAL,20;
  830. end;
  831. }
  832. 1@pump,84,105,4 script Missing, the Cleaner#no 545,{
  833. set .@i$, charat(strnpcinfo(2),0);
  834. if (.@i$ == "n") {
  835. mes "[Missing, the Cleaner]";
  836. mes "I was very surprised!!";
  837. next;
  838. mes "[Missing, the Cleaner]";
  839. mes "That funny-looking fish seems to be one of Coelacanths living around here. This is my first time seeing one coming here alone!";
  840. next;
  841. mes "[Missing, the Cleaner]";
  842. mes "I'll clean up the remains. Go pack and leave! Enterance is located on the other side, look for it!";
  843. next;
  844. } else if (.@i$ == "h") {
  845. mes "[Missing, the Cleaner]";
  846. mes "You've destroyed an immense monster!";
  847. next;
  848. mes "[Missing, the Cleaner]";
  849. mes "The one you destroyed was among the variety of Coelacanths. Others have tried to destroy them but failed.";
  850. next;
  851. mes "[Missing, the Cleaner]";
  852. mes "I'll clean up the remains. You go ahead to get trophies and leave!";
  853. next;
  854. }
  855. mes "[Missing, the Cleaner]";
  856. mes "One more thing! DO NOT TALK to ANYONE about what you've seen here today!!";
  857. next;
  858. mes "[Missing, the Cleaner]";
  859. mes "If Tomas closes this down, we will lose our jobs!";
  860. close;
  861. OnInstanceInit:
  862. disablenpc instance_npcname(strnpcinfo(0));
  863. end;
  864. }
  865. 1@pump,32,100,0 script Culvert Entrance#n 45,3,3,{
  866. end;
  867. OnInstanceInit:
  868. disablenpc instance_npcname(strnpcinfo(0));
  869. end;
  870. OnTouch:
  871. warp "mal_in01",161,32;
  872. end;
  873. }
  874. //MD_Putmob "1@pump" 0 0 0 0 20 HYDRA 0 0 2
  875. 1@pump,1,1,4 script Hydra#n -1,{
  876. OnInstanceInit:
  877. monster strnpcinfo(4),0,0,"Hydra",1068,20;
  878. end;
  879. }
  880. // Instance: Hard Mode :: in_pump2
  881. //============================================================
  882. 2@pump,39,88,4 duplicate(Missing, the Cleaner#nf) Missing, the Cleaner#hf 545
  883. 2@pump,39,88,4 script Missing, the Cleaner#h 545,{
  884. callfunc "F_mal_missing";
  885. donpcevent instance_npcname("Missing, the Cleaner#h")+"::OnStart";
  886. close;
  887. OnStart:
  888. killmonster instance_mapname("2@pump"),instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead";
  889. disablenpc instance_npcname("Missing, the Cleaner#h");
  890. initnpctimer;
  891. end;
  892. OnAddSeaweed:
  893. set .@map$, instance_mapname("2@pump");
  894. areamonster .@map$,75,78,85,88,"Contaminated Seaweed",2191,1,instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead";
  895. set .@mob_dead_num, mobcount(.@map$,instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead");
  896. if (.@mob_dead_num >= 6)
  897. donpcevent instance_npcname("Missing, the Cleaner#h")+"::OnFail";
  898. else
  899. mapannounce .@map$,"Proliferous Contaminated Seaweed: "+.@mob_dead_num+" stem",bc_map,"0xff3333",FW_NORMAL,20;
  900. end;
  901. OnMyMobDead:
  902. end;
  903. OnFail:
  904. stopnpctimer;
  905. donpcevent instance_npcname("Monster Hole#h")+"::OnClear";
  906. set .@map$, instance_mapname("2@pump");
  907. killmonster .@map$, instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead";
  908. enablenpc instance_npcname("Missing, the Cleaner#hf");
  909. mapannounce .@map$,"What is this!! Seaweed is all over the culverts! You're done with cleaning! Get out!!",bc_map,"0xff88ff",FW_NORMAL,15;
  910. disablenpc instance_npcname("Missing, the Cleaner#h");
  911. end;
  912. OnTimer100:
  913. 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;
  914. end;
  915. OnTimer5500:
  916. 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;
  917. donpcevent instance_npcname("Monster Hole#h")+"::OnSpawn";
  918. end;
  919. OnTimer35000:
  920. OnTimer75000:
  921. OnTimer115000:
  922. OnTimer155000:
  923. OnTimer195000:
  924. OnTimer235000:
  925. OnTimer275000:
  926. OnTimer315000:
  927. OnTimer355000:
  928. 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;
  929. end;
  930. OnTimer40000:
  931. OnTimer80000:
  932. OnTimer120000:
  933. donpcevent instance_npcname("Monster Hole#h")+"::OnSpawn";
  934. end;
  935. OnTimer160000:
  936. OnTimer200000:
  937. OnTimer240000:
  938. OnTimer280000:
  939. OnTimer320000:
  940. OnTimer360000:
  941. set .@mob_dead_num, mobcount(instance_mapname("2@pump"),instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead");
  942. if (.@mob_dead_num >= 6)
  943. donpcevent instance_npcname("Missing, the Cleaner#h")+"::OnFail";
  944. else
  945. donpcevent instance_npcname("Monster Hole#h")+"::OnSpawn";
  946. end;
  947. OnTimer420000:
  948. 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;
  949. end;
  950. OnTimer425000:
  951. stopnpctimer;
  952. set .@mob_dead_num, mobcount(instance_mapname("2@pump"),instance_npcname("Missing, the Cleaner#h")+"::OnMyMobDead");
  953. if (.@mob_dead_num >= 6)
  954. donpcevent instance_npcname("Missing, the Cleaner#h")+"::OnFail";
  955. else
  956. donpcevent instance_npcname("Boss Creation#h")+"::OnEnable";
  957. end;
  958. }
  959. 2@pump,53,114,4 script #Culvert_h1 844,14,14,{ //temporary workaround for ALL_SAMEMAP
  960. progressbar "0xFFFF00",15;
  961. stopnpctimer;
  962. disablenpc instance_npcname(strnpcinfo(0));
  963. end;
  964. OnInstanceInit:
  965. disablenpc instance_npcname(strnpcinfo(0));
  966. end;
  967. OnEnable:
  968. enablenpc instance_npcname(strnpcinfo(0));
  969. set .@label$, instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
  970. set .@map$, instance_mapname("2@pump");
  971. set .@index, atoi(substr(strnpcinfo(2),9,getstrlen(strnpcinfo(2))-1));
  972. switch(.@index) {
  973. case 1: setarray .@c[0],49,110,57,118; break;
  974. case 2: setarray .@c[0],75,105,83,113; break;
  975. case 3: setarray .@c[0],110,110,118,118; break;
  976. case 4: setarray .@c[0],94,94,102,102; break;
  977. case 5: setarray .@c[0],58,92,66,100; break;
  978. case 6: setarray .@c[0],53,66,61,74; break;
  979. case 7: setarray .@c[0],43,45,51,53; break;
  980. case 8: setarray .@c[0],77,59,85,67; break;
  981. case 9: setarray .@c[0],96,70,104,78; break;
  982. case 10: setarray .@c[0],111,46,119,54; break;
  983. }
  984. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Marc",2182,rand(2,3),.@label$;
  985. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Sword Fish",2181,rand(2,3),.@label$;
  986. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Ancient Strouf",2180,rand(2,3),.@label$;
  987. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Mutant Anolian",2183,rand(2,3),.@label$;
  988. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Abysmal Obeaune",2184,rand(2,3),.@label$;
  989. areamonster .@map$,.@c[0],.@c[1],.@c[2],.@c[3],"Metamorphous Kapha",2185,rand(2,3),.@label$;
  990. specialeffect EF_MAPPILLAR2,ALL_SAMEMAP; //currently broken
  991. initnpctimer;
  992. end;
  993. OnMyMobDead:
  994. end;
  995. OnClear:
  996. stopnpctimer;
  997. killmonster instance_mapname("2@pump"),instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
  998. end;
  999. OnTimer39500: //OnTimer40000 clashes with the timer in "Missing, the Cleaner#h".
  1000. donpcevent instance_npcname("Missing, the Cleaner#h")+"::OnAddSeaweed";
  1001. donpcevent instance_npcname(strnpcinfo(0))+"::OnClear";
  1002. disablenpc instance_npcname(strnpcinfo(0));
  1003. end;
  1004. OnTouch:
  1005. specialeffect EF_MAPPILLAR2;
  1006. end;
  1007. }
  1008. 2@pump,79,109,4 duplicate(#Culvert_h1) #Culvert_h2 844,14,14
  1009. 2@pump,114,114,4 duplicate(#Culvert_h1) #Culvert_h3 844,14,14
  1010. 2@pump,98,98,4 duplicate(#Culvert_h1) #Culvert_h4 844,14,14
  1011. 2@pump,62,96,4 duplicate(#Culvert_h1) #Culvert_h5 844,14,14
  1012. 2@pump,57,70,4 duplicate(#Culvert_h1) #Culvert_h6 844,14,14
  1013. 2@pump,47,49,4 duplicate(#Culvert_h1) #Culvert_h7 844,14,14
  1014. 2@pump,81,63,4 duplicate(#Culvert_h1) #Culvert_h8 844,14,14
  1015. 2@pump,100,74,4 duplicate(#Culvert_h1) #Culvert_h9 844,14,14
  1016. 2@pump,115,50,4 duplicate(#Culvert_h1) #Culvert_h10 844,14,14
  1017. 2@pump,1,1,4 duplicate(Monster Hole#n) Monster Hole#h -1
  1018. 2@pump,1,1,4 duplicate(Boss Creation#n) Boss Creation#h -1
  1019. 2@pump,39,88,4 duplicate(Missing, the Cleaner#no) Missing, the Cleaner#ho 545
  1020. 2@pump,38,100,0 duplicate(Culvert Entrance#n) Culvert Entrance#h 45,3,3
  1021. //MD_Putmob "2@pump" 0 0 0 0 20 HYDRA 0 0 2
  1022. 2@pump,1,1,4 duplicate(Hydra#n) Hydra#h -1