diff options
author | Haru <haru@dotalux.com> | 2018-06-22 00:20:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-22 00:20:29 +0200 |
commit | 3e3a0935340a607f6b4a4c6ff193de63e5d69430 (patch) | |
tree | 68e1554ea8174c0f63d44659306aad4f1a3fae97 | |
parent | b57232ac29732ff526eca750dee295a871861ed6 (diff) | |
parent | 82d5ed8ee5349e0338f1819ecf472efe95523ae9 (diff) | |
download | hercules-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.txt | 26 | ||||
-rw-r--r-- | npc/instances/NydhoggsNest.txt | 25 | ||||
-rw-r--r-- | npc/instances/OrcsMemory.txt | 27 | ||||
-rw-r--r-- | npc/instances/SealedShrine.txt | 40 | ||||
-rw-r--r-- | npc/re/instances/BakonawaLake.txt | 20 | ||||
-rw-r--r-- | npc/re/instances/BangungotHospital.txt | 26 | ||||
-rw-r--r-- | npc/re/instances/BuwayaCave.txt | 27 | ||||
-rw-r--r-- | npc/re/instances/EclageInterior.txt | 24 | ||||
-rw-r--r-- | npc/re/instances/HazyForest.txt | 51 | ||||
-rw-r--r-- | npc/re/instances/MalangdoCulvert.txt | 25 | ||||
-rw-r--r-- | npc/re/instances/OldGlastHeim.txt | 24 | ||||
-rw-r--r-- | npc/re/instances/WolfchevLaboratory.txt | 41 | ||||
-rw-r--r-- | npc/re/instances/ghost_palace.txt | 29 | ||||
-rw-r--r-- | npc/re/instances/octopus_cave.txt | 27 | ||||
-rw-r--r-- | npc/re/instances/saras_memory.txt | 22 | ||||
-rw-r--r-- | src/map/script.c | 48 |
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; } |