SkyFortress.txt 71 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070
  1. //===== rAthena Script =======================================
  2. //= Sky Fortress Invasion
  3. //===== Description: =========================================
  4. //= [Official Conversion]
  5. //= Sky Fortress Invasion Instance
  6. //===== Changelogs: ==========================================
  7. //= 1.0 First version. [Capuche]
  8. //============================================================
  9. prt_q,249,82,2 script Han#a1 8W_SOLDIER,{
  10. mes "[Han]";
  11. mes "There must be a ton of monsters";
  12. mes "attacking the center of Prontera.";
  13. mes "***";
  14. next;
  15. mes "[Han]";
  16. mes "My family...My friends...";
  17. mes "They're all there...";
  18. mes "I must protect them...";
  19. mes "But...I have an even more important";
  20. mes "job to do here...";
  21. next;
  22. mes "[Han]";
  23. mes "I, scientist Doyeon, can do it.";
  24. mes "I can obliterate that dirty source place,";
  25. mes "ceaselessly spawning the monsters...";
  26. mes "That's why I'm protecting him.";
  27. mes "***";
  28. next;
  29. mes "[Han]";
  30. mes "Protecting him and destroying this fortress";
  31. mes "is what ultimately protects my family";
  32. mes "and friends.";
  33. close;
  34. }
  35. prt_q,252,79,4 script Doek#a1 8W_SOLDIER,{
  36. mes "[Doek]";
  37. mes "Can this scientist you're seeing here";
  38. mes "really protect Prontera?";
  39. mes "Can she?";
  40. mes "Do you believe so?";
  41. next;
  42. mes "[Doek]";
  43. mes "Honestly, I don't...";
  44. mes "But...";
  45. next;
  46. mes "[Doek]";
  47. mes "All my loved ones were...";
  48. mes "...by those monsters....";
  49. next;
  50. mes "[Doek]";
  51. mes "This is the last hope I can have...";
  52. mes "This is the last.";
  53. mes "So please help me.";
  54. mes "Help Doyeon...";
  55. next;
  56. mes "- And then, she remained silent -";
  57. mes "- for quite a while. -";
  58. close;
  59. }
  60. prt_q,249,79,4 script Scientist Doyeon#a1 4_M_MAYOR,{
  61. if (!checkweight(2104,2)) {
  62. mes "- It's full of items";
  63. mes "so you can't proceed to conversation. -";
  64. close;
  65. }
  66. if (BaseLevel < 145) {
  67. mes "- You should be level 145 or higher";
  68. mes "to proceed. -";
  69. close;
  70. }
  71. switch( checkquest(9419,PLAYTIME) ) {
  72. case -1:
  73. if (is_party_leader() == false) {
  74. callsub S_Info;
  75. close;
  76. }
  77. if (isbegin_quest(9418) == 0) {// first entrance
  78. .@party_name$ = getpartyname(getcharid(1));
  79. mes "[Scientist Doyeon]";
  80. mes "I'm a scientist";
  81. mes "living in Prontera.";
  82. mes "I'm just an ordinary scientist";
  83. mes "teaching children and doing research.";
  84. mes "And then...things came up";
  85. mes "in Prontera all of a sudden....";
  86. while(true) {
  87. next;
  88. switch( select( "About Sky Fortress", "Enter the Sky Fortress.", "End the dialogue." ) ) {
  89. case 1:
  90. callsub S_Info;
  91. break;
  92. case 2:
  93. mes "[Scientist Doyeon]";
  94. mes "I think I can open the warp,";
  95. mes "at least for once, with the magic";
  96. mes "that I've been collecting so hard.";
  97. mes "I hope you would help me";
  98. mes "destroy the fortress and";
  99. mes "get back our Prontera.";
  100. next;
  101. if (select( "No", "Yes" ) == 1) {
  102. mes "[Scientist Doyeon]";
  103. mes "Come back";
  104. mes "if you change your mind...";
  105. mes "Just know that time is running out...";
  106. break;
  107. }
  108. mes "[Scientist Doyeon]";
  109. mes "There! I opened the warp";
  110. mes "to the Sky Fortress!";
  111. mes "The warp will be activated";
  112. mes "only for a limited period of time.";
  113. mes "Step inside it, quick!";
  114. if (instance_create("Sky Fortress Invasion") < 0) {
  115. mes "Party Name: " + .@party_name$;
  116. mes "Party Leader: " + strcharinfo(0);
  117. mes "^0000ffSky Fortress Invasion ^000000- Reservation Failed!";
  118. close;
  119. }
  120. close;
  121. case 3:
  122. mes "[Scientist Doyeon]";
  123. mes "I'm so worried about";
  124. mes "the future of Prontera...";
  125. mes "It appears this fortress";
  126. mes "must be the source of all evil...";
  127. close;
  128. }
  129. }
  130. }
  131. mes "You're back unscathed.";
  132. mes "So...whatever happened";
  133. mes "inside?";
  134. next;
  135. mes "- I told her everything that";
  136. mes "happened inside the Sky Fortress. -";
  137. next;
  138. mes "[Scientist Doyeon]";
  139. mes "How could that be...";
  140. mes "Still, I think we have every reason to remain hopeful";
  141. mes "for eliminating that huge Golem";
  142. mes "in the Sky Fortress.";
  143. next;
  144. mes "[Scientist Doyeon]";
  145. mes "Still, those filthy monsters";
  146. mes "keep spawning in Prontera.";
  147. mes "So I think what we've done";
  148. mes "must not be enough.";
  149. mes "***";
  150. next;
  151. mes "[Scientist Doyeon]";
  152. mes "To operate the warp,";
  153. mes "a lot of magic is required.";
  154. mes "Bring me the item called the -Dungeon Pass-,";
  155. mes "or I need about";
  156. mes "three days to collect magic.";
  157. next;
  158. mes "[Scientist Doyeon]";
  159. mes "I hope you'd enter the Sky Fortress";
  160. mes "and help us save";
  161. mes "Prontera.";
  162. completequest 9418;// Attack Sky Fortress Invading Prontera
  163. setquest 9419;// Attack Sky Fortress Invading Prontera
  164. if (isbegin_quest(9427) == 0) {
  165. setquest 9427;// Clearing the Sky Fortress for the Same Time
  166. completequest 9427;
  167. rentitem 14505,3600;// Sky Fortress Ticket
  168. }
  169. close;
  170. case 0:
  171. case 1:
  172. mes "[Scientist Doyeon]";
  173. mes "To operate the warp,";
  174. mes "a lot of magic is required.";
  175. mes "Bring me the item called the -Dungeon Pass-,";
  176. mes "or I need about";
  177. mes "three days to collect magic.";
  178. next;
  179. if (is_party_leader() == true) {
  180. .@party_name$ = getpartyname(getcharid(1));
  181. if (select( "End the dialogue.", "Show the -Dungeon Pass-." ) == 2) {
  182. if (rentalcountitem(14505) < 1 && rentalcountitem(14506) < 1) {// Sky Fortress Ticket
  183. mes "[Scientist Doyeon]";
  184. mes "I don't think this works";
  185. mes "without the -Dungeon Pass-.";
  186. mes "I can't open the warp without it.";
  187. close;
  188. }
  189. mes "[Scientist Doyeon]";
  190. mes "Oh! Where did you";
  191. mes "get the -Dungeon Pass-?";
  192. mes "With this item,";
  193. mes "I can pretty much open the warp.";
  194. next;
  195. if (select( "End the dialogue.", "Activate the warp." ) == 1) {
  196. mes "[Scientist Doyeon]";
  197. mes "Are you not going";
  198. mes "to help Prontera?";
  199. close;
  200. }
  201. mes "[Scientist Doyeon]";
  202. mes "There! I opened the warp";
  203. mes "to the Sky Fortress!";
  204. mes "The warp will be activated";
  205. mes "only for a limited period of time.";
  206. mes "Step inside it, quick!";
  207. if (instance_create("Sky Fortress Invasion") < 0) {
  208. mes "Party Name: " + .@party_name$;
  209. mes "Party Leader: " + strcharinfo(0);
  210. mes "^0000ffSky Fortress Invasion ^000000- Reservation Failed!";
  211. close;
  212. }
  213. close;
  214. }
  215. }
  216. mes "[Scientist Doyeon]";
  217. mes "I hope you'd enter the Sky Fortress";
  218. mes "and help us save";
  219. mes "Prontera.";
  220. close;
  221. case 2:
  222. mes "[Scientist Doyeon]";
  223. mes "You've come back! You didn't get away!";
  224. mes "Thanks so much!";
  225. next;
  226. mes "[Scientist Doyeon]";
  227. mes "But still...";
  228. mes "A ton of undead monsters kept swarming about";
  229. mes "from that entrance seen behind me";
  230. mes "as if the sap monster spits out the sap.";
  231. mes "They kept coming out";
  232. mes "no matter how many were killed.";
  233. next;
  234. mes "[Scientist Doyeon]";
  235. mes "I suppose the monsters are being made up";
  236. mes "inside the fortress.";
  237. mes "My guess is that if we can defeat their ringleader in the fortress,";
  238. mes "the monsters will go away";
  239. mes "and Prontera will become stabilized.";
  240. mes "***";
  241. next;
  242. mes "[Scientist Doyeon]";
  243. mes "I think I can open the warp,";
  244. mes "at least for once, with the magic";
  245. mes "that I've been collecting so hard.";
  246. mes "I hope you would help me";
  247. mes "destroy the fortress and";
  248. mes "get back our Prontera.";
  249. if (is_party_leader() == true) {
  250. .@party_name$ = getpartyname(getcharid(1));
  251. next;
  252. if (select( "No", "Yes" ) == 1) {
  253. mes "[Scientist Doyeon]";
  254. mes "Come back";
  255. mes "if you change your mind...";
  256. mes "Just know that time is running out...";
  257. close;
  258. }
  259. mes "[Scientist Doyeon]";
  260. mes "There! I opened the warp";
  261. mes "to the Sky Fortress!";
  262. mes "The warp will be activated";
  263. mes "only for a limited period of time.";
  264. mes "Step inside it, quick!";
  265. if (instance_create("Sky Fortress Invasion") < 0) {
  266. mes "Party Name: " + .@party_name$;
  267. mes "Party Leader: " + strcharinfo(0);
  268. mes "^0000ffSky Fortress Invasion ^000000- Reservation Failed!";
  269. close;
  270. }
  271. }
  272. close;
  273. }
  274. end;
  275. S_Info:
  276. mes "[Scientist Doyeon]";
  277. mes "I'm a scientist";
  278. mes "living in Prontera.";
  279. mes "I'm just an ordinary scientist";
  280. mes "teaching children and doing research.";
  281. next;
  282. mes "[Scientist Doyeon]";
  283. mes "But now...the life at least as I know it";
  284. mes "has become shattered.";
  285. next;
  286. mes "[Scientist Doyeon]";
  287. mes "Thanks to this fortress";
  288. mes "looking like a huge trash can,";
  289. mes "our village has turned into a trash heap";
  290. mes "that doesn't even decay.";
  291. next;
  292. mes "[Scientist Doyeon]";
  293. mes "Buildings fall down,";
  294. mes "people keep dying out...";
  295. mes "I have to wonder what the nobility and soldiers at the Prontera Palace";
  296. mes "are up to when things are like this.";
  297. next;
  298. mes "[Scientist Doyeon]";
  299. mes "A ton of undead monsters kept swarming about";
  300. mes "from that entrance seen behind me";
  301. mes "as if the sap monster spits out the sap.";
  302. mes "They kept coming out";
  303. mes "no matter how many were killed.";
  304. next;
  305. mes "[Scientist Doyeon]";
  306. mes "I suppose the monsters are being made up";
  307. mes "inside the fortress.";
  308. mes "My guess is that if we can defeat their ringleader in the fortress,";
  309. mes "the monsters will get away";
  310. mes "and Prontera will become stabilized.";
  311. mes "***";
  312. next;
  313. mes "[Scientist Doyeon]";
  314. mes "So I really wanted to enter the fortress";
  315. mes "but couldn't find any entrance.";
  316. mes "I studied day and night";
  317. mes "and finally located it.";
  318. next;
  319. mes "[Scientist Doyeon]";
  320. mes "To enter the fortress,";
  321. mes "the warp should be activated.";
  322. mes "To do so, a lot of magic";
  323. mes "is indispensable!";
  324. next;
  325. mes "[Scientist Doyeon]";
  326. mes "And then...I've been preparing";
  327. mes "a lot of magic necessary for the warp.";
  328. mes "Now I could use a warrior";
  329. mes "who can shatter the fortress";
  330. mes "and bring peace to Prontera.";
  331. return;
  332. }
  333. prt_q,243,75,3 script Fortress Entry Warp Portal#1 PORTAL,{
  334. if (BaseLevel < 145) {
  335. mes "- You should be level 145 or higher";
  336. mes "to proceed. -";
  337. close;
  338. }
  339. if (checkquest(9419,PLAYTIME) == 2 || (checkquest(9419,PLAYTIME) == -1 && isbegin_quest(9418) != 1)) {
  340. setarray .@menu$[0], "Don't step into the warp.", "Step into the warp.";
  341. .@type = 1;
  342. }
  343. else {
  344. mes "- The warp doesn't seem to work.";
  345. mes "You can't seem to enter... -";
  346. next;
  347. setarray .@menu$[0], "End the dialogue.", "", "Put the - Dungeon Pass - near to the warp.";
  348. }
  349. switch( select( .@menu$[0], .@menu$[1], .@menu$[2] ) ) {
  350. case 1:
  351. mes "- The warp is emanating bright lights. -";
  352. close;
  353. case 2:
  354. break;
  355. case 3:
  356. if (rentalcountitem(14505) < 1 && rentalcountitem(14506) < 1) {// Sky Fortress Ticket
  357. mes "- You don't have -";
  358. mes "- the Dungeon Pass. -";
  359. close;
  360. }
  361. break;
  362. }
  363. .@md_name$ = "Sky Fortress Invasion";
  364. switch( instance_enter(.@md_name$) ) {
  365. case IE_OTHER:
  366. mes "An unknown error occurred.";
  367. close;
  368. case IE_NOINSTANCE:
  369. mes "Memorial Dungeon " + .@md_name$ + " doesn't exist.";
  370. mes "Party leader hasn't created the Memorial Dungeon.";
  371. close;
  372. case IE_NOMEMBER:
  373. mes "Only the party members may enter the Memorial Dungeon.";
  374. close;
  375. case IE_OK:
  376. mapannounce "prt_q", "Party member " + strcharinfo(0) + " of party's " + getpartyname( getcharid(1) ) + " enters " + .@md_name$ + "", bc_map,0xFF99;
  377. if (.@type == 1) {
  378. if (isbegin_quest(9419) > 0)
  379. erasequest 9419;
  380. if (isbegin_quest(9418) > 0)
  381. erasequest 9418;
  382. setquest 9418;// Attack Sky Fortress Invading Prontera
  383. }
  384. fortress_entrance_loc = 0; // warp back to prt_q on exit
  385. // warp "1@sthb",54,67;
  386. end;
  387. }
  388. end;
  389. OnInit:
  390. while(true) {
  391. sleep 10000;
  392. specialeffect EF_ENHANCE;
  393. }
  394. end;
  395. }
  396. // Dali entrance
  397. dali02,115,61,3 script Fortress Entry Warp Portal#2 PORTAL,{
  398. if (BaseLevel < 145) {
  399. mes "- You should be level 145 or higher";
  400. mes "to proceed. -";
  401. close;
  402. }
  403. mes "- The warp doesn't seem to work.";
  404. mes "You can't seem to enter. -";
  405. next;
  406. if (select( "End the dialogue.", "Put the - Dungeon Pass - near to the warp." ) == 1) {
  407. mes "- The warp is emanating bright lights. -";
  408. close;
  409. }
  410. if (rentalcountitem(14505) < 1 && rentalcountitem(14506) < 1) {// Sky Fortress Ticket
  411. mes "- You don't have -";
  412. mes "- the Dungeon Pass. -";
  413. close;
  414. }
  415. .@md_name$ = "Sky Fortress Invasion";
  416. switch( instance_enter(.@md_name$) ) {
  417. case IE_OTHER:
  418. mes "An unknown error occurred.";
  419. close;
  420. case IE_NOINSTANCE:
  421. mes "Memorial Dungeon " + .@md_name$ + " doesn't exist.";
  422. mes "Party leader hasn't created the Memorial Dungeon.";
  423. close;
  424. case IE_NOMEMBER:
  425. mes "Only the party members may enter the Memorial Dungeon.";
  426. close;
  427. case IE_OK:
  428. mapannounce "prt_q", "Party member " + strcharinfo(0) + " of party's " + getpartyname( getcharid(1) ) + " enters " + .@md_name$ + "", bc_map,0xFF99;
  429. // warp "1@sthb",54,67;
  430. fortress_entrance_loc = 1; // warp back to dali02 on exit
  431. // note: no quest change when using tickets
  432. end;
  433. }
  434. end;
  435. OnInit:
  436. while(true) {
  437. sleep 10000;
  438. specialeffect EF_ENHANCE;
  439. }
  440. end;
  441. }
  442. dali02,122,63,2 script Scientist Doyeon#a2 4_M_MAYOR,{
  443. if (!checkweight(2104,2)) {
  444. mes "- It's full of items";
  445. mes "so you can't proceed to conversation. -";
  446. close;
  447. }
  448. if (BaseLevel < 145) {
  449. mes "- You should be level 145 or higher";
  450. mes "to proceed. -";
  451. close;
  452. }
  453. if (is_party_leader() == false) {
  454. mes "[Scientist Doyeon]";
  455. mes "I'm a scientist";
  456. mes "living in Prontera.";
  457. mes "I'm just an ordinary scientist";
  458. mes "teaching children and doing research.";
  459. next;
  460. mes "[Scientist Doyeon]";
  461. mes "But now...my normal life";
  462. mes "has become shattered.";
  463. next;
  464. mes "[Scientist Doyeon]";
  465. mes "Thanks to this fortress";
  466. mes "looking like a huge trash can,";
  467. mes "our village has turned into a trash heap";
  468. mes "that doesn't even decay.";
  469. next;
  470. mes "[Scientist Doyeon]";
  471. mes "Buildings fall down,";
  472. mes "people keep dying out...";
  473. mes "I have to wonder what the nobility and soldiers at the Prontera Palace";
  474. mes "are up to when things are like this.";
  475. next;
  476. mes "[Scientist Doyeon]";
  477. mes "A ton of undead monsters kept swarming about";
  478. mes "from that entrance seen behind me";
  479. mes "as if the sap monster spits out the sap.";
  480. mes "They kept coming out";
  481. mes "no matter how many were killed.";
  482. next;
  483. mes "[Scientist Doyeon]";
  484. mes "I suppose the monsters are being made up";
  485. mes "inside the fortress.";
  486. mes "My guess is that if we can defeat their ringleader in the fortress,";
  487. mes "the monsters will go away";
  488. mes "and Prontera will become stabilized.";
  489. mes "***";
  490. next;
  491. mes "[Scientist Doyeon]";
  492. mes "So I really wanted to enter the fortress";
  493. mes "but couldn't find any entrance.";
  494. mes "I studied day and night";
  495. mes "and finally located it.";
  496. next;
  497. mes "[Scientist Doyeon]";
  498. mes "To enter the fortress,";
  499. mes "the warp should be activated.";
  500. mes "To do so,";
  501. mes "the -Dungeon Pass-";
  502. mes "is indispensable!";
  503. next;
  504. mes "[Scientist Doyeon]";
  505. mes "And then...I've been preparing";
  506. mes "a lot of magic necessary for the warp.";
  507. mes "Now I could use a warrior";
  508. mes "who can shatter the fortress";
  509. mes "and bring peace to Prontera.";
  510. close;
  511. }
  512. .@party_name$ = getpartyname(getcharid(1));
  513. mes "[Scientist Doyeon]";
  514. mes "I'm a scientist";
  515. mes "living in Prontera.";
  516. mes "I teach children and perform research activities.";
  517. mes "But it has become";
  518. mes "so dangerous there,";
  519. mes "so I moved in here.";
  520. next;
  521. switch( select( "About Sky Fortress", "Enter the Sky Fortress.", "End the dialogue." ) ) {
  522. case 1:
  523. mes "[Scientist Doyeon]";
  524. mes "But now...my normal life";
  525. mes "has become shattered.";
  526. next;
  527. mes "[Scientist Doyeon]";
  528. mes "Thanks to this fortress";
  529. mes "looking like a huge trash can,";
  530. mes "our village has turned into a trash heap";
  531. mes "that doesn't even decay.";
  532. next;
  533. mes "[Scientist Doyeon]";
  534. mes "Buildings fall down,";
  535. mes "people keep dying out...";
  536. mes "I have to wonder what the nobility and soldiers at the Prontera Palace";
  537. mes "are up to when things are like this.";
  538. next;
  539. mes "[Scientist Doyeon]";
  540. mes "A ton of undead monsters kept swarming about";
  541. mes "as if the sap monster spits out the sap.";
  542. mes "They kept coming out";
  543. mes "no matter how many were killed.";
  544. mes "***";
  545. next;
  546. mes "[Scientist Doyeon]";
  547. mes "I suppose the monsters are being made up";
  548. mes "inside the fortress.";
  549. mes "My guess is that if we can defeat their ringleader in the fortress,";
  550. mes "the monsters will go away";
  551. mes "and Prontera will become stabilized.";
  552. mes "***";
  553. next;
  554. mes "[Scientist Doyeon]";
  555. mes "So I wanted to enter the fortress";
  556. mes "but couldn't find any entrance.";
  557. mes "I studied day and night";
  558. mes "and finally located it.";
  559. next;
  560. mes "[Scientist Doyeon]";
  561. mes "To enter the fortress,";
  562. mes "the warp should be activated.";
  563. mes "To do so, a lot of magic";
  564. mes "is indispensable!";
  565. next;
  566. mes "[Scientist Doyeon]";
  567. mes "And then...I've been preparing";
  568. mes "a lot of magic necessary for the warp.";
  569. mes "Now I could use a warrior";
  570. mes "who can shatter the fortress";
  571. mes "and bring peace to Prontera.";
  572. mes "That's why I'm here.";
  573. close;
  574. case 2:
  575. mes "[Scientist Doyeon]";
  576. mes "To operate the warp,";
  577. mes "a lot of magic is required.";
  578. mes "Don't forget to bring me";
  579. mes "the -Dungeon Pass-.";
  580. mes "That's the only way to open";
  581. mes "the warp to the Sky Fortress.";
  582. next;
  583. if (select( "End the dialogue.", "Show the -Dungeon Pass-." ) == 1) {
  584. mes "[Scientist Doyeon]";
  585. mes "Don't forget to bring me";
  586. mes "the -Dungeon Pass-.";
  587. mes "Enter the Sky Fortress";
  588. mes "and help us save";
  589. mes "the invaded Prontera.";
  590. close;
  591. }
  592. if (rentalcountitem(14505) < 1 && rentalcountitem(14506) < 1) {// Sky Fortress Ticket
  593. mes "[Scientist Doyeon]";
  594. mes "I don't think this works";
  595. mes "without the -Dungeon Pass-.";
  596. mes "I can't open the warp without it.";
  597. close;
  598. }
  599. mes "[Scientist Doyeon]";
  600. mes "Oh! Where did you";
  601. mes "get the -Dungeon Pass-?";
  602. mes "This item is enough";
  603. mes "to open the warp.";
  604. next;
  605. if (select( "End the dialogue.", "Activate the warp." ) == 1) {
  606. mes "[Scientist Doyeon]";
  607. mes "Are you not going";
  608. mes "to help Prontera?";
  609. close;
  610. }
  611. mes "[Scientist Doyeon]";
  612. mes "There! I opened the warp";
  613. mes "to the Sky Fortress!";
  614. mes "The warp will be activated";
  615. mes "only for a limited period of time.";
  616. mes "Step inside it, quick!";
  617. if (instance_create("Sky Fortress Invasion") < 0) {
  618. mes "Party Name: " + .@party_name$;
  619. mes "Party Leader: " + strcharinfo(0);
  620. mes "^0000ffSky Fortress Invasion ^000000- Reservation Failed!";
  621. close;
  622. }
  623. close;
  624. case 3:
  625. close;
  626. }
  627. }
  628. // Warps
  629. 1@sthb,73,71,0 warp2 #sthd_move_01_01 3,3,1@sthb,73,84
  630. 1@sthb,93,77,0 warp2 #sthd_move_02_01 2,2,1@sthb,210,96
  631. 1@sthb,190,54,0 warp2 #sthd_move_02_02 2,2,1@sthd,103,71
  632. // Main event - step 1
  633. 1@sthb,64,67,4 script Stefan.J.E.Wolf#sthd_01 4_AS_RAGGED_GOLEM,{
  634. end;
  635. OnStart:
  636. enablenpc instance_npcname("Stefan.J.E.Wolf#sthd_01");
  637. initnpctimer;
  638. end;
  639. OnTimer1000:
  640. npctalk "Stefan: ~Grunts~";
  641. end;
  642. OnTimer3000:
  643. npctalk "Earnest: What a bunch of menacing worms...!";
  644. end;
  645. OnTimer5000:
  646. mapannounce 'sthb_map$, "Stefan Jack Earnest Wolf: Guard...the Sky Fortress...Immortal...beings...", bc_map,0xEBFF;
  647. end;
  648. OnTimer6000:
  649. donpcevent instance_npcname("#sthd_event_2") + "::OnStart";
  650. end;
  651. OnTimer7000:
  652. disablenpc instance_npcname("Stefan.J.E.Wolf#sthd_01");
  653. stopnpctimer;
  654. end;
  655. }
  656. 1@sthb,64,67,4 duplicate(dummy_npc) Stefan.J.E.Wolf#sthd_02 4_AS_RAGGED_GOLEM
  657. 1@sthb,56,71,0 script #sthd_event_1 HIDDEN_WARP_NPC,8,8,{
  658. end;
  659. OnTouch:
  660. disablenpc instance_npcname("#sthd_event_1");
  661. .@stefan$ = instance_npcname("Stefan.J.E.Wolf#sthd_01");
  662. setpcblock PCBLOCK_NPC, true;
  663. unittalk getcharid(3), "" + strcharinfo(0) + " : Is this what caused the invasion into Prontera? Inside the Sky Fortress?";
  664. sleep2 2000;
  665. enablenpc .@stefan$;
  666. sleep2 2000;
  667. cutin "stephan_j_e_w.bmp",2;
  668. npctalk "Wolf: Trespassers... Sky Fortress...", .@stefan$;
  669. specialeffect2 EF_LOCKON;
  670. sleep2 2000;
  671. npctalk "Jack: Bijou...told me...to impede the intruders...", .@stefan$;
  672. sleep2 2000;
  673. unittalk getcharid(3), "" + strcharinfo(0) + " : What's that...huge lump?";
  674. npctalk "Earnest: Little...human...Greenhorn...Away...", .@stefan$;
  675. sleep2 2000;
  676. setpcblock PCBLOCK_NPC, false;
  677. cutin "",255;
  678. specialeffect2 EF_LOCKON;
  679. donpcevent instance_npcname("#sthd_event_1_boss") + "::OnStefanHp";
  680. disablenpc .@stefan$;
  681. end;
  682. }
  683. 1@sthb,1,1,0 script #sthd_event_1_boss HIDDEN_WARP_NPC,{
  684. end;
  685. OnStefanHp:
  686. enablenpc instance_npcname("#sthd_event_1_boss");
  687. monster 'sthb_map$,64,67, "Stefan.J.E.Wolf",3484,1, instance_npcname("#sthd_event_1_boss") + "::OnMobDead"; // AS_D_RAGGED_GOLEM
  688. 'boss_id = $@mobid[0];
  689. initnpctimer;
  690. end;
  691. OnTimer2000:
  692. getunitdata 'boss_id, .@data;
  693. if (.@data[UMOB_HP] >= 19000000)
  694. end;
  695. // fall through
  696. OnMobDead:
  697. stopnpctimer;
  698. killmonster 'sthb_map$, instance_npcname("#sthd_event_1_boss") + "::OnMobDead";
  699. donpcevent instance_npcname("Stefan.J.E.Wolf#sthd_01") + "::OnStart";
  700. disablenpc instance_npcname("#sthd_event_1_boss");
  701. end;
  702. OnTimer3000:
  703. initnpctimer;
  704. end;
  705. }
  706. // 1@sthb,68,65,0 script #sthd_event_2 HIDDEN_WARP_NPC,{ // official coord
  707. 1@sthb,1,1,0 script #sthd_event_2 HIDDEN_WARP_NPC,{
  708. end;
  709. OnStart:
  710. enablenpc instance_npcname("#sthd_event_2");
  711. initnpctimer;
  712. .@label$ = instance_npcname("#sthd_event_2") + "::OnMobDead";
  713. monster 'sthb_map$,48,75,"Immortal Zombie Soldier",3476,1, .@label$;// AS_ZOMBIE
  714. monster 'sthb_map$,56,75,"Immortal Zombie Soldier",3476,1, .@label$;
  715. monster 'sthb_map$,63,74,"Immortal Zombie Soldier",3476,1, .@label$;
  716. monster 'sthb_map$,63,67,"Immortal Zombie Soldier",3476,1, .@label$;
  717. monster 'sthb_map$,63,61,"Immortal Zombie Soldier",3476,1, .@label$;
  718. monster 'sthb_map$,56,60,"Immortal Zombie Soldier",3476,1, .@label$;
  719. monster 'sthb_map$,48,60,"Immortal Zombie Soldier",3476,1, .@label$;
  720. monster 'sthb_map$,48,67,"Immortal Zombie Soldier",3476,1, .@label$;
  721. end;
  722. OnTimer3000:
  723. if (mobcount( 'sthb_map$, instance_npcname("#sthd_event_2") + "::OnMobDead" ) > 0) {
  724. initnpctimer;
  725. end;
  726. }
  727. stopnpctimer;
  728. disablenpc instance_npcname("#sthd_event_2");
  729. donpcevent instance_npcname("#sthd_event_3") + "::OnStart";
  730. end;
  731. OnMobDead:
  732. end;
  733. }
  734. // 1@sthb,68,66,0 script #sthd_event_3 HIDDEN_WARP_NPC,{ // official coord
  735. 1@sthb,1,1,0 script #sthd_event_3 HIDDEN_WARP_NPC,{
  736. end;
  737. OnStart:
  738. enablenpc instance_npcname("#sthd_event_3");
  739. initnpctimer;
  740. .@label$ = instance_npcname("#sthd_event_3") + "::OnMobDead";
  741. monster 'sthb_map$,48,75,"Immortal Zombie Soldier",3476,1, .@label$;// AS_ZOMBIE
  742. monster 'sthb_map$,56,75,"Immortal Zombie Soldier",3476,1, .@label$;
  743. monster 'sthb_map$,63,74,"Immortal Zombie Soldier",3476,1, .@label$;
  744. monster 'sthb_map$,63,67,"Immortal Zombie Soldier",3476,1, .@label$;
  745. monster 'sthb_map$,63,61,"Immortal Zombie Soldier",3476,1, .@label$;
  746. monster 'sthb_map$,56,60,"Immortal Zombie Soldier",3476,1, .@label$;
  747. monster 'sthb_map$,48,60,"Immortal Zombie Soldier",3476,1, .@label$;
  748. monster 'sthb_map$,48,67,"Immortal Zombie Soldier",3476,1, .@label$;
  749. end;
  750. OnTimer3000:
  751. if (mobcount( 'sthb_map$, instance_npcname("#sthd_event_3") + "::OnMobDead" ) > 0) {
  752. initnpctimer;
  753. end;
  754. }
  755. stopnpctimer;
  756. disablenpc instance_npcname("#sthd_event_3");
  757. donpcevent instance_npcname("#sthd_event_4") + "::OnStart";
  758. end;
  759. OnMobDead:
  760. end;
  761. }
  762. // 1@sthb,68,67,0 script #sthd_event_4 HIDDEN_WARP_NPC,{ // official coord
  763. 1@sthb,1,1,0 script #sthd_event_4 HIDDEN_WARP_NPC,{
  764. end;
  765. OnStart:
  766. enablenpc instance_npcname("#sthd_event_4");
  767. initnpctimer;
  768. .@label$ = instance_npcname("#sthd_event_4") + "::OnMobDead";
  769. monster 'sthb_map$,48,75,"Immortal Zombie Soldier",3476,1, .@label$;// AS_ZOMBIE
  770. monster 'sthb_map$,56,75,"Immortal Zombie Soldier",3476,1, .@label$;
  771. monster 'sthb_map$,63,74,"Immortal Zombie Soldier",3476,1, .@label$;
  772. monster 'sthb_map$,63,67,"Immortal Zombie Soldier",3476,1, .@label$;
  773. monster 'sthb_map$,63,61,"Immortal Zombie Soldier",3476,1, .@label$;
  774. monster 'sthb_map$,56,60,"Immortal Zombie Soldier",3476,1, .@label$;
  775. monster 'sthb_map$,48,60,"Immortal Zombie Soldier",3476,1, .@label$;
  776. monster 'sthb_map$,48,67,"Immortal Zombie Soldier",3476,1, .@label$;
  777. monster 'sthb_map$,56,79,"Sky Fortress Key Keeper",3478,1, .@label$; // AS_ZOMBIE_SLAUGHTER
  778. end;
  779. OnTimer3000:
  780. if (mobcount( 'sthb_map$, instance_npcname("#sthd_event_4") + "::OnMobDead" ) > 0) {
  781. initnpctimer;
  782. end;
  783. }
  784. stopnpctimer;
  785. disablenpc instance_npcname("#sthd_event_4");
  786. enablenpc instance_npcname("#Stefan_Action1");
  787. enablenpc instance_npcname("Stefan.J.E.Wolf#sthd_02");
  788. end;
  789. OnMobDead:
  790. end;
  791. }
  792. 1@sthb,64,67,0 script #Stefan_Action1 HIDDEN_WARP_NPC,8,8,{
  793. end;
  794. OnTouch:
  795. disablenpc instance_npcname("#Stefan_Action1");
  796. setpcblock PCBLOCK_NPC, true;
  797. sleep2 1000;
  798. cutin "stephan_j_e_w.bmp",2;
  799. unittalk getcharid(3), "" + strcharinfo(0) + " : I believe that huge Golem is what plays an important role in the Sky Fortress.";
  800. sleep2 2000;
  801. npctalk "Wolf: Every subordinate at the fortress...Intruders...Stop them...Bijou's...order...", instance_npcname("Stefan.J.E.Wolf#sthd_02");
  802. specialeffect2 EF_LOCKON;
  803. sleep2 2000;
  804. unittalk getcharid(3), "" + strcharinfo(0) + " : What on earth is happening inside?";
  805. sleep2 2000;
  806. unittalk getcharid(3), "" + strcharinfo(0) + " : Let's head to top! I believe there must be something there.";
  807. sleep2 2000;
  808. setpcblock PCBLOCK_NPC, false;
  809. specialeffect2 EF_LOCKON;
  810. specialeffect EF_BAKU,AREA, instance_npcname("Stefan.J.E.Wolf#sthd_02");
  811. cutin "",255;
  812. disablenpc instance_npcname("Stefan.J.E.Wolf#sthd_02");
  813. for ( .@i = 1; .@i <= 6; .@i++ ) {
  814. enablenpc instance_npcname("Deactivated Warp#sthd_mov_" + .@i);
  815. enablenpc instance_npcname("#sthd_move_back_a_" + .@i);
  816. }
  817. enablenpc instance_npcname("#sthd_move_01_01");
  818. enablenpc instance_npcname("#sthd_move_02_01");
  819. enablenpc instance_npcname("#sthd_move_02_02");
  820. enablenpc instance_npcname("#Stefan_Action2"); // 2nd map
  821. enablenpc instance_npcname("Stefan.J.E.Wolf#sthd_03");
  822. // Mobs spots
  823. for ( .@i = 5; .@i <= 18; .@i++ )
  824. enablenpc instance_npcname("#sthd_event_" + .@i);
  825. // Room Shuffle
  826. donpcevent instance_npcname("#sthd_key_control") + "::OnShuffle";
  827. end;
  828. }
  829. // Shuffle warp room
  830. 1@sthb,68,80,0 script #sthd_key_control HIDDEN_WARP_NPC,{
  831. end;
  832. OnShuffle:
  833. switch( rand(6) ) {
  834. case 0:
  835. // 'warp_list[ <from room X> ] = <to room Y>;
  836. setarray 'warp_list[1], 5,1,3,4,6,2;
  837. break;
  838. case 1:
  839. setarray 'warp_list[1], 2,6,4,3,1,5;
  840. break;
  841. case 2:
  842. setarray 'warp_list[1], 3,5,1,6,2,4;
  843. break;
  844. case 3:
  845. setarray 'warp_list[1], 6,4,2,5,3,1;
  846. break;
  847. case 4:
  848. setarray 'warp_list[1], 1,3,5,2,4,6;
  849. break;
  850. case 5:
  851. setarray 'warp_list[1], 4,2,6,1,5,3;
  852. break;
  853. }
  854. end;
  855. }
  856. // Room exit
  857. 1@sthc,66,88,0 script #sthd_move_back_a_1 WARPNPC,2,2,{
  858. end;
  859. OnTouch:
  860. setarray .@coord[2],
  861. 39,85, // Activated Warp#sthd_mov_1
  862. 83,95, // Activated Warp#sthd_mov_2
  863. 28,39, // Activated Warp#sthd_mov_3
  864. 210,79, // Activated Warp#sthd_mov_4
  865. 143,87, // Activated Warp#sthd_mov_5
  866. 179,47; // Activated Warp#sthd_mov_6
  867. .@room_num = atoi( replacestr( strnpcinfo(2), "sthd_move_back_a_", "" ) );
  868. .@index = inarray( 'warp_list[1], .@room_num ) * 2;
  869. warp 'sthb_map$, .@coord[.@index], .@coord[ .@index+1 ];
  870. end;
  871. }
  872. 1@sthc,116,88,0 duplicate(#sthd_move_back_a_1) #sthd_move_back_a_2 WARPNPC,2,2
  873. 1@sthc,16,6,0 duplicate(#sthd_move_back_a_1) #sthd_move_back_a_3 WARPNPC,2,2
  874. 1@sthc,115,6,0 duplicate(#sthd_move_back_a_1) #sthd_move_back_a_4 WARPNPC,2,2
  875. 1@sthc,66,6,0 duplicate(#sthd_move_back_a_1) #sthd_move_back_a_5 WARPNPC,2,2
  876. 1@sthc,15,88,0 duplicate(#sthd_move_back_a_1) #sthd_move_back_a_6 WARPNPC,2,2
  877. // Room entrance
  878. 1@sthb,34,86,1 script Activated Warp#sthd_mov_1 1_SHADOW_NPC,{
  879. if (select( "Don't step into the warp.", "Step into the warp." ) == 1) {
  880. mes "- Dreary warp -";
  881. mes "- Black light is shining. -";
  882. close;
  883. }
  884. mes "- Black Warp is swirling about. -";
  885. close2;
  886. setarray .@coord[2],
  887. 66,96, // #sthd_move_back_a_1, #sthd_event_13
  888. 116,96, // #sthd_move_back_a_2, #sthd_event_14
  889. 16,13, // #sthd_move_back_a_3, #sthd_event_18, Immortal Wind Ghost
  890. 115,14, // #sthd_move_back_a_4, #sthd_event_15
  891. 66,14, // #sthd_move_back_a_5, #sthd_event_16
  892. 15,96; // #sthd_move_back_a_6, #sthd_event_17, Immortal Cursed Knight
  893. .@room_num = atoi( replacestr( strnpcinfo(2), "sthd_mov_", "" ) );
  894. .@index = 'warp_list[.@room_num] * 2;
  895. warp 'sthc_map$, .@coord[.@index], .@coord[ .@index+1 ];
  896. end;
  897. }
  898. 1@sthb,84,99,1 duplicate(Activated Warp#sthd_mov_1) Activated Warp#sthd_mov_2 1_SHADOW_NPC
  899. 1@sthb,24,40,1 duplicate(Activated Warp#sthd_mov_1) Activated Warp#sthd_mov_3 1_SHADOW_NPC
  900. 1@sthb,206,80,1 duplicate(Activated Warp#sthd_mov_1) Activated Warp#sthd_mov_4 1_SHADOW_NPC
  901. 1@sthb,147,86,1 duplicate(Activated Warp#sthd_mov_1) Activated Warp#sthd_mov_5 1_SHADOW_NPC
  902. 1@sthb,179,51,1 duplicate(Activated Warp#sthd_mov_1) Activated Warp#sthd_mov_6 1_SHADOW_NPC
  903. 1@sthb,34,85,1 script Deactivated Warp#sthd_mov_1 4_ENERGY_WHITE,{
  904. if (select( "Desactivate the warp.", "Activate the warp." ) == 1) {
  905. mes "- Move the fortress to a special place -";
  906. mes "- Accessible door -";
  907. mes "- You seen an accessible door -";
  908. close;
  909. }
  910. if (countitem(6960) < 1) {
  911. mes "- To operate the warp -";
  912. mes "- You need a key to the Sky Fortress. -";
  913. close;
  914. }
  915. delitem 6960,1;
  916. mes "- Warp has been -";
  917. mes "- successfully activated -";
  918. mes "- Dreary warp -";
  919. mes "- is brought up -";
  920. mes "- shining in black -";
  921. disablenpc();
  922. enablenpc instance_npcname("Activated Warp#" + strnpcinfo(2));
  923. close;
  924. }
  925. 1@sthb,83,99,1 duplicate(Deactivated Warp#sthd_mov_1) Deactivated Warp#sthd_mov_2 4_ENERGY_WHITE
  926. 1@sthb,24,39,1 duplicate(Deactivated Warp#sthd_mov_1) Deactivated Warp#sthd_mov_3 4_ENERGY_WHITE
  927. 1@sthb,206,79,1 duplicate(Deactivated Warp#sthd_mov_1) Deactivated Warp#sthd_mov_4 4_ENERGY_WHITE
  928. 1@sthb,147,87,1 duplicate(Deactivated Warp#sthd_mov_1) Deactivated Warp#sthd_mov_5 4_ENERGY_WHITE
  929. 1@sthb,178,51,1 duplicate(Deactivated Warp#sthd_mov_1) Deactivated Warp#sthd_mov_6 4_ENERGY_WHITE
  930. // Spawn in the rooms
  931. 1@sthc,66,94,0 script #sthd_event_13 HIDDEN_WARP_NPC,8,8,{
  932. end;
  933. OnTouch:
  934. disablenpc instance_npcname("#sthd_event_13");
  935. .@label$ = instance_npcname("#sthd_event_13") + "::OnMobDead";
  936. monster 'sthc_map$,62,108,"Immortal Nightmare Shadow",3481,1, .@label$;// AS_EVIL_SHADOW1
  937. monster 'sthc_map$,70,108,"Immortal Nightmare Shadow",3481,1, .@label$;
  938. monster 'sthc_map$,70,101,"Immortal Nightmare Shadow",3481,1, .@label$;
  939. monster 'sthc_map$,66,115,"Immortal Nightmare Shadow",3481,1, .@label$;
  940. monster 'sthc_map$,70,116,"Immortal Nightmare Shadow",3481,1, .@label$;
  941. monster 'sthc_map$,69,127,"Immortal Nightmare Shadow",3481,1, .@label$;
  942. monster 'sthc_map$,64,132,"Immortal Nightmare Shadow",3481,1, .@label$;
  943. monster 'sthc_map$,61,127,"Immortal Nightmare Shadow",3481,1, .@label$;
  944. monster 'sthc_map$,61,101,"Immortal Nightmare Shadow",3481,1, .@label$;
  945. monster 'sthc_map$,62,116,"Immortal Nightmare Shadow",3481,1, .@label$;
  946. initnpctimer;
  947. end;
  948. OnTimer2000:
  949. if (mobcount( 'sthc_map$, instance_npcname("#sthd_event_13") + "::OnMobDead" ) > 0) {
  950. initnpctimer;
  951. end;
  952. }
  953. stopnpctimer;
  954. enablenpc instance_npcname("Sky Fortress Gold Treasure#1");
  955. end;
  956. OnMobDead:
  957. end;
  958. }
  959. 1@sthc,116,94,0 script #sthd_event_14 HIDDEN_WARP_NPC,8,8,{
  960. end;
  961. OnTouch:
  962. disablenpc instance_npcname("#sthd_event_14");
  963. .@label$ = instance_npcname("#sthd_event_14") + "::OnMobDead";
  964. monster 'sthc_map$,112,101, "Immortal Angry Shadow",3482,1, .@label$;// AS_EVIL_SHADOW2
  965. monster 'sthc_map$,120,101, "Immortal Angry Shadow",3482,1, .@label$;
  966. monster 'sthc_map$,119,110, "Immortal Angry Shadow",3482,1, .@label$;
  967. monster 'sthc_map$,115,115, "Immortal Angry Shadow",3482,1, .@label$;
  968. monster 'sthc_map$,114,128, "Immortal Angry Shadow",3482,1, .@label$;
  969. monster 'sthc_map$,112,110, "Immortal Angry Shadow",3482,1, .@label$;
  970. monster 'sthc_map$,118,120, "Immortal Angry Shadow",3482,1, .@label$;
  971. monster 'sthc_map$,110,130, "Immortal Angry Shadow",3482,1, .@label$;
  972. monster 'sthc_map$,111,120, "Immortal Angry Shadow",3482,1, .@label$;
  973. monster 'sthc_map$,120,130, "Immortal Angry Shadow",3482,1, .@label$;
  974. initnpctimer;
  975. end;
  976. OnTimer2000:
  977. if (mobcount( 'sthc_map$, instance_npcname("#sthd_event_14") + "::OnMobDead" ) > 0) {
  978. initnpctimer;
  979. end;
  980. }
  981. stopnpctimer;
  982. enablenpc instance_npcname("Sky Fortress Gold Treasure#2");
  983. end;
  984. OnMobDead:
  985. end;
  986. }
  987. 1@sthc,115,12,0 script #sthd_event_15 HIDDEN_WARP_NPC,8,8,{
  988. end;
  989. OnTouch:
  990. disablenpc instance_npcname("#sthd_event_15");
  991. .@label$ = instance_npcname("#sthd_event_15") + "::OnMobDead";
  992. monster 'sthc_map$,120,27, "Immortal Nightmare Shadow",3481,1, .@label$;// AS_EVIL_SHADOW1
  993. monster 'sthc_map$,120,19, "Immortal Nightmare Shadow",3481,1, .@label$;
  994. monster 'sthc_map$,111,27, "Immortal Nightmare Shadow",3481,1, .@label$;
  995. monster 'sthc_map$,115,33, "Immortal Nightmare Shadow",3481,1, .@label$;
  996. monster 'sthc_map$,111,36, "Immortal Nightmare Shadow",3481,1, .@label$;
  997. monster 'sthc_map$,111,45, "Immortal Nightmare Shadow",3481,1, .@label$;
  998. monster 'sthc_map$,114,49, "Immortal Nightmare Shadow",3481,1, .@label$;
  999. monster 'sthc_map$,119,36, "Immortal Nightmare Shadow",3481,1, .@label$;
  1000. monster 'sthc_map$,119,45, "Immortal Nightmare Shadow",3481,1, .@label$;
  1001. monster 'sthc_map$,116,18, "Immortal Nightmare Shadow",3481,1, .@label$;
  1002. initnpctimer;
  1003. end;
  1004. OnTimer2000:
  1005. if (mobcount( 'sthc_map$, instance_npcname("#sthd_event_15") + "::OnMobDead" ) > 0) {
  1006. initnpctimer;
  1007. end;
  1008. }
  1009. stopnpctimer;
  1010. enablenpc instance_npcname("Sky Fortress Gold Treasure#3");
  1011. end;
  1012. OnMobDead:
  1013. end;
  1014. }
  1015. 1@sthc,66,12,0 script #sthd_event_16 HIDDEN_WARP_NPC,8,8,{
  1016. end;
  1017. OnTouch:
  1018. disablenpc instance_npcname("#sthd_event_16");
  1019. .@label$ = instance_npcname("#sthd_event_16") + "::OnMobDead";
  1020. monster 'sthc_map$,70,18, "Immortal Angry Shadow",3482,1, .@label$;// AS_EVIL_SHADOW2
  1021. monster 'sthc_map$,61,18, "Immortal Angry Shadow",3482,1, .@label$;
  1022. monster 'sthc_map$,65,34, "Immortal Angry Shadow",3482,1, .@label$;
  1023. monster 'sthc_map$,62,38, "Immortal Angry Shadow",3482,1, .@label$;
  1024. monster 'sthc_map$,69,37, "Immortal Angry Shadow",3482,1, .@label$;
  1025. monster 'sthc_map$,72,29, "Immortal Angry Shadow",3482,1, .@label$;
  1026. monster 'sthc_map$,69,47, "Immortal Angry Shadow",3482,1, .@label$;
  1027. monster 'sthc_map$,62,47, "Immortal Angry Shadow",3482,1, .@label$;
  1028. monster 'sthc_map$,61,30, "Immortal Angry Shadow",3482,1, .@label$;
  1029. monster 'sthc_map$,64,50, "Immortal Angry Shadow",3482,1, .@label$;
  1030. initnpctimer;
  1031. end;
  1032. OnTimer2000:
  1033. if (mobcount( 'sthc_map$, instance_npcname("#sthd_event_16") + "::OnMobDead" ) > 0) {
  1034. initnpctimer;
  1035. end;
  1036. }
  1037. stopnpctimer;
  1038. enablenpc instance_npcname("Sky Fortress Gold Treasure#4");
  1039. end;
  1040. OnMobDead:
  1041. end;
  1042. }
  1043. // Cursed Knight room
  1044. 1@sthc,15,94,0 script #sthd_event_17 HIDDEN_WARP_NPC,8,8,{
  1045. end;
  1046. OnTouch:
  1047. disablenpc instance_npcname("#sthd_event_17");
  1048. donpcevent instance_npcname("Sky Fortress Treasure Box") + "::OnStart"; // enabled regardless of the monster count
  1049. monster 'sthc_map$,19,106, "Immortal Death Shadow",3483,1;// AS_EVIL_SHADOW3
  1050. monster 'sthc_map$,12,105, "Immortal Death Shadow",3483,1;
  1051. areamonster 'sthc_map$,11,113,15,117, "Immortal Death Shadow",3483,2;
  1052. areamonster 'sthc_map$,18,116,22,120, "Immortal Death Shadow",3483,2;
  1053. areamonster 'sthc_map$,10,125,14,129, "Immortal Death Shadow",3483,2;
  1054. areamonster 'sthc_map$,17,125,21,129, "Immortal Death Shadow",3483,2;
  1055. end;
  1056. }
  1057. // Wind Ghost room
  1058. 1@sthc,16,11,0 script #sthd_event_18 HIDDEN_WARP_NPC,8,8,{
  1059. end;
  1060. OnTouch:
  1061. disablenpc instance_npcname("#sthd_event_18");
  1062. donpcevent instance_npcname("Wind Ghost in Experiment") + "::OnStart"; // enabled regardless of the monster count
  1063. monster 'sthc_map$,19,21, "Immortal Death Shadow",3483,1;// AS_EVIL_SHADOW3
  1064. monster 'sthc_map$,12,21, "Immortal Death Shadow",3483,1;
  1065. areamonster 'sthc_map$,9,28,13,32, "Immortal Death Shadow",3483,2;
  1066. areamonster 'sthc_map$,17,29,21,33, "Immortal Death Shadow",3483,2;
  1067. areamonster 'sthc_map$,13,35,17,39, "Immortal Death Shadow",3483,2;
  1068. areamonster 'sthc_map$,13,43,17,47, "Immortal Death Shadow",3483,2;
  1069. end;
  1070. }
  1071. // Chest
  1072. 1@sthc,66,137,4 script Sky Fortress Gold Treasure#1 4_TREASURE_BOX,{
  1073. mes "- You've found -";
  1074. mes "- the Shining Treasure Box. -";
  1075. next;
  1076. if (select( "Open the box.", "Do not open the box." ) == 2) {
  1077. mes "- If you open the box, -";
  1078. mes "- there must be some good items. -";
  1079. close;
  1080. }
  1081. if (is_party_leader() == false) {
  1082. mes "- Those other than the party leader -";
  1083. mes "- don't seem to be able to open the box. -";
  1084. close;
  1085. }
  1086. if (checkweight(5128,1) == 0) {
  1087. mes "- It's full of items -";
  1088. mes "- so you can't open the box. -";
  1089. close;
  1090. }
  1091. donpcevent instance_npcname( strnpcinfo(0) ) + "::OnBar";
  1092. sleep2 3000;
  1093. if (is_party_leader() == false)
  1094. end;
  1095. disablenpc();
  1096. mes "- In that treasure box, -";
  1097. .@r = rand(100);
  1098. if (.@r < 32) {
  1099. .@item_id = 985; // Oridecon
  1100. specialeffect EF_ENHANCE;
  1101. }
  1102. else if (.@r < 64) {
  1103. .@item_id = 984; // Elunium
  1104. specialeffect EF_ENHANCE;
  1105. }
  1106. else if (.@r < 84) {
  1107. .@item_id = 608; // Seed_Of_Yggdrasil
  1108. specialeffect EF_ENHANCE;
  1109. }
  1110. else if (.@r < 94) {
  1111. .@item_id = 607; // Yggdrasilberry
  1112. specialeffect EF_ENHANCE;
  1113. }
  1114. else if (.@r < 99) {
  1115. .@item_id = 616; // Old_Card_Album
  1116. specialeffect EF_ENHANCE;
  1117. }
  1118. else if (.@r == 99) {
  1119. .@item_id = 12246; // Magic_Card_Album
  1120. specialeffect EF_GUMGANG2;
  1121. specialeffect EF_VOLCANO;
  1122. specialeffect EF_PNEUMA;
  1123. }
  1124. getitem .@item_id, 1;
  1125. mes "- you've found the " + getitemname(.@item_id) + ". -";
  1126. close;
  1127. OnBar:
  1128. progressbar_npc "000000",3;
  1129. end;
  1130. }
  1131. 1@sthc,116,137,4 duplicate(Sky Fortress Gold Treasure#1) Sky Fortress Gold Treasure#2 4_TREASURE_BOX
  1132. 1@sthc,116,55,4 duplicate(Sky Fortress Gold Treasure#1) Sky Fortress Gold Treasure#3 4_TREASURE_BOX
  1133. 1@sthc,66,55,4 duplicate(Sky Fortress Gold Treasure#1) Sky Fortress Gold Treasure#4 4_TREASURE_BOX
  1134. // Cursed Knight
  1135. 1@sthc,16,132,4 script Sky Fortress Treasure Box CLEAR_NPC,{
  1136. mes "- You've found -";
  1137. mes "- the Shining Treasure Box. -";
  1138. next;
  1139. if (select( "Open the box.", "Do not open the box." ) == 2) {
  1140. mes "- If you open the box, -";
  1141. mes "- there must be some good items. -";
  1142. close;
  1143. }
  1144. if (is_party_leader() == false) {
  1145. mes "- Those other than the party leader -";
  1146. mes "- don't seem to be able to open the box. -";
  1147. close;
  1148. }
  1149. if (checkweight(2655,1) == 0) {
  1150. mes "- It's full of items -";
  1151. mes "- so you can't open the box. -";
  1152. close;
  1153. }
  1154. mes "- The treasure box is opening up -";
  1155. mes "- and something suddenly -";
  1156. mes "- showed up in the front. -";
  1157. specialeffect EF_SILENT_BREEZE;
  1158. specialeffect EF_LOCKON;
  1159. unittalk getcharid(3), "" + strcharinfo(0) + " : You may have touched something wrong...";
  1160. disablenpc instance_npcname("Sky Fortress Treasure Box");
  1161. stopnpctimer;
  1162. donpcevent instance_npcname("Immortal Cursed Knight#") + "::OnEvent";
  1163. close;
  1164. OnStart:
  1165. enablenpc instance_npcname("Sky Fortress Treasure Box");
  1166. initnpctimer;
  1167. end;
  1168. OnTimer8000:
  1169. specialeffect EF_LIGHTSPHERE2;
  1170. end;
  1171. OnTimer9000:
  1172. initnpctimer;
  1173. end;
  1174. }
  1175. 1@sthc,16,129,4 script Immortal Cursed Knight# 4_AS_BLOODY_KNIGHT,{
  1176. end;
  1177. OnEvent:
  1178. enablenpc instance_npcname("Immortal Cursed Knight#");
  1179. sleep 2000;
  1180. npctalk "Immortal Cursed Knight: What kind of intruder is trying to wake me up...";
  1181. sleep 2000;
  1182. npctalk "Immortal Cursed Knight: Doom to the petty thief coveting the treasure at the fortress...";
  1183. sleep 2000;
  1184. disablenpc instance_npcname("Immortal Cursed Knight#");
  1185. monster 'sthc_map$,16,129,"Immortal Cursed Knight",3474,1, instance_npcname("Immortal Cursed Knight#") + "::OnKnightB"; // AS_BLOODY_KNIGHT
  1186. 'cursed_knight = $@mobid[0];
  1187. initnpctimer;
  1188. end;
  1189. OnTimer2000:
  1190. if (mobcount('sthd_map$, instance_npcname("Immortal Cursed Knight#") + "::OnKnightB") < 1) {
  1191. stopnpctimer;
  1192. 'cursed_knight = 0;
  1193. mapannounce 'sthc_map$, "Stefan Jack Earnest Wolf: Fell down... Immortal Cursed Knight... Sad... Will kill... The intruder...", bc_map,0xEBFF;
  1194. end;
  1195. }
  1196. if ('cursed_knight > 0) {
  1197. .@r = rand(30);
  1198. if (.@r == 0)
  1199. unittalk 'cursed_knight, "Immortal Cursed Knight: Glory to Bijou! Death to the intruders!";
  1200. else if (.@r == 1)
  1201. unittalk 'cursed_knight, "Immortal Cursed Knight: The perishable is nothing but a handful of ash before the Immortal Knight!";
  1202. else if (.@r == 2)
  1203. unittalk 'cursed_knight, "Immortal Cursed Knight: I can't...I can't seem to control the power!";
  1204. }
  1205. end;
  1206. OnTimer3000:
  1207. initnpctimer;
  1208. end;
  1209. OnKnightB:
  1210. end;
  1211. }
  1212. // Wind Ghost
  1213. 1@sthc,16,54,4 script Wind Ghost in Experiment CLEAR_NPC,{
  1214. if (select( "Examine the test tube.", "Do not examine the test tube." ) == 2) {
  1215. mes "- I'm sure there is something -";
  1216. mes "- extremely fearsome. -";
  1217. close;
  1218. }
  1219. if (is_party_leader() == false) {
  1220. mes "- Those other than the party leader -";
  1221. mes "- don't seem to be able operate the test tube. -";
  1222. close;
  1223. }
  1224. mes "- The test tube is opening up -";
  1225. mes "- and something suddenly -";
  1226. mes "- showed up in the front. -";
  1227. specialeffect EF_SILENT_BREEZE;
  1228. specialeffect EF_LOCKON;
  1229. unittalk getcharid(3), "" + strcharinfo(0) + " : What...what is this?";
  1230. donpcevent instance_npcname("Immortal Wind Ghost#01") + "::OnEvent";
  1231. stopnpctimer;
  1232. disablenpc instance_npcname("Wind Ghost in Experiment");
  1233. close;
  1234. OnStart:
  1235. enablenpc instance_npcname("Wind Ghost in Experiment");
  1236. initnpctimer;
  1237. end;
  1238. OnTimer8000:
  1239. specialeffect EF_LIGHTSPHERE2;
  1240. end;
  1241. OnTimer9000:
  1242. initnpctimer;
  1243. end;
  1244. }
  1245. 1@sthc,15,49,4 script Immortal Wind Ghost#01 4_AS_WIND_GHOST,{
  1246. end;
  1247. OnEvent:
  1248. enablenpc instance_npcname("Immortal Wind Ghost#01");
  1249. sleep 2000;
  1250. npctalk "Immortal Wind Ghost: Foolish human...You're praying for death...";
  1251. sleep 2000;
  1252. npctalk "Immortal Wind Ghost: The power boiling inside my body...It sure feels good...";
  1253. sleep 2000;
  1254. disablenpc instance_npcname("Immortal Wind Ghost#01");
  1255. monster 'sthc_map$,15,49,"Immortal Wind Ghost",3475,1, instance_npcname("Immortal Wind Ghost#01") + "::OnWindDead"; // AS_WIND_GHOST
  1256. 'wind_ghost = $@mobid[0];
  1257. initnpctimer;
  1258. end;
  1259. OnTimer2000:
  1260. if (mobcount('sthd_map$, instance_npcname("Immortal Wind Ghost#01") + "::OnWindDead") < 1) {
  1261. stopnpctimer;
  1262. 'wind_ghost = 0;
  1263. mapannounce 'sthc_map$, "Stefan Jack Earnest Wolf: Experiment... Became stronger... Immortal Wind Ghost...is dead...Death to all...", bc_map,0xEBFF;
  1264. end;
  1265. }
  1266. if ('wind_ghost > 0) {
  1267. .@r = rand(30);
  1268. if (.@r == 0)
  1269. unittalk 'wind_ghost, "Immortal Wind Ghost: I feel more power filling up inside...";
  1270. else if (.@r == 1)
  1271. unittalk 'wind_ghost, "Immortal Wind Ghost: I will kill you slowly...from the deep side of your lung...";
  1272. else if (.@r == 2)
  1273. unittalk 'wind_ghost, "Immortal Wind Ghost: Only death awaits the humans who dare to go against me...";
  1274. }
  1275. end;
  1276. OnTimer3000:
  1277. initnpctimer;
  1278. end;
  1279. OnWindDead:
  1280. end;
  1281. }
  1282. // Spawn stairs - step 1
  1283. 1@sthb,65,86,0 script #sthd_event_5 HIDDEN_WARP_NPC,5,5,{
  1284. end;
  1285. OnTouch:
  1286. disablenpc instance_npcname("#sthd_event_5");
  1287. monster 'sthb_map$,61,84,"Immortal Fortress Legionnaire",3477,1; // AS_IMMORTAL_CORPS
  1288. monster 'sthb_map$,51,87,"Immortal Fortress Legionnaire",3477,1;
  1289. monster 'sthb_map$,37,81,"Immortal Fortress Legionnaire",3477,1;
  1290. monster 'sthb_map$,41,85,"Immortal Zombie Assault",3479,1; // AS_ZOMBIE_MASTER
  1291. monster 'sthb_map$,41,49,"Immortal Zombie Assault",3479,1;
  1292. monster 'sthb_map$,52,50,"Immortal Zombie Assault",3479,1;
  1293. monster 'sthb_map$,82,50,"Immortal Cursed Zombie",3480,1; // AS_CURSED_SOLDIER
  1294. areamonster 'sthb_map$,34,57,38,61,"Immortal Cursed Zombie",3480,2;
  1295. if (rand(100) < 20)
  1296. monster 'sthb_map$,80,49,"Sky Fortress Key Keeper",3478,1; // AS_ZOMBIE_SLAUGHTER
  1297. end;
  1298. }
  1299. 1@sthb,62,49,0 script #sthd_event_6 HIDDEN_WARP_NPC,5,5,{
  1300. end;
  1301. OnTouch:
  1302. disablenpc instance_npcname("#sthd_event_6");
  1303. monster 'sthb_map$,79,48,"Immortal Fortress Legionnaire",3477,1; // AS_IMMORTAL_CORPS
  1304. monster 'sthb_map$,67,50,"Immortal Fortress Legionnaire",3477,1;
  1305. monster 'sthb_map$,85,60,"Immortal Fortress Legionnaire",3477,1;
  1306. monster 'sthb_map$,82,74,"Immortal Fortress Legionnaire",3477,1;
  1307. monster 'sthb_map$,83,49,"Immortal Zombie Assault",3479,1; // AS_ZOMBIE_MASTER
  1308. monster 'sthb_map$,83,71,"Immortal Zombie Assault",3479,1;
  1309. monster 'sthb_map$,79,96,"Immortal Zombie Assault",3479,1;
  1310. monster 'sthb_map$,69,95,"Immortal Zombie Assault",3479,1;
  1311. areamonster 'sthb_map$,82,92,86,96,"Immortal Cursed Zombie",3480,2; // AS_CURSED_SOLDIER
  1312. areamonster 'sthb_map$,83,84,87,88,"Immortal Cursed Zombie",3480,2;
  1313. if (rand(100) < 20)
  1314. monster 'sthb_map$,73,96,"Sky Fortress Key Keeper",3478,1;
  1315. end;
  1316. }
  1317. 1@sthb,57,96,0 script #sthd_event_7 HIDDEN_WARP_NPC,5,5,{
  1318. end;
  1319. OnTouch:
  1320. disablenpc instance_npcname("#sthd_event_7");
  1321. monster 'sthb_map$,52,94,"Immortal Fortress Legionnaire",3477,1; // AS_IMMORTAL_CORPS
  1322. monster 'sthb_map$,42,98,"Immortal Fortress Legionnaire",3477,1;
  1323. monster 'sthb_map$,29,91,"Immortal Fortress Legionnaire",3477,1;
  1324. monster 'sthb_map$,25,78,"Immortal Fortress Legionnaire",3477,1;
  1325. monster 'sthb_map$,28,96,"Immortal Zombie Assault",3479,1; // AS_ZOMBIE_MASTER
  1326. monster 'sthb_map$,27,69,"Immortal Zombie Assault",3479,1;
  1327. monster 'sthb_map$,26,55,"Immortal Zombie Assault",3479,1;
  1328. monster 'sthb_map$,32,41,"Immortal Zombie Assault",3479,1;
  1329. areamonster 'sthb_map$,27,65,31,69,"Immortal Cursed Zombie",3480,2; // AS_CURSED_SOLDIER
  1330. areamonster 'sthb_map$,25,41,29,45,"Immortal Cursed Zombie",3480,2;
  1331. if (rand(100) < 20)
  1332. monster 'sthb_map$,27,54,"Sky Fortress Key Keeper",3478,1;
  1333. end;
  1334. }
  1335. 1@sthb,32,39,0 script #sthd_event_8 HIDDEN_WARP_NPC,5,5,{
  1336. end;
  1337. OnTouch:
  1338. disablenpc instance_npcname("#sthd_event_8");
  1339. monster 'sthb_map$,53,38,"Immortal Fortress Legionnaire",3477,1; // AS_IMMORTAL_CORPS
  1340. monster 'sthb_map$,64,41,"Immortal Fortress Legionnaire",3477,1;
  1341. monster 'sthb_map$,78,38,"Immortal Fortress Legionnaire",3477,1;
  1342. monster 'sthb_map$,43,41,"Immortal Fortress Legionnaire",3477,1;
  1343. monster 'sthb_map$,28,40,"Immortal Zombie Assault",3479,1; // AS_ZOMBIE_MASTER
  1344. monster 'sthb_map$,59,40,"Immortal Zombie Assault",3479,1;
  1345. monster 'sthb_map$,92,45,"Immortal Zombie Assault",3479,1;
  1346. monster 'sthb_map$,95,57,"Immortal Zombie Assault",3479,1;
  1347. areamonster 'sthb_map$,92,37,96,41,"Immortal Cursed Zombie",3480,2; // AS_CURSED_SOLDIER
  1348. areamonster 'sthb_map$,87,39,91,43,"Immortal Cursed Zombie",3480,2;
  1349. if (rand(100) < 20)
  1350. monster 'sthb_map$,75,40,"Sky Fortress Key Keeper",3478,1;
  1351. end;
  1352. }
  1353. // Spawn stairs - step 2
  1354. 1@sthb,209,64,0 script #sthd_event_9 HIDDEN_WARP_NPC,5,5,{
  1355. end;
  1356. OnTouch:
  1357. disablenpc instance_npcname("#sthd_event_9");
  1358. monster 'sthb_map$,207,50,"Immortal Fortress Legionnaire",3477,1; // AS_IMMORTAL_CORPS
  1359. monster 'sthb_map$,205,38,"Immortal Fortress Legionnaire",3477,1;
  1360. monster 'sthb_map$,195,36,"Immortal Fortress Legionnaire",3477,1;
  1361. monster 'sthb_map$,209,38,"Immortal Zombie Assault",3479,1; // AS_ZOMBIE_MASTER
  1362. monster 'sthb_map$,161,39,"Immortal Zombie Assault",3479,1;
  1363. monster 'sthb_map$,150,36,"Immortal Zombie Assault",3479,1;
  1364. monster 'sthb_map$,144,38,"Immortal Cursed Zombie",3480,1; // AS_CURSED_SOLDIER
  1365. areamonster 'sthb_map$,169,34,173,38,"Immortal Cursed Zombie",3480,2;
  1366. if (rand(100) < 20)
  1367. monster 'sthb_map$,163,38,"Sky Fortress Key Keeper",3478,1;
  1368. end;
  1369. }
  1370. 1@sthb,144,47,0 script #sthd_event_10 HIDDEN_WARP_NPC,5,5,{
  1371. end;
  1372. OnTouch:
  1373. disablenpc instance_npcname("#sthd_event_10");
  1374. monster 'sthb_map$,142,61,"Immortal Fortress Legionnaire",3477,1; // AS_IMMORTAL_CORPS
  1375. monster 'sthb_map$,145,71,"Immortal Fortress Legionnaire",3477,1;
  1376. monster 'sthb_map$,142,83,"Immortal Fortress Legionnaire",3477,1;
  1377. monster 'sthb_map$,147,94,"Immortal Fortress Legionnaire",3477,1;
  1378. monster 'sthb_map$,143,64,"Immortal Zombie Assault",3479,1; // AS_ZOMBIE_MASTER
  1379. monster 'sthb_map$,144,78,"Immortal Zombie Assault",3479,1;
  1380. monster 'sthb_map$,165,95,"Immortal Zombie Assault",3479,1;
  1381. monster 'sthb_map$,173,92,"Immortal Zombie Assault",3479,1;
  1382. areamonster 'sthb_map$,154,90,158,94,"Immortal Cursed Zombie",3480,2; // AS_CURSED_SOLDIER
  1383. areamonster 'sthb_map$,141,92,145,96,"Immortal Cursed Zombie",3480,2;
  1384. if (rand(100) < 20)
  1385. monster 'sthb_map$,154,96,"Sky Fortress Key Keeper",3478,1;
  1386. end;
  1387. }
  1388. 1@sthb,178,94,0 script #sthd_event_11 HIDDEN_WARP_NPC,5,5,{
  1389. end;
  1390. OnTouch:
  1391. disablenpc instance_npcname("#sthd_event_11");
  1392. monster 'sthb_map$,187,92,"Immortal Fortress Legionnaire",3477,1; // AS_IMMORTAL_CORPS
  1393. monster 'sthb_map$,200,90,"Immortal Fortress Legionnaire",3477,1;
  1394. monster 'sthb_map$,198,81,"Immortal Fortress Legionnaire",3477,1;
  1395. monster 'sthb_map$,201,72,"Immortal Fortress Legionnaire",3477,1;
  1396. monster 'sthb_map$,199,94,"Immortal Zombie Assault",3479,1; // AS_ZOMBIE_MASTER
  1397. monster 'sthb_map$,199,70,"Immortal Zombie Assault",3479,1;
  1398. monster 'sthb_map$,195,48,"Immortal Zombie Assault",3479,1;
  1399. monster 'sthb_map$,185,47,"Immortal Zombie Assault",3479,1;
  1400. areamonster 'sthb_map$,196,60,200,64,"Immortal Cursed Zombie",3480,2; // AS_CURSED_SOLDIER
  1401. areamonster 'sthb_map$,198,45,202,49,"Immortal Cursed Zombie",3480,2;
  1402. if (rand(100) < 20)
  1403. monster 'sthb_map$,202,56,"Sky Fortress Key Keeper",3478,1;
  1404. end;
  1405. }
  1406. 1@sthb,179,48,0 script #sthd_event_12 HIDDEN_WARP_NPC,5,5,{
  1407. end;
  1408. OnTouch:
  1409. disablenpc instance_npcname("#sthd_event_12");
  1410. monster 'sthb_map$,168,49,"Immortal Fortress Legionnaire",3477,1; // AS_IMMORTAL_CORPS
  1411. monster 'sthb_map$,159,46,"Immortal Fortress Legionnaire",3477,1;
  1412. monster 'sthb_map$,154,52,"Immortal Fortress Legionnaire",3477,1;
  1413. monster 'sthb_map$,152,65,"Immortal Fortress Legionnaire",3477,1;
  1414. monster 'sthb_map$,155,48,"Immortal Zombie Assault",3479,1; // AS_ZOMBIE_MASTER
  1415. monster 'sthb_map$,154,73,"Immortal Zombie Assault",3479,1;
  1416. monster 'sthb_map$,159,84,"Immortal Zombie Assault",3479,1;
  1417. monster 'sthb_map$,171,82,"Immortal Zombie Assault",3479,1;
  1418. areamonster 'sthb_map$,151,82,155,86,"Immortal Cursed Zombie",3480,2; // AS_CURSED_SOLDIER
  1419. areamonster 'sthb_map$,153,75,157,79,"Immortal Cursed Zombie",3480,2;
  1420. if (rand(100) < 20)
  1421. monster 'sthb_map$,156,46,"Sky Fortress Key Keeper",3478,1;
  1422. end;
  1423. }
  1424. // Main event - 2nd step
  1425. 1@sthb,207,83,0 script #Stefan_Action2 HIDDEN_WARP_NPC,6,6,{
  1426. end;
  1427. OnTouch:
  1428. disablenpc instance_npcname("#Stefan_Action2");
  1429. setpcblock PCBLOCK_NPC, true;
  1430. sleep2 1000;
  1431. cutin "stephan_j_e_w.bmp",2;
  1432. npctalk "Stefan: ~Grunts~", instance_npcname("Stefan.J.E.Wolf#sthd_03");
  1433. sleep2 2000;
  1434. npctalk "Earnest: Filthy humans...Stop them...Guard...the holy fortress...", instance_npcname("Stefan.J.E.Wolf#sthd_03");
  1435. specialeffect2 EF_LOCKON;
  1436. sleep2 2000;
  1437. unittalk getcharid(3), "" + strcharinfo(0) + " : It's extremely vigilant of me.";
  1438. sleep2 2000;
  1439. unittalk getcharid(3), "" + strcharinfo(0) + " : I think there must be something if we keep following";
  1440. sleep2 2000;
  1441. unittalk getcharid(3), "" + strcharinfo(0) + " : that Golem's trace!";
  1442. sleep2 2000;
  1443. setpcblock PCBLOCK_NPC, false;
  1444. mapannounce 'sthb_map$, "Stefan Jack Earnest Wolf: Holy fortress...Intruders...How wicked...Stop them...", bc_map,0xEBFF;
  1445. cutin "",255;
  1446. specialeffect2 EF_LOCKON;
  1447. disablenpc instance_npcname("Stefan.J.E.Wolf#sthd_03");
  1448. enablenpc instance_npcname("#Stefan for display3");
  1449. enablenpc instance_npcname("Stefan.J.E.Wolf#sthd_04");
  1450. end;
  1451. }
  1452. 1@sthb,207,83,8 duplicate(dummy_npc) Stefan.J.E.Wolf#sthd_03 4_AS_RAGGED_GOLEM
  1453. // Final step
  1454. 1@sthd,103,115,6 duplicate(dummy_npc) Stefan.J.E.Wolf#sthd_04 4_AS_RAGGED_GOLEM
  1455. 1@sthd,103,115,0 script #Stefan for display3 HIDDEN_WARP_NPC,10,10,{
  1456. end;
  1457. OnTouch:
  1458. .@stephan$ = instance_npcname("Stefan.J.E.Wolf#sthd_04");
  1459. disablenpc instance_npcname("#Stefan for display3");
  1460. setpcblock PCBLOCK_NPC, true;
  1461. unittalk getcharid(3), "" + strcharinfo(0) + " : So this is finally the last...I suppose he must be the cause of Prontera Invasion, isn't he?";
  1462. sleep2 2000;
  1463. cutin "stephan_j_e_w.bmp",2;
  1464. npctalk "Wolf: Adventurers...A bunch of foolish greenhorns...", .@stephan$;
  1465. sleep2 2000;
  1466. npctalk "Jack: I must follow...order...from Bijou...", .@stephan$;
  1467. sleep2 2000;
  1468. unittalk getcharid(3), "" + strcharinfo(0) + " : Bijou? So, was Golem the mere guardian around here? Is that it...?";
  1469. sleep2 2000;
  1470. npctalk "Stefan: ~Growls~", .@stephan$;
  1471. sleep2 2000;
  1472. npctalk "Earnest: Filthy worms...Can't lead life as intended...Immortal power...My body...", .@stephan$;
  1473. sleep2 2000;
  1474. unittalk getcharid(3), "" + strcharinfo(0) + " : I'd better defeat it first.";
  1475. sleep2 2000;
  1476. mapannounce 'sthd_map$, "Stefan Jack Earnest Wolf: Soldiers...Bijou's...fortress...Cut them all...I'll step up...I'll kill them...all...", bc_map,0xEBFF;
  1477. sleep2 2000;
  1478. cutin "",255;
  1479. specialeffect EF_LOCKON;
  1480. sleep2 2000;
  1481. setpcblock PCBLOCK_NPC, false;
  1482. disablenpc .@stephan$;
  1483. donpcevent instance_npcname("#Last_Boss") + "::OnStart";
  1484. areamonster 'sthd_map$,84,76,124,116,"Zombie Soldier of Bijou",3476,10, instance_npcname("#Stefan for display3") + "::OnMobDead"; // AS_ZOMBIE
  1485. initnpctimer;
  1486. end;
  1487. OnTimer30000:
  1488. stopnpctimer;
  1489. mapannounce 'sthd_map$, "Stefan Jack Earnest Wolf: Cursed soldiers...Come...Bring it on...", bc_map,0xEBFF;
  1490. monster 'sthd_map$,0,0,"Cursed Soldier of Bijou",3485,5, instance_npcname("#Stefan for display3") + "::OnMobDead"; // AS_D_CURSED_SOLDIER
  1491. end;
  1492. OnStop:
  1493. killmonster 'sthd_map$, instance_npcname("#Stefan for display3") + "::OnMobDead";
  1494. stopnpctimer;
  1495. end;
  1496. OnMobDead:
  1497. end;
  1498. }
  1499. 1@sthd,96,127,0 script #Last_Boss HIDDEN_WARP_NPC,{
  1500. end;
  1501. OnStart:
  1502. monster 'sthd_map$,103,115,"Stefan.J.E.Wolf",3473,1, instance_npcname("#Last_Boss") + "::OnBossDead"; // AS_RAGGED_GOLEM
  1503. 'boss_id = $@mobid[0];
  1504. initnpctimer;
  1505. end;
  1506. OnBossDead:
  1507. end;
  1508. OnTimer1000:
  1509. if ('boss_id < 1 || mobcount( 'sthd_map$, instance_npcname("#Last_Boss") + "::OnBossDead" ) < 1) {
  1510. 'boss_id = 0;
  1511. 'pantheon_event[0] = 1;
  1512. 'pantheon_event[1] = 1;
  1513. donpcevent instance_npcname("#Last_Boss") + "::OnLastWord";
  1514. donpcevent instance_npcname("#Last_Boss_Monster") + "::OnReset";
  1515. donpcevent instance_npcname("#Last_Boss2_Monster") + "::OnReset";
  1516. donpcevent instance_npcname("#Stefan for display3") + "::OnStop";
  1517. donpcevent instance_npcname("Sky Fortress Escape Warp#end_warp") + "::OnEnable";
  1518. stopnpctimer;
  1519. end;
  1520. }
  1521. getunitdata 'boss_id, .@data;
  1522. .@hp = .@data[UMOB_HP];
  1523. if (.@hp > 6000000 && .@hp < 14000000) {
  1524. if ('pantheon_event[0] == 0) {
  1525. 'pantheon_event[0] = 1;
  1526. donpcevent instance_npcname("#Last_Boss2_Monster") + "::OnStart";
  1527. mapannounce 'sthd_map$, "Stefan Jack Earnest Wolf: Strong...Adventurer... ~Growls~ My... soliders... Get out...", bc_map,0xEBFF;
  1528. }
  1529. }
  1530. else if (.@hp > 5000000 && .@hp < 6000001)
  1531. mapannounce 'sthd_map$, "Stefan Jack Earnest Wolf: I'll destroy you...I'll be smashing you...Come, the Cursed Soldiers...Ground-shaking...", bc_map,0xEBFF;
  1532. else if (.@hp < 5000001) {
  1533. if ('pantheon_event[1] == 0) {
  1534. 'pantheon_event[1] = 1;
  1535. donpcevent instance_npcname("#Last_Boss2_Monster") + "::OnReset";
  1536. donpcevent instance_npcname("#Last_Boss_Monster") + "::OnStart";
  1537. }
  1538. .@bomb[0] = rand(1,7);
  1539. .@bomb[1] = rand(1,7);
  1540. .@bomb[2] = rand(1,8);
  1541. .@bomb[3] = rand(1,7);
  1542. .@bomb[4] = rand(1,8);
  1543. .@bomb[5] = rand(1,7);
  1544. if (.@bomb[0] == 1) {
  1545. .@pant[0] = 1;
  1546. if (.@bomb[3] == 1) setarray .@pant[1],8,23;
  1547. else if (.@bomb[3] == 2) setarray .@pant[1],9,21;
  1548. else if (.@bomb[3] == 3) setarray .@pant[1],10,24;
  1549. else if (.@bomb[3] == 4) setarray .@pant[1],11;
  1550. else if (.@bomb[3] == 5) setarray .@pant[1],12;
  1551. else if (.@bomb[3] == 6) setarray .@pant[1],13;
  1552. else if (.@bomb[3] == 7) setarray .@pant[1],14,27;
  1553. }
  1554. else if (.@bomb[0] == 2) {
  1555. .@pant[0] = 2;
  1556. if (.@bomb[3] == 1) setarray .@pant[1],8,23;
  1557. else if (.@bomb[3] == 2) setarray .@pant[1],9,1;
  1558. else if (.@bomb[3] == 3) setarray .@pant[1],10,21;
  1559. else if (.@bomb[3] == 4) setarray .@pant[1],11,24;
  1560. else if (.@bomb[3] == 5) setarray .@pant[1],12,27;
  1561. else if (.@bomb[3] == 6) setarray .@pant[1],13;
  1562. else if (.@bomb[3] == 7) setarray .@pant[1],14;
  1563. }
  1564. else if (.@bomb[0] == 3) {
  1565. .@pant[0] = 3;
  1566. if (.@bomb[3] == 1) setarray .@pant[1],8,23;
  1567. else if (.@bomb[3] == 2) setarray .@pant[1],9,24;
  1568. else if (.@bomb[3] == 3) setarray .@pant[1],10,1;
  1569. else if (.@bomb[3] == 4) setarray .@pant[1],11,21;
  1570. else if (.@bomb[3] == 5) setarray .@pant[1],12,27;
  1571. else if (.@bomb[3] == 6) setarray .@pant[1],13;
  1572. else if (.@bomb[3] == 7) setarray .@pant[1],14;
  1573. }
  1574. else if (.@bomb[0] == 4) {
  1575. .@pant[0] = 4;
  1576. if (.@bomb[3] == 1) setarray .@pant[1],8,23;
  1577. else if (.@bomb[3] == 2) setarray .@pant[1],9,24;
  1578. else if (.@bomb[3] == 3) setarray .@pant[1],10;
  1579. else if (.@bomb[3] == 4) setarray .@pant[1],11,1;
  1580. else if (.@bomb[3] == 5) setarray .@pant[1],12,21;
  1581. else if (.@bomb[3] == 6) setarray .@pant[1],13,27;
  1582. else if (.@bomb[3] == 7) setarray .@pant[1],14;
  1583. }
  1584. else if (.@bomb[0] == 5) {
  1585. .@pant[0] = 5;
  1586. if (.@bomb[3] == 1) setarray .@pant[1],8,23;
  1587. else if (.@bomb[3] == 2) setarray .@pant[1],9,24;
  1588. else if (.@bomb[3] == 3) setarray .@pant[1],10;
  1589. else if (.@bomb[3] == 4) setarray .@pant[1],11,27;
  1590. else if (.@bomb[3] == 5) setarray .@pant[1],12,1;
  1591. else if (.@bomb[3] == 6) setarray .@pant[1],13,21;
  1592. else if (.@bomb[3] == 7) setarray .@pant[1],14;
  1593. }
  1594. else if (.@bomb[0] == 6) {
  1595. setarray .@pant[0],6,26;
  1596. if (.@bomb[3] == 1) setarray .@pant[2],8,23;
  1597. else if (.@bomb[3] == 2) setarray .@pant[2],9,24;
  1598. else if (.@bomb[3] == 3) setarray .@pant[2],10;
  1599. else if (.@bomb[3] == 4) setarray .@pant[2],11,27;
  1600. else if (.@bomb[3] == 5) setarray .@pant[2],12;
  1601. else if (.@bomb[3] == 6) setarray .@pant[2],13,1;
  1602. else if (.@bomb[3] == 7) setarray .@pant[2],14,21;
  1603. }
  1604. else if (.@bomb[0] == 7) {
  1605. .@pant[0] = 7;
  1606. if (.@bomb[3] == 1) setarray .@pant[1],8,23;
  1607. else if (.@bomb[3] == 2) setarray .@pant[1],9,21;
  1608. else if (.@bomb[3] == 3) setarray .@pant[1],10,24;
  1609. else if (.@bomb[3] == 4) setarray .@pant[1],11;
  1610. else if (.@bomb[3] == 5) setarray .@pant[1],12,27;
  1611. else if (.@bomb[3] == 6) setarray .@pant[1],13;
  1612. else if (.@bomb[3] == 7) setarray .@pant[1],14,1;
  1613. }
  1614. .@s = getarraysize(.@pant);
  1615. if (.@bomb[1] == 1) {
  1616. setarray .@pant[.@s],8,23;
  1617. .@s += 2;
  1618. if (.@bomb[4] == 1) setarray .@pant[.@s],15,5;
  1619. else if (.@bomb[4] == 2) setarray .@pant[.@s],16,25;
  1620. else if (.@bomb[4] == 3) setarray .@pant[.@s],17;
  1621. else if (.@bomb[4] == 4) setarray .@pant[.@s],18;
  1622. else if (.@bomb[4] == 5) setarray .@pant[.@s],19;
  1623. else if (.@bomb[4] == 6) setarray .@pant[.@s],20;
  1624. else if (.@bomb[4] == 7) setarray .@pant[.@s],21;
  1625. else if (.@bomb[4] == 8) setarray .@pant[.@s],22;
  1626. }
  1627. else if (.@bomb[1] == 2) {
  1628. setarray .@pant[.@s],9,24;
  1629. .@s += 2;
  1630. if (.@bomb[4] == 1) setarray .@pant[.@s],15;
  1631. else if (.@bomb[4] == 2) setarray .@pant[.@s],16,5;
  1632. else if (.@bomb[4] == 3) setarray .@pant[.@s],17,25;
  1633. else if (.@bomb[4] == 4) setarray .@pant[.@s],18;
  1634. else if (.@bomb[4] == 5) setarray .@pant[.@s],19;
  1635. else if (.@bomb[4] == 6) setarray .@pant[.@s],20;
  1636. else if (.@bomb[4] == 7) setarray .@pant[.@s],21;
  1637. else if (.@bomb[4] == 8) setarray .@pant[.@s],22;
  1638. }
  1639. else if (.@bomb[1] == 3) {
  1640. .@pant[.@s] = 10;
  1641. .@s++;
  1642. if (.@bomb[4] == 1) setarray .@pant[.@s],15;
  1643. else if (.@bomb[4] == 2) setarray .@pant[.@s],16;
  1644. else if (.@bomb[4] == 3) setarray .@pant[.@s],17,5;
  1645. else if (.@bomb[4] == 4) setarray .@pant[.@s],18,25;
  1646. else if (.@bomb[4] == 5) setarray .@pant[.@s],19;
  1647. else if (.@bomb[4] == 6) setarray .@pant[.@s],20;
  1648. else if (.@bomb[4] == 7) setarray .@pant[.@s],21;
  1649. else if (.@bomb[4] == 8) setarray .@pant[.@s],22;
  1650. }
  1651. else if (.@bomb[1] == 4) {
  1652. .@pant[.@s] = 11;
  1653. .@s++;
  1654. if (.@bomb[4] == 1) setarray .@pant[.@s],15;
  1655. else if (.@bomb[4] == 2) setarray .@pant[.@s],16;
  1656. else if (.@bomb[4] == 3) setarray .@pant[.@s],17;
  1657. else if (.@bomb[4] == 4) setarray .@pant[.@s],18,5;
  1658. else if (.@bomb[4] == 5) setarray .@pant[.@s],19,25;
  1659. else if (.@bomb[4] == 6) setarray .@pant[.@s],20;
  1660. else if (.@bomb[4] == 7) setarray .@pant[.@s],21;
  1661. else if (.@bomb[4] == 8) setarray .@pant[.@s],22;
  1662. }
  1663. else if (.@bomb[1] == 5) {
  1664. .@pant[.@s] = 12;
  1665. .@s++;
  1666. if (.@bomb[4] == 1) setarray .@pant[.@s],15;
  1667. else if (.@bomb[4] == 2) setarray .@pant[.@s],16;
  1668. else if (.@bomb[4] == 3) setarray .@pant[.@s],17;
  1669. else if (.@bomb[4] == 4) setarray .@pant[.@s],18;
  1670. else if (.@bomb[4] == 5) setarray .@pant[.@s],19,5;
  1671. else if (.@bomb[4] == 6) setarray .@pant[.@s],20,25;
  1672. else if (.@bomb[4] == 7) setarray .@pant[.@s],21;
  1673. else if (.@bomb[4] == 8) setarray .@pant[.@s],22;
  1674. }
  1675. else if (.@bomb[1] == 6) {
  1676. .@pant[.@s] = 13;
  1677. .@s++;
  1678. if (.@bomb[4] == 1) setarray .@pant[.@s],15;
  1679. else if (.@bomb[4] == 2) setarray .@pant[.@s],16;
  1680. else if (.@bomb[4] == 3) setarray .@pant[.@s],17;
  1681. else if (.@bomb[4] == 4) setarray .@pant[.@s],18;
  1682. else if (.@bomb[4] == 5) setarray .@pant[.@s],19;
  1683. else if (.@bomb[4] == 6) setarray .@pant[.@s],20,5;
  1684. else if (.@bomb[4] == 7) setarray .@pant[.@s],21,25;
  1685. else if (.@bomb[4] == 8) setarray .@pant[.@s],22;
  1686. }
  1687. else if (.@bomb[1] == 7) {
  1688. .@pant[.@s] = 14;
  1689. .@s++;
  1690. if (.@bomb[4] == 1) setarray .@pant[.@s],15;
  1691. else if (.@bomb[4] == 2) setarray .@pant[.@s],16;
  1692. else if (.@bomb[4] == 3) setarray .@pant[.@s],17;
  1693. else if (.@bomb[4] == 4) setarray .@pant[.@s],18;
  1694. else if (.@bomb[4] == 5) setarray .@pant[.@s],19;
  1695. else if (.@bomb[4] == 6) setarray .@pant[.@s],20;
  1696. else if (.@bomb[4] == 7) setarray .@pant[.@s],21,5;
  1697. else if (.@bomb[4] == 8) setarray .@pant[.@s],22,25;
  1698. }
  1699. if (.@bomb[2] == 1) {
  1700. .@pant[.@s] = 15;
  1701. .@s++;
  1702. if (.@bomb[5] == 1) setarray .@pant[.@s],1,22;
  1703. else if (.@bomb[5] == 2) setarray .@pant[.@s],2,23;
  1704. else if (.@bomb[5] == 3) setarray .@pant[.@s],3,26;
  1705. else if (.@bomb[5] == 4) setarray .@pant[.@s],4;
  1706. else if (.@bomb[5] == 5) setarray .@pant[.@s],5;
  1707. else if (.@bomb[5] == 6) setarray .@pant[.@s],6;
  1708. else if (.@bomb[5] == 7) setarray .@pant[.@s],7;
  1709. }
  1710. else if (.@bomb[2] == 2) {
  1711. .@pant[.@s] = 16;
  1712. .@s++;
  1713. if (.@bomb[5] == 1) setarray .@pant[.@s],1;
  1714. else if (.@bomb[5] == 2) setarray .@pant[.@s],2,22;
  1715. else if (.@bomb[5] == 3) setarray .@pant[.@s],3,23;
  1716. else if (.@bomb[5] == 4) setarray .@pant[.@s],4,26;
  1717. else if (.@bomb[5] == 5) setarray .@pant[.@s],5;
  1718. else if (.@bomb[5] == 6) setarray .@pant[.@s],6;
  1719. else if (.@bomb[5] == 7) setarray .@pant[.@s],7;
  1720. }
  1721. else if (.@bomb[2] == 3) {
  1722. setarray .@pant[.@s],17,25;
  1723. .@s += 2;
  1724. if (.@bomb[5] == 1) setarray .@pant[.@s],1;
  1725. else if (.@bomb[5] == 2) setarray .@pant[.@s],2;
  1726. else if (.@bomb[5] == 3) setarray .@pant[.@s],3,22;
  1727. else if (.@bomb[5] == 4) setarray .@pant[.@s],4,23;
  1728. else if (.@bomb[5] == 5) setarray .@pant[.@s],5,26;
  1729. else if (.@bomb[5] == 6) setarray .@pant[.@s],6;
  1730. else if (.@bomb[5] == 7) setarray .@pant[.@s],7;
  1731. }
  1732. else if (.@bomb[2] == 4) {
  1733. .@pant[.@s] = 18;
  1734. .@s++;
  1735. if (.@bomb[5] == 1) setarray .@pant[.@s],1;
  1736. else if (.@bomb[5] == 2) setarray .@pant[.@s],2;
  1737. else if (.@bomb[5] == 3) setarray .@pant[.@s],3;
  1738. else if (.@bomb[5] == 4) setarray .@pant[.@s],4,22;
  1739. else if (.@bomb[5] == 5) setarray .@pant[.@s],5,23;
  1740. else if (.@bomb[5] == 6) setarray .@pant[.@s],6,26;
  1741. else if (.@bomb[5] == 7) setarray .@pant[.@s],7;
  1742. }
  1743. else if (.@bomb[2] == 5) {
  1744. setarray .@pant[.@s],19,27;
  1745. .@s += 2;
  1746. if (.@bomb[5] == 1) setarray .@pant[.@s],1;
  1747. else if (.@bomb[5] == 2) setarray .@pant[.@s],2;
  1748. else if (.@bomb[5] == 3) setarray .@pant[.@s],3;
  1749. else if (.@bomb[5] == 4) setarray .@pant[.@s],4;
  1750. else if (.@bomb[5] == 5) setarray .@pant[.@s],5,22;
  1751. else if (.@bomb[5] == 6) setarray .@pant[.@s],6,23;
  1752. else if (.@bomb[5] == 7) setarray .@pant[.@s],7,26;
  1753. }
  1754. else if (.@bomb[2] == 6) {
  1755. .@pant[.@s] = 20;
  1756. .@s++;
  1757. if (.@bomb[5] == 1) setarray .@pant[.@s],1,26;
  1758. else if (.@bomb[5] == 2) setarray .@pant[.@s],2;
  1759. else if (.@bomb[5] == 3) setarray .@pant[.@s],3;
  1760. else if (.@bomb[5] == 4) setarray .@pant[.@s],4;
  1761. else if (.@bomb[5] == 5) setarray .@pant[.@s],5;
  1762. else if (.@bomb[5] == 6) setarray .@pant[.@s],6,22;
  1763. else if (.@bomb[5] == 7) setarray .@pant[.@s],7,23;
  1764. }
  1765. else if (.@bomb[2] == 7) {
  1766. .@pant[.@s] = 21;
  1767. .@s++;
  1768. if (.@bomb[5] == 1) setarray .@pant[.@s],1,23;
  1769. else if (.@bomb[5] == 2) setarray .@pant[.@s],2;
  1770. else if (.@bomb[5] == 3) setarray .@pant[.@s],3,26;
  1771. else if (.@bomb[5] == 4) setarray .@pant[.@s],4;
  1772. else if (.@bomb[5] == 5) setarray .@pant[.@s],5;
  1773. else if (.@bomb[5] == 6) setarray .@pant[.@s],6;
  1774. else if (.@bomb[5] == 7) setarray .@pant[.@s],7,22;
  1775. }
  1776. else if (.@bomb[2] == 8) {
  1777. .@pant[.@s] = 22;
  1778. .@s++;
  1779. if (.@bomb[5] == 1) setarray .@pant[.@s],1;
  1780. else if (.@bomb[5] == 2) setarray .@pant[.@s],2,23;
  1781. else if (.@bomb[5] == 3) setarray .@pant[.@s],3,26;
  1782. else if (.@bomb[5] == 4) setarray .@pant[.@s],4;
  1783. else if (.@bomb[5] == 5) setarray .@pant[.@s],5;
  1784. else if (.@bomb[5] == 6) setarray .@pant[.@s],6;
  1785. else if (.@bomb[5] == 7) setarray .@pant[.@s],7;
  1786. }
  1787. .@s = getarraysize(.@pant);
  1788. for ( .@i = 0; .@i < .@s; ++.@i ) {
  1789. if (.@tmp[.@pant[.@i]]) // prevent to trigger the same event multiple times
  1790. continue;
  1791. .@tmp[.@pant[.@i]] = true;
  1792. donpcevent instance_npcname("#pantheon_damage" + .@pant[.@i]) + "::OnEvent";
  1793. }
  1794. }
  1795. end;
  1796. OnTimer1500:
  1797. .@r = rand(1,30);
  1798. if (.@r == 1)
  1799. unittalk 'boss_id, "Wolf: Don't get away... Come closer... I'll kill you...";
  1800. else if (.@r < 11)
  1801. unittalk 'boss_id, "Stefan: ~Groans~ ~Growls~";
  1802. else if (.@r == 20)
  1803. unittalk 'boss_id, "Jack: I'm hurt... I'm scared... I take courage... I hit you...";
  1804. else if (.@r == 30)
  1805. unittalk 'boss_id, "Earnest: I'm angry... It's noisy... I'll wipe them all up...";
  1806. end;
  1807. OnTimer3000:
  1808. OnTimer4500:
  1809. if ('boss_id < 1 || mobcount( 'sthd_map$, instance_npcname("#Last_Boss") + "::OnBossDead" ) < 1) {
  1810. 'boss_id = 0;
  1811. 'pantheon_event[0] = 1;
  1812. 'pantheon_event[1] = 1;
  1813. donpcevent instance_npcname("#Last_Boss") + "::OnLastWord";
  1814. donpcevent instance_npcname("#Last_Boss_Monster") + "::OnReset";
  1815. donpcevent instance_npcname("#Last_Boss2_Monster") + "::OnReset";
  1816. donpcevent instance_npcname("#Stefan for display3") + "::OnStop";
  1817. donpcevent instance_npcname("Sky Fortress Escape Warp#end_warp") + "::OnEnable";
  1818. stopnpctimer;
  1819. }
  1820. end;
  1821. OnTimer6000:
  1822. initnpctimer;
  1823. end;
  1824. OnLastWord:
  1825. mapannounce 'sthd_map$, "Stefan Jack Earnest Wolf: Dead...I was...But...I won't be dead...", bc_map,0xEBFF;
  1826. sleep 3000;
  1827. mapannounce 'sthd_map$, "Stefan Jack Earnest Wolf: Comes back...the power of Bijou...Eternal body...Again...", bc_map,0xEBFF;
  1828. end;
  1829. }
  1830. // hp > 6000000 && hp < 14000000
  1831. 1@sthd,99,128,0 script #Last_Boss2_Monster HIDDEN_WARP_NPC,{
  1832. end;
  1833. OnStart:
  1834. OnTimer10000:
  1835. initnpctimer;
  1836. end;
  1837. OnTimer1000:
  1838. if (mobcount( 'sthd_map$, instance_npcname("#Last_Boss2_Monster") + "::OnMobDead" ) < 8)
  1839. areamonster 'sthd_map$,89,81,119,111,"Zombie Soldier of Bijou",3476,3, instance_npcname("#Last_Boss2_Monster") + "::OnMobDead"; // AS_ZOMBIE
  1840. end;
  1841. OnReset:
  1842. killmonster 'sthd_map$, instance_npcname("#Last_Boss2_Monster") + "::OnMobDead";
  1843. stopnpctimer;
  1844. end;
  1845. OnMobDead:
  1846. end;
  1847. }
  1848. // hp < 5000001
  1849. 1@sthd,99,127,0 script #Last_Boss_Monster HIDDEN_WARP_NPC,{
  1850. end;
  1851. OnStart:
  1852. OnTimer10000:
  1853. initnpctimer;
  1854. end;
  1855. OnReset:
  1856. killmonster 'sthd_map$, instance_npcname("#Last_Boss_Monster") + "::OnMobDead";
  1857. stopnpctimer;
  1858. end;
  1859. OnTimer1000:
  1860. OnTimer8000:
  1861. OnTimer16000:
  1862. OnTimer24000:
  1863. OnTimer32000:
  1864. // no count check
  1865. areamonster 'sthd_map$,84,76,124,116,"Cursed Soldier of Bijou",3485,2, instance_npcname("#Last_Boss_Monster") + "::OnMobDead"; // AS_D_CURSED_SOLDIER
  1866. end;
  1867. OnTimer33000:
  1868. stopnpctimer;
  1869. end;
  1870. OnMobDead:
  1871. end;
  1872. }
  1873. // Kill the player
  1874. 1@sthd,94,119,0 script #pantheon_damage1 HIDDEN_WARP_NPC,6,5,{
  1875. end;
  1876. OnTouch:
  1877. unitkill getcharid(3);
  1878. end;
  1879. OnEvent:
  1880. specialeffect EF_GUMGANG4;
  1881. progressbar_npc "000000",4;
  1882. specialeffect EF_NPC_EARTHQUAKE;
  1883. cloakoffnpc();
  1884. initnpctimer;
  1885. end;
  1886. OnTimer1000:
  1887. cloakonnpc();
  1888. end;
  1889. OnTimer2000:
  1890. stopnpctimer;
  1891. end;
  1892. }
  1893. 1@sthd,96,109,0 duplicate(#pantheon_damage1) #pantheon_damage2 HIDDEN_WARP_NPC,6,5
  1894. 1@sthd,104,110,0 duplicate(#pantheon_damage1) #pantheon_damage3 HIDDEN_WARP_NPC,6,5
  1895. 1@sthd,110,110,0 duplicate(#pantheon_damage1) #pantheon_damage4 HIDDEN_WARP_NPC,6,5
  1896. 1@sthd,113,117,0 duplicate(#pantheon_damage1) #pantheon_damage5 HIDDEN_WARP_NPC,6,5
  1897. 1@sthd,112,103,0 duplicate(#pantheon_damage1) #pantheon_damage6 HIDDEN_WARP_NPC,6,5
  1898. 1@sthd,104,103,0 duplicate(#pantheon_damage1) #pantheon_damage7 HIDDEN_WARP_NPC,6,5
  1899. 1@sthd,97,103,0 duplicate(#pantheon_damage1) #pantheon_damage8 HIDDEN_WARP_NPC,6,5
  1900. 1@sthd,92,97,0 duplicate(#pantheon_damage1) #pantheon_damage9 HIDDEN_WARP_NPC,6,5
  1901. 1@sthd,99,95,0 duplicate(#pantheon_damage1) #pantheon_damage10 HIDDEN_WARP_NPC,6,5
  1902. 1@sthd,108,95,0 duplicate(#pantheon_damage1) #pantheon_damage11 HIDDEN_WARP_NPC,6,5
  1903. 1@sthd,116,95,0 duplicate(#pantheon_damage1) #pantheon_damage12 HIDDEN_WARP_NPC,6,5
  1904. 1@sthd,112,87,0 duplicate(#pantheon_damage1) #pantheon_damage13 HIDDEN_WARP_NPC,6,5
  1905. 1@sthd,104,88,0 duplicate(#pantheon_damage1) #pantheon_damage14 HIDDEN_WARP_NPC,6,5
  1906. 1@sthd,95,87,0 duplicate(#pantheon_damage1) #pantheon_damage15 HIDDEN_WARP_NPC,6,5
  1907. 1@sthd,96,78,0 duplicate(#pantheon_damage1) #pantheon_damage16 HIDDEN_WARP_NPC,6,5
  1908. 1@sthd,94,72,0 duplicate(#pantheon_damage1) #pantheon_damage17 HIDDEN_WARP_NPC,6,5
  1909. 1@sthd,104,81,0 duplicate(#pantheon_damage1) #pantheon_damage18 HIDDEN_WARP_NPC,6,5
  1910. 1@sthd,111,81,0 duplicate(#pantheon_damage1) #pantheon_damage19 HIDDEN_WARP_NPC,6,5
  1911. 1@sthd,114,72,0 duplicate(#pantheon_damage1) #pantheon_damage20 HIDDEN_WARP_NPC,6,5
  1912. 1@sthd,126,96,0 duplicate(#pantheon_damage1) #pantheon_damage21 HIDDEN_WARP_NPC,6,6
  1913. 1@sthd,81,96,0 duplicate(#pantheon_damage1) #pantheon_damage22 HIDDEN_WARP_NPC,6,6
  1914. 1@sthd,100,71,0 duplicate(#pantheon_damage1) #pantheon_damage23 HIDDEN_WARP_NPC,6,6
  1915. 1@sthd,91,101,0 duplicate(#pantheon_damage1) #pantheon_damage24 HIDDEN_WARP_NPC,6,6
  1916. 1@sthd,117,101,0 duplicate(#pantheon_damage1) #pantheon_damage25 HIDDEN_WARP_NPC,6,6
  1917. 1@sthd,117,90,0 duplicate(#pantheon_damage1) #pantheon_damage26 HIDDEN_WARP_NPC,6,6
  1918. 1@sthd,90,90,0 duplicate(#pantheon_damage1) #pantheon_damage27 HIDDEN_WARP_NPC,6,6
  1919. 1@sthd,104,96,4 script Sky Fortress Escape Warp#end_warp 1_SHADOW_NPC,{
  1920. if (select( "Do not go outside of the Sky Fortress.", "Go outside of the Sky Fortress." ) == 1) {
  1921. mes "- The warp is emanating bright lights. -";
  1922. close;
  1923. }
  1924. mes "- You start to transport. -";
  1925. close2;
  1926. if (fortress_entrance_loc == 0)
  1927. warp "prt_q",244,81;
  1928. else {
  1929. warp "dali02",117,69;
  1930. fortress_entrance_loc = 0;
  1931. }
  1932. end;
  1933. OnEnable:
  1934. initnpctimer;
  1935. enablenpc instance_npcname("Sky Fortress Escape Warp#end_warp");
  1936. end;
  1937. OnTimer2000:
  1938. specialeffect EF_ENHANCE;
  1939. end;
  1940. OnTimer3000:
  1941. initnpctimer;
  1942. end;
  1943. OnInstanceInit:
  1944. 'status_event = 0;
  1945. 'boss_id = 0;
  1946. 'pantheon_event[0] = 0;
  1947. 'pantheon_event[1] = 0;
  1948. 'sthb_map$ = instance_mapname("1@sthb");
  1949. 'sthc_map$ = instance_mapname("1@sthc");
  1950. 'sthd_map$ = instance_mapname("1@sthd");
  1951. // Warps
  1952. disablenpc instance_npcname("#sthd_move_01_01");
  1953. disablenpc instance_npcname("#sthd_move_02_01");
  1954. disablenpc instance_npcname("#sthd_move_02_02");
  1955. disablenpc instance_npcname("#sthd_event_1_boss");
  1956. disablenpc instance_npcname("Stefan.J.E.Wolf#sthd_01");
  1957. disablenpc instance_npcname("Stefan.J.E.Wolf#sthd_02");
  1958. disablenpc instance_npcname("#Stefan_Action1");
  1959. for ( .@i = 1; .@i <= 6; .@i++ ) {
  1960. disablenpc instance_npcname("Activated Warp#sthd_mov_" + .@i);
  1961. disablenpc instance_npcname("Deactivated Warp#sthd_mov_" + .@i);
  1962. disablenpc instance_npcname("#sthd_move_back_a_" + .@i);
  1963. }
  1964. disablenpc instance_npcname("#sthd_event_2");
  1965. disablenpc instance_npcname("#sthd_event_3");
  1966. disablenpc instance_npcname("#sthd_event_4");
  1967. for ( .@i = 5; .@i <= 18; .@i++ )
  1968. disablenpc instance_npcname("#sthd_event_" + .@i);
  1969. disablenpc instance_npcname("#sthd_key_control");
  1970. disablenpc instance_npcname("Sky Fortress Gold Treasure#1");
  1971. disablenpc instance_npcname("Sky Fortress Gold Treasure#2");
  1972. disablenpc instance_npcname("Sky Fortress Gold Treasure#3");
  1973. disablenpc instance_npcname("Sky Fortress Gold Treasure#4");
  1974. disablenpc instance_npcname("Sky Fortress Treasure Box");
  1975. disablenpc instance_npcname("Wind Ghost in Experiment");
  1976. disablenpc instance_npcname("Immortal Cursed Knight#");
  1977. disablenpc instance_npcname("Immortal Wind Ghost#01");
  1978. disablenpc instance_npcname("#Stefan_Action2");
  1979. disablenpc instance_npcname("Stefan.J.E.Wolf#sthd_03");
  1980. // Boss room
  1981. disablenpc instance_npcname("#Stefan for display3");
  1982. disablenpc instance_npcname("Stefan.J.E.Wolf#sthd_04");
  1983. disablenpc instance_npcname("#Last_Boss");
  1984. disablenpc instance_npcname("#Last_Boss2_Monster");
  1985. disablenpc instance_npcname("#Last_Boss_Monster");
  1986. disablenpc instance_npcname("Sky Fortress Escape Warp#end_warp");
  1987. for ( .@i = 1; .@i <= 27; .@i++ )
  1988. cloakonnpc instance_npcname("#pantheon_damage" + .@i);
  1989. end;
  1990. }