Tweaked the sealed shrine entrance NPCs. Hopefully the damn thing works now.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14905 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
L0ne_W0lf 2011-07-13 18:01:07 +00:00
parent d725299ad1
commit d05e97b7a1
4 changed files with 110 additions and 109 deletions

View File

@ -251,7 +251,7 @@
3042,0,0,0,0,0,0,0,"The Cursed Baphomet Doll" 3042,0,0,0,0,0,0,0,"The Cursed Baphomet Doll"
3043,0,0,0,0,0,0,0,"The Gigantic Magestic Goat" 3043,0,0,0,0,0,0,0,"The Gigantic Magestic Goat"
3044,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" 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" 3050,0,0,0,0,0,0,0,"Resurrection of Satan Morocc - 1"

View File

@ -1,5 +1,7 @@
Date Added Date Added
====== ======
2011/07/13
* Rev. 14905 Tweaked the sealed shrine entrance NPCs. Hopefully the damn thing works now. [L0ne_W0lf]
2011/05/23 2011/05/23
* Rev. 14833 Fixed a possible exploit in guild castle investment. (bugreport:4929, topic:272783) [Brian] * Rev. 14833 Fixed a possible exploit in guild castle investment. (bugreport:4929, topic:272783) [Brian]
2011/04/08 2011/04/08

View File

