summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
authormasao87 <masao87@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-05-27 23:53:46 +0000
committermasao87 <masao87@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-05-27 23:53:46 +0000
commit3d4287cc5efb305ba392ab81875f117548e207f7 (patch)
tree8dc1149ed1f75afafaf2ce8f82b975d3f87afd8b /npc
parentf8d5302f9f7352d4379061ebc8ad38e55b4cf4b3 (diff)
downloadhercules-3d4287cc5efb305ba392ab81875f117548e207f7.tar.gz
hercules-3d4287cc5efb305ba392ab81875f117548e207f7.tar.bz2
hercules-3d4287cc5efb305ba392ab81875f117548e207f7.tar.xz
hercules-3d4287cc5efb305ba392ab81875f117548e207f7.zip
- Added an security check for each player which is entering an instance to make sure that the cool down time can't be bypassed which would lead to abuses of the according instance dungeons. bugreport:5768
- Some minor additions to the Magic Gear renter NPC. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16158 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'npc')
-rw-r--r--npc/instances/EndlessTower.txt28
-rw-r--r--npc/instances/NydhoggsNest.txt19
-rw-r--r--npc/instances/OrcsMemory.txt19
-rw-r--r--npc/instances/SealedShrine.txt7
-rw-r--r--npc/merchants/renters.txt4
5 files changed, 72 insertions, 5 deletions
diff --git a/npc/instances/EndlessTower.txt b/npc/instances/EndlessTower.txt
index 7ad00e1ef..18c390858 100644
--- a/npc/instances/EndlessTower.txt
+++ b/npc/instances/EndlessTower.txt
@@ -284,8 +284,17 @@ e_tower,81,105,0 script Tower Protection Stone 406,{
mes "The memorial dungeon " + .@md_name$ + " does not exist.";
mes "The party leader did not generate the dungeon yet.";
}
+ if((party_instance_id != 0) && (party_instance_id != getcharid(1))) {
+ mes "Due to the tower's aftereffects, you cannot enter the dungeon right now, " + .@dun_h + "hours " + .@dun_m + "minutes " + .@dun_s + "seconds left to enter the next dungeon.";
+ next;
+ mes "It is dangerous here. Let me move you to Alberta.";
+ close2;
+ warp "alberta",223,36;
+ end;
+ }
else {
mapannounce "e_tower", .@p_name2$ + " of the party, " + .@p_name$ + ", is entering the dungeon, " + .@md_name$ + ".",bc_map,"0x00ff99",FW_NORMAL,12;
+ set party_instance_id,getcharid(1);
set etower_timer,gettimetick(2);
setquest 60200;
setquest 60201;
@@ -310,8 +319,17 @@ e_tower,81,105,0 script Tower Protection Stone 406,{
mes "The memorial dungeon " + .@md_name$ + " does not exist.";
mes "The party leader did not generate the dungeon yet.";
}
+ if((party_instance_id != 0) && (party_instance_id != getcharid(1))) {
+ mes "Due to the tower's aftereffects, you cannot enter the dungeon right now, " + .@dun_h + "hours " + .@dun_m + "minutes " + .@dun_s + "seconds left to enter the next dungeon.";
+ next;
+ mes "It is dangerous here. Let me move you to Alberta.";
+ close2;
+ warp "alberta",223,36;
+ end;
+ }
else {
mapannounce "e_tower", .@p_name2$ + " of the party, " + .@p_name$ + ", is entering the dungeon, " + .@md_name$ + ".",bc_map,"0x00ff99",FW_NORMAL,12;
+ set party_instance_id,getcharid(1);
set etower_timer,gettimetick(2);
setquest 60200;
setquest 60201;
@@ -339,8 +357,17 @@ e_tower,81,105,0 script Tower Protection Stone 406,{
mes "The memorial dungeon " + .@md_name$ + " does not exist.";
mes "The party leader did not generate the dungeon yet.";
}
+ if((party_instance_id != 0) && (party_instance_id != getcharid(1))) {
+ mes "Due to the tower's aftereffects, you cannot enter the dungeon right now, " + .@dun_h + "hours " + .@dun_m + "minutes " + .@dun_s + "seconds left to enter the next dungeon.";
+ next;
+ mes "It is dangerous here. Let me move you to Alberta.";
+ close2;
+ warp "alberta",223,36;
+ end;
+ }
else {
mapannounce "e_tower", .@p_name2$ + " of the party, " + .@p_name$ + ", is entering the dungeon, " + .@md_name$ + ".",bc_map,"0x00ff99",FW_NORMAL,12;
+ set party_instance_id,getcharid(1);
warp "1@tower",52,354;
end;
}
@@ -367,6 +394,7 @@ e_tower,81,105,0 script Tower Protection Stone 406,{
set etower_timer,0;
erasequest 60200;
erasequest 60201;
+ set party_instance_id,0;
mes "^0000ffThe records and after effects related to the Endless Tower have been removed. You can generate and enter the Endless Tower again.^000000";
close;
}
diff --git a/npc/instances/NydhoggsNest.txt b/npc/instances/NydhoggsNest.txt
index 0852111ab..b771d4b65 100644
--- a/npc/instances/NydhoggsNest.txt
+++ b/npc/instances/NydhoggsNest.txt
@@ -27,7 +27,7 @@ nyd_dun02,100,201,3 script Yggdrasil Gatekeeper 111,8,8,{
case 1:
if (ep13_1_edq == 14) {
specialeffect2 EF_HOLYHIT;
- PushPC 3,3;
+ pushpc 3,3;
set ep13_1_edq,15;
mes "A mysterious power prevents you from getting too close. It looks like there is something strong beyond the door...";
next;
@@ -39,7 +39,7 @@ nyd_dun02,100,201,3 script Yggdrasil Gatekeeper 111,8,8,{
}
else if (ep13_1_edq == 15) {
specialeffect2 EF_HOLYHIT;
- PushPC 3,3;
+ pushpc 3,3;
mes "A mysterious power prevents you from getting too close. It looks like there is something strong beyond the door...";
next;
mes "Perhaps there's a great hidden secret beyond the gate, beyond expectation.";
@@ -50,7 +50,7 @@ nyd_dun02,100,201,3 script Yggdrasil Gatekeeper 111,8,8,{
}
else {
specialeffect2 EF_HOLYHIT;
- PushPC 3,3;
+ pushpc 3,3;
mes "A mysterious power prevents you from getting too close. It looks like there is something strong beyond the door...";
next;
mes "Perhaps there's a great hidden secret beyond the gate, beyond expectation.";
@@ -228,8 +228,18 @@ nyd_dun02,100,201,3 script Yggdrasil Gatekeeper 111,8,8,{
mes "You did not request for entrance. Please let your leader request entrance.";
close;
}
+ if((party_instance_id2 != 0) && (party_instance_id2 != getcharid(1))) {
+ //Custom
+ mes "[Yggdrasil Gatekeeper]";
+ mes "You are no longer able to enter Nidhogger's Nest, as your instance has expired.";
+ next;
+ mes "[Yggdrasil Gatekeeper]";
+ mes "After Nidhoggur's Shadow disappears, at least 3 days is needed for stabilizing.";
+ close;
+ }
else {
mapannounce "nyd_dun02", .@p_name$ + "'s Party member " + .@p_name2$ + " has entered " + .@md_name$,bc_map,"0x00ff99";
+ set party_instance_id2,getcharid(1);
if (checkquest(3135) == -1) setquest 3135;
if (checkquest(3136) == -1) setquest 3136;
warp "1@nyd",32,37;
@@ -263,6 +273,7 @@ nyd_dun02,100,201,3 script Yggdrasil Gatekeeper 111,8,8,{
next;
mes "[Yggdrasil Gatekeeper]";
mes "If you would like to enter again, please register with me.";
+ set party_instance_id2,0;
erasequest 3135;
erasequest 3136;
set 'ins_nyd2,0;
@@ -280,7 +291,7 @@ nyd_dun02,100,201,3 script Yggdrasil Gatekeeper 111,8,8,{
switch(select("Move closer to look more carefully.:Step back.")) {
case 1:
specialeffect2 EF_HOLYHIT;
- PushPC 3,3;
+ pushpc 3,3;
mes "A mysterious power prevents you from getting too close. It looks like there is something strong beyond the door...";
next;
mes "Perhaps there's a great hidden secret beyond the gate, beyond expectation.";
diff --git a/npc/instances/OrcsMemory.txt b/npc/instances/OrcsMemory.txt
index 332159aeb..c8f5d2510 100644
--- a/npc/instances/OrcsMemory.txt
+++ b/npc/instances/OrcsMemory.txt
@@ -117,8 +117,14 @@ gef_fild10,242,202,0 script Dimensional Gorge Piece 406,{
mes "If your dungeon has been destroyed you must wait 7 days before re-entering.";
close;
}
+ if((party_instance_id3 != 0) && (party_instance_id3 != getcharid(1))) {
+ mes "The Memorial Dungeon "+.@md_name$+" does not exist.";
+ mes "The Memorial Dungeon has been destroyed by the Party Leader or because of the time limit. Please try again after 2 hours.";
+ close;
+ }
mapannounce "gef_fild10", .@p_leader$ + " of the party, " + .@p_name$ + " is entering the "+.@md_name$+".",bc_map,"0x00ff99";
if (checkquest(12059)== -1) setquest 12059;
+ set party_instance_id3,getcharid(1);
warp "1@orcs",179,15;
end;
case 3:
@@ -132,7 +138,13 @@ gef_fild10,242,202,0 script Dimensional Gorge Piece 406,{
mes "The Memorial Dungeon has been destroyed by the Party Leader or because of the time limit. Please try again after 2 hours.";
close;
}
+ if((party_instance_id3 != 0) && (party_instance_id3 != getcharid(1))) {
+ mes "The Memorial Dungeon "+.@md_name$+" does not exist.";
+ mes "The Memorial Dungeon has been destroyed by the Party Leader or because of the time limit. Please try again after 2 hours.";
+ close;
+ }
mapannounce "gef_fild10",.@p_name$+" Party's member "+.@p_leader$+" has entered the "+.@md_name$+".",bc_map,"0x00ff99";
+ set party_instance_id3,getcharid(1);
if (checkquest(12059)== -1) setquest 12059;
warp "1@orcs",179,15;
end;
@@ -149,8 +161,14 @@ gef_fild10,242,202,0 script Dimensional Gorge Piece 406,{
mes "The Memorial Dungeon has been destroyed by the Party Leader or because of the time limit. Please try again after 2 hours.";
close;
}
+ if((party_instance_id3 != 0) && (party_instance_id3 != getcharid(1))) {
+ mes "The Memorial Dungeon "+.@md_name$+" does not exist.";
+ mes "The Memorial Dungeon has been destroyed by the Party Leader or because of the time limit. Please try again after 2 hours.";
+ close;
+ }
mapannounce "gef_fild10",.@p_name$+" Party's member "+.@p_leader$+" has entered the "+.@md_name$+".",bc_map,"0x00ff99";
if (checkquest(12059)== -1) setquest 12059;
+ set party_instance_id3,getcharid(1);
warp "1@orcs",179,15;
end;
case 2:
@@ -159,6 +177,7 @@ gef_fild10,242,202,0 script Dimensional Gorge Piece 406,{
}
else if (.@orctime == 2) {
mes "^0000ffAll records and after-effects related to the Orc's Memory Dungeon are deleted. You can now regenerate or re-enter the dungeon.^000000";
+ set party_instance_id2,0;
erasequest 12059;
close;
}
diff --git a/npc/instances/SealedShrine.txt b/npc/instances/SealedShrine.txt
index f6a028dd9..05a14c931 100644
--- a/npc/instances/SealedShrine.txt
+++ b/npc/instances/SealedShrine.txt
@@ -209,6 +209,7 @@ monk_test,309,146,3 script Friar Patrick#edq 412,{
if (checkquest(3040)>=0) erasequest 3040;
if (checkquest(3041)>=0) erasequest 3041;
if (checkquest(3045)>=0) erasequest 3045;
+ set party_instance_id4,0;
mes "[Friar Patrick]";
mes "Huu... It's over. Now that I've released Baphomet's Curse, you can enter again.";
}
@@ -279,10 +280,15 @@ monk_test,306,151,3 script Grave of Baphomet#edq 111,{
if (has_instance("1@cata") == "") {
mes "It's cold to the touch. It doesn't respond.";
}
+ if((party_instance_id4 != 0) && (party_instance_id4 != getcharid(1))) {
+ 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 {
mapannounce "monk_test","[" + strcharinfo(0) + "] member of the [" + getpartyname(.@party_id) + "] party has entered the Sealed Shrine.",bc_map,"0x00ff99";
if (checkquest(3040) == -1) setquest 3040;
+ set party_instance_id4,getcharid(1);
warp "1@cata",100,224;
+ end;
}
}
else if (.@ins_bapho_check == 0 || .@ins_bapho_check == 1) {
@@ -300,6 +306,7 @@ monk_test,306,151,3 script Grave of Baphomet#edq 111,{
if (checkquest(3040)>=0) erasequest 3040;
if (checkquest(3041)>=0) erasequest 3041;
if (checkquest(3045)>=0) erasequest 3045;
+ set party_instance_id4,0;
next;
mes "[Friar Patrick]";
mes "Huu... It's over. Now I released all of the curses on you. You can enter again.";
diff --git a/npc/merchants/renters.txt b/npc/merchants/renters.txt
index 25a6227fc..3d56bf75a 100644
--- a/npc/merchants/renters.txt
+++ b/npc/merchants/renters.txt
@@ -3,7 +3,7 @@
//===== By: ==================================================
//= kobra_k88, mod by Lupus
//===== Current Version: =====================================
-//= 1.7
+//= 1.9
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
@@ -20,6 +20,7 @@
//= 1.6: Moved the Falcon Master to Hugel [Poki#3]
//= 1.7 Updated to Aegis 10.3 standards. [L0ne_W0lf]
//= 1.8 Added 3rd Job creature NPCs (Dragon/Gryphon) [L0ne_W0lf]
+//= 1.9 Enabled Gryphon Renter NPC and added Mado Gear NPC. [Masao]
//============================================================
// PecoPeco Breeder (for Knights)-------------------------------------------
@@ -318,6 +319,7 @@ prontera,125,208,5 script Peco Peco Remover 105,{
close;
}
+// Magic Gear Renter
prontera,163,178,4 script Magic Gear Master 105,{
mes "[Magic Gear Master]";
if (Class == Job_Mechanic || Class == Job_Mechanic_T || Class == Job_Baby_Mechanic) {