Bladeren bron

* Updated Eden Quests 71-85 to its latest version. (translation: Muad_Dib)
* Updated all 1st class training quests, mostly experience changes. (credits: Muad_Dib, partial revert of r17210)
* Added Pre-Renewal support to 1st class training quests. (bugreport:7808)
* Corrected level 10 AL_HEAL lines in 'npcskill' to use MVP heal.
* Corrected EXP checks in 'checkre' to use RENEWAL_EXP instead of RENEWAL.
* Fixed Hunter skill quest not accepting Rangers.
* Fixed a bug in Hall of Abyss. (bugreport:7815)
* Fix unable to move when cloaking in levels less than 3. (credits: Akinari, bugreport:7810)
* Idle timer now resets on continuous attacks, i.e. /noctrl or ctrl+click. (Hercules 19f0fcd)
* Idle timer is now initialized upon login, fixing a bug with the 'checkidle' command. (credits: Akinari)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17409 54d463be-8e91-2dee-dedb-b68131a5f0ec

euphyy 12 jaren geleden
bovenliggende
commit
4589a4d135

+ 3 - 1
db/quest_db.txt

@@ -640,7 +640,9 @@
 5052,0,0,0,0,0,0,0,"Traditional Weapon"
 5053,0,0,0,0,0,0,0,"Traditional Weapon"
 5054,0,0,0,0,0,0,0,"Traditional Weapon"
-
+5055,0,2071,15,0,0,0,0,"Local Rising - Headless Horse"
+5056,0,1584,15,0,0,0,0,"Local Rising - Tamruan"
+5057,0,0,0,0,0,0,0,"Local Rising - Ready the Festival"
 5058,0,0,0,0,0,0,0,"The mood of the players-(1)"
 5059,0,0,0,0,0,0,0,"The mood of the players-(2)"
 5060,180,0,0,0,0,0,0,"Cat Shock"

+ 16 - 0
npc/pre-re/quests/first_class/tu_archer.txt

@@ -0,0 +1,16 @@
+//===== rAthena Script ======================================= 
+//= Archer Class Tutorial and Job Specific Quest
+//===== By: ================================================== 
+//= Euphy
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= rAthena SVN
+//===== Description: ========================================= 
+//= [Official Conversion]
+//= Archer training quest.
+//===== Additional Comments: ================================= 
+//= 1.0 First version. [Euphy]
+//============================================================ 
+
+mjolnir_11,27,223,3	duplicate(Acolyte_Tu)	Acolyte#tu	95

+ 3 - 0
npc/pre-re/scripts_athena.conf

@@ -76,6 +76,9 @@ npc: npc/pre-re/other/mercenary_rent.txt
 //npc: npc/pre-re/quests/collection/quest_pupa.txt
 //npc: npc/pre-re/quests/collection/quest_zhupolong.txt
 // --------------------------------------------------------------
+// - Quests-Tutorials for basic classes (1st class quests) ------
+npc: npc/pre-re/quests/first_class/tu_archer.txt
+// --------------------------------------------------------------
 npc: npc/pre-re/quests/monstertamers.txt
 npc: npc/pre-re/quests/mrsmile.txt
 npc: npc/pre-re/quests/quests_13_1.txt

+ 40 - 46
npc/quests/first_class/tu_acolyte.txt

@@ -3,15 +3,15 @@
 //===== By: ================================================== 
 //= Fix up by Jukka
 //===== Current Version: ===================================== 
-//= 1.7
+//= 1.8
 //===== Compatible With: ===================================== 
-//= rAthena SVN (Testet in Trunk 88xx)
+//= rAthena SVN
 //===== Description: ========================================= 
-//=
+//= [Official Conversion]
+//= Acolyte training quest.
 //===== Additional Comments: ================================= 
 //= 1.0 Fully working
 //= 1.1 optimized [Lupus]
-//=	TODO: Test, Add correct misceffects numbers
 //= 1.2 Fixed experience gains to match upcoming rate adjustments. [SinSloth]
 //= 1.3 Fixed bad NPC header data to comply with rev. 11603. [L0ne_W0lf]
 //= 1.4 Misc. updates. [L0ne_W0lf]
@@ -19,6 +19,7 @@
 //= 1.6 Fixed a wrong placed curly bracket. [Joseph]
 //= 1.6a Added 'npcskill' command. [Euphy]
 //= 1.7 Fixed exp, texts, and requirements in pre-renewal [Daegaladh]
+//= 1.8 Updated to match the official script. [Euphy]
 //============================================================ 
 
 // Priest Praupin
@@ -291,13 +292,10 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		next;
 		mes "[Asthe]";
 		mes "HEAL !!";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		set tu_acolyte01, 3;
 		if(getskilllv("AL_HEAL") == 0){
-			if(checkre(3))
-				getexp 0,10;
-			else
-				getexp 0,100;
+			getexp 0,100;
 			specialeffect2 EF_CONE;
 		}
 		close;
@@ -386,17 +384,11 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 				set tu_acolyte01, 5;
 				delitem 1504, 1; //Mace
 				if(Class == Job_Acolyte_High) {
-					if(checkre(3))
-						getexp 200,100;
-					else
-						getexp 2000,1000;	
+					getexp 2000,1000;
 					specialeffect2 EF_CONE;
 					close;
 				} else {
-					if(checkre(3))
-						getexp 100,50;
-					else
-						getexp 1000,500;
+					getexp 1000,500;
 					specialeffect2 EF_CONE;
 					close;
 				}
@@ -785,8 +777,8 @@ prt_monk,230,106,3	script	Asthe#tu	79,{
 		mes "[Asthe]";
 		mes "Well, please don't forget what I've taught you. I hope you look back with fondness at our time together amongst these beautiful flowers. May God bless you~";
 		set tu_acolyte01, 25;
-		if(checkre(3))
-			getexp 500,300;
+		if (checkre(3))
+			getexp 1000,1000;
 		else
 			getexp 5000,3000;
 		specialeffect2 EF_CONE;
