summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/quest_db.conf4
-rw-r--r--npc/017-1/townhall.txt45
2 files changed, 46 insertions, 3 deletions
diff --git a/db/quest_db.conf b/db/quest_db.conf
index 2e40442f4..c10b77fad 100644
--- a/db/quest_db.conf
+++ b/db/quest_db.conf
@@ -449,6 +449,10 @@ quest_db: (
Id: 278
Name: "LoFQuest_Hitchhiker"
},
+{
+ Id: 279
+ Name: "LoFQuest_Barbara"
+},
// ID 300 to 320: Seasonal/Annual/Monthly quests
{
diff --git a/npc/017-1/townhall.txt b/npc/017-1/townhall.txt
index 9b78463ce..61df25334 100644
--- a/npc/017-1/townhall.txt
+++ b/npc/017-1/townhall.txt
@@ -64,15 +64,54 @@ OnInit:
.distance=1;
end;
}
+/////////////////////////////
+// Main Quest 6
+// LoF Arc
+/////////////////
+// Check instances and rebuild if needed
+// Returns map name
+// BarbaraInstCheck( {submap=mines} )
+// 0- Chamber ; 1 - Mines ; 2 - Hall ; 3 - Shrine
+function script BarbaraInstCheck {
+ .@house=getarg(0, true);
+
+ .@q2=getq2(LoFQuest_Barbara);
+ // Map name limit: 4 chars (sgt1)
+ .@map0$="brb0@"+getcharid(0);
+ .@map1$="brb1@"+getcharid(0);
+ .@map2$="brb2@"+getcharid(0);
+ .@map3$="brb3@"+getcharid(0);
+ if (!(isinstance(.@q2) && .@q2 != 0)) {
+ .@inst = instance_create("Forgotten Shrine "+getcharid(0), getcharid(3), IOT_CHAR);
+ instance_attachmap("018-6-0", .@inst, false, .@map0$);
+ instance_attachmap("018-6-1", .@inst, false, .@map1$);
+ //instance_attachmap("018-6-2", .@inst, false, .@map2$);
+ //instance_attachmap("018-6-3", .@inst, false, .@map3$);
+ // Instance lasts two hours
+ instance_set_timeout(7200, 7200, .@inst);
+ instance_init(.@inst);
+ setq2 LoFQuest_Barbara, .@inst;
+ }
+
+ // It broke
+ if (getmapinfo(MAPINFO_SIZE_X, .@map1$) <= 0) {
+ setq2 LoFQuest_Barbara, 0;
+ // Infinite Loop?
+ return callfunc("BarbaraInstCheck", .@house);
+ }
+
+ // Return map name
+ return getd(".@map"+.@house+"$");
+}
017-1,32,44,0 script #LoF_EleniumMines NPC_HIDDEN,{
end;
OnTouch:
// TODO: OnQuest: Instance
- .@q=getq(General_Narrator);
- if (.@q >= 17) {
- warp "018-6-1", 80, 199;
+ .@q=getq(LoFQuest_Barbara);
+ if (.@q >= 1) {
+ warp BarbaraInstCheck(1), 80, 199;
} else {
warp "018-6-1", 80, 199;
}