summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/009-2/_import.txt1
-rw-r--r--npc/009-2/olana.txt196
-rw-r--r--npc/024-1/_import.txt1
-rw-r--r--npc/024-1/david.txt50
-rw-r--r--npc/025-1/_import.txt3
-rw-r--r--npc/025-1/barrier.txt13
-rw-r--r--npc/025-1/reset.txt68
-rw-r--r--npc/025-1/rossy.txt207
-rw-r--r--npc/025-3/_import.txt6
-rw-r--r--npc/025-3/_mobs.txt32
-rw-r--r--npc/025-3/_warps.txt5
-rw-r--r--npc/025-3/barriers.txt930
-rw-r--r--npc/025-4/Battlecaves.txt852
-rw-r--r--npc/025-4/_import.txt9
-rw-r--r--npc/025-4/_mobs.txt16
-rw-r--r--npc/025-4/_warps.txt4
-rw-r--r--npc/025-4/clauquer.txt71
-rw-r--r--npc/025-4/julia.txt35
-rw-r--r--npc/025-4/mapflags.txt1
-rw-r--r--npc/_import.txt2
20 files changed, 2502 insertions, 0 deletions
diff --git a/npc/009-2/_import.txt b/npc/009-2/_import.txt
index 4d3ae94e..5289780c 100644
--- a/npc/009-2/_import.txt
+++ b/npc/009-2/_import.txt
@@ -14,6 +14,7 @@ npc: npc/009-2/mapflags.txt
npc: npc/009-2/misc.txt
npc: npc/009-2/nicholas.txt
npc: npc/009-2/nurse.txt
+npc: npc/009-2/olana.txt
npc: npc/009-2/peter.txt
npc: npc/009-2/richard.txt
npc: npc/009-2/selim.txt
diff --git a/npc/009-2/olana.txt b/npc/009-2/olana.txt
new file mode 100644
index 00000000..76381e7e
--- /dev/null
+++ b/npc/009-2/olana.txt
@@ -0,0 +1,196 @@
+009-2.gat,123,45,0 script Olana 140,{
+
+ if (FLAGS & FLAG_ROSSI_COMPLETED) goto L_FinalEnd;
+ if (Rossy_Quest == 17 || Rossy_Quest == 18) goto L_End;
+ if (Rossy_Quest >= 14 && Rossy_Quest <= 16) goto L_Julia;
+ if (Rossy_Quest == 13) goto L_Best;
+ if (Rossy_Quest == 12) goto L_Give;
+ if (Rossy_Quest == 11) goto L_Allergic;
+ if (Rossy_Quest == 10) goto L_BringRose;
+ if (Rossy_Quest == 9) goto L_RC;
+ if (Rossy_Quest == 8) goto L_RL;
+ if (Rossy_Quest >= 6 && Rossy_Quest < 8) goto L_BL;
+ if (Rossy_Quest == 5) goto L_Bring;
+ if (Rossy_Quest == 4) goto L_Cont;
+ if (Rossy_Quest == 3) goto L_See;
+ if (Rossy_Quest == 2) goto L_Daughter;
+
+ mes "[Olana]";
+ mes "\"I come from Tulimshar and am here with my two daughters, Rossy and Julia, for vacation. I already have been to Hurnscald once and I feeled quite safe...\"";
+ next;
+ mes "\"I let my two lovely girls play in the woods near by but they still didn't came back!\"";
+ mes "*Olana starts crying...*";
+ close;
+
+L_Daughter:
+ mes "[Olana]";
+ mes "\"I come from Tulimshar and am here with my twin daughters, Rossy and Julia, for vacation. I already have been to Hurnscald once and I feeled quite safe...\"";
+ next;
+ mes "\"I let my two lovely girls play in the woods near by but they still didn't came back!\"";
+ mes "*Olana begins to sobb...*";
+ next;
+ menu
+ "Wait, I saw Rossy, she is fine.", L_Help,
+ "Wait a bit, I'm sure they'll get back soon.", L_No;
+
+L_No:
+ close;
+
+L_Help:
+ mes "[Olana]";
+ mes "\"Oh yes? Is Rossy alright? That's good. I'm relieved. I hope she'll find Julia soon.\"";
+ next;
+ mes "\"Oh by the way, I would need your help myself too. My water supply ran out and I can't go down the stairs anymore, my knees hurt a lot.\"";
+ menu
+ "Sure I can help you, how much do you need?", L_Set,
+ "Sorry, I'm too busy.", L_No;
+
+L_Set:
+ mes "[Olana]";
+ set Rossy_Quest, 3;
+ mes "\"I'd like the size of a [Bottle of Water] and I would need about 5 of those. Please, bring them to me.\"";
+ close;
+
+L_Get:
+ mes "[Olana]";
+ mes "\"Please, get 5 containers of water for me, around the size of a [Bottle of Water].\"";
+ close;
+
+L_See:
+ if(countitem("bottleofwater") < 5) goto L_Get;
+ mes "[Olana]";
+ set Rossy_Quest, 4;
+ mes "\"You got them for me! Thank you! Here you are... a small reward from me for your precious help!\"";
+ delitem "bottleofwater", 5;
+ getexp 500, 0;
+ set zeny, zeny + 1000;
+ goto L_Task;
+
+L_Task:
+ mes "[Olana]";
+ mes "\"Thank you very much. I have another task for you, would you like to help me again?\"";
+ menu
+ "Tell me about it.", L_Cont,
+ "No, sorry, I'm busy.", L_No;
+
+L_Cont:
+ mes "[Olana]";
+ mes "\"Can you give this letter to my little daughter please? Her teacher asked me to do it, but I can't walk up to my daughter, my knees...\"";
+ menu
+ "Of course I can. Hand me the letter, I'll give it to Rossy as soon as I see her.", L_Let,
+ "No, sorry, I'm not interested in that sort of task. Hand it yourself.", L_No;
+
+L_Let:
+ mes "[Olana]";
+ set Rossy_Quest, 5;
+ mes "\"Please bring it to her as fast as you can, she really needs to know this news!\"";
+ close;
+
+L_Bring:
+ mes "[Olana]";
+ mes "\"Bring this letter to my daughter as fast as you can, please!\"";
+ close;
+
+L_BL:
+ mes "[Olana]";
+ mes "\"Good, now she remembers it! Please, "+ strcharinfo(0) +", help Rossy, she will tell you what to do.\"";
+ close;
+
+L_Done:
+ mes "[Olana]";
+ mes "\"Thanks you "+ strcharinfo(0) +", I and Rossy will never forget what you did for us!\"";
+ goto L_Rose;
+
+L_Rose:
+ mes "[Olana]";
+ mes "\"I have another task for you, would you help me?\"";
+ menu
+ "Tell me what to do.", L_RL,
+ "No, I'm busy, maybe later.", L_No;
+
+L_RL:
+ mes "[Olana]";
+ set Rossy_Quest, 9;
+ mes "\"Can you bring me 15 [Red Rose]s? I would like to give them to my daughter because she succesfully passed her magic exam!\"";
+ menu
+ "Ok, I will be back with these.", L_RG;
+
+L_RG:
+ mes "[Olana]";
+ mes "\"Please, bring me 15 [Red Rose]s.\"";
+ close;
+
+L_RC:
+ if(countitem("redrose") < 15) goto L_RG;
+ mes "[Olana]";
+ set Rossy_Quest, 10;
+ mes "\"Great job! Please hand them to my brilliant daughter, Rossy.\"";
+ close;
+
+L_BringRose:
+ mes "[Olana]";
+ mes "\"Now, please hand them to my brilliant daughter, Rossy.\"";
+ close;
+
+L_Allergic:
+ mes "[Olana]";
+ set Rossy_Quest, 12;
+ mes "\"Did she liked my present?\"";
+ menu
+ "Well, you should know that your daughter is allergic to roses.", -;
+ mes "[Olana]";
+ mes "\"How stupid I am! Here, take some of my money and buy [Red Tulip]s instead, about the same amount. The roses are for you sweety.\"";
+ set zeny, zeny + 1500;
+ next;
+ mes "[Olana]";
+ mes "\"I want Rossy to be happy and to forgive me for my stupidity.\"";
+ menu
+ "Ok, I will.", -;
+ mes "[Olana]";
+ mes "\"And don't forget to tell her that I'm really sorry.\"";
+ close;
+
+L_Give:
+ mes "[Olana]";
+ mes "\""+ strcharinfo(0) +", please, get 15 [Red Tulip]s and hand them to Rossy. Don't forget to tell her that I'm really sorry for the mistake I did.\"";
+ close;
+
+L_Best:
+ mes "[Olana]";
+ mes "\""+ strcharinfo(0) +", thank you for your help!\"";
+ close;
+
+L_Julia:
+ mes "[Olana]";
+ mes "\"Where is Julia? I want to know where she is! Go and find her please "+ strcharinfo(0) +".\"";
+ close;
+
+L_End:
+ mes "[Olana]";
+ mes "\"Where is Julia? I want to know where she is! Go and find her please "+ strcharinfo(0) +".\"";
+ menu
+ "She'll be back soon, trust me, I saved her.", L_Found,
+ "I didn't saw her yet, sorry.", L_No;
+
+L_Found:
+ mes "[Olana]";
+ if (Rossy_Quest == 17) set Rossy_Quest, 18;
+ if (Rossy_Quest == 18) set Rossy_Quest, 19;
+ mes "\"Thank you "+ strcharinfo(0) +", thank you! Here is a reward for you.\"";
+ getexp 5000, 0;
+ set zeny, zeny + 5000;
+ if (Rossy_Quest == 19) goto L_Clear;
+ close;
+
+L_Clear:
+ set Rossy_Quest, 0;
+ set cavefights, 0;
+ set FLAGS, FLAGS | FLAG_ROSSI_COMPLETED;
+ close;
+
+L_FinalEnd:
+ mes "[Olana]";
+ mes "*The mother is calmly waiting her daughters to come back for diner.*";
+ close;
+
+}
diff --git a/npc/024-1/_import.txt b/npc/024-1/_import.txt
index 828b20ab..debf3dda 100644
--- a/npc/024-1/_import.txt
+++ b/npc/024-1/_import.txt
@@ -4,6 +4,7 @@ map: 024-1.gat
npc: npc/024-1/_mobs.txt
npc: npc/024-1/_warps.txt
npc: npc/024-1/ched.txt
+npc: npc/024-1/david.txt
npc: npc/024-1/eomie.txt
npc: npc/024-1/tinris.txt
npc: npc/024-1/tondar.txt
diff --git a/npc/024-1/david.txt b/npc/024-1/david.txt
new file mode 100644
index 00000000..612d1c14
--- /dev/null
+++ b/npc/024-1/david.txt
@@ -0,0 +1,50 @@
+024-1.gat,70,70,0 script David 120,{
+
+ if (Rossy_Quest == 17) goto L_FinalEnd;
+ if (Rossy_Quest == 14) goto L_Julia;
+ if (Rossy_Quest >= 8) goto L_Done;
+
+ mes "[David]";
+ mes "\"Learning magic is hard...\"";
+ if (Rossy_Quest == 7) goto L_Help;
+ close;
+
+L_Help:
+ menu
+ "Do you know Rossy?", L_Set,
+ "I can tell, it is hard.", L_No;
+
+L_Set:
+ mes "[David]";
+ mes "\"Yes, I do. I am her teacher. That makes me remember she didn't hand me her potion yet. Time is running out.\"";
+ menu
+ "A potion? Oh, uhm... never heard about it.", L_No,
+ "Right, I have her potion. She asked me to bring it to you for her.", -;
+ mes "[David]";
+ mes "\"Oh, that's great! Let me look at it...\"";
+ set Rossy_Quest, 8;
+ mes "\"Great! This potion is perfect, tell Rossy that she passed her exam! And here is a small reward for your help.\"";
+ getexp 2000, 0;
+ set zeny, zeny + 500;
+ close;
+
+L_Done:
+ mes "[David]";
+ mes "\"I am really happy that my best student succesfully passed her exam! Thank you "+ strcharinfo(0) +"!\"";
+ close;
+
+L_No:
+ close;
+
+L_Julia:
+ mes "[David]";
+ mes "\"I heard Rossy's sister got kidnapped. We count on you to find her!\"";
+ mes "\"When you'll find her, talk to her sister or mother.\"";
+ close;
+
+L_FinalEnd:
+ mes "[David]";
+ mes "Thank you for finding Julia.";
+ close;
+
+}
diff --git a/npc/025-1/_import.txt b/npc/025-1/_import.txt
index bf3dd30e..a29be248 100644
--- a/npc/025-1/_import.txt
+++ b/npc/025-1/_import.txt
@@ -3,3 +3,6 @@
map: 025-1.gat
npc: npc/025-1/_mobs.txt
npc: npc/025-1/_warps.txt
+npc: npc/025-1/barrier.txt
+npc: npc/025-1/reset.txt
+npc: npc/025-1/rossy.txt
diff --git a/npc/025-1/barrier.txt b/npc/025-1/barrier.txt
new file mode 100644
index 00000000..9290d9c5
--- /dev/null
+++ b/npc/025-1/barrier.txt
@@ -0,0 +1,13 @@
+//
+025-1.gat,42,79,0 script #JuliaBarrier 127,1,1,{
+ if (Rossy_Quest <= 13) goto L_Block;
+ if (Alrd_Been != 1) message strcharinfo(0), "You hear distant screams of fear.";
+ set Alrd_Been, 1;
+ warp "025-3.gat", 112, 97;
+ end;
+
+L_Block:
+ message strcharinfo(0), "You are too frightened by what you can hear coming out of the cave that you can't enter.";
+ end;
+
+}
diff --git a/npc/025-1/reset.txt b/npc/025-1/reset.txt
new file mode 100644
index 00000000..cbc98a14
--- /dev/null
+++ b/npc/025-1/reset.txt
@@ -0,0 +1,68 @@
+//
+025-1.gat,47,84,0 script reset 145,{
+
+ mes "Do you want to reset Rossy Quest?";
+ menu
+ "Reset every variable of the quest.", -,
+ "Set Rossy_Quest.", L_Set,
+ "Pass cave quest.", L_Pass2,
+ "Pass all caves except boss cave.", L_Pass,
+ "Reset Alrd_Been only.", L_reSet,
+ "Do not reset.", L_No;
+ set Rossy_Quest, 0;
+ set cavefights, 0;
+ set Alrd_Been, 0;
+ set Boss_10, 0;
+ set Killed_Boss, 0;
+ set @juliadone1, 0;
+ set @juliadone2, 0;
+ set @juliadone3, 0;
+ set @juliadone4, 0;
+ set @juliadone5, 0;
+ set @juliadone6, 0;
+ set @juliadone7, 0;
+ set @juliadone8, 0;
+ set @juliadone9, 0;
+ set @juliadone10, 0;
+ set FLAGS, FLAGS & ~FLAG_ROSSI_COMPLETED;
+
+L_No:
+ close;
+
+L_reSet:
+ set Alrd_Been, 0;
+ close;
+
+L_Set:
+ mes "value";
+ input @name$;
+ set Rossy_Quest, @name$;
+ close;
+
+L_Pass:
+ set Rossy_Quest, 15;
+ set cavefights, (cavefights ^ BATTLE_CAVE1);
+ set cavefights, (cavefights ^ BATTLE_CAVE2);
+ set cavefights, (cavefights ^ BATTLE_CAVE3);
+ set cavefights, (cavefights ^ BATTLE_CAVE4);
+ set cavefights, (cavefights ^ BATTLE_CAVE5);
+ set cavefights, (cavefights ^ BATTLE_CAVE6);
+ set cavefights, (cavefights ^ BATTLE_CAVE7);
+ set cavefights, (cavefights ^ BATTLE_CAVE8);
+ set cavefights, (cavefights ^ BATTLE_CAVE9);
+ close;
+
+L_Pass2:
+ set Rossy_Quest, 16;
+ set Killed_Boss, 1;
+ set cavefights, (cavefights ^ BATTLE_CAVE1);
+ set cavefights, (cavefights ^ BATTLE_CAVE2);
+ set cavefights, (cavefights ^ BATTLE_CAVE3);
+ set cavefights, (cavefights ^ BATTLE_CAVE4);
+ set cavefights, (cavefights ^ BATTLE_CAVE5);
+ set cavefights, (cavefights ^ BATTLE_CAVE6);
+ set cavefights, (cavefights ^ BATTLE_CAVE7);
+ set cavefights, (cavefights ^ BATTLE_CAVE8);
+ set cavefights, (cavefights ^ BATTLE_CAVE9);
+ close;
+}
diff --git a/npc/025-1/rossy.txt b/npc/025-1/rossy.txt
new file mode 100644
index 00000000..0cf34040
--- /dev/null
+++ b/npc/025-1/rossy.txt
@@ -0,0 +1,207 @@
+025-1.gat,80,88,0 script Rossy 114,{
+
+ if (FLAGS & FLAG_ROSSI_COMPLETED) goto L_FinalEnd;
+ if (Rossy_Quest == 17 || Rossy_Quest == 18) goto L_End;
+ if (Rossy_Quest >= 14 && Rossy_Quest <= 16) goto L_Julia;
+ if (Rossy_Quest >= 13) goto L_Best;
+ if (Rossy_Quest >= 11) goto L_Allergic;
+ if (Rossy_Quest >= 8 && Rossy_Quest < 11) goto L_Donet;
+ if (Rossy_Quest == 7) goto L_BT;
+ if (Rossy_Quest == 6) goto L_Check2;
+ if (Rossy_Quest == 5) goto L_Let;
+ if (Rossy_Quest >= 2 && Rossy_Quest < 5) goto L_Done;
+ if (Rossy_Quest == 1) goto L_Check;
+
+ mes "[Rossy]";
+ mes "*The young girl looks at you in tears.*";
+ menu
+ "Please stop crying and tell me what's wrong.", -,
+ "I don't like people who cry. Bye.", L_No;
+ next;
+ mes "[Rossy]";
+ mes "\"I dropped a basket of fruits and these snails ate every fruit in it!\"";
+ if (baselevel < 50) goto L_LowLevel;
+ menu
+ "Oh, I presume that you want some. Would you like me to get some fruits for you?", L_Set,
+ "Oh well, life isn't fair.", L_No;
+
+L_LowLevel:
+ menu
+ "I can't do anything about it, sorry.", L_No;
+
+L_No:
+ close;
+
+L_Set:
+ mes "[Rossy]";
+ mes "\"Really? Can you get 10 Cherries for me? These are the fruits I like best.\"";
+ next;
+ menu
+ "Sure, I'll be back with your cherries.", L_Get,
+ "No.", L_No;
+
+L_Get:
+ mes "[Rossy]";
+ set Rossy_Quest, 1;
+ mes "\"Please, get 10 Cherries for me.\"";
+ close;
+
+L_Check:
+ if(countitem("Cherry") < 10) goto L_Get;
+ mes "[Rossy]";
+ set Rossy_Quest, 2;
+ delitem "Cherry", 10;
+ getexp 2000, 0;
+ mes "\"I can't believe my eyes, you got them! Thanks a lot!\"";
+ next;
+ mes "\"Could you go and talk to my mother? She is in one of the buildings in the town north east from here.\"";
+ close;
+
+L_Done:
+ mes "[Rossy]";
+ mes "\"Thank you "+ strcharinfo(0) +"! Please go and see my mum. She might need help.\"";
+ close;
+
+L_Let:
+ mes "[Rossy]";
+ mes "\"Hello "+ strcharinfo(0) +", nice to see you again. What are you holding behind in your hands? Is that a letter?\"";
+ menu
+ "Your mother asked me to hand you this letter. She told me it was from your teacher.", L_Let2,
+ "Not at all... I need to go now, see you next time.", L_No;
+
+L_Let2:
+ mes "[Rossy]";
+ mes "\"Oh, let me read it...\"";
+ next;
+ mes "*The little girl grabs the piece of paper and reads it. Her face turns pale.*";
+ menu
+ "What does it say?", -;
+ mes "[Rossy]";
+ mes "\"Oh no, I completely forgot! I need to make a potion for my exam but I don't have any of the ingredients required. Could you get them for me?\"";
+ menu
+ "Of course I can, what do you need?", L_Sett,
+ "Well, I'm already really busy right now, sorry. Bye.", L_No;
+
+L_Sett:
+ mes "[Rossy]";
+ set Rossy_Quest, 6;
+ mes "\"Great! I need 24 [Cactus Drink]s, 32 [Maggot Slime]s, 50 [Gamboge Herb]s, 43 [Alizarin Herb]s and 30 [Bug Leg]s.\"";
+ mes "\"If I don't get them soon enough, I will fail my exam...\"";
+ close;
+
+L_NE:
+ mes "[Rossy]";
+ mes "\"Please bring me 24 [Cactus Drink]s, 32 [Maggot Slime]s, 50 [Gamboge Herb]s, 43 [Alizarin Herb]s and 30 [Bug Leg]s.\"";
+ mes "\"It seems you miss some of the ingredients I've asked you. Please hurry!\"";
+ close;
+
+L_Check2:
+ if(countitem("CactusDrink") < 24) goto L_NE;
+ if(countitem("MaggotSlime") < 32) goto L_NE;
+ if(countitem("GambogeHerb") < 50) goto L_NE;
+ if(countitem("AlizarinHerb") < 43) goto L_NE;
+ if(countitem("BugLeg") < 30) goto L_NE;
+ mes "[Rossy]";
+ set Rossy_Quest, 7;
+ mes "\"Oh, thanks you "+ strcharinfo(0) +" so much! If you don't mind, please bring this potion to my teacher and don't lose it!\"";
+ delitem "CactusDrink", 24;
+ delitem "MaggotSlime", 32;
+ delitem "GambogeHerb", 50;
+ delitem "AlizarinHerb", 43;
+ delitem "BugLeg", 30;
+ getexp 3000, 0;
+ next;
+ mes "\"His name is David, he is a magician and lives near magic school in Tulimshar.\"";
+ mes "\"Please, give it to him!\"";
+ close;
+
+L_BT:
+ mes "[Rossy]";
+ mes "\"Great. Now you just should bring it to my teacher. His name is David, he is my magic teacher and lives near the magic school in the north of Tulimshar.\"";
+ mes "\"You should take the ferry, that will be faster.\"";
+ close;
+
+L_Donet:
+ mes "[Rossy]";
+ mes "\"Cool, I've passed my exam! Hurray! You might want to talk to my mother now.\"";
+ if (Rossy_Quest == 10 && countitem("redrose") >= 15) goto L_RG;
+ close;
+
+L_RG:
+ menu
+ "Your mother asked me to bring you these flowers because you succesfully passed your exam.", -;
+ mes "[Rossy]";
+ set Rossy_Quest, 11;
+ mes "\"Let me see...\"";
+ next;
+ mes "*Rossy takes the flowers from your hands and suddenly throws them on the ground. She begins sneezing.*";
+ delitem "redrose", 15;
+ menu
+ "I presume that you don't like roses, right?", -;
+ mes "[Rossy]";
+ mes "\"I am allergic to roses, my mother should already know that!\"";
+ close;
+
+L_Allergic:
+ mes "*Girl sneezes a lot*";
+ if (Rossy_Quest == 12 && countitem("redtulip") >= 15) goto L_Sorry;
+ close;
+
+L_Sorry:
+ menu
+ "Your mother is sorry about the roses. Here are some beautiful red tulips instead.", L_See;
+
+L_See:
+ mes "[Rossy]";
+ set Rossy_Quest, 13;
+ delitem "redtulip", 15;
+ mes "\"How nice, thank you "+ strcharinfo(0) +"! Go and tell my mother that she is the nicest mother in the world. Then come back and see me afterwards.\"";
+ getexp 2500, 0;
+ close;
+
+L_Best:
+ mes "[Rossy]";
+ set Rossy_Quest, 14;
+ mes "\"Thank you "+ strcharinfo(0) +", you helped me so much! I now need to find my sister before my mum gets worried...\"";
+ next;
+ mes "\"Please find her.\"";
+ next;
+ mes "\"I saw my twin, Julia! She was forced to enter a cave not far from here. I heard her scream. Please save her!\"";
+ close;
+
+L_Julia:
+ mes "[Rossy]";
+ mes "\"I saw my twin, Julia! She was forced to enter a cave not far from here. I heard her scream. Please go and save her now!\"";
+ close;
+
+L_End:
+ mes "[Rossy]";
+ mes "\"I saw my twin, Julia! She was forced to enter a cave not far from here. I heard her scream. Did you saved her yet?\"";
+ menu
+ "She'll be back soon, trust me, I saved her.", L_Found,
+ "I didn't saw her yet, sorry.", L_No;
+
+L_Found:
+ mes "[Rossy]";
+ if (Rossy_Quest == 17) set Rossy_Quest, 18;
+ if (Rossy_Quest == 18) set Rossy_Quest, 19;
+ mes "\"Thank you "+ strcharinfo(0) +", thank you! Here is a reward for you.\"";
+ getexp 5000, 0;
+ set zeny, zeny + 5000;
+ if (Rossy_Quest == 19) goto L_Clear;
+ close;
+
+L_Clear:
+ set Rossy_Quest, 0;
+ set cavefights, 0;
+ set FLAGS, FLAGS | FLAG_ROSSI_COMPLETED;
+ close;
+
+
+L_FinalEnd:
+ mes "[Rossy]";
+ mes "\"Julia and I are playing hide and seek right now, it is funny in the forest!\"";
+ mes "*The young girl laughs quietly.*";
+ close;
+
+}
diff --git a/npc/025-3/_import.txt b/npc/025-3/_import.txt
new file mode 100644
index 00000000..285e674e
--- /dev/null
+++ b/npc/025-3/_import.txt
@@ -0,0 +1,6 @@
+// Map 025-3:
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 025-3.gat
+npc: npc/025-3/_mobs.txt
+npc: npc/025-3/_warps.txt
+npc: npc/025-3/barriers.txt
diff --git a/npc/025-3/_mobs.txt b/npc/025-3/_mobs.txt
new file mode 100644
index 00000000..9ce0508c
--- /dev/null
+++ b/npc/025-3/_mobs.txt
@@ -0,0 +1,32 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// mobs
+
+025-3.gat,0,0,0,0 monster CaveMaggot 1056,100,0,100,Mob025-3::On1056
+025-3.gat,0,0,0,0 monster Archant 1060,20,0,100,Mob025-3::On1060
+025-3.gat,0,0,0,0 monster AngryScorpion 1057,25,0,0,Mob025-3::On1057
+025-3.gat,67,153,4,2 monster Skeleton 1043,1,0,30000,Mob025-3::On1043
+
+
+025-3.gat,0,0,0 script Mob025-3 -1,{
+On1043:
+ set @mobID, 1043;
+ callfunc "MobPoints";
+ break;
+
+On1056:
+ set @mobID, 1056;
+ callfunc "MobPoints";
+ break;
+
+On1057:
+ set @mobID, 1057;
+ callfunc "MobPoints";
+ break;
+
+On1060:
+ set @mobID, 1060;
+ callfunc "MobPoints";
+ break;
+
+ end;
+}
diff --git a/npc/025-3/_warps.txt b/npc/025-3/_warps.txt
new file mode 100644
index 00000000..c64903e0
--- /dev/null
+++ b/npc/025-3/_warps.txt
@@ -0,0 +1,5 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// warps
+
+025-3.gat,112,98 warp ToOutside 1,-1,025-1.gat,42,81
+025-3.gat,105,86 warp ToHelper -1,-1,025-4.gat,28,36
diff --git a/npc/025-3/barriers.txt b/npc/025-3/barriers.txt
new file mode 100644
index 00000000..cb69aac3
--- /dev/null
+++ b/npc/025-3/barriers.txt
@@ -0,0 +1,930 @@
+// -----------------------------------Warp to Cave 1 ---------------------------------------
+
+025-3.gat,78,127,0 script #WarpBattleCave1 127,1,1,{
+
+ if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_AlreadyHelped;
+// Check if someone is already inside. Change the x1, y1, x2, y2 values according to the place the player will be warped
+ if (getareausers("025-4.gat", 26, 63, 60, 97) >= 1) goto L_SomeoneInside;
+// Check if you already done this fight
+ if (cavefights & BATTLE_CAVE1) goto L_AlreadyDone;
+ if (Rossy_Quest < 15) goto L_Block;
+
+L_StartFight:
+ set $@battlecave1, 1;
+ warp "025-4.gat", 41, 95;
+ set $@cave1fighter$, strcharinfo(0);
+ set $@cave1fighterdeaths, PC_DIE_COUNTER;
+ startnpctimer;
+ set $@cave1start, gettimetick(2);
+ message strcharinfo(0), "As you enter, you feel evil forces filling up this cave.";
+ end;
+
+L_SomeoneInside:
+ message strcharinfo(0), $@cave1fighter$ + " is already inside.";
+ end;
+
+L_AlreadyDone:
+ message strcharinfo(0), "I already defeated the monsters in this cave.";
+ end;
+
+L_AlreadyHelped:
+ if (@juliadone1 == 1) end;
+ message strcharinfo(0), "There are nothing more than dead monster corpses in this cave.";
+ set @juliadone1, 1;
+ end;
+
+L_Block:
+ message strcharinfo(0), "I should maybe learn a bit more about this place before I go inside.";
+ end;
+
+OnTimer5000:
+ if ($@battlecave1 == 0) goto L_AlreadyClean;
+ if (isloggedin(getcharid(3,$@cave1fighter$))==0) goto L_CleaningNorid;
+ attachrid(getcharid(3,$@cave1fighter$));
+ if (gettimetick(2) - $@cave1start >= $@CAVE1_TIME) goto L_Cleaning;
+ if (PC_DIE_COUNTER > $@cave1fighterdeaths) goto L_CleaningDead;
+ setnpctimer 0;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave1fighter$));
+ warp "025-3.gat", 78, 129;
+ message strcharinfo(0), "You took too much time to free this cave from evil forces.";
+ set $@wave_cave1, 0;
+ set $@cave1_kills, 0;
+ set $@cave1start, 0;
+ set $@cave1fighter$, "";
+ set $@cave1fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight1::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningDead:
+ attachrid(getcharid(3,$@cave1fighter$));
+ warp "025-3.gat", 78, 129;
+ message strcharinfo(0), "You were surrounded by monsters and got eaten alive.";
+ set $@wave_cave1, 0;
+ set $@cave1_kills, 0;
+ set $@cave1start, 0;
+ set $@cave1fighter$, "";
+ set $@cave1fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight1::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningNorid:
+ set $@wave_cave1, 0;
+ set $@cave1_kills, 0;
+ set $@cave1start, 0;
+ set $@cave1fighter$, "";
+ set $@cave1fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight1::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_AlreadyClean:
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+}
+
+// ---------------------------- Warp to Cave 2 ----------------------------
+
+025-3.gat,53,107,0 script #WarpBattleCave2 127,1,1,{
+
+ if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_AlreadyHelped;
+// Check if someone is already inside. Change the x1, y1, x2, y2 values according to the place the player will be warped
+ if (getareausers("025-4.gat", 97, 62, 126, 96) >= 1) goto L_SomeoneInside;
+// Check if you already done this fight
+ if (cavefights & BATTLE_CAVE2) goto L_AlreadyDone;
+ if (Rossy_Quest < 15) goto L_Block;
+
+L_StartFight:
+ set $@battlecave2, 1;
+ warp "025-4.gat", 110, 94;
+ set $@cave2fighter$, strcharinfo(0);
+ set $@cave2fighterdeaths, PC_DIE_COUNTER;
+ startnpctimer;
+ set $@cave2start, gettimetick(2);
+ message strcharinfo(0), "As you enter, you feel evil forces filling up this cave.";
+ end;
+
+L_SomeoneInside:
+ message strcharinfo(0), $@cave2fighter$ + " is already inside.";
+ end;
+
+L_AlreadyDone:
+ message strcharinfo(0), "I already defeated the monsters in this cave.";
+ end;
+
+L_AlreadyHelped:
+ if (@juliadone2 == 1) end;
+ message strcharinfo(0), "There are nothing more than dead monster corpses in this cave.";
+ set @juliadone2, 1;
+ end;
+
+L_Block:
+ message strcharinfo(0), "I should maybe learn a bit more about this place before I go inside.";
+ end;
+
+OnTimer5000:
+ if ($@battlecave2 == 0) goto L_AlreadyClean;
+ if (isloggedin(getcharid(3,$@cave2fighter$))==0) goto L_CleaningNorid;
+ attachrid(getcharid(3,$@cave2fighter$));
+ if (gettimetick(2) - $@cave2start >= $@CAVE2_TIME) goto L_Cleaning;
+ if (PC_DIE_COUNTER > $@cave2fighterdeaths) goto L_CleaningDead;
+ setnpctimer 0;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave2fighter$));
+ warp "025-3.gat", 53, 109;
+ message strcharinfo(0), "You took too much time to free this cave from evil forces.";
+ set $@wave_cave2, 0;
+ set $@cave2_kills, 0;
+ set $@cave2start, 0;
+ set $@cave2fighter$, "";
+ set $@cave2fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight2::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningDead:
+ attachrid(getcharid(3,$@cave2fighter$));
+ warp "025-3.gat", 53, 109;
+ message strcharinfo(0), "You were surrounded by monsters and got eaten alive.";
+ set $@wave_cave2, 0;
+ set $@cave2_kills, 0;
+ set $@cave2start, 0;
+ set $@cave2fighter$, "";
+ set $@cave2fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight2::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningNorid:
+ set $@wave_cave2, 0;
+ set $@cave2_kills, 0;
+ set $@cave2start, 0;
+ set $@cave2fighter$, "";
+ set $@cave2fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight2::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_AlreadyClean:
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+}
+
+// --------------------------------- Warp to Cave 3 ----------------------------------------
+
+025-3.gat,71,83,0 script #WarpBattleCave3 127,1,1,{
+
+ if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_AlreadyHelped;
+// Check if someone is already inside. Change the x1, y1, x2, y2 values according to the place the player will be warped
+ if (getareausers("025-4.gat", 150, 84, 177, 117) >= 1) goto L_SomeoneInside;
+// Check if you already done this fight
+ if (cavefights & BATTLE_CAVE3) goto L_AlreadyDone;
+ if (Rossy_Quest < 15) goto L_Block;
+
+L_StartFight:
+ set $@battlecave3, 1;
+ warp "025-4.gat", 168, 115;
+ set $@cave3fighter$, strcharinfo(0);
+ set $@cave3fighterdeaths, PC_DIE_COUNTER;
+ startnpctimer;
+ set $@cave3start, gettimetick(2);
+ message strcharinfo(0), "As you enter, you feel evil forces filling up this cave.";
+ end;
+
+L_SomeoneInside:
+ message strcharinfo(0), $@cave3fighter$ + " is already inside.";
+ end;
+
+L_AlreadyDone:
+ message strcharinfo(0), "I already defeated the monsters in this cave.";
+ end;
+
+L_AlreadyHelped:
+ if (@juliadone3 == 1) end;
+ message strcharinfo(0), "There are nothing more than dead monster corpses in this cave.";
+ set @juliadone3, 1;
+ end;
+
+L_Block:
+ message strcharinfo(0), "I should maybe learn a bit more about this place before I go inside.";
+ end;
+
+OnTimer5000:
+ if ($@battlecave3 == 0) goto L_AlreadyClean;
+ if (isloggedin(getcharid(3,$@cave3fighter$))==0) goto L_CleaningNorid;
+ attachrid(getcharid(3,$@cave3fighter$));
+ if (gettimetick(2) - $@cave3start >= $@CAVE3_TIME) goto L_Cleaning;
+ if (PC_DIE_COUNTER > $@cave3fighterdeaths) goto L_CleaningDead;
+ setnpctimer 0;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave3fighter$));
+ warp "025-3.gat", 71, 85;
+ message strcharinfo(0), "You took too much time to free this cave from evil forces.";
+ set $@wave_cave3, 0;
+ set $@cave3_kills, 0;
+ set $@cave3start, 0;
+ set $@cave3fighter$, "";
+ set $@cave3fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight3::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningDead:
+ attachrid(getcharid(3,$@cave3fighter$));
+ warp "025-3.gat", 71, 85;
+ message strcharinfo(0), "You were surrounded by monsters and got eaten alive.";
+ set $@wave_cave3, 0;
+ set $@cave3_kills, 0;
+ set $@cave3start, 0;
+ set $@cave3fighter$, "";
+ set $@cave3fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight3::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningNorid:
+ set $@wave_cave3, 0;
+ set $@cave3_kills, 0;
+ set $@cave3start, 0;
+ set $@cave3fighter$, "";
+ set $@cave3fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight3::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_AlreadyClean:
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+}
+
+// --------------------------- Warp to Cave 4 --------------------------------------
+
+025-3.gat,80,83,0 script #WarpBattleCave4 127,1,1,{
+
+ if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_AlreadyHelped;
+// Check if someone is already inside. Change the x1, y1, x2, y2 values according to the place the player will be warped
+ if (getareausers("025-4.gat", 28, 124, 57, 156) >= 1) goto L_SomeoneInside;
+// Check if you already done this fight
+ if (cavefights & BATTLE_CAVE4) goto L_AlreadyDone;
+ if (Rossy_Quest < 15) goto L_Block;
+
+L_StartFight:
+ set $@battlecave4, 1;
+ warp "025-4.gat", 32, 154;
+ set $@cave4fighter$, strcharinfo(0);
+ set $@cave4fighterdeaths, PC_DIE_COUNTER;
+ startnpctimer;
+ set $@cave4start, gettimetick(2);
+ message strcharinfo(0), "As you enter, you feel evil forces filling up this cave.";
+ end;
+
+L_SomeoneInside:
+ message strcharinfo(0), $@cave4fighter$ + " is already inside.";
+ end;
+
+L_AlreadyDone:
+ message strcharinfo(0), "I already defeated the monsters in this cave.";
+ end;
+
+L_AlreadyHelped:
+ if (@juliadone4 == 1) end;
+ message strcharinfo(0), "There are nothing more than dead monster corpses in this cave.";
+ set @juliadone4, 1;
+ end;
+
+L_Block:
+ message strcharinfo(0), "I should maybe learn a bit more about this place before I go inside.";
+ end;
+
+OnTimer5000:
+ if ($@battlecave4 == 0) goto L_AlreadyClean;
+ if (isloggedin(getcharid(3,$@cave4fighter$))==0) goto L_CleaningNorid;
+ attachrid(getcharid(3,$@cave4fighter$));
+ if (gettimetick(2) - $@cave4start >= $@CAVE4_TIME) goto L_Cleaning;
+ if (PC_DIE_COUNTER > $@cave4fighterdeaths) goto L_CleaningDead;
+ setnpctimer 0;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave4fighter$));
+ warp "025-3.gat", 80, 85;
+ message strcharinfo(0), "You took too much time to free this cave from evil forces.";
+ set $@wave_cave4, 0;
+ set $@cave4_kills, 0;
+ set $@cave4start, 0;
+ set $@cave4fighter$, "";
+ set $@cave4fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight4::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningDead:
+ attachrid(getcharid(3,$@cave4fighter$));
+ warp "025-3.gat", 80, 85;
+ message strcharinfo(0), "You were surrounded by monsters and got eaten alive.";
+ set $@wave_cave4, 0;
+ set $@cave4_kills, 0;
+ set $@cave4start, 0;
+ set $@cave4fighter$, "";
+ set $@cave4fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight4::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningNorid:
+ set $@wave_cave4, 0;
+ set $@cave4_kills, 0;
+ set $@cave4start, 0;
+ set $@cave4fighter$, "";
+ set $@cave4fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight4::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_AlreadyClean:
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+}
+
+// --------------------------- Warp to Cave 5 ----------------------------------------
+
+025-3.gat,71,30,0 script #WarpBattleCave5 127,1,1,{
+
+ if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_AlreadyHelped;
+// Check if someone is already inside. Change the x1, y1, x2, y2 values according to the place the player will be warped
+ if (getareausers("025-4.gat", 91, 131, 124, 160) >= 1) goto L_SomeoneInside;
+// Check if you already done this fight
+ if (cavefights & BATTLE_CAVE5) goto L_AlreadyDone;
+ if (Rossy_Quest < 15) goto L_Block;
+
+L_StartFight:
+ set $@battlecave5, 1;
+ warp "025-4.gat", 100, 158;
+ set $@cave5fighter$, strcharinfo(0);
+ set $@cave5fighterdeaths, PC_DIE_COUNTER;
+ startnpctimer;
+ set $@cave5start, gettimetick(2);
+ message strcharinfo(0), "As you enter, you feel evil forces filling up this cave.";
+ end;
+
+L_SomeoneInside:
+ message strcharinfo(0), $@cave5fighter$ + " is already inside.";
+ end;
+
+L_AlreadyDone:
+ message strcharinfo(0), "I already defeated the monsters in this cave.";
+ end;
+
+L_AlreadyHelped:
+ if (@juliadone5 == 1) end;
+ message strcharinfo(0), "There are nothing more than dead monster corpses in this cave.";
+ set @juliadone5, 1;
+ end;
+
+L_Block:
+ message strcharinfo(0), "I should maybe learn a bit more about this place before I go inside.";
+ end;
+
+OnTimer5000:
+ if ($@battlecave5 == 0) goto L_AlreadyClean;
+ if (isloggedin(getcharid(3,$@cave5fighter$))==0) goto L_CleaningNorid;
+ attachrid(getcharid(3,$@cave5fighter$));
+ if (gettimetick(2) - $@cave5start >= $@CAVE5_TIME) goto L_Cleaning;
+ if (PC_DIE_COUNTER > $@cave5fighterdeaths) goto L_CleaningDead;
+ setnpctimer 0;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave5fighter$));
+ warp "025-3.gat", 71, 32;
+ message strcharinfo(0), "You took too much time to free this cave from evil forces.";
+ set $@wave_cave5, 0;
+ set $@cave5_kills, 0;
+ set $@cave5start, 0;
+ set $@cave5fighter$, "";
+ set $@cave5fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight5::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningDead:
+ attachrid(getcharid(3,$@cave5fighter$));
+ warp "025-3.gat", 71, 32;
+ message strcharinfo(0), "You were surrounded by monsters and got eaten alive.";
+ set $@wave_cave5, 0;
+ set $@cave5_kills, 0;
+ set $@cave5start, 0;
+ set $@cave5fighter$, "";
+ set $@cave5fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight5::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningNorid:
+ set $@wave_cave5, 0;
+ set $@cave5_kills, 0;
+ set $@cave5start, 0;
+ set $@cave5fighter$, "";
+ set $@cave5fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight5::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_AlreadyClean:
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+}
+
+// -------------------------------- Warp to Cave 6 -----------------------------------------
+
+025-3.gat,128,35,0 script #WarpBattleCave6 127,1,1,{
+
+ if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_AlreadyHelped;
+// Check if someone is already inside. Change the x1, y1, x2, y2 values according to the place the player will be warped
+ if (getareausers("025-4.gat", 153, 143, 178, 174) >= 1) goto L_SomeoneInside;
+// Check if you already done this fight
+ if (cavefights & BATTLE_CAVE6) goto L_AlreadyDone;
+ if (Rossy_Quest < 15) goto L_Block;
+
+L_StartFight:
+ set $@battlecave6, 1;
+ warp "025-4.gat", 159, 172;
+ set $@cave6fighter$, strcharinfo(0);
+ set $@cave6fighterdeaths, PC_DIE_COUNTER;
+ startnpctimer;
+ set $@cave6start, gettimetick(2);
+ message strcharinfo(0), "As you enter, you feel evil forces filling up this cave.";
+ end;
+
+L_SomeoneInside:
+ message strcharinfo(0), $@cave6fighter$ + " is already inside.";
+ end;
+
+L_AlreadyDone:
+ message strcharinfo(0), "I already defeated the monsters in this cave.";
+ end;
+
+L_AlreadyHelped:
+ if (@juliadone6 == 1) end;
+ message strcharinfo(0), "There are nothing more than dead monster corpses in this cave.";
+ set @juliadone6, 1;
+ end;
+
+L_Block:
+ message strcharinfo(0), "I should maybe learn a bit more about this place before I go inside.";
+ end;
+
+OnTimer5000:
+ if ($@battlecave6 == 0) goto L_AlreadyClean;
+ if (isloggedin(getcharid(3,$@cave6fighter$))==0) goto L_CleaningNorid;
+ attachrid(getcharid(3,$@cave6fighter$));
+ if (gettimetick(2) - $@cave6start >= $@CAVE6_TIME) goto L_Cleaning;
+ if (PC_DIE_COUNTER > $@cave6fighterdeaths) goto L_CleaningDead;
+ setnpctimer 0;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave6fighter$));
+ warp "025-3.gat", 128, 37;
+ message strcharinfo(0), "You took too much time to free this cave from evil forces.";
+ set $@wave_cave6, 0;
+ set $@cave6_kills, 0;
+ set $@cave6start, 0;
+ set $@cave6fighter$, "";
+ set $@cave6fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight6::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningDead:
+ attachrid(getcharid(3,$@cave6fighter$));
+ warp "025-3.gat", 128, 37;
+ message strcharinfo(0), "You were surrounded by monsters and got eaten alive.";
+ set $@wave_cave6, 0;
+ set $@cave6_kills, 0;
+ set $@cave6start, 0;
+ set $@cave6fighter$, "";
+ set $@cave6fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight6::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningNorid:
+ set $@wave_cave6, 0;
+ set $@cave6_kills, 0;
+ set $@cave6start, 0;
+ set $@cave6fighter$, "";
+ set $@cave6fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight6::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_AlreadyClean:
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+}
+
+// ---------------------------- Warp to Cave 7 ------------------------------------------
+
+025-3.gat,70,57,0 script #WarpBattleCave7 127,1,1,{
+
+ if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_AlreadyHelped;
+// Check if someone is already inside. Change the x1, y1, x2, y2 values according to the place the player will be warped
+ if (getareausers("025-4.gat", 27, 185, 61, 219) >= 1) goto L_SomeoneInside;
+// Check if you already done this fight
+ if (cavefights & BATTLE_CAVE7) goto L_AlreadyDone;
+ if (Rossy_Quest < 15) goto L_Block;
+
+L_StartFight:
+ set $@battlecave7, 1;
+ warp "025-4.gat", 42, 217;
+ set $@cave7fighter$, strcharinfo(0);
+ set $@cave7fighterdeaths, PC_DIE_COUNTER;
+ startnpctimer;
+ set $@cave7start, gettimetick(2);
+ message strcharinfo(0), "As you enter, you feel evil forces filling up this cave.";
+ end;
+
+L_SomeoneInside:
+ message strcharinfo(0), $@cave7fighter$ + " is already inside.";
+ end;
+
+L_AlreadyDone:
+ message strcharinfo(0), "I already defeated the monsters in this cave.";
+ end;
+
+L_AlreadyHelped:
+ if (@juliadone7 == 1) end;
+ message strcharinfo(0), "There are nothing more than dead monster corpses in this cave.";
+ set @juliadone7, 1;
+ end;
+
+L_Block:
+ message strcharinfo(0), "I should maybe learn a bit more about this place before I go inside.";
+ end;
+
+OnTimer5000:
+ if ($@battlecave7 == 0) goto L_AlreadyClean;
+ if (isloggedin(getcharid(3,$@cave7fighter$))==0) goto L_CleaningNorid;
+ attachrid(getcharid(3,$@cave7fighter$));
+ if (gettimetick(2) - $@cave7start >= $@CAVE7_TIME) goto L_Cleaning;
+ if (PC_DIE_COUNTER > $@cave7fighterdeaths) goto L_CleaningDead;
+ setnpctimer 0;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave7fighter$));
+ warp "025-3.gat", 70, 59;
+ message strcharinfo(0), "You took too much time to free this cave from evil forces.";
+ set $@wave_cave7, 0;
+ set $@cave7_kills, 0;
+ set $@cave7start, 0;
+ set $@cave7fighter$, "";
+ set $@cave7fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight7::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningDead:
+ attachrid(getcharid(3,$@cave7fighter$));
+ warp "025-3.gat", 70, 59;
+ message strcharinfo(0), "You were surrounded by monsters and got eaten alive.";
+ set $@wave_cave7, 0;
+ set $@cave7_kills, 0;
+ set $@cave7start, 0;
+ set $@cave7fighter$, "";
+ set $@cave7fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight7::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningNorid:
+ set $@wave_cave7, 0;
+ set $@cave7_kills, 0;
+ set $@cave7start, 0;
+ set $@cave7fighter$, "";
+ set $@cave7fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight7::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_AlreadyClean:
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+}
+
+// -----------------------------------------------Warp to Cave 8-------------------------------------------------------------
+
+025-3.gat,138,92,0 script #WarpBattleCave8 127,1,1,{
+
+ if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_AlreadyHelped;
+// Check if someone is already inside. Change the x1, y1, x2, y2 values according to the place the player will be warped
+ if (getareausers("025-4.gat", 90, 193, 119, 216) >= 1) goto L_SomeoneInside;
+// Check if you already done this fight
+ if (cavefights & BATTLE_CAVE8) goto L_AlreadyDone;
+ if (Rossy_Quest < 15) goto L_Block;
+
+L_StartFight:
+ set $@battlecave8, 1;
+ warp "025-4.gat", 105, 214;
+ set $@cave8fighter$, strcharinfo(0);
+ set $@cave8fighterdeaths, PC_DIE_COUNTER;
+ startnpctimer;
+ set $@cave8start, gettimetick(2);
+ message strcharinfo(0), "As you enter, you feel evil forces filling up this cave.";
+ end;
+
+L_SomeoneInside:
+ message strcharinfo(0), $@cave8fighter$ + " is already inside.";
+ end;
+
+L_AlreadyDone:
+ message strcharinfo(0), "I already defeated the monsters in this cave.";
+ end;
+
+L_AlreadyHelped:
+ if (@juliadone8 == 1) end;
+ message strcharinfo(0), "There are nothing more than dead monster corpses in this cave.";
+ set @juliadone8, 1;
+ end;
+
+L_Block:
+ message strcharinfo(0), "I should maybe learn a bit more about this place before I go inside.";
+ end;
+
+OnTimer5000:
+ if ($@battlecave8 == 0) goto L_AlreadyClean;
+ if (isloggedin(getcharid(3,$@cave8fighter$))==0) goto L_CleaningNorid;
+ attachrid(getcharid(3,$@cave8fighter$));
+ if (gettimetick(2) - $@cave8start >= $@CAVE8_TIME) goto L_Cleaning;
+ if (PC_DIE_COUNTER > $@cave8fighterdeaths) goto L_CleaningDead;
+ setnpctimer 0;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave8fighter$));
+ warp "025-3.gat", 138, 94;
+ message strcharinfo(0), "You took too much time to free this cave from evil forces.";
+ set $@wave_cave8, 0;
+ set $@cave8_kills, 0;
+ set $@cave8start, 0;
+ set $@cave8fighter$, "";
+ set $@cave8fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight8::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningDead:
+ attachrid(getcharid(3,$@cave8fighter$));
+ warp "025-3.gat", 138, 94;
+ message strcharinfo(0), "You were surrounded by monsters and got eaten alive.";
+ set $@wave_cave8, 0;
+ set $@cave8_kills, 0;
+ set $@cave8start, 0;
+ set $@cave8fighter$, "";
+ set $@cave8fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight8::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningNorid:
+ set $@wave_cave8, 0;
+ set $@cave8_kills, 0;
+ set $@cave8start, 0;
+ set $@cave8fighter$, "";
+ set $@cave8fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight8::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_AlreadyClean:
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+}
+
+// ------------------------------ Warp to Cave 9 ----------------------------------------
+
+025-3.gat,138,160,0 script #WarpBattleCave9 127,1,1,{
+
+ if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_AlreadyHelped;
+// Check if someone is already inside. Change the x1, y1, x2, y2 values according to the place the player will be warped
+ if (getareausers("025-4.gat", 144, 192, 173, 226) >= 1) goto L_SomeoneInside;
+// Check if you already done this fight
+ if (cavefights & BATTLE_CAVE9) goto L_AlreadyDone;
+ if (Rossy_Quest < 15) goto L_Block;
+
+L_StartFight:
+ set $@battlecave9, 1;
+ warp "025-4.gat", 157, 224;
+ set $@cave9fighter$, strcharinfo(0);
+ set $@cave9fighterdeaths, PC_DIE_COUNTER;
+ startnpctimer;
+ set $@cave9start, gettimetick(2);
+ message strcharinfo(0), "As you enter, you feel evil forces filling up this cave.";
+ end;
+
+L_SomeoneInside:
+ message strcharinfo(0), $@cave9fighter$ + " is already inside.";
+ end;
+
+L_AlreadyDone:
+ message strcharinfo(0), "I already defeated the monsters in this cave.";
+ end;
+
+L_AlreadyHelped:
+ if (@juliadone9 == 1) end;
+ message strcharinfo(0), "There are nothing more than dead monster corpses in this cave.";
+ set @juliadone9, 1;
+ end;
+
+L_Block:
+ message strcharinfo(0), "I should maybe learn a bit more about this place before I go inside.";
+ end;
+
+OnTimer5000:
+ if ($@battlecave9 == 0) goto L_AlreadyClean;
+ if (isloggedin(getcharid(3,$@cave9fighter$))==0) goto L_CleaningNorid;
+ attachrid(getcharid(3,$@cave9fighter$));
+ if (gettimetick(2) - $@cave9start >= $@CAVE9_TIME) goto L_Cleaning;
+ if (PC_DIE_COUNTER > $@cave9fighterdeaths) goto L_CleaningDead;
+ setnpctimer 0;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave9fighter$));
+ warp "025-3.gat", 138, 158;
+ message strcharinfo(0), "You took too much time to free this cave from evil forces.";
+ set $@wave_cave9, 0;
+ set $@cave9_kills, 0;
+ set $@cave9start, 0;
+ set $@cave9fighter$, "";
+ set $@cave9fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight9::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningDead:
+ attachrid(getcharid(3,$@cave9fighter$));
+ warp "025-3.gat", 138, 158;
+ message strcharinfo(0), "You were surrounded by monsters and got eaten alive.";
+ set $@wave_cave9, 0;
+ set $@cave9_kills, 0;
+ set $@cave9start, 0;
+ set $@cave9fighter$, "";
+ set $@cave9fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight9::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningNorid:
+ set $@wave_cave9, 0;
+ set $@cave9_kills, 0;
+ set $@cave9start, 0;
+ set $@cave9fighter$, "";
+ set $@cave9fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartCaveFight9::OnMonsterDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_AlreadyClean:
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+}
+
+// ----------------------------- Warp to Boss Cave -------------------------------
+
+025-3.gat,77,170,0 script #WarpBossCave 127,1,1,{
+
+ if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_AlreadyHelped;
+//Check if someone is already inside. Change the x1, y1, x2, y2 values according to the place the player will be warped
+ if (getareausers("025-4.gat", 142, 24, 172, 48) >= 1) goto L_SomeoneInside;
+//Check if you can enter this cave
+ if (cavefights & BATTLE_CAVE1 && cavefights & BATTLE_CAVE2 && cavefights & BATTLE_CAVE3 && cavefights & BATTLE_CAVE4 && cavefights & BATTLE_CAVE5 && cavefights & BATTLE_CAVE6 && cavefights & BATTLE_CAVE7 && cavefights & BATTLE_CAVE8 && cavefights & BATTLE_CAVE9) goto L_StartFight;
+
+ message strcharinfo(0), "It feels like something terrible is lurking inside this cave... But don't have enough of a particular force to enter, you are too frightened.";
+ end;
+
+L_StartFight:
+ message strcharinfo(0), "You hear screams, they seem to be very close from where you stand.";
+ set $@battlebosscave, 1;
+ warp "025-4.gat", 157, 46;
+ set $@cave10fighter$, strcharinfo(0);
+ set $@cave10fighterdeaths, PC_DIE_COUNTER;
+ startnpctimer;
+ set $@cave10start, gettimetick(2);
+ end;
+
+L_SomeoneInside:
+ message strcharinfo(0), $@cave10fighter$ + " is already inside.";
+ end;
+
+L_AlreadyHelped:
+ if (@juliadone10 == 1) end;
+ message strcharinfo(0), "There are nothing more than dead monster corpses in this cave.";
+ set @juliadone10, 1;
+ end;
+
+OnTimer5000:
+ if ($@battlebosscave == 0) goto L_AlreadyClean;
+ if (isloggedin(getcharid(3,$@cave10fighter$))==0) goto L_CleaningNorid;
+ attachrid(getcharid(3,$@cave10fighter$));
+ if (gettimetick(2) - $@cave10start >= $@CAVE10_TIME) goto L_Cleaning;
+ if (PC_DIE_COUNTER > $@cave10fighterdeaths) goto L_CleaningDead;
+ if ($@wave_cave10 == 5) goto L_SummonBoss;
+ setnpctimer 0;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave10fighter$));
+ warp "025-3.gat", 77, 168;
+ message strcharinfo(0), "You took too much time to free this cave from evil forces.";
+ set $@wave_cave10, 0;
+ set $@cave10_kills, 0;
+ set $@cave10start, 0;
+ set $@cave10fighter$, "";
+ set $@cave10fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartBossCaveFight::OnMonsterDeath";
+ killmonster "025-4.gat", "#StartBossCaveFight::OnBossDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningDead:
+ attachrid(getcharid(3,$@cave10fighter$));
+ warp "025-3.gat", 77, 168;
+ if ($@wave_cave10 < 5) message strcharinfo(0), "You were surrounded by monsters and got eaten alive.";
+ if ($@wave_cave10 == 5) message strcharinfo(0), "This horrible monster is probably too powerful for you right now.";
+ set $@wave_cave10, 0;
+ set $@cave10_kills, 0;
+ set $@cave10start, 0;
+ set $@cave10fighter$, "";
+ set $@cave10fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartBossCaveFight::OnMonsterDeath";
+ killmonster "025-4.gat", "#StartBossCaveFight::OnBossDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleaningNorid:
+ set $@wave_cave10, 0;
+ set $@cave10_kills, 0;
+ set $@cave10start, 0;
+ set $@cave10fighter$, "";
+ set $@cave10fighterdeaths$, 0;
+ killmonster "025-4.gat", "#StartBossCaveFight::OnMonsterDeath";
+ killmonster "025-4.gat", "#StartBossCaveFight::OnBossDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_AlreadyClean:
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+}
+
diff --git a/npc/025-4/Battlecaves.txt b/npc/025-4/Battlecaves.txt
new file mode 100644
index 00000000..eb87011e
--- /dev/null
+++ b/npc/025-4/Battlecaves.txt
@@ -0,0 +1,852 @@
+// --------------------------------- Cave 1 -----------------------------------
+
+025-4.gat,41,91,0 script #StartCaveFight1 111,{
+ if (Rossy_Quest < 15) goto L_Cheat;
+ if ($@battlecave1 == 1) goto L_Summon;
+ end;
+
+L_Cheat:
+ message strcharinfo(0), "You shouldn't be here, you cheater.";
+ percentheal -100, 0;
+ end;
+
+L_Summon:
+ set $@cave1_loop, $@cave1_loop + 1;
+ areamonster "025-4.gat",26,63,60,97,"",$@CAVE1_MONSTERS_IDS[$@cave1_loop],$@CAVE1_MONSTERS_QTY[$@cave1_loop],"#StartCaveFight1::OnMonsterDeath";
+ if ($@cave1_loop <= getarraysize($@CAVE1_MONSTERS_IDS)) goto L_Summon;
+ set $@cave1_loop, 0;
+ set $@wave_cave1, $@wave_cave1 + 1;
+ end;
+
+L_Done:
+ set $@cave1_kills, 0;
+ attachrid(getcharid(3,$@cave1fighter$));
+
+// Here you can define the messages to be shown for the players on the beginning of each wave.
+// Remember to adjust the number of conditionals according to the number of waves.
+
+ if ($@wave_cave1 == 1) message strcharinfo(0), "Oh no, more monsters?!";
+ if ($@wave_cave1 == 2) message strcharinfo(0), "I can't give up now!";
+ if ($@wave_cave1 == 3) message strcharinfo(0), "As you killed all the monsters, you opened the chest. It was empty.";
+
+ if ($@wave_cave1 != $@CAVE1_WAVES) goto L_Summon;
+ set cavefights, (cavefights ^ BATTLE_CAVE1);
+ warp "025-3.gat", 78, 129;
+ goto L_Cleaning;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave1fighter$));
+ set $@wave_cave1, 0;
+ set $@cave1_kills, 0;
+ set $@cave1start, 0;
+ set $@cave1fighter$, "";
+ set $@cave1fighterdeaths$, 0;
+ set $@battlecave1, 0;
+ killmonster "025-4.gat", "#StartCaveFight1::OnMonsterDeath";
+ end;
+
+OnMonsterDeath:
+ set $@cave1_kills, $@cave1_kills + 1;
+ if ($@cave1_kills >= $@CAVE1_MONSTERS_QTY[1] + $@CAVE1_MONSTERS_QTY[2] + $@CAVE1_MONSTERS_QTY[3]) goto L_Done;
+ end;
+
+onInit:
+// Here you can define the specifics of each battle cave.
+// Monsters IDs to be spawned.
+ setarray $@CAVE1_MONSTERS_IDS[1], 1002, 1003, 1004;
+// Number of monsters of each ID.
+ setarray $@CAVE1_MONSTERS_QTY[1], 3, 2, 1;
+// Number of waves.
+ set $@CAVE1_WAVES, 3;
+// Maximum time (in seconds) for the player to finish the fight.
+ set $@CAVE1_TIME, 30;
+}
+
+// --------------------- Cave 1 Checker ----------------------------
+
+025-4.gat,41,97,0 script #CheckCaveFight1 127,1,1,{
+ if (cavefight & BATTLE_CAVE1) goto L_Done;
+ message strcharinfo(0), "Evil forces make you stop, you need to defeat them first before getting out.";
+ end;
+
+L_Done:
+ warp "025-3.gat", 78, 130;
+ end;
+}
+
+// --------------------------------- Cave 2 ---------------------------------------
+
+
+025-4.gat,110,90,0 script #StartCaveFight2 111,{
+ if (Rossy_Quest < 15) goto L_Cheat;
+ if ($@battlecave2 == 1) goto L_Summon;
+ end;
+
+L_Cheat:
+ message strcharinfo(0), "You shouldn't be here, you cheater.";
+ percentheal -100, 0;
+ end;
+
+L_Summon:
+ set $@cave2_loop, $@cave2_loop + 1;
+ areamonster "025-4.gat",97, 62, 126, 96,"",$@CAVE2_MONSTERS_IDS[$@cave2_loop],$@CAVE2_MONSTERS_QTY[$@cave2_loop],"#StartCaveFight2::OnMonsterDeath";
+ if ($@cave2_loop <= getarraysize($@CAVE2_MONSTERS_IDS)) goto L_Summon;
+ set $@cave2_loop, 0;
+ set $@wave_cave2, $@wave_cave2 + 1;
+ end;
+
+L_Done:
+ set $@cave2_kills, 0;
+ attachrid(getcharid(3,$@cave2fighter$));
+
+// Here you can define the messages to be shown for the players on the beginning of each wave.
+// Remember to adjust the number of conditionals according to the number of waves.
+
+ if ($@wave_cave2 == 1) message strcharinfo(0), "Oh no, more monsters?!";
+ if ($@wave_cave2 == 2) message strcharinfo(0), "I can't give up now!";
+ if ($@wave_cave2 == 3) message strcharinfo(0), "As you killed all the monsters, you opened the chest. It was empty.";
+
+ if ($@wave_cave2 != $@CAVE2_WAVES) goto L_Summon;
+ set cavefights, (cavefights ^ BATTLE_CAVE2);
+ warp "025-3.gat", 53, 109;
+ goto L_Cleaning;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave2fighter$));
+ set $@wave_cave2, 0;
+ set $@cave2_kills, 0;
+ set $@cave2start, 0;
+ set $@cave2fighter$, "";
+ set $@cave2fighterdeaths$, 0;
+ set $@battlecave2, 0;
+ killmonster "025-4.gat", "#StartCaveFight2::OnMonsterDeath";
+ end;
+
+OnMonsterDeath:
+ set $@cave2_kills, $@cave2_kills + 1;
+ if ($@cave2_kills >= $@CAVE2_MONSTERS_QTY[1] + $@CAVE2_MONSTERS_QTY[2] + $@CAVE2_MONSTERS_QTY[3]) goto L_Done;
+ end;
+
+onInit:
+// Here you can define the specifics of each battle cave.
+// Monsters IDs to be spawned.
+ setarray $@CAVE2_MONSTERS_IDS[1], 1002, 1003, 1004;
+// Number of monsters of each ID.
+ setarray $@CAVE2_MONSTERS_QTY[1], 5, 3, 2;
+// Number of waves.
+ set $@CAVE2_WAVES, 3;
+// Maximum time (in seconds) for the player to finish the fight.
+ set $@CAVE2_TIME, 30;
+}
+
+// --------------------- Cave 2 Checker ----------------------------
+
+025-4.gat,110,96,0 script #CheckCaveFight2 127,1,1,{
+ if (cavefight & BATTLE_CAVE2) goto L_Done;
+ message strcharinfo(0), "Evil forces make you stop, you need to defeat them first before getting out.";
+ end;
+
+L_Done:
+ warp "025-3.gat", 53, 110;
+ end;
+}
+
+// ------------------------------------ Cave 3 --------------------------------------
+025-4.gat,168,111,0 script #StartCaveFight3 111,{
+ if (Rossy_Quest < 15) goto L_Cheat;
+ if ($@battlecave3 == 1) goto L_Summon;
+ end;
+
+L_Cheat:
+ message strcharinfo(0), "You shouldn't be here, you cheater.";
+ percentheal -100, 0;
+ end;
+
+L_Summon:
+ set $@cave3_loop, $@cave3_loop + 1;
+ areamonster "025-4.gat",150, 84, 177, 117,"",$@CAVE3_MONSTERS_IDS[$@cave3_loop],$@CAVE3_MONSTERS_QTY[$@cave3_loop],"#StartCaveFight3::OnMonsterDeath";
+ if ($@cave3_loop <= getarraysize($@CAVE3_MONSTERS_IDS)) goto L_Summon;
+ set $@cave3_loop, 0;
+ set $@wave_cave3, $@wave_cave3 + 1;
+ end;
+
+L_Done:
+ set $@cave3_kills, 0;
+ attachrid(getcharid(3,$@cave3fighter$));
+
+// Here you can define the messages to be shown for the players on the beginning of each wave.
+// Remember to adjust the number of conditionals according to the number of waves.
+
+ if ($@wave_cave3 == 1) message strcharinfo(0), "Oh no, more monsters?!";
+ if ($@wave_cave3 == 2) message strcharinfo(0), "I can't give up now!";
+ if ($@wave_cave3 == 3) message strcharinfo(0), "As you killed all the monsters, you opened the chest. It was empty.";
+
+ if ($@wave_cave3 != $@CAVE3_WAVES) goto L_Summon;
+ set cavefights, (cavefights ^ BATTLE_CAVE3);
+ warp "025-3.gat", 71, 85;
+ goto L_Cleaning;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave3fighter$));
+ set $@wave_cave3, 0;
+ set $@cave3_kills, 0;
+ set $@cave3start, 0;
+ set $@cave3fighter$, "";
+ set $@cave3fighterdeaths$, 0;
+ set $@battlecave3, 0;
+ killmonster "025-4.gat", "#StartCaveFight3::OnMonsterDeath";
+ end;
+
+OnMonsterDeath:
+ set $@cave3_kills, $@cave3_kills + 1;
+ if ($@cave3_kills >= $@CAVE3_MONSTERS_QTY[1] + $@CAVE3_MONSTERS_QTY[2] + $@CAVE3_MONSTERS_QTY[3]) goto L_Done;
+ end;
+
+onInit:
+// Here you can define the specifics of each battle cave.
+// Monsters IDs to be spawned.
+ setarray $@CAVE3_MONSTERS_IDS[1], 1002, 1003, 1004;
+// Number of monsters of each ID.
+ setarray $@CAVE3_MONSTERS_QTY[1], 5, 3, 2;
+// Number of waves.
+ set $@CAVE3_WAVES, 3;
+// Maximum time (in seconds) for the player to finish the fight.
+ set $@CAVE3_TIME, 30;
+}
+
+// --------------------- Cave 3 Checker ----------------------------
+
+025-4.gat,168,117,0 script #CheckCaveFight3 127,1,1,{
+ if (cavefight & BATTLE_CAVE3) goto L_Done;
+ message strcharinfo(0), "Evil forces make you stop, you need to defeat them first before getting out.";
+ end;
+
+L_Done:
+ warp "025-3.gat", 71, 85;
+ end;
+}
+
+// --------------------------- Cave 4 --------------------------------
+025-4.gat,32,150,0 script #StartCaveFight4 111,{
+ if (Rossy_Quest < 15) goto L_Cheat;
+ if ($@battlecave4 == 1) goto L_Summon;
+ end;
+
+L_Cheat:
+ message strcharinfo(0), "You shouldn't be here, you cheater.";
+ percentheal -100, 0;
+ end;
+
+L_Summon:
+ set $@cave4_loop, $@cave4_loop + 1;
+ areamonster "025-4.gat",28, 124, 57, 156,"",$@CAVE4_MONSTERS_IDS[$@cave4_loop],$@CAVE4_MONSTERS_QTY[$@cave4_loop],"#StartCaveFight4::OnMonsterDeath";
+ if ($@cave4_loop <= getarraysize($@CAVE4_MONSTERS_IDS)) goto L_Summon;
+ set $@cave4_loop, 0;
+ set $@wave_cave4, $@wave_cave4 + 1;
+ end;
+
+L_Done:
+ set $@cave4_kills, 0;
+ attachrid(getcharid(3,$@cave4fighter$));
+
+// Here you can define the messages to be shown for the players on the beginning of each wave.
+// Remember to adjust the number of conditionals according to the number of waves.
+
+ if ($@wave_cave4 == 1) message strcharinfo(0), "Oh no, more monsters?!";
+ if ($@wave_cave4 == 2) message strcharinfo(0), "I can't give up now!";
+ if ($@wave_cave4 == 3) message strcharinfo(0), "As you killed all the monsters, you opened the chest. It was empty.";
+
+ if ($@wave_cave4 != $@CAVE4_WAVES) goto L_Summon;
+ set cavefights, (cavefights ^ BATTLE_CAVE4);
+ warp "025-3.gat", 80, 85;
+ goto L_Cleaning;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave4fighter$));
+ set $@wave_cave4, 0;
+ set $@cave4_kills, 0;
+ set $@cave4start, 0;
+ set $@cave4fighter$, "";
+ set $@cave4fighterdeaths$, 0;
+ set $@battlecave4, 0;
+ killmonster "025-4.gat", "#StartCaveFight4::OnMonsterDeath";
+ end;
+
+OnMonsterDeath:
+ set $@cave4_kills, $@cave4_kills + 1;
+ if ($@cave4_kills >= $@CAVE4_MONSTERS_QTY[1] + $@CAVE4_MONSTERS_QTY[2] + $@CAVE4_MONSTERS_QTY[3]) goto L_Done;
+ end;
+
+onInit:
+// Here you can define the specifics of each battle cave.
+// Monsters IDs to be spawned.
+ setarray $@CAVE4_MONSTERS_IDS[1], 1002, 1003, 1004;
+// Number of monsters of each ID.
+ setarray $@CAVE4_MONSTERS_QTY[1], 5, 3, 2;
+// Number of waves.
+ set $@CAVE4_WAVES, 3;
+// Maximum time (in seconds) for the player to finish the fight.
+ set $@CAVE4_TIME, 30;
+}
+
+// --------------------- Cave 4 Checker ----------------------------
+
+025-4.gat,32,156,0 script #CheckCaveFight4 127,1,1,{
+ if (cavefight & BATTLE_CAVE4) goto L_Done;
+ message strcharinfo(0), "Evil forces make you stop, you need to defeat them first before getting out.";
+ end;
+
+L_Done:
+ warp "025-3.gat", 80, 85;
+ end;
+}
+
+// ---------------------------- Cave 5 ------------------------------
+
+025-4.gat,100,154,0 script #StartCaveFight5 111,{
+ if (Rossy_Quest < 15) goto L_Cheat;
+ if ($@battlecave5 == 1) goto L_Summon;
+ end;
+
+L_Cheat:
+ message strcharinfo(0), "You shouldn't be here, you cheater.";
+ percentheal -100, 0;
+ end;
+
+L_Summon:
+ set $@cave5_loop, $@cave5_loop + 1;
+ areamonster "025-4.gat",91, 131, 124, 160,"",$@CAVE5_MONSTERS_IDS[$@cave5_loop],$@CAVE5_MONSTERS_QTY[$@cave5_loop],"#StartCaveFight5::OnMonsterDeath";
+ if ($@cave5_loop <= getarraysize($@CAVE5_MONSTERS_IDS)) goto L_Summon;
+ set $@cave5_loop, 0;
+ set $@wave_cave5, $@wave_cave5 + 1;
+ end;
+
+L_Done:
+ set $@cave5_kills, 0;
+ attachrid(getcharid(3,$@cave5fighter$));
+
+// Here you can define the messages to be shown for the players on the beginning of each wave.
+// Remember to adjust the number of conditionals according to the number of waves.
+
+ if ($@wave_cave5 == 1) message strcharinfo(0), "Oh no, more monsters?!";
+ if ($@wave_cave5 == 2) message strcharinfo(0), "I can't give up now!";
+ if ($@wave_cave5 == 3) message strcharinfo(0), "As you killed all the monsters, you opened the chest. It was empty.";
+
+ if ($@wave_cave5 != $@CAVE5_WAVES) goto L_Summon;
+ set cavefights, (cavefights ^ BATTLE_CAVE5);
+ warp "025-3.gat", 71, 32;
+ goto L_Cleaning;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave5fighter$));
+ set $@wave_cave5, 0;
+ set $@cave5_kills, 0;
+ set $@cave5start, 0;
+ set $@cave5fighter$, "";
+ set $@cave5fighterdeaths$, 0;
+ set $@battlecave5, 0;
+ killmonster "025-4.gat", "#StartCaveFight5::OnMonsterDeath";
+ end;
+
+OnMonsterDeath:
+ set $@cave5_kills, $@cave5_kills + 1;
+ if ($@cave5_kills >= $@CAVE5_MONSTERS_QTY[1] + $@CAVE5_MONSTERS_QTY[2] + $@CAVE5_MONSTERS_QTY[3]) goto L_Done;
+ end;
+
+onInit:
+// Here you can define the specifics of each battle cave.
+// Monsters IDs to be spawned.
+ setarray $@CAVE5_MONSTERS_IDS[1], 1002, 1003, 1004;
+// Number of monsters of each ID.
+ setarray $@CAVE5_MONSTERS_QTY[1], 5, 3, 2;
+// Number of waves.
+ set $@CAVE5_WAVES, 3;
+// Maximum time (in seconds) for the player to finish the fight.
+ set $@CAVE5_TIME, 30;
+}
+
+// --------------------- Cave 5 Checker ----------------------------
+
+025-4.gat,100,160,0 script #CheckCaveFight5 127,1,1,{
+ if (cavefight & BATTLE_CAVE5) goto L_Done;
+ message strcharinfo(0), "Evil forces make you stop, you need to defeat them first before getting out.";
+ end;
+
+L_Done:
+ warp "025-3.gat", 71, 33;
+ end;
+}
+
+// -------------------------------- Cave 6 -----------------------------------------
+
+025-4.gat,159,168,0 script #StartCaveFight6 111,{
+ if (Rossy_Quest < 15) goto L_Cheat;
+ if ($@battlecave6 == 1) goto L_Summon;
+ end;
+
+L_Cheat:
+ message strcharinfo(0), "You shouldn't be here, you cheater.";
+ percentheal -100, 0;
+ end;
+
+L_Summon:
+ set $@cave6_loop, $@cave6_loop + 1;
+ areamonster "025-4.gat",153, 143, 178, 174,"",$@CAVE6_MONSTERS_IDS[$@cave6_loop],$@CAVE6_MONSTERS_QTY[$@cave6_loop],"#StartCaveFight6::OnMonsterDeath";
+ if ($@cave6_loop <= getarraysize($@CAVE6_MONSTERS_IDS)) goto L_Summon;
+ set $@cave6_loop, 0;
+ set $@wave_cave6, $@wave_cave6 + 1;
+ end;
+
+L_Done:
+ set $@cave6_kills, 0;
+ attachrid(getcharid(3,$@cave6fighter$));
+
+// Here you can define the messages to be shown for the players on the beginning of each wave.
+// Remember to adjust the number of conditionals according to the number of waves.
+
+ if ($@wave_cave6 == 1) message strcharinfo(0), "Oh no, more monsters?!";
+ if ($@wave_cave6 == 2) message strcharinfo(0), "I can't give up now!";
+ if ($@wave_cave6 == 3) message strcharinfo(0), "As you killed all the monsters, you opened the chest. It was empty.";
+
+ if ($@wave_cave6 != $@CAVE6_WAVES) goto L_Summon;
+ set cavefights, (cavefights ^ BATTLE_CAVE6);
+ warp "025-3.gat", 128, 37;
+ goto L_Cleaning;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave6fighter$));
+ set $@wave_cave6, 0;
+ set $@cave6_kills, 0;
+ set $@cave6start, 0;
+ set $@cave6fighter$, "";
+ set $@cave6fighterdeaths$, 0;
+ set $@battlecave6, 0;
+ killmonster "025-4.gat", "#StartCaveFight6::OnMonsterDeath";
+ end;
+
+OnMonsterDeath:
+ set $@cave6_kills, $@cave6_kills + 1;
+ if ($@cave6_kills >= $@CAVE6_MONSTERS_QTY[1] + $@CAVE6_MONSTERS_QTY[2] + $@CAVE6_MONSTERS_QTY[3]) goto L_Done;
+ end;
+
+onInit:
+// Here you can define the specifics of each battle cave.
+// Monsters IDs to be spawned.
+ setarray $@CAVE6_MONSTERS_IDS[1], 1002, 1003, 1004;
+// Number of monsters of each ID.
+ setarray $@CAVE6_MONSTERS_QTY[1], 5, 3, 2;
+// Number of waves.
+ set $@CAVE6_WAVES, 3;
+// Maximum time (in seconds) for the player to finish the fight.
+ set $@CAVE6_TIME, 30;
+}
+
+// --------------------- Cave 6 Checker ----------------------------
+
+025-4.gat,159,174,0 script #CheckCaveFight6 127,1,1,{
+ if (cavefight & BATTLE_CAVE6) goto L_Done;
+ message strcharinfo(0), "Evil forces make you stop, you need to defeat them first before getting out.";
+ end;
+
+L_Done:
+ warp "025-3.gat", 128, 38;
+ end;
+}
+
+// -------------------------------- Cave 7 -----------------------------------
+
+025-4.gat,39,215,0 script #StartCaveFight7 111,{
+ if (Rossy_Quest < 15) goto L_Cheat;
+ if ($@battlecave7 == 1) goto L_Summon;
+ end;
+
+L_Cheat:
+ message strcharinfo(0), "You shouldn't be here, you cheater.";
+ percentheal -100, 0;
+ end;
+
+L_Summon:
+ set $@cave7_loop, $@cave7_loop + 1;
+ areamonster "025-4.gat",27, 185, 61, 219,"",$@CAVE7_MONSTERS_IDS[$@cave7_loop],$@CAVE7_MONSTERS_QTY[$@cave7_loop],"#StartCaveFight7::OnMonsterDeath";
+ if ($@cave7_loop <= getarraysize($@CAVE7_MONSTERS_IDS)) goto L_Summon;
+ set $@cave7_loop, 0;
+ set $@wave_cave7, $@wave_cave7 + 1;
+ end;
+
+L_Done:
+ set $@cave7_kills, 0;
+ attachrid(getcharid(3,$@cave7fighter$));
+
+// Here you can define the messages to be shown for the players on the beginning of each wave.
+// Remember to adjust the number of conditionals according to the number of waves.
+
+ if ($@wave_cave7 == 1) message strcharinfo(0), "Oh no, more monsters?!";
+ if ($@wave_cave7 == 2) message strcharinfo(0), "I can't give up now!";
+ if ($@wave_cave7 == 3) message strcharinfo(0), "As you killed all the monsters, you opened the chest. It was empty.";
+
+ if ($@wave_cave7 != $@CAVE7_WAVES) goto L_Summon;
+ set cavefights, (cavefights ^ BATTLE_CAVE7);
+ warp "025-3.gat", 70, 59;
+ goto L_Cleaning;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave7fighter$));
+ set $@wave_cave7, 0;
+ set $@cave7_kills, 0;
+ set $@cave7start, 0;
+ set $@cave7fighter$, "";
+ set $@cave7fighterdeaths$, 0;
+ set $@battlecave7, 0;
+ killmonster "025-4.gat", "#StartCaveFight7::OnMonsterDeath";
+ end;
+
+OnMonsterDeath:
+ set $@cave7_kills, $@cave7_kills + 1;
+ if ($@cave7_kills >= $@CAVE7_MONSTERS_QTY[1] + $@CAVE7_MONSTERS_QTY[2] + $@CAVE7_MONSTERS_QTY[3]) goto L_Done;
+ end;
+
+onInit:
+// Here you can define the specifics of each battle cave.
+// Monsters IDs to be spawned.
+ setarray $@CAVE7_MONSTERS_IDS[1], 1002, 1003, 1004;
+// Number of monsters of each ID.
+ setarray $@CAVE7_MONSTERS_QTY[1], 5, 3, 2;
+// Number of waves.
+ set $@CAVE7_WAVES, 3;
+// Maximum time (in seconds) for the player to finish the fight.
+ set $@CAVE7_TIME, 30;
+}
+
+// --------------------- Cave 7 Checker ----------------------------
+
+025-4.gat,42,219,0 script #CheckCaveFight7 127,1,1,{
+ if (cavefight & BATTLE_CAVE7) goto L_Done;
+ message strcharinfo(0), "Evil forces make you stop, you need to defeat them first before getting out.";
+ end;
+
+L_Done:
+ warp "025-3.gat", 70, 60;
+ end;
+}
+
+// --------------------------- Cave 8 -------------------------------
+
+025-4.gat,105,210,0 script #StartCaveFight8 111,{
+ if (Rossy_Quest < 15) goto L_Cheat;
+ if ($@battlecave8 == 1) goto L_Summon;
+ end;
+
+L_Cheat:
+ message strcharinfo(0), "You shouldn't be here, you cheater.";
+ percentheal -100, 0;
+ end;
+
+L_Summon:
+ set $@cave8_loop, $@cave8_loop + 1;
+ areamonster "025-4.gat",90, 193, 119, 216,"",$@CAVE8_MONSTERS_IDS[$@cave8_loop],$@CAVE8_MONSTERS_QTY[$@cave8_loop],"#StartCaveFight8::OnMonsterDeath";
+ if ($@cave8_loop <= getarraysize($@CAVE8_MONSTERS_IDS)) goto L_Summon;
+ set $@cave8_loop, 0;
+ set $@wave_cave8, $@wave_cave8 + 1;
+ end;
+
+L_Done:
+ set $@cave8_kills, 0;
+ attachrid(getcharid(3,$@cave8fighter$));
+
+// Here you can define the messages to be shown for the players on the beginning of each wave.
+// Remember to adjust the number of conditionals according to the number of waves.
+
+ if ($@wave_cave8 == 1) message strcharinfo(0), "Oh no, more monsters?!";
+ if ($@wave_cave8 == 2) message strcharinfo(0), "I can't give up now!";
+ if ($@wave_cave8 == 3) message strcharinfo(0), "As you killed all the monsters, you opened the chest. It was empty.";
+
+ if ($@wave_cave8 != $@CAVE8_WAVES) goto L_Summon;
+ set cavefights, (cavefights ^ BATTLE_CAVE8);
+ warp "025-3.gat", 138, 94;
+ goto L_Cleaning;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave8fighter$));
+ set $@wave_cave8, 0;
+ set $@cave8_kills, 0;
+ set $@cave8start, 0;
+ set $@cave8fighter$, "";
+ set $@cave8fighterdeaths$, 0;
+ set $@battlecave8, 0;
+ killmonster "025-4.gat", "#StartCaveFight8::OnMonsterDeath";
+ end;
+
+OnMonsterDeath:
+ set $@cave8_kills, $@cave8_kills + 1;
+ if ($@cave8_kills >= $@CAVE8_MONSTERS_QTY[1] + $@CAVE8_MONSTERS_QTY[2] + $@CAVE8_MONSTERS_QTY[3]) goto L_Done;
+ end;
+
+onInit:
+// Here you can define the specifics of each battle cave.
+// Monsters IDs to be spawned.
+ setarray $@CAVE8_MONSTERS_IDS[1], 1002, 1003, 1004;
+// Number of monsters of each ID.
+ setarray $@CAVE8_MONSTERS_QTY[1], 5, 3, 2;
+// Number of waves.
+ set $@CAVE8_WAVES, 3;
+// Maximum time (in seconds) for the player to finish the fight.
+ set $@CAVE8_TIME, 30;
+}
+
+// --------------------- Cave 8 Checker ----------------------------
+
+025-4.gat,105,216,0 script #CheckCaveFight8 127,1,1,{
+ if (cavefight & BATTLE_CAVE8) goto L_Done;
+ message strcharinfo(0), "Evil forces make you stop, you need to defeat them first before getting out.";
+ end;
+
+L_Done:
+ warp "025-3.gat", 138, 95;
+ end;
+}
+
+// --------------------------- Cave 9 -------------------------------
+
+025-4.gat,157,220,0 script #StartCaveFight9 111,{
+ if (Rossy_Quest < 15) goto L_Cheat;
+ if ($@battlecave9 == 1) goto L_Summon;
+ end;
+
+L_Cheat:
+ message strcharinfo(0), "You shouldn't be here, you cheater.";
+ percentheal -100, 0;
+ end;
+
+L_Summon:
+ set $@cave9_loop, $@cave9_loop + 1;
+ areamonster "025-4.gat",144, 192, 173, 226,"",$@CAVE9_MONSTERS_IDS[$@cave9_loop],$@CAVE9_MONSTERS_QTY[$@cave9_loop],"#StartCaveFight9::OnMonsterDeath";
+ if ($@cave9_loop <= getarraysize($@CAVE9_MONSTERS_IDS)) goto L_Summon;
+ set $@cave9_loop, 0;
+ set $@wave_cave9, $@wave_cave9 + 1;
+ end;
+
+L_Done:
+ set $@cave9_kills, 0;
+ attachrid(getcharid(3,$@cave9fighter$));
+
+// Here you can define the messages to be shown for the players on the beginning of each wave.
+// Remember to adjust the number of conditionals according to the number of waves.
+
+ if ($@wave_cave9 == 1) message strcharinfo(0), "Oh no, more monsters?!";
+ if ($@wave_cave9 == 2) message strcharinfo(0), "I can't give up now!";
+ if ($@wave_cave9 == 3) message strcharinfo(0), "As you killed all the monsters, you opened the chest. You found a strange key into the chest.";
+
+ if ($@wave_cave9 != $@CAVE9_WAVES) goto L_Summon;
+ set cavefights, (cavefights ^ BATTLE_CAVE9);
+ warp "025-3.gat", 138, 158;
+ goto L_Cleaning;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave9fighter$));
+ set $@wave_cave9, 0;
+ set $@cave9_kills, 0;
+ set $@cave9start, 0;
+ set $@cave9fighter$, "";
+ set $@cave9fighterdeaths$, 0;
+ set $@battlecave9, 0;
+ killmonster "025-4.gat", "#StartCaveFight9::OnMonsterDeath";
+ end;
+
+OnMonsterDeath:
+ set $@cave9_kills, $@cave9_kills + 1;
+ if ($@cave9_kills >= $@CAVE9_MONSTERS_QTY[1] + $@CAVE9_MONSTERS_QTY[2] + $@CAVE9_MONSTERS_QTY[3]) goto L_Done;
+ end;
+
+onInit:
+// Here you can define the specifics of each battle cave.
+// Monsters IDs to be spawned.
+ setarray $@CAVE9_MONSTERS_IDS[1], 1002, 1003, 1004;
+// Number of monsters of each ID.
+ setarray $@CAVE9_MONSTERS_QTY[1], 5, 3, 2;
+// Number of waves.
+ set $@CAVE9_WAVES, 3;
+// Maximum time (in seconds) for the player to finish the fight.
+ set $@CAVE9_TIME, 30;
+}
+
+// --------------------- Cave 9 Checker ----------------------------
+
+025-4.gat,157,226,0 script #CheckCaveFight9 127,1,1,{
+ if (cavefight & BATTLE_CAVE9) goto L_Done;
+ message strcharinfo(0), "Evil forces make you stop, you need to defeat them first before getting out.";
+ end;
+
+L_Done:
+ warp "025-3.gat", 138, 158;
+ end;
+}
+
+// --------------------- Boss Cave ----------------------------
+
+025-4.gat,157,42,0 script #StartBossCaveFight 111,{
+ if (Rossy_Quest == 16) goto L_Found;
+ if ($@battlebosscave == 1 && cavefights & BATTLE_CAVE1 && cavefights & BATTLE_CAVE2 && cavefights & BATTLE_CAVE3 && cavefights & BATTLE_CAVE4 && cavefights & BATTLE_CAVE5 && cavefights & BATTLE_CAVE6 && cavefights & BATTLE_CAVE7 && cavefights & BATTLE_CAVE8 && cavefights & BATTLE_CAVE9 && Rossy_Quest == 15) goto L_Summon;
+ message strcharinfo(0), "You shouldn't be here, you cheater.";
+ percentheal -100, 0;
+ end;
+
+L_Found:
+ message strcharinfo(0), "You found a golden key.";
+ set Killed_Boss, 1;
+ end;
+
+L_Summon:
+ set $@cave10_loop, $@cave10_loop + 1;
+ areamonster "025-4.gat",142, 24, 172, 48,"",$@CAVE10_MONSTERS_IDS[$@cave10_loop],$@CAVE10_MONSTERS_QTY[$@cave10_loop],"#StartBossCaveFight::OnMonsterDeath";
+ if ($@cave10_loop <= getarraysize($@CAVE10_MONSTERS_IDS)) goto L_Summon;
+ set $@cave10_loop, 0;
+ set $@wave_cave10, $@wave_cave10 + 1;
+ end;
+
+L_SummonBoss:
+ attachrid(getcharid(3,$@cave10fighter$));
+ message strcharinfo(0), "WHaaat? What is this?!";
+ areamonster "025-4.gat",142, 24, 172, 48,"",$@BOSS,1,"#StartBossCaveFight::OnBossDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_Done:
+ set $@cave10_kills, 0;
+ attachrid(getcharid(3,$@cave10fighter$));
+
+// Here you can define the messages to be shown for the players on the beginning of each wave.
+// Remember to adjust the number of conditionals according to the number of waves.
+
+ if ($@wave_cave10 == 1) message strcharinfo(0), "I can't give up now!";
+ if ($@wave_cave10 == 2) message strcharinfo(0), "I feel I'm getting close to the end...";
+ if ($@wave_cave10 == 3) message strcharinfo(0), "What? This is harder than I imagined!";
+ if ($@wave_cave10 == 4) message strcharinfo(0), "Finally! It seems I have defeated all of them! Wait... what is that?!";
+
+ if ($@wave_cave10 != $@CAVE10_WAVES) goto L_Summon;
+ set $@wave_cave10, 5;
+ startnpctimer;
+ end;
+
+L_Cleaning:
+ attachrid(getcharid(3,$@cave10fighter$));
+ set $@wave_cave10, 0;
+ set $@cave10_kills, 0;
+ set $@cave10start, 0;
+ set $@cave10fighter$, "";
+ set $@cave10fighterdeaths$, 0;
+ set $@battlebosscave, 0;
+ killmonster "025-4.gat", "#StartBossCaveFight::OnMonsterDeath";
+ killmonster "025-4.gat", "#StartBossCaveFight::OnBossDeath";
+ end;
+
+OnTimer4000:
+ attachrid(getcharid(3,$@cave10fighter$));
+ set @boss, @boss + 1;
+ if (@boss == 1) message strcharinfo(0), "Due to the number of monsters in this cave, you feel you have more time to kill them all before other monsters come.";
+ if (@boss == 2) goto L_SummonBoss;
+ setnpctimer 0;
+ end;
+
+OnMonsterDeath:
+ set $@cave10_kills, $@cave10_kills + 1;
+ if ($@cave10_kills >= $@CAVE10_MONSTERS_QTY[1] + $@CAVE10_MONSTERS_QTY[2] + $@CAVE10_MONSTERS_QTY[3]) goto L_Done;
+ end;
+
+OnBossDeath:
+ attachrid(getcharid(3,$@cave10fighter$));
+ set $@wave_cave10, 0;
+ set $@cave10_kills, 0;
+ set $@cave10start, 0;
+ set $@cave10fighter$, "";
+ set $@cave10fighterdeaths$, 0;
+ message strcharinfo(0), "What a harsh battle! Oh, a golden key, it might open the chest!";
+ set Rossy_Quest, 16;
+ end;
+
+onInit:
+// Here you can define the specifics of each battle cave.
+// Monsters IDs to be spawned. before the boss.
+ setarray $@CAVE10_MONSTERS_IDS[1], 1002, 1003, 1004, 1036;
+// Number of monsters of each ID.
+ setarray $@CAVE10_MONSTERS_QTY[1], 5, 3, 2, 1;
+// ID of the boss monster.
+ set $@BOSS, 1067;
+// Number of waves. before the boss.
+ set $@CAVE10_WAVES, 4;
+// Maximum time (in seconds) for the player to finish the fight.
+ set $@CAVE10_TIME, 120;
+}
+
+// --------------------- Boss Cave Checker ----------------------------
+
+025-4.gat,157,48,0 script #CheckCaveFightBoss 127,1,1,{
+ if (Rossy_Quest >= 17) goto L_Done;
+ if (Killed_Boss == 1) goto L_Done;
+ message strcharinfo(0), "Evil forces make you stop, you need to defeat them first before getting out.";
+ end;
+
+L_Killed:
+ message strcharinfo(0), "The little girl seems so close, you can't let her stay here.";
+ end;
+
+L_Done:
+ warp "025-3.gat", 77, 168;
+ end;
+}
+
+// --------------------- Julia Cave Checker Outside ----------------------------
+
+025-4.gat,157,24,0 script #CheckJuliaCaveOutside 127,1,1,{
+ if (Killed_Boss == 1) goto L_Done;
+ message strcharinfo(0), "As you try to walk through, you bump into an invisible door. You might need a key to open it.";
+ end;
+
+L_Done:
+ warp "025-4.gat", 93, 33;
+ end;
+}
+
+// --------------------- Julia Cave Checker Inside ----------------------------
+
+025-4.gat,93,35,0 script #CheckJuliaCaveInside 127,1,1,{
+ if (Rossy_Quest >= 17 && Killed_Boss == 1) goto L_Done;
+ if (Rossy_Quest >= 17 && Killed_Boss == 0) goto L_Cheat2;
+ if (Rossy_Quest == 16 && Killed_Boss == 1) goto L_Save;
+ if (Rossy_Quest == 16 && Killed_Boss == 0) goto L_Cheat3;
+ if (Rossy_Quest <= 15) goto L_Cheat;
+ end;
+
+L_Cheat:
+ message strcharinfo(0), "You shouldn't be here, you cheater.";
+ percentheal -100, 0;
+ end;
+
+L_Cheat2:
+ message strcharinfo(0), "You saved Julia without having killed the boss? Is that even possible?";
+ percentheal -100, 0;
+ end;
+
+L_Cheat3:
+ message strcharinfo(0), "You can save Julia without killing the boss? Cheating isn't fair.";
+ percentheal -100, 0;
+ end;
+
+L_Done:
+ warp "025-4.gat", 157, 26;
+ end;
+
+L_Save:
+ message strcharinfo(0), "You can't leave Julia here, all alone!";
+ end;
+}
+
diff --git a/npc/025-4/_import.txt b/npc/025-4/_import.txt
new file mode 100644
index 00000000..ac773656
--- /dev/null
+++ b/npc/025-4/_import.txt
@@ -0,0 +1,9 @@
+// Map 025-4:
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 025-4.gat
+npc: npc/025-4/Battlecaves.txt
+npc: npc/025-4/_mobs.txt
+npc: npc/025-4/_warps.txt
+npc: npc/025-4/clauquer.txt
+npc: npc/025-4/julia.txt
+npc: npc/025-4/mapflags.txt
diff --git a/npc/025-4/_mobs.txt b/npc/025-4/_mobs.txt
new file mode 100644
index 00000000..81cd1cf4
--- /dev/null
+++ b/npc/025-4/_mobs.txt
@@ -0,0 +1,16 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// mobs
+
+025-4.gat,29,31,20,14 monster CaveMaggot 1056,3,0,0,Mob025-4::On1056
+025-4.gat,94,24,20,21 monster CaveMaggot 1056,5,0,0,Mob025-4::On1056
+025-4.gat,157,36,30,24 monster CaveMaggot 1056,15,0,0,Mob025-4::On1056
+
+
+025-4.gat,0,0,0 script Mob025-4 -1,{
+On1056:
+ set @mobID, 1056;
+ callfunc "MobPoints";
+ break;
+
+ end;
+}
diff --git a/npc/025-4/_warps.txt b/npc/025-4/_warps.txt
new file mode 100644
index 00000000..e0b9ae4d
--- /dev/null
+++ b/npc/025-4/_warps.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// warps
+
+025-4.gat,28,37 warp ToMainHall -1,-1,025-3.gat,105,87
diff --git a/npc/025-4/clauquer.txt b/npc/025-4/clauquer.txt
new file mode 100644
index 00000000..d51606ae
--- /dev/null
+++ b/npc/025-4/clauquer.txt
@@ -0,0 +1,71 @@
+025-4.gat,30,30,0 script Clauquer 169,{
+
+// if (Rossy_Quest >= 15) goto L_Hmmm Character already talked to Clauquer up to the end of the conversation.
+// if (Rossy_Quest == 14) goto L_Help Character just entered the Main HAll and still needs to talk to Clauquer to be able to enter the Battle Caves.
+// if (Rossy_Quest <= 13) goto L_Huh Character is not supposed to be here, can be because of the use of GM powers.
+
+ if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_Rescued;
+ if (Rossy_Quest == 15) goto L_Hmmm;
+ if (Rossy_Quest == 14) goto L_Help;
+ if (Rossy_Quest <= 13) goto L_Huh;
+
+L_Help:
+ mes "[Clauquer]";
+ mes "It seems you are lost in these caves.";
+ next;
+ mes "Do you want some advices to be able to find out the mistery of this place?";
+ menu
+ "Please tell me everything about these caves.", -,
+ "I'm not lost and I know everything about these caves.", L_No;
+ next;
+ mes "\"All of these caves contain horrible blood thursty monsters. They are coming from nowhere and you can't escape while they are still alive. Or you die, or they die. When the monsters of a cave will be dead, you'll be, just by magic, teleported out of the cave. You will not be able to enter it anymore.\"";
+ next;
+ mes "There are nine caves in which monsters are located, kill them all and you'll be able to rescue the harmless young girl who got caught by uhm... I shouldn't say his name. Well, you should be warned! This isn't easy, you will need to kill... him!";
+ menu
+ "I'm not afraid of these stories, please continue.", -,
+ "Sounds dangerous, I might need to go now, bye.", L_No;
+ mes "Well, you need to kill him and all of his horrible, nasty minions. Beware, don't kill them or more will come!";
+ next;
+ mes "When you'll rescue the little girl, you will not be able to enter these caves anymore, though I don't see why you would do so.";
+ next;
+ mes "It seems you know everything you should know. Dangerous secrets must be kept... You now know what to do!";
+ set Rossy_Quest, 15;
+ close;
+
+L_Hmmm:
+ mes "[Clauquer]";
+ mes "It seems you are lost in these caves.";
+ next;
+ mes "Do you want some advices to be able to find out the mistery of this place?";
+ menu
+ "Please tell me everything about these caves.", -,
+ "I'm not lost and I know everything about these caves.", L_No;
+ next;
+ mes "\"All of these caves contain horrible blood thursty monsters. They are coming from nowhere and you can't escape while they are still alive. Or you die, or they die. When the monsters of a cave will be dead, you'll be, just by magic, teleported out of the cave. You will not be able to enter it anymore.\"";
+ next;
+ mes "There are nine caves in which monsters are located, kill them all and you'll be able to rescue the harmless young girl who got caught by uhm... I shouldn't say his name. Well, you should be warned! This isn't easy, you will need to kill... him!";
+ menu
+ "I'm not afraid of these stories, please continue.", -,
+ "Sounds dangerous, I might need to go now, bye.", L_No;
+ mes "Well, you need to kill him and all of his horrible, nasty minions. Beware, don't kill them or more will come!";
+ next;
+ mes "When you'll rescue the little girl, you will not be able to enter these caves anymore, though I don't see why you would do so.";
+ next;
+ mes "It seems you know everything you should know. Dangerous secrets must be kept... You now know what to do!";
+ close;
+
+L_Huh:
+ mes "[Clauquer]";
+ mes "Why are you here? Get out.";
+ close;
+
+L_No:
+ close;
+
+L_Rescued:
+ mes "[Clauquer]";
+ mes "Please put something here.";
+ next;
+ mes "*The man talks about you, rescuing the girl.*";
+ close;
+}
diff --git a/npc/025-4/julia.txt b/npc/025-4/julia.txt
new file mode 100644
index 00000000..51bcc296
--- /dev/null
+++ b/npc/025-4/julia.txt
@@ -0,0 +1,35 @@
+025-4.gat,89,21,0 script Julia 114,{
+
+ if (Rossy_Quest > 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_End;
+ if (Rossy_Quest == 16) goto L_Done;
+ if (Rossy_Quest <= 15) goto L_Hmmm;
+
+L_Done:
+ mes "[Julia]";
+ mes "Oh, you saved me, thank you!";
+ next;
+ mes "Here is a present for you.";
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_TooMany;
+ getitem "BlackBoots", 1;
+ getexp 5000, 0;
+ set Rossy_Quest, 17;
+ mes "I'm out of here now, come out from this horrible cave.";
+ close;
+
+L_End:
+ mes "[Julia]";
+ mes "Come out from this horrible cave.";
+ close;
+
+L_Hmmm:
+ mes "[Julia]";
+ mes "Don't hurt me!";
+ close;
+
+L_TooMany:
+ mes "[Julia]";
+ mes "\"Oh, I wanted to give you a present, but you don't have room for it. Come back when your backpack will not be full.\"";
+ close;
+
+}
diff --git a/npc/025-4/mapflags.txt b/npc/025-4/mapflags.txt
new file mode 100644
index 00000000..1c8999bb
--- /dev/null
+++ b/npc/025-4/mapflags.txt
@@ -0,0 +1 @@
+025-4.gat mapflag nosave 025-3,112,96;
diff --git a/npc/_import.txt b/npc/_import.txt
index 893c6dca..b3bcc75a 100644
--- a/npc/_import.txt
+++ b/npc/_import.txt
@@ -57,6 +57,8 @@ import: npc/022-1/_import.txt
import: npc/024-1/_import.txt
import: npc/024-2/_import.txt
import: npc/025-1/_import.txt
+import: npc/025-3/_import.txt
+import: npc/025-4/_import.txt
import: npc/026-1/_import.txt
import: npc/027-1/_import.txt
import: npc/027-2/_import.txt