Explorar o código

* Script updates:
- Added new Renewal warpers for Satan Morroc maps.
- Updated "Succession of the Prince" quest with some new cases, and fixed checkquests.
- Updated portions of Ecology quest in 13.1 quests with new checks and cases.
- Added some missing 'disable_items' commands to 2004 Headgear quests.

* Other changes:
- Changed some strnpcinfo(1) -> strnpcinfo(0) in 13.2 quests. (bugreport:7853)
- Moved Rune Knight Kafra into main Kafras file.
- Revised documentation for 'addrid'. (follow-up 6572a9f)
- 'instance_id()' no longer throws an error upon failure.
- Fixed Desert Twilight/Sandstorm combo. (bugreport:7897, credits: Playtester)

Signed-off-by: Euphy <euphy@rathena.org>

Euphy %!s(int64=11) %!d(string=hai) anos
pai
achega
20153af6e0

+ 1 - 1
db/pre-re/item_combo_db.txt

@@ -163,5 +163,5 @@
 //5359:5657,{ bonus bLongAtkRate,getequiprefinerycnt(EQI_HEAD_TOP); }
 5401:5653,{ bonus bInt,1; bonus bMatkRate,2; }
 //5470:5653,{ bonus bDex,1; bonus bLongAtkRate,3; }
-13034:13035,{ bonus bMaxSP,20; bonus bMaxHPRate,5; bonus bHit,10; bonus2 bAddSize,Size_Large,30; autobonus "{ bonus bAspdRate,100; }",1,7000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; }
+13034:13035,{ bonus bMaxSP,20; bonus bMaxHPRate,5; bonus bHit,10; bonus2 bAddSize,Size_Large,30; autobonus "{ bonus bAspdRate,100; }",1,7000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }
 18507:18539,{ bonus bUseSPrate,-3; }

+ 1 - 1
db/re/item_combo_db.txt

@@ -205,5 +205,5 @@
 5401:5653,{ bonus bInt,1; bonus bMatkRate,2; }
 //5470:5653,{ bonus bDex,1; bonus bLongAtkRate,3; }
 13027:15044,{ bonus3 bAddMonsterDropItem,929,RC_Brute,100+(getrefine()*10); bonus3 bAddMonsterDropItem,929,RC_DemiHuman,100+(getrefine()*10); bonus3 bAddMonsterDropItem,970,RC_Brute,20+(getrefine()*2); bonus3 bAddMonsterDropItem,970,RC_DemiHuman,20+(getrefine()*2); }
-13034:13035,{ bonus bMaxSP,20; bonus bMaxHPRate,5; bonus bHit,10; bonus2 bAddSize,Size_Large,30; autobonus "{ bonus bAspdRate,100; }",1,7000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; }
+13034:13035,{ bonus bMaxSP,20; bonus bMaxHPRate,5; bonus bHit,10; bonus2 bAddSize,Size_Large,30; autobonus "{ bonus bAspdRate,100; }",1,7000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }
 18507:18539,{ bonus bUseSPrate,-3; }

+ 20 - 18
doc/script_commands.txt

@@ -1,4 +1,4 @@
-//===== rAthena Documentation ================================
+//===== rAthena Documentation ================================
 //= rAthena Script Commands
 //===== By: ==================================================
 //= rAthena Dev Team
@@ -3532,23 +3532,25 @@ or does not exist), and 1 upon success.
 
 -------------------------
 
-*addrid(<type> or <rid>{,<forced>{,<parameters>}})
-
-Allows to attach multiple RIDs to one script at a time.
-
-<type>:
-	Account ID -> attach player with acc_id if he's online. Returns 1 if player is offline, 0 if online
-	0 -> attach entire server
-	1 -> attach everyone currently on the map of the player if a player runs addrid/else of the npcs map
-	2 -> attach entire party(party id has to be entered at supportid)
-	3 -> attach entire guild(guild id has to be entered at supportid)
-	4 -> attach all players in an area at the map where the person running addrid is located/no person=use npcs map
-	Note: 4 uses addrid(4,Forced,x0,y0,x1,y1)
-	
-
-<forced>:
-	0 or left out -> force attachment of the player even if he runs a script already
-	1 -> don't attach if player is currently running a script(only needed when you use things like mes"" close next so it seems
+*addrid(<type>{,<flag>{,<parameters>}});
+
+This command will attach other RIDs to the current script without detaching the
+invoking RID. It returns 1 if successful and 0 upon failure.
+
+<type> determines what RIDs are attached:
+ 0: All players in the server.
+ 1: All players in the map of the invoking player, or the invoking NPC if no player is attached.
+ 2: Party members of a specified party ID.
+    [ Parameters: <party id> ]
+ 3: Guild members of a specified guild ID.
+    [ Parameters: <guild id> ]
+ 4: All players in a specified area of the map of the invoking player (or NPC).
+    [ Parameters: <x0>,<y0>,<x1>,<y1> ]
+ Account ID: The specified account ID.
+
+<flag> can prevent certain players from being attached:
+ 0: Players are always attached. (default)
+ 1: Players currently running another script will not be attached.
 
 ---------------------------------------
 

+ 21 - 12
npc/quests/newgears/2004_headgears.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Dj-Yhn
 //===== Current Version: ===================================== 
-//= 1.6a
+//= 1.6b
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -34,11 +34,13 @@
 //= 1.5 Vito'd function call for checkweight. [L0ne_W0lf]
 //= 1.6 Replaced effect numerics with constants. [L0ne_W0lf]
 //= 1.6a Added 'disable_items' command. [Euphy]
+//= 1.6b Added more 'disable_items' commands. [Euphy]
 //============================================================
 
 // Black Cat Ears
 //============================================================
 payon,115,131,3	script	Neko Neko#1	725,{
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a minute! -";
 		mes "- Currently you're carrying -";
@@ -106,6 +108,7 @@ payon,115,131,3	script	Neko Neko#1	725,{
 // X Hairpin, Band Aid, Flower Hairpin
 //============================================================
 geffen,129,148,3	script	Argen#1	779,{
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes "[Argen]";
 		mes "Hey~ why are you carrying so many items?";
@@ -295,6 +298,7 @@ geffen,129,148,3	script	Argen#1	779,{
 // Hot-blooded Headband
 //============================================================
 yuno,300,188,5	script	Zhenbolt#1	753,{
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a minute! -";
 		mes "- Currently you're carrying -";
@@ -390,6 +394,7 @@ yuno,300,188,5	script	Zhenbolt#1	753,{
 // Red Ribbon
 //============================================================
 prontera,165,232,3	script	Nephia#1	744,{
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a minute! -";
 		mes "- Currently you're carrying -";
