summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2020-09-18 13:54:58 +0000
committerJesusaves <cpntb1@ymail.com>2020-09-18 13:54:58 +0000
commit5ceb48ab3499f6819f363cf0dab88a9ad5cc1b44 (patch)
tree59eab3619e18519e1dbf7e204071292b6681c92a
parent53862bdbb0c4b4529f565f9508c3ab2ff2ca06c3 (diff)
downloadserverdata-5ceb48ab3499f6819f363cf0dab88a9ad5cc1b44.tar.gz
serverdata-5ceb48ab3499f6819f363cf0dab88a9ad5cc1b44.tar.bz2
serverdata-5ceb48ab3499f6819f363cf0dab88a9ad5cc1b44.tar.xz
serverdata-5ceb48ab3499f6819f363cf0dab88a9ad5cc1b44.zip
Cutscene for Morcant.
-rw-r--r--db/re/item_db.conf1
-rw-r--r--npc/008-1-1/_import.txt1
-rw-r--r--npc/008-1-1/cutscene.txt180
-rw-r--r--npc/008-1-1/koga.txt9
-rw-r--r--npc/008-1-1/morcant.txt36
-rw-r--r--npc/008-2-10/airlia.txt14
-rw-r--r--npc/008-2-32/thamas.txt58
-rw-r--r--npc/functions/quest-debug/100-General_Narrator.txt3
8 files changed, 298 insertions, 4 deletions
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index 1dce23e9..6be57083 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -1215,6 +1215,7 @@ item_db: (
Script: <"
sc_start SC_ATTHASTE_POTION1, 80000, 300; // These are totally placeholders. We want STR + 10 and VIT + 5 and max. HP + 2000 for three minutes.
sc_start SC_INCHITRATE, 80000, 300;
+ getitembound EmptyBowl, 1, IBT_ACCOUNT;
">
},
{
diff --git a/npc/008-1-1/_import.txt b/npc/008-1-1/_import.txt
index 4788f56c..c51a2b4e 100644
--- a/npc/008-1-1/_import.txt
+++ b/npc/008-1-1/_import.txt
@@ -2,6 +2,7 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/008-1-1/_mobs.txt",
"npc/008-1-1/_warps.txt",
+"npc/008-1-1/cutscene.txt",
"npc/008-1-1/galimatia.txt",
"npc/008-1-1/koga.txt",
"npc/008-1-1/morcant.txt",
diff --git a/npc/008-1-1/cutscene.txt b/npc/008-1-1/cutscene.txt
new file mode 100644
index 00000000..4d50ea1b
--- /dev/null
+++ b/npc/008-1-1/cutscene.txt
@@ -0,0 +1,180 @@
+// TMW Script
+// Author:
+// Jesusalva
+// Description:
+// Cutscenes for Main Story
+
+008-1-1,42,63,0 script #MQ2Cutscene NPC_HIDDEN,0,1,{
+ end;
+
+OnTouch:
+ .@q=getq(General_Narrator);
+ if (.@q != 2)
+ end;
+ if (getmap() != "008-1-1")
+ end;
+ // Cutscene time!
+ // m (from main quest) 02 map 1
+ .@mapn$="m021@"+getcharid(0);
+ .@mapx$="m022@"+getcharid(0);
+ // Build instance if it doesn't exists or has been reallocated
+ // (This only happens if you escape the map - edge case scenarios)
+ if (instanceowner(@mainquestinst) != getcharid(3)) {
+ @mainquestinst = instance_create("m102@a"+getcharid(0), getcharid(3), IOT_CHAR);
+ instance_attachmap("008-1-1", @mainquestinst, false, .@mapn$);
+ instance_attachmap("008-2-32", @mainquestinst, false, .@mapx$);
+ // Instance lasts 60 minutes
+ instance_set_timeout(3600, 3600, @mainquestinst);
+ instance_init(@mainquestinst);
+ } else {
+ // Restart instance timer if it already exists
+ instance_set_timeout(3600, 3600, @mainquestinst);
+ }
+ getmapxy(.@m$, .@x, .@y, 0);
+ warp(.@mapn$, .@x, .@y);
+ addtimer(500, instance_npcname(.name$, @mainquestinst)+"::OnBegin");
+ end;
+
+OnBegin:
+ .@n$=instance_npcname(.name$);
+ .@mc$=instance_npcname("Morcant");
+
+ // Freeze player
+ // (M+ may render this incorrectly but it is not my job to care with that)
+ setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_MOVE, true);
+ sc_start(SC_STUN, 360000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK);
+
+ // Begin moving Morcant
+ npcwalkto(58, 64, .@mc$);
+ sleep2(3000);
+ getmapxy(.@m$, .@x, .@y, 0);
+ npcwalkto(.@x + 1, .@y, .@mc$);
+ sleep2(1000);
+ unitwarp(getnpcid(.@mc$), .@m$, .@x + 1, .@y); // FIXME PLACEHOLDER
+ npctalk l("Hoho!"), .@mc$;
+ sleep2(2500);
+ npctalk l("Look what the shore brought me!"), .@mc$;
+ sleep2(3000);
+ npctalk l("Rarely anyone uses this port."), .@mc$;
+ sleep2(3000);
+ npctalk l("...Well, anyone adhering to the law, at least! Hahahah!"), .@mc$;
+ sleep2(3000);
+ npctalk l("Anyway, come in! You must be hungry."), .@mc$;
+ sleep2(3000);
+ npcwalkto(51, 57, .@mc$);
+ sleep2(1000);
+ sc_end(SC_STUN);
+ setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_MOVE, false);
+ dispbottom col(l("1-1. Follow Morcant into his house."), 1);
+ sleep2(500);
+ .@mapx$="m022@"+getcharid(0);
+ unitwarp(getnpcid(.@mc$), .@mapx$, 40, 24);
+ end;
+}
+
+// Series 2
+008-1-1,51,58,0 script #MQ2Cutscene2 NPC_HIDDEN,0,1,{
+ end;
+OnTouch:
+ if (getmap() == "008-1-1") end;
+ .@n$=instance_npcname(.name$);
+ .@mapx$="m022@"+getcharid(0);
+ warp(.@mapx$, 40, 36);
+ addtimer(3000, .@n$+"::OnStunlock");
+ end;
+
+OnStunlock:
+ .@n$=instance_npcname(.name$);
+ addtimer(300, .@n$+"::OnBegin");
+ // Freeze player
+ // (M+ may render this incorrectly but it is not my job to care with that)
+ setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_MOVE, true);
+ sc_start(SC_STUN, 360000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK);
+ end;
+
+OnBegin:
+ .@n$=instance_npcname(.name$);
+ .@mc$=instance_npcname("Morcant");
+ .@tm$=instance_npcname("Thamas");
+ npctalk l("Welcome to my humble abode."), .@mc$;
+ sleep2(500);
+ npctalk lg("Who is that fellow?"), .@tm$;
+ sleep2(2500);
+ npctalk l("Thamas, this is a stowaway who reached here from Artis."), .@mc$;
+ sleep2(2500);
+ npctalk lg("Yes, I remember her.", "Yes, I remember him."), .@tm$;
+ sleep2(3000);
+ npctalk l("Anyway, I assume you're trying to get into Hurnscald?"), .@mc$;
+ sleep2(2100);
+ npctalk l("Really? You should be careful, then."), .@tm$;
+ sleep2(2500);
+ npctalk l("Hurnscald is under the domain of the Brotherhood."), .@tm$;
+ sleep2(3000);
+ npctalk l("Shaddy fellas, I do not trust them the sightliest."), .@tm$;
+ sleep2(3500);
+ npctalk l("*ahem*!"), .@mc$;
+ sleep2(2000);
+ npctalk l("Hurnscald is just east of here."), .@mc$;
+ sleep2(2000);
+ npctalk l("Keep following the road, you can't miss it."), .@mc$;
+ sleep2(3000);
+ npctalk l("Do not venture into south, though."), .@mc$;
+ sleep2(2000);
+ npctalk l("It is haunted."), .@mc$;
+ sleep2(2500);
+ //atcommand("@refresh"); // FIXME -> Hercules upstream broke @refresh
+ // TODO FIXME: Check if x-1 is a collision, move to x+1 if it is
+ getmapxy(.@m$, .@x, .@y, 0);
+ npcwalkto(.@x - 1, .@y, .@mc$);
+ sleep2(1000);
+ unitwarp(getnpcid(.@mc$), .@m$, .@x - 1, .@y); // FIXME PLACEHOLDER
+ npctalk col(l("*Hey, psst.*"), 9), .@mc$;
+ sleep2(1000);
+ npctalk col(l("*I assume you're here for the Brotherhood, right?*"), 9), .@mc$;
+ sleep2(2500);
+ npctalk col(l("*Reaching Hurnscald, look for a girl called Airlia.*"), 9), .@mc$;
+ sleep2(2500);
+ npctalk col(l("*Whisper her the... password, and she'll lead you to Jonatas.*"), 9), .@mc$;
+ sleep2(3100);
+ npctalk col(l("*I don't know why Sophiahalla sent you here...*"), 9), .@mc$;
+ sleep2(2200);
+ npctalk col(l("*But I am just a retired merchant, hohoho!*"), 9), .@mc$;
+ sleep2(2200);
+ npctalk l("Anyway, that's it. Here, have a bowl of stew, Morcant special!"), .@mc$;
+ sleep2(2500);
+ npctalk l("I'll be back to the port, so see you later!"), .@mc$;
+ npcwalkto(40, 38, .@mc$);
+ sleep2(2000);
+ .@mapx$="m021@"+getcharid(0);
+ unitwarp(getnpcid(.@mc$), .@mapx$, 51, 58);
+ sc_end(SC_STUN);
+ setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_MOVE, false);
+ sleep2(1000);
+ getmapxy(.@m$, .@x, .@y, 0);
+ warp "008-2-32", .@x, .@y;
+ getitembound SailorStew, 1, IBT_ACCOUNT;
+ setq General_Narrator, 3;
+ end;
+}
+
+// WHAT ARE YOU DOING
+008-1-1,83,65,0 script #MQ2CutsceneWAYD NPC_HIDDEN,0,10,{
+ end;
+
+OnTouch:
+ if (getmap() == "008-1-1") end;
+ // What are you doing?!
+ slide 51, 63;
+ mesc l("I really should follow Morcant into his house.");
+ close;
+}
+
+008-2-32,40,37,0 script #MQ2Cutscene2WAYD NPC_HIDDEN,1,0,{
+ end;
+OnTouch:
+ if (getmap() == "008-2-32") end;
+ slide 40, 36;
+ dispbottom l("But you just arrived! Seriously. Stop.");
+ end;
+}
+
diff --git a/npc/008-1-1/koga.txt b/npc/008-1-1/koga.txt
index 26f12772..34bc75fc 100644
--- a/npc/008-1-1/koga.txt
+++ b/npc/008-1-1/koga.txt
@@ -6,6 +6,10 @@
// THIS IS A PLACEHOLDER!
008-1-1,30,60,0 script Koga#008-1-1 NPC_KOGA,{
+ function kogaWrongMap;
+ if (getmap() != "008-1-1")
+ kogaWrongMap();
+
speech
l("So, finally, we are here."),
l("Do you want to go back to Artis? You really should be afraid of the Legion there, now that you have been here in Woodland. They somehow smell the odor of the Brotherhood.");
@@ -20,6 +24,11 @@
}
close;
+function kogaWrongMap {
+ mesc l("I've just arrived here. I should enter in Morcant's house I guess.");
+ close;
+}
+
OnInit:
.bodytype = BODYTYPE_3;
.distance = 4;
diff --git a/npc/008-1-1/morcant.txt b/npc/008-1-1/morcant.txt
index e5560730..7735714d 100644
--- a/npc/008-1-1/morcant.txt
+++ b/npc/008-1-1/morcant.txt
@@ -11,10 +11,44 @@
l("My name is Morcant. I am a Captain, a bit bored since this harbor is not frequented much."),
l("I would like to offer you food and tell you stories, but.. have you ever heard of WildX? I won't need to say more, do I?");
+ next;
+ select
+ l("Not really but okay...?"),
+ l("Actually, I am after your Stew recipe!"),
+ l("Anything to do around these parts?"),
+ l("Can you tell me the directions again?");
+ mes "";
+ switch (@menu)
+ {
+ case 2:
+ mesn;
+ mesq l("Hohoho! That is a family's trade secret!");
+ break;
+ case 3:
+ mesn;
+ mesq l("Hmm, you might want to ask Galimatia, my neighbor.");
+ next;
+ mesn;
+ mesq l("She is always taking care of her bees, though.");
+ break;
+ case 4:
+ mesn;
+ mesq l("There should be a fair number of signposts around. Anyway.");
+ next;
+ mesn;
+ mesq l("Go east to reach Hurnscald. Just follow the road, really.");
+ next;
+ mesn;
+ mesq l("And do not go south. It is haunted.");
+ break;
+ }
close;
OnInit:
+OnInstanceInit:
.bodytype = BODYTYPE_3;
- .distance = 2;
+ .distance = 4;
+ .speed=120;
+ //.alwaysVisible=true;
end;
}
diff --git a/npc/008-2-10/airlia.txt b/npc/008-2-10/airlia.txt
index 05df3ef2..fae76efb 100644
--- a/npc/008-2-10/airlia.txt
+++ b/npc/008-2-10/airlia.txt
@@ -9,8 +9,20 @@
speech
l("Hello."),
l("Do you know where the graveyard is?"),
- lg("No? Better is that. Its so dangerous there.");
+ lg("No? Better that way. It's so dangerous there.");
+ next;
+ select
+ l("Okay, thanks."),
+ l("*whisper* Sagratha is great.");
+ mes "";
+ if (@menu == 2) {
+ mesn;
+ mesq l("Ah, uhm, erm. The Governor is busy arguing with the rest of the team.");
+ next;
+ mesn;
+ mesq l("I'm afraid you'll need to wait them to reach a consensus first, before he can met with you.");
+ }
close;
OnInit:
diff --git a/npc/008-2-32/thamas.txt b/npc/008-2-32/thamas.txt
index 42871ec6..a860e562 100644
--- a/npc/008-2-32/thamas.txt
+++ b/npc/008-2-32/thamas.txt
@@ -11,10 +11,66 @@
l("I am a legion soldier who never talks much, until Jesusalva or WildX puts words in my mouth."),
l("Until then, let me be quiet. Talk to you later.");
+ next;
+ select
+ l("Okay, sorry for disturbing."),
+ l("But you said you remember me!"),
+ l("What do you think about this stew?"),
+ l("Where are you from, though? You have an odd... behavior."),
+ l("What is a legion soldier even doing here?"),
+ l("Who are Jesusalva and WildX?");
+ mes "";
+ switch (@menu)
+ {
+ case 2:
+ mesn;
+ mesq l("And I do. We were on the same ship a few times.");
+ next;
+ mesn;
+ mesq l("You stood out and I stayed on my corner. That's all.");
+ next;
+ mesn;
+ mesq l("Stop making questions which make no sense...");
+ break;
+ case 3:
+ mesn;
+ mesq l("Eh? It is okay, I guess.");
+ next;
+ mesn;
+ mesq l("I hear if you get a recipe book, you could cook things yourself.");
+ next;
+ mesn;
+ mesq l("Maybe someone in Hurnscald makes these books. I don't really care.");
+ next;
+ mesn;
+ mesq l("Stop making questions which make no sense...");
+ break;
+ case 4:
+ mesn;
+ mesq l("I'm from Esperia.");
+ next;
+ mesn;
+ mesq l("It would be tiring to describe the wonders of my hometown.");
+ next;
+ mesn;
+ mesq l("Why don't you look an article about it on this [%s|tour guide%s], instead?", "@@https://wiki.themanaworld.org/index.php/Esperia", "@@");
+ next;
+ mesn;
+ mesq l("Stop making questions which make no sense...");
+ break;
+ case 5:
+ case 6:
+ mesn;
+ mesq l("Honestly? I don't know.");
+ next;
+ mesn;
+ mesq l("Stop making questions which make no sense...");
+ break;
+ }
close;
OnInit:
.bodytype = BODYTYPE_3;
- .distance = 2;
+ .distance = 4;
end;
}
diff --git a/npc/functions/quest-debug/100-General_Narrator.txt b/npc/functions/quest-debug/100-General_Narrator.txt
index 37a674c5..a88f5d6a 100644
--- a/npc/functions/quest-debug/100-General_Narrator.txt
+++ b/npc/functions/quest-debug/100-General_Narrator.txt
@@ -15,7 +15,8 @@ function script QuestDebug100 {
GenericQuestDebug General_Narrator,
l("Game introduction"), 0,
l("Arrived in Artis"), 1,
- l("Arrived in Argaes"), 2;
+ l("Arrived in Argaes"), 2,
+ l("Sent to Airlia"), 3;
if (@menuret < 0)
{