summaryrefslogtreecommitdiff
path: root/npc/001-2-23
diff options
context:
space:
mode:
Diffstat (limited to 'npc/001-2-23')
-rw-r--r--npc/001-2-23/_import.txt6
-rw-r--r--npc/001-2-23/_warps.txt3
-rw-r--r--npc/001-2-23/doors.txt75
-rw-r--r--npc/001-2-23/mapflags.txt1
-rw-r--r--npc/001-2-23/ratto.txt98
5 files changed, 183 insertions, 0 deletions
diff --git a/npc/001-2-23/_import.txt b/npc/001-2-23/_import.txt
new file mode 100644
index 00000000..22778b22
--- /dev/null
+++ b/npc/001-2-23/_import.txt
@@ -0,0 +1,6 @@
+// Map 001-2-23: Hold
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/001-2-23/_warps.txt",
+"npc/001-2-23/doors.txt",
+"npc/001-2-23/mapflags.txt",
+"npc/001-2-23/ratto.txt",
diff --git a/npc/001-2-23/_warps.txt b/npc/001-2-23/_warps.txt
new file mode 100644
index 00000000..d9434efb
--- /dev/null
+++ b/npc/001-2-23/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 001-2-23: Hold warps
+001-2-23,48,29,0 warp #001-2-23_48_29 0,0,001-2-22,72,35
diff --git a/npc/001-2-23/doors.txt b/npc/001-2-23/doors.txt
new file mode 100644
index 00000000..9c91e824
--- /dev/null
+++ b/npc/001-2-23/doors.txt
@@ -0,0 +1,75 @@
+// Evol scripts.
+// Authors:
+// Ablu
+// Alastrim
+// Jesusalva
+// Reid
+// Description:
+// Doors NPCs.
+
+001-2-23,48,29,0 script DoorUpwards#Artis NPC_HIDDEN,0,0,{
+
+OnTouch:
+ // Actually this will never work because Instanced map
+ if (mobcount("001-2-23","all") > 0) goto L_Warn;
+
+ goto L_Warp;
+
+L_Warn:
+ .@q = getq(ShipQuests_Peter);
+ if (.@q >= 15) goto L_Warp;
+
+ mesn "Narrator";
+ mesc(l("There are still some monsters left! Do you want to abort the quest?"), 9);
+ next;
+
+ menu
+ l("Yes."), L_Warp,
+ l("No."), -;
+
+ slide 48, 28;
+ closeclientdialog;
+ close;
+
+L_Warp:
+ warp "001-2-22", 72, 36;
+
+ deltimer("Peter#Artis::OnLowTime");
+ deltimer("Peter#Artis::OnTimeout");
+ closeclientdialog;
+ close;
+}
+
+// Besides the door, Alige is hiding himself and would rather not be disturbed
+001-2-23,24,31,0 script LeftDoor#Artis NPC_HIDDEN,0,0,{
+
+OnTouch:
+ mesn "Narrator";
+ mesc(l("It seems that you need a key to open this door."), 9);
+ next;
+ mesc(l("What do you want to do?"), 9);
+ next;
+
+ menu
+ rif(countitem(JohanneKey) > 0, l("Use the key.")), L_Warp,
+ l("Break the door."), L_Break,
+ l("Go away."), -;
+
+ closeclientdialog;
+ close;
+
+L_Break:
+
+ mes "";
+ mesn "Narrator";
+ mesc(l("You hear a loud scream. It must be the creaking of the wooden door..."), 9);
+
+ close;
+
+L_Warp:
+ mes "";
+ mesn "Narrator";
+ mesc(l("Wait, it seems someone is blocking the door from the other side!"), 9);
+
+ close;
+}
diff --git a/npc/001-2-23/mapflags.txt b/npc/001-2-23/mapflags.txt
new file mode 100644
index 00000000..c8d2d7e7
--- /dev/null
+++ b/npc/001-2-23/mapflags.txt
@@ -0,0 +1 @@
+001-2-23 mapflag nosave 001-2-22,50,38
diff --git a/npc/001-2-23/ratto.txt b/npc/001-2-23/ratto.txt
new file mode 100644
index 00000000..24bb1e1a
--- /dev/null
+++ b/npc/001-2-23/ratto.txt
@@ -0,0 +1,98 @@
+// Evol Script.
+// Author:
+// Ablu
+// Alastrim
+// Jesusalva
+// Reid
+// Description:
+// Ratto killer.
+// The only "lose" conditions are:
+// 1- dying, but this is not handled anywhere
+// 2- Time running out, Peter handles that automatically.
+// Note that if you die here, you won't be able to return and will need to
+// start the quest over again. (I wonder why it is not handled by an OnDeath event)
+// iirc, logout will automatically destroy the instance and clear timers, so it
+// doesn't needs the script writer to handle logout cleanup (only death).
+
+001-2-23,0,0,0 script RattosControl#Artis NPC_HIDDEN,{
+ end;
+
+// Each monster on the basement have its own respawn cycle.
+// We use a XOR (^) operand to mark that the killed monster is not dead anymore.
+// This is to reproduce as accurate as possible the legacy behavior of the quest.
+OnRatto1Respawn:
+ .@q2=getq2(ShipQuests_Peter);
+ setq2 ShipQuests_Peter, .@q2^1;
+ areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl#Artis::OnRatto1Death";
+ end;
+
+OnRatto2Respawn:
+ .@q2=getq2(ShipQuests_Peter);
+ setq2 ShipQuests_Peter, .@q2^2;
+ areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl#Artis::OnRatto2Death";
+ end;
+
+OnRatto3Respawn:
+ .@q2=getq2(ShipQuests_Peter);
+ setq2 ShipQuests_Peter, .@q2^4;
+ areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl#Artis::OnRatto3Death";
+ end;
+
+OnRatto4Respawn:
+ .@q2=getq2(ShipQuests_Peter);
+ setq2 ShipQuests_Peter, .@q2^8;
+ areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl#Artis::OnRatto4Death";
+ end;
+
+// When you kill a monster on basement, we must check the mob as dead, see if you
+// finally killed the last one and quest is complete, and add a timer to respawn it
+// after 1m25s (for flavor purposes, makes quest harder though)
+OnRatto1Death:
+ .@q2=getq2(ShipQuests_Peter);
+ setq2 ShipQuests_Peter, .@q2|1;
+ .@q2=getq2(ShipQuests_Peter);
+ if (.@q2 == 15)
+ goto L_Victor;
+ addtimer(85000, "RattosControl#Artis::OnRatto1Respawn");
+ end;
+
+OnRatto2Death:
+ .@q2=getq2(ShipQuests_Peter);
+ setq2 ShipQuests_Peter, .@q2|2;
+ .@q2=getq2(ShipQuests_Peter);
+ if (.@q2 == 15)
+ goto L_Victor;
+ addtimer(85000, "RattosControl#Artis::OnRatto2Respawn");
+ end;
+
+OnRatto3Death:
+ .@q2=getq2(ShipQuests_Peter);
+ setq2 ShipQuests_Peter, .@q2|4;
+ .@q2=getq2(ShipQuests_Peter);
+ if (.@q2 == 15)
+ goto L_Victor;
+ addtimer(85000, "RattosControl#Artis::OnRatto3Respawn");
+ end;
+
+OnRatto4Death:
+ .@q2=getq2(ShipQuests_Peter);
+ setq2 ShipQuests_Peter, .@q2|8;
+ .@q2=getq2(ShipQuests_Peter);
+ if (.@q2 == 15)
+ goto L_Victor;
+ addtimer(85000, "RattosControl#Artis::OnRatto4Respawn");
+ end;
+
+// This label is reached when all rattos are dead. We clear the respawn timers
+// (as we are going to delete the instance map anyway), warp you outside, and
+// from there onwards, Peter handles properly rewarding you.
+L_Victor:
+ deltimer("RattosControl#Artis::OnRatto1Respawn");
+ deltimer("RattosControl#Artis::OnRatto2Respawn");
+ deltimer("RattosControl#Artis::OnRatto3Respawn");
+ deltimer("RattosControl#Artis::OnRatto4Respawn");
+ addtimercount("Peter#Artis::OnTimeout", 5000);
+ addtimer(5000, "Peter#Artis::OnDone");
+ dispbottom l("It looks like all monsters were killed.");
+ end;
+}