Kaynağa Gözat

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
L0ne_W0lf 14 yıl önce
ebeveyn
işleme
d05e97b7a1
4 değiştirilmiş dosya ile 111 ekleme ve 110 silme
  1. 1 1
      db/quest_db.txt
  2. 2 0
      npc/Changelog.txt
  3. 107 108
      npc/instances/SealedShrine.txt
  4. 1 1
      src/map/pc.c

+ 1 - 1
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"

+ 2 - 0
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

+ 107 - 108
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());

+ 1 - 1
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)