diff options
-rw-r--r-- | db/quest_db.conf | 4 | ||||
-rw-r--r-- | npc/017-1/townhall.txt | 45 |
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; } |