@ -3,7 +3,7 @@
//===== By: ================================================== //===== By: ==================================================
//= L0ne_W0lf //= L0ne_W0lf
//===== Current Version: ===================================== //===== Current Version: =====================================
//= 1.5 //= 1.6
//===== Compatible With: ===================================== //===== Compatible With: =====================================
//= eAthena SVN //= eAthena SVN
//===== Description: ========================================= //===== Description: =========================================
@ -16,6 +16,9 @@
//= 1.3 Fixed cutins not being removed. (bugreport:4117) [L0ne_w0lf] //= 1.3 Fixed cutins not being removed. (bugreport:4117) [L0ne_w0lf]
//= 1.4 Fixed some typos. [Gepard] //= 1.4 Fixed some typos. [Gepard]
//= 1.5 Fixed not being able to enter dungeon for the first two hours. //= 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 // Sealed Catacomb Entrance
@ -96,116 +99,114 @@ monk_test,309,146,3 script Friar Patrick#edq 412,{
next; next;
// 12 hour cooldown // 12 hour cooldown
set .@ins_bapho_check,checkquest(3046,PLAYTIME); set .@ins_bapho_check,checkquest(3040,PLAYTIME);
// Two hour play limit // Two hour play limit
set .@ins_bapho_check2,checkquest(3045,PLAYTIME); //set .@ins_bapho_check2,checkquest(3045,PLAYTIME);
if (.@ins_bapho_check < 2) { if (.@ins_bapho_check == -1) {
if (.@ins_bapho_check == -1) { if ((getpartyleader(.@party_id,2) == getcharid(0)) && (.@partymembercount > 1)) {
if ((getpartyleader(.@party_id,2) == getcharid(0)) && (.@partymembercount > 1)) { set .@instance, instance_create("Sealed Catacombs", .@party_id);
set .@instance, instance_create("Sealed Catacombs", .@party_id); if (.@instance < 0) {
if (.@instance < 0) { mes "[Friar Patrick]";
mes "[Friar Patrick]"; mes "Party name is "+getpartyname(.@party_id)+"...";
mes "Party name is "+getpartyname(.@party_id)+"..."; mes "Name of the leader is "+.@partymembername$[0]+"...";
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.";
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.";
}
} }
else { 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 "[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 "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; next;
mes "[Friar Patrick]"; 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 "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 if ((.@ins_bapho_check == 0) || (.@ins_bapho_check == 1)) { else {
mes "[Friar Patrick]"; 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."; 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.";
}
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; next;
mes "[Friar Patrick]"; mes "[Friar Patrick]";
mes "Haaaaaaap... Hocus Pocus Wingardium Abracadabra!!!!!"; mes "Once the party leader is permitted, the rest of the party can enter. This is a rule of this monastery, so please understand.";
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.";
} }
} }
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 { else {
mes "[Friar Patrick]"; 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,{ monk_test,306,151,3 script Grave of Baphomet#edq 111,{
if (checkquest(3040)>=0) erasequest 3040;
if (countitem(6002) > 0) if (countitem(6002) > 0)
delitem 6002,countitem(6002); //Token_Of_Apostle 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."; 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); instance_attach(.@instance);
// 12 hour cooldown // 12 hour cooldown
set .@ins_bapho_check,checkquest(3046,PLAYTIME); set .@ins_bapho_check,checkquest(3040,PLAYTIME);
// Two hour play limit // 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") == "") { if (has_instance("1@cata") == "") {
mes "It's cold to the touch. It doesn't respond."; 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 if (ret == 0) {
else { else {
mapannounce "monk_test","[" + strcharinfo(0) + "] member of the [" + getpartyname(.@party_id) + "] party has entered the Sealed Shrine.",bc_map,"0x00ff99"; mapannounce "monk_test","[" + strcharinfo(0) + "] member of the [" + getpartyname(.@party_id) + "] party has entered the Sealed Shrine.",bc_map,"0x00ff99";
setquest 3046; if (!checkquest(3040)) setquest 3040;
setquest 3045;
warp "1@cata",100,224; warp "1@cata",100,224;
} }
} }
@ -301,7 +300,7 @@ monk_test,306,151,3 script Grave of Baphomet#edq 111,{
mes "[Friar Patrick]"; mes "[Friar Patrick]";
mes "Haaaaaaap... Wingardium Leviosa Expecto Patronum !!!!!"; mes "Haaaaaaap... Wingardium Leviosa Expecto Patronum !!!!!";
specialeffect2 EF_HOLYHIT; specialeffect2 EF_HOLYHIT;
if (checkquest(3046)) erasequest 3046; if (checkquest(3040)) erasequest 3040;
if (checkquest(3041)) erasequest 3041; if (checkquest(3041)) erasequest 3041;
if (checkquest(3045)) erasequest 3045; if (checkquest(3045)) erasequest 3045;
next; next;
@ -2126,8 +2125,8 @@ OnTouch:
2@cata,80,63,4 script Ancient Hero's Soul#2F 411,{ 2@cata,80,63,4 script Ancient Hero's Soul#2F 411,{
cutin "ins_cata_champ_s",2; cutin "ins_cata_champ_s",2;
if (checkquest(3041)) erasequest 3041; if (checkquest(3041)) erasequest 3041;
if (checkquest(3046)) erasequest 3046; if (checkquest(3040)) erasequest 3040;
setquest 3046; setquest 3040;
mes "[Ancient Hero's Soul]"; 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."; mes "Good job, my descendants... You've finished the long-cherished task that me and my bretheren could not complete.";
next; next;
@ -2212,7 +2211,7 @@ OnDisable:
OnMyMobDead: OnMyMobDead:
if (mobcount("2@cata",instance_npcname("control_baphomet", instance_id())+"::OnMyMobDead") < 1) { if (mobcount("2@cata",instance_npcname("control_baphomet", instance_id())+"::OnMyMobDead") < 1) {
set 'ins_baphomet,7; set 'ins_baphomet,7;
setquest 3046; setquest 3040;
erasequest 3041; erasequest 3041;
instance_announce 0, "Baphomet : No! Nonono! How dare these weaklings defeat me!... No!!...",bc_map,"0xdb7093"; 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()); enablenpc instance_npcname("Ancient Hero's Soul#2F", instance_id());

View File

@ -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++) { for(i = 0; i < max && (drop[i].id || drop[i].group); i++) {
if( if(
((id && drop[i].id == id) || ((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; drop[i].race |= race;
if(drop[i].rate > 0 && rate > 0) if(drop[i].rate > 0 && rate > 0)