diff options
-rw-r--r-- | db/quest_db.txt | 2 | ||||
-rw-r--r-- | npc/Changelog.txt | 2 | ||||
-rw-r--r-- | npc/instances/SealedShrine.txt | 215 | ||||
-rw-r--r-- | src/map/pc.c | 2 |
4 files changed, 111 insertions, 110 deletions
diff --git a/db/quest_db.txt b/db/quest_db.txt index 764cbba76..6ca54d5d6 100644 --- a/db/quest_db.txt +++ b/db/quest_db.txt @@ -251,7 +251,7 @@ 3042,0,0,0,0,0,0,0,"The Cursed Baphomet Doll" 3043,0,0,0,0,0,0,0,"The Gigantic Magestic Goat" 3044,0,0,0,0,0,0,0,"The Gigantic Magestic Goat" -3045,9600,0,0,0,0,0,0,"Sealed Shrine" +3045,7200,0,0,0,0,0,0,"Sealed Shrine" 3046,0,0,0,0,0,0,0,"Sealed Shrine After-effect" 3050,0,0,0,0,0,0,0,"Resurrection of Satan Morocc - 1" diff --git a/npc/Changelog.txt b/npc/Changelog.txt index e1ebcecaa..f4f0ee7bd 100644 --- a/npc/Changelog.txt +++ b/npc/Changelog.txt @@ -1,5 +1,7 @@ Date Added ====== +2011/07/13 + * Rev. 14905 Tweaked the sealed shrine entrance NPCs. Hopefully the damn thing works now. [L0ne_W0lf] 2011/05/23 * Rev. 14833 Fixed a possible exploit in guild castle investment. (bugreport:4929, topic:272783) [Brian] 2011/04/08 diff --git a/npc/instances/SealedShrine.txt b/npc/instances/SealedShrine.txt index 813b1d1e9..48d0e5279 100644 --- a/npc/instances/SealedShrine.txt +++ b/npc/instances/SealedShrine.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== -//= 1.5 +//= 1.6 //===== Compatible With: ===================================== //= eAthena SVN //===== Description: ========================================= @@ -16,6 +16,9 @@ //= 1.3 Fixed cutins not being removed. (bugreport:4117) [L0ne_w0lf] //= 1.4 Fixed some typos. [Gepard] //= 1.5 Fixed not being able to enter dungeon for the first two hours. +//= 1.6 Players should be able to re-take the quest after 12 hours now. +//= Changed quest 3046 to 3040. This is the correct quest id. +//= Removed checking quest 3045, unofficial check. //============================================================ // Sealed Catacomb Entrance @@ -96,116 +99,114 @@ monk_test,309,146,3 script Friar Patrick#edq 412,{ next; // 12 hour cooldown - set .@ins_bapho_check,checkquest(3046,PLAYTIME); + set .@ins_bapho_check,checkquest(3040,PLAYTIME); // Two hour play limit - set .@ins_bapho_check2,checkquest(3045,PLAYTIME); - - if (.@ins_bapho_check < 2) { - if (.@ins_bapho_check == -1) { - if ((getpartyleader(.@party_id,2) == getcharid(0)) && (.@partymembercount > 1)) { - set .@instance, instance_create("Sealed Catacombs", .@party_id); - if (.@instance < 0) { - mes "[Friar Patrick]"; - mes "Party name is "+getpartyname(.@party_id)+"..."; - mes "Name of the leader is "+.@partymembername$[0]+"..."; - mes "Umm... But it seems that there is a problem here... I'll check quickly. Please wait."; - } - else { - - for( set .@i, 1; .@i <= 2; set .@i, .@i + 1 ) { - if( instance_attachmap("" + .@i + "@cata", .@instance) == "" ) - break; - } - if( .@i < 2 ) { - instance_destroy(.@instance); - close; - } - - instance_attach(.@instance); - instance_set_timeout 14400,300,.@instance; - instance_init(.@instance); - - // First Floor - disablenpc instance_npcname("Ancient Hero's Soul#1F", instance_id()); - disablenpc instance_npcname("ins_bapho_to_2f", instance_id()); - - for( set .@i, 1; .@i < 13; set .@i, .@i + 1 ) { - disablenpc instance_npcname("Gravestone#1F_"+.@i+"T", instance_id()); - disablenpc instance_npcname("Gravestone#1F_"+.@i+"F", instance_id()); - } - for( set .@i, 1; .@i <= 12; set .@i, .@i + 1 ) { - disablenpc instance_npcname("Bobbing Torch#"+.@i, instance_id()); - } - - // Second Floor - disablenpc instance_npcname("ins_baphomet_1f_timer", instance_id()); - disablenpc instance_npcname("ins_2f_enter_broad", instance_id()); - disablenpc instance_npcname("Magical Seal#0", instance_id()); - disablenpc instance_npcname("Magical Seal#2", instance_id()); - disablenpc instance_npcname("Magical Seal#4", instance_id()); - disablenpc instance_npcname("Magical Seal#8", instance_id()); - disablenpc instance_npcname("Magical Seal#10", instance_id()); - disablenpc instance_npcname("Ancient Hero's Soul#2F", instance_id()); - disablenpc instance_npcname("control_baphomet", instance_id()); - disablenpc instance_npcname("ins_2f_hero_broad2", instance_id()); - disablenpc instance_npcname("2f_callmon_pattern_c", instance_id()); - disablenpc instance_npcname("2f_callmon_pattern", instance_id()); - disablenpc instance_npcname("ins_2f_hero_pattern_c", instance_id()); - disablenpc instance_npcname("ins_2f_hero_pattern", instance_id()); - - // Pick proper grave - donpcevent instance_npcname("ins_baphomet_lotto", instance_id())+"::OnEnable"; - - // Spawn monsters. - donpcevent instance_npcname("ins_1f_spawn_mobs", instance_id())+"::OnEnable"; - - mes "[Friar Patrick]"; - mes "Party name is "+getpartyname(.@party_id)+"..."; - mes "Name of the leader is "+.@partymembername$[0]+"..."; - 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."; - } + //set .@ins_bapho_check2,checkquest(3045,PLAYTIME); + + if (.@ins_bapho_check == -1) { + if ((getpartyleader(.@party_id,2) == getcharid(0)) && (.@partymembercount > 1)) { + set .@instance, instance_create("Sealed Catacombs", .@party_id); + if (.@instance < 0) { + mes "[Friar Patrick]"; + mes "Party name is "+getpartyname(.@party_id)+"..."; + mes "Name of the leader is "+.@partymembername$[0]+"..."; + mes "Umm... But it seems that there is a problem here... I'll check quickly. Please wait."; } else { + + for( set .@i, 1; .@i <= 2; set .@i, .@i + 1 ) { + if( instance_attachmap("" + .@i + "@cata", .@instance) == "" ) + break; + } + if( .@i < 2 ) { + instance_destroy(.@instance); + close; + } + + instance_attach(.@instance); + instance_set_timeout 7200,300,.@instance; + instance_init(.@instance); + + // First Floor + disablenpc instance_npcname("Ancient Hero's Soul#1F", instance_id()); + disablenpc instance_npcname("ins_bapho_to_2f", instance_id()); + + for( set .@i, 1; .@i < 13; set .@i, .@i + 1 ) { + disablenpc instance_npcname("Gravestone#1F_"+.@i+"T", instance_id()); + disablenpc instance_npcname("Gravestone#1F_"+.@i+"F", instance_id()); + } + for( set .@i, 1; .@i <= 12; set .@i, .@i + 1 ) { + disablenpc instance_npcname("Bobbing Torch#"+.@i, instance_id()); + } + + // Second Floor + disablenpc instance_npcname("ins_baphomet_1f_timer", instance_id()); + disablenpc instance_npcname("ins_2f_enter_broad", instance_id()); + disablenpc instance_npcname("Magical Seal#0", instance_id()); + disablenpc instance_npcname("Magical Seal#2", instance_id()); + disablenpc instance_npcname("Magical Seal#4", instance_id()); + disablenpc instance_npcname("Magical Seal#8", instance_id()); + disablenpc instance_npcname("Magical Seal#10", instance_id()); + disablenpc instance_npcname("Ancient Hero's Soul#2F", instance_id()); + disablenpc instance_npcname("control_baphomet", instance_id()); + disablenpc instance_npcname("ins_2f_hero_broad2", instance_id()); + disablenpc instance_npcname("2f_callmon_pattern_c", instance_id()); + disablenpc instance_npcname("2f_callmon_pattern", instance_id()); + disablenpc instance_npcname("ins_2f_hero_pattern_c", instance_id()); + disablenpc instance_npcname("ins_2f_hero_pattern", instance_id()); + + // Pick proper grave + donpcevent instance_npcname("ins_baphomet_lotto", instance_id())+"::OnEnable"; + + // Spawn monsters. + donpcevent instance_npcname("ins_1f_spawn_mobs", instance_id())+"::OnEnable"; + + mes "[Friar Patrick]"; + mes "Party name is "+getpartyname(.@party_id)+"..."; + mes "Name of the leader is "+.@partymembername$[0]+"..."; + 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 "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."; + mes "When you see the sign, put your hands on the gravestone... Then you can move inside."; next; mes "[Friar Patrick]"; - mes "Once the party leader is permitted, the rest of the party can enter. This is a rule of this monastery, so please understand."; + 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 if ((.@ins_bapho_check == 0) || (.@ins_bapho_check == 1)) { - mes "[Friar Patrick]"; - mes "It seems you have entered this shrine recently... You cannot reenter because Baphomet's Curse still remains. Baphomet's Curse disappears only after a certain amount of time has passed."; - } - else if (.@ins_bapho_check == 2) { - mes "[Friar Patrick]"; - mes "Umm... It seems that Baphomet's Curse has weakened. I can remove it now."; - next; + else { mes "[Friar Patrick]"; - mes "Haaaaaaap... Hocus Pocus Wingardium Abracadabra!!!!!"; + 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."; next; - if (checkquest(3046)) erasequest 3046; - if (checkquest(3041)) erasequest 3041; - if (checkquest(3045)) erasequest 3045; mes "[Friar Patrick]"; - mes "Huu... It's over. Now that I've released Baphomet's Curse, you can enter again."; + mes "Once the party leader is permitted, the rest of the party can enter. This is a rule of this monastery, so please understand."; } } + else if ((.@ins_bapho_check == 0) || (.@ins_bapho_check == 1)) { + mes "[Friar Patrick]"; + mes "It seems you have entered this shrine recently... You cannot reenter because Baphomet's Curse still remains. Baphomet's Curse disappears only after a certain amount of time has passed."; + } + else if (.@ins_bapho_check == 2) { + mes "[Friar Patrick]"; + mes "Umm... It seems that Baphomet's Curse has weakened. I can remove it now."; + next; + mes "[Friar Patrick]"; + mes "Haaaaaaap... Hocus Pocus Wingardium Abracadabra!!!!!"; + next; + if (checkquest(3040)) erasequest 3040; + if (checkquest(3041)) erasequest 3041; + if (checkquest(3045)) erasequest 3045; + mes "[Friar Patrick]"; + mes "Huu... It's over. Now that I've released Baphomet's Curse, you can enter again."; + } } else { mes "[Friar Patrick]"; @@ -248,7 +249,6 @@ monk_test,309,146,3 script Friar Patrick#edq 412,{ } monk_test,306,151,3 script Grave of Baphomet#edq 111,{ - if (checkquest(3040)>=0) erasequest 3040; if (countitem(6002) > 0) delitem 6002,countitem(6002); //Token_Of_Apostle mes "This gravestone has a carving of a wicked devil with large horns. It arouses an ominous feeling."; @@ -265,11 +265,11 @@ monk_test,306,151,3 script Grave of Baphomet#edq 111,{ instance_attach(.@instance); // 12 hour cooldown - set .@ins_bapho_check,checkquest(3046,PLAYTIME); + set .@ins_bapho_check,checkquest(3040,PLAYTIME); // Two hour play limit - set .@ins_bapho_check2,checkquest(3045,PLAYTIME); + //set .@ins_bapho_check2,checkquest(3045,PLAYTIME); - if ((.@ins_bapho_check == -1) || ((.@ins_bapho_check2 >= 0) && (.@ins_bapho_check2 < 2))) { + if (.@ins_bapho_check == -1) { if (has_instance("1@cata") == "") { mes "It's cold to the touch. It doesn't respond."; } @@ -284,8 +284,7 @@ monk_test,306,151,3 script Grave of Baphomet#edq 111,{ //else if (ret == 0) { else { mapannounce "monk_test","[" + strcharinfo(0) + "] member of the [" + getpartyname(.@party_id) + "] party has entered the Sealed Shrine.",bc_map,"0x00ff99"; - setquest 3046; - setquest 3045; + if (!checkquest(3040)) setquest 3040; warp "1@cata",100,224; } } @@ -301,7 +300,7 @@ monk_test,306,151,3 script Grave of Baphomet#edq 111,{ mes "[Friar Patrick]"; mes "Haaaaaaap... Wingardium Leviosa Expecto Patronum !!!!!"; specialeffect2 EF_HOLYHIT; - if (checkquest(3046)) erasequest 3046; + if (checkquest(3040)) erasequest 3040; if (checkquest(3041)) erasequest 3041; if (checkquest(3045)) erasequest 3045; next; @@ -2126,8 +2125,8 @@ OnTouch: 2@cata,80,63,4 script Ancient Hero's Soul#2F 411,{ cutin "ins_cata_champ_s",2; if (checkquest(3041)) erasequest 3041; - if (checkquest(3046)) erasequest 3046; - setquest 3046; + if (checkquest(3040)) erasequest 3040; + setquest 3040; mes "[Ancient Hero's Soul]"; mes "Good job, my descendants... You've finished the long-cherished task that me and my bretheren could not complete."; next; @@ -2212,7 +2211,7 @@ OnDisable: OnMyMobDead: if (mobcount("2@cata",instance_npcname("control_baphomet", instance_id())+"::OnMyMobDead") < 1) { set 'ins_baphomet,7; - setquest 3046; + setquest 3040; erasequest 3041; instance_announce 0, "Baphomet : No! Nonono! How dare these weaklings defeat me!... No!!...",bc_map,"0xdb7093"; enablenpc instance_npcname("Ancient Hero's Soul#2F", instance_id()); diff --git a/src/map/pc.c b/src/map/pc.c index e0c5cf394..fda41107b 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1608,7 +1608,7 @@ static int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id for(i = 0; i < max && (drop[i].id || drop[i].group); i++) { if( ((id && drop[i].id == id) || - (group && drop[i].group == group)) && race < (1<<RC_MAX) + (group && drop[i].group == group)) && race < (RC_MAX<<1) ) { drop[i].race |= race; if(drop[i].rate > 0 && rate > 0) |