diff options
Diffstat (limited to 'npc/025-4')
-rw-r--r-- | npc/025-4/Battlecaves.txt | 852 | ||||
-rw-r--r-- | npc/025-4/_import.txt | 9 | ||||
-rw-r--r-- | npc/025-4/_mobs.txt | 16 | ||||
-rw-r--r-- | npc/025-4/_warps.txt | 4 | ||||
-rw-r--r-- | npc/025-4/clauquer.txt | 71 | ||||
-rw-r--r-- | npc/025-4/julia.txt | 35 | ||||
-rw-r--r-- | npc/025-4/mapflags.txt | 1 |
7 files changed, 988 insertions, 0 deletions
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; |