summaryrefslogtreecommitdiff
path: root/npc/029-0
diff options
context:
space:
mode:
Diffstat (limited to 'npc/029-0')
-rw-r--r--npc/029-0/_import.txt6
-rw-r--r--npc/029-0/elora.txt91
-rw-r--r--npc/029-0/mobs.txt170
-rw-r--r--npc/029-0/sakar.txt53
-rw-r--r--npc/029-0/warps.txt110
5 files changed, 430 insertions, 0 deletions
diff --git a/npc/029-0/_import.txt b/npc/029-0/_import.txt
new file mode 100644
index 000000000..a84cdfd12
--- /dev/null
+++ b/npc/029-0/_import.txt
@@ -0,0 +1,6 @@
+// Map 029-0: Artis
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/029-0/elora.txt",
+"npc/029-0/mobs.txt",
+"npc/029-0/sakar.txt",
+"npc/029-0/warps.txt",
diff --git a/npc/029-0/elora.txt b/npc/029-0/elora.txt
new file mode 100644
index 000000000..90edc32c8
--- /dev/null
+++ b/npc/029-0/elora.txt
@@ -0,0 +1,91 @@
+// TMW2 scripts.
+// Author:
+// Jesusalva
+// Description:
+// Fires of Steam: The Death of Andrei Sakar
+
+029-0,182,77,0 script Elora NPC_HUMAN_FEMALE_NOOB,{
+ mesn;
+ mesq l("Greetings! I am %s from the Alliance.", .name$);
+ next;
+ switch ($FIRESOFSTEAM) {
+ case 1:
+ mesn;
+ mesq l("Thanks for travelling with Andrei Sakar to Artis! However, as you see, this town is deserted.");
+ next;
+ mesn;
+ mesq l("Sir Sakar is conducting an exploration on this land. However, you should be able to refine and tweak equipment, as well as crafting your own. Once you're ready, find him at the north exit of this town.");
+ break;
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ mesn;
+ mesq l("Sir Sakar and adventurers are raiding Dracula's Fortress. It is a crazy place, though, who knows what they'll find? He should be at the north exit of this town.");
+ break;
+ case 7:
+ mesn;
+ mesq l("Sir Sakar and adventurers are raiding Dracula's Fortress. They found out the Underworld and there is a magic tree. You'll need a %s to use it.", getitemlink(DruidTreeBranch));
+ mesc l("They are at north of the town.");
+ next;
+ mesn;
+ if (FIRESOFSTEAM_CD < gettimetick(2)) {
+ mesq l("Here is one.");
+ FIRESOFSTEAM_CD=gettimetick(2)+86400; // 24 hours
+ getitem DruidTreeBranch, 1;
+ } else {
+ mesq l("Some other adventurers are looking for it. Please wait %s more.", FuzzyTime(FIRESOFSTEAM_CD));
+ }
+ break;
+ case 8:
+ mesn;
+ mesq l("Sakar can now bring you directly to Asphodel Moors. Scouts found a second town as well, from where the raiders seems to be coming from!");
+ break;
+ case 9:
+ mesn;
+ mesq l("Contact a GM at Migglemire - the small town at center of swamps - to trigger the final showdown.");
+ break;
+ }
+ close;
+
+OnInit:
+ .distance=5;
+ .sex=G_FEMALE;
+ end;
+}
+
+// UTILITY
+029-0,96,110,0 duplicate(Nicholas) Nicholas#FoS NPC_NICHOLAS
+029-0,89,75,0 duplicate(Fortiun) Fortiun#FoS NPC_FORTIUN
+029-0,68,89,0 duplicate(Tolchi) Tolchi#FoS NPC_RAIJIN_FEMALE_LEGION_ARTIS
+029-0,137,75,0 duplicate(Bracco) Bracco#FoS NPC_ORC_SAILOR
+029-0,90,130,0 duplicate(Zitoni) Zitoni#FoS NPC_RUMLY
+029-0,132,51,0 duplicate(Cynric) Cynric#FoS NPC_LLOYD
+029-0,58,118,0 duplicate(Neko) Neko#FoS1 NPC_KAYLO
+
+// 029-1
+029-1,35,88,0 duplicate(Neko) Neko#FoS2 NPC_KAYLO
+029-1,29,88,0 script Elora#1 NPC_HUMAN_FEMALE_NOOB,{
+ mesn;
+ mesq l("Good luck out there!");
+ .@m=mobcount("029-1", "all");
+ mesc l("Dark Forest : %s monster(s) left", fnum(.@m));
+ next;
+ select
+ l("Thanks!"),
+ l("Actually, can I return to Artis?");
+ mes "";
+ closeclientdialog;
+ if (@menu == 2)
+ warp "029-0", 90, 31;
+ close;
+OnInit:
+ .distance=5;
+ .sex=G_FEMALE;
+ end;
+}
+
+029-8,37,170,0 duplicate(Neko) Neko#FoS3 NPC_KAYLO
+
+
diff --git a/npc/029-0/mobs.txt b/npc/029-0/mobs.txt
new file mode 100644
index 000000000..b35138188
--- /dev/null
+++ b/npc/029-0/mobs.txt
@@ -0,0 +1,170 @@
+// TMW2 scripts.
+// Author:
+// Jesusalva
+// Description:
+// Fires of Steam: The Death of Andrei Sakar
+
+//////////////////////////////////////////
+// Monster Control
+- script SteamFire#Ctrl 32767,{
+ function SFsetup1;
+ function SFsetup2;
+ function SFsetup3;
+ function SFsetup4;
+ function SFsetup5;
+ function SFsetup6;
+ function SFsetup7;
+ function SFsetup8;
+ function SFreset;
+ end;
+
+OnInit:
+ .e1$="SteamFire#Ctrl::OnEvent1";
+ .e2$="SteamFire#Ctrl::OnEvent2";
+ .e3$="SteamFire#Ctrl::OnEvent3";
+ .e4$="SteamFire#Ctrl::OnEvent4";
+ .e5$="SteamFire#Ctrl::OnEvent5";
+ .e6$="SteamFire#Ctrl::OnEvent6";
+ .e7$="SteamFire#Ctrl::OnEvent7";
+ .e8$="SteamFire#Ctrl::OnEvent8";
+ SFsetup1();
+ SFsetup2();
+ SFsetup3();
+ SFsetup4();
+ SFsetup5();
+ SFsetup6();
+ SFsetup7();
+ SFsetup8();
+ end;
+
+function SFsetup1 {
+ areamonster("029-1", 15, 15, 77, 120, strmobinfo(1, Scar), Scar, 60, .e1$);
+ areamonster("029-1", 15, 15, 255, 255, strmobinfo(1, Crafty), Crafty, 320, .e1$);
+ areamonster("029-1", 15, 15, 255, 255, strmobinfo(1, GiantMutatedBat), GiantMutatedBat, 30, .e1$);
+ areamonster("029-1", 195, 15, 290, 100, strmobinfo(1, Forain), Forain, 54, .e1$);
+ areamonster("029-1", 77, 15, 195, 75, strmobinfo(1, GreenDragon), GreenDragon, 45, .e1$);
+ areamonster("029-1", 75, 75, 205, 100, strmobinfo(1, EliteDuck), EliteDuck, 40, .e1$);
+ areamonster("029-1", 15, 90, 75, 280, strmobinfo(1, Terranite), Terranite, 90, .e1$);
+ areamonster("029-1", 177, 140, 280, 280, strmobinfo(1, JackO), JackO, 80, .e1$);
+ areamonster("029-1", 175, 75, 280, 200, strmobinfo(1, RedSkullSlime), RedSkullSlime, 60, .e1$);
+ areamonster("029-1", 75, 175, 185, 280, strmobinfo(1, Michel), Michel, 60, .e1$);
+ areamonster("029-1", 80, 100, 180, 160, strmobinfo(1, CopperSkullSlime), CopperSkullSlime, 60, .e1$);
+ // MAP BOSS
+ monster("029-1", 147, 153, "Level Boss", MonsterGeneral, 1, .e1$);
+ return;
+}
+
+function SFsetup2 {
+ return;
+}
+
+function SFsetup3 {
+ return;
+}
+
+function SFsetup4 {
+ return;
+}
+
+function SFsetup5 {
+ return;
+}
+
+function SFsetup6 {
+ return;
+}
+
+function SFsetup7 {
+ return;
+}
+
+function SFsetup8 {
+ return;
+}
+
+
+// SFreset(map, state)
+function SFreset {
+ .@m$=getarg(0);
+ .@s=getarg(1);
+ .@m=mobcount(.@m$, "all");
+ if (!.@m) {
+ if ($FIRESOFSTEAM == .@s) {
+ $FIRESOFSTEAM+=1;
+ $FIRESOFSTEAM_CD=gettimetick(2)+10800; // 3 hours cooldown (180 min)
+ return 2;
+ } else {
+ return 1;
+ }
+ } else if (.@m % 25 == 0) {
+ mapannounce(.@m$, sprintf("%s monster(s) left", fnum(.@m)), 0);
+ }
+ return 0;
+}
+
+OnEvent1:
+ .@f=SFreset("029-1", .e1$, 1);
+ if (.@f == 2)
+ mapannounce("029-1", "Dracula's Castle magical seal has dissipated!", 0);
+ if (.@f)
+ SFsetup1();
+ end;
+
+OnEvent2:
+ .@f=SFreset("029-2", .e2$, 2);
+ if (.@f == 2)
+ mapannounce("029-2", "Map cleared!", 0);
+ if (.@f)
+ SFsetup2();
+ end;
+
+OnEvent3:
+ .@f=SFreset("029-3", .e3$, 3);
+ if (.@f == 2)
+ mapannounce("029-3", "Map cleared!", 0);
+ if (.@f)
+ SFsetup3();
+ end;
+
+OnEvent4:
+ .@f=SFreset("029-4", .e4$, 4);
+ if (.@f == 2)
+ mapannounce("029-4", "Map cleared!", 0);
+ if (.@f)
+ SFsetup4();
+ end;
+
+OnEvent5:
+ .@f=SFreset("029-5", .e5$, 5);
+ if (.@f == 2)
+ mapannounce("029-5", "Map cleared!", 0);
+ if (.@f)
+ SFsetup5();
+ end;
+
+OnEvent6:
+ .@f=SFreset("029-6", .e6$, 6);
+ if (.@f == 2)
+ mapannounce("029-6", "Map cleared! You'll need a Druid Tree Branch to use the tree warp to next area.", 0);
+ if (.@f)
+ SFsetup6();
+ end;
+
+OnEvent7:
+ .@f=SFreset("029-7", .e7$, 7);
+ if (.@f == 2)
+ mapannounce("029-7", "Swamps cleared! Meet Andrei Sakar on the other side!", 0);
+ if (.@f)
+ SFsetup7();
+ end;
+
+OnEvent8:
+ .@f=SFreset("029-8", .e8$, 8);
+ if (.@f == 2)
+ mapannounce("029-8", "Map cleared! Contact a GM in Migglemire Town!", 0);
+ if (.@f)
+ SFsetup8();
+ end;
+}
+
+
diff --git a/npc/029-0/sakar.txt b/npc/029-0/sakar.txt
new file mode 100644
index 000000000..17be8e3d1
--- /dev/null
+++ b/npc/029-0/sakar.txt
@@ -0,0 +1,53 @@
+// TMW2 scripts.
+// Author:
+// Jesusalva
+// Description:
+// Fires of Steam: The Death of Andrei Sakar
+
+//////////////////////////////////////////
+// Andrei Sakar Instances
+
+029-8,50,173,0 script Andrei Sakar#FoS298 NPC_ANDREI,{
+ mesn;
+ mesq l("Do you want to return?");
+ next;
+ select
+ l("No, thanks."),
+ l("Yes, I would like to go back to the Swamps."),
+ l("Yes, I would like to go back to Artis.");
+ mes "";
+ closeclientdialog;
+ switch (@menu) {
+ case 2:
+ cwarp "029-7", 87, 56;
+ case 3:
+ cwarp "029-0", 90, 31;
+ }
+ close;
+OnInit:
+ .distance=5;
+ end;
+}
+
+029-8,50,173,0 script Andrei Sakar#FoS298 NPC_ANDREI,{
+ mesn;
+ mesq l("Do you want to advance?");
+ next;
+ select
+ l("No, thanks."),
+ l("Yes, I would like to explore!"),
+ rif($FIRESOFSTEAM >= 8, l("Yes, I would like to go to Asphodel Moors!"));
+ mes "";
+ closeclientdialog;
+ switch (@menu) {
+ case 2:
+ cwarp "029-1", 32, 91;
+ case 3:
+ cwarp "029-8", 51, 174;
+ }
+ close;
+OnInit:
+ .distance=5;
+ end;
+}
+
diff --git a/npc/029-0/warps.txt b/npc/029-0/warps.txt
new file mode 100644
index 000000000..4a559437b
--- /dev/null
+++ b/npc/029-0/warps.txt
@@ -0,0 +1,110 @@
+// TMW2 scripts.
+// Author:
+// Jesusalva
+// Description:
+// Fires of Steam: The Death of Andrei Sakar
+
+//////////////////////////////////////////
+// Warp Control
+
+// FiresOfSteam_Warp(ID)
+function script FiresOfSteam_Warp {
+ if ($FIRESOFSTEAM < getarg(0))
+ end;
+ if ($FIRESOFSTEAM > getarg(0))
+ return true;
+ if ($FIRESOFSTEAM_CD > gettimetick(2)) {
+ dispbottom l("Time left until warp can be used: %s", FuzzyTime($FIRESOFSTEAM_CD));
+ end;
+ }
+ return false;
+}
+
+//////////////////////////////////////////
+029-1,147,153,0 script #291to292 NPC_HIDDEN,1,0,{
+ end;
+OnTouch:
+ if (FiresOfSteam_Warp(2)) goto L_Warp;
+ // Additional conditions here (TODO)
+ // Fallthrough
+L_Warp:
+ warp "029-2", 35, 70;
+ end;
+}
+
+029-2,35,38,0 script #292to293 NPC_HIDDEN,3,0,{
+ end;
+OnTouch:
+ if (FiresOfSteam_Warp(3)) goto L_Warp;
+ // Fallthrough
+L_Warp:
+ warp "029-3", 25, 68;
+ end;
+}
+
+029-3,126,99,0 script #293to294 NPC_HIDDEN,3,0,{
+ end;
+OnTouch:
+ if (FiresOfSteam_Warp(4)) goto L_Warp;
+ // Fallthrough
+L_Warp:
+ warp "029-4", 125, 18;
+ end;
+}
+
+029-4,21,98,0 script #294to295 NPC_HIDDEN,3,0,{
+ end;
+OnTouch:
+ if (FiresOfSteam_Warp(5)) goto L_Warp;
+ // Fallthrough
+L_Warp:
+ warp "029-5", 125, 18;
+ end;
+}
+
+029-5,70,25,0 script #295to296 NPC_HIDDEN,1,0,{
+ end;
+OnTouch:
+ if (FiresOfSteam_Warp(6)) goto L_Warp;
+ // Fallthrough
+L_Warp:
+ warp "029-6", 134, 31;
+ end;
+}
+
+029-6,27,90,0 script Great Tree#296to297 NPC_NO_SPRITE,{
+ if (FiresOfSteam_Warp(7)) goto L_Warp;
+ // Additional conditions here
+ mes l("Apparently, you'll need to use a %s to get this to work!", getitemlink(DruidTreeBranch));
+ if (!countitem(DruidTreeBranch)) close;
+ next;
+ if (askyesno() == ASK_NO) close;
+ closeclientdialog;
+ delitem DruidTreeBranch, 1;
+ // Fallthrough
+L_Warp:
+ warp "029-7", 96, 121;
+ end;
+
+OnInit:
+ .distance=3;
+ end;
+}
+
+029-7,80,49,0 script Dead Tree#297to298 NPC_NO_SPRITE,{
+ end;
+OnTouch:
+ if (FiresOfSteam_Warp(8)) goto L_Warp;
+ // Additional conditions here (TODO)
+ // Fallthrough
+L_Warp:
+ warp "029-8", 51, 174;
+ end;
+
+OnInit:
+ .distance=3;
+ end;
+}
+
+
+