diff options
Diffstat (limited to 'npc/003-1/magic.txt')
-rw-r--r-- | npc/003-1/magic.txt | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/npc/003-1/magic.txt b/npc/003-1/magic.txt index 61b97c9c8..9fe18037b 100644 --- a/npc/003-1/magic.txt +++ b/npc/003-1/magic.txt @@ -12,9 +12,20 @@ OnTouch: mesc l("You cannot enter here while you have event weapons or a cart."), 1; close; } - // TODO: Main Quest Instance + // TODO: Main Quest Event Control if (LUA_ASKED_TO_SAVE_PROFESSOR) { - dispbottom "Runtime error."; + .@mapn$="0030@"+getcharid(0); + // Instance doesn't exists + if (!(isinstance(LUA_ASKED_TO_SAVE_PROFESSOR)) || instanceowner(LUA_ASKED_TO_SAVE_PROFESSOR) != getcharid(3)) { + .@inst = instance_create("Academy "+getcharid(0), getcharid(3), IOT_CHAR); + instance_attachmap("003-0", .@inst, false, .@mapn$); + // Instance lasts 15 minutes + instance_set_timeout(900, 900, .@inst); + instance_init(.@inst); + LUA_ASKED_TO_SAVE_PROFESSOR=.@inst; + } + warp .@mapn$, 48, 51; + end; } /* if (countitem(JesusalvaGrimorium) <= 0 || MAGIC_LVL < 2) { @@ -26,3 +37,36 @@ OnTouch: warp "003-0", 48, 51; end; } + +function script SaggyInstCheck { + .@house=getarg(0, true); + + .@q2=getq2(HurnscaldQuest_Sagratha); + // Map name limit: 4 chars (sgt1) + .@mapn$="sgt1@"+getcharid(0); + .@map2$="sgt2@"+getcharid(0); + if (!(isinstance(.@q2) && .@q2 != 0)) { + .@inst = instance_create("Sagratha House "+getcharid(0), getcharid(3), IOT_CHAR); + instance_attachmap("014-5-1", .@inst, false, .@mapn$); + //instance_attachmap("015-8", .@inst, false, .@mapn$); + instance_attachmap("015-8-1", .@inst, false, .@map2$); + // Instance lasts one hour + instance_set_timeout(3600, 3600, .@inst); + instance_init(.@inst); + setq2 HurnscaldQuest_Sagratha, .@inst; + } + + // It broke + if (getmapinfo(MAPINFO_SIZE_X, .@mapn$) <= 0) { + setq2 HurnscaldQuest_Sagratha, 0; + // Infinite Loop? + return callfunc("SaggyInstCheck", .@house); + } + + if (.@house) { + return .@mapn$; + } else { + return .@map2$; + } +} + |