@@ -686,8 +691,7 @@ yuno,241,52,3	script	Old Blacksmith#hgear	813,{
 			mes "I don't care how many times you've upgraded the items you brought, but please ^4d4dff carry only items that you need to create this item.^000000 I can't mess up my artwork because of some mistake you might make.";
 			next;
 			if (select("I am ready.:Okay, let me go store my other items first.") == 1) {
-				set .@now_weight,MaxWeight-Weight;
-				if (.@now_weight < 2000) {
+				if (MaxWeight - Weight < 2000) {
 					mes "[Hatbyr Mhore]";
 					mes "Ouch...!";
 					mes "Why are you carrying so many items with you? Leave all your extra baggage somewhere else and come back.";
@@ -745,8 +749,7 @@ yuno,241,52,3	script	Old Blacksmith#hgear	813,{
 			mes "I don't care how many times you've upgraded the items you brought, but please ^4d4dff carry only items that you need to create this item.^000000 I can't mess up my artwork because of some mistake you might make.";
 			next;
 			if (select("I am ready.:Okay, let me go store my other items first.") == 1) {
-				set .@now_weight,MaxWeight-Weight;
-				if (.@now_weight < 2000) {
+				if (MaxWeight - Weight < 2000) {
 					mes "[Hatbyr Mhore]";
 					mes "Ouch...!";
 					mes "Why are you carrying so many items with you? Leave all your extra baggage somewhere else and come back.";
@@ -813,8 +816,7 @@ yuno,241,52,3	script	Old Blacksmith#hgear	813,{
 			mes "I don't care how many times you've upgraded the items you brought, but please ^4d4dff carry only items that you need to create this item. I can't mess up my artwork because of some mistake you might make. ^000000";
 			next;
 			if (select("I am ready.:Okay, let me go store my other items first.") == 1) {
-				set .@now_weight,MaxWeight-Weight;
-				if (.@now_weight < 2000) {
+				if (MaxWeight - Weight < 2000) {
 					mes "[Hatbyr Mhore]";
 					mes "Ouch, why are you carrying";
 					mes "so many items with you?";
@@ -869,8 +871,7 @@ yuno,241,52,3	script	Old Blacksmith#hgear	813,{
 			mes "I don't care how many times you've upgraded the items you brought, but please ^4d4dff carry only items that you need to create this item.^000000 I can't mess up my artwork because of some mistake you might make.";
 			next;
 			if (select("I am ready.:Okay, let me go store my other items first.") == 1) {
-				set .@now_weight,MaxWeight-Weight;
-				if (.@now_weight < 2000) {
+				if (MaxWeight - Weight < 2000) {
 					mes "[Hatbyr Mhore]";
 					mes "Ouch, why are you carrying";
 					mes "so many items with you?";
@@ -963,6 +964,7 @@ yuno,241,52,3	script	Old Blacksmith#hgear	813,{
 // Sea-Otter Hat
 //============================================================
 xmas,183,267,3	script	Pretty Lindsay#1	793,{
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a minute! -";
 		mes "- Currently you're carrying -";
@@ -971,8 +973,7 @@ xmas,183,267,3	script	Pretty Lindsay#1	793,{
 		mes "- you put some items into Kafra Storage. -";
 		close;
 	}
-	set .@now_weight,MaxWeight-Weight;
-	if (.@now_weight < 2000) {
+	if (MaxWeight-Weight < 2000) {
 		mes "[Pretty Lindsay]";
 		mes "I know you brought everything you need for me to make you a hat, but you're carrying too much stuff. Why don't you put some of your things in Kafra Storage?";
 		close;
@@ -1078,6 +1079,7 @@ xmas,183,267,3	script	Pretty Lindsay#1	793,{
 // Teddybear Hat
 //============================================================
 xmas,175,156,3	script	Fuzzy Fuzz#1	712,{
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a minute! -";
 		mes "- Currently you're carrying -";
@@ -1165,6 +1167,7 @@ xmas,175,156,3	script	Fuzzy Fuzz#1	712,{
 // Model Training Hat
 //============================================================
 payon_in03,8,193,4	script	Nanhyang#1	77,{
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a minute! -";
 		mes "- Currently you're carrying -";
@@ -1325,6 +1328,7 @@ payon_in03,8,193,4	script	Nanhyang#1	77,{
 // Tulip Hairpin
 //============================================================
 geffen,83,189,5	script	Seth#1	716,{
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes " [Seth]";
 		mes "Whoa, why are you carrying so many items with you?";
@@ -1378,7 +1382,7 @@ geffen,83,189,5	script	Seth#1	716,{
 			mes "I'm done!";
 			mes "I did a good job, didn't I?";
 			next;
-			if (BaseJob == Job_Novice && Upper != 1) {
+			if (BaseJob == Job_Novice || BaseJob == Job_SuperNovice) {
 				mes "[Seth]";
 				mes "Oh, here's the leftovers. Mommy says that we should always save things. Heh heh~";
 				getitem 935,1; //Shell
@@ -1443,6 +1447,7 @@ geffen,83,189,5	script	Seth#1	716,{
 // Party Hat, Straw Hat, Cowboy Hat, Sombrero, Beanie
 //============================================================
 xmas_in,35,30,3	script	Hat Merchant#zero	797,{
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
@@ -1733,6 +1738,7 @@ xmas_in,35,30,3	script	Hat Merchant#zero	797,{
 // Decorative Golden Bell, Crown of Ancient Queen, Crown of Mistress
 //============================================================
 yuno_in03,20,18,6	script	Nehris#1	726,{
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a minute! -";
 		mes "- Currently you're carrying -";
@@ -2070,6 +2076,7 @@ OnInit:
 // Drooping Cat, Smokie Leaf, Lazy Smokie, Blue Fish
 //============================================================
 morocc,273,79,4	script	Educated Traveller	99,{
+	disable_items;
 	if ((MaxWeight-Weight) < 5000 || checkweight(1201,1) == 0) {
 		mes "- Wait a minute! -";
 		mes "- Currently you're over weight -";
@@ -2506,6 +2513,7 @@ OnTouch:
 }
 
 pay_dun03,48,84,4	script	Nine Tails#Kitsune Man	762,{
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a moment! -";
 		mes "- Currently you are carrying -";
@@ -2627,6 +2635,7 @@ OnMyMobDead2:
 //============================================================
 in_orcs01,31,93,1	script	Orc Warrior#1	1023,2,2,{
 OnTouch:
+	disable_items;
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";

+ 44 - 215
npc/quests/quests_13_1.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 3.2
+//= 3.3
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -48,6 +48,7 @@
 //= 3.0 Fixed a missing variable check. [Joseph]
 //= 3.1 Updated RE/Pre-RE EXP. [Euphy]
 //= 3.2 Updated ep13_start and dialog to match official script. [Joseph]
+//= 3.3 Updated to match the latest official script. [Euphy]
 //============================================================ 
 
 // Onward to the New World
@@ -3674,7 +3675,7 @@ mid_camp,267,258,0	script	Post#ep13bs2	111,{
 // Attitude to the New
 //============================================================ 
 mid_camp,188,254,3	script	Monster Scholar#ep13	883,{
-	if (ep13_ryu < 100) {
+	if (ep13_ryu < 100 && ep13_start < 100) {
 		mes "[Monster Scholar]";
 		mes "Who... Who are you?";
 		mes "Are you from the other";
@@ -4254,7 +4255,7 @@ mid_camp,188,254,3	script	Monster Scholar#ep13	883,{
 				mes "I'm extremely frustrated. I feel helpless because I wasn't able to go back home last time...";
 				next;
 				mes "["+strcharinfo(0)+"]";
-				mes "I found this horm from a monster in the Splendide Area.";
+				mes "I've found this horn from a monster in the Splendide Area.";
 				mes "That monster was very mysterious, and its body was covered with grass.";
 				next;
 				mes "[Rumis Block]";
@@ -4355,7 +4356,7 @@ mid_camp,188,254,3	script	Monster Scholar#ep13	883,{
 }
 
 mid_camp,240,270,3	script	Botanist#ep13	750,{
-	if (ep13_ryu < 100) {
+	if (ep13_ryu < 100 && ep13_start < 100) {
 		mes "[Botanist]";
 		mes "This new land!";
 		mes "Undiscovered life!";
@@ -4636,201 +4637,41 @@ mid_camp,240,270,3	script	Botanist#ep13	750,{
 }
 
 mid_camp,336,171,1	script	Camp Guard#man1	852,{
-	if (ep13_newbs == 6 || ep13_newbs == 19)
-		callsub OnHalt,(ep13_newbs == 6?"Diego.":"Lugen.");
-	if (ep13_animal == 0) {
-		mes "[Camp Guard]";
-		mes "Stop!";
-		mes "You're about to enter an area that has not been fully explored.";
-		mes "Only personnel--researchers and explorers--authorized by United Midgard and the garrison are allowed to enter the danger zone.";
-		next;
-		mes "[Camp Guard]";
-		mes "Your cooperation is appreciated.";
-		close;
-	}
-	else if (ep13_animal == 1) {
-		mes "[Camp Guard]";
-		mes "Stop!";
-		mes "You're about to enter an area that has not been fully explored.";
-		mes "Only personnel--researchers and explorers--authorized by United Midgard and the garrison are allowed to enter the danger zone.";
-		next;
-		mes "[Camp Guard]";
-		mes "Your cooperation is appreciated.";
-		next;
-		switch(select("I've come to help with some research.:I want to stay.")) {
-		case 1:
-			mes "["+strcharinfo(0)+"]";
-			mes "Hi, my name is "+strcharinfo(0)+". I'm the assistant of Monster Scholar Rumis Block.";
-			next;
-			mes "[Camp Guard]";
-			mes "That 'fraidy-- Wah! I'm sorry!";
-			mes "I didn't mean to say that... And I completely understand that he hasn't been able to adapt himself to new surroundings.";
-			next;
-			mes "[Camp Guard]";
-			mes "So, you're here to assist Mr. Rumis Block, huh?";
-			mes "You may pass. If you encounter any threats or strange phenomenon, then please don't hesitate to report to us at the garrison.";
-			set ep13_animal,2;
-			close2;
-			warp "man_fild01",36,235;
-			end;
-		case 2:
-			mes "[Camp Guard]";
-			mes "No, you can't. Please return to the expedition camp.";
-			close;
-		}
-	}
-	else {
-		mes "[Camp Guard]";
-		mes "Stop!";
-		mes "You're about to enter an area that has not been fully explored.";
-		mes "Only personnel--researchers and explorers--authorized by United Midgard and the garrison are allowed to enter the danger zone.";
-		next;
-		switch(select("Let me move to the next zone.:I want to stay here.")) {
-		case 1:
-			mes "[Camp Guard]";
-			mes "Please be careful out there.";
-			mes "If you encounter any threats or strange phenomenon, then please don't hesitate to report to us at the garrison.";
-			close2;
-			warp "man_fild01",36,235;
-			end;
-		case 2:
-			mes "[Camp Guard]";
-			mes "No, you can't. Please return to the expedition camp.";
-			close;
-		}
-	}
-OnHalt:
 	mes "[Camp Guard]";
 	mes "Stop!";
 	mes "You're about to enter an area that has not been fully explored.";
 	mes "Only personnel--researchers and explorers--authorized by United Midgard and the garrison are allowed to enter the danger zone.";
-	next;
-	mes "[Camp Guard]";
-	mes "Your cooperation is appreciated.";
-	next;
-	mes "[Camp Guard]";
-	mes "Oh, I was informed of your arrival by Mr. "+getarg(0);
-	mes "You may pass.";
-	next;
-	mes "[Camp Guard]";
-	mes "Please be careful out there.";
-	mes "If you encounter any threats or strange phenomenon, then please don't hesitate to report to us at the garrison.";
-	close2;
-	warp "man_fild01",36,235;
-	end;
-}
-
-mid_camp,13,143,5	script	Camp Guard#man2	852,{
-	if (ep13_newbs == 6 || ep13_newbs == 19)
-		callsub OnHalt,(ep13_newbs == 6?"Diego.":"Lugen.");
-	if (ep13_animal == 0) {
-		mes "[Camp Guard]";
-		mes "Stop!";
-		mes "You're about to enter an area that has not been fully explored.";
-		mes "Only personnel--researchers and explorers--authorized by United Midgard and the garrison are allowed to enter the danger zone.";
-		next;
-		mes "[Camp Guard]";
-		mes "Your cooperation is appreciated.";
+	if (ep13_ryu < 100 && ep13_start < 100)
 		close;
-	}
-	else if (ep13_animal == 5)
-		callsub OnHalt,"Terris.";
-	else {
+	next;
+	switch(select("I want to enter the next area.:I want to stay.")) {
+	case 1:
 		mes "[Camp Guard]";
-		mes "Stop!";
-		mes "You're about to enter an area that has not been fully explored.";
-		mes "Only personnel--researchers and explorers--authorized by United Midgard and the garrison are allowed to enter the danger zone.";
-		next;
-		switch(select("Let me move to the next zone.:I want to stay here.")) {
+		mes "Please be careful out there.";
+		mes "If you encounter any threats or strange phenomenon, then please don't hesitate to report to us at the garrison.";
+		close2;
+		switch(atoi(charat(strnpcinfo(2),3))) {
 		case 1:
-			mes "[Camp Guard]";
-			mes "Please be careful out there.";
-			mes "If you encounter any threats or strange phenomenon, then please don't hesitate to report to us at the garrison.";
-			close2;
-			warp "spl_fild02",379,143;
-			end;
+			if (ep13_animal == 1)
+				set ep13_animal,2;
+			warp "man_fild01",36,235;
+			break;
 		case 2:
-			mes "[Camp Guard]";
-			mes "No, you can't. Please return to the expedition camp.";
-			close;
+			warp "spl_fild02",379,143;
+			break;
+		case 3:
+			warp "spl_fild02",380,217;
+			break;
 		}
-	}
-OnHalt:
-	mes "[Camp Guard]";
-	mes "Stop!";
-	mes "You're about to enter an area that has not been fully explored.";
-	mes "Only personnel--researchers and explorers--authorized by United Midgard and the garrison are allowed to enter the danger zone.";
-	next;
-	mes "[Camp Guard]";
-	mes "Your cooperation is appreciated.";
-	next;
-	mes "[Camp Guard]";
-	mes "Oh, I was informed of your arrival by Mr. "+getarg(0);
-	mes "You may pass.";
-	next;
-	mes "[Camp Guard]";
-	mes "Please be careful out there.";
-	mes "If you encounter any threats or strange phenomenon, then please don't hesitate to report to us at the garrison.";
-	close2;
-	warp "spl_fild02",379,143;
-	end;
-}
-
-mid_camp,9,215,5	script	Camp Guard#man3	852,{
-	if (ep13_newbs == 6 || ep13_newbs == 19)
-		callsub OnHalt,(ep13_newbs == 6?"Diego.":"Lugen.");
-	if (ep13_animal == 0) {
-		mes "[Camp Guard]";
-		mes "Stop!";
-		mes "You're about to enter an area that has not been fully explored.";
-		mes "Only personnel--researchers and explorers--authorized by United Midgard and the garrison are allowed to enter the danger zone.";
-		next;
+		end;
+	case 2:
 		mes "[Camp Guard]";
-		mes "Your cooperation is appreciated.";
+		mes "No, you can't. Please return to the expedition camp.";
 		close;
 	}
-	else if (ep13_animal == 5)
-		callsub OnHalt,"Terris.";
-	else {
-		mes "[Camp Guard]";
-		mes "Stop!";
-		mes "You're about to enter an area that has not been fully explored.";
-		mes "Only personnel--researchers and explorers--authorized by United Midgard and the garrison are allowed to enter the danger zone.";
-		next;
-		switch(select("Let me move to the next zone.:I want to stay here.")) {
-		case 1:
-			mes "[Camp Guard]";
-			mes "Please be careful out there.";
-			mes "If you encounter any threats or strange phenomenon, then please don't hesitate to report to us at the garrison.";
-			close2;
-			warp "spl_fild02",380,217;
-			end;
-		case 2:
-			mes "[Camp Guard]";
-			mes "No, you can't. Please return to the expedition camp.";
-			close;
-		}
-	}
-OnHalt:
-	mes "[Camp Guard]";
-	mes "Stop!";
-	mes "You're about to enter an area that has not been fully explored.";
-	mes "Only personnel--researchers and explorers--authorized by United Midgard and the garrison are allowed to enter the danger zone.";
-	next;
-	mes "[Camp Guard]";
-	mes "Your cooperation is appreciated.";
-	next;
-	mes "[Camp Guard]";
-	mes "Oh, I was informed of your arrival by Mr. "+getarg(0);
-	mes "You may pass.";
-	next;
-	mes "[Camp Guard]";
-	mes "Please be careful out there.";
-	mes "If you encounter any threats or strange phenomenon, then please don't hesitate to report to us at the garrison.";
-	close2;
-	warp "spl_fild02",380,217;
-	end;
 }
+mid_camp,13,143,5	duplicate(Camp Guard#man1)	Camp Guard#man2	852
+mid_camp,9,215,5	duplicate(Camp Guard#man1)	Camp Guard#man3	852
 
 mid_camp,49,154,0	script	#env_clear	-1,3,3,{
 OnTouch:
@@ -4960,15 +4801,15 @@ man_fild01,92,230,3	script	Frozen Tree#evt_lumis	111,1,1,{
 		next;
 		mes "[Rumis Block]";
 		mes "Their horns might possess a special power. And I want to have them for further research.";
-		mes "...20 horns will be enough.";
+		mes "...5 horns will be enough.";
 		set ep13_animal,12;
 		changequest 2154,2155;
 		close;
 	}
 	else if (ep13_animal == 12) {
-		if (countitem(6032) < 20) {
+		if (countitem(6032) < 5) {
 			mes "[Rumis Block]";
-			mes "I'd like to study Hillsrion's Horns. Please bring 20 of them for me, okay.";
+			mes "I'd like to study Hillsrion's Horns. Please bring 5 of them for me, okay.";
 			close;
 		}
 		else {
@@ -5018,7 +4859,7 @@ man_fild01,92,230,3	script	Frozen Tree#evt_lumis	111,1,1,{
 			mes "[Rumis Block]";
 			mes "Let's go back to the camp. Shall we? I have something to discuss with you.";
 			set ep13_animal,13;
-			delitem 6032,20; //Horn_Of_Hilsrion
+			delitem 6032,5; //Horn_Of_Hilsrion
 			changequest 2155,2156;
 			close;
 		}
@@ -5035,7 +4876,7 @@ spl_fild02,34,223,5	script	Small Fairy#spl	442,{
 			mes "It has tiny wings on the back...";
 			mes "It's a fairy!";
 			next;
-			emotion 6;
+			emotion e_an;
 			mes "[Small Fairy]";
 			mes "RLGHLRXLA TKANTLFDMS";
 			mes "WJACK TNAHRDNJSDMFH";
@@ -5049,19 +4890,9 @@ spl_fild02,34,223,5	script	Small Fairy#spl	442,{
 			setquest 2158;
 			close;
 		}
-		else {
-			emotion 6;
-			mes "[Small Fairy]";
-			mes "RLGHLRXLA TKANTLFDMS";
-			mes "WJACK TNAHRDNJSDMFH";
-			mes "WLSGHKWND !!";
-			next;
-			mes "The surprised fairy is saying something to you, but you cannot understand fairy language.";
-			close;
-		}
 	}
-	else {
-		emotion 6;
+	emotion e_an;
+	if (!isequipped(2782) && ep13_2_rhea < 100) {
 		mes "[Small Fairy]";
 		mes "RLGHLRXLA TKANTLFDMS";
 		mes "WJACK TNAHRDNJSDMFH";
@@ -5069,6 +4900,10 @@ spl_fild02,34,223,5	script	Small Fairy#spl	442,{
 		next;
 		mes "The surprised fairy is saying something to you, but you cannot understand fairy language.";
 		close;
+	} else {
+		mes "[Small Fairy]";
+		mes "Who are you?! Are you looking for the Sapha!?";
+		close;
 	}
 }
 
@@ -5092,19 +4927,9 @@ man_fild03,236,105,3	script	Tree Giant#man	454,{
 			setquest 2159;
 			close;
 		}
-		else {
-			emotion e_dots;
-			mes "[Tree Giant]";
-			mes "TJDTMFJDNS CJFDI";
-			mes "TKADLFDMF QKATOS";
-			mes "EKDTLSDML DLFMADMS..";
-			next;
-			mes "The surprised giant is saying something to you, but you cannot understand.";
-			close;
-		}
 	}
-	else {
-		emotion e_dots;
+	emotion e_dots;
+	if (!isequipped(2782) && ep13_2_rhea < 100) {
 		mes "[Tree Giant]";
 		mes "TJDTMFJDNS CJFDI";
 		mes "TKADLFDMF QKATOS";
@@ -5112,6 +4937,10 @@ man_fild03,236,105,3	script	Tree Giant#man	454,{
 		next;
 		mes "The surprised giant is saying something to you, but you cannot understand.";
 		close;
+	} else {
+		mes "[Tree Giant]";
+		mes "Where are the Laphine reinforcements? I might have a problem.";
+		close;
 	}
 }
 

+ 17 - 19
npc/quests/quests_13_2.txt

@@ -3316,26 +3316,25 @@ nyd_dun02,68,256,0	script	Dragon Egg#ep13_degg_1	463,{
 	if ((ep13_2_dayegg == 1) && (countitem(6093) < 10)) {
 		mes "We just got fresh eggs from the dragon nest.";
 		getitem 6093,1; //Egg_Of_Draco
-		disablenpc strnpcinfo(1);
+		disablenpc strnpcinfo(0);
 		initnpctimer;
 		close;
 	}
 	end;
 
 OnTimer240000:
-	enablenpc strnpcinfo(1);
+	enablenpc strnpcinfo(0);
 	stopnpctimer;
 	end;
 
 OnEnable:
-	enablenpc strnpcinfo(1);
+	enablenpc strnpcinfo(0);
 	end;
 
 OnDisable:
-	disablenpc strnpcinfo(1);
+	disablenpc strnpcinfo(0);
 	end;
 }
-
 nyd_dun02,68,256,0	duplicate(Dragon Egg#ep13_degg_1)	Dragon Egg#ep13_degg11	463
 nyd_dun02,202,166,0	duplicate(Dragon Egg#ep13_degg_1)	Dragon Egg#ep13_degg12	463
 nyd_dun02,200,165,0	duplicate(Dragon Egg#ep13_degg_1)	Dragon Egg#ep13_degg13	463
@@ -3348,26 +3347,25 @@ nyd_dun02,201,166,0	script	Dragon Egg#ep13_degg_2	463,{
 	if ((ep13_2_dayegg == 1) && (countitem(6093) < 10)) {
 		mes "We just got fresh eggs from the dragon nest.";
 		getitem 6093,1; //Egg_Of_Draco
-		disablenpc strnpcinfo(1);
+		disablenpc strnpcinfo(0);
 		initnpctimer;
 		close;
 	}
 	end;
 
 OnTimer120000:
-	enablenpc strnpcinfo(1);
+	enablenpc strnpcinfo(0);
 	stopnpctimer;
 	end;
 
 OnEnable:
-	enablenpc strnpcinfo(1);
+	enablenpc strnpcinfo(0);
 	end;
 
 OnDisable:
-	disablenpc strnpcinfo(1);
+	disablenpc strnpcinfo(0);
 	end;
 }
-
 nyd_dun02,201,166,0	duplicate(Dragon Egg#ep13_degg_2)	Dragon Egg#ep13_degg16	463
 nyd_dun02,203,167,0	duplicate(Dragon Egg#ep13_degg_2)	Dragon Egg#ep13_degg17	463
 nyd_dun02,201,164,0	duplicate(Dragon Egg#ep13_degg_2)	Dragon Egg#ep13_degg18	463
@@ -6976,7 +6974,7 @@ OnTouch:
 
 -	script	ep13_warp_s_0	-1,{
 OnEnable:
-	enablenpc strnpcinfo(1);
+	enablenpc strnpcinfo(0);
 	initnpctimer;
 OnTimer2000:
 OnTimer4000:
@@ -6990,18 +6988,18 @@ OnTimer8000:
 
 OnTimer10000:
 	specialeffect EF_STEAL;
-	disablenpc strnpcinfo(1);
+	disablenpc strnpcinfo(0);
 	end;
 
 OnDisable:
 	specialeffect EF_WIND;
-	disablenpc strnpcinfo(1);
+	disablenpc strnpcinfo(0);
 	end;
 }
 
 -	script	ep13_warp_s_1	-1,{
 OnEnable:
-	enablenpc strnpcinfo(1);
+	enablenpc strnpcinfo(0);
 	initnpctimer;
 OnTimer2000:
 OnTimer4000:
@@ -7016,18 +7014,18 @@ OnTimer10000:
 
 OnTimer12000:
 	specialeffect EF_STEAL;
-	disablenpc strnpcinfo(1);
+	disablenpc strnpcinfo(0);
 	end;
 
 OnDisable:
 	specialeffect EF_WIND;
-	disablenpc strnpcinfo(1);
+	disablenpc strnpcinfo(0);
 	end;
 }
 
 -	script	ep13_warp_s_2	-1,{
 OnEnable:
-	enablenpc strnpcinfo(1);
+	enablenpc strnpcinfo(0);
 	initnpctimer;
 OnTimer2000:
 OnTimer4000:
@@ -7043,12 +7041,12 @@ OnTimer12000:
 
 OnTimer15000:
 	specialeffect EF_STEAL;
-	disablenpc strnpcinfo(1);
+	disablenpc strnpcinfo(0);
 	end;
 
 OnDisable:
 	specialeffect EF_WIND;
-	disablenpc strnpcinfo(1);
+	disablenpc strnpcinfo(0);
 	end;
 }
 

+ 102 - 42
npc/quests/quests_morocc.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= kobra_k88
 //===== Current Version: ===================================== 
-//= 3.0
+//= 3.1
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -44,6 +44,7 @@
 //= 2.9 Fixed player dying/logging out during conversation could prevent
 //=     summoning of Satan Morroc until server reboot. [Gepard]
 //= 3.0 Updated RE/Pre-RE EXP. [Euphy]
+//= 3.1 Updated to match the latest official scripts. [Euphy]
 //============================================================ 
 
 // Stop Post Quest
@@ -4375,7 +4376,7 @@ prontera,153,353,4	script	Messenger#prince1	105,{
 }
 
 prt_castle,117,163,5	script	Inspector#prince	755,{
-	if (checkquest(10004) == 1) {
+	if (checkquest(10004) == 0 || checkquest(10004) == 1) {
 		mes "[Inspector]";
 		mes "Judge!";
 		mes "How goes it? I don't think it is easy to meet seven candidates and appraise them.";
@@ -4414,7 +4415,7 @@ prt_castle,117,163,5	script	Inspector#prince	755,{
 		setquest 10022;
 		close;
 	}
-	if (nk_prince == 1) {
+	if (nk_prince < 2) {
 		mes "[Inspector]";
 		mes "What's wrong with you?";
 		mes "This is not an open area!";
@@ -4427,6 +4428,12 @@ prt_castle,117,163,5	script	Inspector#prince	755,{
 			warp "prontera",155,353;
 			end;
 		case 2:
+			if (nk_prince == 0) {
+				mes "[Inspector]";
+				mes "I don't think";
+				mes "that he is an experienced appraiser...";
+				close;
+			}
 			mes "[Inspector]";
 			mes "......";
 			next;
@@ -5159,7 +5166,7 @@ prt_castle,117,163,5	script	Inspector#prince	755,{
 		mes "How is it going?";
 		mes "Grading someone is not a piece of cake. It's real hard work indeed. You do the hard work for our country.";
 		next;
-		if ((nkprince_eisen == 15) && (checkquest(10025) == 1)) {
+		if ((nkprince_eisen == 15) && (checkquest(10025) == 0 || checkquest(10025) == 1)) {
 			mes "-I tell him about the Ahrum and Ernst accident.-";
 			next;
 			mes "[Inspector]";
@@ -5219,19 +5226,49 @@ prt_castle,117,163,5	script	Inspector#prince	755,{
 		mes "[Inspector]";
 		mes "Hello, appraiser.";
 		mes "I hope you are able to finish your mission perfectly. Have you met with all the princes, like I told you to?";
+		if (nkprince_eisen != 10)
+			close;
 		next;
 		switch(select("Yes.:No.")) {
 		case 1:
-			mes "[Inspector]";
-			mes "Very well.";
-			mes "I like hearing about the princes.";
+			set .@prin1,checkquest(10005);
+			set .@prin2,checkquest(10006);
+			set .@prin3,checkquest(10007);
+			set .@prin4,checkquest(10008);
+			set .@prin5,checkquest(10009);
+			set .@prin6,checkquest(10010);
+			set .@prin7,checkquest(10011);
+			if (.@prin1 + .@prin2 + .@prin3 + .@prin4 + .@prin5 + .@prin6 + .@prin7 == 14) {
+				mes "[Inspector]";
+				mes "Very well.";
+				mes "I like hearing about the princes.";
+				completequest 10004;
+				setquest 10004;
+			} else {
+				mes "[Inspector]";
+				mes "Are you sure?";
+				mes "Please check on all the princes.";
+			}
 			close;
 		case 2:
-			mes "[Inspector]";
-			mes "Don't be coy. I'm sure you have done it already.";
+			set .@prin1,checkquest(10005);
+			set .@prin2,checkquest(10006);
+			set .@prin3,checkquest(10007);
+			set .@prin4,checkquest(10008);
+			set .@prin5,checkquest(10009);
+			set .@prin6,checkquest(10010);
+			set .@prin7,checkquest(10011);
+			if (.@prin1 + .@prin2 + .@prin3 + .@prin4 + .@prin5 + .@prin6 + .@prin7 == 14) {
+				mes "[Inspector]";
+				mes "Don't be coy. I'm sure you have done it already.";
+				completequest 10004;
+				setquest 10004;
+			} else {
+				mes "[Inspector]";
+				mes "My investigations on all the princes are done.";
+			}
 			close;
 		}
-		close;
 	}
 }
 
@@ -5247,7 +5284,7 @@ prt_castle,272,375,4	script	Prince	881,{
 		mes "But he insists me to be corrupted, knowing how it would be...";
 		close;
 	}
-	else if (checkquest(10020) == 1) {
+	else if (checkquest(10020) == 0 || checkquest(10020) == 1) {
 		mes "[Erich]";
 		mes "These days, I have bad luck... Only harrassments happen to me...";
 		close;
@@ -5313,7 +5350,7 @@ prt_castle,274,372,4	script	Servant#hans	48,{
 		mes "My prince didn't do anything wrong but, anyways, I apologize for anything to you!";
 		close;
 	}
-	else if (checkquest(10020) == 1) {
+	else if (checkquest(10020) == 0 || checkquest(10020) == 1) {
 		mes "Incessantly...-";
 		mes "-He has jitters whenever I react to him. His actions give me a feeling of pity.-";
 		close;
@@ -5401,7 +5438,7 @@ prt_castle,339,202,3	script	Prince#urgen	989,{
 		mes "My beautiful body isn't in perfect condition right now. I don't want to show it to anyone today.";
 		close;
 	}
-	else if (checkquest(10021) == 1) {
+	else if (checkquest(10021) == 0 || checkquest(10021) == 1) {
 		mes "[Urugen]";
 		mes "...What? What did you...";
 		mes "just say to me?... Huh?";
@@ -5502,7 +5539,7 @@ prt_castle,289,201,3	script	Prince#helmut	991,{
 		mes "How can I deal with this stress? Damn! Hell!";
 		close;
 	}
-	else if (checkquest(10022) == 1) {
+	else if (checkquest(10022) == 0 || checkquest(10022) == 1) {
 		mes "-He is so blushed,";
 		mes "evidently shown on his face.-";
 		close;
@@ -5697,7 +5734,7 @@ prt_castle,391,205,3	script	Prince#poe	993,{
 		mes "He gave up without any challenge. That's not what the man has to do. He is not as good as me. But okay. I am disappointed in him. Eigen Ahrum.";
 		close;
 	}
-	else if (checkquest(10018) == 1) {
+	else if (checkquest(10018) == 0 || checkquest(10018) == 1) {
 		mes "[Poe]";
 		mes "......";
 		close;
@@ -5918,10 +5955,32 @@ prt_castle,364,375,4	script	Prince#peter	987,{
 		next;
 		switch(select("Yes, I saw her for you.:No, I don't want to.")) {
 		case 1:
+			if (checkquest(10014) == 0 || checkquest(10014) == 1) {
+				mes "[Peter]";
+				mes "I am glad that the girl liked it. Once I got cured, I wanted to go meet with her.";
+				next;
+				mes "[Peter]";
+				mes "Anyhow, thanks for your good work. I really feel sorry about bothering you with trifle things. This is my sense of gratitude. Don't feel so much burden and take this.";
+				completequest 10014;
+				getitem 644,1; //Gift_Box
+				close;
+			}
 			mes "[Peter]";
 			mes "Thinking about the little girl calms me. I still can't believe my eyes. My prince Ahrum who just passed away...~";
 			close;
 		case 2:
+			if (checkquest(10014) == 0 || checkquest(10014) == 1) {
+				mes "[Peter]";
+				mes "As you said.";
+				mes "I've heard that her life is like a flower when I lost it.";
+				mes "I will go see her on my own.";
+				next;
+				mes "[Peter]";
+				mes "I really feel sorry about bothering you with trifle things. Please take this.";
+				completequest 10014;
+				getitem 644,1; //Gift_Box
+				close;
+			}
 			mes "[Peter]";
 			mes "Never mind.";
 			mes "I still can't believe my eyes. My prince Ahrum who just passed away...~~";
@@ -5933,19 +5992,20 @@ prt_castle,364,375,4	script	Prince#peter	987,{
 		mes "Child... What the heck happened to you?...";
 		close;
 	}
-	else if (checkquest(10019)== 1) {
+	else if (checkquest(10019) == 0 || checkquest(10019) == 1) {
 		mes "[Peter]";
 		mes "......";
 		close;
 	}
 	if (checkquest(10008) == 2) {
-		if (checkquest(10014) == 2) {
+		set .@quest, checkquest(10014);
+		if (.@quest == 2) {
 			mes "[Peter]";
 			mes "I really appreciate it.";
 			mes "You are so kind.";
 			close;
 		}
-		else if (checkquest(10014) == 1) {
+		else if (.@quest == 0 || .@quest == 1) {
 			mes "[Peter]";
 			mes "I am glad that the girl liked it. Once I got cured, I wanted to go meet with her.";
 			next;
@@ -6071,9 +6131,8 @@ prt_castle,364,375,4	script	Prince#peter	987,{
 }
 
 aldebaran,132,184,3	script	Girl#prince	96,{
-	if (checkquest(10013) == 1) {
+	if (checkquest(10013) == 0 || checkquest(10013) == 1) {
 		if (countitem(744) > 0) {
-			// Missed
 			mes "[Girl]";
 			mes "Wooah, Uncle Peter sent these flowers";
 			mes "for me?";
@@ -6317,12 +6376,13 @@ prt_castle,314,373,4	script	Prince#eisen	983,{
 			close;
 		}
 		else if (nkprince_eisen == 14) {
+			mes "[Ernst]";
 			mes "Bbb... Brother?... You... told me ";
 			mes "you would kill me... You just wanted to be killed";
 			mes "by me?... Bbb...brother?...";
 			next;
 			mes "[Ahrum]";
-			mes "Huhu... Not at all. I just wanted to kill you... That's it... Good job, Ern... This is legal, self-defense; killing a villain... right?";
+			mes "Huhu... Not at all. I just wanted to kill you... That's it... Good job, Ern... This is legal self-defense, killing a villain... right?";
 			next;
 			mes "[Ernst]";
 			mes "B..Brother... even now it is not too late! If you go to a medic, you can be restored!";
@@ -6568,7 +6628,7 @@ prt_castle,368,312,4	script	Prince#ern	985,{
 		mes "I don't want to see anyone.";
 		close;
 	}
-	else if (checkquest(01024) == 1) {
+	else if (checkquest(10024) == 0 || checkquest(10024) == 1) {
 		mes "[Ernst]";
 		mes "...Brother Ahrum...";
 		close;
@@ -6757,8 +6817,8 @@ prt_castle,163,319,0	script	#twonoble	-1,3,3,{
 //OnTouch2:
 OnTouch:
 	if (nkprince_eisen == 7) {
-		donpcevent "Aged Noble 1#valter::OnEnable";
-		donpcevent "Aged Noble 2#rihart::OnEnable";
+		donpcevent "Young Noble#valter::OnEnable";
+		donpcevent "Aged Noble#rihart::OnEnable";
 		mes "[Aged Noble]";
 		mes "You don't have to worry.";
 		mes "Once my Eigen Ahrum is chosen to be king, the Richard family will be a second magnate.";
@@ -6813,8 +6873,8 @@ OnTouch:
 		next;
 		mes "[A man of Riehart Family]";
 		mes "Never mind...";
-		donpcevent "Aged Noble 1#valter::OnDisable";
-		donpcevent "Aged Noble 2#rihart::OnDisable";
+		donpcevent "YoungNoble#valter::OnDisable";
+		donpcevent "Aged Noble#rihart::OnDisable";
 		next;
 		mes "[" + strcharinfo(0) + "]";
 		mes "(Walter is the name of Ahrum.";
@@ -6828,41 +6888,41 @@ OnTouch:
 	}
 }
 
-prt_castle,156,325,4	script	Aged Noble 1#valter	86,{
-	mes "[Aged Noble]";
+prt_castle,156,325,4	script	Young Noble#valter	86,{
+	mes "[Young Noble Walter]";
 	mes "Step aside.";
 	mes "How dare you talk to him.";
 	close;
 
 OnInit:
-	disablenpc "Aged Noble 1#valter";
+	disablenpc "Young Noble#valter";
 	end;
 
 OnEnable:
-	enablenpc "Aged Noble 1#valter";
+	enablenpc "Young Noble#valter";
 	end;
 
 OnDisable:
-	disablenpc "Aged Noble 1#valter";
+	disablenpc "Young Noble#valter";
 	end;
 }
 
-prt_castle,157,323,3	script	Aged Noble 2#rihart	880,{
-	mes "[Aged Noble]";
+prt_castle,157,323,3	script	Aged Noble#rihart	880,{
+	mes "[Aged Noble Richard]";
 	mes "Hmm-hmm.";
 	mes "What an indecorous person!";
 	close;
 
 OnInit:
-	disablenpc "Aged Noble 2#rihart";
+	disablenpc "Aged Noble#rihart";
 	end;
 
 OnEnable:
-	enablenpc "Aged Noble 2#rihart";
+	enablenpc "Aged Noble#rihart";
 	end;
 
 OnDisable:
-	disablenpc "Aged Noble 2#rihart";
+	disablenpc "Aged Noble#rihart";
 	end;
 }
 
@@ -7600,7 +7660,7 @@ OnTouch:
 
 prt_castle,336,276,0	script	#ern	45,1,1,{
 OnTouch:
-	if (checkquest(10023) == 1) {
+	if (checkquest(10023) == 0 || checkquest(10023) == 1) {
 		donpcevent "Prince#eisen6::OnEnable";
 	}
 	warp "prt_castle",368,308;
@@ -7609,7 +7669,7 @@ OnTouch:
 
 prt_castle,300,276,0	script	#erich	45,1,1,{
 OnTouch:
-	if (checkquest(10020) == 1) {
+	if (checkquest(10020) == 0 || checkquest(10020) == 1) {
 		donpcevent "Prince#eisen1::OnEnable";
 	}
 	warp "prt_castle",274,368;
@@ -7618,7 +7678,7 @@ OnTouch:
 
 prt_castle,330,271,0	script	#helmut	45,1,1,{
 OnTouch:
-	if (checkquest(10022) == 1) {
+	if (checkquest(10022) == 0 || checkquest(10022) == 1) {
 		donpcevent "Prince#eisen3::OnEnable";
 	}
 	warp "prt_castle",290,208;
@@ -7627,7 +7687,7 @@ OnTouch:
 
 prt_castle,348,271,0	script	#poe	45,1,1,{
 OnTouch:
-	if (checkquest(10018) == 1) {
+	if (checkquest(10018) == 0 || checkquest(10018) == 1) {
 		donpcevent "Prince#eisen4::OnEnable";
 	}
 	warp "prt_castle",390,208;
@@ -7636,7 +7696,7 @@ OnTouch:
 
 prt_castle,354,276,0	script	#peter	45,1,1,{
 OnTouch:;
-	if (checkquest(10019) == 1) {
+	if (checkquest(10019) == 0 || checkquest(10019) == 1) {
 		donpcevent "Prince#eisen5::OnEnable";
 	}
 	warp "prt_castle",366,368;
@@ -7645,7 +7705,7 @@ OnTouch:;
 
 prt_castle,310,271,0	script	#urgen	45,1,1,{
 OnTouch:
-	if (checkquest(10021) == 1) {
+	if (checkquest(10021) == 0 || checkquest(10021) == 1) {
 		donpcevent "Prince#eisen2::OnEnable";
 	}
 	warp "prt_castle",340,208;

+ 2 - 8
npc/re/jobs/3-1/rune_knight.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= L0ne_W0lf, Muad_Dib
 //===== Current Version: =====================================
-//= 1.4
+//= 1.4a
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -15,6 +15,7 @@
 //= 1.3 Updated script, optimized. [Euphy]
 //= 1.3a Added 'npcskill' command. [Euphy]
 //= 1.4 Fixed a few bugs. [Euphy]
+//= 1.4a Moved Kafra to main file. [Euphy]
 //============================================================
 
 prt_in,162,24,3	script	Splendid-Looking Knight	470,2,2,{
@@ -2134,13 +2135,6 @@ OnMyMobDead:
 	end;
 }
 
-job3_rune01,92,62,3	script	Kafra Employee::kaf_rune	114,{
-	cutin "kafra_04",2;
-	callfunc "F_KafSet";
-	callfunc "F_Kafra",0,9,2,80,700;
-	callfunc "F_KafEnd",0,0;
-}
-
 /*
 sec_in02,34,167,3	script	R.Knight Job Manager	470,1,1,{
 	mes "Enter the Password.";

+ 10 - 1
npc/re/kafras/kafras.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Joseph
 //===== Current Version: ===================================== 
-//= 1.3
+//= 1.3a
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: =========================================
@@ -22,6 +22,7 @@
 //= 1.1 Added Dewata Kafra. [Lemongrass]
 //= 1.2 Added Port Malaya Kafras. [Euphy]
 //= 1.3 Added Eden Group Kafra. [Euphy]
+//= 1.3a Moved Rune Knight Kafra from job file. [Euphy]
 //============================================================ 
 
 // Brasilis
@@ -70,3 +71,11 @@ malaya,234,204,4	script	Kafra Employee::kaf_malaya2	581,{
 	savepoint "malaya",281,212;
 	callfunc "F_KafEnd",0,1,"in Port Malaya";
 }
+
+// Rune Knight
+//============================================================
+job3_rune01,92,62,3	script	Kafra Employee::kaf_rune	114,{
+	cutin "kafra_04",2;
+	callfunc "F_KafSet";
+	callfunc "F_Kafra",0,9,2,80,700;
+}

+ 36 - 1
npc/re/quests/quests_morocc.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Euphy
 //===== Current Version: =====================================
-//= 1.0a
+//= 1.1
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -12,8 +12,43 @@
 //===== Additional Comments: =================================
 //= 1.0 First Version.
 //= 1.0a Gathered remaining dialogues. [Euphy]
+//= 1.1 Added new warpers for Satan Morroc maps. [Euphy]
 //============================================================
 
+// Resurrection of Satan Morroc
+// ============================================================
+-	script	Continental Guard#man	-1,{
+	mes "[Continental Guard]";
+	mes "We've received orders from Headquarters to block access to this area since an unusual space-time phenomenon has been detected.";
+	next;
+	mes "[Continental Guard]";
+	mes "If you really want to go to the next area, you'll be responsible for your own safety.";
+	next;
+	switch(select("Nevermind.:Enter the Field.")) {
+	case 1:
+		mes "[Continental Guard]";
+		mes "Wise choice.";
+		mes "Have a safe journey.";
+		close;
+	case 2:
+		mes "[Continental Guard]";
+		mes "I see.";
+		mes "I'll send you to the field shortly.";
+		close2;
+		warp "moc_fild20",208,207;
+		end;
+	}
+}
+moc_fild07,380,202,1	duplicate(Continental Guard#man)	Continental Guard#man1	852
+moc_fild11,189,360,6	duplicate(Continental Guard#man)	Continental Guard#man2	852
+prt_fild10,263,23,1	duplicate(Continental Guard#man)	Continental Guard#man3	852
+prt_fild09,95,19,1	duplicate(Continental Guard#man)	Continental Guard#man4	852
+prt_fild09,246,17,1	duplicate(Continental Guard#man)	Continental Guard#man5	852
+moc_fild13,32,171,6	duplicate(Continental Guard#man)	Continental Guard#man6	852
+moc_fild16,124,381,4	duplicate(Continental Guard#man)	Continental Guard#man7	852
+moc_fild16,333,380,4	duplicate(Continental Guard#man)	Continental Guard#man8	852
+moc_fild01,84,19,1	duplicate(Continental Guard#man)	Continental Guard#man9	852
+
 // Pyramids Nightmare Mode
 //============================================================
 moc_prydb1,103,54,3	script	Suspicious Cat#night	547,{

+ 8 - 7
npc/re/warps/fields/morroc_fild.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Nana (1.0)
 //===== Current Version: =====================================
-//= 1.4b
+//= 1.5
 //===== Compatible With: =====================================
 //= Any Athena Version
 //===== Description: =========================================
@@ -15,11 +15,12 @@
 //= 1.4 Uncommented warp that shouldn't have been commented. [L0ne_W0lf]
 //= 1.4a Uncommented yet ANOTHER warp that was taken out. [L0ne_W0lf]
 //= 1.4b Uncommented ANOTHER warp! Yay! :D [L0ne_W0lf]
+//= 1.5 Commented moc_fild20 warps replaced with new NPCs. [Euphy]
 //============================================================
 
 //= Sograt Dessert ===========================================
 //moc_fild01,101,16,0	warp	mocf01-1	15,3,moc_fild04,317,376
-moc_fild01,101,16,0	warp	mocf01-1	15,3,moc_fild20,210,342
+//moc_fild01,101,16,0	warp	mocf01-1	15,3,moc_fild20,210,342
 moc_fild01,22,242,0	warp	mocf005	2,2,prt_fild09,380,237
 moc_fild01,239,382,0	warp	mocf006	12,1,prt_fild08,233,20
 moc_fild01,301,16,0	warp	mocf02	10,1,moc_fild02,77,338
@@ -64,7 +65,7 @@ moc_fild03,70,341,0	warp	mocf04-1	5,2,moc_fild02,332,23
 //moc_fild06,377,316,0	warp	mocf10-3	1,15,moc_fild05,24,153
 moc_fild07,198,21,0	warp	mocf001	2,2,morocc,160,294
 //moc_fild07,381,201,0	warp	mocf13-1	2,16,moc_fild06,28,201
-moc_fild07,380,201,0	warp	mocf13-1	2,16,moc_fild20,36,177
+//moc_fild07,380,201,0	warp	mocf13-1	2,16,moc_fild20,36,177
 //moc_fild08,16,207,0	warp	mocf15	2,4,moc_fild09,371,195
 //moc_fild08,170,383,0	warp	mocf08-1	3,2,moc_fild04,175,21
 //moc_fild08,204,16,0	warp	mocf16	4,2,moc_fild14,196,379
@@ -79,7 +80,7 @@ moc_fild07,380,201,0	warp	mocf13-1	2,16,moc_fild20,36,177
 //moc_fild10,208,298,0	warp	mocf14-1	10,2,moc_fild06,207,21
 //moc_fild10,384,258,0	warp	mocf19-1	2,3,moc_fild09,33,162
 //moc_fild11,189,363,0	warp	mocf20-1	3,2,moc_fild10,189,26
-moc_fild11,189,360,0	warp	mocf20-1	3,2,moc_fild20,197,24
+//moc_fild11,189,360,0	warp	mocf20-1	3,2,moc_fild20,197,24
 moc_fild11,212,29,0	warp	mocf21	4,2,moc_fild17,218,366
 moc_fild11,26,161,0	warp	mocf22	2,10,moc_fild12,286,168
 //moc_fild11,379,197,0	warp	mocf23	2,6,moc_fild15,41,105
@@ -89,7 +90,7 @@ moc_fild12,159,381,0	warp	mocf003	2,2,morocc,160,20
 moc_fild12,289,168,0	warp	mocf22-1	2,3,moc_fild11,29,161
 moc_fild13,146,368,0	warp	mocf05-1	5,2,moc_fild02,71,21
 //moc_fild13,29,171,0	warp	mocf17-1	2,4,moc_fild08,380,211
-moc_fild13,32,171,0	warp	mocf17-1	2,4,moc_fild20,349,179
+//moc_fild13,32,171,0	warp	mocf17-1	2,4,moc_fild20,349,179
 moc_fild13,298,370,0	warp	mocf03-1	4,2,moc_fild02,228,32
 moc_fild13,308,49,0	warp	mocf06-1	2,4,moc_fild03,20,37
 //moc_fild14,16,278,0	warp	mocf25	2,6,moc_fild15,364,276
@@ -101,10 +102,10 @@ moc_fild13,308,49,0	warp	mocf06-1	2,4,moc_fild03,20,37
 //moc_fild15,367,276,0	warp	mocf25-1	2,4,moc_fild14,19,278
 //moc_fild15,38,105,0	warp	mocf23-1	2,4,moc_fild11,376,197
 //moc_fild16,125,383,0	warp	mocf26-1	5,2,moc_fild15,104,19
-moc_fild16,124,381,0	warp	mocf26-1	5,2,moc_fild20,197,24
+//moc_fild16,124,381,0	warp	mocf26-1	5,2,moc_fild20,197,24
 moc_fild16,16,179,0	warp	mocf28	2,6,moc_fild17,366,272
 //moc_fild16,334,382,0	warp	mocf27-1	4,2,moc_fild15,348,21
-moc_fild16,333,380,0	warp	mocf27-1	4,2,moc_fild20,197,24
+//moc_fild16,333,380,0	warp	mocf27-1	4,2,moc_fild20,197,24
 moc_fild17,218,369,0	warp	mocf21-1	5,2,moc_fild11,212,32
 moc_fild17,30,300,0	warp	moc29	2,5,moc_fild18,379,305
 moc_fild17,369,272,0	warp	mocf28-1	2,3,moc_fild16,19,179

+ 5 - 4
npc/re/warps/fields/prontera_fild.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Nana (1.0)
 //===== Current Version: =====================================
-//= 1.3a
+//= 1.4
 //===== Compatible With: =====================================
 //= Any Athena Version
 //===== Description: =========================================
@@ -13,6 +13,7 @@
 //= 1.2 Updated warps for episode 12.1 [L0ne_W0lf]
 //= 1.3 Updated to match the new Izlude Map. [Masao]
 //= 1.3a Moved Izlude warp to other file. [Euphy]
+//= 1.4 Commented moc_fild20 warps replaced with new NPCs. [Euphy]
 //============================================================
 
 //= Prontera Fields ==========================================
@@ -71,17 +72,17 @@ prt_fild09,14,124,0	warp	prtf17	2,6,prt_fild10,336,126
 prt_fild09,14,139,0	warp	prtf17-1	2,8,prt_fild10,336,126
 prt_fild09,224,380,0	warp	prtf13-1	4,2,prt_fild07,206,15
 //prt_fild09,246,16,0	warp	prtf025	7,2,moc_fild04,92,378
-prt_fild09,246,17,0	warp	prtf025	7,2,moc_fild20,209,333
+//prt_fild09,246,17,0	warp	prtf025	7,2,moc_fild20,209,333
 prt_fild09,383,223,0	warp	prtf026	2,15,moc_fild01,25,242
 prt_fild09,383,251,0	warp	prtf027	2,15,moc_fild01,25,242
 prt_fild09,87,380,0	warp	prtf16-1	5,2,prt_fild07,84,16
 //prt_fild09,95,16,0	warp	prtf028	7,2,moc_fild05,325,379
-prt_fild09,95,19,0	warp	prtf028	7,2,moc_fild20,209,333
+//prt_fild09,95,19,0	warp	prtf028	7,2,moc_fild20,209,333
 prt_fild10,20,122,0	warp	prtf19	2,4,prt_fild11,359,111
 prt_fild10,20,196,0	warp	prtf20	2,4,prt_fild11,358,184
 prt_fild10,227,299,0	warp	prtf020	5,2,gef_fild02,266,21
 //prt_fild10,263,20,0	warp	prtf029	6,2,moc_fild05,144,372
-prt_fild10,263,22,0	warp	prtf029	6,2,moc_fild20,209,333
+//prt_fild10,263,22,0	warp	prtf029	6,2,moc_fild20,209,333
 prt_fild10,339,126,0	warp	prtf17-2	2,8,prt_fild09,17,133
 prt_fild11,17,281,0	warp	prtf021	2,4,gef_fild11,374,293
 prt_fild11,302,301,0	warp	prtf022	5,2,gef_fild03,312,19

+ 33 - 38
src/map/script.c

@@ -10570,27 +10570,27 @@ static void script_detach_rid(struct script_state* st)
 	}
 }
 
-/*	
-	Made by digitalhamster
-	addrid(parameter{,forced{,supportid}})
-	parameter:
-	account id -> attach player with acc_id if he's online /returns 1 if he's not online, 0 if he is
-	0 -> attach entire server
-	1 -> attach everyone currently on the map of the player if a player runs addrid/else of the npcs map
-	2 -> attach entire party(party id has to be entered at supportid)
-	3 -> attach entire guild(guild id has to be entered at supportid)
-	4 -> attach all players in an area at the map where the person running addrid is located/no person=use npcs map
-	Note: 4 uses addrid(4,Forced,x0,y0,x1,y1)
-	
-
-	forced:
-	0 or left out -> force attachment of the player even if he runs a script already
-	1 -> don't attach if player is currently running a script(only needed when you use things like mes"" close next so it seems
 
-	*/
+/*=========================================================================
+ * Attaches a set of RIDs to the current script. [digitalhamster]
+ * addrid(<type>{,<flag>{,<parameters>}});
+ * <type>:
+ *	0 : All players in the server.
+ *	1 : All players in the map of the invoking player, or the invoking NPC if no player is attached.
+ *	2 : Party members of a specified party ID.
+ *	    [ Parameters: <party id> ]
+ *	3 : Guild members of a specified guild ID.
+ *	    [ Parameters: <guild id> ]
+ *	4 : All players in a specified area of the map of the invoking player (or NPC).
+ *	    [ Parameters: <x0>,<y0>,<x1>,<y1> ]
+ *	Account ID: The specified account ID.
+ * <flag>:
+ *	0 : Players are always attached. (default)
+ *	1 : Players currently running another script will not be attached.
+ *-------------------------------------------------------------------------*/
 
 static int buildin_addrid_sub(struct block_list *bl,va_list ap)
-{	
+{
 	int forceflag;
 	struct map_session_data *sd = (TBL_PC *)bl;
 	struct script_state* st;
@@ -10604,17 +10604,17 @@ static int buildin_addrid_sub(struct block_list *bl,va_list ap)
 }
 
 BUILDIN_FUNC(addrid)
-{	
+{
 	struct s_mapiterator* iter;
 	struct block_list *bl;
 	TBL_PC *sd;
 	if(st->rid<1){
-		st->state = END; 
+		st->state = END;
 		bl=map_id2bl(st->oid);
-	} else 
+	} else
 		bl=map_id2bl(st->rid); //if run without rid it'd error,also oid if npc, else rid for map
 	iter = mapit_getallusers();
-	switch(script_getnum(st,2)){ 
+	switch(script_getnum(st,2)){
 		case 0:
 			for( sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); sd = (TBL_PC*)mapit_next(iter)){
 				if(!script_getnum(st,3)||!sd->st)
@@ -10622,7 +10622,6 @@ BUILDIN_FUNC(addrid)
 						run_script(st->script,st->pos,sd->status.account_id,st->oid);
 			}
 			break;
-
 		case 1:
 			for( sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); sd = (TBL_PC*)mapit_next(iter)){
 				if(!script_getnum(st,3)||!sd->st)
@@ -10630,10 +10629,9 @@ BUILDIN_FUNC(addrid)
 						run_script(st->script,st->pos,sd->status.account_id,st->oid);
 			}
 			break;
-	
 		case 2:
 			if(script_getnum(st,4)==0){
-				script_pushint(st,1);
+				script_pushint(st,0);
 				return 0;
 			}
 			for( sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); sd = (TBL_PC*)mapit_next(iter)){
@@ -10642,38 +10640,35 @@ BUILDIN_FUNC(addrid)
 						run_script(st->script,st->pos,sd->status.account_id,st->oid);
 			}
 			break;
-
 		case 3:
 			if(script_getnum(st,4)==0){
-				script_pushint(st,1); 
+				script_pushint(st,0);
 				return 0;
 			}
 			for( sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); sd = (TBL_PC*)mapit_next(iter)){
 				if(!script_getnum(st,3)||!sd->st)
 					if((sd->status.account_id!=st->rid)&&(sd->status.guild_id==script_getnum(st,4))) //attached player already runs.
 						run_script(st->script,st->pos,sd->status.account_id,st->oid);
-			}break;
-
+			}
+			break;
 		case 4:
 			map_foreachinarea(buildin_addrid_sub,
 			bl->m,script_getnum(st,4),script_getnum(st,5),script_getnum(st,6),script_getnum(st,7),BL_PC,
 			st,script_getnum(st,3));//4-x0 , 5-y0 , 6-x1, 7-y1
 			break;
-
 		default:
-			if((map_id2sd(script_getnum(st,2)))==NULL){
-				script_pushint(st,1);
+			if((map_id2sd(script_getnum(st,2)))==NULL){ // Player not found.
+				script_pushint(st,0);
 				return 0;
-			} //player not online.
+			}
 			if(!script_getnum(st,3)||!map_id2sd(script_getnum(st,2))->st) {
 				run_script(st->script,st->pos,script_getnum(st,2),st->oid);
-				script_pushint(st,0);
+				script_pushint(st,1);
 			}
 			return 0;
-	}  
-
+	}
 	mapit_free(iter);
-	script_pushint(st,0);
+	script_pushint(st,1);
 	return 0;
 }
 
@@ -16704,7 +16699,7 @@ BUILDIN_FUNC(instance_id)
 	instance_id = script_instancegetid(st);
 
 	if(!instance_id) {
-		ShowError("script:instance_id: No instance attached to NPC or player");
+		//ShowError("script:instance_id: No instance attached to NPC or player");
 		script_pushint(st, 0);
 		return 1;
 	}