summaryrefslogtreecommitdiff
path: root/npc/001-3-0/gates.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/001-3-0/gates.txt')
-rw-r--r--npc/001-3-0/gates.txt201
1 files changed, 201 insertions, 0 deletions
diff --git a/npc/001-3-0/gates.txt b/npc/001-3-0/gates.txt
new file mode 100644
index 00000000..e8accc96
--- /dev/null
+++ b/npc/001-3-0/gates.txt
@@ -0,0 +1,201 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// The Sewer Gates, and Wheels.
+
+001-3-0,90,62,0 script #ArtisThiefGate_1 NPC_SEWER_GATE,0,0,{
+ // Extract the quest ID from name (or fail trying)
+ explode(.@ni$, .name$, "_");
+ .@id=atoi(.@ni$[1]);
+
+ .@q=getq(ThiefQuests_Artis);
+ .@q2=getq2(ThiefQuests_Artis);
+
+ // Check what you can do with the gate
+ if (.@q != .@id) {
+ mes l("This gate is closed.");
+ mesc l("No need to go through here, so lets not bother with it now.");
+ } else if (.@q2 != 2) {
+ mes l("This gate is closed.");
+ mesc l("It seems that it can be open using the mechanism on the side.");
+ } else {
+ mes l("This gate is open.");
+ mesc l("I should still be careful to don't get caught.");
+ }
+ close;
+
+OnTouch:
+ updateSpotlight(true);
+ end;
+
+OnOpenSesame:
+ // Opening
+ if (!.busy) {
+ .dir=2;
+ .busy=true;
+ initnpctimer;
+ }
+ end;
+
+// Open
+OnTimer2200:
+ .dir=4;
+ end;
+
+// Closing
+OnTimer8000:
+ .dir=6;
+ end;
+
+// Closed
+OnTimer10400:
+ .dir=0;
+ end;
+
+// Don't reply immediately, wait a tiny bit
+OnTimer11000:
+ .busy = false;
+ stopnpctimer;
+
+OnInit:
+ .busy = false;
+ .distance = 1;
+ end;
+}
+
+
+
+001-3-0,92,61,0 script #ArtisThiefWheel_1 NPC_SEWER_WHEEL,{
+ // Extract the quest ID from name (or fail trying)
+ explode(.@ni$, .name$, "_");
+ .@id=atoi(.@ni$[1]);
+
+ .@q=getq(ThiefQuests_Artis);
+ .@q2=getq2(ThiefQuests_Artis);
+
+ if (.@q != .@id) {
+ speech
+ l("This wheel seems to be connected to the locked gate on the side."),
+ l("Having to reason to tinker with it, you don't.");
+ close;
+ }
+ speech
+ l("You try to move this wheel, but it is stuck. Something seems to be missing."),
+ l("Maybe some monster ate it, but what would be big enough to do that?!");
+
+ // Switch gearwheel status: 1(looted) 2(unlooted)
+ switch (.@q2) {
+ case 1:
+ // Looted but lost? D:
+ if (!countitem(Gearwheel)) {
+ mesc l("If we only had a %s.", getitemlink(Gearwheel));
+ close;
+ }
+
+ // Prompt player
+ mesc l("Should we install the %s and move it?", getitemlink(Gearwheel)), 1;
+ if (askyesno() == ASK_NO)
+ break;
+
+ delitem Gearwheel, 1;
+ setq2 ThiefQuests_Artis, 2;
+ // FALLTHROUGH
+ case 2:
+ mesc l("With the %s in place, it only takes a bit more effort to make it budge.", getitemlink(Gearwheel));
+ next;
+ closeclientdialog;
+ // Spin the wheel
+ if (!.busy) {
+ .dir = 4;
+ .busy = true;
+ initnpctimer;
+ }
+ // Open the gate
+ addtimer 500, "#ArtisThiefGate_"+.@id+"::OnOpenSesame";
+ break;
+ default:
+ }
+ close;
+
+// Done spinning?
+OnTimer4000:
+ .dir = 0;
+ .busy = false;
+ stopnpctimer;
+
+OnInit:
+ .busy = false;
+ .distance = 2;
+ end;
+}
+
+
+
+// We're missing a gate!
+001-3-0,56,44,0 duplicate(#ArtisThiefGate_1) #ArtisThiefGate_4 NPC_SEWER_GATE,2,2
+001-3-0,58,43,0 duplicate(#ArtisThiefWheel_1) #ArtisThiefWheel_4 NPC_SEWER_WHEEL
+
+
+///////////////////////////
+// The controlled warps
+001-3-0,90,61,0 script #001-3-0_90_61 NPC_HIDDEN,0,0,{
+ end;
+
+OnTouch:
+ // No enter except when q1 and q2 matches
+ .@q=getq(ThiefQuests_Artis);
+ .@q2=getq2(ThiefQuests_Artis);
+ if (.@q != 1 || .@q2 != 2)
+ end;
+
+ // Delete previous timers. Makes easier to cheat but more reliable (FIXME)
+ deltimer("#ArtisThiefBook_0::OnBust1");
+ deltimer("#ArtisThiefBook_0::OnBust2");
+ deltimer("#ArtisThiefBook_0::OnBust3");
+ deltimer("#ArtisThiefBook_0::OnBust4");
+
+ // Archives: Begin
+ addtimer 30000, "#ArtisThiefBook_0::OnBust1";
+ warp "001-2-43", 51, 34;
+ end;
+}
+
+001-3-0,56,43,0 script #001-3-0_56_43 NPC_HIDDEN,0,0,{
+ end;
+
+OnTouch:
+ // No enter except when quest state allows you to
+ // I thought in letting you use this passage and get busted anytime...
+ // ...........Better not. Animation will not like it, anyway.
+ .@q=getq(ThiefQuests_Artis);
+ .@q2=getq2(ThiefQuests_Artis);
+ if (.@q != 4 || .@q2 != 2)
+ end;
+
+ warp "001-2-40", 56, 40;
+ addtimer2(rand2(3000, 7000), .name$+"::OnBusted");
+ end;
+
+// Henry said to you don't use the gate, because you are not discrete enough.
+// Poor player, this is what happens for not paying attention to Henry's advise.
+OnBusted:
+ if (getmap() != "001-2-40")
+ end;
+
+ mesn l("Legion Officer");
+ mes l("HEY! How you got here!?");
+ next;
+ // Check if you'll be caught
+ if (ArrestedChances()) {
+ mesc l("Arrested!");
+ mesc l("You'll now spend a few minutes on the jail to reflect on your actions.");
+ ArrestPlayer(5);
+ } else {
+ mesc l("You're almost found out, but manage to make a quick escape!");
+ warp "001-1", 41, 36;
+ }
+ close;
+}
+
+