WeekendDungeon.txt 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  1. //===== rAthena Script =======================================
  2. //= Weekend Memorial Dungeon
  3. //===== Description: =========================================
  4. //= [Walkthrough Conversion]
  5. //= Weekend Memorial Dungeon
  6. //===== Changelogs: ==========================================
  7. //= 1.0 Initial release [Everade]
  8. //============================================================
  9. pay_arche,44,124,5 script Marry Jae 4_F_JOB_BLACKSMITH,{
  10. mes "[Marry Jae]";
  11. if (BaseLevel < 60) {
  12. mes "Your base level is too low, come back when you hit level 60+.";
  13. close;
  14. }
  15. mes "^ff0000If you attempt to tame any monsters, it will not count as a kill. Please be careful.^000000";
  16. next;
  17. .@day = gettime(DT_DAYOFWEEK);
  18. if (.@day != SATURDAY && .@day != SUNDAY) {
  19. mes "[Marry Jae]";
  20. mes "Oh, a curious onlooker? I'm Marry Jae, the person in charge of weekends among the days of the week.";
  21. next;
  22. mes "[Marry Jae]";
  23. mes "What is the weekend dungeon? Actually, it's a specially designed space for new adventurers to train.";
  24. next;
  25. mes "^0000FFLooking around, it's obvious that Marry Jae is talking to you.^000000";
  26. next;
  27. mes "[Marry Jae]";
  28. mes "For those who do not have a party on the weekends, this place is hunting and experience gaining grounds for lonely adventurers!";
  29. next;
  30. mes "[Marry Jae]";
  31. mes "Besides, the experience gain here is very generous.";
  32. next;
  33. select( "When is the opening time?" );
  34. mes "[Marry Jae]";
  35. mes "The dungeon will be open during:";
  36. mes "^0000FFSaturday 00:00 ~ Sunday 23:59^000000";
  37. next;
  38. mes "[Marry Jae]";
  39. mes "I hope to see you when the weekend arrives~";
  40. close;
  41. }
  42. .@md_name$ = "Weekend Dungeon";
  43. if (getcharid(1) < 1) {
  44. mes "[Marry Jae]";
  45. mes "You need to form a party of one member or more.";
  46. close;
  47. }
  48. switch( checkquest(12378,PLAYTIME) ) {
  49. case -1:
  50. break;
  51. case 0:
  52. case 1:
  53. switch( checkquest(12377,PLAYTIME) ) {
  54. case -1:
  55. case 2:
  56. mes "[Marry Jae]";
  57. mes "Sorry, but the entry period to the " + .@md_name$ + " has expired.";
  58. mes "Take a rest while waiting for the dungeon to be available again.";
  59. close;
  60. case 0:
  61. case 1:
  62. break;
  63. }
  64. break;
  65. case 2:
  66. erasequest 12377;
  67. erasequest 12378;
  68. mes "[Marry Jae]";
  69. mes "The cooldown has expired.";
  70. mes "You may re-enter the Memorial Dungeon.";
  71. close;
  72. }
  73. if (is_party_leader() == true)
  74. .@menu$ = "Prepare Memorial Dungeon";
  75. mes "[Marry Jae]";
  76. mes "I think you're just about ready.";
  77. mes "Now, would you like to enter it now?";
  78. next;
  79. switch( select( .@menu$, "Enter Weekend Dungeon", "Cancel" ) ) {
  80. case 1:
  81. instance_create(.@md_name$);
  82. mes "[Marry Jae]";
  83. mes "The Memorial Dungeon has been created.";
  84. mes "You may now enter.";
  85. close;
  86. case 2:
  87. switch( instance_enter(.@md_name$) ) {
  88. case IE_NOMEMBER:
  89. end;
  90. case IE_NOINSTANCE:
  91. mes "There is no Memorial Dungeon registered.";
  92. close;
  93. case IE_OTHER:
  94. mes "An unknown error has occurred.";
  95. close;
  96. case IE_OK:
  97. mes "[Marry Jae]";
  98. mes "Off you go!";
  99. mapannounce "pay_arche", "" + strcharinfo(0) + " of the party, " + getpartyname( getcharid(1) ) + ", is entering the " + .@md_name$ + ".", bc_map, 0xFF99;
  100. if (isbegin_quest(12377) == 0)
  101. setquest 12377;
  102. if (isbegin_quest(12378) == 0)
  103. setquest 12378;
  104. end;
  105. }
  106. end;
  107. case 3:
  108. mes "[Marry Jae]";
  109. mes "You have not prepared?";
  110. mes "Can't really help it I guess.";
  111. close;
  112. }
  113. }
  114. //Merchant
  115. pay_arche,44,121,5 script Gift Supplies Clerk 4_F_02,{
  116. .@zeny = 60000;
  117. mes "[Gift Supplies Clerk]";
  118. mes "I offer packaging services for those who wish to present a precious gift to a cherished one.";
  119. next;
  120. mes "[Gift Supplies Clerk]";
  121. mes "If you have 5 units of <ITEM>" + getitemname(23143) + "<INFO>23143</INFO></ITEM> or <ITEM>" + getitemname(23142) + "<INFO>23142</INFO></ITEM>, I can pack it for just ^FF0000" + F_InsertComma(.@zeny) + "^000000 Zeny!";
  122. mes "Do you want to pack it right now?";
  123. next;
  124. switch( select( "Cancel", "Growth Elixir Packing", "Job Elixir Packing" ) ) {
  125. case 1:
  126. mes "[Gift Supplies Clerk]";
  127. mes "Come back whenever you need packaging services!";
  128. close;
  129. case 2:
  130. .@item = 23142;
  131. .@box = 23144;
  132. break;
  133. case 3:
  134. .@item = 23143;
  135. .@box = 23145;
  136. break;
  137. }
  138. mes "[Gift Supplies Clerk]";
  139. if (countitem(.@item) < 5) {
  140. mes "Please come back when you have enough materials.";
  141. close;
  142. }
  143. if (Zeny < .@zeny) {
  144. mes "Please come back when you have enough Zeny.";
  145. mes F_InsertComma(.@zeny) + "z to be specific.";
  146. close;
  147. }
  148. if (checkweight(23144,1) == 0) {
  149. mes "You have too many kinds of objects. Clear your inventory.";
  150. close;
  151. }
  152. if (MaxWeight - Weight < 10000) {
  153. mes "Can't continue because you have too many heavy objects. Reduce your total weight by clearing your inventory.";
  154. close;
  155. }
  156. mes "Confirm to spend " + F_InsertComma(.@zeny) + "z to package 5 <ITEM>" + getitemname(.@item) + "<INFO>" + .@item + "</INFO></ITEM> into <ITEM>" + getitemname(.@box) + "<INFO>" + .@box + "</INFO></ITEM>?";
  157. next;
  158. if (select( "Yes", "No" ) == 2) {
  159. mes "[Gift Supplies Clerk]";
  160. mes "Come back whenever you need packaging services!";
  161. close;
  162. }
  163. Zeny -= .@zeny;
  164. delitem .@item,5;
  165. getitem .@box,1;
  166. end;
  167. }
  168. //Instance
  169. 1@md_pay,239,30,6 script Marry Jae#0_1 4_F_JOB_BLACKSMITH,{
  170. if (is_party_leader() == false)
  171. end;
  172. mes "[Marry Jae]";
  173. mes "Before we start setting up the environment here, we'll give you the chance to choose an appropriate difficulty level.";
  174. mes "I could make my own choice, but each person handles it differently based on their abilities.";
  175. next;
  176. switch( select( "Cancel", "Lv60 ~ 79", "Lv80 ~ 99", "Lv100 ~ 119", "Lv120 ~ 139", "Lv140 ~ 159", "Lv160 ~ " ) ) {
  177. case 1:
  178. end;
  179. //Familiar, Skeleton, Zombie
  180. case 2:
  181. .@min_level = 60;
  182. setarray 'mob[0],3643,3637,3649;
  183. break;
  184. case 3:
  185. .@min_level = 80;
  186. setarray 'mob[0],3644,3638,3650;
  187. break;
  188. case 4:
  189. .@min_level = 100;
  190. setarray 'mob[0],3645,3639,3651;
  191. break;
  192. case 5:
  193. .@min_level = 120;
  194. setarray 'mob[0],3646,3640,3652;
  195. break;
  196. case 6:
  197. .@min_level = 140;
  198. setarray 'mob[0],3647,3641,3653;
  199. break;
  200. case 7:
  201. .@min_level = 160;
  202. setarray 'mob[0],3648,3642,3654;
  203. break;
  204. }
  205. mes "[Marry Jae]";
  206. if (BaseLevel < .@min_level) {
  207. mes "Your base level is too low to select this, you need to be level " + .@min_level + " + .";
  208. close;
  209. }
  210. mes "Good luck finding the treasures!";
  211. npctalk "Good luck~";
  212. donpcevent instance_npcname("map_md_pay_spawn") + "::OnStart";
  213. close;
  214. }
  215. 1@md_pay,1,1,6 script map_md_pay_spawn -1,{
  216. end;
  217. OnStart:
  218. sleep 2500;
  219. disablenpc instance_npcname("Marry Jae#0_1");
  220. .@event$ = instance_npcname("map_md_pay_spawn") + "::OnFarmiliarDead";
  221. killmonster 'map_md_pay$, .@event$;
  222. monster 'map_md_pay$,252,54,"Familiar",'mob[0],1,.@event$;
  223. monster 'map_md_pay$,260,40,"Familiar",'mob[0],1,.@event$;
  224. monster 'map_md_pay$,249,93,"Familiar",'mob[0],1,.@event$;
  225. monster 'map_md_pay$,224,38,"Familiar",'mob[0],1,.@event$;
  226. monster 'map_md_pay$,255,125,"Familiar",'mob[0],1,.@event$;
  227. monster 'map_md_pay$,264,132,"Familiar",'mob[0],1,.@event$;
  228. monster 'map_md_pay$,255,165,"Familiar",'mob[0],1,.@event$;
  229. monster 'map_md_pay$,265,181,"Familiar",'mob[0],1,.@event$;
  230. monster 'map_md_pay$,225,165,"Familiar",'mob[0],1,.@event$;
  231. monster 'map_md_pay$,235,115,"Familiar",'mob[0],1,.@event$;
  232. monster 'map_md_pay$,205,145,"Familiar",'mob[0],1,.@event$;
  233. monster 'map_md_pay$,190,180,"Familiar",'mob[0],1,.@event$;
  234. monster 'map_md_pay$,213,250,"Familiar",'mob[0],1,.@event$;
  235. monster 'map_md_pay$,90,263,"Familiar",'mob[0],1,.@event$;
  236. monster 'map_md_pay$,135,200,"Familiar",'mob[0],1,.@event$;
  237. monster 'map_md_pay$,175,155,"Familiar",'mob[0],1,.@event$;
  238. monster 'map_md_pay$,165,145,"Familiar",'mob[0],1,.@event$;
  239. monster 'map_md_pay$,180,117,"Familiar",'mob[0],1,.@event$;
  240. monster 'map_md_pay$,175,115,"Familiar",'mob[0],1,.@event$;
  241. monster 'map_md_pay$,185,66,"Familiar",'mob[0],1,.@event$;
  242. monster 'map_md_pay$,155,55,"Familiar",'mob[0],1,.@event$;
  243. monster 'map_md_pay$,165,45,"Familiar",'mob[0],1,.@event$;
  244. monster 'map_md_pay$,124,57,"Familiar",'mob[0],1,.@event$;
  245. monster 'map_md_pay$,54,45,"Familiar",'mob[0],1,.@event$;
  246. monster 'map_md_pay$,53,48,"Familiar",'mob[0],1,.@event$;
  247. monster 'map_md_pay$,55,65,"Familiar",'mob[0],1,.@event$;
  248. monster 'map_md_pay$,51,66,"Familiar",'mob[0],1,.@event$;
  249. monster 'map_md_pay$,42,84,"Familiar",'mob[0],1,.@event$;
  250. monster 'map_md_pay$,41,152,"Familiar",'mob[0],1,.@event$;
  251. monster 'map_md_pay$,46,171,"Familiar",'mob[0],1,.@event$;
  252. monster 'map_md_pay$,45,185,"Familiar",'mob[0],1,.@event$;
  253. monster 'map_md_pay$,64,172,"Familiar",'mob[0],1,.@event$;
  254. monster 'map_md_pay$,75,181,"Familiar",'mob[0],1,.@event$;
  255. monster 'map_md_pay$,50,202,"Familiar",'mob[0],1,.@event$;
  256. monster 'map_md_pay$,55,205,"Familiar",'mob[0],1,.@event$;
  257. monster 'map_md_pay$,75,245,"Familiar",'mob[0],1,.@event$;
  258. monster 'map_md_pay$,90,263,"Familiar",'mob[0],1,.@event$;
  259. .@event$ = instance_npcname("map_md_pay_spawn") + "::OnSkelDead";
  260. killmonster 'map_md_pay$, .@event$;
  261. monster 'map_md_pay$,245,55,"Skeleton",'mob[1],1,.@event$;
  262. monster 'map_md_pay$,243,63,"Skeleton",'mob[1],1,.@event$;
  263. monster 'map_md_pay$,259,98,"Skeleton",'mob[1],1,.@event$;
  264. monster 'map_md_pay$,258,204,"Skeleton",'mob[1],1,.@event$;
  265. monster 'map_md_pay$,239,122,"Skeleton",'mob[1],1,.@event$;
  266. monster 'map_md_pay$,189,190,"Skeleton",'mob[1],1,.@event$;
  267. monster 'map_md_pay$,239,231,"Skeleton",'mob[1],1,.@event$;
  268. monster 'map_md_pay$,205,225,"Skeleton",'mob[1],1,.@event$;
  269. monster 'map_md_pay$,172,207,"Skeleton",'mob[1],1,.@event$;
  270. monster 'map_md_pay$,166,234,"Skeleton",'mob[1],1,.@event$;
  271. monster 'map_md_pay$,171,236,"Skeleton",'mob[1],1,.@event$;
  272. monster 'map_md_pay$,126,180,"Skeleton",'mob[1],1,.@event$;
  273. monster 'map_md_pay$,150,150,"Skeleton",'mob[1],1,.@event$;
  274. monster 'map_md_pay$,155,135,"Skeleton",'mob[1],1,.@event$;
  275. monster 'map_md_pay$,174,75,"Skeleton",'mob[1],1,.@event$;
  276. monster 'map_md_pay$,186,67,"Skeleton",'mob[1],1,.@event$;
  277. monster 'map_md_pay$,95,65,"Skeleton",'mob[1],1,.@event$;
  278. monster 'map_md_pay$,55,85,"Skeleton",'mob[1],1,.@event$;
  279. monster 'map_md_pay$,37,92,"Skeleton",'mob[1],1,.@event$;
  280. monster 'map_md_pay$,34,90,"Skeleton",'mob[1],1,.@event$;
  281. monster 'map_md_pay$,27,99,"Skeleton",'mob[1],1,.@event$;
  282. monster 'map_md_pay$,57,76,"Skeleton",'mob[1],1,.@event$;
  283. monster 'map_md_pay$,62,93,"Skeleton",'mob[1],1,.@event$;
  284. monster 'map_md_pay$,33,97,"Skeleton",'mob[1],1,.@event$;
  285. monster 'map_md_pay$,60,45,"Skeleton",'mob[1],1,.@event$;
  286. monster 'map_md_pay$,48,60,"Skeleton",'mob[1],1,.@event$;
  287. monster 'map_md_pay$,73,51,"Skeleton",'mob[1],1,.@event$;
  288. .@event$ = instance_npcname("map_md_pay_spawn") + "::OnZombieDead";
  289. killmonster 'map_md_pay$, .@event$;
  290. monster 'map_md_pay$,245,65,"Zombie",'mob[2],1,.@event$;
  291. monster 'map_md_pay$,218,61,"Zombie",'mob[2],1,.@event$;
  292. monster 'map_md_pay$,255,171,"Zombie",'mob[2],1,.@event$;
  293. monster 'map_md_pay$,215,165,"Zombie",'mob[2],1,.@event$;
  294. monster 'map_md_pay$,237,127,"Zombie",'mob[2],1,.@event$;
  295. monster 'map_md_pay$,215,105,"Zombie",'mob[2],1,.@event$;
  296. monster 'map_md_pay$,198,168,"Zombie",'mob[2],1,.@event$;
  297. monster 'map_md_pay$,243,267,"Zombie",'mob[2],1,.@event$;
  298. monster 'map_md_pay$,165,207,"Zombie",'mob[2],1,.@event$;
  299. monster 'map_md_pay$,157,236,"Zombie",'mob[2],1,.@event$;
  300. monster 'map_md_pay$,113,259,"Zombie",'mob[2],1,.@event$;
  301. monster 'map_md_pay$,105,255,"Zombie",'mob[2],1,.@event$;
  302. monster 'map_md_pay$,117,238,"Zombie",'mob[2],1,.@event$;
  303. monster 'map_md_pay$,164,194,"Zombie",'mob[2],1,.@event$;
  304. monster 'map_md_pay$,159,172,"Zombie",'mob[2],1,.@event$;
  305. monster 'map_md_pay$,175,155,"Zombie",'mob[2],1,.@event$;
  306. monster 'map_md_pay$,146,131,"Zombie",'mob[2],1,.@event$;
  307. monster 'map_md_pay$,152,126,"Zombie",'mob[2],1,.@event$;
  308. monster 'map_md_pay$,181,85,"Zombie",'mob[2],1,.@event$;
  309. monster 'map_md_pay$,165,81,"Zombie",'mob[2],1,.@event$;
  310. monster 'map_md_pay$,157,74,"Zombie",'mob[2],1,.@event$;
  311. monster 'map_md_pay$,175,45,"Zombie",'mob[2],1,.@event$;
  312. monster 'map_md_pay$,49,48,"Zombie",'mob[2],1,.@event$;
  313. monster 'map_md_pay$,65,175,"Zombie",'mob[2],1,.@event$;
  314. monster 'map_md_pay$,78,180,"Zombie",'mob[2],1,.@event$;
  315. monster 'map_md_pay$,33,207,"Zombie",'mob[2],1,.@event$;
  316. monster 'map_md_pay$,49,227,"Zombie",'mob[2],1,.@event$;
  317. monster 'map_md_pay$,55,235,"Zombie",'mob[2],1,.@event$;
  318. monster 'map_md_pay$,60,240,"Zombie",'mob[2],1,.@event$;
  319. monster 'map_md_pay$,70,237,"Zombie",'mob[2],1,.@event$;
  320. monster 'map_md_pay$,65,265,"Zombie",'mob[2],1,.@event$;
  321. 'rand_chest = rand(1,4);
  322. end;
  323. OnFarmiliarDead:
  324. callsub( S_Mob, 'mob[0], "Familiar", "OnFarmiliarDead" );
  325. OnSkelDead:
  326. callsub( S_Mob, 'mob[1], "Skeleton", "OnSkelDead" );
  327. OnZombieDead:
  328. callsub( S_Mob, 'mob[2], "Zombie", "OnZombieDead" );
  329. S_Mob:
  330. if (rand(100) == 0) {
  331. 'rand_chest++;
  332. if ('rand_chest > 4)
  333. 'rand_chest = 1;
  334. // Treasure Chest Spawn
  335. donpcevent instance_npcname("#WDbox" + 'rand_chest) + "::OnStart";
  336. }
  337. sleep 10000;
  338. monster 'map_md_pay$,0,0, getarg(1), getarg(0),1, instance_npcname("map_md_pay_spawn") + "::" + getarg(2);
  339. end;
  340. OnInstanceInit:
  341. 'count = 0;
  342. 'rand_chest = 0;
  343. 'map_md_pay$ = instance_mapname("1@md_pay");
  344. disablenpc instance_npcname("#WDbox1");
  345. disablenpc instance_npcname("#WDbox2");
  346. disablenpc instance_npcname("#WDbox3");
  347. disablenpc instance_npcname("#WDbox4");
  348. end;
  349. }
  350. // Treasure Chest Reward
  351. 1@md_pay,99,172,3 script #WDbox1 4_TREASURE_BOX,{
  352. specialeffect EF_COIN;
  353. disablenpc();
  354. stopnpctimer;
  355. sleep 500;
  356. .@chestname$ = strnpcinfo(2);
  357. if (.@chestname$ == "WDbox1") {
  358. for ( .@i = 0; .@i < 3; ++.@i )
  359. makeitem rand(23142,23143),1, 'map_md_pay$, rand(97,101), rand(170,174);
  360. }
  361. else if (.@chestname$ == "WDbox2") {
  362. for ( .@i = 0; .@i < 3; ++.@i )
  363. makeitem rand(23142,23143),1, 'map_md_pay$, rand(233,237), rand(58,62);
  364. }
  365. else if (.@chestname$ == "WDbox3") {
  366. for ( .@i = 0; .@i < 3; ++.@i )
  367. makeitem rand(23142,23143),1, 'map_md_pay$, rand(51,55), rand(265,269);
  368. }
  369. else if (.@chestname$ == "WDbox4") {
  370. for ( .@i = 0; .@i < 3; ++.@i )
  371. makeitem rand(23142,23143),1, 'map_md_pay$, rand(236,240), rand(250,254);
  372. }
  373. end;
  374. OnStart:
  375. enablenpc();
  376. instance_announce -1, "A treasure chest appeared somewhere in the dungeon. It'll disappear after a while, so let's find it.", bc_map, "0xff5500";
  377. initnpctimer;
  378. end;
  379. OnTimer180000: //3min before chest disappears
  380. disablenpc();
  381. stopnpctimer;
  382. end;
  383. }
  384. 1@md_pay,235,60,3 duplicate(#WDbox1) #WDbox2 4_TREASURE_BOX
  385. 1@md_pay,53,267,3 duplicate(#WDbox1) #WDbox3 4_TREASURE_BOX
  386. 1@md_pay,238,252,3 duplicate(#WDbox1) #WDbox4 4_TREASURE_BOX