Advertisement
Guest User

Untitled

a guest
Nov 27th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.72 KB | None | 0 0
  1. //===== rAthena Script =======================================
  2. //= Devil Square
  3. //===== By: ==================================================
  4. //= Kirlein, Stillhard (translation), AnnieRuru (rewrite)
  5. //===== Current Version: =====================================
  6. //= 1.0
  7. //===== Compatible With: =====================================
  8. //= rAthena Project
  9. //===== Description: =========================================
  10. //= Devil Square, based on the event in MU Online.
  11. //= Defeat three waves of monsters for treasure.
  12. //===== Additional Comments: =================================
  13. //= 1.0 First version, edited. [Euphy]
  14. //============================================================
  15.  
  16. prontera,204,181,4 script Devil Square Guardian#1 406,{
  17. set .@gm_level, 60; // GM level required to start/stop the event
  18.  
  19. mes "[ Devil Square Guardian ]";
  20. mes "This is the entrance to ^FF0000Devil Square^000000.";
  21. mes "If you fail or die, the door will close and you must wait until the event starts again to re-enter.";
  22. next;
  23. switch(select("Enter.:Information.:" + ((getgmlevel() >= .@gm_level) ? "GM Menu." : "") + ":Cancel.")) {
  24. case 1:
  25. if (.start != 1) { // registration period
  26. mes "[ Devil Square Guardian ]";
  27. mes "Devil Square is now closed.";
  28. mes "It will open at these times:";
  29. mes "- ^FF000008.00^000000 p.m ( Except active WoE )"; // display your times here
  30. close;
  31. }
  32. if (BaseLevel < 70 || Zeny < 5000000) { // requirements
  33. mes "[ Devil Square Guardian ]";
  34. mes "You do not meet the requirements to enter Devil Square.";
  35. mes " ";
  36. mes "Requirements:";
  37. mes " - Base Level 70";
  38. mes " - Registration fee 10.000.000z";
  39. close;
  40. }
  41. set Zeny, Zeny -10000000;
  42. announce strcharinfo(0)+" has entered Devil Square.", bc_npc;
  43. percentheal 100,100;
  44. warp "ordeal_1-1",183,182;
  45. close;
  46. case 2:
  47. mes "[ Devil Square Guardian ]";
  48. mes "Inside, you will encounter 5 waves of monsters. The monsters will grow stronger with each wave.";
  49. next;
  50. mes "[ Devil Square Guardian ]";
  51. mes "If you defeat all the enemies, you will be given the opportunity to :";
  52. mes "- 10 ^0000FFTreasure Chest^000000";
  53. mes "- 300x ^0000FF"+getitemname(7539)+"^000000";
  54. mes "- 300x ^0000FF"+getitemname(7227)+"^000000";
  55. mes "- 50x ^0000FF"+getitemname(12103)+"^000000";
  56. mes "- 10.000 ^0000FFCash Points^000000";
  57. mes "- 1x ^0000FF"+getitemname(674)+"^000000";
  58. close;
  59. case 3:
  60. mes "[ Devil Square Guardian ]";
  61. switch (.start) { // event states
  62. case 0: mes "Devil Square has not yet started."; break;
  63. case 1: mes "Devil Square is currently accepting participants."; break;
  64. case 2: mes "Devil Square Event is currently running on Round "+ .round +" with "+ .mob +" monsters remaining."; break;
  65. }
  66. next;
  67. switch(select("Start event.:Stop event.:Cancel.")) {
  68. case 1:
  69. mes "[ Devil Square Guardian ]";
  70. if (.start)
  71. mes "Devil Square has already started.";
  72. else {
  73. mes "Starting Devil Square...";
  74. donpcevent strnpcinfo(0)+"::OnStartEvent";
  75. }
  76. close;
  77. case 2:
  78. mes "[ Devil Square Guardian ]";
  79. if (!.start)
  80. mes "Devil Square has not yet started.";
  81. else {
  82. mes "Stopping Devil Square...";
  83. donpcevent strnpcinfo(0)+"::OnStopEvent";
  84. }
  85. close;
  86. case 3:
  87. break;
  88. }
  89. break;
  90. case 4:
  91. break;
  92. }
  93. mes "[ Devil Square Guardian ]";
  94. mes "Farewell.";
  95. close;
  96.  
  97. OnClock2001:
  98. OnStartEvent:
  99. if (agitcheck() || agitcheck2()) { end; }
  100. .start = 1;
  101. disablenpc "ord11-12"; //from npc/warps/pvp.txt
  102. disablenpc "Devil Square Guardian#2";
  103. enablenpc "Devil Square Healer#1";
  104. mapannounce "ordeal_1-1","Devil Square is now closed.", bc_map;
  105. getmapxy .@map$, .@x, .@y, UNITTYPE_NPC;
  106. mapwarp "ordeal_1-1", .@map$, .@x, .@y;
  107. killmonsterall "ordeal_1-1";
  108. announce "Devil Square is OPEN. The event will begin in 3 minutes.", bc_all;
  109. sleep 60000;
  110. announce "Devil Square will begin in 2 minutes.", bc_all;
  111. sleep 60000;
  112. announce "Devil Square will begin in 1 minute.", bc_all;
  113. sleep 55000;
  114. announce "Devil Square will begin in 5 seconds.", bc_all;
  115. sleep 1000;
  116. announce "Devil Square will begin in 4 seconds.", bc_all;
  117. sleep 1000;
  118. announce "Devil Square will begin in 3 seconds.", bc_all;
  119. sleep 1000;
  120. announce "Devil Square will begin in 2 seconds.", bc_all;
  121. sleep 1000;
  122. announce "Devil Square will begin in 1 second.", bc_all;
  123. sleep 1000;
  124. announce "Devil Square has STARTED!", bc_all;
  125. disablenpc "Devil Square Healer#1";
  126. if ( !getmapusers("ordeal_1-1") )
  127. goto OnStopEvent;
  128. .start = 2;
  129. .round = 1;
  130. .mob = 100;
  131. areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC WARRIOR",1023,15,strnpcinfo(0)+"::OnDevilDead1";
  132. areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC SKELETON",1152,10,strnpcinfo(0)+"::OnDevilDead1";
  133. areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC ZOMBIE",1153,10,strnpcinfo(0)+"::OnDevilDead1";
  134. areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC ARCHER",1189,15,strnpcinfo(0)+"::OnDevilDead1";
  135. areamonster "ordeal_1-1",183,182,246,244,"[DS] HIGH ORC",1213,15,strnpcinfo(0)+"::OnDevilDead1";
  136. areamonster "ordeal_1-1",183,182,246,244,"[DS] SMOKING ORC",1235,15,strnpcinfo(0)+"::OnDevilDead1";
  137. areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC LADY",1273,15,strnpcinfo(0)+"::OnDevilDead1";
  138. areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC LORD",1190,10,strnpcinfo(0)+"::OnDevilDead1";
  139. areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC HERO",1087,2,strnpcinfo(0)+"::OnDevilDead1";
  140. end;
  141.  
  142. OnDevilDead1:
  143. .mob--;
  144. if ( .mob == 25 || .mob == 5 )
  145. announce "Devil Square : "+ .mob +" monsters remaining in round 1.", bc_map;
  146. else if ( .mob <= 0 ) {
  147. announce "Devil Square is entering round 2...", bc_map;
  148. goto OnDevil2;
  149. }
  150. end;
  151.  
  152. OnDevil2:
  153. .round = 2;
  154. .mob = 100;
  155. areamonster "ordeal_1-1",183,182,246,244,"[DS] SEEKER",1774,15,strnpcinfo(0)+"::OnDevilDead2";
  156. areamonster "ordeal_1-1",183,182,246,244,"[DS] AGAV",1769,15,strnpcinfo(0)+"::OnDevilDead2";
  157. areamonster "ordeal_1-1",183,182,246,244,"[DS] ECHIO",1770,15,strnpcinfo(0)+"::OnDevilDead2";
  158. areamonster "ordeal_1-1",183,182,246,244,"[DS] ISILLA",1772,10,strnpcinfo(0)+"::OnDevilDead2";
  159. areamonster "ordeal_1-1",183,182,246,244,"[DS] VANBERK",1771,10,strnpcinfo(0)+"::OnDevilDead2";
  160. areamonster "ordeal_1-1",183,182,246,244,"[DS] BEHOLDER",1633,10,strnpcinfo(0)+"::OnDevilDead2";
  161. areamonster "ordeal_1-1",183,182,246,244,"[DS] GREMLIN",1632,10,strnpcinfo(0)+"::OnDevilDead2";
  162. areamonster "ordeal_1-1",183,182,246,244,"[DS] HODREMLIN",1773,10,strnpcinfo(0)+"::OnDevilDead2";
  163. areamonster "ordeal_1-1",183,182,246,244,"[DS] GLOOM UNDER NIGHT",1768,5,strnpcinfo(0)+"::OnDevilDead2";
  164. end;
  165.  
  166. OnDevilDead2:
  167. .mob--;
  168. if ( .mob == 25 || .mob == 5 )
  169. announce "Devil Square : "+ .mob +" monsters remaining in round 2.", bc_map;
  170. else if ( .mob <= 0 ) {
  171. announce "Devil Square is entering round 3...", bc_map;
  172. goto OnDevil3;
  173. }
  174. end;
  175.  
  176. OnDevil3:
  177. .round = 3;
  178. .mob = 100;
  179. areamonster "ordeal_1-1",183,182,246,244,"[DS] NOVUS",1715,10,strnpcinfo(0)+"::OnDevilDead3";
  180. areamonster "ordeal_1-1",183,182,246,244,"[DS] NOVUS",1718,10,strnpcinfo(0)+"::OnDevilDead3";
  181. areamonster "ordeal_1-1",183,182,246,244,"[DS] MIMIC",1191,10,strnpcinfo(0)+"::OnDevilDead3";
  182. areamonster "ordeal_1-1",183,182,246,244,"[DS] ANCIENT MIMIC",1699,10,strnpcinfo(0)+"::OnDevilDead3";
  183. areamonster "ordeal_1-1",183,182,246,244,"[DS] PENOMENA",1216,10,strnpcinfo(0)+"::OnDevilDead3";
  184. areamonster "ordeal_1-1",183,182,246,244,"[DS] FERUS",1714,10,strnpcinfo(0)+"::OnDevilDead3";
  185. areamonster "ordeal_1-1",183,182,246,244,"[DS] FERUS",1717,10,strnpcinfo(0)+"::OnDevilDead3";
  186. areamonster "ordeal_1-1",183,182,246,244,"[DS] ACIDUS",1713,10,strnpcinfo(0)+"::OnDevilDead3";
  187. areamonster "ordeal_1-1",183,182,246,244,"[DS] ACIDUS",1716,10,strnpcinfo(0)+"::OnDevilDead3";
  188. areamonster "ordeal_1-1",183,182,246,244,"[DS] HYDROLANCER",1720,5,strnpcinfo(0)+"::OnDevilDead3";
  189. areamonster "ordeal_1-1",183,182,246,244,"[DS] DETARDEURUS",1719,5,strnpcinfo(0)+"::OnDevilDead3";
  190. end;
  191.  
  192. OnDevilDead3:
  193. .mob--;
  194. if ( .mob == 25 || .mob == 5 )
  195. announce "Devil Square : "+ .mob +" monsters remaining in round 3.", bc_map;
  196. else if ( .mob <= 0 ) {
  197. announce "Devil Square is entering round 4...", bc_map;
  198. goto OnDevil4;
  199. }
  200. end;
  201.  
  202. OnDevil4:
  203. .round = 4;
  204. .mob = 100;
  205. areamonster "ordeal_1-1",183,182,246,244,"[DS] SWORD MASTER",1829,15,strnpcinfo(0)+"::OnDevilDead4";
  206. areamonster "ordeal_1-1",183,182,246,244,"[DS] BOW MASTER",1830,15,strnpcinfo(0)+"::OnDevilDead4";
  207. areamonster "ordeal_1-1",183,182,246,244,"[DS] SALAMANDER",1831,15,strnpcinfo(0)+"::OnDevilDead4";
  208. areamonster "ordeal_1-1",183,182,246,244,"[DS] KASA",1833,10,strnpcinfo(0)+"::OnDevilDead4";
  209. areamonster "ordeal_1-1",183,182,246,244,"[DS] MAGMARING",1836,10,strnpcinfo(0)+"::OnDevilDead4";
  210. areamonster "ordeal_1-1",183,182,246,244,"[DS] IMP",1837,10,strnpcinfo(0)+"::OnDevilDead4";
  211. areamonster "ordeal_1-1",183,182,246,244,"[DS] KNOCKER",1838,10,strnpcinfo(0)+"::OnDevilDead4";
  212. areamonster "ordeal_1-1",183,182,246,244,"[DS] BYORGUE",1839,10,strnpcinfo(0)+"::OnDevilDead4";
  213. areamonster "ordeal_1-1",183,182,246,244,"[DS] IFRIT",1832,5,strnpcinfo(0)+"::OnDevilDead4";
  214.  
  215. end;
  216.  
  217. OnDevilDead4:
  218. .mob--;
  219. if ( .mob == 25 || .mob == 5 )
  220. announce "Devil Square : "+ .mob +" monsters remaining in round 4.", bc_map;
  221. else if ( .mob <= 0 ) {
  222. announce "Devil Square is entering round 5...", bc_map;
  223. goto OnDevil5;
  224. }
  225. end;
  226.  
  227. OnDevil5:
  228. .round = 5;
  229. .mob = 95;
  230. areamonster "ordeal_1-1",183,182,246,244,"[DS] PLASMA",1693,10,strnpcinfo(0)+"::OnDevilDead5";
  231. areamonster "ordeal_1-1",183,182,246,244,"[DS] DAME OF SENTINEL",1700,10,strnpcinfo(0)+"::OnDevilDead5";
  232. areamonster "ordeal_1-1",183,182,246,244,"[DS] MISTRESS OF SHELTER",1701,10,strnpcinfo(0)+"::OnDevilDead5";
  233. areamonster "ordeal_1-1",183,182,246,244,"[DS] BARONESS OF RETRIBUTION",1702,10,strnpcinfo(0)+"::OnDevilDead5";
  234. areamonster "ordeal_1-1",183,182,246,244,"[DS] LADY SOLACE",1703,10,strnpcinfo(0)+"::OnDevilDead5";
  235. areamonster "ordeal_1-1",183,182,246,244,"[DS] ODIUM OF THANATOS",1704,10,strnpcinfo(0)+"::OnDevilDead5";
  236. areamonster "ordeal_1-1",183,182,246,244,"[DS] DESPERO OF THANATOS",1705,10,strnpcinfo(0)+"::OnDevilDead5";
  237. areamonster "ordeal_1-1",183,182,246,244,"[DS] MAERO OF THANATOS",1706,10,strnpcinfo(0)+"::OnDevilDead5";
  238. areamonster "ordeal_1-1",183,182,246,244,"[DS] DOLOR OF THANATOS",1707,10,strnpcinfo(0)+"::OnDevilDead5";
  239. areamonster "ordeal_1-1",183,182,246,244,"[DS] MEMORY OF THANATOS",1708,5,strnpcinfo(0)+"::OnDevilDead5";
  240. end;
  241.  
  242. OnDevilDead5:
  243. .mob--;
  244. if ( .mob == 25 || .mob == 5 )
  245. announce "Devil Square : "+ .mob +" monsters remaining in the final round.", bc_map;
  246. else if ( .mob <= 0 ) {
  247. announce "Devil Square : CONGRATULATIONS. These 10 Treasure Chests are yours.", bc_map;
  248. goto OnDevil6;
  249. }
  250. end;
  251.  
  252. OnDevil6:
  253. .round = 6;
  254. .mob = 10;
  255. monster "ordeal_1-1",231,250,"Treasure Chest",1363,1,strnpcinfo(0)+"::OnTreasureDead";
  256. monster "ordeal_1-1",234,247,"Treasure Chest",1363,1,strnpcinfo(0)+"::OnTreasureDead";
  257. monster "ordeal_1-1",237,244,"Treasure Chest",1363,1,strnpcinfo(0)+"::OnTreasureDead";
  258. monster "ordeal_1-1",240,241,"Treasure Chest",1363,1,strnpcinfo(0)+"::OnTreasureDead";
  259. monster "ordeal_1-1",243,238,"Treasure Chest",1363,1,strnpcinfo(0)+"::OnTreasureDead";
  260. monster "ordeal_1-1",246,235,"Treasure Chest",1363,1,strnpcinfo(0)+"::OnTreasureDead";
  261. monster "ordeal_1-1",249,232,"Treasure Chest",1363,1,strnpcinfo(0)+"::OnTreasureDead";
  262. monster "ordeal_1-1",252,229,"Treasure Chest",1363,1,strnpcinfo(0)+"::OnTreasureDead";
  263. monster "ordeal_1-1",249,241,"Treasure Chest",1363,1,strnpcinfo(0)+"::OnTreasureDead";
  264. monster "ordeal_1-1",240,249,"Treasure Chest",1363,1,strnpcinfo(0)+"::OnTreasureDead";
  265. end;
  266.  
  267. OnTreasureDead:
  268. .mob--;
  269. announce "Devil Square : "+ strcharinfo(0) +" has opened the Treasure Chest at Devil Square.", bc_all;
  270. if ( .mob <= 0 )
  271. goto OnStopEvent;
  272. end;
  273.  
  274. OnStopEvent:
  275. killmonsterall "ordeal_1-1";
  276. enablenpc "ord11-12"; //from npc/warps/pvp.txt
  277. enablenpc "Devil Square Guardian#2";
  278. .start = .round = .mob = 0;
  279. end;
  280.  
  281. OnInit:
  282. waitingroom "Devil Square",0;
  283. end;
  284.  
  285. }
  286.  
  287. ordeal_1-1,246,245,7 script Devil Square Guardian#2 406,{
  288. mes "[ Devil Square Guardian ]";
  289. mes "Farewell.";
  290. mes "And this your final reward";
  291. if(checkweight(2504,1) == 0 ) goto L_OverWeight;
  292. close2;
  293. getitem 7227,300;
  294. getitem 7539,300;
  295. getitem 12103,100;
  296. getitem 674,1;
  297. set #CASHPOINTS,#CASHPOINTS+10000;
  298. dispbottom "Gained 10.000 Cash Points. Current Cash Points: " + #CASHPOINTS;
  299. warp "prontera",156,166;
  300. end;
  301.  
  302. L_OverWeight:
  303. mes "[ Devil Square Guardian ]";
  304. mes "Over weight !!";
  305. close;
  306. }
  307.  
  308. ordeal_1-1,185,178,5 script Devil Square Healer#1 742,{
  309. switch(BaseJob){
  310.  
  311. Case Job_Alchemist:
  312. set $spirit, 445;
  313. break;
  314. Case Job_Monk:
  315. set $spirit, 447;
  316. break;
  317. Case Job_Star_Gladiator:
  318. set $spirit, 448;
  319. break;
  320. Case Job_Sage:
  321. set $spirit, 449;
  322. break;
  323. Case Job_Crusader:
  324. set $spirit, 450;
  325. break;
  326. Case Job_SuperNovice:
  327. set $spirit, 451;
  328. break;
  329. Case Job_Knight:
  330. set $spirit, 452;
  331. break;
  332. Case Job_Wizard:
  333. set $spirit, 453;
  334. break;
  335. Case Job_Priest:
  336. set $spirit, 454;
  337. break;
  338. Case Job_Bard:
  339. Case Job_Dancer:
  340. set $spirit, 455;
  341. break;
  342. Case Job_Rogue:
  343. set $spirit, 456;
  344. break;
  345. Case Job_Assassin:
  346. set $spirit, 457;
  347. break;
  348. Case Job_Blacksmith:
  349. set $spirit, 458;
  350. break;
  351. Case Job_Hunter:
  352. set $spirit, 460;
  353. break;
  354. Case Job_Soul_Linker:
  355. set $spirit, 461;
  356. break;
  357. default:
  358. if ( upper == 1 && level < 70 )
  359. set $spirit, 494;
  360. }
  361.  
  362. npctalk "Hyper Buffer !!";
  363. skilleffect 383,0; sc_start SC_WINDWALK,600000,10;
  364. skilleffect 34,0; sc_start SC_BLESSING,600000,10;
  365. skilleffect 29,0; sc_start SC_INCREASEAGI,600000,10;
  366. skilleffect 74,0; sc_start SC_MAGNIFICAT,600000,5;
  367. skilleffect 75,0; sc_start SC_GLORIA,600000,5;
  368. skilleffect 66,0; sc_start SC_IMPOSITIO,600000,5;
  369. skilleffect 67,0; sc_start SC_SUFFRAGIUM,600000,3;
  370. skilleffect 234,0; sc_start SC_CP_WEAPON,600000,5;
  371. skilleffect 235,0; sc_start SC_CP_SHIELD,600000,5;
  372. skilleffect 236,0; sc_start SC_CP_ARMOR,600000,5;
  373. skilleffect 237,0; sc_start SC_CP_HELM,600000,5;
  374. skilleffect 361,0; sc_start SC_ASSUMPTIO,120000,5;
  375. sc_start4 SC_SPIRIT, 360000, 5, $spirit,0,0;
  376. skilleffect $spirit,0;
  377.  
  378. sc_start SC_STRFood,3600000,10;
  379. sc_start SC_AGIFood,3600000,10;
  380. sc_start SC_VITFood,3600000,10;
  381. sc_start SC_INTFood,3600000,10;
  382. sc_start SC_DEXFood,3600000,10;
  383. sc_start SC_LUKFood,3600000,10;
  384. //specialeffect2 593;
  385. //specialeffect2 594;
  386. //specialeffect2 595;
  387. //specialeffect2 596;
  388. //specialeffect2 597;
  389. //specialeffect2 598;
  390.  
  391. sc_end sc_stone;
  392. sc_end sc_freeze;
  393. sc_end sc_SCeep;
  394. sc_end sc_curse;
  395. sc_end sc_silence;
  396. sc_end sc_confusion;
  397. sc_end sc_blind;
  398. sc_end sc_bleeding;
  399. sc_end sc_decreaseagi;
  400. sc_end sc_poison;
  401. sc_end sc_hallucination;
  402. sc_end sc_stripweapon;
  403. sc_end sc_striparmor;
  404. sc_end sc_striphelm;
  405. sc_end sc_stripshield;
  406.  
  407. specialeffect2 209;
  408.  
  409. while (getbrokenid(1)) {
  410. repair(1);
  411. set .@i, .@i +1;
  412. }
  413. if (.@i) dispbottom .@i + " Items Repaired. ";
  414.  
  415. getinventorylist;
  416. set @identify, 0;
  417. for(set @i, 0; @i < @inventorylist_count; set @i, @i +
  418. 1)
  419. {
  420. if (@inventorylist_identify[@i] == 0) set @identify,
  421. @identify + 1;
  422. }
  423.  
  424. getinventorylist;
  425. set @identified, 0;
  426. for(set @i, 0; @i < @inventorylist_count; set @i, @i +
  427. 1)
  428. {
  429. if (@inventorylist_identify[@i] == 0)
  430. {
  431. delitem2 @inventorylist_id[@i],1,0,0,0,0,0,0,0;
  432. getitem @inventorylist_id[@i],1;
  433. set @identified, @identified + 1;
  434. }
  435. }
  436.  
  437. specialeffect2 338;
  438. percentheal 100,100;
  439.  
  440. dispbottom "Thank you for used our facilities";
  441. }
  442.  
  443. ordeal_1-1 mapflag nowarp
  444. ordeal_1-1 mapflag nowarpto
  445. ordeal_1-1 mapflag noteleport
  446. ordeal_1-1 mapflag monster_noteleport
  447. ordeal_1-1 mapflag nosave SavePoint
  448. ordeal_1-1 mapflag nomemo
  449. ordeal_1-1 mapflag nobranch
  450. ordeal_1-1 mapflag nopenalty
  451. ordeal_1-1 mapflag noicewall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement