summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2018-06-22 00:20:29 +0200
committerGitHub <noreply@github.com>2018-06-22 00:20:29 +0200
commit3e3a0935340a607f6b4a4c6ff193de63e5d69430 (patch)
tree68e1554ea8174c0f63d44659306aad4f1a3fae97
parentb57232ac29732ff526eca750dee295a871861ed6 (diff)
parent82d5ed8ee5349e0338f1819ecf472efe95523ae9 (diff)
downloadhercules-3e3a0935340a607f6b4a4c6ff193de63e5d69430.tar.gz
hercules-3e3a0935340a607f6b4a4c6ff193de63e5d69430.tar.bz2
hercules-3e3a0935340a607f6b4a4c6ff193de63e5d69430.tar.xz
hercules-3e3a0935340a607f6b4a4c6ff193de63e5d69430.zip
Merge pull request #1924 from Asheraf/instance3
Update Instance generating behaviour
-rw-r--r--npc/instances/EndlessTower.txt26
-rw-r--r--npc/instances/NydhoggsNest.txt25
-rw-r--r--npc/instances/OrcsMemory.txt27
-rw-r--r--npc/instances/SealedShrine.txt40
-rw-r--r--npc/re/instances/BakonawaLake.txt20
-rw-r--r--npc/re/instances/BangungotHospital.txt26
-rw-r--r--npc/re/instances/BuwayaCave.txt27
-rw-r--r--npc/re/instances/EclageInterior.txt24
-rw-r--r--npc/re/instances/HazyForest.txt51
-rw-r--r--npc/re/instances/MalangdoCulvert.txt25
-rw-r--r--npc/re/instances/OldGlastHeim.txt24
-rw-r--r--npc/re/instances/WolfchevLaboratory.txt41
-rw-r--r--npc/re/instances/ghost_palace.txt29
-rw-r--r--npc/re/instances/octopus_cave.txt27
-rw-r--r--npc/re/instances/saras_memory.txt22
-rw-r--r--src/map/script.c48
16 files changed, 236 insertions, 246 deletions
diff --git a/npc/instances/EndlessTower.txt b/npc/instances/EndlessTower.txt
index dc60ce766..2964f7e2a 100644
--- a/npc/instances/EndlessTower.txt
+++ b/npc/instances/EndlessTower.txt
@@ -220,23 +220,21 @@ e_tower,81,105,0 script Tower Protection Stone 2_MONEMUS,{
switch (select(.@str$, "Enter the Dungeon", "Return to Alberta", "Cancel")) {
case 1:
.@instance = instance_create(.@md_name$, .@party_id);
- if (.@instance < 0) {
- mesf("Party Name: %s", .@p_name$);
- mesf("Party Leader: %s", strcharinfo(PC_NAME));
- mesf("^0000ff%s ^000000- Reservation Failed!", .@md_name$);
- close();
+ if (.@instance >= 0) {
+ for (.@i = 1; .@i <= 6; ++.@i) {
+ if (instance_attachmap(.@i + "@tower", .@instance) == "") {
+ mesf("Party Name: %s", .@p_name$);
+ mesf("Party Leader: %s", strcharinfo(PC_NAME));
+ mesf("^0000ff%s ^000000- Reservation Failed!", .@md_name$);
+ instance_destroy(.@instance);
+ close();
+ }
+ }
+ instance_set_timeout(14400, 300, .@instance);
+ instance_init(.@instance);
}
mesf("^0000ff%s^000000 - Try to reserve", .@md_name$);
mes("After making a reservation, you have to talk to NPC behind and select the menu 'Enter the Dungeon' to enter the dungeon.");
- for (.@i = 1; .@i <= 6; ++.@i) {
- if (instance_attachmap(.@i + "@tower", .@instance) == "") {
- mesf("^0000ff%s ^000000- Reservation Failed!", .@md_name$);
- instance_destroy(.@instance);
- close();
- }
- }
- instance_set_timeout(14400, 300, .@instance);
- instance_init(.@instance);
close();
case 2:
callsub(L_Enter, 0, 1, .@md_name$, .@p_name$);
diff --git a/npc/instances/NydhoggsNest.txt b/npc/instances/NydhoggsNest.txt
index 46ffdaef3..d39d90cd3 100644
--- a/npc/instances/NydhoggsNest.txt
+++ b/npc/instances/NydhoggsNest.txt
@@ -128,21 +128,18 @@ nyd_dun02,100,201,3 script Yggdrasil Gatekeeper HIDDEN_NPC,8,8,{
switch (select("Please allow me to enter.", "I want to go in.", "I want to leave.")) {
case 1:
.@instance = instance_create(.@md_name$, .@party_id);
- if (.@instance < 0) {
- mes("[Yggdrasil Gatekeeper]");
- mes("The Guardian seems to wish to be alone. I will go in and check, please wait out here.");
- close();
+ if (.@instance >= 0) {
+ for (.@i = 1; .@i <= 2; ++.@i) {
+ if (instance_attachmap(.@i + "@nyd", .@instance) == "") {
+ mes("[Yggdrasil Gatekeeper]");
+ mes("The Guardian seems to wish to be alone. I will go in and check, please wait out here.");
+ instance_destroy(.@instance);
+ close();
+ }
+ }
+ instance_set_timeout(144000, 300, .@instance);
+ instance_init(.@instance);
}
- for (.@i = 1; .@i <= 2; ++.@i) {
- if (instance_attachmap(.@i + "@nyd", .@instance) == "")
- break;
- }
- if (.@i < 2) {
- instance_destroy(.@instance);
- close();
- }
- instance_set_timeout(144000, 300, .@instance);
- instance_init(.@instance);
mes("[Yggdrasil Gatekeeper]");
mes("I've recorded your request, are you ready to go inside?");
next();
diff --git a/npc/instances/OrcsMemory.txt b/npc/instances/OrcsMemory.txt
index 1aaf2fd42..383786696 100644
--- a/npc/instances/OrcsMemory.txt
+++ b/npc/instances/OrcsMemory.txt
@@ -67,23 +67,20 @@ gef_fild10,242,202,0 script Dimensional Gorge Piece 2_MONEMUS,{
switch (select(.@str$, "Enter the Dungeon", "Cancel")) {
case 1:
.@instance = instance_create(.@md_name$, .@party_id);
- if (.@instance < 0) {
- mesf("Party Name: %s", .@p_name$);
- mesf("Party Leader: %s", strcharinfo(PC_NAME));
- mesf("^0000ff%s ^000000 - Reservation Failed.", .@md_name$);
- close();
+ if (.@instance >= 0) {
+ for (.@i = 1; .@i <= 2; ++.@i) {
+ if (instance_attachmap(.@i + "@orcs", .@instance) == "") {
+ mesf("Party Name: %s", .@p_name$);
+ mesf("Party Leader: %s", strcharinfo(PC_NAME));
+ mesf("^0000ff%s ^000000 - Reservation Failed.", .@md_name$);
+ instance_destroy(.@instance);
+ close();
+ }
+ }
+ instance_set_timeout(7200, 300, .@instance);
+ instance_init(.@instance);
}
mesf("^0000ff%s^000000- Attempting to book an entrance", .@md_name$);
- for (.@i = 1; .@i <= 2; ++.@i) {
- if (instance_attachmap(.@i + "@orcs", .@instance) == "")
- break;
- }
- if (.@i < 2) {
- instance_destroy(.@instance);
- close();
- }
- instance_set_timeout(7200, 300, .@instance);
- instance_init(.@instance);
mesf("After making a reservation, you have to select 'Enter the Dungeon' from the menu if you wish to enter the %s.", .@md_name$);
close();
case 2:
diff --git a/npc/instances/SealedShrine.txt b/npc/instances/SealedShrine.txt
index 3bc3d951a..91771c31c 100644
--- a/npc/instances/SealedShrine.txt
+++ b/npc/instances/SealedShrine.txt
@@ -118,37 +118,33 @@ monk_test,309,146,3 script Friar Patrick#edq 4_M_OLDFRIAR,{
mesf("Party name is %s...", getpartyname(.@party_id));
mesf("Name of the leader is %s...", strcharinfo(PC_NAME));
.@instance = instance_create(_("Sealed Catacomb"), .@party_id);
- if (.@instance < 0) {
- mes("Umm... But it seems that there is a problem here... I'll check quickly. Please wait.");
- } else {
+ if (.@instance >= 0) {
for (.@i = 1; .@i <= 2; .@i++) {
if (instance_attachmap(.@i + "@cata", .@instance) == "") {
- mesf("Failed to attach %d@cata as a map!", .@i);
+ mes("Umm... But it seems that there is a problem here... I'll check quickly. Please wait.");
instance_destroy(.@instance);
close();
}
}
-
instance_set_timeout(7200, 300, .@instance);
instance_init(.@instance);
-
- mes("Okay... I'll adjust the shrine's seal so that you and your group can enter.");
- next();
- mes("[Friar Patrick]");
- mes("You will see a sign when the seal has broken. Please wait until the sign appears...");
- next();
- mes("[Friar Patrick]");
- mes("When you see the sign, put your hands on the gravestone... Then you can move inside.");
- next();
- mes("[Friar Patrick]");
- mes("One thing that you should remember is... Anyone who enters this shrine will be cursed by Baphomet and cannot enter or leave while they are cursed.");
- next();
- mes("[Friar Patrick]");
- mes("And one more thing... In this cursed area, some skills, which are protected by outer physical power are prohibited by the effect of the seal.");
- next();
- mes("[Friar Patrick]");
- mes("For example, the skills like ^0000FFSafety Wall and Assumptio^000000... So you'd better prepare before entering the shrine.");
}
+ mes("Okay... I'll adjust the shrine's seal so that you and your group can enter.");
+ next();
+ mes("[Friar Patrick]");
+ mes("You will see a sign when the seal has broken. Please wait until the sign appears...");
+ next();
+ mes("[Friar Patrick]");
+ mes("When you see the sign, put your hands on the gravestone... Then you can move inside.");
+ next();
+ mes("[Friar Patrick]");
+ mes("One thing that you should remember is... Anyone who enters this shrine will be cursed by Baphomet and cannot enter or leave while they are cursed.");
+ next();
+ mes("[Friar Patrick]");
+ mes("And one more thing... In this cursed area, some skills, which are protected by outer physical power are prohibited by the effect of the seal.");
+ next();
+ mes("[Friar Patrick]");
+ mes("For example, the skills like ^0000FFSafety Wall and Assumptio^000000... So you'd better prepare before entering the shrine.");
} else {
mes("[Friar Patrick]");
mes("Umm... I recognize your courage, but... I can't permit anyone to enter this place. I can only permit the leader of a party to enter first.");
diff --git a/npc/re/instances/BakonawaLake.txt b/npc/re/instances/BakonawaLake.txt
index 65622171b..5226db6cc 100644
--- a/npc/re/instances/BakonawaLake.txt
+++ b/npc/re/instances/BakonawaLake.txt
@@ -82,18 +82,16 @@ ma_scene01,174,179,4 script Taho 4_M_DEWZATIMAN,{
switch (.@i) {
case 1:
.@instance = instance_create(.@md_name$, .@party_id);
- if (.@instance < 0) {
- mes("[Taho]");
- mes("Oh, the rope got dropped. I have to make a new one.");
- close();
- }
- if (instance_attachmap("1@ma_b", .@instance) == "") {
- mesf("^0000ff%s^000000 - Reservation Failed!", .@md_name$);
- instance_destroy(.@instance);
- close();
+ if (.@instance >= 0) {
+ if (instance_attachmap("1@ma_b", .@instance) == "") {
+ mes("[Taho]");
+ mes("Oh, the rope got dropped. I have to make a new one.");
+ instance_destroy(.@instance);
+ close();
+ }
+ instance_set_timeout(7200, 300, .@instance);
+ instance_init(.@instance);
}
- instance_set_timeout(7200, 300, .@instance);
- instance_init(.@instance);
mes("[Taho]");
mes("Now I'm weaving, so you can go down when I'm done.");
close();
diff --git a/npc/re/instances/BangungotHospital.txt b/npc/re/instances/BangungotHospital.txt
index 9e8e836c4..6972322e1 100644
--- a/npc/re/instances/BangungotHospital.txt
+++ b/npc/re/instances/BangungotHospital.txt
@@ -274,21 +274,19 @@ L_Enter:
switch(select(((getarg(0))?"Prepare to enter the second floor.":""), "Enter the second floor.", "Do not enter.")) {
case 1:
.@instance = instance_create(.@md_name$,getcharid(CHAR_ID_PARTY));
- if (.@instance < 0) {
- mes "[Nurse Maenne]";
- mes "A critical situation has happened.";
- mes "You can't go up to the 2nd floor.";
- close2;
- cutin "",255;
- end;
- }
- if (instance_attachmap("1@ma_h",.@instance) == "") {
- mes "^0000ff"+.@md_name$+"^000000 - Reservation Failed!";
- instance_destroy(.@instance);
- close;
+ if (.@instance >= 0) {
+ if (instance_attachmap("1@ma_h", .@instance) == "") {
+ mes("[Nurse Maenne]");
+ mes("A critical situation has happened.");
+ mes("You can't go up to the 2nd floor.");
+ instance_destroy(.@instance);
+ close2();
+ cutin("", 255);
+ end;
+ }
+ instance_set_timeout(3600, 300, .@instance);
+ instance_init(.@instance);
}
- instance_set_timeout 3600,300,.@instance;
- instance_init(.@instance);
mes "[Nurse Maenne]";
mes "We are preparing to go up";
mes "to the second floor.";
diff --git a/npc/re/instances/BuwayaCave.txt b/npc/re/instances/BuwayaCave.txt
index 393ac5d9e..1d3eddc6a 100644
--- a/npc/re/instances/BuwayaCave.txt
+++ b/npc/re/instances/BuwayaCave.txt
@@ -93,22 +93,19 @@ ma_fild02,312,317,5 script Guard#buwaya_cave 4_MAL_SOLDIER,{
// fall through
}
.@instance = instance_create(.@md_name$, .@party_id);
- if (.@instance < 0) {
- mes("[Guard]");
- mesf("Party name is... %s.", getpartyname(.@party_id));
- mesf("Party leader is... %s", strcharinfo(PC_NAME));
- mesf("^0000ff%s^000000 cannot be opened now.", .@md_name$);
- mes("Please try a moment later.");
- close();
+ if (.@instance >= 0) {
+ if (instance_attachmap("1@ma_c", .@instance) == "") {
+ mes("[Guard]");
+ mesf("Party name is... %s.", getpartyname(.@party_id));
+ mesf("Party leader is... %s", strcharinfo(PC_NAME));
+ mesf("^0000ff%s^000000 cannot be opened now.", .@md_name$);
+ mes("Please try a moment later.");
+ instance_destroy(.@instance);
+ close();
+ }
+ instance_set_timeout(3600, 300, .@instance);
+ instance_init(.@instance);
}
- if (instance_attachmap("1@ma_c", .@instance) == "") {
- mesf("^0000ff%s^000000 - Reservation Failed!", .@md_name$);
- instance_destroy(.@instance);
- close();
- }
- instance_set_timeout(3600, 300, .@instance);
- instance_init(.@instance);
-
mes("[Guard]");
mesf("I will open up the tunnel to ^0000ff%s^000000.", .@md_name$);
mes("I wish you good luck.");
diff --git a/npc/re/instances/EclageInterior.txt b/npc/re/instances/EclageInterior.txt
index 6b2808e05..2b2117b93 100644
--- a/npc/re/instances/EclageInterior.txt
+++ b/npc/re/instances/EclageInterior.txt
@@ -55,20 +55,18 @@ ecl_hub01,132,12,3 script Chief of Staff#tl01::EclInstance 4_F_FAIRY,{
switch (select("Enter it.", "Forget it.")) {
case 1:
.@instance = instance_create(.@md_name$, .@party_id);
- if (.@instance < 0) {
- mes("[Shenime]");
- mes("There are some soldiers dispatched by Mayor not too long ago.");
- mes("I should sure hope that you aren't the disturbance they're looking for, right?");
- close();
- }
- if (instance_attachmap("1@ecl", .@instance) == "") {
- mesf("^0000ff%s^000000 - Reservation Failed!", .@md_name$);
- instance_destroy(.@instance);
- close();
+ if (.@instance >= 0) {
+ if (instance_attachmap("1@ecl", .@instance) == "") {
+ mes("[Shenime]");
+ mes("There are some soldiers dispatched by Mayor not too long ago.");
+ mes("I should sure hope that you aren't the disturbance they're looking for, right?");
+ instance_destroy(.@instance);
+ close();
+ }
+ ecl_interior_time = gettimetick(2) + 20 * 60;
+ instance_set_timeout(1200, 1200, .@instance);
+ instance_init(.@instance);
}
- ecl_interior_time = gettimetick(2) + 20 * 60;
- instance_set_timeout(1200, 1200, .@instance);
- instance_init(.@instance);
mes("[Shenime]");
mes("Given the tight internal security, you should prepare yourself.");
mes("Wait here for a minute.");
diff --git a/npc/re/instances/HazyForest.txt b/npc/re/instances/HazyForest.txt
index 291ce54db..24e03b22e 100644
--- a/npc/re/instances/HazyForest.txt
+++ b/npc/re/instances/HazyForest.txt
@@ -101,35 +101,34 @@ bif_fild01,158,340,5 script Laphine Soldier#mist 4_M_FAIRYSOLDIER,{
mesf("Party Name %s...", getpartyname(.@party_id));
mesf("Party Leader %s...", strcharinfo(PC_NAME));
.@instance = instance_create(.@md_name$, .@party_id);
- if (.@instance < 0) {
- mes("Hmm...");
- next();
- mes("[Laphine Soldier]");
- if (!.@playtime)
- mes("It's dangerous in the forest.");
- else
- mes("The atmosphere is somewhat tense in the forest.");
- mes("...Why don't you just go back today?");
- close();
- }
- if (instance_attachmap("1@mist", .@instance) != "") {
+ if (.@instance >= 0) {
+ if (instance_attachmap("1@mist", .@instance) == "") {
+ mes("Hmm...");
+ next();
+ mes("[Laphine Soldier]");
+ if (!.@playtime)
+ mes("It's dangerous in the forest.");
+ else
+ mes("The atmosphere is somewhat tense in the forest.");
+ mes("...Why don't you just go back today?");
+ instance_destroy(.@instance);
+ close();
+ }
instance_set_timeout(7200, 300, .@instance);
instance_init(.@instance);
- mes("I've got it. I've written them down on the report here.");
- next();
- mes("[Laphine Soldier]");
- mes("You'll get permission soon.");
- mes("Now go to the log tunnel, the only way to get into the Hazy Forest.");
- mes("You understand?");
- next();
- mes("[Laphine Soldier]");
- mes("We can't go against the forest,");
- mes("but maybe you humans can.");
- mes("Good luck!");
- close();
- } else {
- instance_destroy(.@instance);
}
+ mes("I've got it. I've written them down on the report here.");
+ next();
+ mes("[Laphine Soldier]");
+ mes("You'll get permission soon.");
+ mes("Now go to the log tunnel, the only way to get into the Hazy Forest.");
+ mes("You understand?");
+ next();
+ mes("[Laphine Soldier]");
+ mes("We can't go against the forest,");
+ mes("but maybe you humans can.");
+ mes("Good luck!");
+ close();
case 2:
mes("[Laphine Soldier]");
mes("Well, you've made the right decision.");
diff --git a/npc/re/instances/MalangdoCulvert.txt b/npc/re/instances/MalangdoCulvert.txt
index 2e51f0fd5..d61509511 100644
--- a/npc/re/instances/MalangdoCulvert.txt
+++ b/npc/re/instances/MalangdoCulvert.txt
@@ -433,20 +433,19 @@ mal_in01,160,34,4 script Missing, the Cleaner 4_CAT_SAILOR2,{
close();
case 2:
.@instance = instance_create(.@md_name$, .@party_id);
- if (.@instance < 0) {
- mesf("Party name: %s", getpartyname(.@party_id));
- mesf("Party leader: %s", strcharinfo(PC_NAME));
- mesf("^0000ff%s^000000 - Reservation Failed!", .@md_name$);
- close();
+ if (.@instance >= 0) {
+ for (.@i = 1; .@i <= 2; .@i++) {
+ if (instance_attachmap(.@i + "@pump", .@instance) == "") {
+ mesf("Party name: %s", getpartyname(.@party_id));
+ mesf("Party leader: %s", strcharinfo(PC_NAME));
+ mesf("^0000ff%s^000000 - Reservation Failed!", .@md_name$);
+ instance_destroy(.@instance);
+ close();
+ }
+ }
+ instance_set_timeout(3600, 300, .@instance);
+ instance_init(.@instance);
}
- if (instance_attachmap("1@pump", .@instance) == "" || instance_attachmap("2@pump", .@instance) == "") {
- mesf("^0000ff%s^000000 - Reservation Failed!", .@md_name$);
- instance_destroy(.@instance);
- close();
- }
- instance_set_timeout(3600, 300, .@instance);
- instance_init(.@instance);
-
mesf("^3333FF%s^000000 - Reserving", .@md_name$);
mes("After making the reservation, you");
mes("have to select Enter the Culvert.");
diff --git a/npc/re/instances/OldGlastHeim.txt b/npc/re/instances/OldGlastHeim.txt
index c317e7495..587de45bf 100644
--- a/npc/re/instances/OldGlastHeim.txt
+++ b/npc/re/instances/OldGlastHeim.txt
@@ -110,19 +110,19 @@ glast_01,204,273,6 script Hugin#ghinstance 4_M_SAGE_C,{
if (getcharid(CHAR_ID_CHAR) != getpartyleader(.@party_id, 2))
end;
.@instance = instance_create(.@md_name$, .@party_id);
- if (.@instance < 0) {
- mesf("Party Name: %s", .@p_name$);
- mesf("Party Leader: %s", strcharinfo(PC_NAME));
- mesf("^0000ff%s^000000 - Reservation Failed!", .@md_name$);
- close();
- }
- if (instance_attachmap("1@gl_k", .@instance) == "" || instance_attachmap("2@gl_k", .@instance) == "") {
- mesf("^0000FF%s^000000 - Reservation Failed!", .@md_name$);
- instance_destroy(.@instance);
- close();
+ if (.@instance >= 0) {
+ for (.@i = 1; .@i <= 2; .@i++) {
+ if (instance_attachmap(.@i + "@gl_k", .@instance) == "") {
+ mesf("Party Name: %s", .@p_name$);
+ mesf("Party Leader: %s", strcharinfo(PC_NAME));
+ mesf("^0000ff%s^000000 - Reservation Failed!", .@md_name$);
+ instance_destroy(.@instance);
+ close();
+ }
+ }
+ instance_set_timeout(3600, 300, .@instance);
+ instance_init(.@instance);
}
- instance_set_timeout(3600, 300, .@instance);
- instance_init(.@instance);
mes("[Hugin]");
mes("The time gap was created. When you're ready, talk to me again.");
close();
diff --git a/npc/re/instances/WolfchevLaboratory.txt b/npc/re/instances/WolfchevLaboratory.txt
index d6c5516e5..efb32be7e 100644
--- a/npc/re/instances/WolfchevLaboratory.txt
+++ b/npc/re/instances/WolfchevLaboratory.txt
@@ -1859,30 +1859,29 @@ lhz_dun04,151,276,3 script Researcher#memo 4_LGTSCIENCE,{
}
if (getpartyleader(getcharid(CHAR_ID_PARTY),2) == getcharid(CHAR_ID_CHAR)) {
.@instance = instance_create("Worsef", getcharid(CHAR_ID_PARTY));
- if (.@instance < 0) {
- mes "[Wolfchev]";
- mes "Hmm.. Lab entering system is a bit weird. Would wait for me to check the system?";
- } else {
- mes "[Wolfchev]";
- mes "Please hold on..";
- next;
- mes "Wolfchev starts to control certain gear.";
- next;
- progressbar "FF00FF", 2;
- if (instance_attachmap("1@lhz", .@instance) != "") {
- instance_set_timeout 14400, 300, .@instance;
- instance_init(.@instance);
- mes "[Wolfchev]";
- mes "Alright! I have marked lan entering system code as";
- mes "^0000ff"+ strcharinfo(PC_PARTY) +"^000000 party leader's name ^0000ff"+ strcharinfo(PC_NAME) +"^000000!!.";
- next;
- mes "[Wolfchev]";
- mes "Now, your party is free to pass the entrance.";
- } else {
+ if (.@instance >= 0) {
+ if (instance_attachmap("1@lhz", .@instance) == "") {
+ mes("[Wolfchev]");
+ mes("Hmm.. Lab entering system is a bit weird. Would wait for me to check the system?");
instance_destroy(.@instance);
+ close();
}
+ instance_set_timeout 14400, 300, .@instance;
+ instance_init(.@instance);
}
- close;
+ mes("[Wolfchev]");
+ mes("Please hold on..");
+ next();
+ mes("Wolfchev starts to control certain gear.");
+ next();
+ progressbar("FF00FF", 2);
+ mes("[Wolfchev]");
+ mes("Alright! I have marked lan entering system code as");
+ mesf("^0000ff%s^000000 party leader's name ^0000ff%s^000000!!.", strcharinfo(PC_PARTY), strcharinfo(PC_NAME));
+ next();
+ mes("[Wolfchev]");
+ mes("Now, your party is free to pass the entrance.");
+ close();
} else {
mes "[Wolfchev]";
mes "You are not the ^0000ffLeader of the party^000000, are you? Please go get the leader.";
diff --git a/npc/re/instances/ghost_palace.txt b/npc/re/instances/ghost_palace.txt
index e4ca12f99..3e708dc57 100644
--- a/npc/re/instances/ghost_palace.txt
+++ b/npc/re/instances/ghost_palace.txt
@@ -91,27 +91,24 @@ dali02,44,129,5 script Unpleasent Royal Guard 4_M_SAKRAYROYAL,{
.@instance = instance_create(_("Ghost Palace"), .@party_id);
.@p_name$ = getpartyname(.@party_id);
.@md_name$ = _("Ghost Palace");
- if (.@instance < 0) {
- mesf("Party Name: %s", .@p_name$);
- mesf("Party Leader: %s", strcharinfo(PC_NAME));
- mesf("^0000FF%s^000000 - Reservation Failed!", .@md_name$);
- close();
- }
- if (instance_attachmap("1@spa", .@instance) != "") {
+ if (.@instance >= 0) {
+ if (instance_attachmap("1@spa", .@instance) == "") {
+ mesf("Party Name: %s", .@p_name$);
+ mesf("Party Leader: %s", strcharinfo(PC_NAME));
+ mesf("^0000FF%s^000000 - Reservation Failed!", .@md_name$);
+ instance_destroy(.@instance);
+ close();
+ }
instance_set_timeout(3600, 300, .@instance);
instance_init(.@instance);
if (!questprogress(1260))
setquest(1260);
- mes("[Unpleasent Royal Guard]");
- mes("Thank You..\r"
- "I will open the secret passage to ^0000FFGhost Palace.^000000\r"
- "Please be ready!");
- close();
- } else {
- instance_destroy(.@instance);
- mesf("^0000FF%s^000000 - Reservation Failed!", .@md_name$);
- close();
}
+ mes("[Unpleasent Royal Guard]");
+ mes("Thank You..\r"
+ "I will open the secret passage to ^0000FFGhost Palace.^000000\r"
+ "Please be ready!");
+ close();
}
dali02,41,134,0 script Interdimensional Device::gpportal PORTAL,{
diff --git a/npc/re/instances/octopus_cave.txt b/npc/re/instances/octopus_cave.txt
index e4d8d4357..4c964072a 100644
--- a/npc/re/instances/octopus_cave.txt
+++ b/npc/re/instances/octopus_cave.txt
@@ -85,22 +85,19 @@ mal_dun01,151,235,5 script Starfish 4_ASTER,{
erasequest(4197);
if (countitem(Octopus_Hunt_Stick)) {
.@instance = instance_create(.@md_name$, .@party_id);
- if (.@instance < 0) {
- mes("[Starfish]");
- mesf("Party name is... %s.", getpartyname(.@party_id));
- mesf("Party leader is... %s.", strcharinfo(PC_NAME));
- mesf("^0000FF%s^000000, I cannot open now, hehe.", .@md_name$);
- mes("Now is not the time, please wait.");
- close();
+ if (.@instance >= 0) {
+ if (instance_attachmap("1@cash", .@instance) == "") {
+ mes("[Starfish]");
+ mesf("Party name is... %s.", getpartyname(.@party_id));
+ mesf("Party leader is... %s.", strcharinfo(PC_NAME));
+ mesf("^0000FF%s^000000, I cannot open now, hehe.", .@md_name$);
+ mes("Now is not the time, please wait.");
+ instance_destroy(.@instance);
+ close();
+ }
+ instance_set_timeout(3600, 300, .@instance);
+ instance_init(.@instance);
}
- if (instance_attachmap("1@cash", .@instance) == "") {
- mesf("^0000FF%s^000000 - Reservation Failed!", .@md_name$);
- instance_destroy(.@instance);
- close();
- }
- instance_set_timeout(3600, 300, .@instance);
- instance_init(.@instance);
-
mes("[Starfish]");
mesf("I will open the gate for a while to ^0000FF%s^000000.", .@md_name$);
mes("Please catch that pervert octopus, and come back with it sticked to the pick, hehe.");
diff --git a/npc/re/instances/saras_memory.txt b/npc/re/instances/saras_memory.txt
index c9a47534b..9eac396aa 100644
--- a/npc/re/instances/saras_memory.txt
+++ b/npc/re/instances/saras_memory.txt
@@ -185,19 +185,17 @@ dali,138,118,0 script Dimensional Device#dimen PORTAL,{
if (getcharid(CHAR_ID_CHAR) != getpartyleader(.@party_id, 2))
end;
.@instance = instance_create(.@md_name$, .@party_id);
- if (.@instance < 0) {
- mesf("Party Name: %s", .@p_name$);
- mesf("Party Leader: %s", strcharinfo(PC_NAME));
- mesf("^0000FF%s^000000 - Reservation Failed!", .@md_name$);
- close();
- }
- if (instance_attachmap("1@sara", .@instance) == "") {
- mesf("^0000FF%s^000000 - Reservation Failed!", .@md_name$);
- instance_destroy(.@instance);
- close();
+ if (.@instance >= 0) {
+ if (instance_attachmap("1@sara", .@instance) == "") {
+ mesf("Party Name: %s", .@p_name$);
+ mesf("Party Leader: %s", strcharinfo(PC_NAME));
+ mesf("^0000FF%s^000000 - Reservation Failed!", .@md_name$);
+ instance_destroy(.@instance);
+ close();
+ }
+ instance_set_timeout(3600, 300, .@instance);
+ instance_init(.@instance);
}
- instance_set_timeout(3600, 300, .@instance);
- instance_init(.@instance);
mes("^FF0000The dimensional boots up cleanly. Use the device to enter the crack in space and time.^000000");
close();
case 2:
diff --git a/src/map/script.c b/src/map/script.c
index 410a707f1..39552a441 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -21160,6 +21160,7 @@ BUILDIN(instance_create)
const char *name;
int owner_id, res;
int type = IOT_PARTY;
+ struct map_session_data *sd = map->id2sd(st->rid);
name = script_getstr(st, 2);
owner_id = script_getnum(st, 3);
@@ -21172,22 +21173,43 @@ BUILDIN(instance_create)
}
res = instance->create(owner_id, name, (enum instance_owner_type) type);
- if( res == -4 ) { // Already exists
- script_pushint(st, -1);
- return true;
- } else if( res < 0 ) {
+ if (sd != NULL) {
+ switch (res) {
+ case -4: // Already exists
+ clif->msgtable_str(sd, MSG_MDUNGEON_SUBSCRIPTION_ERROR_DUPLICATE, name);
+ break;
+ case -3: // No free instances
+ clif->msgtable_str(sd, MSG_MDUNGEON_SUBSCRIPTION_ERROR_EXIST, name);
+ break;
+ case -2: // Invalid type
+ clif->msgtable_str(sd, MSG_MDUNGEON_SUBSCRIPTION_ERROR_RIGHT, name);
+ break;
+ case -1: // Unknown
+ clif->msgtable_str(sd, MSG_MDUNGEON_SUBSCRIPTION_ERROR_UNKNOWN, name);
+ break;
+ default:
+ if (res < 0)
+ ShowError("buildin_instance_create: failed to unknown reason [%d].\n", res);
+ }
+ } else {
const char *err;
- switch(res) {
- case -3: err = "No free instances"; break;
- case -2: err = "Invalid party ID"; break;
- case -1: err = "Invalid type"; break;
- default: err = "Unknown"; break;
+ switch (res) {
+ case -3:
+ err = "No free instances";
+ break;
+ case -2:
+ err = "Invalid party ID";
+ break;
+ case -1:
+ err = "Invalid type";
+ break;
+ default:
+ err = "Unknown";
+ break;
}
- ShowError("buildin_instance_create: %s [%d].\n", err, res);
- script_pushint(st, -2);
- return true;
+ if (res < 0)
+ ShowError("buildin_instance_create: %s [%d].\n", err, res);
}
-
script_pushint(st, res);
return true;
}