summaryrefslogtreecommitdiff
path: root/npc/003-1/magic.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/003-1/magic.txt')
-rw-r--r--npc/003-1/magic.txt48
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$;
+ }
+}
+