@@ -842,8 +834,8 @@ monk_in,18,38,6	script	Priest Gardron#tu	110,{
 			close;
 		}
 	} else if(tu_acolyte01 == 8){
-		if(countitem(checkre(0)?939:957) > 4){
-			mes "Oh..!";
+		if(countitem((checkre(0)?939:957)) > 4){
+			mes "Oh...!";
 			mes "You've returned!";
 			mes "Let's see... One...";
 			mes "Two... Three...";
@@ -864,45 +856,48 @@ monk_in,18,38,6	script	Priest Gardron#tu	110,{
 			mes "Acolyte training.";
 			set tu_acolyte01, 9;
 			percentheal 100,100;
-			if(checkre(3))
-				getexp 200,200;
+			if (checkre(3))
+				getexp 1000,1000;
 			else
 				getexp 2000,2000;
 			specialeffect2 EF_CONE;
 			//getitem 505,1; //Blue_Potion
 			close;
 		} else {
-			if(checkre(0)) {
-				mes "A little while ago, a Prontera Sister sent me a message. Apparently,";
-				mes "the residents of Prontera are being plagued by Hornets.";
+			if (checkre(0)) {
+				mes "A few days ago, a sister in Prontera";
+				mes "sent me a telegram that citizens had been harmed";
+				mes "by Hornets in the western field,";
+				mes "so she asked the abbey to help with them.";
 				next;
 				mes "[Priest Gardron]";
-				mes "She has requested the convent for help, but we've got a big problem. We're running out of people here that can deal with this situation...";
+				mes "But at this time,";
+				mes "we are also short of hands...";
+				mes "so it's a big problem.";
 				next;
 				mes "[Priest Gardron]";
 				mes "....!";
 				emotion e_gasp;
 				next;
 				mes "[Priest Gardron]";
-				mes ""+strcharinfo(0)+",";
-				mes "may I ask";
-				mes "you to take care";
-				mes "of this task? Exterminate the Hornets west of Prontera.";
+				mes "May I entrust you, acolyte "+strcharinfo(0)+",";
+				mes "this urgent matter?";
+				mes "Please dispose of Hornets";
+				mes "which are causint trouble on ^FF0000the western field of Prontera^000000.";
 				next;
 				mes "[Priest Gardron]";
-				mes "Since you're still in basic training, I will give you some";
-				mes "help if you return with";
-				mes "^3131FF5 Bee Stings^000000.";
+				mes "I know that you are undergoing the discipline,";
+				mes "So I will give you something to help you";
+				mes "if you bring me ^3131FF 5^000000 ^3131FFBee Sting^000000.";
 				next;
 				mes "[Priest Gardron]";
-				mes "Now then...";
 				mes "Will you go to Prontera?";
 				next;
-				if(select("Let's go to Prontera!:Um, let me get ready first.")==1) {
+				if(select("Let's go to Prontera!:I'll be back after doing some preparation.") == 1) {
 					mes "[Priest Gardron]";
-					mes "Good, good.";
-					mes "I shall send you";
-					mes "there to fight the monsters west of Prontera so that you can return with 5 Bee Stings. May God bless you...";
+					mes "Okay, I will send you to Prontera.";
+					mes "Please dispose of Hornets and bring me 5 Bee Stings for confirmation.";
+					mes "My Lord, please protect this acolyte from evil monsters.";
 					close2;
 					warp "prontera",116,72;
 					end;
@@ -964,8 +959,7 @@ prt_monk,235,245,5	script	Dog#tu	81,{
 	mes "Woof woof!^000000";
 	next;
 	if(tu_acolyte01 == 10){
-		set .@dog_food, 0;
-		while((1)){
+		while(1) {
 			switch(select("Give a treat.:Pet the dog.:End actions.")){
 			case 1:
 				set .@dog_food, .@dog_food + 1;
@@ -1051,7 +1045,6 @@ prt_monk,226,257,6	script	Ill Girl#tu	93,{
 		mes "H-hurts...";
 		next;
 		select("Are you alright?");
-
 		mes "[Angelic]";
 		mes "My sister...";
 		mes "She was so beautiful...";
@@ -1079,8 +1072,9 @@ prt_monk,226,257,6	script	Ill Girl#tu	93,{
 		next;
 		mes "["+strcharinfo(0)+"]";
 		mes "Are you alright?";
+		mes "................";
 		next;
-		specialeffect EF_CURSEATTACK ;
+		specialeffect EF_CURSEATTACK;
 		soundeffectall "_curse.wav",0;
 		emotion e_omg;
 		mes "["+strcharinfo(0)+"]";
@@ -1112,7 +1106,7 @@ prt_monk,226,257,6	script	Ill Girl#tu	93,{
 			mes "["+strcharinfo(0)+"]";
 			mes "H...";
 			mes "Heal !!";
-			specialeffect EF_HEAL ;
+			specialeffect EF_HEAL;
 			next;
 			mes "^3355FFNothing happened.";
 			mes "It doesn't look like";
@@ -1137,8 +1131,8 @@ prt_monk,226,257,6	script	Ill Girl#tu	93,{
 					mes "It seemed that this good";
 					mes "deed has improved your skills.^000000";
 					set tu_acolyte01, 13;
-					if(checkre(3))
-						getexp 0,100;
+					if (checkre(3))
+						getexp 0,500;
 					else
 						getexp 0,1000;
 					specialeffect2 EF_CONE;

+ 203 - 103
npc/quests/first_class/tu_archer.txt

@@ -3,17 +3,18 @@
 //===== By: ================================================== 
 //= Fix up by Jukka
 //===== Current Version: ===================================== 
-//= 1.9a
+//= 2.0
 //===== Compatible With: ===================================== 
-//= rAthena SVN (Testet in Trunk 88xx)
+//= rAthena SVN
 //===== Description: ========================================= 
-//=
+//= [Official Conversion]
+//= Archer training quest.
 //===== Additional Comments: ================================= 
 //= 1.0 Fully working
-//= 1.1 optimized [Lupus] 1.2 fixed Weight check
-//=	TODO: Test, Add correct misceffects numbers
+//= 1.1 optimized [Lupus]
+//= 1.2 fixed Weight check
 //= 1.3 Moved Master Kavaruk (overlapped Phantasmic Arrow
-//=	Skill quest NPC) [Lupus]
+//=     Skill quest NPC) [Lupus]
 //= 1.4 Fixed experience gains to match upcoming rate adjustments. [SinSloth]
 //= 1.5 Fixed bad NPC header data to comply with rev. 11603. [L0ne_W0lf]
 //= 1.6 Fixed infinate loop. (bugreport:2393) [L0ne_W0lf]
@@ -21,6 +22,8 @@
 //= 1.8 Updated slightly, removed additional emotions from Reiden. [L0ne_W0lf]
 //= 1.9 Misc. updates. [L0ne_W0lf]
 //= 1.9a Added 'npcskill' command. [Euphy]
+//= 2.0 Updated to match the official script. [Euphy]
+//=     Added Pre-Renewal support.
 //============================================================ 
 
 // Bard Jet
@@ -278,7 +281,7 @@ payon_in02,54,13,3	script	Master Kavaruk	55,{
 				next;
 				mes "[Master Kavaruk]";
 				mes "I asked a member of Icarus to";
-				mes "wander about the Rune-Midgarts Kingdom and gather news and information about what has been going on recenty.";
+				mes "wander about the Rune-Midgarts Kingdom and gather news and information about what has been going on recently.";
 				next;
 				mes "[Master Kavaruk]";
 				mes "He has been sending me letters containing detailed information, but all of a sudden, I've lost contact with him. I'm concerned over what may have happened.";
@@ -305,7 +308,10 @@ payon_in02,54,13,3	script	Master Kavaruk	55,{
 				mes "for bringing me the news. As Arthail has said, I shall wait until he has more news for me.";
 				mes "You should also train and prepare for the future as well.";
 				set tu_archer02, 10;
-				getexp 200,100;
+				if (checkre(3))
+					getexp 1000,1000;
+				else
+					getexp 2000,1000;
 				close;
 			}
 		}
@@ -543,7 +549,10 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 					set tu_archer01, 6;
 					mes "Now, your first assignment";
 					mes "is to learn ^3131FFLevel 3 Owl's Eye^000000!";
-					mes "From Morroc, if you travel south, you can fight Condors for your training.";
+					if (checkre(0))
+						mes "From Morroc, if you travel south, you can fight Condors for your training.";
+					else
+						mes "From Prontera, if you travel south, south and then west, you can fight Condors for your training.";
 					next;
 					mes "[Reidin Corse]";
 					mes "You can head somewhere";
@@ -553,11 +562,20 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 					switch(select("I'll follow your advice, Chief!:I'll hunt somewhere else...")) {
 					case 1:
 						mes "[Reidin Corse]";
-						mes "I'll send you to";
-						mes "Morroc for now,";
-						mes "so don't forget the";
-						mes "directions I gave you.";
-						mes "Travel ^3131FFsouth^000000.";
+						if (checkre(0)) {
+							mes "I'll send you to";
+							mes "Morroc for now,";
+							mes "so don't forget the";
+							mes "directions I gave you.";
+							mes "Travel ^3131FFsouth^000000.";
+						} else {
+							mes "I'll send you to";
+							mes "Prontera for now,";
+							mes "so don't forget the";
+							mes "directions I gave you.";
+							mes "Travel ^3131FFsouth^000000, ^3131FFsouth^000000,";
+							mes "and then ^3131FFwest^000000.";
+						}
 						next;
 						switch(select("Leave right away~:W-wait, let me get ready!")) {
 						case 1:
@@ -573,9 +591,15 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 							mes "[Reidin Corse]";
 							mes "Okay...!";
 							mes "Off you go!";
-							mes "To Morroc!";
-							close2;
-							warp "morocc",156,46;
+							if (checkre(0)) {
+								mes "To Morroc!";
+								close2;
+								warp "morocc",156,46;
+							} else {
+								mes "To Prontera!";
+								close2;
+								warp "prontera",116,72;
+							}
 							end;
 						case 2:
 							mes "[Reidin Corse]";
@@ -601,7 +625,7 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 					emotion e_ag;
 					mes "Huh. So you already know a little about Owl's Eye already, huh? Well then, I guess I oughta talk about something you don't know about!";
 					set tu_archer01, 7;
-					getexp 50,0;
+					getexp 500,0;
 					close;
 				}
 				break;
@@ -628,7 +652,7 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 				mes "Here, this is a small, special reward for you.";
 				specialeffect2 EF_WIND;
 				set tu_archer01, 7;
-				getexp 50,0;
+				getexp 500,0;
 				next;
 				emotion e_pif;
 				mes "[Reidin Corse]";
@@ -709,7 +733,10 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 
 			set .@eagle, getskilllv("AC_VULTURE");
 			if(.@eagle < 3){
-				mes "Alright, Mandagora usually live around Geffen. I can send you to Geffen, so just travel north from there to find";
+				if (checkre(0))
+					mes "Alright, Mandagora usually live around Geffen. I can send you to Geffen, so just travel north from there to find";
+				else
+					mes "Alright, Mandagora usually live around Mt. Mjolnir. I can send you to Prontera, so just travel north, then east from there to find";
 				mes "some of them.";
 				next;
 				mes "[Reidin Corse]";
@@ -738,7 +765,10 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 					mes "Alright...!";
 					mes "Get a move on!";
 					close2;
-					warp "geffen",120,39;
+					if (checkre(0))
+						warp "geffen",120,39;
+					else
+						warp "prontera",116,72;
 					end;
 				case 2:
 					mes "[Reidin Corse]";
@@ -763,7 +793,10 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 		} else if(tu_archer01 == 8){
 			set .@eagle, getskilllv("AC_VULTURE");
 			if(.@eagle < 3){
-				mes "Mandagora lives in the area north of Geffen. Learn up to Level 3 Vulture's Eye and get acquainted with your attack range.";
+				if (checkre(0))
+					mes "Mandagora lives in the area north of Geffen. Learn up to Level 3 Vulture's Eye and get acquainted with your attack range.";
+				else
+					mes "Mandagora lives in the area north and east of Prontera. Learn up to Level 3 Vulture's Eye and get acquainted with your attack range.";
 				next;
 				mes "[Reidin Corse]";
 				mes "Okay...";
@@ -776,7 +809,10 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 					mes "Alright...!";
 					mes "Get a move on!";
 					close2;
-					warp "geffen",120,39;
+					if (checkre(0))
+						warp "geffen",120,39;
+					else
+						warp "prontera",116,72;
 					end;
 				case 2:
 					mes "[Reidin Corse]";
@@ -843,7 +879,7 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 				if(.@eagle == 0){
 					specialeffect2 EF_WIND;
 					set tu_archer01, 10;
-					getexp 0,50;
+					getexp 0,500;
 				}
 				emotion e_no1;
 				next;
@@ -857,48 +893,75 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 				close;
 			}
 		} else if(tu_archer01 == 10){
-			mes "Now, I've taught you a lot of stuff and I wanna make sure you retain all of it. That's why I want you to take this midterm. Your mission: ^FF0000Attack the Rockers^000000!";
-			emotion e_no1;
-			next;
-			mes "[Reidin Corse]";
-			mes "Rockers live just southwest of Prontera.";
-			next;
-			mes "[Reidin Corse]";
-			mes "Be aware that Rockers are earth element monsters!! ^3131FFSo they should be weak against fire^000000.";
-			next;
-			mes "[Reidin Corse]";
-			mes "Now go and bring ^3131FF10 Grasshopper's Leg^000000 from hunting Rockers.";
-			mes "Bring all of that and you pass~";
-			next;
-			mes "[Reidin Corse]";
-			mes "It's easier to find them if you pass by the southern gate of Prontera and then head west. Alright, off you go, " + strcharinfo(0) + "~";
+			if (checkre(0)) {
+				mes "Now, I've taught you a lot of stuff and I wanna make sure you retain all of it. That's why I want you to take this midterm. Your mission: ^FF0000Attack the Rockers^000000!";
+				emotion e_no1;
+				next;
+				mes "[Reidin Corse]";
+				mes "Rockers live just southwest of Prontera.";
+				next;
+				mes "[Reidin Corse]";
+				mes "Be aware that Rockers are earth element monsters!! ^3131FFSo they should be weak against fire^000000.";
+				next;
+				mes "[Reidin Corse]";
+				mes "Now go and bring ^3131FF10 Grasshopper's Leg^000000 from hunting Rockers.";
+				mes "Bring all of that and you pass~";
+				next;
+				mes "[Reidin Corse]";
+				mes "It's easier to find them if you pass by the southern gate of Prontera and then head west. Alright, off you go, " + strcharinfo(0) + "~";
+			} else {
+				mes "Now, I've taught you a lot of stuff and I wanna make sure you retain all of it. That's why I want you to take this midterm. Your mission: ^FF0000Attack the Rockers^000000!";
+				emotion e_no1;
+				next;
+				mes "[Reidin Corse]";
+				mes "There's a ship that";
+				mes "leads to Byalan Island in Izlude, Prontera's satellite city. Ride that ship to Byalan Island.";
+				next;
+				mes "[Reidin Corse]";
+				mes "In the center of that island is the entrance to a dungeon where a lot of Hydras live. Remember that it's a water dungeon, and that ^3131FFWater resists Fire^000000, ^3131FFbut is weak against Wind^000000.";
+				next;
+				mes "[Reidin Corse]";
+				mes "Now go and bring ^3131FF10 Tentacles^000000";
+				mes "from hunting Hydra and ^3131FF1 Crystal Blue^000000, which you can get from hunting the Mushrooms there.";
+				mes "Bring all of that and you pass~";
+				next;
+				mes "[Reidin Corse]";
+				mes "It's easier to find Izlude if you pass by Prontera, so head towards the fields near Prontera. Alright, off you go, " + strcharinfo(0) + "~";
+			}
 			set tu_archer01,11;
 			close;
 		} else if(tu_archer01 == 11){
-			if(countitem(940) > 9){
-				if(MaxWeight - Weight < 1000){
-					mes "Why are you carrying";
-					mes "so much stuff? You better put everything you don't need into Kafra Storage.";
-					close;
-				} else {
-					mes "Hey, you're back!";
-					mes "Let's see now...";
-					next;
-					emotion e_no1;
-					mes "[Reidin Corse]";
-					mes "Good! You pass.";
-					mes "Don't forget that you gotta keep training and improve your skills. Before you know it, you'll be an expert almost as good as me!";
-					specialeffect2 EF_WIND;
-					set tu_archer01, 12;
-					getexp 100,100;
-					getitem 1707,1; //Great_Bow
-					close;
-				}
-			} else {
+			if (checkre(0) && countitem(940) < 10) {
 				mes "Hey...";
 				mes "You gotta bring";
 				mes "^3131FF10 Grasshopper's Leg^000000 to pass my midterm! Go back to the southwest area of Prontera and get them!";
 				close;
+			} else if (!checkre(0) && (countitem(962) < 10 || countitem(991) == 0)) {
+				mes "Hey...";
+				mes "You gotta bring";
+				mes "^3131FF10 Tentacles^000000 and";
+				mes "^3131FF1 Crystal Blue^000000 to pass my midterm! Go back to the dungeon on Byalan Island and get them!";
+				close;
+			}
+			if(MaxWeight - Weight < 1000){
+				mes "Why are you carrying";
+				mes "so much stuff? You better put everything you don't need into Kafra Storage.";
+				close;
+			} else {
+				mes "Hey, you're back!";
+				mes "Let's see now...";
+				next;
+				emotion e_no1;
+				mes "[Reidin Corse]";
+				mes "Good! You pass.";
+				mes "Don't forget that you gotta keep training and improve your skills. Before you know it, you'll be an expert almost as good as me!";
+				specialeffect2 EF_WIND;
+				set tu_archer01, 12;
+				if (checkre(0))
+					delitem 940,10; //Grasshopper's_Leg
+				getexp 1000,1000;
+				getitem 1707,1; //Great_Bow
+				close;
 			}
 		} else if(tu_archer01 == 12){
 			mes "Alright, now there's only";
@@ -940,8 +1003,13 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 			mes "no need for you to fret.";
 			next;
 			mes "[Reidin Corse]";
-			mes "Now, go into the forest east of Payon and hunt Spores and Wormtails. Your test will be to bring back ^3131FF10 Mushroom Spores^000000 and";
-			mes "^3131FF10 Pointed Scales^000000.";
+			if (checkre(0)) {
+				mes "Now, go into the forest east of Payon and hunt Spores and Wormtails. Your test will be to bring back ^3131FF10 Mushroom Spores^000000 and";
+				mes "^3131FF10 Pointed Scales^000000.";
+			} else {
+				mes "Now, go to Mt. Mjolnir and hunt Floras. Your test will be to bring back ^3131FF5 Maneater Blossoms^000000 and";
+				mes "^3131FF20 Stems^000000.";
+			}
 			next;
 			mes "[Reidin Corse]";
 			mes "I know it's a little dangerous,";
@@ -968,49 +1036,81 @@ pay_arche,103,165,5	script	Reidin Corse#tu	832,{
 				close;
 			}
 		} else if((tu_archer01 == 14) || (tu_archer01 == 15)){
-			if((countitem(906) > 9) && (countitem(921) > 9)){
-				mes "Ha-ha~!";
-				mes "You look more like";
-				mes "a veteran than a rookie";
-				mes "now! Yeap, I can see it";
-				mes "in your eyes.";
-				next;
-				mes "[Reidin Corse]";
-				mes "Right, did you get a chance to meet my Acolyte pal, Mafra? She's pretty shy, but I hope you two got along.";
-				next;
-				mes "[Reidin Corse]";
-				mes "I'm happy to tell";
-				mes "you that you've passed";
-				mes "my final exam! Here, take";
-				mes "this little reward!";
-				specialeffect2 EF_WIND;
-				set tu_archer01,16;
-				getexp 300,300;
-				getitem 1770,500; //Iron_Arrow
-				next;
-				mes "[Reidin Corse]";
-				mes "Well, it's like you're a full fledged Archer now. Honestly,";
-				mes "I've got nothing more to teach you. Well, about archery, anyway.";
-				emotion e_heh;
-				next;
-				mes "[Reidin Corse]";
-				mes "Well, if you talk to him, Master Kavaruk might have something for you to do. He happens to have me running around to doing errands";
-				mes "for him too. That creep!";
-				emotion e_pif;
-				next;
-				mes "[Reidin Corse]";
-				mes "Well, "+ strcharinfo(0) +",";
-				mes "It'd make me really happy if you get to the point where you develop a true love for the art of archery. I'll see you sometime, okay?";
-				emotion e_no1;
-				close;
-			} else {
+			if (checkre(0) && (countitem(906) < 10 || countitem(921) < 10)) {
 				mes "Remember, you";
 				mes "need to head into";
 				mes "the forest east of Payon and get me";
 				mes "^3131FF10 Mushroom Spores^000000";
 				mes "and ^3131FF10 Pointed Scales^000000.";
 				close;
+			} else if (!checkre(0) && (countitem(1032) < 5 || countitem(905) < 20)) {
+				mes "Remember, you";
+				mes "need to head over to";
+				mes "Mt. Mjolnir and get me";
+				mes "^3131FF5 Maneater Blossoms^000000";
+				mes "and ^3131FF20 Stems^000000.";
+				next;
+				mes "[Reidin Corse]";
+				mes "From Prontera, you'd get to Mt. Mjolnir by traveling ^3131FFnorth^000000, ^3131FFnorth^000000 and then ^3131FFeast^000000. But if you want,";
+				mes "I can just send you there.";
+				next;
+				switch(select("Go!:W-Wait!")) {
+				case 1:
+					mes "[Reidin Corse]";
+					mes "Alright!";
+					mes "Oh, and if you get";
+					mes "the chance, give a hello to my Acolyte pal over there for me~";
+					emotion e_heh;
+					close2;
+					warp "mjolnir_11",25,221;
+					end;
+				case 2:
+					mes "[Reidin Corse]";
+					mes "Huh?";
+					mes "Um, sure. But";
+					mes "there's no reason to";
+					mes "get so nervous, even if";
+					mes "this my final exam for you.";
+					close;
+				}
 			}
+			mes "Ha-ha~!";
+			mes "You look more like";
+			mes "a veteran than a rookie";
+			mes "now! Yeap, I can see it";
+			mes "in your eyes.";
+			next;
+			mes "[Reidin Corse]";
+			mes "Right, did you get a chance to meet my Acolyte pal, Mafra? She's pretty shy, but I hope you two got along.";
+			next;
+			mes "[Reidin Corse]";
+			mes "I'm happy to tell";
+			mes "you that you've passed";
+			mes "my final exam! Here, take";
+			mes "this little reward!";
+			specialeffect2 EF_WIND;
+			set tu_archer01,16;
+			if (checkre(3))
+				getexp 1000,1000;
+			else
+				getexp 3000,3000;
+			getitem 1770,500; //Iron_Arrow
+			next;
+			mes "[Reidin Corse]";
+			mes "Well, it's like you're a full fledged Archer now. Honestly,";
+			mes "I've got nothing more to teach you. Well, about archery, anyway.";
+			emotion e_heh;
+			next;
+			mes "[Reidin Corse]";
+			mes "Well, if you talk to him, Master Kavaruk might have something for you to do. He happens to have me running around to doing errands";
+			mes "for him too. That creep!";
+			emotion e_pif;
+			next;
+			mes "[Reidin Corse]";
+			mes "Well, "+ strcharinfo(0) +",";
+			mes "It'd make me really happy if you get to the point where you develop a true love for the art of archery. I'll see you sometime, okay?";
+			emotion e_no1;
+			close;
 		} else if(tu_archer01 == 16){
 			mes "I really like this town.";
 			mes "There's so much lush greenery";
@@ -1280,13 +1380,13 @@ pay_arche,84,139,3	script	Seisner	727,{
 		specialeffect2 EF_WIND;
 		set tu_archer01, 3;
 		if(JobLevel == 1){
-			getexp 0,5;
+			getexp 0,30;
 		} else if((JobLevel > 1) && (JobLevel < 11)){
-			getexp 0,10;
+			getexp 0,80;
 		} else if((JobLevel > 10) && (JobLevel < 21)){
-			getexp 0,25;
+			getexp 0,100;
 		} else {
-			getexp 0,50;
+			getexp 0,120;
 		}
 		end;
 	}
@@ -1295,11 +1395,11 @@ pay_arche,84,139,3	script	Seisner	727,{
 
 // Target
 //============================================================
-pay_arche,76,135,3	script	Target#Target	111,{ end; }	// empty NPC?? [Jukka]
+pay_arche,76,135,3	script	#Target	111,{ end; }
 
 // Acolyte
 //============================================================
-pay_fild08,40,83,5	script	Acolyte#tu	95,{
+-	script	::Acolyte_Tu	-1,{
 	mes "[Acolyte]";
 	if(tu_archer01 == 14){
 		if(gettime(3) >= 18 && gettime(3) < 22){

+ 4 - 4
npc/quests/first_class/tu_ma_th01.txt

@@ -1,17 +1,17 @@
 //===== rAthena Script ======================================= 
-//= Theif Mage Quest Story Mode
+//= Thief Mage Quest Story Mode
 //===== By: ================================================== 
 //= Fix up by Jukka
 //===== Current Version: ===================================== 
 //= 1.3
 //===== Compatible With: ===================================== 
-//= rAthena SVN (Testet in Trunk 88xx)
+//= rAthena SVN
 //===== Description: ========================================= 
-//=
+//= [Official Conversion]
+//= Battle Traces from Thief and Magician training quests.
 //===== Additional Comments: ================================= 
 //= 1.0 Fully working
 //= 1.1 optimized [Lupus]
-//=	TODO: Test, Add correct misceffects numbers
 //= 1.2 Changed "battle_trace" to "Trace of Battle". [L0ne_W0lf]
 //= 1.3 Misc. updates. [L0ne_W0lf]
 //============================================================ 

+ 46 - 67
npc/quests/first_class/tu_magician01.txt

@@ -1,19 +1,20 @@
 //===== rAthena Script ======================================= 
-//= Magican Class Tutorial and Job Specific Quest
+//= Magician Class Tutorial and Job Specific Quest
 //===== By: ================================================== 
 //= Fix up by Jukka
 //===== Current Version: ===================================== 
-//= 1.3
+//= 1.4
 //===== Compatible With: ===================================== 
-//= rAthena SVN (Testet in Trunk 88xx)
+//= rAthena SVN
 //===== Description: ========================================= 
-//=
+//= [Official Conversion]
+//= Magician training quest.
 //===== Additional Comments: ================================= 
 //= 1.0 Fully working
 //= 1.1 Optimized [Lupus]
-//=	TODO: Test, Add proper misceffects
 //= 1.2 Fixed experience gains to match upcoming rate adjustments. [SinSloth]
 //= 1.3 Misc. updates. [L0ne_W0lf]
+//= 1.4 Updated to match the official script. [Euphy]
 //============================================================ 
 
 // Sign
@@ -45,9 +46,14 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 		mes "anyone can do what you do~";
 		close;
 	}
-	if(eaclass()&(EAJL_UPPER|EAJL_2) && tu_magician01 < 7){
+	if(eaclass()&(EAJL_UPPER|EAJL_2|EAJL_THIRD) && tu_magician01 < 7){
 		mes "[Mana]";
-		mes "My training isn't very helpful to those that are already skilled in magic. I'm afraid you'll have to rely on yourself to improve your skills.";
+		mes "Although I offer magic";
+		mes "training, it's not very helpful";
+		mes "if you're already experienced";
+		mes "in the use of magic. I'm sorry,";
+		mes "but you'll have to rely on your";
+		mes "own self to hone your skills.";
 		close;
 	}
 	switch(tu_magician01){
@@ -128,7 +134,10 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 		mes "time for a break. But we'll";
 		mes "continue this later, okay?";
 		set tu_magician01, 1;
-		getexp BaseLevel*3,BaseLevel*2;
+		if (checkre(3))
+			getexp BaseLevel*3,BaseLevel*2;
+		else
+			getexp BaseLevel*30,BaseLevel*15;
 		specialeffect2 EF_HIT5;
 		close;
 	case 1:
@@ -202,7 +211,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "only slightly injured and the";
 				mes "Fire Wall won't necessarily";
 				mes "block its approach. So beware!";
-				set tu_mana,tu_mana|1;
+				set .@eread_1,1;
 				next;
 				break;
 			case 2:
@@ -237,7 +246,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "afterwards, like Fire Bolt and";
 				mes "Fire Ball, to take advantage of";
 				mes "the monster's Earth property.";
-				set tu_mana,tu_mana|2;
+				set .@eread_2,1;
 				next;
 				break;
 			case 3:
@@ -275,8 +284,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "the ^93DB70Wind^000000 property skills";
 				mes "that we Mages can use are";
 				mes "Lighning Bolt and Thunder Storm.";
-				next;
-				set tu_mana,tu_mana|4;
+				set .@eread_3,1;
 				next;
 				break;
 			case 4:
@@ -313,7 +321,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "actually freeze monsters.";
 				mes "While monsters are frozen by";
 				mes "Frost Diver, they're considered Water monsters. Interesting, huh?";
-				set tu_mana,tu_mana|8;
+				set .@eread_4,1;
 				next;
 				break;
 			case 5:
@@ -346,7 +354,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "shield against long range";
 				mes "attacks or strong property";
 				mes "attacks, so be really careful!";
-				set tu_mana,tu_mana|16;
+				set .@eread_5,1;
 				next;
 				break;
 			case 6:
@@ -358,32 +366,18 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "ready, we'll cover some new";
 				mes "material for you to learn.";
 				next;
-				switch(select("W-wait, not yet!:I'm ready to go on.")) {
-				case 1:
-					break;
-				case 2:
+				if(select("W-wait, not yet!:I'm ready to go on.") == 2) {
 					mes "[Mana]";
 					mes "Alrighty, we'll";
 					mes "move on to the next";
 					mes "subject then. Ho ho ho~!";
 					set tu_magician01,2;
 					specialeffect2 EF_HIT5;
-					if(tu_mana&1){
-						getexp 15,7;
-					}
-					if(tu_mana&2){
-						getexp 15,7;
-					}
-					if(tu_mana&4){
-						getexp 15,7;
-					}
-					if(tu_mana&8){
-						getexp 15,7;
-					}
-					if(tu_mana&16){
-						getexp 15,7;
-					}
-					set tu_mana,0;
+					if(.@eread_1) getexp 150,70;
+					if(.@eread_2) getexp 150,70;
+					if(.@eread_3) getexp 150,70;
+					if(.@eread_4) getexp 150,70;
+					if(.@eread_5) getexp 150,70;
 				}
 				close;
 			}
@@ -465,7 +459,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 		mes "10 Chrysalis from them.";
 		mes "Then bring them to me, okay?";
 		set tu_magician01, 3;
-		getexp 40,20;
+		getexp 400,200;
 		specialeffect2 EF_HIT5;
 		close;
 	case 3:
@@ -493,7 +487,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 			mes "used to using your skills, huh?";
 			mes "Anyway, let me know when you're ready for the next lesson, okay?";
 			set tu_magician01, 5;
-			getexp 40,20;
+			getexp 400,200;
 			specialeffect2 EF_HIT5;
 			close;
 		}
@@ -521,7 +515,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 			mes "used to using your skills, huh?";
 			mes "Anyway, let me know when you're ready for the next lesson, okay?";
 			set tu_magician01, 5;
-			getexp 40,20;
+			getexp 400,200;
 			specialeffect2 EF_HIT5;
 			close;
 		}
@@ -550,7 +544,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "of Soul Strike and increase";
 				mes "that skill's level, it will grow in strength and you'll be able";
 				mes "to cast it much more quickly.";
-				set tu_mana,tu_mana|1;
+				set .@skill_e1,1;
 				next;
 				break;
 			case 2:
@@ -570,7 +564,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "certain number of attacks,";
 				mes "depending on the level of the";
 				mes "Safety Wall skill that you use.";
-				set tu_mana,tu_mana|2;
+				set .@skill_e2,1;
 				next;
 				break;
 			case 3:
@@ -590,7 +584,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "good use of the destructive";
 				mes "power of the Fire Ball!";
 				next;
-				set tu_mana,tu_mana|4;
+				set .@skill_e3,1;
 				break;
 			case 4:
 				mes "[Mana]";
@@ -616,7 +610,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "skill, its damage and chance";
 				mes "of freezing monsters will also";
 				mes "increase. Pretty dangerous, eh? ^FFFFFFkamenriderblack^000000";
-				set tu_mana,tu_mana|8;
+				set .@skill_e4,1;
 				next;
 				break;
 			case 5:
@@ -635,7 +629,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "within a certain range.";
 				mes "It's an incredibly potent";
 				mes "ground targeting attack.";
-				set tu_mana,tu_mana|16;
+				set .@skill_e5,1;
 				next;
 				break;
 			case 6:
@@ -661,7 +655,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "Fire Well strategically";
 				mes "and effectively, it can";
 				mes "be a very powerful skill~";
-				set tu_mana,tu_mana|32;
+				set .@skill_e6,1;
 				next;
 				break;
 			case 7:
@@ -680,7 +674,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				mes "learn Energy Coat, I'm";
 				mes "sure Blizardis will tell";
 				mes "you all you need to know.";
-				set tu_mana,tu_mana|64;
+				set .@skill_e7,1;
 				next;
 				break;
 			case 8:
@@ -701,28 +695,13 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 				set tu_magician01, 6;
 				getitem 1604,1; //Wand
 				specialeffect2 EF_HIT5;
-				if(tu_mana&1){
-					getexp 30,10;
-				}
-				if(tu_mana&2){
-					getexp 30,10;
-				}
-				if(tu_mana&4){
-					getexp 30,10;
-				}
-				if(tu_mana&8){
-					getexp 30,10;
-				}
-				if(tu_mana&16){
-					getexp 30,10;
-				}
-				if(tu_mana&32){
-					getexp 30,10;
-				}
-				if(tu_mana&64){
-					getexp 30,10;
-				}
-				set tu_mana,0;
+				if(.@skill_e1) getexp 300,100;
+				if(.@skill_e2) getexp 300,100;
+				if(.@skill_e3) getexp 300,100;
+				if(.@skill_e4) getexp 300,100;
+				if(.@skill_e5) getexp 300,100;
+				if(.@skill_e6) getexp 300,100;
+				if(.@skill_e7) getexp 300,100;
 				close;
 			default: 
 				break;
@@ -810,7 +789,7 @@ geffen,67,180,4	script	New Mage Manager#M	102,{
 		set tu_magician01, 28;
 		getitem 2321,1; //Silk_Robe
 		set Zeny, Zeny + 3000;
-		getexp 300,100;
+		getexp 3000,1000;
 		close;
 	default:
 		if(tu_magician01 < 27){

+ 5 - 4
npc/quests/first_class/tu_merchant.txt

@@ -5,13 +5,14 @@
 //===== Current Version: ===================================== 
 //= 1.3
 //===== Compatible With: ===================================== 
-//= rAthena SVN (Testet in Trunk 88xx)
+//= rAthena SVN
 //===== Description: ========================================= 
-//=
+//= [Official Conversion]
+//= Merchant training quest.
 //===== Additional Comments: ================================= 
 //= 1.0 Fully working
-//= 1.1 Fixed bugs, optimized [Lupus] 1.2 fixed Weight check
-//=	TODO: Test, add missing misceffects
+//= 1.1 Fixed bugs, optimized [Lupus]
+//= 1.2 fixed Weight check
 //= 1.2 Fixed experience gains to match upcoming rate adjustments. [SinSloth]
 //= 1.3 Misc. updates. [L0ne_W0lf]
 //============================================================ 

+ 102 - 29
npc/quests/first_class/tu_sword.txt

@@ -3,19 +3,20 @@
 //===== By: ================================================== 
 //= Fix up by Jukka
 //===== Current Version: ===================================== 
-//= 1.5
+//= 1.6
 //===== Compatible With: ===================================== 
-//= rAthena SVN (Testet in Trunk 88xx)
+//= rAthena SVN
 //===== Description: ========================================= 
-//=
+//= [Official Conversion]
+//= Swordman training quest.
 //===== Additional Comments: ================================= 
 //= 1.0 Fully working
 //= 1.1 optimized [Lupus]
-//=	TODO: Test, Add correct misceffects numbers
 //= 1.2 Fixed a typo on NPC name. [SinSloth]
 //= 1.3 Fixed experience gains to match upcoming rate adjustments. [SinSloth]
 //= 1.4 Misc. updates. [L0ne_W0lf]
 //= 1.5 Added Renewal Izlude coordinates.
+//= 1.6 Added Pre-Renewal support. [Euphy]
 //============================================================ 
 
 // Shurank
@@ -42,7 +43,7 @@ izlude_in,82,163,3	script	Shurank	733,{
 		mes "come back to me...";
 		close;
 	}
-	if(BaseClass == Job_Swordman && eaclass()&(EAJL_2|EAJL_UPPER)){
+	if(BaseClass == Job_Swordman && eaclass()&(EAJL_2|EAJL_UPPER|EAJL_THIRD)){
 		mes "From your raiment,";
 		mes "I see that you are";
 		if(Sex)
@@ -109,7 +110,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "your great efforts. But do not let your talents allow you to grow arrogant!";
 			set tu_swordman, 23;
 			completequest 8228;
-			getexp 186,0;
+			if (checkre(3))
+				getexp 186,0;
+			else
+				getexp 1860,0;
 			getitem 1113,1; //Scimiter
 			next;
 			mes "[Shurank]";
@@ -197,7 +201,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "your accomplishment.";
 			set tu_swordman, 22;
 			changequest 8227,8228;
-			getexp 186,0;
+			if (checkre(3))
+				getexp 186,0;
+			else
+				getexp 1860,0;
 			next;
 			mes "[Shurank]";
 			mes "Next time, I will tell you more about the Magnum Break skill.";
@@ -224,7 +231,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			set tu_swordman, 13;
 			erasequest 8221;
 			setquest 8222;
-			getexp 126,0;
+			if (checkre(3))
+				getexp 126,0;
+			else
+				getexp 1260,0;
 			next;
 			mes "[Shurank]";
 			mes "Ah, once again, I have";
@@ -286,7 +296,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			set tu_swordman, 13;
 			erasequest 8221;
 			setquest 8222;
-			getexp 126,0;
+			if (checkre(3))
+				getexp 126,0;
+			else
+				getexp 1260,0;
 			next;
 			mes "[Shurank]";
 			mes "Ah, once again, I have";
@@ -363,7 +376,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			set tu_swordman, 13;
 			erasequest 8221;
 			setquest 8222;
-			getexp 126,0;
+			if (checkre(3))
+				getexp 126,0;
+			else
+				getexp 1260,0;
 			next;
 			mes "[Shurank]";
 			mes "Ah, once again, I have";
@@ -384,7 +400,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "[Shurank]";
 			mes "Ah, I see that you have a fairly good understanding of the Provoke skill. Let me reward you in this small way for your efforts.";
 			set tu_swordman, 10;
-			getexp 112,0;
+			if (checkre(3))
+				getexp 112,0;
+			else
+				getexp 1120,0;
 			next;
 			mes "[Shurank]";
 			mes "Next time we speak, I will tell you what I know about the ^5D478BEndure^000000 skill. When you're ready to learn, come back to me.";
@@ -398,7 +417,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "an outstanding Swordman.";
 			mes "Here is a small reward...";
 			set tu_swordman, 10;
-			getexp 126,0;
+			if (checkre(3))
+				getexp 126,0;
+			else
+				getexp 1260,0;
 			next;
 			mes "[Shurank]";
 			mes "Next time we speak, I will tell you what I know about the ^5D478BEndure^000000 skill. When you're ready to learn, come back to me.";
@@ -447,7 +469,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "[Shurank]";
 			mes "Ah, I see that you have a fairly good understanding of the Provoke skill. Let me reward you in this small way for your efforts.";
 			set tu_swordman, 10;
-			getexp 112,0;
+			if (checkre(3))
+				getexp 112,0;
+			else
+				getexp 1120,0;
 			next;
 			mes "[Shurank]";
 			mes "Next time we speak, I will tell you what I know about the ^5D478BEndure^000000 skill. When you're ready to learn, come back to me.";
@@ -461,7 +486,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "an outstanding Swordman.";
 			mes "Here is a small reward...";
 			set tu_swordman, 10;
-			getexp 126,0;
+			if (checkre(3))
+				getexp 126,0;
+			else
+				getexp 1260,0;
 			next;
 			mes "Next time we speak, I will tell you what I know about the ^5D478BEndure^000000 skill. When you're ready to learn, come back to me.";
 			close;
@@ -543,7 +571,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "Ah, I see that you have a fairly good understanding of the Provoke skill. Let me reward you in this small way for your efforts.";
 			set tu_swordman, 10;
 			changequest 8219,8220;
-			getexp 112,0;
+			if (checkre(3))
+				getexp 112,0;
+			else
+				getexp 1120,0;
 			next;
 			mes "[Shurank]";
 			mes "Next time we speak, I will tell you what I know about the ^5D478BEndure^000000 skill. When you're ready to learn, come back to me.";
@@ -561,7 +592,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			completequest 8219;
 			completequest 8220;
 			setquest 8221;
-			getexp 126,0;
+			if (checkre(3))
+				getexp 126,0;
+			else
+				getexp 1260,0;
 			next;
 			mes "[Shurank]";
 			mes "Next time we speak, I will tell you what I know about the ^5D478BEndure^000000 skill. When you're ready to learn, come back to me.";
@@ -650,7 +684,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "Ah! That healthy glow!";
 			mes "I see that you've mastered this skill already. Let me give you a little reward for your hard training!";
 			set tu_swordman, 5;
-			getexp 112,0;
+			if (checkre(3))
+				getexp 112,0;
+			else
+				getexp 1120,0;
 			next;
 		} else {
 			mes "[Shurank]";
@@ -690,7 +727,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "Here's a small prize in recognition of your efforts thus far. But don't relax yet! You still have a long way to go before grasping";
 			mes "all of the basics.";
 			set tu_swordman, 4;
-			getexp 97,0;
+			if (checkre(3))
+				getexp 97,0;
+			else
+				getexp 970,0;
 			getitem 2503,1; //Muffler
 			close;
 		} else {
@@ -725,7 +765,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "Here's a little reward for all of your hard work. I hope you realize the importance of using Bash as";
 			mes "you grow stronger.";
 			set tu_swordman, 3;
-			getexp 83,0;
+			if (checkre(3))
+				getexp 83,0;
+			else
+				getexp 830,0;
 			close;
 		} else if(.@chk_bash == 10){
 			mes "[Shurank]";
@@ -736,7 +779,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "Here's a small prize in recognition of your efforts thus far. But don't relax yet! You still have a long way to go before grasping";
 			mes "all of the basics.";
 			set tu_swordman, 4;
-			getexp 97,0;
+			if (checkre(3))
+				getexp 97,0;
+			else
+				getexp 970,0;
 			getitem 2503,1; //Muffler
 			close;
 		} else {
@@ -771,7 +817,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "Still, for your training efforts, let me give you a humble reward. But remember, we still have more";
 			mes "of the fundamentals to cover!";
 			set tu_swordman, 2;
-			getexp 58,0;
+			if (checkre(3))
+				getexp 58,0;
+			else
+				getexp 580,0;
 			close;
 		} else if((.@chk_bash > 4) && (.@chk_bash < 10)){
 			mes "[Shurank]";
@@ -801,7 +850,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "For your efforts and patience, I offer you this small reward. Please take it and grow even stronger...";
 			set tu_swordman, 3;
 			setquest 8211;
-			getexp 83,0;
+			if (checkre(3))
+				getexp 83,0;
+			else
+				getexp 830,0;
 			next;
 			mes "[Shurank]";
 			mes "I believe that every true Swordman should master the Bash skill. If you ever do master the skill as a Swordman, come back to me.";
@@ -815,7 +867,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "Here's a small prize in recognition of your efforts thus far. But don't relax yet! You still have a long way to go before grasping";
 			mes "all of the basics.";
 			set tu_swordman, 4;
-			getexp 97,0;
+			if (checkre(3))
+				getexp 97,0;
+			else
+				getexp 970,0;
 			getitem 2503,1; //Muffler
 			close;
 		} else {
@@ -848,7 +903,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "[Shurank]";
 			mes "Now, if you wish to become a true Swordman, you must learn the Bash skill. There's no question about it: You've got to know these basics! Take this, and learn to Bash!";
 			set tu_swordman, 1;
-			getexp 49,0;
+			if (checkre(3))
+				getexp 49,0;
+			else
+				getexp 490,0;
 			setquest 8211;
 			close;
 		} else if((.@chk_bash > 0) && (.@chk_bash < 5)){
@@ -873,7 +931,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "of the fundamentals to cover!";
 			set tu_swordman, 2;
 			changequest 8211,8212;
-			getexp 58,0;
+			if (checkre(3))
+				getexp 58,0;
+			else
+				getexp 580,0;
 			close;
 		} else if((.@chk_bash > 4) && (.@chk_bash < 10)){
 			mes "[Shurank]";
@@ -896,7 +957,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			mes "of the fundamentals to cover!";
 			set tu_swordman, 3;
 			changequest 8212,8213;
-			getexp 83,0;
+			if (checkre(3))
+				getexp 83,0;
+			else
+				getexp 830,0;
 			next;
 			mes "[Shurank]";
 			mes "But if you wish to become an expert Swordman in my eyes, you must master Bash!";
@@ -914,7 +978,10 @@ izlude_in,82,163,3	script	Shurank	733,{
 			completequest 8212;
 			completequest 8213;
 			setquest 8214;
-			getexp 97,0;
+			if (checkre(3))
+				getexp 97,0;
+			else
+				getexp 970,0;
 			getitem 2503,1; //Muffler
 			close;
 		}
@@ -1067,7 +1134,10 @@ geffen,154,143,3	script	Dequ'ee	734,{
 			mes "Hurry over to Morroc and monitor Bankley in case he does anything desperate. If something happens, report to me right away!";
 			set tu_swordman, 19;
 			changequest 8224,8225;
-			getexp 162,0;
+			if (checkre(3))
+				getexp 162,0;
+			else
+				getexp 1620,0;
 			close2;
 			warp "moc_fild07",359,201;
 			end;
@@ -2113,7 +2183,10 @@ geffen,154,143,3	script	Dequ'ee	734,{
 					mes "Thank you for taking the trouble to come this far. Let me reward you with some experience points.";
 					set tu_swordman, 7;
 					changequest 8216,8217;
-					getexp 112,0;
+					if (checkre(3))
+						getexp 112,0;
+					else
+						getexp 1120,0;
 					next;
 					mes "[Dequ'ee]";
 					mes "Take care";

+ 28 - 44
npc/quests/first_class/tu_thief01.txt

@@ -3,18 +3,19 @@
 //===== By: ================================================== 
 //= Fix up by Jukka
 //===== Current Version: ===================================== 
-//= 1.4
+//= 1.5
 //===== Compatible With: ===================================== 
-//= rAthena SVN (Testet in Trunk 88xx)
+//= rAthena SVN
 //===== Description: ========================================= 
-//=
+//= [Official Conversion]
+//= Thief training quest.
 //===== Additional Comments: ================================= 
 //= 1.0 Fully working
 //= 1.1 optimized [Lupus]
-//=	TODO: Test, Add correct misceffects numbers
 //= 1.2 Fixed experience gains to match upcoming rate adjustments. [SinSloth]
 //= 1.3 Fixed a few minor mistakes [Playtester]
 //= 1.4 Misc. updates. [L0ne_W0lf]
+//= 1.5 Added Pre-Renewal support. [Euphy]
 //============================================================ 
 
 // Thief Trainer
@@ -88,7 +89,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				mes "[Yierhan]";
 				mes "So if you're feeling like the damage you're making is pretty weak, you might want more stat points in ^2F4F2FSTR^000000. How high your raise your own STR is really up to you.";
 				set tu_thief01, 1;
-				getexp 20,10;
+				getexp 200,100;
 				specialeffect2 EF_HIT5;
 				close;
 			case 2:
@@ -104,7 +105,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				mes "Sure, ^23238EDEX^000000 and LUK can";
 				mes "also increase your attack damage, but they're insignificant compared to STR. I repeat: ^660000insignificant^000000.";
 				set tu_thief01, 1;
-				getexp 40,20;
+				getexp 400,200;
 				specialeffect2 EF_HIT5;
 				close;
 			case 3:
@@ -119,7 +120,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				mes "[Yierhan]";
 				mes "So if you're feeling like the damage you're making is pretty weak, you might want more stat points in ^2F4F2FSTR^000000. How high your raise your own STR is really up to you.";
 				set tu_thief01, 1;
-				getexp 20,10;
+				getexp 200,100;
 				specialeffect2 EF_HIT5;
 				close;
 			}
@@ -229,7 +230,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 			mes "about any other skills,";
 			mes "I can explain real quick.";
 			set tu_thief01, 3;
-			getexp BaseLevel*3,BaseLevel*2;
+			getexp BaseLevel*30,BaseLevel*15;
 			specialeffect2 EF_HIT5;
 			close;
 		} else if(tu_thief01 == 3){
@@ -328,24 +329,12 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 					mes "Now that you're such an expert on skills, I want you to level up your skills and come back, got it?";
 					set tu_thief01, 4;
 					specialeffect2 EF_HIT5;
-					if(.@read_d){
-						getexp 30,10;
-					}
-					if(.@read_f){
-						getexp 30,10;
-					}
-					if(.@read_s){
-						getexp 30,10;
-					}
-					if(.@read_p){
-						getexp 30,10;
-					}
-					if(.@read_h){
-						getexp 30,10;
-					}
-					if(.@read_r){
-						getexp 30,10;
-					}
+					if(.@read_d) getexp 300,100;
+					if(.@read_f) getexp 300,100;
+					if(.@read_s) getexp 300,100;
+					if(.@read_p) getexp 300,100;
+					if(.@read_h) getexp 300,100;
+					if(.@read_r) getexp 300,100;
 					close;
 				}
 			}
@@ -362,7 +351,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 			set tu_thief01, 5;
 			savepoint "moc_ruins",80,164;
 			getitem 602,1; //Wing_Of_Butterfly
-			getexp 10,5;
+			getexp 100,50;
 			specialeffect2 EF_HIT5;
 			close2;
 			warp "moc_fild12",158,373;
@@ -420,7 +409,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 						mes "is pretty strong!";
 						set tu_thief01, 8;
 						getitem 1207,1; //Main_Gauche
-						getexp 100,50;
+						getexp 1000,500;
 						specialeffect2 EF_HIT5;
 						close;
 					case 2:
@@ -430,7 +419,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 						mes "Alright, you better get stronger the next time I see you. Oh, and you can have this stuff. You know, since you're so gangster and all.";
 						set tu_thief01, 7;
 						getitem 1207,1; //Main_Gauche
-						getexp 50,20;
+						getexp 500,200;
 						specialeffect2 EF_HIT5;
 						close;
 					}
@@ -447,22 +436,19 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 						mes "you so much, kid,";
 						mes "you can have this.";
 						mes "Take it, it's yours!";
-						set tu_thief01, 7;
-						getitem 1207,1; //Main_Gauche
-						getexp 50,20;
-						specialeffect2 EF_HIT5;
-						close;
+						break;
 					case 2:
 						mes "[Yierhan]";
 						mes "Good!";
 						mes "Less work for me!";
 						mes "Alright, you better get stronger the next time I see you. Oh, and you can have this stuff. You know, since you're so gangster and all.";
-						set tu_thief01, 7;
-						getitem 1207,1; //Main_Gauche
-						getexp 50,20;
-						specialeffect2 EF_HIT5;
-						close;
+						break;
 					}
+					set tu_thief01, 7;
+					getitem 1207,1; //Main_Gauche
+					getexp 500,200;
+					specialeffect2 EF_HIT5;
+					close;
 				}
 			}
 		} else if(tu_thief01 == 7){
@@ -503,7 +489,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 			mes "out, be real careful";
 			mes "other there, okay?";
 			set tu_thief01, 8;
-			getexp 20,10;
+			getexp 200,100;
 			specialeffect2 EF_HIT5;
 			close;
 		} else if(tu_thief01 == 8){
@@ -587,7 +573,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				set tu_thief01, 27;
 				getitem 2307,1; //Mantle
 				set Zeny, Zeny + 5000;
-				getexp 800,300;
+				getexp 8000,3000;
 				close;
 			}
 		} else {
@@ -668,7 +654,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				mes "[Yierhan]";
 				mes "Ah, gotcha. Well, that's understandable. I mean, these things take time, you know?";
 				close;
-				break;
 			case 2:
 				mes "[Yierhan]";
 				mes "Yeah...?";
@@ -676,7 +661,6 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				mes "I guess these kinds of things require patience. And thinking.";
 				mes "You know, things I'm horrible at.";
 				close;
-				break;
 			case 3:
 				mes "[Yierhan]";
 				mes "Alright...!";
@@ -712,7 +696,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	84,{
 				mes "Hey, this stuff is yours. Think of it as a reward for helping us out. Right, and I'll let Mana know you did a great job. Take care of yourself now~";
 				set tu_magician01, 27;
 				set Zeny, Zeny + 5000;
-				getexp 500,200;
+				getexp 5000,2000;
 				close;
 			}
 		} else {

+ 16 - 16
npc/quests/quests_13_1.txt

@@ -293,7 +293,7 @@ prt_castle,83,67,5	script	Recruiter for the Brave	109,{
 		next;
 		changequest 10064,10065;
 		set ep13_ryu,9;
-		if (checkre(0))
+		if (checkre(3))
 			getexp 66000,21000;
 		else
 			getexp 660000,210000;
@@ -1808,7 +1808,7 @@ moc_fild22b,230,197,5	script	Munkenro#2	967,{
 		next;
 		completequest 10078;
 		set ep13_ryu,100;
-		if (checkre(0))
+		if (checkre(3))
 			getexp 66000,21000;
 		else
 			getexp 660000,210000;
@@ -2704,7 +2704,7 @@ mid_camp,261,284,4	script	Instructor#ep13bs	405,{
 			set ep13_newbs,100;
 			getitem 617,1; //Old_Violet_Box
 			getitem 12322,5; //Chocolate_Pie
-			if (checkre(0))
+			if (checkre(3))
 				getexp 100000,10000;
 			else
 				getexp 1000000,100000;
@@ -4237,7 +4237,7 @@ mid_camp,188,254,3	script	Monster Scholar#ep13	883,{
 				mes "I hope you'll make yourself known in Ash Vacuum with your great accomplishments.";
 				set ep13_animal,15;
 				completequest 2157;
-				if (checkre(0))
+				if (checkre(3))
 					getexp 100000,0;
 				else
 					getexp 1500000,0;
@@ -4338,7 +4338,7 @@ mid_camp,188,254,3	script	Monster Scholar#ep13	883,{
 				mes "- You pat his shoulder gently, it's worrying that Rumis is not able to return to his country. -";
 				set ep13_animal,100;
 				delitem 6033,1; //Horn_Of_Tendrilion
-				if (checkre(0))
+				if (checkre(3))
 					getexp 50000,0;
 				else
 					getexp 1000000,0;
@@ -5173,7 +5173,7 @@ mid_camp,212,237,5	script	Camp Guard Captain#man1	852,{
 			mes "I'll discuss this more with the expedition management.";
 			mes "Thank you for your valuable information.";
 			completequest 2158;
-			if (checkre(0))
+			if (checkre(3))
 				getexp 90000,0;
 			else
 				getexp 900000,0;
@@ -5197,7 +5197,7 @@ mid_camp,212,237,5	script	Camp Guard Captain#man1	852,{
 				mes "I'll discuss this more with the expedition management.";
 				mes "Thank you for your valuable information.";
 				completequest 2159;
-				if (checkre(0))
+				if (checkre(3))
 					getexp 90000,0;
 				else
 					getexp 900000,0;
@@ -5626,7 +5626,7 @@ OnTouch:
 			mes "- You feel so refreshed and light, as you drink the tea that the Official offered. -";
 			specialeffect2 EF_ABSORBSPIRITS;
 			set ep13_1_rhea,100;
-			if (checkre(0))
+			if (checkre(3))
 				getexp 80000,3000;
 			else
 				getexp 300000,10000;
@@ -7446,7 +7446,7 @@ mid_camp,143,306,5	script	Breeder Taab#ep13_alba	946,{
 				next;
 				delitem 579,50; //Delicious_Fish
 				set ep13_alba,6;
-				if (checkre(0))
+				if (checkre(3))
 					getexp 8000,3000;
 				else
 					getexp 80000,30000;
@@ -7482,7 +7482,7 @@ mid_camp,143,306,5	script	Breeder Taab#ep13_alba	946,{
 				delitem 7198,30; //Great_Leaf
 				delitem 7188,30; //Browny_Root
 				set ep13_alba,6;
-				if (checkre(0))
+				if (checkre(3))
 					getexp 9000,4000;
 				else
 					getexp 90000,40000;
@@ -7523,7 +7523,7 @@ mid_camp,143,306,5	script	Breeder Taab#ep13_alba	946,{
 				delitem 528,20; //Monster's_Feed
 				delitem 537,30; //Pet_Food
 				set ep13_alba,6;
-				if (checkre(0))
+				if (checkre(3))
 					getexp 8000,3000;
 				else
 					getexp 80000,30000;
@@ -7561,7 +7561,7 @@ mid_camp,143,306,5	script	Breeder Taab#ep13_alba	946,{
 				delitem 517,50; //Meat
 				delitem 537,30; //Pet_Food
 				set ep13_alba,6;
-				if (checkre(0))
+				if (checkre(3))
 					getexp 8000,3000;
 				else
 					getexp 80000,30000;
@@ -7596,7 +7596,7 @@ mid_camp,143,306,5	script	Breeder Taab#ep13_alba	946,{
 				next;
 				delitem 6020,30; //Fur
 				set ep13_alba,6;
-				if (checkre(0))
+				if (checkre(3))
 					getexp 8000,3000;
 				else
 					getexp 80000,30000;
@@ -9113,7 +9113,7 @@ mid_campin,90,121,5	script	Hibba Agip	459,{
 		mes "And please take this small reward.";
 		mes "Thank you for your help so far.";
 		next;
-		if (checkre(0))
+		if (checkre(3))
 			getexp 30000,0;
 		else
 			getexp 2500000,0;
@@ -10898,7 +10898,7 @@ mid_campin,68,185,3	script	Pursuit Party Leader#1	803,{
 		mes "[Echinacea]";
 		mes "Keep up the good work assisting the explorers in this camp.";
 		set mao_morocc2,100;
-		if (checkre(0))
+		if (checkre(3))
 			getexp 120000,20000;
 		else
 			getexp 1200000,200000;
@@ -11278,7 +11278,7 @@ mid_camp,199,311,7	script	Mr. Kidd#ep13_dan01	884,{
 			delitem 6029,1; //Morocc_Tracing_Log
 			delitem 6027,1; //Crystal_Of_Feardoom
 			set mao_morocc2,10;
-			if (checkre(0))
+			if (checkre(3))
 				getexp 20000,1000;
 			else
 				getexp 200000,10000;

+ 5 - 5
npc/quests/quests_13_2.txt

@@ -2454,7 +2454,7 @@ spl_in02,236,92,5	script	Arc#ep13md_l02	447,{
 			mes "I'm sorry this is all I can give you for now.";
 			set ep13_mdrama,27;
 			getitem 6081,25; //Splendide_Coin
-			if (checkre(0))
+			if (checkre(3))
 				getexp 120000,10000;
 			else
 				getexp 1200000,100000;
@@ -2776,7 +2776,7 @@ manuk,252,116,3	script	Manuk Galtun#ep13_2day	450,{
 				completequest 7074;
 				completequest 7075;
 				set ep13_2_days01,2;
-				if (checkre(0))
+				if (checkre(3))
 					getexp 50000,30000;
 				else
 					getexp 500000,300000;
@@ -3702,7 +3702,7 @@ mid_camp,197,237,3	script	Schwartzvalt Mechanic#1	869,{
 				mes "I hope this ring would be a big help for your journey through the other world.";
 				completequest 8253;
 				set ep13_2_rhea,100;
-				if (checkre(0))
+				if (checkre(3))
 					getexp 200000,5000;
 				else
 					getexp 1000000,300000;
@@ -4799,7 +4799,7 @@ man_in01,372,221,5	script	Scientist#lifeguard	449,{
 				delitem 6078,.@stoneelse_chk; //Stone_Fragments
 				delitem 6076,1; //Portable_Toolbox
 				getitem 6080,3; //Manuk_Coin
-				if (checkre(0) == 0)
+				if (checkre(3) == 0)
 					getexp 0,700000;
 				changequest 2179+(ep13_2_tre-2),2182;
 				set ep13_2_tre,100;
@@ -5667,7 +5667,7 @@ spl_in01,30,324,3	script	High Laphine#grenouille	446,{
 					set ep13_2_tre1,6;
 					changequest 2185,2186;
 					getitem 6081,3; //Splendide_Coin
-					if (checkre(0) == 0)
+					if (checkre(3) == 0)
 						getexp 0,700000;
 					close;
 				}

+ 3 - 4
npc/quests/skills/hunter_skills.txt

@@ -20,15 +20,14 @@
 //= 1.3b Splitted into different files [DracoRPG]
 //= 1.3c Fixed some typos [IVBela]
 //= 1.3d Changed NPC Name to the official [Lupus]
-//= 1.4	Moved Arpesto from tu_archer and added his script. [Kisuka]
+//= 1.4 Moved Arpesto from tu_archer and added his script. [Kisuka]
 //============================================================
 
-
 //============================================================
 // HUNTER SKILL - PHANTASMIC ARROW
 //============================================================
 pay_arche,109,169,3	script	Arpesto	712,{
-	if (Class == Job_Hunter || Class == Job_Sniper) {
+	if (BaseJob == Job_Hunter) {
 		if (qskill_hunter == 100) {
 			if (getskilllv("HT_PHANTASMIC")) {
 				mes "[Arpesto]";
@@ -241,7 +240,7 @@ pay_arche,109,169,3	script	Arpesto	712,{
 				set qskill_hunter,100;
 				close;
 			}
-			if (JobLevel < 40) {
+			if (BaseJob == Job_Hunter && JobLevel < 40) {
 				mes "[Arpesto]";
 				mes "Did the master send you";
 				mes "to me? Hmm... You're still";

+ 1 - 1
npc/quests/skills/knight_skills.txt

@@ -14,7 +14,7 @@
 //============================================================
 
 prt_in,85,99,3	script	Knight#kabuto	734,{
-	if (BaseJob == job_Knight) {
+	if (BaseJob == Job_Knight) {
 		if (KNGT_SK == 10) {
 			mes "[Essofeit]";
 			mes "Ah, it must be grand to";

+ 1 - 1
npc/quests/thana_quest.txt

@@ -823,7 +823,7 @@ tha_t02,231,161,5	script	Entrance Guide	874,{
 			mes "Is there a Phantom on the top of this tower?";
 			if (rand(3) == 1) {
 				mes "You look tired. This isn't a big deal, but it's for you.";
-				npcskill "AL_HEAL",10,50,70;
+				npcskill "AL_HEAL",11,50,70;
 			}
 			close;
 		}

+ 3 - 3
npc/re/guild/invest_main.txt

@@ -1147,7 +1147,7 @@ OnAgitInvest:
 		callfunc "F_Invest_Abyss","$fund_"+.@npc$+"0"+.@id,"[Gate Manager]";
 		end;
 	case 2:
-		callsub L_Enter,1,.@realm$;
+		callsub L_Enter,1,.@realm$,.@npc$;
 		mes "[Gate Manager]";
 		mes "You are interested in exploring the "+.@realm$+" Guild Dungeon Deepest Layer (2F).";
 		mes "Let me guide you. Good luck.";
@@ -1187,7 +1187,7 @@ OnAgitInvest:
 		}
 		end;
 	case 3:
-		callsub L_Enter,2,.@realm$;
+		callsub L_Enter,2,.@realm$,.@npc$;
 		mes "[Gate Manager]";
 		mes "Let me guide you to the Abyss Gap connected with "+.@realm$+", the Abyss Gate 'Way of the Warrior'.";
 		close2;
@@ -1235,7 +1235,7 @@ OnAgitInvest:
 L_Enter:
 	set .@invest_status, callfunc("F_Invest_Status");
 	if (.@invest_status == 3) {
-		set .@status, getd("$"+.@npc$+"_invest_result");
+		set .@status, getd("$"+getarg(2)+"_invest_result");
 		if ((getarg(0) == 1 && .@status == 2) || .@status == 3)
 			return;
 		else {

+ 4 - 2
npc/re/jobs/novice/novice.txt

@@ -933,7 +933,8 @@ new_1-2,35,176,4	script	Soldier#nv	105,{
 		mes "Kill enough Porings.";
 		mes "Porings are easy to deal with, so cheer up.";
 		mes "Try again.";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
+		percentheal 100,100;
 		close;
 	}
 	mes "[Brade]";
@@ -946,7 +947,8 @@ new_1-2,35,176,4	script	Soldier#nv	105,{
 	mes "[Brade]";
 	mes "Try using the job manuals to find out the characteristics of each job's skills.";
 	mes "I will restore your HP and SP... Keep it up.";
-	npcskill "AL_HEAL",10,99,60;
+	npcskill "AL_HEAL",11,99,60;
+	percentheal 100,100;
 	close;
 }
 

+ 179 - 559
npc/re/quests/eden/71-85.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= L0ne_W0lf
 //===== Current Version: =====================================
-//= 1.2
+//= 1.3
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: =========================================
@@ -12,6 +12,7 @@
 //= 1.0 First Version.
 //= 1.1 Some little optimization here and there. [Masao]
 //= 1.2 Optimized. [Euphy]
+//= 1.3 Updated to match the official scripts. [Euphy]
 //============================================================
 
 moc_para01,44,38,3	script	Mission [71 - 85]	857,{
@@ -21,586 +22,205 @@ moc_para01,44,38,3	script	Mission [71 - 85]	857,{
 		mes "- this bulletin board. -";
 		close;
 	}
-	mes "- Many hunting missions -";
-	mes "- are on the bulletin board. -";
-	next;
-	if ((BaseLevel > 70) && (BaseLevel < 86)) {
-		switch (select("Sphinx Dungeon:Glast Heim:Juno Area:Clock Tower:Localized Islands")) {
-		case 1:
-			mes "- Sphinx Dungeon -";
-			mes "- I am Meidi who lives -";
-			mes "- in Morocc. I want to hunt -";
-			mes "- monsters in the Sphinx -";
-			mes "- Dungeon. I will wait for -";
-			mes "- you in front of the -";
-			mes "- western gate. -";
-			callsub L_Quest,10102,1;
-			mes "- Good. Now go find Meidi -";
-			mes "- at the western gate -";
-			mes "- in Morroc. -";
-			close;
-		case 2:
-			mes "- Glast Heim -";
-			mes "- I am Ancellia. -";
-			mes "- I need some help -";
-			mes "- hunting monsters -";
-			mes "- in Glast Heim.-";
-			mes "- Please help me. -";
-			callsub L_Quest,10103,2;
-			mes "- Look for Ancellia. -";
-			mes "- in Geffen. -";
-			close;
-		case 3:
-			mes "- Juno Area -";
-			mes "- I want to go to Juno, -";
-			mes "- but the monsters on -";
-			mes "- the way there are too -";
-			mes "- strong for me. Come -";
-			mes "- visit me in Al De Baran. -";
-			mes "- My name is Jeanbai. -";
-			callsub L_Quest,10104,3;
-			mes "- Look for Jeanbai -";
-			mes "- in Al De Baran. -";
-			close;
-		case 4:
-			mes "- Clock Tower -";
-			mes "- A Clock is the best thing! -";
-			mes "- I'm asking you to hunt -";
-			mes "- some monster inside of.-";
-			mes "- the Clock Tower, -";
-			mes "- Lisingshetter. -";
-			callsub L_Quest,10105,4;
-			mes "- Look for Lisingshetter -";
-			mes "- in front of the -";
-			mes "- Clock Tower. -";
-			close;
-		case 5:
-			mes "- Localized Islands -";
-			mes "- I need someone who -";
-			mes "- can hunt monsters -";
-			mes "- for Funfi in Alberta. -";
-			callsub L_Quest,10106,5;
-			mes "- Loof for Funfi -";
-			mes "- in Alberta. -";
-			close;
-		}
-	}
-	mes "- Only members of the -";
-	mes "- right level can read -";
-	mes "- this bulletin board. -";
-	mes "- Try to find a board -";
-	mes "- that suits your level. -";
-	close;
-L_Quest:
-	next;
-	if(select("Accept mission.:Decline mission.") == 2) {
-		mes "- I don't want to do -";
-		mes "- a mission right now. -";
-		close;
-	}
-	if (slv_quest && slv_quest != getarg(1)) {
-		mes "- You are already on -";
-		mes "- another mission. -";
-		mes "- You can't do multiple -";
-		mes "- missions. Finish your -";
-		mes "- current mission first. -";
-		close;
-	}
-	if (checkquest(getarg(0)) <= 0) {
-		setquest getarg(0);
-		set slv_quest,getarg(1);
-		return;
-	}
-	mes "- You are already on -";
-	mes "- or have recently -";
-	mes "- completed a mission. -";
-	mes "- You can't do anymore -";
-	mes "- missions right now. -";
-	close;
-}
 
-morocc,35,174,5	script	Meidi	729,{
-
-	if ((checkquest(10107) == 2) && (checkquest(10108) == 2) && (checkquest(10109) == 2) && (slv_quest == 6)) {
-		set slv_quest,0;
-		mes "[Meidi]";
-		mes "You have completed the hunting missions.";
-		mes "I don't have anymore missions for you.";
-		mes "Thanks, you did a great job!";
-		close;
-	}
-	if (checkquest(10107) == 1 || checkquest(10108) == 1 || checkquest(10109) == 1) {
-		mes "[Meidi]";
-		mes "Wow! How did you come back so fast?";
-		mes "What monster did you hunt?";
-		next;
-		setarray .@monsters$[0],"Requiem","Marduk","Pasana";
-		set .@i, select(implode(.@monsters$,":"))-1;
-		if (checkquest(10107+.@i,HUNTING) == 2) {
-			mes "[Meidi]";
-			mes "You've hunted all 10 "+.@monsters$[.@i]+".";
-			mes "Thank you very much.";
-			next;
-			mes "[Meidi]";
-			mes "I know it isn't much but here's a small gift.";
-			mes "I hope that it will be helpful to you.";
-			next;
-			completequest 10107+.@i;
-			getexp 48000,0;
-			mes "[Meidi]";
-			mes "Wooohoo!";
-			mes "Good luck.";
-			close;
+	// Clear the original quest data (no longer used).
+	if (slv_quest) set slv_quest,0;
+	if (checkquest(10102) > -1 || checkquest(10103) > -1 || checkquest(10104) > -1 || checkquest(10105) > -1 || checkquest(10106) > -1) {
+		for(set .@quest,10102; .@quest<=10106; set .@quest,.@quest+1) {
+			if (checkquest(.@quest) > -1)
+				erasequest .@quest;
 		}
-		mes "[Meidi]";
-		mes "You didn't hunt 10 "+.@monsters$[.@i]+" yet.";
-		mes "You should make sure that you hunt all of them.";
-		mes "Can you check again?";
-		close;
-	}
-	if (slv_quest == 6) {
-		mes "[Meidi]";
-		mes "Sphinx Dungeon... many adventurers came back with great injuries.";
-		mes "That place is very dangerous.";
-		mes "Someone should go inside an make it safer for everyone.";
-		mes "Hopefully, very soon!";
-		close;
-	}
-	mes "[Meidi]";
-	mes "Sphinx Dungeon... many adventurers came back with great injuries.";
-	mes "That place is very dangerous.";
-	mes "Someone should go inside an make it safer for everyone.";
-	mes "Hopefully, very soon!";
-	if (slv_quest == 1) {
-		next;
-		mes "[Meidi]";
-		mes "Oh! Are you from the Eden Group?";
-		mes "Are you here for my mission?";
-		mes "You came right on time.";
-		mes "I was worried that noone would accept the mission that I posted.";
+		mes "- Since the client has moved -";
+		mes "- to another place, -";
+		mes "- the application form has been removed. -";
 		next;
-		mes "[Meidi]";
-		mes "So, I need help hunting 3 monsters";
-		mes "inside of the Sphinx Dungeon.";
-		mes "Got it? Its too dangerous for me so that's why I posted the mission.";
-		next;
-		mes "[Meidi]";
-		mes "Requiem, Marduk and Pasana...";
-		mes "I heard they are very dangerous monsters.";
-		mes "Can you hunt 10 of those monsters?";
-		mes "10 of each sounds good enough, right?";
-		next;
-		mes "[Meidi]";
-		mes "If you succeed, I will give you a small reward for your help.";
-		next;
-		switch (select("Accept mission.:Decline mission.")) {
-		case 1:
-			mes "[Meidi]";
-			mes "Oh. Thank you so much.";
-			mes "How can I pay you backf or your effort?";
-			mes "May Freya bless you~";
-			next;
-			completequest 10102;
-			setquest 10107;
-			setquest 10108;
-			setquest 10109;
-			set slv_quest,6;
-			mes "[Meidi]";
-			mes "Requiem, Marduk and Pasana.";
-			mes "Don't forget and good luck.";
-			close;
-		case 2:
-			set slv_quest,0;
-			erasequest 10102;
-			mes "[Meidi]";
-			mes "I see. There is no other way.";
-			mes "I will send a message to the Eden Group.";
-			mes "Don't worry and nevermind.";
-			close;
-		}
 	}
-	close;
-}
 
-geffen,146,132,3	script	Ancellia	906,{
-	if ((checkquest(10110 == 2)) && (checkquest(10111) == 2) && (checkquest(10112) == 2) && (checkquest(10113) == 2) && (slv_quest == 6)) {
-		set slv_quest,0;
-		mes "[Ancellia]";
-		mes "Wow. You've finished all";
-		mes "of my missions. Great!";
-		mes "You are of great help.";
-		mes "I will inform the Eden Group of your assistance.";
-		mes "You can go back, don't worry.";
-		close;
-	}
-	if (checkquest(10110) == 1 || checkquest(10111) == 1 || checkquest(10112) == 1 || checkquest(10113) == 1) {
-		mes "[Ancellia]";
-		mes "You seem to have hunted all of the monsters.";
-		mes "What monster have you hunted?";
-		mes "Do you remember its name?";
-		next;
-		setarray .@monsters$[0],"Dark Frame","Evil Druid","Wraith","Raydric Archer";
-		set .@i, select(implode(.@monsters$,":"))-1;
-		if (checkquest(10110+.@i,HUNTING) == 2) {
-			mes "[Ancellia]";
-			mes "Ah, you've hunted 10 "+.@monsters$[.@i]+"s.";
-			mes "That was pretty difficult!";
-			mes "Thank you very much.";
+	if (BaseLevel < 71) {
+		mes "- Only members of the -";
+		mes "- right level can read -";
+		mes "- this bulletin board. -";
+		mes "- Try to find a board -";
+		mes "- that suits your level. -";
+		close;
+	} else if (BaseLevel > 85) {
+		// Quest IDs: 10107-10123, 5055-5057
+		setarray .@quests[0],
+			10107,10108,10109,
+			10110,10111,10112,10113,
+			10114,10115,10116,10117,
+			10118,10119,10120,
+			10121,10122,10123,5055,5056;
+		for(set .@i,0; .@i<getarraysize(.@quests); set .@i,.@i+1) {
+			if (checkquest(.@quests[.@i],HUNTING) == 2)
+				set .@complete[getarraysize(.@complete)], .@quests[.@i];
+		}
+		if (checkquest(5057) > -1 && countitem(7187) >= 30)
+			set .@complete[getarraysize(.@complete)],5057;
+		if (getarraysize(.@complete)) {
+			mes "You have quests in progress.";
+			mes "Do you want to turn them in?";
 			next;
-			completequest 10110+.@i;
-			getexp 48000,0;
-			mes "[Ancellia]";
-			mes "Perhaps you can hunt the rest as well.";
-			mes "I will wait for you here.";
+			if(select("Of course.:No.") == 2)
+				close;
+			for(set .@i,0; .@i<getarraysize(.@complete); set .@i,.@i+1)
+				callsub L_Quest,.@complete[.@i];
 			close;
 		}
-		mes "[Ancellia]";
-		mes "Hmm... maybe you were confused.";
-		mes "You didn't hunt all 10 "+.@monsters$[.@i]+".";
-		mes "Can you check again?";
-		close;
-	}
-	if (slv_quest == 6) {
-		mes "[Ancellia]";
-		mes "Go to Glast Heim and kill";
-		mes "Dark Frames, Evil Druids,";
-		mes "Wraith and Raydric Archers.";
-		mes "10 of each should do just fine.";
+		mes "- Only members of the -";
+		mes "- right level can read -";
+		mes "- this bulletin board. -";
+		mes "- Try to find a board -";
+		mes "- that suits your level. -";
 		close;
 	}
-	mes "[Ancellia]";
-	mes "Glast Heim is very far away.";
-	mes "I heared that the castle was cursed by the ancient King of Prontera.";
-	mes "There is a another story.";
+	mes "- Choose where you -";
+	mes "- would like to hunt. -";
 	next;
-	mes "[Ancellia]";
-	mes "One day the came out of the castle and attacked a nearby village, it was terrible.";
-	mes "That's why I can't stop worrying.";
-	if (slv_quest == 2) {
-		next;
-		mes "[Ancellia]";
-		mes "Oh, you got my mission";
-		mes "from the Eden Group. Great~!";
-		mes "Thank you very much.";
-		next;
-		mes "[Ancellia]";
-		mes "I already explained.";
-		mes "So I expect you understand.";
-		mes "You need to hurry hunting";
-		mes "Dark Frames, Evil Druids,";
-		mes "Wraith and Raydric Archesr.";
-		next;
-		mes "[Ancellia]";
-		mes "You should hunt them all.";
-		mes "These are dangerous monsters so please take care of yourself.";
-		next;
-		switch (select("Accept mission.:Decline mission.")) {
-		case 1:
-			mes "[Ancellia]";
-			mes "Thanks a lot.";
-			mes "Be careful when you hunt these monsters. Good luck.";
-			next;
-			completequest 10103;
-			setquest 10110;
-			setquest 10111;
-			setquest 10112;
-			setquest 10113;
-			set slv_quest,6;
-			mes "[Ancellia]";
-			mes "Remember, Dark Frames,";
-			mes "Evil Druids, Wraiths";
-			mes "and Raydric Archers.";
-			close;
-		case 2:
-			set slv_quest,0;
-			erasequest 10103;
-			mes "[Ancellia]";
-			mes "Was the mission too hard?";
-			mes "I guess I'll just have to wait for someone else from the Eden Group to help me.";
-			close;
+	switch(select("Sphinx Dungeon:Glast Heim:Juno Area:Clock Tower:Localized Islands")) {
+	case 1:
+		mes "- There are several requests -";
+		mes "- related to the Sphinx Dungeon -";
+		mes "- on this mission Board. -";
+		next;
+		set .@str1$,"The villagers of Morroc are worried by the increasing number of monsters in the Sphinx Dungeon. ";
+		set .@str2$,"- Meidi from Morroc -";
+		switch(select("Hunt Requiem:Hunt Marduk:Hunt Pasana")) {
+			case 1: callsub L_Quest,10107,.@str1$+"Hunt 10 Requiems.",.@str2$;
+			case 2: callsub L_Quest,10108,.@str1$+"Hunt 10 Marduks.",.@str2$;
+			case 3: callsub L_Quest,10109,.@str1$+"Hunt 10 Pasanas.",.@str2$;
 		}
-	}
-	close;
-}
-
-aldebaran,144,230,3	script	Jeanbai	900,{
-	if ((checkquest(10114) == 2) && (checkquest(10115) == 2) && (checkquest(10116) == 2) && (checkquest(10117) == 2) && (slv_quest == 6)) {
-		set slv_quest,0;
-		mes "[Jeanbai]";
-		mes "You've hunted all of the monsters.";
-		mes "I will inform the Eden Group.";
-		mes "Thank you.";
-		close;
-	}
-	if (checkquest(10114) == 1 || checkquest(10115) == 1 || checkquest(10116) == 1 || checkquest(10117) == 1) {
-		mes "[Jeanbai]";
-		mes "Huh? So... fast...";
-		mes "You amaze me!";
-		mes "So what monster did you hunt?";
-		next;
-		setarray .@monsters$[0],"Grand Peco","Sleeper","Goat","Harpy";
-		set .@i, select(implode(.@monsters$,":"))-1;
-		if (checkquest(10114+.@i,HUNTING) == 2) {
-			mes "[Jeanbai]";
-			mes "You've hunted 20 "+.@monsters$[.@i]+"s. Perfect!";
-			mes "Thanks a lot.";
-			next;
-			completequest 10114+.@i;
-			getexp 48000,0;
-			mes "[Jeanbai]";
-			mes "Please hunt the others as soon as possible.";
-			mes "I have faith in you!";
-			close;
+	case 2:
+		mes "- There are several requests -";
+		mes "- related to Glast Heim -";
+		mes "- on this mission Board. -";
+		next;
+		set .@str1$,"I am very afraid that the monsters from Glast Heim will attack us. ";
+		set .@str2$,"- Ancellia from Geffen -";
+		switch(select("Hunt Dark Frame:Hunt Evil Druid:Hunt Wraith:Hunt Raydric Archer")) {
+			case 1: callsub L_Quest,10110,.@str1$+"Hunt 10 Dark Frames.",.@str2$;
+			case 2: callsub L_Quest,10111,.@str1$+"Hunt 10 Evil Druids.",.@str2$;
+			case 3: callsub L_Quest,10112,.@str1$+"Hunt 10 Wraiths.",.@str2$;
+			case 4: callsub L_Quest,10113,.@str1$+"Hunt 10 Raydric Archers.",.@str2$;
 		}
-		mes "[Jeanbai]";
-		mes "What? Maybe you were confused.";
-		mes "You haven't hunted all 20 "+.@monsters$[.@i]+"s.";
-		mes "Please check again.";
-		close;
-	}
-	if (slv_quest == 6) {
-		mes "[Jeanbai]";
-		mes "Grand Pecos, Sleepers, Goats";
-		mes "and Harpies. Hunt 20 of each.";
-		mes "When you're finished hunting, come back to me.";
-		mes "I hope you finish as soon as you can.";
-		close;
-	}
-	mes "[Jeanbai]";
-	mes "I am traveler Jeanbai.";
-	mes "As I said I'm a traveler not a adventurer so, I am not good at fighting.";
-	mes "That's why I can't travel all over the world.";
-	next;
-	mes "[Jeanbai]";
-	mes "Monsters are increasing in numbers so travelers like me have a hard time getting around.";
-	mes "I wish I could travel around without having to worry about that.";
-	if (slv_quest == 3) {
-		next;
-		mes "[Jeanbai]";
-		mes "Oh, did you get my mission from the Eden Group?";
-		mes "Great~! We don't have a lot of time.";
-		mes "Let me explain.";
-		next;
-		mes "[Jeanbai]";
-		mes "The monsters around Juno,";
-		mes "Grand Pecos, Sleepers, Goats";
-		mes "and Harpies. Please hunt 20 of them.";
-		mes "I've been hesitating to visit Juno because of those monsters around there.";
-		next;
-		mes "[Jeanbai]";
-		mes "Will you accept this mission?";
-		mes "I hope you are the right person for the job.";
-		mes "So what do you say?";
-		next;
-		switch (select("Accept mission.:Decline mission.")) {
-		case 1:
-			mes "[Jeanbai]";
-			mes "Great!";
-			mes "You won't regret it.";
-			next;
-			completequest 10104;
-			setquest 10114;
-			setquest 10115;
-			setquest 10116;
-			setquest 10117;
-			set slv_quest,6;
-			mes "[Jeanbai]";
-			mes "When you're finished hunting, come back to me.";
-			mes "I hope you finish as soon as you can.";
-			close;
-		case 2:
-			set slv_quest,0;
-			erasequest 10104;
-			mes "[Jeanbai]";
-			mes "Too bad. I'm disappointed.";
-			mes "I should inform the Eden Group again.";
-			mes "I see, nevermind.";
-			close;
+	case 3:
+		mes "- There are several requests -";
+		mes "- related to the area -";
+		mes "- around Juno. -";
+		next;
+		set .@str1$,"Those who can't fight, like me, find it much more difficult to travel due to the large number of monsters. ";
+		set .@str2$,"- Jeanbai, traveler -";
+		switch(select("Hunt Grand Peco:Hunt Sleeper:Hunt Goat:Hunt Harpy")) {
+			case 1: callsub L_Quest,10114,.@str1$+"Hunt 20 Grand Pecos.",.@str2$;
+			case 2: callsub L_Quest,10115,.@str1$+"Hunt 20 Sleepers.",.@str2$;
+			case 3: callsub L_Quest,10116,.@str1$+"Hunt 20 Goats.",.@str2$;
+			case 4: callsub L_Quest,10117,.@str1$+"Hunt 20 Harpies.",.@str2$;
 		}
-	}
-	close;
-}
-
-aldebaran,105,116,3	script	Lisingshetter	869,{
-	if ((checkquest(10118) == 2) && (checkquest(10119) == 2) && (checkquest(10120 == 2)) && (slv_quest == 6)) {
-		set slv_quest,0;
-		mes "[Lisingshetter]";
-		mes "You've completed all of my missions.";
-		mes "Amazing~! I will inform the Eden Group.";
-		mes "of your assistance. Thanks again!";
-		close;
-	}
-	if (checkquest(10118) == 1 || checkquest(10119) == 1 || checkquest(10120) == 1) {
-		mes "[Lisingshetter]";
-		mes "Wow. Are you done?";
-		mes "So fast~?! Unbelievable~";
-		mes "You were the right person for this mission.";
-		mes "Which monster did you hunt?";
-		next;
-		setarray .@monsters$[0],"Clock","Punk","Rideword";
-		set .@i, select(implode(.@monsters$,":"))-1;
-		if (checkquest(10118+.@i,HUNTING) == 2) {
-			mes "[Lisingshetter]";
-			mes "Good! You've hunted 15 "+.@monsters$[.@i]+"s.";
-			mes "Ah, now I can hear the clock sound clearly...";
-			mes "Tic!! toc!! tic!! toc!!...";
-			next;
-			completequest 10118+.@i;
-			getexp 48000,0;
-			mes "[Lisingshetter]";
-			mes "Thanks a lot!";
-			mes "I hope you can hunt the rest as well.";
-			mes "Go as soon as you can!";
-			close;
+	case 4:
+		mes "- There are several requests -";
+		mes "- related to the Clock Tower -";
+		mes "- on this mission Board. -";
+		next;
+		set .@str1$,"I used to love listening to the sweet melody of the Al De Baran Clock Tower but I can't hear anything anymore because of all the noises the monsters are making. ";
+		set .@str2$,"- Rizingsetter, President of the Love Clock community -";
+		switch(select("Hunt Clock:Hunt Punk:Hunt Rideword")) {
+			case 1: callsub L_Quest,10118,.@str1$+"Hunt 15 Clocks before it breaks.",.@str2$;
+			case 2: callsub L_Quest,10119,.@str1$+"Hunt 15 Punks before it breaks.",.@str2$;
+			case 3: callsub L_Quest,10120,.@str1$+"Hunt 15 Ridewords before it breaks.",.@str2$;
 		}
-		mes "[Lisingshetter]";
-		mes "Uh? Something is wrong.";
-		mes "15 "+.@monsters$[.@i]+"s, right?";
-		mes "You better check how many you've hunted.";
-		close;
-	}
-	if (slv_quest == 6) {
-		mes "[Lisingshetter]";
-		mes "Hunt 15 Clocks, Punks, and Ridewords.";
-		mes "Please hurry.";
-		close;
-	}
-	mes "[Lisingshetter]";
-	mes "I like clocks so much.";
-	mes "They move with regular rhythm";
-	mes "making tic toc sounds.";
-	mes "Ahah!! Hail to the clocks!";
-	next;
-	mes "[Lisingshetter]";
-	mes "That's why I like the Clock Tower so much.";
-	mes "It makes a really nice sound.";
-	mes "I like it so much!";
-	if (slv_quest == 4) {
-		next;
-		mes "[Lisingshetter]";
-		mes "Uh? Have you come to help me solve my trouble.";
-		mes "You already know I like clocks right?";
-		mes "That's why I need your help to hunt these monsters.";
-		next;
-		mes "[Lisingshetter]";
-		mes "There are too many monsters inside the Clock Tower.";
-		mes "Their presence is destroying the Clock Tower.";
-		next;
-		mes "[Lisingshetter]";
-		mes "Anyway. Can you help me?";
-		mes "Please hunt 15 Clocks, Punks and Ridewords before it breaks down.";
-		next;
-		switch (select("Accept mission.:Decline mission.")) {
-		case 1:
-			completequest 10105;
-			setquest 10118;
-			setquest 10119;
-			setquest 10120;
-			set slv_quest,6;
-			mes "[Lisingshetter]";
-			mes "Ok! I expect you will do the right thing.";
-			mes "Hunt 15 Clocks, Punks and Ridewords.";
-			close;
-		case 2:
-			set slv_quest,0;
-			erasequest 10105;
-			mes "[Lisingshetter]";
-			mes "You don't understand my love for clocks";
-			mes "I will find another brave adventurer.";
-			mes "I will inform the Eden Group.";
-			close;
+	case 5:
+		mes "- There are several requests -";
+		mes "- related to the Localized Islands -";
+		mes "- on this mission Board. -";
+		next;
+		set .@str1$,"I want to go on an adventure but there are so many things I have to deal with. If I can't, then others can't either! ";
+		set .@str2$,"- Funfy, who wants to go on an adventure -";
+		switch(select("Hunt Kikimora:Hunt Miyabi Doll:Hunt Mi Gao:Hunt Headless Mule:Hunt Tamruan:Gather Festival Masks for the Festival")) {
+			case 1: callsub L_Quest,10121,.@str1$+"Hunt 15 Kikimoras in Moscovia!",.@str2$;
+			case 2: callsub L_Quest,10122,.@str1$+"Hunt 15 Miyabi Dolls in Amatsu!",.@str2$;
+			case 3: callsub L_Quest,10123,.@str1$+"Hunt 15 Mi Gaos in Louyang!",.@str2$;
+			case 4: callsub L_Quest,5055,"I know there are many terrifying monsters outside the city, but what terrifies me are these Headless Mules lurking around. I hope they will never venture into town. Hunt 15 Headless Mules!","- Mariana from Brasilis -";
+			case 5: callsub L_Quest,5056,"Tamruans make a lot of noise. I don't mind in the morning but they keep me from falling asleep at night. I want to sleep. Hunt 15 Tamruans!","- Shaman Pumo from Ayotaya -";
+			case 6: callsub L_Quest,5057,"The Dumpling Childs stole all the masks that I had prepared for the festival. Try to get a hold of 30 masks! I'll owe you~","- SaYumMoon Chief of Kunlun -";
 		}
 	}
-	close;
-}
+	end;
 
-alberta,215,111,5	script	Funfi	828,{
-	if ((checkquest(10121) == 2) && (checkquest(10122) == 2) && (checkquest(10123) == 2) && (slv_quest == 6)) {
-		set slv_quest,0;
-		mes "[Funfi]";
-		mes "Um! Thank you so much for all your efforts!";
-		mes "I will inform, the Eden Group about your assistance, don't worry!";
-		mes "Hahahaha...";
-		close;
-	}
-	if (checkquest(10121) == 1 || checkquest(10122) == 1 || checkquest(10123) == 1) {
-		mes "[Funfi]";
-		mes "Unbelievable~! So fast~!";
-		mes "Which monster did you hunt?";
-		next;
-		setarray .@monsters$[0],"Kikimora","Miyabi Doll","Mi Gao";
-		set .@i, select(implode(.@monsters$,":"))-1;
-		if (checkquest(10121+.@i,HUNTING) == 2) {
-			mes "[Funfi]";
-			mes "Ok! You've hunted 15 "+.@monsters$[.@i]+"!";
-			mes "You're the best!";
+//callsub L_Quest,<quest ID>{,"<description1>","<description2>"};
+L_Quest:
+	set .@quest, getarg(0);
+	switch(.@quest) {
+		case 10107: set .@name$,"Hunt Requiem"; set .@exp,15000; break;
+		case 10108: set .@name$,"Hunt Marduk"; set .@exp,15000; break;
+		case 10109: set .@name$,"Hunt Pasana"; set .@exp,15000; break;
+		case 10110: set .@name$,"Hunt Dark Frame"; set .@exp,20000; break;
+		case 10111: set .@name$,"Hunt Evil Druid"; set .@exp,20000; break;
+		case 10112: set .@name$,"Hunt Wraith"; set .@exp,20000; break;
+		case 10113: set .@name$,"Hunt Raydric Archer"; set .@exp,20000; break;
+		case 10114: set .@name$,"Hunt Grand Peco"; set .@exp,30000; break;
+		case 10115: set .@name$,"Hunt Sleeper"; set .@exp,30000; break;
+		case 10116: set .@name$,"Hunt Goat"; set .@exp,30000; break;
+		case 10117: set .@name$,"Hunt Harpy"; set .@exp,30000; break;
+		case 10118: set .@name$,"Hunt Clock"; set .@exp,25000; break;
+		case 10119: set .@name$,"Hunt Punk"; set .@exp,25000; break;
+		case 10120: set .@name$,"Hunt Rideword"; set .@exp,25000; break;
+		case 10121: set .@name$,"Hunt Kikimora"; set .@exp,30000; break;
+		case 10122: set .@name$,"Hunt Miyabi Doll"; set .@exp,30000; break;
+		case 10123: set .@name$,"Hunt Mi Gao"; set .@exp,30000; break;
+		case 5055: set .@name$,"Hunt Headless Mule"; set .@exp,30000; break;
+		case 5056: set .@name$,"Hunt Tamruan"; set .@exp,30000; break;
+		case 5057: set .@name$,"Gather Festival Masks for the Festival"; set .@exp,30000; break;
+	}
+	if (getargcount() == 1) {
+		mes "'"+.@name$+"' completed. Do you want to turn it in and receive your reward?";
+		next;
+		if(select("Turn in quest.:Cancel.") == 1) {
+			if (.@quest == 5057) delitem 7187,30; //Festival_Mask
+			erasequest .@quest;
+			getexp .@exp,0;
+			mes "You've received EXP for finishing the quest.";
 			next;
-			completequest 10121+.@i;
-			getexp 48000,0;
-			mes "[Funfi]";
-			mes "Please hunt the others as well.";
-			mes "I have faith in you!";
-			close;
+			return;
 		}
-		mes "[Funfi]";
-		mes "Oh~ No no~!!";
-		mes "Listen carefully! Hunt 15 "+.@monsters$[.@i]+".";
 		close;
-	}
-	if (slv_quest == 6) {
-		mes "[Funfi]";
-		mes "Moscovia's Kikimore,";
-		mes "Miyabi Dolls from Amatsu";
-		mes "and Mi Gaos from Louyang.";
-		mes "Please hunt 15 of each of those monsters.";
-		close;
-	}
-	mes "[Funfi]";
-	mes "I am a man who wants to experience adventures. But for some reason I can't...";
-	next;
-	mes "[Funfi]";
-	mes "There are a lot of funny things in the world... Wooo!";
-	if (slv_quest == 5) {
-		next;
-		mes "[Funfi]";
-		mes "Anyway are you from the Eden Group?";
-		mes "You are? Cool! I've been waiting for you~!";
-		next;
-		mes "[Funfi]";
-		mes "No questions! Just do it now!";
-		mes "Hunt Kikimora in Moscovia,";
-		mes "Miyabi Dolls in Amatsu";
-		mes "and Mi Gaos in Louyang!";
-		mes "Hunt 15 each of those monsters!";
-		next;
-		mes "[Funfi]";
-		mes "Please~!! haha.";
-		mes "Hurry up!";
-		next;
-		switch (select("Accept mission.:Decline mission.")) {
-		case 1:
-			completequest 10106;
-			setquest 10121;
-			setquest 10122;
-			setquest 10123;
-			set slv_quest,6;
-			getitem 7167,10; //Mystery_Iron_Bit
-			mes "[Funfi]";
-			mes "Ok! Good! Hurry up.";
-			mes "Hunt the monsters on each of those 3 islands.";
+	} else {
+		if (.@quest == 5057) {
+			// Quest 5057 is the only collection quest, so separate conditions are unnecessary.
+			if (checkquest(5057) == -1)
+				set .@hunting,-1;
+			else if (countitem(7187) >= 30)
+				set .@hunting,2;
+		} else
+			set .@hunting, checkquest(.@quest,HUNTING);
+		if (.@hunting == 0 || .@hunting == 1) {
+			mes getarg(1);
+			mes getarg(2);
 			next;
-			mes "[Funfi]";
-			mes "I will give you some materials for use in Moscovia.";
-			mes "Go as soon as you can!";
-			close;
-		case 2:
-			set slv_quest,0;
-			erasequest 10106;
-			mes "[Funfi]";
-			mes "What? You don't want to work?! Gosh!";
-			mes "I will inform the Eden Group of this!";
-			close;
+			mes "Return here when you've finished the quest.";
+		} else if (.@hunting == 2) {
+			mes "You have completed the quest.";
+			next;
+			if(select("Turn in quest.:Cancel.") == 1) {
+				if (.@quest == 5057) delitem 7187,30; //Festival_Mask
+				erasequest .@quest;
+				getexp .@exp,0;
+				mes "You've received EXP for finishing the quest.";
+			}
+		}/* else if (.@hunting == 3) {
+//			recall_completequest .@quest
+			erasequest .@quest;
+			mes "You have re-accepted the quest '"+.@name$+"'.";
+		}*/ else {
+			mes getarg(1);
+			mes getarg(2);
+			next;
+			mes "Do you want to accept the quest?";
+			next;
+			if(select("Yes.:No.") == 1) {
+				mes "You've received the quest '"+.@name$+"'. View your quest info for more details.";
+				setquest .@quest;
+			}
 		}
+		close;
 	}
-	close;
 }

+ 22 - 22
npc/re/quests/eden/eden_quests.txt

@@ -1182,7 +1182,7 @@ moc_fild11,180,253,5	script	Talking Dog#para03	972,{
 		mes "Oh, if you are tired I will help you.";
 		next;
 		mes "-When the dog barked, your HP and SP recovered.-";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1220,7 +1220,7 @@ moc_fild11,180,253,5	script	Talking Dog#para03	972,{
 		mes "Oh, if you are tired I will help you.";
 		next;
 		mes "-When the dog barked, your HP and SP recovered.-";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1276,7 +1276,7 @@ moc_fild11,180,253,5	script	Talking Dog#para03	972,{
 		mes "Oh, if you are tired I will help you.";
 		next;
 		mes "-When the dog barked, your HP and SP recovered.-";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1422,8 +1422,8 @@ prt_sewb1,131,262,3	script	Timid Cat#para04	422,{
 		mes "[Timid Cat]";
 		mes "Take care to check your map so you don't get lost.";
 		mes "It's a service meeow.";
-		npcskill "AL_HEAL",10,99,60;
-		percentheal 0,100;
+		npcskill "AL_HEAL",11,99,60;
+		percentheal 100,100;
 		close;
 	}
 	if (para_suv01 == 8) {
@@ -1460,7 +1460,7 @@ prt_sewb1,131,262,3	script	Timid Cat#para04	422,{
 		mes "[Timid Cat]";
 		mes "I will help you a little.";
 		mes "Here, I have recovered your strengh meow..";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1495,8 +1495,8 @@ prt_sewb1,131,262,3	script	Timid Cat#para04	422,{
 		mes "It's the last course so cheer up.";
 		mes "I will help you a little.";
 		mes "Here, I have recovered your strengh meow..";
-		npcskill "AL_HEAL",10,99,60;
-		percentheal 0,100;
+		npcskill "AL_HEAL",11,99,60;
+		percentheal 100,100;
 		close;
 	}
 	if (para_suv01 >= 10) {
@@ -1607,7 +1607,7 @@ pay_arche,41,136,3	script	Eden Member Karl#para05	904,{
 		mes "[Karl]";
 		mes "Just in case I will recover all your energy.";
 		mes "It's the last step so be careful.";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1638,8 +1638,8 @@ pay_arche,41,136,3	script	Eden Member Karl#para05	904,{
 		mes "[Karl]";
 		mes "Just in case I will recover all your energy.";
 		mes "It's the last step so be careful.";
-		npcskill "AL_HEAL",10,99,60;
-		percentheal 0,100;
+		npcskill "AL_HEAL",11,99,60;
+		percentheal 100,100;
 		close;
 	}
 	if (para_suv01 >= 16) {
@@ -1760,7 +1760,7 @@ anthell01,29,264,5	script	Eden Member Cloud#para06	899,{
 		mes "What do you think of Ant Hell?";
 		mes "Can you stay longer?";
 		mes "Ok, I will recover your strengh so, keep going.";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1799,7 +1799,7 @@ anthell01,29,264,5	script	Eden Member Cloud#para06	899,{
 		mes "[Cloud]";
 		mes "See, to cheer you up I will heal you until you finish the training.";
 		mes "Chin up and cheer up.";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1827,7 +1827,7 @@ anthell01,29,264,5	script	Eden Member Cloud#para06	899,{
 		mes "[Cloud]";
 		mes "Just Vitata, isn't that an easy opponent?";
 		mes "If you see Maya just run away.";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1942,7 +1942,7 @@ in_orcs01,38,175,3	script	Eden Member Hooksha	803,{
 		mes "[Hooksha]";
 		mes "You look tired I will recover your health.";
 		mes "If you are in trouble just come back here to safety.";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1973,7 +1973,7 @@ in_orcs01,38,175,3	script	Eden Member Hooksha	803,{
 		mes "[Hooksha]";
 		mes "You look tired, I will recover your health.";
 		mes "If you are in trouble just come back here to safety.";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -1999,7 +1999,7 @@ in_orcs01,38,175,3	script	Eden Member Hooksha	803,{
 		mes "[Hooksha]";
 		mes "You look tired, I will recover your health.";
 		mes "If you are in trouble just come back here to safety.";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -2072,7 +2072,7 @@ in_orcs01,38,175,3	script	Eden Member Hooksha	803,{
 		mes "Can you stay longer?";
 		mes "You look tired, I will recover your health.";
 		mes "If you are in trouble just come back here to safety.";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -2096,7 +2096,7 @@ in_orcs01,38,175,3	script	Eden Member Hooksha	803,{
 		mes "Can you stay longer?";
 		mes "You look tired I will recover your health.";
 		mes "If you are in trouble just come back here to safety.";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}
@@ -2199,8 +2199,8 @@ iz_dun04,43,46,3	script	Eden Member Callandiva	745,{
 		mes "Oh are you tired?";
 		mes "Mermans are not easy opponents.";
 		mes "I will help you recover so cheer up.";
-		npcskill "AL_HEAL",10,99,60;
-		percentheal 0,100;
+		npcskill "AL_HEAL",11,99,60;
+		percentheal 100,100;
 		close;
 	}
 	if (para_suv01 == 35) {
@@ -2233,7 +2233,7 @@ iz_dun04,43,46,3	script	Eden Member Callandiva	745,{
 		mes "Oh are you tired?";
 		mes "Strouf are not easy opponents.";
 		mes "I can help you recover so cheer up.";
-		npcskill "AL_HEAL",10,99,60;
+		npcskill "AL_HEAL",11,99,60;
 		percentheal 100,100;
 		close;
 	}

+ 16 - 0
npc/re/quests/first_class/tu_archer.txt

@@ -0,0 +1,16 @@
+//===== rAthena Script ======================================= 
+//= Archer Class Tutorial and Job Specific Quest
+//===== By: ================================================== 
+//= Euphy
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= rAthena SVN
+//===== Description: ========================================= 
+//= [Official Conversion]
+//= Archer training quest.
+//===== Additional Comments: ================================= 
+//= 1.0 First version. [Euphy]
+//============================================================ 
+
+pay_fild08,40,83,5	duplicate(Acolyte_Tu)	Acolyte#tu	95

+ 3 - 0
npc/re/scripts_athena.conf

@@ -93,6 +93,9 @@ npc: npc/re/quests/eden/eden_quests.txt
 npc: npc/re/quests/eden/eden_service.txt
 npc: npc/re/quests/eden/eden_tutorial.txt
 // --------------------------------------------------------------
+// - Quests-Tutorials for basic classes (1st class quests) ------
+npc: npc/re/quests/first_class/tu_archer.txt
+// --------------------------------------------------------------
 //npc: npc/re/quests/cupet.txt
 npc: npc/re/quests/homun_s.txt
 npc: npc/re/quests/magic_books.txt

+ 2 - 2
src/map/battle.c

@@ -4356,9 +4356,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
 #ifdef RENEWAL
 	if(is_attack_critical(wd, src, target, skill_id, skill_lv, false)) {
 		if(sd) // check for player so we don't crash out, monsters don't have bonus crit rates [helvetica]
-			wd.damage = (int32)floor(wd.damage * 1.4 * ((100 + sd->bonus.crit_atk_rate) / 100));
+			wd.damage = (int32)floor((double)wd.damage * 1.4 * ((100 + sd->bonus.crit_atk_rate) / 100));
 		else
-			wd.damage = (int32)floor(wd.damage * 1.4);
+			wd.damage = (int32)floor((double)wd.damage * 1.4);
 	}
 #endif
 

+ 3 - 0
src/map/clif.c

@@ -9329,6 +9329,9 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
 		// Notify everyone that this char logged in [Skotlex].
 		map_foreachpc(clif_friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 1);
 
+		// Set the initial idle time
+		sd->idletime = last_tick;
+
 		//Login Event
 		npc_script_event(sd, NPCE_LOGIN);
 	} else {

+ 2 - 0
src/map/map.c

@@ -425,6 +425,8 @@ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick)
 			if (sc->data[SC_DANCING])
 				skill_unit_move_unit_group(skill_id2group(sc->data[SC_DANCING]->val2), bl->m, x1-x0, y1-y0);
 			else {
+				if (sc->data[SC_CLOAKING] && !skill_check_cloaking(bl, NULL))
+					status_change_end(bl, SC_CLOAKING, INVALID_TIMER);
 				if (sc->data[SC_WARM])
 					skill_unit_move_unit_group(skill_id2group(sc->data[SC_WARM]->val4), bl->m, x1-x0, y1-y0);
 				if (sc->data[SC_BANDING])

+ 5 - 2
src/map/unit.c

@@ -7,6 +7,7 @@
 #include "../common/db.h"
 #include "../common/malloc.h"
 #include "../common/random.h"
+#include "../common/socket.h"
 
 #include "map.h"
 #include "path.h"
@@ -987,7 +988,6 @@ int unit_can_move(struct block_list *bl) {
 				(sc->data[SC_DANCING]->val1&0xFFFF) == CG_MOONLIT ||
 				(sc->data[SC_DANCING]->val1&0xFFFF) == CG_HERMODE
 				) )
-			|| (sc->data[SC_CLOAKING] && sc->data[SC_CLOAKING]->val1 < 3) // Can't move at level less than 3
 			)
 			return 0;
 
@@ -1927,8 +1927,11 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t
 			unit_set_walkdelay(src, tick, sstatus->amotion, 1);
 	}
 
-	if(ud->state.attack_continue)
+	if(ud->state.attack_continue) {
+		if( src->type == BL_PC )
+			((TBL_PC*)src)->idletime = last_tick;
 		ud->attacktimer = add_timer(ud->attackabletime,unit_attack_timer,src->id,0);
+	}
 
 	if( sd )
 		sd->canlog_tick = gettick();