123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- //===== rAthena Script =======================================
- //= Devil Square
- //===== By: ==================================================
- //= Kirlein, Stillhard (translation), AnnieRuru (rewrite)
- //===== Current Version: =====================================
- //= 1.0
- //===== Compatible With: =====================================
- //= rAthena Project
- //===== Description: =========================================
- //= Devil Square, based on the event in MU Online.
- //= Defeat three waves of monsters for treasure.
- //===== Additional Comments: =================================
- //= 1.0 First version, edited. [Euphy]
- //============================================================
- prontera,156,185,5 script Devil Square Guardian#1 406,{
- set .@gm_level, 99; // GM level required to start/stop the event
- mes "[Devil Square Guardian]";
- mes "This is the entrance to ^FF0000Devil Square^000000.";
- mes "If you fail or die, the door will close and you must wait until the event starts again to re-enter.";
- next;
- switch(select("Enter.:Information.:" + ((getgmlevel() >= .@gm_level) ? "GM Menu." : "") + ":Cancel.")) {
- case 1:
- if (.start != 1) { // registration period
- mes "[Devil Square Guardian]";
- mes "Devil Square is now closed.";
- mes "It will open at these times:";
- mes "00:00 , 02:00 , 04:00 , 06:00"; // display your times here
- mes "08:00 , 10:00 , 12:00 , 14:00";
- mes "16:00 , 18:00 , 20:00 , 22:00";
- close;
- }
- if (BaseLevel < 70 || Zeny < 20000) { // requirements
- mes "[Devil Square Guardian]";
- mes "You do not meet the requirements to enter Devil Square.";
- mes " ";
- mes "Requirements:";
- mes " - Base Level 70";
- mes " - Registration fee 20,000z";
- close;
- }
- Zeny -= 20000;
- announce strcharinfo(0)+" has entered Devil Square.", bc_npc;
- percentheal 100,100;
- warp "ordeal_1-1",183,182;
- close;
- case 2:
- mes "[Devil Square Guardian]";
- mes "Inside, you will encounter 3 waves of monsters. The monsters will grow stronger with each wave.";
- next;
- mes "[Devil Square Guardian]";
- mes "If you defeat all the enemies, you will be given the opportunity to open 10 Treasure Chests with items, equipment, and rare cards inside!";
- close;
- case 3:
- mes "[Devil Square Guardian]";
- switch (.start) { // event states
- case 0: mes "Devil Square has not yet started."; break;
- case 1: mes "Devil Square is currently accepting participants."; break;
- case 2: mes "Devil Square Event is currently running on Round "+ .round +" with "+ .mob +" monsters remaining."; break;
- }
- next;
- switch(select("Start event.:Stop event.:Cancel.")) {
- case 1:
- mes "[Devil Square Guardian]";
- if (.start)
- mes "Devil Square has already started.";
- else {
- mes "Starting Devil Square...";
- donpcevent strnpcinfo(0)+"::OnStartEvent";
- }
- close;
- case 2:
- mes "[Devil Square Guardian]";
- if (!.start)
- mes "Devil Square has not yet started.";
- else {
- mes "Stopping Devil Square...";
- donpcevent strnpcinfo(0)+"::OnStopEvent";
- }
- close;
- case 3:
- break;
- }
- break;
- case 4:
- break;
- }
- mes "[Devil Square Guardian]";
- mes "Farewell.";
- close;
- OnStartEvent:
- OnClock0000:
- OnClock0200:
- OnClock0400:
- OnClock0600:
- OnClock0800:
- OnClock1000:
- OnClock1200:
- OnClock1400:
- OnClock1600:
- OnClock1800:
- OnClock2000:
- OnClock2200:
- .start = 1;
- disablenpc "ord11-12"; //from npc/warps/pvp.txt
- disablenpc "Devil Square Guardian#2";
- mapannounce "ordeal_1-1","Devil Square is now closed.", bc_map;
- getmapxy .@map$, .@x, .@y, 1;
- mapwarp "ordeal_1-1", .@map$, .@x, .@y;
- killmonsterall "ordeal_1-1";
- announce "Devil Square is OPEN. The event will begin in 5 minutes.", bc_all;
- sleep 60000;
- announce "Devil Square will begin in 4 minutes.", bc_all;
- sleep 60000;
- announce "Devil Square will begin in 3 minutes.", bc_all;
- sleep 60000;
- announce "Devil Square will begin in 2 minutes.", bc_all;
- sleep 60000;
- announce "Devil Square will begin in 1 minute.", bc_all;
- sleep 60000;
- announce "Devil Square has STARTED!", bc_all;
- if ( !getmapusers("ordeal_1-1") )
- goto OnStopEvent;
- .start = 2;
- .round = 1;
- .mob = 75;
- areamonster "ordeal_1-1",183,182,246,244,"[DS] SOLDIER SKELETON",1028,10,strnpcinfo(0)+"::OnDevilDead";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC ARCHER",1189,15,strnpcinfo(0)+"::OnDevilDead";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] SANDMAN",1165,10,strnpcinfo(0)+"::OnDevilDead";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] ARCHER SKELETON",1016,15,strnpcinfo(0)+"::OnDevilDead";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] MINOROUS",1149,15,strnpcinfo(0)+"::OnDevilDead";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] REQUIEM",1164,10,strnpcinfo(0)+"::OnDevilDead";
- end;
- OnDevilDead:
- .mob--;
- if ( .mob == 25 || .mob == 5 )
- announce "Devil Square : "+ .mob +" monsters remaining in round 1.", bc_map;
- else if ( .mob <= 0 ) {
- announce "Devil Square is entering round 2...", bc_map;
- goto OnDevil2;
- }
- end;
- OnDevil2:
- .round = 2;
- .mob = 70;
- areamonster "ordeal_1-1",183,182,246,244,"[DS] GARGOYLE",1253,15,strnpcinfo(0)+"::OnDevilDead2";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] ALARM",1193,10,strnpcinfo(0)+"::OnDevilDead2";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] HIGH ORC",1213,10,strnpcinfo(0)+"::OnDevilDead2";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] INJUSTICE",1257,10,strnpcinfo(0)+"::OnDevilDead2";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] MIMIC",1191,15,strnpcinfo(0)+"::OnDevilDead2";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] WRAITH",1192,10,strnpcinfo(0)+"::OnDevilDead2";
- end;
- OnDevilDead2:
- .mob--;
- if ( .mob == 25 || .mob == 5 )
- announce "Devil Square : "+ .mob +" monsters remaining in round 2.", bc_map;
- else if ( .mob <= 0 ) {
- announce "Devil Square is entering round 3...", bc_map;
- goto OnDevil3;
- }
- end;
- OnDevil3:
- .round = 3;
- .mob = 58;
- areamonster "ordeal_1-1",183,182,246,244,"[DS] ANOLIAN",1206,15,strnpcinfo(0)+"::OnDevilDead3";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] WANDERER",1208,15,strnpcinfo(0)+"::OnDevilDead3";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] DEVIRUCHI",1109,10,strnpcinfo(0)+"::OnDevilDead3";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] JOKER",1131,15,strnpcinfo(0)+"::OnDevilDead3";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] MOONLIGHT",1150,2,strnpcinfo(0)+"::OnDevilDead3";
- areamonster "ordeal_1-1",183,182,246,244,"[DS] DARK ILLUSION",1302,1,strnpcinfo(0)+"::OnDevilDead3";
- end;
- OnDevilDead3:
- .mob--;
- if ( .mob == 25 || .mob == 5 )
- announce "Devil Square : "+ .mob +" monsters remaining in the final round.", bc_map;
- else if ( .mob <= 0 ) {
- announce "Devil Square : CONGRATULATIONS. These 10 Treasure Chests are yours.", bc_map;
- goto OnDevil4;
- }
- end;
- OnDevil4:
- .round = 4;
- .mob = 10;
- monster "ordeal_1-1",231,250,"Treasure Chest",1324,1,strnpcinfo(0)+"::OnTreasureDead";
- monster "ordeal_1-1",234,247,"Treasure Chest",1328,1,strnpcinfo(0)+"::OnTreasureDead";
- monster "ordeal_1-1",237,244,"Treasure Chest",1332,1,strnpcinfo(0)+"::OnTreasureDead";
- monster "ordeal_1-1",240,241,"Treasure Chest",1336,1,strnpcinfo(0)+"::OnTreasureDead";
- monster "ordeal_1-1",243,238,"Treasure Chest",1340,1,strnpcinfo(0)+"::OnTreasureDead";
- monster "ordeal_1-1",246,235,"Treasure Chest",1344,1,strnpcinfo(0)+"::OnTreasureDead";
- monster "ordeal_1-1",249,232,"Treasure Chest",1348,1,strnpcinfo(0)+"::OnTreasureDead";
- monster "ordeal_1-1",252,229,"Treasure Chest",1352,1,strnpcinfo(0)+"::OnTreasureDead";
- monster "ordeal_1-1",249,241,"Treasure Chest",1356,1,strnpcinfo(0)+"::OnTreasureDead";
- monster "ordeal_1-1",240,249,"Treasure Chest",1360,1,strnpcinfo(0)+"::OnTreasureDead";
- end;
- OnTreasureDead:
- .mob--;
- announce "Devil Square : "+ strcharinfo(0) +" has opened the Treasure Chest at Devil Square.", bc_all;
- if ( .mob <= 0 )
- goto OnStopEvent;
- end;
- OnStopEvent:
- killmonsterall "ordeal_1-1";
- enablenpc "ord11-12"; //from npc/warps/pvp.txt
- enablenpc "Devil Square Guardian#2";
- .start = .round = .mob = 0;
- end;
- }
- ordeal_1-1,246,245,7 script Devil Square Guardian#2 406,{
- mes "[Exit]";
- mes "Farewell.";
- close2;
- warp "SavePoint",0,0;
- end;
- }
- ordeal_1-1 mapflag nowarp
- ordeal_1-1 mapflag nowarpto
- ordeal_1-1 mapflag noteleport
- ordeal_1-1 mapflag monster_noteleport
- ordeal_1-1 mapflag nosave SavePoint
- ordeal_1-1 mapflag nomemo
- ordeal_1-1 mapflag nobranch
- ordeal_1-1 mapflag nopenalty
- ordeal_1-1 mapflag noicewall
|