MorseCave.txt 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458
  1. //===== rAthena Script =======================================
  2. //= Morse Cave
  3. //===== Description: =========================================
  4. //= [Official Conversion]
  5. //= Morse Cave Instance
  6. //===== Changelogs: ==========================================
  7. //= 1.0 First version. [Capuche]
  8. //= 1.1 Updated to match official script. [Capuche]
  9. //============================================================
  10. moro_cav,61,69,3 script Senior Tracker#a1 4_M_JOB_ASSASSIN,{
  11. if (ep14_3_isle == 0) {
  12. mes "[Senior Tracker]";
  13. mes "This is our advance base";
  14. mes "to stop Morocc.";
  15. mes "I'm a tracker";
  16. mes "charged with leading my army";
  17. mes "to Morocc's lair.";
  18. close;
  19. }
  20. if (checkweight(2104,2) == 0) {
  21. mes "Your backpack is too full";
  22. mes "I can't talk to you!";
  23. close;
  24. }
  25. if (BaseLevel < 160) {
  26. mes "You need to reach level 160 first";
  27. mes "to enter the Red Flower!";
  28. close;
  29. }
  30. switch( checkquest(9319,PLAYTIME) ) {
  31. case -1:
  32. break;
  33. case 0:
  34. case 1:
  35. mes "[Senior Tracker]";
  36. mes "We're nowhere near close";
  37. mes "to stopping Morocc's resurrection.";
  38. mes "I can't sleep at night,";
  39. mes "knowing Morocc is doing everything he can";
  40. mes "to recover his strength.";
  41. mes "Could you come back tomorrow?";
  42. close;
  43. case 2:
  44. mes "[Senior Tracker]";
  45. mes "I knew you'd return.";
  46. mes "You look well-rested.";
  47. next;
  48. mes "[Senior Tracker]";
  49. mes "According to my intel,";
  50. mes "Morocc is hiding out in this place,";
  51. mes "recovering his strength.";
  52. next;
  53. mes "[Senior Tracker]";
  54. mes "Fighting Morocc";
  55. mes "takes more than a few warriors, no matter how strong they are.";
  56. mes "I recommend you join forces with";
  57. mes "as many comrades as you can find.";
  58. mes "Are you ready to enter the Red Flower";
  59. mes "where Morocc is believed to be hiding?";
  60. if (getcharid(1) < 1 || is_party_leader() == false)
  61. close;
  62. next;
  63. if (select( "No.", "Yes." ) == 1) {
  64. mes "[Senior Tracker]";
  65. mes "Come back";
  66. mes "if you change your mind.";
  67. close;
  68. }
  69. if (instance_create("Morse's Cave") < 1) {
  70. mes "[Senior Tracker]";
  71. mes "The entrance to the Red Flower";
  72. mes "is not open yet.";
  73. mes "Please come back later";
  74. mes "and try again.";
  75. close;
  76. }
  77. mes "[Senior Tracker]";
  78. mes "The entrance to the Red Flower";
  79. mes "has opened.";
  80. mes "It will only stay open for a while.";
  81. mes "You'd better use it";
  82. mes "while you can.";
  83. close;
  84. }
  85. .@hunting_9318 = checkquest(9318,HUNTING);
  86. if (.@hunting_9318 == -1) {
  87. mes "[Senior Tracker]";
  88. mes "This is our advance base";
  89. mes "to stop Morocc.";
  90. mes "I'm a tracker";
  91. mes "charged with leading my army";
  92. mes "to Morocc's lair.";
  93. next;
  94. mes "[Senior Tracker]";
  95. mes "After a painstaking search,";
  96. mes "I've located";
  97. mes "the place with the highest chance of";
  98. mes "hiding Morocc inside.";
  99. next;
  100. mes "[Senior Tracker]";
  101. mes "According to my intel,";
  102. mes "Morocc is hiding out in this place,";
  103. mes "trying to recover";
  104. mes "his full strength.";
  105. next;
  106. mes "[Senior Tracker]";
  107. mes "Even though I've located this place myself,";
  108. mes "I have to admit";
  109. mes "that I'm not equipped to";
  110. mes "explore it by myself.";
  111. mes "I'm a tracker after all, not a fighter.";
  112. next;
  113. mes "[Senior Tracker]";
  114. mes "You look like";
  115. mes "a warrior spoiling for";
  116. mes "a good fight with Morocc,";
  117. mes "and I think";
  118. mes "you have a chance at winning it.";
  119. next;
  120. mes "[Senior Tracker]";
  121. mes "How'd you like to";
  122. mes "enter Morocc's lair,";
  123. mes "defeat him,";
  124. mes "and become the hero";
  125. mes "who saved the world from evil?";
  126. next;
  127. if (getcharid(1) < 1 || is_party_leader() == false) {
  128. mes "[Senior Tracker]";
  129. mes "If you're interested in my proposition,";
  130. mes "let me talk to your party leader.";
  131. mes "We'll discuss more details together.";
  132. close;
  133. }
  134. mes "[Senior Tracker]";
  135. mes "Morocc may not have recovered his full strength, but fighting him still";
  136. mes "takes more than a few warriors, no matter how strong they are.";
  137. mes "I recommend you join forces with";
  138. mes "as many comrades as you can find.";
  139. mes "Are you ready to enter the Red Flower";
  140. mes "where Morocc is believed to be hiding?";
  141. next;
  142. if (select( "No.", "Yes." ) == 1) {
  143. mes "[Senior Tracker]";
  144. mes "Come back";
  145. mes "if you change your mind.";
  146. close;
  147. }
  148. if (instance_create("Morse's Cave") < 1) {
  149. mes "[Senior Tracker]";
  150. mes "The entrance to the Red Flower";
  151. mes "is not open yet.";
  152. mes "Please come back later";
  153. mes "and try again.";
  154. close;
  155. }
  156. mes "[Senior Tracker]";
  157. mes "The entrance to the Red Flower";
  158. mes "has opened.";
  159. mes "It will only stay open for a while.";
  160. mes "You'd better use it";
  161. mes "while you can.";
  162. close;
  163. }
  164. else {
  165. mes "[Senior Tracker]";
  166. mes "Finally you're back!";
  167. mes "What happened in there?";
  168. next;
  169. mes "- You relay";
  170. mes "your experience in the Red Flower. -";
  171. next;
  172. mes "[Senior Tracker]";
  173. mes "So Morocc got away.";
  174. mes "That's a shame.";
  175. next;
  176. if (checkquest(9318,HUNTING) == 2) {
  177. mes "[Senior Tracker]";
  178. mes "At least";
  179. mes "you wiped out";
  180. mes "his army.";
  181. mes "That's an accomplishment in itself.";
  182. next;
  183. }
  184. mes "[Senior Tracker]";
  185. mes "At least we know";
  186. mes "where he is.";
  187. mes "Could you come back tomorrow";
  188. mes "and help me track";
  189. mes "him down again?";
  190. mes "I'll be waiting here.";
  191. if (checkquest(9318,HUNTING) == 2)
  192. getitem 6684,1; // TokenOfHero
  193. erasequest 9318;// Pursuing Hiding Morocc
  194. setquest 9319;// Pursuing Hiding Morocc Continues
  195. ep14_3_mors01 = 1;
  196. close;
  197. }
  198. }
  199. moro_cav,57,69,3 script Red Flower#a1 CLEAR_NPC,{
  200. if (ep14_3_isle == 0) {
  201. mes "[Senior Tracker]";
  202. mes "This is our advance base";
  203. mes "to stop Morocc.";
  204. mes "I'm a tracker";
  205. mes "charged with leading my army";
  206. mes "to Morocc's lair.";
  207. close;
  208. }
  209. if (BaseLevel < 160) {
  210. mes "You need to reach level 160 first";
  211. mes "to enter the Red Flower!";
  212. close;
  213. }
  214. if (isbegin_quest(9318) > 0) {
  215. mes "- The Red Flower is closed.";
  216. mes "You cannot enter it yet. -";
  217. close;
  218. }
  219. switch( checkquest(9319,PLAYTIME) ) {
  220. case -1:
  221. break;
  222. case 0:
  223. case 1:
  224. mes "- The Red Flower is closed.";
  225. mes "You cannot enter it yet. -";
  226. close;
  227. case 2:
  228. break;
  229. }
  230. if (select( "Do not enter the Red Flower.", "Enter the Red Flower." ) == 1) {
  231. mes "- You can sense some sinister energy. -";
  232. close;
  233. }
  234. switch( instance_enter("Morse's Cave") ) {
  235. case IE_OTHER:
  236. mes "An unknown error occurred.";
  237. close;
  238. case IE_NOINSTANCE:
  239. mes "The Memorial dungeon Morse's Cave does not exist.";
  240. mes "Your party leader has not yet created the Memorial dungeon.";
  241. close;
  242. case IE_NOMEMBER:
  243. mes "Only party members can enter this Memorial dungeon.";
  244. close;
  245. case IE_OK:
  246. mapannounce "moro_cav", getpartyname( getcharid(1) ) + " party's " + strcharinfo(0) + " is entering Morse's Cave.", bc_map,0xFF99;
  247. if (isbegin_quest(9319) > 0)
  248. erasequest 9319;// Pursuing Hiding Morocc Continues
  249. if (isbegin_quest(9318) > 0)
  250. erasequest 9318;
  251. setquest 9318;// Pursuing Hiding Morocc
  252. // warp "1@rev",26,181;
  253. end;
  254. }
  255. end;
  256. OnInit:
  257. initnpctimer;
  258. end;
  259. OnTimer3000:
  260. specialeffect EF_BOTTOM_VO;
  261. end;
  262. OnTimer15000:
  263. initnpctimer;
  264. end;
  265. }
  266. 1@rev,33,117,0 script #Pause Effect RZ1 HIDDEN_WARP_NPC,1,1,{
  267. end;
  268. OnTouch:
  269. if (getnpctimer(0) > 0)
  270. end;
  271. initnpctimer;
  272. //disablenpc();
  273. hideonnpc instance_npcname( strnpcinfo(0) );
  274. specialeffect EF_ICEWALL;
  275. end;
  276. OnTimer30000:
  277. specialeffect EF_ICEWALL;
  278. end;
  279. OnTimer60000:
  280. specialeffect EF_ICEWALL;
  281. initnpctimer;
  282. end;
  283. }
  284. 1@rev,36,118,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ2 HIDDEN_WARP_NPC,1,1
  285. 1@rev,36,121,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ3 HIDDEN_WARP_NPC,1,1
  286. 1@rev,34,122,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ4 HIDDEN_WARP_NPC,1,1
  287. 1@rev,31,121,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ5 HIDDEN_WARP_NPC,1,1
  288. 1@rev,31,118,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ6 HIDDEN_WARP_NPC,1,1
  289. 1@rev,112,116,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ7 HIDDEN_WARP_NPC,1,1
  290. 1@rev,114,117,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ8 HIDDEN_WARP_NPC,1,1
  291. 1@rev,114,120,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ9 HIDDEN_WARP_NPC,1,1
  292. 1@rev,111,121,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ10 HIDDEN_WARP_NPC,1,1
  293. 1@rev,109,120,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ11 HIDDEN_WARP_NPC,1,1
  294. 1@rev,109,117,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ12 HIDDEN_WARP_NPC,1,1
  295. 1@rev,31,50,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ1_ HIDDEN_WARP_NPC,1,1
  296. 1@rev,36,49,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ2_ HIDDEN_WARP_NPC,1,1
  297. 1@rev,37,45,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ3_ HIDDEN_WARP_NPC,1,1
  298. 1@rev,30,45,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ4_ HIDDEN_WARP_NPC,1,1
  299. 1@rev,29,47,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ5_ HIDDEN_WARP_NPC,1,1
  300. 1@rev,33,51,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ6_ HIDDEN_WARP_NPC,1,1
  301. 1@rev,38,49,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ7_ HIDDEN_WARP_NPC,1,1
  302. 1@rev,34,44,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ8_ HIDDEN_WARP_NPC,1,1
  303. 1@rev,32,44,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ9_ HIDDEN_WARP_NPC,1,1
  304. 1@rev,29,49,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ10_ HIDDEN_WARP_NPC,1,1
  305. 1@rev,35,51,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ11_ HIDDEN_WARP_NPC,1,1
  306. 1@rev,37,47,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ12_ HIDDEN_WARP_NPC,1,1
  307. // Event A
  308. 1@rev,27,181,0 script #RZ Memorial Start HIDDEN_WARP_NPC,4,4,{
  309. end;
  310. OnTouch:
  311. disablenpc instance_npcname("#RZ Memorial Start");
  312. enablenpc instance_npcname("#RZ Event_1");
  313. .@mob_name$ = "" + strcharinfo(0) + "'s Soul";
  314. .@label$ = instance_npcname("#RZ Memorial Start") + "::OnSoulDead";
  315. monster 'map_rev$, 34,120, .@mob_name$, 3007,1, .@label$; // EP14_MORS_DUMMY
  316. monster 'map_rev$,112,118, .@mob_name$, 3007,1, .@label$;
  317. monster 'map_rev$, 34, 48, .@mob_name$, 3007,1, .@label$;
  318. monster 'map_rev$,112, 48, .@mob_name$, 3007,1, .@label$;
  319. end;
  320. OnSoulDead:
  321. end;
  322. OnInstanceInit:
  323. 'map_rev$ = instance_mapname("1@rev");
  324. 'event_right = false;
  325. 'event_ended = false;
  326. 'boss_id = 0;
  327. 'monster_id[4] = 0;
  328. 'monster_id[5] = 0;
  329. 'monster_id[6] = 0;
  330. 'monster_id[7] = 0;
  331. disablenpc instance_npcname("#RZ Event_1");
  332. disablenpc instance_npcname("#RZ Event_3");
  333. disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_2");
  334. disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_3");
  335. disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_4");
  336. disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_5");
  337. disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_6");
  338. disablenpc instance_npcname("#RZ Debuff Recovery_1");
  339. disablenpc instance_npcname("#RZ Debuff Recovery_2");
  340. disablenpc instance_npcname("#RZ Debuff Recovery_3");
  341. disablenpc instance_npcname("#RZ Debuff Recovery_4");
  342. for ( .@i = 5; .@i < 18; ++.@i )
  343. disablenpc instance_npcname("#RZ Move_" + .@i + "a");
  344. for ( .@i = 1; .@i < 13; ++.@i )
  345. disablenpc instance_npcname("#RZ Debuff_" + .@i);
  346. for ( .@i = 1; .@i < 17; ++.@i )
  347. disablenpc instance_npcname("#RZ Move_" + .@i);
  348. disablenpc instance_npcname("#RZ Move_30");
  349. disablenpc instance_npcname("#RZ Move_31");
  350. disablenpc instance_npcname("#RZ Move_32");
  351. disablenpc instance_npcname("#Battle_1RZ1");
  352. disablenpc instance_npcname("#Battle_1RZ2");
  353. disablenpc instance_npcname("#Battle_2RZ1");
  354. disablenpc instance_npcname("#Battle_3RZ2");
  355. disablenpc instance_npcname("#Battle_3RZ3");
  356. disablenpc instance_npcname("#Battle_3RZ4");
  357. disablenpc instance_npcname("#Battle_3RZ5");
  358. disablenpc instance_npcname("#Battle_3RZ6");
  359. disablenpc instance_npcname("#Battle_3RZ7");
  360. disablenpc instance_npcname("Weakened Morocc#RZ1");
  361. disablenpc instance_npcname("Morocc Necromancer#RZ1");
  362. end;
  363. }
  364. 1@rev,34,120,0 script #RZ Memorial Effect 1 HIDDEN_WARP_NPC,4,4,{
  365. end;
  366. OnInstanceInit:
  367. //disablenpc();
  368. hideonnpc instance_npcname( strnpcinfo(0) );
  369. initnpctimer;
  370. end;
  371. OnTimer1000:
  372. specialeffect EF_CURSEATTACK;
  373. end;
  374. OnTimer2000:
  375. initnpctimer;
  376. end;
  377. }
  378. 1@rev,112,118,0 duplicate(#RZ Memorial Effect 1) #RZ Memorial Effect 2 HIDDEN_WARP_NPC,4,4
  379. 1@rev,34,48,0 duplicate(#RZ Memorial Effect 1) #RZ Memorial Effect 3 HIDDEN_WARP_NPC,4,4
  380. 1@rev,31,181,0 script #RZ Event_1 HIDDEN_WARP_NPC,5,5,{
  381. end;
  382. OnTouch:
  383. disablenpc instance_npcname("#RZ Event_1");
  384. // specialeffect EF_HIT2, AREA, ""; // npc target undefined
  385. mapannounce 'map_rev$, "Morocc: Who dares to disrupt my sleep?!", bc_map,00EBFF;
  386. .@account_id = getcharid(3);
  387. .@name$ = strcharinfo(0);
  388. unittalk .@account_id, "" + .@name$ + " : We came to the right place!";
  389. setpcblock PCBLOCK_NPC, true;
  390. sleep2 3000;
  391. unittalk .@account_id, "" + .@name$ + " : Wait! There's something ahead of us!";
  392. sleep2 3000;
  393. setpcblock PCBLOCK_NPC, false;
  394. // debug in case of reload script
  395. getpartymember getcharid(1), 1, .@char_id;
  396. getpartymember getcharid(1), 2, .@account_id;
  397. for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
  398. if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false)
  399. continue;
  400. if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$)
  401. setpcblock PCBLOCK_MOVE, false, .@account_id[.@i];
  402. }
  403. specialeffect2 EF_LOCKON;
  404. .@label$ = instance_npcname("#RZ Event_1") + "::OnMobDead";
  405. monster 'map_rev$,38,180,"Morocc's Ghoul",3001,1, .@label$; // EP14_MORS_MOB1
  406. monster 'map_rev$,38,181,"Morocc's Ghoul",3001,1, .@label$;
  407. monster 'map_rev$,38,182,"Morocc's Ghoul",3001,1, .@label$;
  408. monster 'map_rev$,54,180,"Morocc's Ghoul",3001,1, .@label$;
  409. monster 'map_rev$,54,181,"Morocc's Ghoul",3001,1, .@label$;
  410. monster 'map_rev$,54,182,"Morocc's Ghoul",3001,1, .@label$;
  411. monster 'map_rev$,70,180,"Morocc's Ghoul",3001,1, .@label$;
  412. monster 'map_rev$,70,181,"Morocc's Ghoul",3001,1, .@label$;
  413. monster 'map_rev$,70,182,"Morocc's Ghoul",3001,1, .@label$;
  414. unittalk .@account_id, "" + .@name$ + " : Are these hideous monsters Morocc's lackeys?";
  415. initnpctimer;
  416. end;
  417. OnTimer2000:
  418. if (mobcount( 'map_rev$, instance_npcname("#RZ Event_1") + "::OnMobDead" ) < 1) {
  419. stopnpctimer;
  420. donpcevent instance_npcname("Grim Reaper Ankou#RZ Event_2") + "::OnStart";
  421. }
  422. end;
  423. OnTimer4000:
  424. initnpctimer;
  425. end;
  426. OnMobDead:
  427. end;
  428. }
  429. 1@rev,64,181,4 script Grim Reaper Ankou#RZ Event_2 3029,{
  430. end;
  431. OnStart:
  432. enablenpc instance_npcname("Grim Reaper Ankou#RZ Event_2");
  433. enablenpc instance_npcname("#RZ Event_3");
  434. npctalk "Grim Reaper Ankou: *Chuckle* We meet again!";
  435. sleep 3000;
  436. npctalk "Grim Reaper Ankou: You shouldn't have come. You're interrupting Lord Morocc from recovering his strength.";
  437. sleep 3000;
  438. npctalk "Grim Reaper Ankou: This world resides in his mind.";
  439. sleep 3000;
  440. npctalk "Grim Reaper Ankou: You can't do anything against his will. *Chuckle*";
  441. sleep 3000;
  442. npctalk "Grim Reaper Ankou: Lord Morocc is expecting you. Let me take you to him. *Chuckle*";
  443. sleep 3000;
  444. disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_2");
  445. sleep 3000;
  446. enablenpc instance_npcname("#RZ Move_30");
  447. enablenpc instance_npcname("#RZ Move_31");
  448. enablenpc instance_npcname("#RZ Move_32");
  449. end;
  450. }
  451. // Fail, warp out
  452. 1@rev,34,126,4 script Grim Reaper Ankou#RZ Event_3 3029,{
  453. end;
  454. OnEnd:
  455. .@ankou_3$ = instance_npcname("Grim Reaper Ankou#RZ Event_3");
  456. .@ankou_4$ = instance_npcname("Grim Reaper Ankou#RZ Event_4");
  457. enablenpc .@ankou_3$;
  458. enablenpc .@ankou_4$;
  459. npctalk "Grim Reaper Ankou: You're pathetic.", .@ankou_3$;
  460. npctalk "Grim Reaper Ankou: You're pathetic.", .@ankou_4$;
  461. sleep 3000;
  462. npctalk "Grim Reaper Ankou: Weaklings like you aren't enough food for Lord Morocc", .@ankou_3$;
  463. npctalk "Grim Reaper Ankou: Weaklings like you aren't enough food for Lord Morocc", .@ankou_4$;
  464. sleep 3000;
  465. npctalk "Grim Reaper Ankou: to get the energy he needs for a full recovery.", .@ankou_3$;
  466. npctalk "Grim Reaper Ankou: to get the energy he needs for a full recovery.", .@ankou_4;
  467. sleep 3000;
  468. npctalk "Grim Reaper Ankou: I'll give you one chance to leave. NOW!", .@ankou_3$;
  469. npctalk "Grim Reaper Ankou: I'll give you one chance to leave. NOW!", .@ankou_4$;
  470. sleep 3000;
  471. disablenpc .@ankou_3$;
  472. disablenpc .@ankou_4$;
  473. sleep 5000;
  474. enablenpc instance_npcname("#RZ Move_5a");
  475. enablenpc instance_npcname("#RZ Move_6a");
  476. enablenpc instance_npcname("#RZ Move_7a");
  477. enablenpc instance_npcname("#RZ Move_8a");
  478. enablenpc instance_npcname("#RZ Move_9a");
  479. enablenpc instance_npcname("#RZ Move_10a");
  480. enablenpc instance_npcname("#RZ Move_11a");
  481. enablenpc instance_npcname("#RZ Move_12a");
  482. end;
  483. }
  484. 1@rev,112,126,4 script Grim Reaper Ankou#RZ Event_4 3029,{ end; }
  485. 1@rev,34,55,4 script Grim Reaper Ankou#RZ Event_5 3029,{
  486. end;
  487. OnEnd:
  488. enablenpc instance_npcname("Grim Reaper Ankou#RZ Event_5");
  489. npctalk "Grim Reaper Ankou: You're pathetic.";
  490. sleep 3000;
  491. npctalk "Grim Reaper Ankou: Weaklings like you aren't enough food for Lord Morocc";
  492. sleep 3000;
  493. npctalk "Grim Reaper Ankou: to get the energy he needs for a full recovery.";
  494. sleep 3000;
  495. npctalk "Grim Reaper Ankou: I'll give you one chance to leave. NOW!!";
  496. sleep 3000;
  497. disablenpc instance_npcname("Grim Reaper Ankou#RZ Event_5");
  498. sleep 5000;
  499. enablenpc instance_npcname("#RZ Move_13a");
  500. enablenpc instance_npcname("#RZ Move_14a");
  501. enablenpc instance_npcname("#RZ Move_15a");
  502. enablenpc instance_npcname("#RZ Move_16a");
  503. end;
  504. }
  505. // Event B
  506. 1@rev,104,176,0 script #RZ Event_3 HIDDEN_WARP_NPC,4,4,{
  507. end;
  508. OnTouch:
  509. disablenpc instance_npcname("#RZ Event_3");
  510. enablenpc instance_npcname("Weakened Morocc#RZ1");
  511. unittalk getcharid(3), "" + strcharinfo(0) + " : Finally, here we are, Morocc.";
  512. setpcblock PCBLOCK_NPC, true;
  513. sleep2 3000;
  514. unittalk getcharid(3), "" + strcharinfo(0) + " : It's been almost too easy to find you,";
  515. sleep2 3000;
  516. unittalk getcharid(3), "" + strcharinfo(0) + " : but it doesn't matter; you'll die today!";
  517. sleep2 3000;
  518. setpcblock PCBLOCK_NPC, false;
  519. specialeffect2 EF_LOCKON;
  520. donpcevent instance_npcname("Weakened Morocc#RZ1") + "::OnTalk1";
  521. end;
  522. }
  523. 1@rev,111,178,4 script Weakened Morocc#RZ1 1916,{
  524. end;
  525. OnTalk1:
  526. npctalk "Weakened Morocc: I should punish you for disturbing my slumber.";
  527. sleep 3000;
  528. npctalk "Weakened Morocc: Do you really think you can stop me?";
  529. sleep 3000;
  530. npctalk "Weakened Morocc: I'll make you regret ever coming here.";
  531. sleep 3000;
  532. npctalk "Weakened Morocc: I may have not recovered my full strength,";
  533. specialeffect EF_ENERGYCOAT;
  534. sleep 3000;
  535. npctalk "Weakened Morocc: but I still can take down a bunch of you easily.";
  536. sleep 3000;
  537. npctalk "Weakened Morocc: Death is your only escape!";
  538. specialeffect EF_VOLCANO;
  539. sleep 3000;
  540. disablenpc instance_npcname("Weakened Morocc#RZ1");
  541. initnpctimer;
  542. monster 'map_rev$,111,178,"Weakened Morocc",2998,1, instance_npcname("Weakened Morocc#RZ1") + "::OnMobDead"; // EP14_MORS_EVENT
  543. end;
  544. OnTalk2:
  545. npctalk "Weakened Morocc: I'm sorry, but I haven't recovered my full strength.";
  546. sleep 3000;
  547. npctalk "Weakened Morocc: I'll have to leave you to my soldiers for now.";
  548. sleep 3000;
  549. npctalk "Weakened Morocc: Do your worst to get out of my world!";
  550. sleep 3000;
  551. npctalk "Weakened Morocc: In the end, you'll learn the meaning of helplessness in the most painful way!";
  552. sleep 3000;
  553. npctalk "Weakened Morocc: And your souls will be mine! Mwah hah hah!";
  554. sleep 3000;
  555. disablenpc instance_npcname("Weakened Morocc#RZ1");
  556. sleep 3000;
  557. enablenpc instance_npcname("#RZ Move_1");
  558. enablenpc instance_npcname("#RZ Move_2");
  559. enablenpc instance_npcname("#RZ Move_3");
  560. enablenpc instance_npcname("#RZ Move_4");
  561. enablenpc instance_npcname("#Battle_1RZ1");
  562. enablenpc instance_npcname("#Battle_1RZ2");
  563. end;
  564. OnTimer2000:
  565. if (mobcount( 'map_rev$, instance_npcname("Weakened Morocc#RZ1") + "::OnMobDead" ) < 1) {
  566. stopnpctimer;
  567. enablenpc instance_npcname("Weakened Morocc#RZ1");
  568. donpcevent instance_npcname("Weakened Morocc#RZ1") + "::OnTalk2";
  569. }
  570. end;
  571. OnTimer4000:
  572. initnpctimer;
  573. end;
  574. OnMobDead:
  575. end;
  576. }
  577. // Event C1 - left side
  578. 1@rev,35,119,0 script #Battle_1RZ1 HIDDEN_WARP_NPC,10,10,{
  579. end;
  580. OnTouch:
  581. disablenpc instance_npcname("#Battle_1RZ1");
  582. disablenpc instance_npcname("#RZ Move_30");
  583. disablenpc instance_npcname("#RZ Move_31");
  584. disablenpc instance_npcname("#RZ Move_32");
  585. specialeffect EF_STORMGUST, AREA, instance_npcname("#RZ Memorial Effect 1");
  586. mapannounce 'map_rev$, "Morocc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0x00EBFF;
  587. setpcblock PCBLOCK_MOVE, true;
  588. sleep2 3000;
  589. mapannounce 'map_rev$, "Morocc: You're trespassing! Riff-raff like you have no business in here!", bc_map,0x00EBFF;
  590. sleep2 3000;
  591. mapannounce 'map_rev$, "Morocc: Your bodies are mine to control!", bc_map,0x00EBFF;
  592. sleep2 3000;
  593. mapannounce 'map_rev$, "Morocc: Your souls are food for my resurrection!", bc_map,0x00EBFF;
  594. sleep2 3000;
  595. setpcblock (PCBLOCK_NPC ^ PCBLOCK_MOVE), false;
  596. mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0x00EBFF;
  597. initnpctimer;
  598. end;
  599. OnTimer4000:
  600. callsub( S_Spawn );
  601. OnTimer25000:
  602. callsub( S_Spawn );
  603. OnTimer45000:
  604. if ('event_right == false)
  605. mapannounce 'map_rev$, "Morocc: My soldiers, make them suffer! Feast on their bodies and souls!", bc_map,0x00EBFF;
  606. callsub( S_Spawn );
  607. OnTimer65000:
  608. callsub( S_Spawn );
  609. OnTimer85000:
  610. if ('event_right == false)
  611. mapannounce 'map_rev$, "Morocc: Not enough. Make them feel terror!", bc_map,0x00EBFF;
  612. callsub( S_Spawn );
  613. OnTimer105000:
  614. callsub( S_Spawn );
  615. OnTimer125000:
  616. if ('event_right == false)
  617. mapannounce 'map_rev$, "Morocc: Resist me! Fight to the death!", bc_map,0x00EBFF;
  618. callsub( S_Spawn );
  619. OnTimer145000:
  620. callsub( S_Spawn );
  621. OnTimer160000:
  622. if ('event_right == false)
  623. mapannounce 'map_rev$, "Morocc: Mwa hah hah, I can feel my power returning!", bc_map,0x00EBFF;
  624. monster 'map_rev$,33,111,"Morocc's Archer Skeleton",3003,1, instance_npcname("#Battle_1RZ1") + "::OnMobDead";// EP14_MORS_MOB3
  625. callsub( S_Spawn );
  626. OnTimer170000:
  627. monster 'map_rev$,32,128,"Morocc's Archer Skeleton",3003,1, instance_npcname("#Battle_1RZ1") + "::OnMobDead";
  628. callsub( S_Spawn );
  629. OnTimer180000:
  630. if (mobcount( 'map_rev$, instance_npcname("#Battle_1RZ1") + "::OnMobDead") > 19) {
  631. stopnpctimer;
  632. stopnpctimer instance_npcname("#Battle_1RZ2");
  633. donpcevent instance_npcname("Grim Reaper Ankou#RZ Event_3") + "::OnEnd";
  634. }
  635. end;
  636. OnTimer186000:
  637. killmonster 'map_rev$, instance_npcname("#Battle_1RZ1") + "::OnMobDead";
  638. end;
  639. OnTimer187000:
  640. enablenpc instance_npcname("#Battle_2RZ1");
  641. mapannounce 'map_rev$, "Morocc: You're more resilient than I thought.", bc_map,0x00EBFF;
  642. sleep 2000;
  643. mapannounce 'map_rev$, "Morocc: But enough is enough.", bc_map,0x00EBFF;
  644. end;
  645. OnTimer193000:
  646. enablenpc instance_npcname("#RZ Move_5");
  647. enablenpc instance_npcname("#RZ Move_6");
  648. enablenpc instance_npcname("#RZ Move_7");
  649. enablenpc instance_npcname("#RZ Move_8");
  650. enablenpc instance_npcname("#RZ Move_9");
  651. enablenpc instance_npcname("#RZ Move_10");
  652. enablenpc instance_npcname("#RZ Move_11");
  653. enablenpc instance_npcname("#RZ Move_12");
  654. stopnpctimer;
  655. end;
  656. OnMobDead:
  657. end;
  658. S_Spawn:
  659. .@label$ = instance_npcname("#Battle_1RZ1") + "::OnMobDead";
  660. monster 'map_rev$,33,128,"Morocc's Ghoul",3001,1, .@label$;// EP14_MORS_MOB1
  661. monster 'map_rev$,42,120,"Morocc's Ghoul",3001,1, .@label$;
  662. monster 'map_rev$,34,111,"Morocc's Ghoul",3001,1, .@label$;
  663. monster 'map_rev$,25,119,"Morocc's Ghoul",3001,1, .@label$;
  664. end;
  665. }
  666. // Event C2 - right side
  667. 1@rev,112,126,0 script #Battle_1RZ2 HIDDEN_WARP_NPC,10,10,{
  668. end;
  669. OnTouch:
  670. disablenpc instance_npcname("#RZ Move_30");
  671. disablenpc instance_npcname("#RZ Move_31");
  672. disablenpc instance_npcname("#RZ Move_32");
  673. disablenpc instance_npcname("#Battle_1RZ2");
  674. specialeffect EF_STORMGUST, AREA, instance_npcname("#RZ Memorial Effect 2");
  675. setpcblock PCBLOCK_NPC, true;
  676. sleep2 6000;
  677. 'event_right = true;
  678. setpcblock (PCBLOCK_NPC ^ PCBLOCK_MOVE), false;
  679. initnpctimer;
  680. end;
  681. OnTimer4000:
  682. callsub( S_Spawn );
  683. OnTimer25000:
  684. mapannounce 'map_rev$, "Morocc: My soldiers, make them suffer! Feast on their bodies and souls!", bc_map,0x00EBFF;
  685. callsub( S_Spawn );
  686. OnTimer45000:
  687. callsub( S_Spawn );
  688. OnTimer65000:
  689. mapannounce 'map_rev$, "Morocc: Not enough. Make them feel terror!", bc_map,0x00EBFF;
  690. callsub( S_Spawn );
  691. OnTimer85000:
  692. callsub( S_Spawn );
  693. OnTimer105000:
  694. mapannounce 'map_rev$, "Morocc: Resist me! Fight to the death!", bc_map,0x00EBFF;
  695. callsub( S_Spawn );
  696. OnTimer125000:
  697. callsub( S_Spawn );
  698. OnTimer145000:
  699. mapannounce 'map_rev$, "Morocc: Mwa hah hah, I can feel my power returning!", bc_map,0x00EBFF;
  700. callsub( S_Spawn );
  701. OnTimer160000:
  702. monster 'map_rev$,103,118, "Morocc's Archer Skeleton", 3003,1, instance_npcname("#Battle_1RZ2") + "::OnMobDead"; // EP14_MORS_MOB3
  703. callsub( S_Spawn );
  704. OnTimer170000:
  705. monster 'map_rev$,120,117, "Morocc's Archer Skeleton", 3003,1, instance_npcname("#Battle_1RZ2") + "::OnMobDead";
  706. callsub( S_Spawn );
  707. OnTimer182000:
  708. //if (mobcount( 'map_rev$, instance_npcname("#Battle_1RZ1") + "::OnMobDead") > 19) { // Official script check Battle_1RZ1
  709. if (mobcount( 'map_rev$, instance_npcname("#Battle_1RZ2") + "::OnMobDead") > 19) {
  710. stopnpctimer;
  711. stopnpctimer instance_npcname("#Battle_1RZ1");
  712. donpcevent instance_npcname("Grim Reaper Ankou#RZ Event_3") + "::OnEnd";
  713. }
  714. end;
  715. OnTimer186000:
  716. enablenpc instance_npcname("#Battle_2RZ1");
  717. killmonster 'map_rev$, instance_npcname("#Battle_1RZ2") + "::OnMobDead";
  718. end;
  719. OnTimer194000:
  720. enablenpc instance_npcname("#RZ Move_5");
  721. enablenpc instance_npcname("#RZ Move_6");
  722. enablenpc instance_npcname("#RZ Move_7");
  723. enablenpc instance_npcname("#RZ Move_8");
  724. enablenpc instance_npcname("#RZ Move_9");
  725. enablenpc instance_npcname("#RZ Move_10");
  726. enablenpc instance_npcname("#RZ Move_11");
  727. enablenpc instance_npcname("#RZ Move_12");
  728. stopnpctimer;
  729. end;
  730. OnMobDead:
  731. end;
  732. S_Spawn:
  733. .@label$ = instance_npcname("#Battle_1RZ2") + "::OnMobDead";
  734. monster 'map_rev$,112,126, "Morocc's Ghoul", 3001,1, .@label$; // EP14_MORS_MOB1
  735. monster 'map_rev$,120,118, "Morocc's Ghoul", 3001,1, .@label$;
  736. monster 'map_rev$,112,109, "Morocc's Ghoul", 3001,1, .@label$;
  737. monster 'map_rev$,103,117, "Morocc's Ghoul", 3001,1, .@label$;
  738. end;
  739. }
  740. // Event D
  741. 1@rev,34,47,0 script #Battle_2RZ1 HIDDEN_WARP_NPC,10,10,{
  742. end;
  743. OnTouch:
  744. disablenpc instance_npcname("#Battle_2RZ1");
  745. specialeffect EF_STORMGUST, AREA, instance_npcname("#RZ Memorial Effect 3");
  746. mapannounce 'map_rev$, "Morocc: This world of mine is evolving.", bc_map,0x00EBFF;
  747. setpcblock PCBLOCK_NPC, true;
  748. sleep2 3000;
  749. mapannounce 'map_rev$, "Morocc: My power is returning!", bc_map,0x00EBFF;
  750. sleep2 3000;
  751. mapannounce 'map_rev$, "Morocc: Your bodies and souls are under my command!", bc_map,0x00EBFF;
  752. sleep2 3000;
  753. setpcblock (PCBLOCK_NPC ^ PCBLOCK_MOVE), false;
  754. mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0x00EBFF;
  755. initnpctimer;
  756. end;
  757. OnTimer4000:
  758. .@label$ = callsub(S_Spawn);
  759. monster 'map_rev$,27,53, "Morocc's Archer Skeleton", 3003,1, .@label$; // EP14_MORS_MOB3
  760. monster 'map_rev$,27,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
  761. mapannounce 'map_rev$, "Morocc: This power! It feels great! Mwah hah hah!", bc_map,0x00EBFF;
  762. end;
  763. OnTimer30000:
  764. .@label$ = callsub(S_Spawn);
  765. monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
  766. monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  767. mapannounce 'map_rev$, "Morocc: How do you like losing control of your own body? *Chuckle*", bc_map,0x00EBFF;
  768. end;
  769. OnTimer55000:
  770. .@label$ = callsub(S_Spawn);
  771. monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
  772. monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  773. monster 'map_rev$,27,53, "Morocc's Verit", 3005,1, .@label$; // EP14_MORS_MOB5
  774. end;
  775. OnTimer80000:
  776. .@label$ = callsub(S_Spawn);
  777. monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
  778. monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  779. monster 'map_rev$,27,53, "Morocc's Verit", 3005,1, .@label$;
  780. mapannounce 'map_rev$, "Morocc: More! I need more energy!", bc_map,0x00EBFF;
  781. end;
  782. OnTimer105000:
  783. .@label$ = callsub(S_Spawn);
  784. monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
  785. monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  786. monster 'map_rev$,27,53, "Morocc's Verit", 3005,1, .@label$;
  787. mapannounce 'map_rev$, "Morocc: Mwah hah hah! Fear my army! Struggle harder!", bc_map,0x00EBFF;
  788. end;
  789. OnTimer130000:
  790. .@label$ = callsub(S_Spawn);
  791. monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
  792. monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  793. monster 'map_rev$,27,53, "Morocc's Verit", 3005,1, .@label$;
  794. end;
  795. OnTimer155000:
  796. .@label$ = callsub(S_Spawn);
  797. monster 'map_rev$,27,53, "Morocc's Archer Skeleton", 3003,1, .@label$;
  798. monster 'map_rev$,27,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
  799. monster 'map_rev$,40,41, "Morocc's Verit", 3005,1, .@label$;
  800. monster 'map_rev$,40,54, "Morocc's Verit", 3005,1, .@label$;
  801. mapannounce 'map_rev$, "Morocc: You're pathetic, struggling to survive!", bc_map,0x00EBFF;
  802. end;
  803. OnTimer170000:
  804. .@label$ = callsub(S_Spawn);
  805. monster 'map_rev$,40,41, "Morocc's Archer Skeleton", 3003,1, .@label$;
  806. monster 'map_rev$,40,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  807. monster 'map_rev$,27,53, "Morocc's Verit", 3005,1, .@label$;
  808. monster 'map_rev$,27,41, "Morocc's Verit", 3005,1, .@label$;
  809. end;
  810. OnTimer180000:
  811. if (mobcount( 'map_rev$, instance_npcname("#Battle_2RZ1") + "::OnMobDead" ) > 19) {
  812. stopnpctimer;
  813. donpcevent instance_npcname("Grim Reaper Ankou#RZ Event_5") + "::OnEnd";
  814. }
  815. end;
  816. OnTimer185000:
  817. killmonster 'map_rev$, instance_npcname("#Battle_2RZ1") + "::OnMobDead";
  818. disablenpc instance_npcname("#RZ Debuff_9");
  819. disablenpc instance_npcname("#RZ Debuff_10");
  820. disablenpc instance_npcname("#RZ Debuff_11");
  821. disablenpc instance_npcname("#RZ Debuff_12");
  822. end;
  823. OnTimer186000:
  824. mapannounce 'map_rev$, "Morocc: I'm surprised you've lasted this long. Thank you for helping me recover most of my strength.", bc_map,0x00EBFF;
  825. end;
  826. OnTimer190000:
  827. mapannounce 'map_rev$, "Morocc: Good, I feel rejuvenated.", bc_map,0x00EBFF;
  828. end;
  829. OnTimer192500:
  830. enablenpc instance_npcname("#RZ Debuff Recovery_1");
  831. enablenpc instance_npcname("#RZ Debuff Recovery_2");
  832. enablenpc instance_npcname("#RZ Debuff Recovery_3");
  833. enablenpc instance_npcname("#RZ Debuff Recovery_4");
  834. end;
  835. OnTimer193000:
  836. enablenpc instance_npcname("#RZ Move_13");
  837. enablenpc instance_npcname("#RZ Move_14");
  838. enablenpc instance_npcname("#RZ Move_15");
  839. enablenpc instance_npcname("#RZ Move_16");
  840. stopnpctimer;
  841. end;
  842. S_Spawn:
  843. .@label$ = instance_npcname("#Battle_2RZ1") + "::OnMobDead";
  844. monster 'map_rev$,34,57, "Morocc's Ghoul", 3001,1, .@label$; // EP14_MORS_MOB1
  845. monster 'map_rev$,43,48, "Morocc's Ghoul", 3001,1, .@label$;
  846. monster 'map_rev$,33,38, "Morocc's Ghoul", 3001,1, .@label$;
  847. monster 'map_rev$,24,48, "Morocc's Ghoul", 3001,1, .@label$;
  848. return .@label$;
  849. OnMobDead:
  850. end;
  851. }
  852. // Event E - final
  853. 1@rev,112,48,4 script Morocc Necromancer#RZ1 4_GHOST_STAND,{
  854. end;
  855. OnFinal:
  856. .@ankou$ = instance_npcname("Grim Reaper Ankou#RZ Event_6");
  857. 'event_ended = true;
  858. sleep 3000;
  859. enablenpc .@ankou$;
  860. npctalk "Grim Reaper Ankou: Sigh, Necromancer, why did you have to die so quickly?", .@ankou$;
  861. sleep 3000;
  862. npctalk "Grim Reaper Ankou: Don't be so happy!", .@ankou$;
  863. sleep 3000;
  864. npctalk "Grim Reaper Ankou: Now that Lord Morocc has fully recovered his strength, you're as good as dead!", .@ankou$;
  865. sleep 3000;
  866. npctalk "Grim Reaper Ankou: We'll meet again. *Chuckle*", .@ankou$;
  867. sleep 3000;
  868. disablenpc .@ankou$;
  869. enablenpc instance_npcname("#RZ Move_17a");
  870. specialeffect EF_THUNDERSTORM, AREA, instance_npcname("#morocc_necromancer_dummy");
  871. sleep 1000;
  872. specialeffect EF_LORD, AREA, instance_npcname("#morocc_necromancer_dummy");
  873. end;
  874. }
  875. 1@rev,112,48,4 script Grim Reaper Ankou#RZ Event_6 3029,{ end; }
  876. // additionnal npc to display the effect on Morocc Necromancer#RZ1 coordinates without bothered the player
  877. 1@rev,112,48,4 script #morocc_necromancer_dummy HIDDEN_WARP_NPC,{ end; }
  878. 1@rev,104,47,0 script #Battle_3RZ1 HIDDEN_WARP_NPC,5,5,{
  879. end;
  880. OnTouch:
  881. disablenpc instance_npcname("#Battle_3RZ1");
  882. mapannounce 'map_rev$, "Morocc: I can't let you go unscathed!", bc_map,0x00EBFF;
  883. sleep2 3000;
  884. mapannounce 'map_rev$, "Morocc: Hah hah, my Necromancer. I'll leave them to you.", bc_map,0x00EBFF;
  885. sleep2 3000;
  886. mapannounce 'map_rev$, "Morocc: My loyal soldier, I'll trust you with their deaths!", bc_map,0x00EBFF;
  887. sleep2 3000;
  888. killmonster 'map_rev$, instance_npcname("#RZ Memorial Start") + "::OnSoulDead";
  889. .@necromancer$ = instance_npcname("Morocc Necromancer#RZ1");
  890. enablenpc .@necromancer$;
  891. sleep2 3000;
  892. specialeffect EF_TWOHANDQUICKEN, AREA, .@necromancer$;
  893. npctalk "Morocc Necromancer: As you wish, My Lord!", .@necromancer$;
  894. sleep2 3000;
  895. npctalk "Morocc Necromancer: *Chuckle* You still have no idea, do you?", .@necromancer$;
  896. sleep2 3000;
  897. npctalk "Morocc Necromancer: The energy you generated to protect me while I was hiding within your soul", .@necromancer$;
  898. sleep2 3000;
  899. npctalk "Morocc Necromancer: has been converted to healing energy for Lord Morocc the moment you entered this world of his!", .@necromancer$;
  900. sleep2 3000;
  901. npctalk "Morocc Necromancer: *Chuckle* Your stupidity was a blessing for us. We don't need you anymore. DIE!", .@necromancer$;
  902. specialeffect EF_BEGINSPELL2, AREA, .@necromancer$;
  903. sleep2 3000;
  904. disablenpc .@necromancer$;
  905. monster 'map_rev$,112,48, "Morocc Necromancer", 2999,1, instance_npcname("#Battle_3RZ1") + "::OnMobDead"; // EP14_MORS_BOSSA
  906. 'boss_id = $@mobid[0];
  907. initnpctimer;
  908. end;
  909. OnTimer2000:
  910. if (unitexists('boss_id) == false || mobcount( 'map_rev$, instance_npcname("#Battle_3RZ1") + "::OnMobDead" ) < 1) {
  911. stopnpctimer;
  912. donpcevent instance_npcname("#Battle_3RZ2") + "::OnStart";
  913. }
  914. end;
  915. OnTimer4000:
  916. initnpctimer;
  917. end;
  918. OnMobDead:
  919. end;
  920. }
  921. 1@rev,106,57,0 script #Battle_3RZ2 HIDDEN_WARP_NPC,{
  922. end;
  923. OnStart:
  924. .@necromancer$ = instance_npcname("Morocc Necromancer#RZ1");
  925. enablenpc .@necromancer$;
  926. sleep 3000;
  927. npctalk "Morocc Necromancer: You're stronger than you look.", .@necromancer$;
  928. sleep 3000;
  929. npctalk "Morocc Necromancer: *Giggle* I'll show you what I'm truly capable of.", .@necromancer$;
  930. sleep 3000;
  931. npctalk "Morocc Necromancer: Beg me for your lives!", .@necromancer$;
  932. sleep 3000;
  933. npctalk "Morocc Necromancer: *Giggle*", .@necromancer$;
  934. sleep 3000;
  935. disablenpc .@necromancer$;
  936. monster 'map_rev$,112,48, "Morocc Necromancer", 3000,1, instance_npcname("#Battle_3RZ2") + "::OnMobDead"; // EP14_MORS_BOSSB
  937. 'boss_id = $@mobid[0];
  938. initnpctimer instance_npcname("#Battle_3RZ3"); // init monsters spawn
  939. initnpctimer;
  940. end;
  941. OnTimer1000:
  942. if (mobcount( 'map_rev$, instance_npcname("#Battle_3RZ2") + "::OnMobDead" ) < 1 || unitexists('boss_id) == false) {
  943. donpcevent instance_npcname("#Battle_3RZ3") + "::OnStop";
  944. donpcevent instance_npcname("Morocc Necromancer#RZ1") + "::OnFinal";
  945. donpcevent instance_npcname("#Battle_3RZ4") + "::OnStop";
  946. donpcevent instance_npcname("#Battle_3RZ5") + "::OnStop";
  947. donpcevent instance_npcname("#Battle_3RZ6") + "::OnStop";
  948. donpcevent instance_npcname("#Battle_3RZ7") + "::OnStop";
  949. stopnpctimer;
  950. end;
  951. }
  952. 'timer++;
  953. if ('timer == 30) {
  954. getunitdata 'boss_id, .@data;
  955. if (.@data[UMOB_HP] < 3000000 && .@data[UMOB_HP] > 1) {
  956. .@necromancer$ = instance_npcname("#morocc_necromancer_dummy");
  957. setunitdata 'boss_id, UMOB_HP, 3000000;
  958. specialeffect EF_HEAL, AREA, .@necromancer$;
  959. specialeffect EF_HEAL2, AREA, .@necromancer$;
  960. specialeffect EF_HEAL4, AREA, .@necromancer$;
  961. specialeffect EF_HEAL3, AREA, .@necromancer$;
  962. unittalk 'boss_id, "Morocc Necromancer: You can't kill me!";
  963. }
  964. 'timer = 0;
  965. }
  966. initnpctimer;
  967. end;
  968. OnMobDead:
  969. end;
  970. }
  971. 1@rev,120,54,0 script #Battle_3RZ3 HIDDEN_WARP_NPC,{
  972. end;
  973. OnStop:
  974. stopnpctimer;
  975. killmonster 'map_rev$, instance_npcname("#Battle_3RZ3") + "::OnMobDead";
  976. end;
  977. OnTimer4500:
  978. if ('event_ended == true) {
  979. stopnpctimer;
  980. end;
  981. }
  982. end;
  983. OnTimer7000:
  984. if ('event_ended == true) {
  985. stopnpctimer;
  986. end;
  987. }
  988. .@count = mobcount( 'map_rev$, instance_npcname("#Battle_3RZ3") + "::OnMobDead" );
  989. if (.@count > 39) {
  990. if (unitexists('boss_id) == true)
  991. unittalk 'boss_id, "Morocc Necromancer: You are surrounded by a lot! It's already in the middle of it! Can't escape! Hey!";
  992. end;
  993. }
  994. donpcevent instance_npcname("#Battle_3RZ4") + "::OnStop";
  995. donpcevent instance_npcname("#Battle_3RZ5") + "::OnStop";
  996. donpcevent instance_npcname("#Battle_3RZ6") + "::OnStop";
  997. donpcevent instance_npcname("#Battle_3RZ7") + "::OnStop";
  998. .@label$ = instance_npcname("#Battle_3RZ3") + "::OnMobDead";
  999. if (.@count < 10) {
  1000. .@wRand = rand(1,100);
  1001. if (.@wRand < 11) {
  1002. .@string$ = "Morocc Necromancer: We the soldiers of Morocc know no mercy!";
  1003. monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$; // EP14_MORS_MOB1
  1004. monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
  1005. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1006. monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$; // EP14_MORS_MOB3
  1007. monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$; // EP14_MORS_MOB5
  1008. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$; // EP14_MORS_MOB4
  1009. donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
  1010. }
  1011. else if (.@wRand < 21) {
  1012. .@string$ = "Morocc Necromancer: You're doing good so far. *Giggle*";
  1013. monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
  1014. monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
  1015. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1016. monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1017. monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
  1018. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1019. donpcevent instance_npcname("#Battle_3RZ5") + "::OnStart";
  1020. }
  1021. else if (.@wRand < 31) {
  1022. .@string$ = "Morocc Necromancer: I see you're weakening, though.";
  1023. monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
  1024. monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
  1025. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1026. monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1027. monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
  1028. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1029. donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
  1030. }
  1031. else if (.@wRand < 41) {
  1032. .@string$ = "Morocc Necromancer: Feel the power of his army!";
  1033. monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
  1034. monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
  1035. monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
  1036. monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1037. monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
  1038. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1039. donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
  1040. }
  1041. else if (.@wRand < 51) {
  1042. .@string$ = "Morocc Necromancer: Feel the power of his army!";
  1043. monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
  1044. monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
  1045. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1046. monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1047. monster 'map_rev$,119,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1048. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1049. donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
  1050. }
  1051. else if (.@wRand < 61) {
  1052. .@string$ = "Morocc Necromancer: I see you're weakening, though.";
  1053. monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
  1054. monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
  1055. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1056. monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1057. monster 'map_rev$,119,40, "Morocc's Wraith", 3004,1, .@label$;
  1058. monster 'map_rev$,104,40, "Morocc's Verit", 3005,1, .@label$;
  1059. donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
  1060. }
  1061. else if (.@wRand < 71) {
  1062. .@string$ = "Morocc Necromancer: You're doing good so far. *Giggle*";
  1063. monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
  1064. monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
  1065. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1066. monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1067. monster 'map_rev$,119,40, "Morocc's Wraith", 3004,1, .@label$;
  1068. monster 'map_rev$,104,40, "Morocc's Verit", 3005,1, .@label$;
  1069. donpcevent instance_npcname("#Battle_3RZ5") + "::OnStart";
  1070. }
  1071. else if (.@wRand < 81) {
  1072. .@string$ = "Morocc Necromancer: We the soldiers of Morocc know no mercy!";
  1073. monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
  1074. monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
  1075. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1076. monster 'map_rev$,120,54, "Morocc's Wraith", 3004,1, .@label$;
  1077. monster 'map_rev$,119,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1078. monster 'map_rev$,104,40, "Morocc's Verit", 3005,1, .@label$;
  1079. donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
  1080. }
  1081. else if (.@wRand < 91) {
  1082. .@string$ = "Morocc Necromancer: Feel the power of his army!";
  1083. monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
  1084. monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
  1085. monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
  1086. monster 'map_rev$,120,54, "Morocc's Verit", 3005,1, .@label$;
  1087. monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
  1088. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1089. donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
  1090. }
  1091. else if (.@wRand < 101) {
  1092. .@string$ = "Morocc Necromancer: I see you're weakening, though.";
  1093. monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
  1094. monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
  1095. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1096. monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1097. monster 'map_rev$,119,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1098. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1099. donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
  1100. }
  1101. }
  1102. else if (.@count < 15) {
  1103. .@wRand = rand(1,60);
  1104. if (.@wRand < 11) {
  1105. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1106. monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1107. monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
  1108. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1109. donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
  1110. donpcevent instance_npcname("#Battle_3RZ5") + "::OnStart";
  1111. .@string$ = "Morocc Necromancer: Go to hell! Send them to hell!";
  1112. }
  1113. else if (.@wRand < 21) {
  1114. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1115. monster 'map_rev$,120,54, "Morocc's Verit", 3005,1, .@label$;
  1116. monster 'map_rev$,119,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1117. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1118. donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
  1119. donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
  1120. .@string$ = "Morocc Necromancer: Morocc's army is not afraid!";
  1121. }
  1122. else if (.@wRand < 31) {
  1123. monster 'map_rev$,112,38, "Morocc's Ghoul", 3001,1, .@label$;
  1124. monster 'map_rev$,120,54, "Morocc's Wraith", 3004,1, .@label$;
  1125. monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
  1126. monster 'map_rev$,104,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1127. donpcevent instance_npcname("#Battle_3RZ4") + "::OnStart";
  1128. donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
  1129. .@string$ = "Morocc Necromancer: My loyal men are coming! Come over!";
  1130. }
  1131. else if (.@wRand < 41) {
  1132. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1133. monster 'map_rev$,120,54, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1134. monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
  1135. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1136. donpcevent instance_npcname("#Battle_3RZ5") + "::OnStart";
  1137. donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
  1138. .@string$ = "Morocc Necromancer: For Morocc!!";
  1139. }
  1140. else if (.@wRand < 51) {
  1141. monster 'map_rev$,112,57, "Morocc's Ghoul", 3001,1, .@label$;
  1142. monster 'map_rev$,120,54, "Morocc's Verit", 3005,1, .@label$;
  1143. monster 'map_rev$,119,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1144. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1145. donpcevent instance_npcname("#Battle_3RZ5") + "::OnStart";
  1146. donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
  1147. .@string$ = "Morocc Necromancer: For Morocc!!";
  1148. }
  1149. else {
  1150. monster 'map_rev$,121,47, "Morocc's Ghoul", 3001,1, .@label$;
  1151. monster 'map_rev$,120,54, "Morocc's Wraith", 3004,1, .@label$;
  1152. monster 'map_rev$,119,40, "Morocc's Verit", 3005,1, .@label$;
  1153. monster 'map_rev$,104,40, "Morocc's Archer Skeleton", 3003,1, .@label$;
  1154. donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
  1155. donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
  1156. .@string$ = "Morocc Necromancer: My loyal men are coming! Come over!";
  1157. }
  1158. }
  1159. else if (.@count < 20) {
  1160. .@wRand = rand(1,40);
  1161. monster 'map_rev$,102,48, "Morocc's Ghoul", 3001,1, .@label$;
  1162. if (.@wRand < 11) {
  1163. monster 'map_rev$,120,54, "Morroc's Pumpkin Soul", 3006,1, .@label$;
  1164. donpcevent instance_npcname("#Battle_3RZ6") + "::OnStart";
  1165. .@string$ = "Morocc Necromancer: You are alive and can't go back!";
  1166. }
  1167. else if (.@wRand < 21) {
  1168. monster 'map_rev$,119,40, "Morroc's Pumpkin Soul", 3006,1, .@label$;
  1169. donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
  1170. .@string$ = "Morocc Necromancer: You are alive and can't go back!";
  1171. }
  1172. else if (.@wRand < 31) {
  1173. monster 'map_rev$,104,40, "Morroc's Pumpkin Soul", 3006,1, .@label$;
  1174. donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
  1175. .@string$ = "Morocc Necromancer: You are gradually entering death!";
  1176. }
  1177. else {
  1178. monster 'map_rev$,104,54, "Morroc's Pumpkin Soul", 3006,1, .@label$;
  1179. donpcevent instance_npcname("#Battle_3RZ7") + "::OnStart";
  1180. .@string$ = "Morocc Necromancer: Let me pray for your impending death!";
  1181. }
  1182. }
  1183. else {
  1184. .@wRand = rand(1,100);
  1185. if (.@wRand < 21) {
  1186. monster 'map_rev$,120,54, "Morocc's Wraith", 3004,1, .@label$;
  1187. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1188. if (.@wRand < 11)
  1189. .@string$ = "Morocc Necromancer: You are no different from the walking dead!";
  1190. else
  1191. .@string$ = "Morocc Necromancer: Can hold you up now and you are lucky!";
  1192. }
  1193. else if (.@wRand < 31) {
  1194. monster 'map_rev$,120,54, "Morocc's Wraith", 3004,1, .@label$;
  1195. monster 'map_rev$,119,40, "Morocc's Wraith", 3004,1, .@label$;
  1196. .@string$ = "Morocc Necromancer: The result is only this level!";
  1197. }
  1198. else if (.@wRand < 51) {
  1199. monster 'map_rev$,119,40, "Morocc's Wraith", 3004,1, .@label$;
  1200. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1201. .@string$ = "Morocc Necromancer: Even I can't cope with it and dare to fight against Morocc!";
  1202. }
  1203. else {
  1204. monster 'map_rev$,119,40, "Morroc's Pumpkin Soul", 3006,1, .@label$; // EP14_MORS_MOB6
  1205. monster 'map_rev$,104,40, "Morocc's Wraith", 3004,1, .@label$;
  1206. monster 'map_rev$,104,54, "Morocc's Wraith", 3004,1, .@label$;
  1207. if (.@wRand < 61)
  1208. .@string$ = "Morocc Necromancer: The result is only this level!";
  1209. else
  1210. .@string$ = "Morocc Necromancer: Can hold you up now and you are lucky!";
  1211. }
  1212. }
  1213. if (unitexists('boss_id) == true)
  1214. unittalk 'boss_id, .@string$;
  1215. end;
  1216. OnTimer24000:
  1217. OnTimer24500:
  1218. if ('event_ended == true)
  1219. stopnpctimer;
  1220. end;
  1221. OnTimer25000:
  1222. if ('event_ended == true) {
  1223. stopnpctimer;
  1224. end;
  1225. }
  1226. initnpctimer;
  1227. end;
  1228. OnMobDead:
  1229. end;
  1230. }
  1231. 1@rev,120,55,0 script #Battle_3RZ4 HIDDEN_WARP_NPC,{
  1232. end;
  1233. OnStart:
  1234. sscanf( strnpcinfo(2), "Battle_3RZ%d", .@num );
  1235. if (.@num == 4) setarray .@xy[0],112,57;
  1236. else if (.@num == 5) setarray .@xy[0],121,47;
  1237. else if (.@num == 6) setarray .@xy[0],112,38;
  1238. else setarray .@xy[0],102,48;
  1239. monster 'map_rev$, .@xy[0], .@xy[1], "Morocc's Osiris", 3002,1, instance_npcname( strnpcinfo(0) ) + "::OnMobDead"; // EP14_MORS_MOB2
  1240. 'monster_id[.@num] = $mobid[0];
  1241. initnpctimer;
  1242. end;
  1243. OnStop:
  1244. stopnpctimer;
  1245. killmonster 'map_rev$, instance_npcname( strnpcinfo(0) ) + "::OnMobDead";
  1246. end;
  1247. OnTimer4500:
  1248. callsub S_Spawn;
  1249. end;
  1250. OnTimer9000:
  1251. callsub S_Spawn;
  1252. initnpctimer;
  1253. end;
  1254. OnMobDead:
  1255. end;
  1256. S_Spawn:
  1257. if ('event_ended == true) {
  1258. donpcevent instance_npcname( strnpcinfo(0) ) + "::OnStop";
  1259. end;
  1260. }
  1261. sscanf( strnpcinfo(2), "Battle_3RZ%d", .@num );
  1262. if (unitexists('monster_id[.@num]) == true && mobcount( 'map_rev$, instance_npcname( strnpcinfo(0) ) + "::OnMobDead" ) > 0) {
  1263. getunitdata 'monster_id[.@num], .@data;
  1264. monster 'map_rev$, .@data[UMOB_X], .@data[UMOB_Y], "#Poison", 3008,1, instance_npcname( strnpcinfo(0) ) + "::OnMobDead"; // EP14_MORS_HIDDEN
  1265. }
  1266. return;
  1267. }
  1268. 1@rev,120,56,0 duplicate(#Battle_3RZ4) #Battle_3RZ5 HIDDEN_WARP_NPC
  1269. 1@rev,120,57,0 duplicate(#Battle_3RZ4) #Battle_3RZ6 HIDDEN_WARP_NPC
  1270. 1@rev,120,58,0 duplicate(#Battle_3RZ4) #Battle_3RZ7 HIDDEN_WARP_NPC
  1271. // Warps
  1272. // Entrance -> Weakened Morocc
  1273. 1@rev,63,181,0 warp2 #RZ Move_30 10,10,1@rev,103,177
  1274. 1@rev,47,181,0 warp2 #RZ Move_31 10,10,1@rev,103,177
  1275. 1@rev,31,181,0 warp2 #RZ Move_32 10,10,1@rev,103,177
  1276. 1@rev,106,183,0 script #RZ Move_1 WARPNPC,10,10,{
  1277. end;
  1278. OnTouch:
  1279. if (is_party_leader() == false)
  1280. end;
  1281. sscanf( strnpcinfo(2), "RZ Move_%d", .@num );
  1282. if (.@num < 5) {
  1283. setarray .@x[0], 33, 112, 36, 114, 36, 114, 34, 111, 31, 109, 31, 109;
  1284. setarray .@y[0], 117, 116, 118, 117, 121, 120, 122, 121, 121, 120, 118, 117;
  1285. }
  1286. else if (.@num < 13) {
  1287. setarray .@x[0], 31, 36, 37, 30, 29, 33, 38, 34, 32, 29, 35, 37;
  1288. setarray .@y[0], 50, 49, 45, 45, 47, 51, 49, 44, 44, 49, 51, 47;
  1289. }
  1290. else {
  1291. setarray .@x[0], 104, 104, 104, 104, 103, 103, 103, 103, 102, 102, 102, 102;
  1292. setarray .@y[0], 48, 47, 46, 49, 49, 48, 47, 46, 46, 47, 48, 49;
  1293. }
  1294. .@size = getarraysize(.@x);
  1295. getpartymember getcharid(1), 1, .@char_id;
  1296. getpartymember getcharid(1), 2, .@account_id;
  1297. for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
  1298. if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false)
  1299. continue;
  1300. if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$) {
  1301. .@n = (.@index % .@size);
  1302. warp 'map_rev$, .@x[.@n], .@y[.@n], .@char_id[.@i];
  1303. }
  1304. .@index++;
  1305. }
  1306. end;
  1307. }
  1308. 1@rev,106,172,0 duplicate(#RZ Move_1) #RZ Move_2 WARPNPC,10,10
  1309. 1@rev,117,172,0 duplicate(#RZ Move_1) #RZ Move_3 WARPNPC,10,10
  1310. 1@rev,117,183,0 duplicate(#RZ Move_1) #RZ Move_4 WARPNPC,10,10
  1311. 1@rev,28,125,0 duplicate(#RZ Move_1) #RZ Move_5 WARPNPC,10,10
  1312. 1@rev,28,114,0 duplicate(#RZ Move_1) #RZ Move_6 WARPNPC,10,10
  1313. 1@rev,39,114,0 duplicate(#RZ Move_1) #RZ Move_7 WARPNPC,10,10
  1314. 1@rev,39,125,0 duplicate(#RZ Move_1) #RZ Move_8 WARPNPC,10,10
  1315. 1@rev,106,123,0 duplicate(#RZ Move_1) #RZ Move_9 WARPNPC,10,10
  1316. 1@rev,106,112,0 duplicate(#RZ Move_1) #RZ Move_10 WARPNPC,10,10
  1317. 1@rev,117,112,0 duplicate(#RZ Move_1) #RZ Move_11 WARPNPC,10,10
  1318. 1@rev,117,123,0 duplicate(#RZ Move_1) #RZ Move_12 WARPNPC,10,10
  1319. 1@rev,28,53,0 duplicate(#RZ Move_1) #RZ Move_13 WARPNPC,10,10
  1320. 1@rev,28,42,0 duplicate(#RZ Move_1) #RZ Move_14 WARPNPC,10,10
  1321. 1@rev,39,42,0 duplicate(#RZ Move_1) #RZ Move_15 WARPNPC,10,10
  1322. 1@rev,39,53,0 duplicate(#RZ Move_1) #RZ Move_16 WARPNPC,10,10
  1323. 1@rev,28,125,0 script #RZ Move_5a WARPNPC,10,10,{
  1324. end;
  1325. OnTouch:
  1326. setpcblock PCBLOCK_MOVE, false;
  1327. warp "prontera",97,167;
  1328. end;
  1329. }
  1330. 1@rev,28,114,0 duplicate(#RZ Move_5a) #RZ Move_6a WARPNPC,10,10
  1331. 1@rev,39,114,0 duplicate(#RZ Move_5a) #RZ Move_7a WARPNPC,10,10
  1332. 1@rev,39,125,0 duplicate(#RZ Move_5a) #RZ Move_8a WARPNPC,10,10
  1333. 1@rev,106,123,0 duplicate(#RZ Move_5a) #RZ Move_9a WARPNPC,10,10
  1334. 1@rev,106,112,0 duplicate(#RZ Move_5a) #RZ Move_10a WARPNPC,10,10
  1335. 1@rev,117,112,0 duplicate(#RZ Move_5a) #RZ Move_11a WARPNPC,10,10
  1336. 1@rev,117,123,0 duplicate(#RZ Move_5a) #RZ Move_12a WARPNPC,10,10
  1337. 1@rev,28,53,0 duplicate(#RZ Move_5a) #RZ Move_13a WARPNPC,10,10
  1338. 1@rev,28,42,0 duplicate(#RZ Move_5a) #RZ Move_14a WARPNPC,10,10
  1339. 1@rev,39,42,0 duplicate(#RZ Move_5a) #RZ Move_15a WARPNPC,10,10
  1340. 1@rev,39,53,0 duplicate(#RZ Move_5a) #RZ Move_16a WARPNPC,10,10
  1341. 1@rev,112,56,3 script #RZ Move_17a PORTAL,{
  1342. mes "Do you want to exit through the portal?";
  1343. next;
  1344. if (select( "No.", "Yes." ) == 1)
  1345. close;
  1346. mes "- Teleporting... -";
  1347. close2;
  1348. warp "moro_cav",59,63;
  1349. end;
  1350. }
  1351. // dummy npc
  1352. // 1@rev,10,10,0 script #RZ Move_18 WARPNPC,{ end; }
  1353. 1@rev,28,125,0 script #RZ Debuff_1 HIDDEN_WARP_NPC,10,10,{
  1354. end;
  1355. OnTouch:
  1356. setpcblock PCBLOCK_MOVE, true;
  1357. end;
  1358. }
  1359. 1@rev,28,114,0 duplicate(#RZ Debuff_1) #RZ Debuff_2 HIDDEN_WARP_NPC,10,10
  1360. 1@rev,39,114,0 duplicate(#RZ Debuff_1) #RZ Debuff_3 HIDDEN_WARP_NPC,10,10
  1361. 1@rev,39,125,0 duplicate(#RZ Debuff_1) #RZ Debuff_4 HIDDEN_WARP_NPC,10,10
  1362. 1@rev,106,123,0 duplicate(#RZ Debuff_1) #RZ Debuff_5 HIDDEN_WARP_NPC,10,10
  1363. 1@rev,106,112,0 duplicate(#RZ Debuff_1) #RZ Debuff_6 HIDDEN_WARP_NPC,10,10
  1364. 1@rev,117,112,0 duplicate(#RZ Debuff_1) #RZ Debuff_7 HIDDEN_WARP_NPC,10,10
  1365. 1@rev,117,123,0 duplicate(#RZ Debuff_1) #RZ Debuff_8 HIDDEN_WARP_NPC,10,10
  1366. 1@rev,28,53,0 duplicate(#RZ Debuff_1) #RZ Debuff_9 HIDDEN_WARP_NPC,10,10
  1367. 1@rev,28,42,0 duplicate(#RZ Debuff_1) #RZ Debuff_10 HIDDEN_WARP_NPC,10,10
  1368. 1@rev,39,42,0 duplicate(#RZ Debuff_1) #RZ Debuff_11 HIDDEN_WARP_NPC,10,10
  1369. 1@rev,39,53,0 duplicate(#RZ Debuff_1) #RZ Debuff_12 HIDDEN_WARP_NPC,10,10
  1370. 1@rev,28,53,0 script #RZ Debuff Recovery_1 HIDDEN_WARP_NPC,10,10,{
  1371. end;
  1372. OnTouch:
  1373. setpcblock PCBLOCK_MOVE, false;
  1374. end;
  1375. }
  1376. 1@rev,28,42,0 duplicate(#RZ Debuff Recovery_1) #RZ Debuff Recovery_2 HIDDEN_WARP_NPC,10,10
  1377. 1@rev,39,42,0 duplicate(#RZ Debuff Recovery_1) #RZ Debuff Recovery_3 HIDDEN_WARP_NPC,10,10
  1378. 1@rev,39,53,0 duplicate(#RZ Debuff Recovery_1) #RZ Debuff Recovery_4 HIDDEN_WARP_NPC,10,10
  1379. // GM NPC
  1380. sec_in02,20,20,6 script Death Cave#a2 4_M_KHKYEL,{
  1381. if (callfunc("F_GM_NPC",1854,0,1,9999) < 1)
  1382. end;
  1383. switch( select( "Death Cave Reset", "Set Vars", "Cancel" ) ) {
  1384. case 1:
  1385. mes "[Death Cave]";
  1386. mes "Yes. Reset.";
  1387. next;
  1388. if (isbegin_quest(9318) > 0)
  1389. erasequest 9318;
  1390. if (isbegin_quest(9319) > 0)
  1391. erasequest 9319;
  1392. mes "[Death Cave]";
  1393. mes "Done!";
  1394. close;
  1395. case 2:
  1396. ep14_3_bios01 = 1;
  1397. mes "[Death Cave]";
  1398. mes "Thank You!";
  1399. close;
  1400. case 3:
  1401. mes "[Death Cave]";
  1402. mes "Thank You!";
  1403. close;
  1404. }
  1405. }